第44回シェル芸勉強会 大阪サテライト レポート

10/26(土) に開催された第44回シェル芸勉強会 大阪サテライト会場の様子をレポートします。

案内

今回松江はお休み。 1年ぶりに福岡サテライトが開催されました。

大阪サテライトの様子

参加者は4名、いつも参加されているメンバーでした。

久々の午前の部はぷる氏による JavaScript のオブジェクトについての講義。 個人的にはとても苦手意識のある JavaScript について解説していただきました。 JavaScript がこんなにややこしい仕様になっているのは、長い歴史の積み重ねがあるからでしょうか...?

講義中、いつもはうんこばかり流れているシェル芸タイムラインに、とても有用な情報が流されていました。 講師からの一方向のお話ではなく、参加者皆の知見が集まるのは素晴らしいです。

午後の部の前半4問は、数独をシェル芸で段階的に解いていくものでしたが、2問目の難易度がとても高かったように思います。 行指向でデータを扱うため、前後の行にあるデータも利用できるように工夫することが求められているようでした。

LT

www.youtube.com

「-(横線)難読化シェル芸」 - MSRさん

speakerdeck.com

Unicode には 64 以上もの横線が収録されているそうです。大体一緒だろ。

横線を利用した新たなエンコード手法と、その実装の horizon コマンドを提案されました。

「structured-text-tools の紹介」 - 小原 一哉さん

dbohdan/structured-text-tools にまとめられている構造化テキスト処理ツールの中から、3つをピックアップして紹介されました。

発表内では csvquote のメリットが少し理解しづらかったのですが、後で調べてみてとても有用だなと思ったので、ついでに紹介してみます。

CSV では、"..." (ダブルクォート) 内の , (カンマ) をフィールドセパレータとして、改行をレコードセパレータとして扱わないようですが、そのようなデータを、awk, sort, cut のような UNIX コマンドで扱おうとすると、少し困ります。

例えば、以下のようなデータを2フィールド目でソートしたい場合。

$ cat sample.csv
unko,3
"u,nk,o",5
"un
ko",2

csvquote を通すと、ダブルクォート内のカンマは 0x1f (US; ユニット区切り)、改行は 0x1e (RS; レコード区切り) に置換されます。

$ cat sample.csv | csvquote | xxd
00000000: 756e 6b6f 2c33 0a22 751f 6e6b 1f6f 222c  unko,3."u.nk.o",
00000010: 350a 2275 6e1e 6b6f 222c 320a            5."un.ko",2.

この状態で sort を実行し、csvquote -u で置換された文字を元に戻すことができるようです。

$ cat sample.csv | csvquote | sort -t',' -k2n | csvquote -u
"un
ko",2
unko,3
"u,nk,o",5

ちょっと扱い辛かった CSV がとても扱いやすくなって良い感じです。

紹介された GitHub リポジトリには、他にも便利そうなツールがたくさん紹介されていました。

「柿と杮(かきとこけら)」 - たいちょーさん

www.slideshare.net

かきとこけら。一緒だろ(2回目)。

でバイナリを表現する手法と、その実装の kakikokera コマンドを提案されました。 こけらと同じく、肺の字のつくりは市ではないそうです。 しらなんだ。


LT で紹介されたコマンド類は、早速シェル芸botに追加してもらいました 🙌

おわり

久々に終日の勉強会となりとても疲れましたが、学びの多い一日でした。 講師の方、LT発表された方、参加された皆さま、ありがとうございました。 次回は年末頃でしょうか。またよろしくお願いします。