第12回本当は怖くないシェル芸勉強会に参加してきた
2014年08月04日 01時15分
第12回本当は怖くないシェル芸勉強会&第29回本が出たよUSP友の会定例会に参加してきました。
http://usptomo.doorkeeper.jp/events/12763
シェル芸本を買ったは良いけど時間とれずにろくに読めて無く、awkを使ったことがほぼ無い状態でしたがサイン欲しかったというミーハーな理由のみで参戦してみました。
電子書籍の売上は芳しいけど紙の初版を売り切らないと今後のシェル芸本にも悪い影響が出そうなニュアンスをイントロで言っていたので買ってない人は紙媒体もよろしくお願いします。
私は本の冒頭のやり取りだけで十分新しい知見を得られました。
イントロが終わったら急に問題を紹介されて「さ、やってみて」と言われて「えっ、もうやるんすか!?」状態だったけどなんていうかアルゴリズム考えるこの感じ、すっごい久しぶりで学生の時のゲーム作ってる時のような感覚を久々に味わえました。
普段はアルゴリズムというよりはフレームワークに乗っかってひたすら手続き書いてるようなことが多いので頭使う部分がやっぱ全然違うんだということを再認識。
やっぱ何か解決することを考えるのに道が色々あってそれを導きだすのは楽しいです。
ただね、この勉強会は色々なコマンド知ってないと歯が立たないです。
普段からパイプでコマンド3つ以上繋げて無意識にシェル芸している人じゃないと問題に立ち向かえない気がする。
そこでPHPerな私はPHPワンライナーで立ち向かったのです!
というかPHPのワンライナー機能があることをこの会場で調べて初めて知りました。
1 2 3 4 |
cat filename | php -B '{最初に一回行う処理}' -R '{各行に行う処理}' -E '{最後に一回行う処理}' |
PHPにもBEGINとENDがあるんですよ。
-Rには $argnという変数に各行の内容が入り$argiに行番号が入ります。
これで戦える。
問題と正解例を上田さんのブログで公開されています。
http://blog.ueda.asia/?p=3535
で、ノリで下のTweetしたらまさかのピックアップですよ。
awk分からん。もうPHPerであることを隠さない。 cat num | php -R 'echo $argn." ";for($i=0;$i<$argn;$i++){echo "x";}echo PHP_EOL;' #シェル芸
— こん (@konkon1234) 2014, 8月 2
そんでもって上田さんのPCで実行したらphpがインストールされてないからphp-cliをapt-getしろと出てるのを見てphpの場違いさを肌に感じた次第です。
いるのか分からないけど折角だからPHPワンライナーの例です。(可読性の為に改行してますがコマンドは一行です)