done is better than perfect

自分が学んだことや、作成したプログラムの記事を書きます。すべての記載は他に定める場合を除き個人的なものです。

rm -fをした場合のexit-statusについて

bashにおいて、rmコマンドを使った場合のexit statusについてです。初歩的なことだとは思いますが、自分への備忘録。

結論を先に書くと、rm $PATH_TO_FILEをした時に$PATH_TO_FILEが元々存在しない場合、-fオプションがない場合はexit statusが1となり、-fオプションがある場合は0となるので気をつけましょうということです。

~/dev/tmp$ ls                                                                                   
~/dev/tmp$ rm testfile                                                                          
rm cannot remove ‘testfile’ No such file or directory                                           
~/dev/tmp$ echo $?                                                                              
1                                                                                               
~/dev/tmp$ rm -f testfile                                                                       
~/dev/tmp$ echo $?                                                                              
0

ちなみに、permission deniedなど他のエラーに関してはオプション関係なくexit statusは1になるっぽいです。

~/dev/tmp$ rm testdir/                                                                          
rm: cannot remove ‘testdir/’: Is a directory                                                    
~/dev/tmp$ echo $?                                                                              
1                                                                                               
~/dev/tmp$ rm -f testdir/                                                                       
rm: cannot remove ‘testdir/’: Is a directory                                                    
~/dev/tmp$ echo $?                                                                              
1                                                                                               
~/dev/tmp$ rm /initrd.img                                                                       
rm: cannot remove ‘/initrd.img’: Permission denied                                              
~/dev/tmp$ echo $?                                                                              
1                                                                                               
~/dev/tmp$ rm -f /initrd.img                                                                    
rm: cannot remove ‘/initrd.img’: Permission denied                                              
~/dev/tmp$ echo $?                                                                              
1

Sparkのaggregateが謎すぎたのでメモ

謎っていうのは自分にとってというだけなのであしからず。

初めてのSpark読んでて、aggregate関数なるものが説明読んでもよくわからなかったので、備忘録として今の自分の理解を書いておきます。

あまり良く調べていないので、間違っている可能性大です。後で調べてて間違っていたら追記します。

nums = sc.parallelize([1,2,3,4,5,6,7,8,9,10])
sumCount = nums.aggregate((0, 0),
                            (lambda acc, value: (acc[0] + value, acc[1] + 1)),
                            (lambda acc1, acc2: (acc1[0] + acc2[1], acc1[1] + acc2[1])))
avg = sumCount[0] / float(sumCount[1])

これで、avgには1 - 10までの平均が入っているという寸法です。

今の自分の理解としては、

  • 最初のlambda([0+1, 0+1], [0+2, 0+1], ... , [0+10, 0+1])みたいな変換が行われる
  • 続くlambdaで先に変換したRDDに対してreduceする

といったイメージです。間違っていたら誰かおしえて・・・

自分をよく見せたい欲求

ポエムです.落ちもないです.

新入社員なのですが,最近とある仕事を任せてもらえました.自分で得意ですと公言していた分野の仕事で,喜び勇んでとりかかったはいいものの,失敗してしまいました,

結局その日に行った作業は全てパーで,一からまたやり直さなければいけませんでした.得意ですとか公言していた自分のメンツは丸つぶれ・・・

その仕事を任せてくれた先輩のなんとも言えない顔は今でも忘れられないです.怒るでもなく呆れるでもなく・・・お前今まで何してきたの?ってな感じでした.

本当ならこの反省を次に活かせばいい!みたいな感じにすべきなんでしょうが,やはりいつまでも感情を引きずります.

ホントこれまでやってきたことはなんだったんだろう?

先輩に使えないゴミだと思われてるのでは?

特異だと思っていたことすら全く満足にできなくて生きてる価値あるんだろうか?少なくともここでやっていけるんだろうか?

いや本当に,仕事ではこれが特徴的な例ですが,事務的な作業とかでもそうです.なんか何をやってもできた感じがしないし,自分よりできる人間が山ほどいるし.大学の時からそんなことをたまに思っていましたが,未だに思います.いっそ開き直って自分は無価値なゴミだからゴミらしく生きようとか思えればいいのでしょうが,心の何処かでもの凄く活躍してなんでいうことを諦めきれない自分が・・・

結局,自分を良く見せようと必死なんだろうけど,どうしてもそういう生き方しかできない.なんでだろう.どうすればいいのだろうか.

[読書日記]読んだら忘れない読書術を読んだ

たまには普通の本でも読もうってことで買ってみました.記憶力悪いので結構期待.

感想

・・・正直微妙.いや,何が微妙って,あまり「記憶に残すためにはこうすればいい!」みたいな本ではなかったので若干期待はずれだったってところです. 「わくわくするような本を読めば忘れない!」とか言われてもそりゃそうではってなってしまう.後やたらと著者の自分語りや重複する話が多い.「私は月30冊読みます」って本書に何度書いてあったことか.ついでに唐突にジュンク堂とかKindleとかの熱い宣伝が始まったり.

参考になるなって思った点は,自分にあった本を選べってところですね.当たり前だろって思うかもしれない(実際,自分も思った)ですが,背伸びして難しい本を読もうとして挫折って経験が多いなぁって気付かされて,まずは入門書とか猫でもわかるとかそっち系の本で感覚掴んでからってのは理に適ってると思いました.後は単純に,もっと本が読みたくなりました.

さほど真剣にならなくても内容は薄いので普段読書に慣れていない方でもさらっと読めます.

Debian環境でApacheのMPM確認やMPM切り替えの方法

調べるたびに忘れるので自分用メモ.

まだ勉強中なので普通に嘘を言っている可能性があります. 誰か指摘していただけると嬉しいです.

ちなみにMPMとはMulti Processing Moduleのことで, リクエストを複数受けた時にどうやって捌くかで違います. 例えば,preforkだと1リクエストで1プロセスフォークするなど.

環境

MPM確認

# /usr/sbin/apache2 -V | grep 'Server MPM'

MPM切り替え

例えば,workerからeventに切り替えたいときに

# apt-get install apache2-mpm-event

MPM入れ替えの時にはapt-getでinstallしたりremoveするしかないっぽい?本当かな・・・

Vimの正規表現で(変数) = (値)となっているものを(変数)だけにする

タイトルではわかりづらいかも知れません.以下の様なことをしたいときです.

# このように変数 = 値が羅列されているときに・・・
listen = False
command = False
upload = False
execute = ""
target = ""
upload_destination = ""
port = 0

# こうしたい!
global listen
global command
global upload
global execute
global target
global upload_destination
global port

Vimではこのように書けました.

:'<,'>s/\(.*\) = \(.*\)/global \1/g

もっと簡単な方法があったら教えて下さい・・・

Black Hat Pythonを読み始めた

少し余裕が出てきたので,空き時間を使ってBlack Hat Python: Python Programming for Hackers and Pentesters

を読み始めました.

簡単に内容を紹介すると,Pythonでネットワークを覗き見たり,VMにアタックするといった感じでペネトレーションテストなどを行えるようです.

セキュリティに関してまだ知識が浅いので,これで勉強したいと思います.学んだ内容は,できるだけここにアウトプットしていきたい・・・