tobe-tobe vol.3に参加してきた
kwappaさん主催の東京Basic Technology勉強会vol.3で再度スピーカーをしてきました。
今回はめずらしく(!?)ITネタです。
テーマは「Tcl/Tkによるハッシュリストの実装」。
以前に社内勉強会時代に出されていた宿題の発表です。
発表スライド
ハッシュなのに話題のkey-valueストアは一切触れず。だってわからないし(汗
スピーカー側としてはハッシュはどうでもいい!Tclの話がしたい!という状態でした。
実行プログラムはこんな感じ。
一応CRUDはGUIでできる。
そしてボタンの配置に一番時間がかかった。
ケブンッリジ書いた
一発ネタで書いたTclのケリンッブジ関数も披露してきました。
とりあえずzshで動作確認したワンライナー。
とは言え、tclshは必須ですが。
bashだと「echo "aaa" | echo $_」って書き方ができないのよねぇ…
echo "こんにちは みなさん おげんき ですか? わたしは げんき です。 この ぶんしょう は いぎりす の ケンブリッジ だいがく の けんきゅう の けっか にんげん は もじ を にんしき する とき その さしいょ と さいご の もじさえ あっていれば じゅんばん は めちゃくちゃ でも ちゃんと よめる という けんきゅう に もとづいて わざと もじの じゅんばん を いれかえて あります。 どうです? ちゃんと よめちゃう でしょ? ちゃんと よめたら はんのう よろしく" | echo 'proc p {z x} {expr int(rand()*2)};set y {};foreach s [string map {{ } { }} {' $_ '}] {if {[regexp {^(\S)(\S{2,})(\S)$} $s a f c e]} {lappend y $f[join [lsort -command p [split $c {}]] {}]$e} else {lappend y $s}};puts $y;' | tclsh
実行結果
こちんには みさなん おげんき でかす? わたしは げんき です。 この ぶんしょう は いぎりす の ケブリンッジ だがいく の けきんゅう の けっか にんげん は もじ を にんしき する とき その さしいょ と さいご の もじさえ あいてれっば じんばゅん は めちちゃくゃ でも ちゃんと よめる という けんゅきう に もいとづて わざと もじの じばゅんん を いえれかて あすりま。 どですう? ちんゃと よちめゃう でょし? ちんゃと よめたら はんのう よろしく
ちなみにtclshそのままだとこんな感じ。
set data { こんにちは みなさん おげんき ですか? わたしは げんき です。 この ぶんしょう は いぎりす の ケンブリッジ だいがく の けんきゅう の けっか にんげん は もじ を にんしき する とき その さしいょ と さいご の もじさえ あっていれば じゅんばん は めちゃくちゃ でも ちゃんと よめる という けんきゅう に もとづいて わざと もじの じゅんばん を いれかえて あります。 どうです? ちゃんと よめちゃう でしょ? ちゃんと よめたら はんのう よろしく } proc cmabrigde {str} { proc p {z x} {expr int(rand()*2)} set y {} foreach s [string map {{ } { }} $str] {if {[regexp {^(\S)(\S{2,})(\S)$} $s a f c e]} {lappend y $f[join [lsort -command p [split $c {}]] {}]$e} else {lappend y $s}} puts $y } cmabrigde $data
反省・感想ほか
おまけ
よく考えてみたらvol.2のエントリ書いてなかった・・・。