毎日モザイク

White Room Layout Works

2019-12-26T09:22:18+09:00 [Thu]
--> [日常]

私は言う – あなたは大きな変態です。 無限のファンタジー!

インチキメールの文言。

ちょっと笑ったので。

2019-12-24T01:22:17+09:00 [Tue]
--> [Ubuntu]

Popenに単純に投げるとoom_killerに殺されることになる

1000枚程度の画像ファイルをconvertで適当な処理をやる工程をpython3のsubprocessで
単純にforで回して

for file in files: subprocess.Popen([convertへのコマンド], cwd=dir)

みたいな感じをOSXでやると、メモリいっぱいまで食いつぶして気持ちいい爆速処理ができます。仮想8コア100%。CPU稼動率はっぴゃくぱーせんと! なんだか楽しくなってきます。

そんなに入らないぃぃぃ状態まで食わせるので、当然他の操作は出来ません。ファンがめったにない高速回転になるのが気持ちいい。回転数が下がったら処理が終わりみたいな感じ。

投げっぱなしなので、適当な手段で次の逐次処理に追い越されないようにしないといけませんが、OSXでは処理前ファイルと処理後ファイルの数を比較して、合わなかったら寝てろで止められます。書き出し中のファイルはカウントしないようです。

これをLinuxでやると予定通り、oom_killerに殺されてシステム自体が動作不能になります。

どこでも動く制限付きのマルチスレッドに変更せねば…。

ということで、

「フォルダ1」にtiffファイルが入っていて、処理済みのファイルを「フォルダ2」に書き出す処理。
def hage(x): subprocess.check_output(['convert'---x[n]を適当に当てはめてコマンドを形成--], cwd='./'--カレントディレクトリで走らせる決め打ち)
def main(): todo_list = [] for file in files: todo_list.append(フォーループで回すのに使うはずだった変数一覧) # ここで読み込みファイルのフルパスと書き出しファイル名のリストを作るので順不同に処理されても問題なし p = Pool(いい塩梅なプロセス制限の数値) p.map(hage, todo_list)

check_outputのsubprocessがPool()個づつ回ります。

ここで、またPopenを使ってしまうと、戻りがないので、ひたすらぶっこまれて最初に戻るになります。

6.2MBのTiffファイルを200枚の処理で、単純にcheck_outputに投げると、1ファイルずつの処理になるので約280秒。Pool(8)ちゃんに回してもらうと、約60秒。

単純にPopenに投げたときより少しだけ速かったので、ちょっとびっくり。

食いつぶされても死なないようにOSXがなんかしてるオーバーヘッド的な何かがなくなり、論理コア数分(うちのは4コア。論理8コア)のプロセスしか使わないのでお気楽になるのだと思われます。

2019-12-14T23:07:42+09:00 [Sat]
--> [日常]

raid5崩壊記録

I.O DATA HDL-GT2.0 余裕の長寿命かと思ってたら、崩壊…。ほうかいwwww

一人で使ってるので、使用時以外は電源を切っていて、使うときに起動する感じで使ってました。

昨晩起動したら、なんかデグレちゃって、ああ、デグレか。今度こそ予備ディスクを使う日がやってきたか。と思いきや、前回デグレのときと同じく、いきなりリビルドを始めやがりました。

進行中のファイルは入ってないので、適当にリビルドしてくれ。前回のようにwと思って、帰ってきたら、赤ランプ全点灯。警告音鳴りっぱなし。

ずっといた人に聞いたら、出掛けてすぐくらいから鳴り続けていたということなので、リビルドを始めてから爆速で崩壊したようです。ほーかいwwww

smartを見てもこれと言って問題があるわけでもなく、なんか知らんけど、何かの拍子になんか起きてデグレードして、何かの拍子にリビルド開始、何かの拍子に崩壊。

何かが何かはまるでわかりません。

普段遣いのファイルや進行中のファイルは入れていないので、流用データが無くなって滅多にこないものは新規で作ることになる感じで済みます。

どうせ、そういう用途で、概ね半分くらいしか使ってないし、極端に古いものは捨ててるので、思い切ってこのままraid5からraid10に変更して、機械が完全に死ぬまでいじめ抜いて差し上げることにしました。

こんくらいの規模のraid5で割と売れたものなので専門業者さんは定番の復旧策があるようで、概ね妥当と思われる御値段で復旧可能ですが、なくなったものは諦めてまた作ればいいというイワオ方式で行くことにしました。

今更役に立つかどうかわかりませんが、

崩壊後にデータを水に流して再度使うための手順。

電源を切る。

最上段のHDDだけ残して、あとは全部抜く。

起動。

途中で赤ランプ点灯。警告音。ここで、statusボタンを押して警告音を殺して暫し待つ。

崩壊モードで起動しているので、192.168.0.200(←ココ重要)がアクセス先になります。

崩壊モードの管理画面に入れず。invalid なんたらエラーが出たら、最上段に残したHDDがハズレです。他のに入れ替えてやり直し。

崩壊モードで入れたら、諸諸設定してHDDを全部入れてraid再設定。

ここでOKすると、正常位に戻ってしまう(←ココ重要)ので、平時に設定したIPアドレスでアクセスします。

あとは、買ったときの新鮮な気持ちで全部やり直し。

※崩壊モードは最上段HDDに当たり外れがある(理由はわからん)。

※崩壊モードはアクセス先が平時とは変わる。

※崩壊モードを抜けると平時のアクセス先に戻る。

以上です。

2019-11-21T00:41:52+09:00 [Thu]
--> [労働]

raid5リビルド記録

デンノーintelligear WDRED 3TB×5 raid5
11/14 時間不明 1番(一番上)ディスク デグレード
11/15 20:00 ディスク交換・リビルド開始
11/16 20:00 進捗1%
11/17 20:00 進捗1%
11/18 20:00 進捗1%
11/19 20:00 進捗16%
11/20 20:00 リビルド完了
監視ソフトが出す進捗がリニアなのかどうかわかりません。
前回再構築時も3日くらい9%で止まって、最後の12時間くらいで完了。

2019-10-03T08:37:23+09:00 [Thu]
--> [労働]

魂を加速する

120msもかかっていたvim(iterm2上)の起動を90msまで短縮した、たった一つの冴えたやり方的ななにか。

colorschemeを決めうちに変更。

そんだけ。

立派に作られたcolorschemeは各種のなにかに対応するため、ちゃんとしたスクリプトっぽい構成になっていますが、決まってしまえばめったに変更することがないので決め打ちに変更してしまいましょう。

なんだかんだいっても決め打ち数値を割り当てるだけの逐次処理は最強です。

せっかくなので、黒バック用の陰キャ全閉、見てるだけで陰気になる華やかさの破片もない普段遣いのものを晒しておきます。

もとはjellybeansだったはずなのですが、原型をとどめていません…。

何もかもが決め打ちなので、guiのみ。

"jellymod2 guionly
hi clear
syntax reset
set background=dark
let colors_name="jellymod2"
hi! Normal guifg=#EEEEEE guibg=#000000 cterm=NONE gui=NONE
hi! ColorColumn guibg=#000000
hi! Comment guifg=#888888
hi! Constant guifg=#DF6A5C cterm=NONE gui=NONE
hi! Cursor guifg=#222222 guibg=#AAAADD
hi! CursorColumn guibg=#1C1C1C
hi! CursorLine guibg=#1C1C1C
hi! CursorLineNr guifg=#AAAAAA cterm=NONE gui=NONE
hi! DbgBreakPt guibg=#4F0037
hi! DbgCurrent guifg=#DEEBFE guibg=#345FA8
hi! Delimiter guifg=#668799
hi! DiffAdd guifg=#D2EBBE guibg=#405026 cterm=NONE gui=NONE
hi! DiffChange guibg=#334455 cterm=NONE gui=NONE
hi! DiffDelete guifg=#444444 guibg=#300000 cterm=NONE gui=NONE
hi! DiffText guibg=#7697D6 cterm=NONE gui=NONE
hi! Directory guifg=#7697D6
hi! ErrorMsg guifg=#FFAAFF guibg=#000000 cterm=NONE gui=NONE
hi! FoldColumn guifg=#535D66 guibg=#111111 cterm=NONE gui=NONE
hi! Folded guifg=#A0A8B0 guibg=#384048
hi! Function guifg=#FAD07A cterm=NONE gui=NONE
hi! Identifier guifg=#C6B6EE cterm=NONE gui=NONE
hi! LineNr guifg=#444444 cterm=NONE gui=NONE
hi! MatchParen guifg=#FFFFFF guibg=#556779
hi! ModeMsg guifg=#999999 cterm=NONE gui=NONE
hi! NonText guifg=#555555 cterm=NONE gui=NONE
hi! Pmenu guifg=#DDDDDD guibg=#111111
hi! PmenuSel guifg=#DDDDDD guibg=#333333
hi! PreProc guifg=#8FBFDC cterm=NONE gui=NONE
hi! PreciseJumpTarget guifg=#B9ED67 guibg=#405026
hi! Question guifg=#79AA6A cterm=NONE gui=NONE
hi! Search guifg=#000000 guibg=#FFFF88 cterm=NONE gui=NONE
hi! SignColumn guifg=#777777 guibg=#111111
hi! Special guifg=#44AA99 cterm=NONE gui=NONE
hi! SpecialKey guifg=#774444 cterm=NONE gui=NONE
hi! SpellBad guifg=#FFAAFF
hi! SpellCap guifg=#7697D6 cterm=NONE gui=NONE
hi! SpellLocal guifg=#2D7067 cterm=NONE gui=NONE
hi! SpellRare guifg=#770066 cterm=NONE gui=NONE
hi! Statement guifg=#8197CF cterm=NONE gui=NONE
hi! StatusLine guifg=#111111 guibg=#666666 cterm=NONE,reverse gui=NONE,reverse
hi! StatusLineNC guifg=#222222 guibg=#666666 cterm=NONE,reverse gui=NONE,reverse
hi! StatusLineTerm guifg=#666666 guibg=#110033 cterm=NONE gui=NONE
hi! StatusLineTermNC guifg=#666666 guibg=#222222 cterm=NONE gui=NONE
hi! StorageClass guifg=#dd996F cterm=NONE gui=NONE
hi! String guifg=#79AA6A
hi! StringDelimiter guifg=#556633
hi! Structure guifg=#8FBFEE cterm=NONE gui=NONE
hi! TabLine guifg=#666666 guibg=#000000 cterm=NONE gui=NONE
hi! TabLineFill guifg=#000000 guibg=#000000 cterm=NONE gui=NONE
hi! TabLineSel guifg=#AAAAAA guibg=#000000 cterm=NONE gui=NONE
hi! Title guifg=#79AA6A cterm=NONE gui=NONE
hi! Todo guifg=#333333 guibg=#FFFFAA
hi! ToolbarLine cterm=NONE gui=NONE
hi! ToolbarButton cterm=NONE gui=NONE
hi! Type guifg=#FAD07A cterm=NONE gui=NONE
hi! VertSplit guifg=#111111 guibg=#111111
hi! Visual guibg=#404050
hi! VisualNOS cterm=NONE gui=NONE
hi! WarningMsg guifg=#FFFFFF cterm=NONE gui=NONE
hi! WildMenu guifg=#FFAAFF guibg=#302028
hi! rubyClass guifg=#447799 cterm=NONE gui=NONE
hi! rubyControl guifg=#8197BF cterm=NONE gui=NONE
hi! rubyIdentifier guifg=#C6B6FE
hi! rubyInstanceVariable guifg=#C6B6FE
hi! rubyPredefinedIdentifier guifg=#DE5577
hi! rubyRegexp guifg=#EE55EE
hi! rubyRegexpDelimiter guifg=#6600EE
hi! rubyRegexpSpecial guifg=#CC6666
hi! rubySymbol guifg=#7697D6 cterm=NONE gui=NONE
hi! link MoreMsg ModeMsg
hi! link IncSearch Search
hi! link Conceal Operator
hi! link Error ErrorMsg
hi! link Operator Structure
hi! link TagListFileName Directory
hi! link cFormat Identifier
hi! link cOperator Constant
hi! link cocoaClass objcClass
hi! link cocoaFunction Function
hi! link coffeeRegExp javaScriptRegexpString
hi! link diffAdded String
hi! link diffRemoved Constant
hi! link elixirAtom rubySymbol
hi! link erlangAtom rubySymbol
hi! link erlangBIF rubyPredefinedIdentifier
hi! link erlangDirective Statement
hi! link erlangFunction rubyPredefinedIdentifier
hi! link erlangNode Identifier
hi! link htmlEndTag htmlTag
hi! link htmlTag Statement
hi! link htmlTagName htmlTag
hi! link htmlBoldItalic Special
hi! link htmlBoldUnderlineItalic Special
hi! link htmlUnderlineItalic special
hi! link htmlItalic special
hi! link javaScriptRegexpString rubyRegexp
hi! link javaScriptTemplateDelim Identifier
hi! link javaScriptTemplateString String
hi! link javaScriptTemplateVar StringDelim
hi! link javaScriptValue Constant
hi! link luaOperator Conditional
hi! link objcClass Type
hi! link objcDirective rubyClass
hi! link objcMessageName Identifier
hi! link objcMethodArg Normal
hi! link objcMethodName Identifier
hi! link objcStatement Constant
hi! link objcSubclass objcClass
hi! link objcSuperclass objcClass
hi! link phpArrayPair Operator
hi! link phpBoolean Constant
hi! link phpFunctions Function
hi! link phpNull Constant
hi! link phpOperator Normal
hi! link phpQuoteDouble StringDelimiter
hi! link phpQuoteSingle StringDelimiter
hi! link phpRelation Normal
hi! link phpSuperglobal Identifier
hi! link phpVarSelector Identifier
hi! link pythonOperator Statement
hi! link rubyConstant Type
hi! link rubyFunction Function
hi! link rubyGlobalVariable rubyInstanceVariable
hi! link rubyInterpolationDelimiter Identifier
hi! link rubyModule rubyClass
hi! link rubySharpBang Comment
hi! link rubyString String
hi! link rubyStringDelimiter StringDelimiter
hi! link vimOper Normal
hi! link xmlDocTypeDecl PreProc
hi! link xmlDocTypeKeyword PreProc
hi! link xmlEndTag xmlTag
hi! link xmlEntity Special
hi! link xmlEntityPunct xmlEntity
hi! link xmlEqual xmlTag
hi! link xmlProcessingDelim xmlAttrib
hi! link xmlTag Statement
hi! link xmlTagName xmlTag
hi! link EndOfBuffer Ignore

MacVimだと、このあとGUIの起動という大仕事があるので、この程度切り詰めても体感できるほどの効果はありません。