memocon プログラミングのメモや物欲日記、雑記等

第12回本当は怖くないシェル芸勉強会に参加してきた

2014年08月04日 01時15分

第12回本当は怖くないシェル芸勉強会&第29回本が出たよUSP友の会定例会に参加してきました。
http://usptomo.doorkeeper.jp/events/12763

シェル芸本を買ったは良いけど時間とれずにろくに読めて無く、awkを使ったことがほぼ無い状態でしたがサイン欲しかったというミーハーな理由のみで参戦してみました。

電子書籍の売上は芳しいけど紙の初版を売り切らないと今後のシェル芸本にも悪い影響が出そうなニュアンスをイントロで言っていたので買ってない人は紙媒体もよろしくお願いします。
私は本の冒頭のやり取りだけで十分新しい知見を得られました。

イントロが終わったら急に問題を紹介されて「さ、やってみて」と言われて「えっ、もうやるんすか!?」状態だったけどなんていうかアルゴリズム考えるこの感じ、すっごい久しぶりで学生の時のゲーム作ってる時のような感覚を久々に味わえました。

普段はアルゴリズムというよりはフレームワークに乗っかってひたすら手続き書いてるようなことが多いので頭使う部分がやっぱ全然違うんだということを再認識。
やっぱ何か解決することを考えるのに道が色々あってそれを導きだすのは楽しいです。

ただね、この勉強会は色々なコマンド知ってないと歯が立たないです。
普段からパイプでコマンド3つ以上繋げて無意識にシェル芸している人じゃないと問題に立ち向かえない気がする。

そこでPHPerな私はPHPワンライナーで立ち向かったのです!
というかPHPのワンライナー機能があることをこの会場で調べて初めて知りました。

PHPにもBEGINとENDがあるんですよ。
-Rには $argnという変数に各行の内容が入り$argiに行番号が入ります。
これで戦える。

問題と正解例を上田さんのブログで公開されています。
http://blog.ueda.asia/?p=3535

で、ノリで下のTweetしたらまさかのピックアップですよ。

そんでもって上田さんのPCで実行したらphpがインストールされてないからphp-cliをapt-getしろと出てるのを見てphpの場違いさを肌に感じた次第です。

いるのか分からないけど折角だからPHPワンライナーの例です。(可読性の為に改行してますがコマンドは一行です)

Q1
次のように、画面にバッテンを描いてください。(この出力例の大きさは21×21です。)

Q2-1
次のechoの出力から回文を完成させてください。

Q2-2
次のファイルの各行について回文を完成させてください。

Q3
ウェブ等からデータを取得して南武線の駅名のリストを作ってください。

Q4
北から順(正確には都道府県番号順)に並べてください。

Q5
各行の数字を大きい順にソートしてください。

Q6
次のファイルについてグラフを作ってください。

Q7
Q6のグラフを次のように縦にしてください。
(多少ズレてもよしとします。)

Q8
次のデータは、何かの試合の結果ですが、各チームが何勝何敗だったかを集計してください。引き分けは無いと仮定して構いません。

もうね、シェル芸じゃなくPHPですorz
使ってるコマンドなんてseqとcatぐらいしかない気がする。
公式の正解例で使われているコマンド見て勉強します。

でも上田さんが気にしていた「せっかく参加されたんだから新しい知見を見つけて帰って欲しい」というのはちゃんと得れました。

PHPワンライナー。

まぁ会場でコマンドとawkだけでの解決方法がさっぱり分からず、試してみてもエラー出まくりであまりにイライラして得意な土俵に退却しただけなんですけど新しい発見でした。
次はコマンドやawkだけで戦えるように頑張ります。

サインはしっかりしていただきました!
上田さんは想像以上にイケメンなナイスガイでした。