2006年 02月 22日

Ruby.each

Ruby の each 系メソッドで一つ気に入らないというか、仕方ないんだけど面倒くさいことがある。なにかっていうと index を使いたければ自分で変数作ってインクリメントしないといけないこと。each だけに関しては each_with_index があるけど、他の Enumerable なメソッドにはない。そんなに必要なわけじゃないし、だいたいは他のもっといい書き方が存在するんだけど、prototype.jseach 系を見てから、ちょっと不便だなぁって思うようになった。

prototype.jseach 系は全て indexitem が両方渡される。でも、受け取る側の関数は仮引数を常に2個書かなくてもいい。ECMAScript は引数の数に無頓着だ。いくら渡しても怒られない。仮引数を書かなくても arguments で参照できる。

対して Ruby の yield はエラーこそ出さない (call は出す) ものの、こういうことすると警告してくれちゃう。別にそれが悪いわけじゃなくて、むしろいいんだけど、っていうか block.arity で場合わけすればいいんだけど。

なにがいいたいかわからんことに。

arity の数で場合わけしたらだめか。[[:a, :b]].each {|a, b|} みたいに使えないもんなぁ。

Ruby と雑誌と俺

そういえば、日経ソフトウェアの 2001-03 (ふるい) のスクリプト特集に Ruby が載ってるんだけど、今さっき読んだら当時さっぱり何言ってるのかわからんことも結構わかるようになったりしてて、なかなか面白い。Perl の記事はわからんけど :(。で、その記事のコラムで、Matz さんが実行速度でPerlを抜きたいって言ってるのが妙に印象に残ってた。そして今日その部分を YARV の記事を読んでて思い出したからこんなことを書いてるわけです。

日経ソフトウェアは2000-06 から 2001-06 までなんとなく買っていた雑誌で、結構お世話になった。扱いが荒いせいかボロボロだったり、コーラ溢して裏表紙が破けていたり、いやそんなのどうでもいい。XSLTDOM もよくよく考えるとこの雑誌で記事を読んだのが最初の出会いであるし、上で書いた Ruby もそうだったりする。

入門書として、いろんな言語がいっぱい載ってるこういう雑誌って結構いい感じ。なんとなくもういいかなって思ったらちょうど一年分だったりして。これ買うのやめてからは一冊もプログラミング関連の本を買ってない (大学の教科書は別として) 。なんかぐーぐる先生とこの雑誌一年分で十分な感じ。そんな感じで今さっき意外と雑誌の情報って死なないんだなぁと思った。

当たり前だけど、雑誌を読んでプログラミングをどうこうしていたのは楽しかったからに他ならず、それから VB をやったり Javascript をやったりして最近やっと形になるようなスクリプトを書けるようになった。今考えれば結構長かったけど、あんまり長いことやってる自覚はない (し、別に実際長いわけではない)。だから俺はプログラミングにおいて何か努力したとかそういうことがない。これから、そういう努力をするハメになるのか、それとも楽しいままプログラミングと付き合って行けるかがよくわからないけど、願わくば楽しいままやっていきたいと思う。言い換えれば、努力なんて一瞬たりともしたくない。

mabinogi, 14さい

14歳

なんとなく久しぶりにログインしたらサービス期間が終了しています。

やっぱ14歳ぐらいがちょうどいい身長だよなぁ。ポポスカと弓は合う。弓構えると背筋が伸びるのがよいよい。

とりあえずフレンドリストに入ってないギルメンに片っ端から追加リクエストを飛ばした。めんどかった。ギルメンに一括送信とか、ギルドに入ってる人の一覧をゲーム内で見れるようにして欲しい感じ。HTTP との連携は面白いんだけど、もっと何かできそう。もったいない。

検索おーばーれーいしようと

検索オーバーレイをクロスブラウザ化しようと思って作業してて、よし IE で確認してみるかって思ったら、そもそも IE だと検索フォームがでてないのに気付いた。そうそう、この CSS 書くときにどうしても IE はちゃんとした位置に出せなかったから消してたのよねー、あははー。ばかかと

prototype.js に移行

整理ついでに prototype.js を使うようにスクリプトを書き換えました。殆どイチから書き直しているのでおかしいかも。

といっても、引き継いだのはスタイルセレクタと検索の UI だけ。あとはそのうち付け足す。

検索の UI はとりあえず IE でもいけそうなところまできた、の、だ、けれど、結果表示が上手く言ってない。文字コードのせいかなぁ。

Opera は調子が悪いので確認してない。

よくつかうめそっど: each, bind。この二つは便利すぎてはなぢでる。foo.each((function (i) { this.bar.push(i) }).bind(this))

IE 対応完了。検索結果を XML で得るとき UTF-8 に変換していなかった。あとは CSS いぢりだけ。CSS いぢるほうが時間かかった。