家を出てすぐ CLIE で MP3 を聴き始めた。「うわっ、音デカ!」と、音量ダウンを連打したら、、、ハングしおった。しかたなくリセットしたら、どういうわけかハードリセット。また全データがふっ飛んだ。
会社に付いて、自分のマシンに login 。「あ、あれっ、入力されん!」と、キーボードを連打したら、、、キーボードもマウスも死んでいた。しかたなくリモートからログインして、shutdown したら、どういうわけかリブートされない。プロセスをひとつひとつ kill していったら、怪しげな部分を発見。どうも nfs 関係でいっちゃってたみたい。そいつも kill したら shutdown 動作が始まって無事リブート。データがどうなったかどうかはこれからだ。。。
taninen の日記にある画像を見まくる。なんとなくコレがヒット中。
いつもより足を延ばして、Mar 代官山店まで。松涛店には、たまに行くけど代官山店は初めて。店の雰囲気は松涛よりこっちの方が全然良い。料理の名前を忘れちゃったけど、要するに豚肉ニラたまとじ+ドリンクで900円(税込)。渋谷近辺のランチとしては安いし、それなりに美味しいので僕は好きなんだけどねー。帰りがけ、南平台でベトナム料理の店を発見。とりあえず店の雰囲気はヨサゲ。さて、いつ行ってみようかな。
ちむたんに阻止された(笑)
会社のカギを持っているのが僕だけになってしまった。こりゃ最後まで残らなあかんらしい。他のカギ保持者はみんな帰ったり休んだり。社には僕の他に残り5名。はよ帰れよ、チミたち。
なかなか帰ろうとしない2人を追い出し気味に押し出して、会社を出たのが22時40分くらい。歩いて家に帰りついたら、ちょうどゆうすけとコグレちゃんが帰るとこだった。バタバタしてたんで、酔っぱらいコグレちゃんに萌える間もなくさよなら。もう少しだけ残っていた遠藤さんとちょっとだけ話した。宍戸さんといい、遠藤さんといい、よきゅんの友達は雰囲気が良い人が多いね。
食器やらなんやらを片付けた後、なぜかおっしーとゲームなぞ。ガンダム対戦もの(名前忘れた)とか、懐かしのウンジャマラミーとか。僕の初期型 PS2 だと、ウンジャマラミーが途中でハングってしまった。確か、前にやったときもそうだったような覚えがあるけど、ラミーは僕の持ち物じゃなかったので、今は無い。
AM2:30 を過ぎているが、ohsamu は黒蜥蜴の仕込作業を続けてる。
Ruby + tDiary の勉強ということで、<table>〜</table>を簡単に表示できるプラグインを作ってみようかと思って少しいじってみた。内容としては、
<%=tbl <<TABLE |ふが|ほげ| |うご|るが| TABLE %>
という書式( PukiWiki 風)で書かれたものを
<table> <tr><td>ふが</td><td>ほげ</td></tr> <tr><td>うご</td><td>るが</td></tr> </table>
という HTML に変換するという簡単なもの。セル内に「|」が使えないとか、制限多数なのでまだまだ未完だけど、とりあえずさらしてみる。一から作る力は無いので、list.rb を改造しながら作った。
def tbl( text ) list = "" text.each do |line| if line =~ /^\|*(.*)\|*$/ data = $1 list << "<table>\n" list << "<tr>" data.split("|").each do |cell| list << ("<td>" + cell.chomp + "</td>") end list << "</tr>\n" list << "</table>\n" end end result = list end
同様の処理を行う tinytable.rb プラグインが既に存在していたことに気が付いたのは、だいぶ後になってから。。。でも、ま、いいのだ。自分で作ってみることに意義があるのだから。
▽ おが [iTermは私のMacにも入ってます。これ便利なんだよねぇ。]
ここ数日、個人アドレス向けのspamが異様に少ない。お盆だから?とか一斉摘発でも受けたのか?とか思っていたのだが、どうもそんな訳はなさそうだということで調べた。
postfixのログを見てみたら、「error writing message: File too large」とかあった。都合によりmbox形式なので、2GBオーバーか?とか思ったけど、51MB程度。となると、postfix側の設定だろうと検索してみたら、「postfixのmailboxの容量制限」というビンゴなエントリを発見。
記事に書かれていたmailbox_size_limitを適当な値に変更して、postfixを再起動したら復活。でも、これでspamも復活するのね。。。
『SIGGRAPH 2006 - 日本発のGPUテクノロジー「PICA200」が公開』という記事があった。
正式な読み方はどうあれ、開発者の間では「ぴかちゅー」と呼ばれているに違いない。
「じゃあ、来週にでも」と言っていたのだが、タイミングが揃う事が分かって、本日急遽焼き肉へ。場所は新大久保の「KOREAN FOOD ヘラン」。
前回と同じように、水晶板で焼く豚肉やチヂミの他、今回はプルコギを頼んでみたのだが、これがまたうまい! この店はハズレがないね。次回行くときには「玉子チム」とか「韓国風かき氷」にも挑戦してみたいところだ。
で、今日の話は面白かったので、思い出せるだけ書き出してみる。初対面の人もいたのに、ほとんどの話題が通じたのが凄い。
宇宙開発がしたい→MOONLIGHT MILE→プラネテス→中野坂上はサンクスだらけ→コンビニはセブンイレブン→米が違う→キャンプ→貸別荘は意外と安い→温泉→日光→盛岡→わんこそばはうまい→種子島行きたい→JAXAに就職するには→ロケットガール→コミケ休暇→電王→あんたはオタクじゃない→電脳コイル→HASYMO→平沢進→プラスチックス→PINK→インタラクティブツアー→Amiga→メガデモ→フロッピーミュージック→アインシュタイン→ウゴウゴルーガ→コモエスタアミーガ→水玉蛍之丞といしかわじゅん→豊島区→としまえん→トム・クルーズ主演のタイトル名が思い出せない目玉が転がる映画→トランスフォーマー→ケラとケラリーノ・サンドロヴィッチが同一人物とは知らなかった→パプリカ→筒井好き→時かけ→早稲田松竹は要チェック。
予告編がカッコ良くて、これは観に行かねば!と思っていた作品。いつものユナイテッド・シネマとしまえんで。小さめのハコだったのもあり、お客さんの入りはソコソコ。としまえんにしちゃ珍しい。
「ダークナイト」という言葉の意味をあまり考えずに観ていたのだけど、なるほどそういうことだったのか!と思わせてくれた。途中でその意味を気付かせようとして作られているんだけど、字幕を追っているだけだと気付きにくいな。こういうとき、英語のヒアリング力が無いのが悲しい。
できれば「バットマン・ビギンズ」を復習してから本作を観に行くのが良いと思う。オレはそうしなかったので、ちょっと失敗したなと感じている。
ダークナイトを観終わり、「庭の湯」で温泉を満喫してから、本日2本目の映画に。こちらもユナイテッド・シネマとしまえん。ちなみにダークナイトを観たのと同じハコ・同じ席だった(笑)
すぐに気付いてしまったのが、画面上のノイズ。フィルム映画独特のチラチラしたアレ。公開してそんなに経ってないのに、もうこのノイズはちょっと多すぎないか?と感じてしまった。やってるのかどうか分からないけど、デジタル上映館で観るべきだったかも。
まぁ、それは置いておいて、、、なかなか切ない映画だったなぁ。映像はさすが、美しい。
この記事を書く為に、公式サイトの予告編を観ていたら、もう一度観たくなってきた。激しい映画じゃないけど、なんかどうもジワジワくる作品だなぁ。
自分用にちょっとした Emacs Lisp を書き始めているんだけど、まぁ、これがすんなり書けない。
elisp の Info を読んだり、ググったりしつつ、なんとか関数定義をして、だんだんとそれっぽく動くようになってきた。
その関数の動作確認には *scratch*
バッファで C-x C-e
(eval-last-sexp
) や C-j
(eval-print-last-sexp
) を実行したり、message
を使ったプリントデバッグをやったりしていた。
いろいろ入力パターンを変えて実行していたものの「いや待て、こういう時はユニットテストだろう?」と思い直して、全く理解していなかった Emacs Lisp のユニットテストについて調べ始めた。
どんなものがあるのかも知らなかった(何かの記事とかで読んだ気もするけど記憶に残っていなかった)ので、またしてもググったりして、辿り着いたのが ERT (Emacs Lisp Regression Testing) だった。
ERT は、Emacs 24.1 から標準添付されるようになったそうだし、まぁ、これが今のスタンダードなんだろう。もしかすると、これ以上の機能やら性能やらを持つユニットテストツールがあるのかも知れないけど、まずは標準を知っておくことが重要だろう。
参考にしたのは、この辺の記事。
後者の記事は、前者の記事からも参照されていた。ERT でのテストコードのサンプルが GitHub に置いてあって、大変参考になった。ありがたし。
で、サンプルを見ながら試してみた結果、ようやくテストケースの実行まで辿り着いた。
他のユニットテストのツールを知っていれば、まぁだいたいこの出力の意味は分かると思う。成功・失敗・スキップ・トータルのテストケース数、開始時刻・終了時刻などはすぐ分かる。
緑色のドットがある部分は、プログレスバーになっていて、テストの実行が進む度に更新されていくイメージ。他のユニットテストツールと同じく、ドット1個は「テストケース1個」を表していて、成功時は緑色に失敗時は赤く表示される。
「Selector」というのは、テストケースのフィルタ機能のようなもの。「全部」「◯◯がテスト名に含まれるもの」などといった絞り込みができる。「真」を表す「t
」だと「全部」って意味になるそうだ。
Selector は ERT を実行時に選択することができる。M-x ert
を実行すると次に Selector の入力が要求されるので、そこで入れてやれば良い。
いくつかある中でも良いなーと思ったのは「:failed
」というキーワード。失敗したテストケースだけ選択して再実行ができる。「テスト→失敗→修正→テスト」のループがやりやすいんじゃないかな。まだそこまで実行できてないけど(テスト1個しか書いてないし)。
また、上記の例では Emacs 内でインタラクティブに実行しているけど、コマンドラインで Emacs のバッチモードを使って実行することもできる。
これを実行してみてちょっと不満だったのは、成功・失敗の場合でもテキストに色がつかないこと。ちょっと調べてもオプションなどで制御することはできなさそう。
ちょっと強引に、ert.el
の中で定義されている関数(ert-string-for-test-result
)を上書きして実行したら、こうなった。失敗時の赤色も出してみたかったので、必ず失敗するテストケースを1個追加してみている。
関数のどこを変えたかというと、結果出力に使われる文字列にカラー表示用のエスケープシーケンスを追加した。
(defun ert-string-for-test-result (result expectedp)
"Return a string that represents the test result RESULT.
EXPECTEDP specifies whether the result was expected."
(let ((s (cl-etypecase result
(ert-test-passed '("\e[32mpassed\e[m" "PASSED"))
(ert-test-failed '("failed" "\e[31mFAILED\e[m"))
(ert-test-skipped '("skipped" "SKIPPED"))
(null '("unknown" "UNKNOWN"))
(ert-test-aborted-with-non-local-exit '("aborted" "ABORTED"))
(ert-test-quit '("quit" "QUIT")))))
(elt s (if expectedp 0 1))))
上のコードの「\e[32mpassed\e[m
」とか「\e[31mFAILED\e[m
」の部分が変更点。その他の部分は、オリジナルのまま。
このコード内で、テスト成功の時は「PASSED」ではなく「passed」が使われ、失敗時は「failed」ではなく「FAILED」が使われているようなんだけど、なんで大文字小文字が入れ替わって使われるのか?とかはまだ良く分かっていない。
まぁ、これだと無理矢理感が強いのと、まだインタラクティブにテストする方法で事足りるので、ここはあまり追求はしなくていいかなー。
【追記】翌日の日記に ERT のチートシート的なものを書いた。
Hive でウインドウ関数が使えることを知ったので活用してみようと思ったのだが、ウインドウ関数はまともに使ったことがなかったため、トライ&エラーで実行してみたのだけど、トライ&エラーというよりもエラー&エラーみたいな状態が続いてしまってなかなか先に進まなかった。
そもそも Hive だと、起動スピードが遅いのでトライ&エラーは効率が悪い。もっと速いサイクルで学習したいなと思って Homeblew で PostgreSQL を Mac へインストールし、サンプルデータをインポートしてウインドウ関数を勉強していた。
PostgreSQL にウインドウ関数が実装された頃に、それを紹介していた記事を読んでいたときには、その利用用途にピンと来ていなかったのだけど、最近になってようやく「これは便利かも」と思えるようになってきた。また、最近ちょいちょいその利用に関する記事やら書籍やらを見かけてきたので、実はものすごく便利だったりするのでは?と思うようになってきていた。
また、Hive や PostgreSQL だけではなくて、Presto や Redshift や Spark SQL にもウインドウ関数はあるみたいなので、これを覚えておけば、この先もつぶしが利く気がする。
それにしても、ひさびさに PostgreSQL を触ったけど、psql のコマンド( \d
とか \x
とか)は覚えていたし、だいぶ手に馴染んでる感があるなぁ。錆びさせないように使っていかなきゃ。
▽ 双月 [う、うわー、怖い<ついてない2]