我經常重複的乙個模因是:「總是有不止一種解決方案。」 我還經常寫關於企業應如何評估可用解決方案以及如何最好地滿足其需求的文章。 我不常提及的是,在現實世界中,有很多很好的(而不是那麼好)的原因,為什麼最好的解決方案就不會發生,或者沒有在必要的時間範圍內發生(我大聲疾呼)太頻繁)。 當我發現自己處於最佳路線受阻的地方時,我會嘗試找到一種有趣,有教育意義且權宜之計的解決方法,並且通常以相反的順序進行。
我最近處理了乙個特殊情況,即首選選項不在桌面上,這是我多次看到的情況,這促使我分享了解決方案。 用例是當informatica cloud的日常操作生成的檔案開始佔滿磁碟空間並引起問題時。 最佳解決方案是擁有乙個伺服器歸檔過程,該過程可在整個企業中重複使用,最好設計為通用服務。 最糟糕的解決方案(除了只是忽略問題,然後一遍又一遍地處理中斷),就是簡單地增加磁碟空間。 這種方法類似於發出whack-a-mole的方法,因為它會推出空間問題,然後彈出檔案索引延遲問題-直到空間問題最終回來。
第一次迭代與快速恢復空間有關,而保留策略仍然未知。 乙個較小的障礙是資料整合幾乎全天候執行24/7(這就是我們遇到空間問題的原因)。 因此,該解決方案從建立乙個子資料夾開始,在該資料夾中堆積檔案並將它們移動到新資料夾。 使用中的檔案不會移動,因此我不必擔心處理可能與正在進行的作業有關的檔案。 我僅使用基於最後修改日期的查詢來完全消除該擔憂。 檔案移動後,使用壓縮檔案的命令很簡單。 儘管我本來想使用tar
命令,但我想增加乙個存檔而不是建立每日存檔,並且我不想每次都**並重新壓縮,因為它可能會將磁碟空間推入紅色。 我命名了年和月的臨時資料夾,並在兩個月大後刪除了這些資料夾。
如果您還沒有使用icrt,它會針對使用web服務進行優化,並使用xquery和xpath函式來管理資料,並將所有內容都視為xml。 因此,此第一步包括定義變數(current_dated_folder
,old_dated_folder
,last_month_year
,days_to_zip
和months_to_keep
),然後將它們放到xquery函式生成的命令中:
let $startdate := if(fn:day-from-date(fn:current-date()) >= ($temp.days_to_zip + 1)) then第一次將其部署到另乙個組織時,我看到了這個難看的錯誤:fn:concat(fn:year-from-date(fn:current-date()),』-『,
fn:substring($temp.current_dated_folder, 5),』-01』) else
fn:concat($temp.last_month_year, 『-01』)
let $durationdays := fn:concat(「p」, $temp.days_to_zip,」d」)
let $enddate := fn:substring(
fn:string(fn:current-date() - xs:daytimeduration($durationdays))
,1, 10)
let $archive := fn:replace(fn:substring($startdate, 1, 7), 『-『, 『』)
return fn:concat(『find . -not -name 「*.gz」 -not -name 「*.7z」 -mtime +』,fn:string(31*$input.months_to_keep),』 -delete;』,
『mkdir -p 『, $temp.current_dated_folder,
『;rm -rf 『,$temp.old_dated_folder,
『;find . -newermt 「『, $startdate,
『「 ! -newermt 「『,$enddate,』」 -print0 | xargs -if -0 mv f 『,$archive,
『/;cd 『,$archive,
『;if [ 「$(ls —ignore="*.gz" —ignore="*.zip" | wc -l)」 -ge 「1」 ]; then zip —q 『,$archive,
『.zip -r *.* -8 -x *.gz* -x *.zip* -x *.7z*;find . -not -name 「*.zip」 -not -name 「*.gz」 -delete; fi』)
,」message」:」access denied.」}}我將為您儲存我發現問題所經歷的曲折步驟的詳細資訊,但將分享我在**找到它的原因,因為這不是我第一次遇到此問題。 答案是在我向其他人解釋如何解決該問題的帖子中,該帖子將轉到管理控制台並啟用shell服務。
良好的開發意味著要進行良好的測試,因此一旦將日誌檔案作為預設路徑,將歸檔檔案夾作為可選引數,並將可配置的保留月份數保持不變,我便從測試環境中獲取了許多檔案,並開始增加數量和種類。 並發現了我的第乙個設計缺陷,那就是該解決方案僅在保留期內處理檔案,而較舊的檔案則徘徊不前。 儘管這是對環境不斷下降之前堆積它們的當前狀況的一種改進,但它不如可以完成的範圍內所能管理的那麼好,因此,它返回到流程面板以找出如何在不使初級維護團隊成員難以管理的情況下處理舊檔案。
當我開始檢查是否有較舊的檔案要處理時,我很快意識到這是多餘的檢查,因為我將所有超過保留期限的檔案以及最遠期限和當前月份之間的檔案都視為相同。 我使用以下方法刪除了較舊的檔案:
fn:concat(『find . -maxdepth 1 -not -name 「*.gz」 -not -name 「*.7z」 -mtime +』,(fn:days-from-duration(fn:current-date() - (fn:current-date() - xs:yearmonthduration(fn:concat(『p』, $input.months_to_keep, 『m』))))) - 1,』 -delete;』)處理完要刪除的檔案後,我便在保留期的乙個月內處理了這些檔案。
let $startdate := xs:date(fn:concat(fn:substring($temp.current_dated_folder, 1, 4),一旦確定了每月的命令,我便做出了必要的決定,以進行必要的迭代,一切都很好。『-『, fn:substring($temp.current_dated_folder, 5),』-01』))
let $enddate := $startdate + xs:yearmonthduration(「p1m」)
let $archive := fn:replace(fn:substring(fn:string($startdate), 1, 7), 『-『, 『』)
return fn:concat(『mkdir -p 『, $temp.current_dated_folder,
『;find . -newermt 「『, $startdate,』」 ! -newermt 「『,$enddate,
『「 -print0 | xargs -if -0 mv f 『,$archive,』/;cd 『,$archive,
『;if [ 「$(ls —ignore="*.gz" —ignore="*.zip" | wc -l)」 -ge 「1」 ]; then zip —q 『,$archive,
『.zip -r *.* -8 -x *.gz* -x *.zip* -x *.7z*;find . -not -name 「*.zip」 -not -name 「*.gz」 -delete; fi』)
當然,一旦有了適當的舊檔案管理流程,我意識到我也可以對其進行修改以適應當前檔案。 但是,想到了「如果不能解決問題」的格言。 如果我將流程構建為課堂示例,那麼我肯定會花時間重構。 但是鑑於這是乙個真實的文字工作情況,並且所產生的實現很容易按照原樣進行,所以我將它留給了一點多餘的步驟。 我還保留了僅測試步驟,以加快開發速度,因為它沒有開銷,並且可以使以後的增強變得更容易。
from:
亞馬遜又掛了,只是因為半價清倉活動?
昨天亞馬遜又掛了,為什麼是又呢,因為每年亞馬遜都要掛幾次。昨天是什麼日子讓亞馬遜又掛了呢?不就是因為清倉 嗎 你的驕傲呢,高可用呢,負載均衡呢,分布式呢,三駕馬車怎麼一駕都不管用了呢?不就是在國內弄個 麼 不就是被羊毛黨盯上了麼 至於麼你,一掛就是幾個小時,我反正在下午2點看看是上不去了,下午4點多...
子執行緒為什麼可以更新UI操作,那是因為
子執行緒中真的不可以更新ui麼?看乙個熟悉的場景 執行結果可能很多人猜是 viewrootimpl calledfromwrongthreadexception 可惜啊,並沒有任何異常,良好執行。這個不是有悖我們原則麼?你們這麼想就是誤解了這個原則,原話是不推薦在子執行緒中更新ui,因為會造成不必要...
搞了大半天的錯誤,原來只是因為埠被占用了
問題的 是這樣子的 最近從網上找了乙個後台管理系統,從 gitgood 但是複製檔案到自己的 git目錄下,執行就出現以上錯誤。因為目光一直在 npm err 中,所以思路一直 node 或依賴的外掛程式中找問題,從網上找了很多類似的問題嘗試都沒有解決掉。就在失去信心的時候,讓後端幫忙看了一眼。突然...