毎日モザイク

White Room Layout Works

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の起動という大仕事があるので、この程度切り詰めても体感できるほどの効果はありません。

2019-08-12T22:04:35+09:00 [Mon]
--> [日常]

denite-gitが動かないのはどう考えても以下略

denite-gitが動きません。

OSX10.11.6(ハードが古すぎてここが限界)
MacVim8.1.1722(157)
denite, denite-git,ほか依存関係者はさっきアップデートしたやつ。

tigかsourcetreeのどちらかがメインなので、あんまり気にしてませんでしたが、超あっけなく解決してしまったので一応書いておこう。

フォルダをApplication Support/repoからDesktop/repoに移したら普通に動きました…。

deniteかdenite-gitがフォルダ名にスペースがあるとダメなようです。普通は使いませんが、デフォルト名のは仕方ない…。

起動ディスクのデフォルト名にも入ってますが、アソコはposix pathでは展開されないので問題なし。ということのようです。