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|} みたいに使えないもんなぁ。

  1. トップ
  2. ruby
  3. Ruby.each
  1. トップ
  2. js
  3. Ruby.each

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

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

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

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

  1. トップ
  2. ruby
  3. Ruby と雑誌と俺

14歳

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

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

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

  1. トップ
  2. mabinogi
  3. mabinogi, 14さい

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

  1. トップ
  2. js
  3. 検索おーばーれーいしようと
  1. トップ
  2. site
  3. 検索おーばーれーいしようと
  1. トップ
  2. web
  3. 検索おーばーれーいしようと

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

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

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

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

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

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

  1. トップ
  2. js
  3. prototype.js に移行
  1. トップ
  2. web
  3. prototype.js に移行
  1. トップ
  2. site
  3. prototype.js に移行

Last.fm に統合してから Moderate 機能が使えなくなってるよなぁ。付け直したタグが重複してて気持ち悪いんだけど……

昔までのデータは残ってて、その分は機能しているように見える。THE HIGH LOWS↑THE HIGH LOWS↓ になるし。UI がないだけ?

どこに書けばいいのかなぁ。フォーラムだろうか。

エイリアスも MusicBrainz.com のデータ使うようにしたんだろうか。

未だに MusicBrainz が caseinsensitive だったらうざいな。

Artist moderation is done my MB integration, and there is the possibility of a site moderation too for artists.

MusicBrainz を使ってるけど、そのうち Last.fm でもやるかもよ?って感じかしら。

久しぶりに MusicBrainz 見たけど、the pillows, ART-SCHOOL みたいな表記が認められてるっぽい (前までは先頭大文字であとは小文字以外は不正で却下されてた)。ルール読んでないけど。

  1. トップ
  2. net
  3. Audioscrobbler (Last.fm) の Moderate 機能
  1. トップ
  2. music
  3. Audioscrobbler (Last.fm) の Moderate 機能

daimas DVD でハマってきた。プロローグよいよい。しかし本当に、ライブで見てもヴォーカルがイケメンすぎてもったいない。ちげぇよ! なんかちげぇよ! でもホント、プロローグは素敵。

あと関係ないけどストレイテナーがやっぱいい。ドラムのにーちゃんはいまいち好きになれないのはいいとして、TENDER のよさが最近わかった気がする。REBIRTH もいい。LOVE RECORDS もいい。EVERGREEN もいい。Reminder, The remains は今更言うまでもなく、さりげなく SAD AND BEAUTIFUL WORLD もいい。Melodic Storm窓に射す光る影の色が 瞬く度に変わるように のところが素敵。

伝説板の BURGER NUDS スレで、バーガーに似てるバンドについての話が出てたけど、いまいちしっくりくるのがなくて面白い。

  1. トップ
  2. music
  3. 椿屋四重奏とか

前にも何度か書いて、その度にどうしようもないという結論はでるものの、どうも何を書いていいか何を書いてはいけないかがよくわからない。所謂「常識的な判断」ってのは結局人によって違うから、ある程度参照するにしても、自分の常識と誰かの常識は絶対に一致することがないのだから、厳密な判断基準にはならないし、厳密な判断基準なんて存在しない。だから、誰かに文句をつけられることは、公開文書を書いている以上どうしようもない。とはいえそれだから何を書いてもいいかっていったら当たり前のようにそうではないわけで、その「常識的な判断」の範囲がやっぱりわかっていないといけないのだなぁって。

じゃあどうやってその範囲を見極めるかって言っても上手いこと簡単に見極めることができるなら、こんなセクションなんぞ書かないよなぁ。一対一の場合は何度か相手をキレさせることが必要だけど、不特定多数だとしたらそもそもその方法は通用しないし、むしろ相手をキレさせる気なんてしたくない。ってここまで書いて気付いたけれども、結局言いたいことなんて言わないのが一番いいわけか。なるほど。うんうん。気付くのが遅い。

しかしそれでも、たまに書く何かが誰の気に触れたり、作った何かを批評家気取りの誰かに罵られる可能性は常にあるし、これからもそれを続けるなら、いつか必ずあるといってもいい。今はまだ明確に敵意を持って直接言われたことはないけれど、今だって多少誰かが何かを思っているだろう。だから、それを受ける覚悟と、それを受け流せるスキルが必要なのだけれど、足りていない。どうやってそのスキルをあげるか。

ねむいねむい。

  1. トップ
  2. thinking
  3. 何を書いていいか

今日たまたまはてな RSS に lowreal.net を突っ込んでみたら 500 Error で登録できないことに気付きました。毎回ちゃんとリクエストしてるのが確認できるので、これ使ってデバッグ。

UA によって変わることというなら、ヘッダぐらいしかないので、ENV ダンプして再現するかやってみたけど再現せず、、っと思いきや ENV.clear してなかったので、clear してから突っ込んでみたら見事 500 発生。Accept が存在すると仮定しているコードがあったので @cgi.accept || "*" に書き換えた。はてなは Accept 送らないみたいだ。

HTTP の仕様を見ると Accept がない場合は "*" として扱うとあるので、どうせなら cgi.rb でここらへんのをやってくれると嬉しいと思った。

たぶんこれでブクマしたときに要約がちゃんと生成されるはず。ついでに投げ銭 Acceptable に ;)

  1. トップ
  2. web
  3. 解決:はてなからうちのサイトにリクエスト出すと 500
  1. トップ
  2. net
  3. 解決:はてなからうちのサイトにリクエスト出すと 500

エラー画面

以前CGI FastCGI, rubyとかいうセクションを書いたけど、ENV って普通に書き換えられることに気付いたのでもう一度やってみた。できたっぽい?

#!/usr/bin/ruby
require "fcgi"
FCGI.each do |fcgi|
$stdout = fcgi.out
$stdin = fcgi.in
ENV.replace(fcgi.env)
load(fcgi.env["SCRIPT_FILENAME"], true)
fcgi.finish
end
fastcgi.server             = (
".php" =>
( "localhost" =>
(
"socket" => "/tmp/fcgi-php.socket",
"bin-path" => "/usr/bin/php-cgi"
)
),
".rb" =>
( "localhost-rb" =>
(
"socket" => "/tmp/fcgi-ruby.socket",
"bin-path" => "/home/cho45/bin/ruby-fcgi.rb"
)
)
)  

ruby-fcgi.rb の位置がキモイけれど、これは共有ディレクトリを /home/cho45 以下しか設定してなくてめんどくさかったから。symlink 貼ればいいんだけど……

でもって以下のようなスクリプトでテスト

require "cgi"
puts "Content-type: text/plain\n\n"
@cgi = CGI.new
p @cgi
p @cgi.accept

全く普通の CGI と同じ形式。パッと見上手くいってる。POST のときどうなるか微妙だけどあとで追試。

ちなみに、これだとエラー出力がコンソールにでるけど、その辺は適当にログ残すようにすればいいかな。というか、load してるところの例外キャッチして美しいエラー画面を出すようにすればよろしそう。どうせログなんぞ見ない。

当たり前だけど、FastCGI 前提でプログラム書くならもっと最適化ができるので (リクエストごとに変わらない部分は共通にできる)、普通の CGI でもどっちでも使いたいという場合以外は積極的に使うようなもんじゃない。

ruby-fcgi.rb, エラーをスタックトレース付きで表示するようにした。

ENV.replace があった……

Dir.chdir するように修正。

hiki が一応動くっぽい。と、思いきや、リロードごとに 500 になったり 200 になったりする。なぞい。

$SAFE を設定されていたみたいだ。(リクエスト -> hiki でセーフレベルが設定される -> リクエスト -> セーフレベルがあがっているのでエラー終了 -> 見れない -> リクエスト -> fcgi プロセスが再起動される -> 見れるように) Thread 使って分離した。callcc 使うべきだなぁ。

  1. トップ
  2. ruby
  3. FCGI, Ruby, 変更なしで
  1. トップ
  2. fcgi
  3. FCGI, Ruby, 変更なしで

学校の階段 なにこれ。

今日の IRC

21:43:37 w******> 学校の階段読んだのか
21:43:45 w******> まじえろげ
21:43:50 cho45> まじえろげ
21:43:53 cho45> なにあれ
21:44:00 w******> えろげ
21:44:07 cho45> 後半の姉さんの笑顔まじ萌えす
21:44:18 cho45> じゃなくて
21:44:23 cho45> なにあのえろげ
21:44:25 w******> 確かにあれは萌える
21:44:28 w******> じゃなくて
21:44:32 w******> なにあのえろげ
21:44:44 w******> まあそういうわけで
21:44:51 w******> 続編でたら買いますよ?
21:44:55 cho45> かうのかw
21:45:03 w******> 絵買いばっちこーい!
21:45:12 w******> せいせいせい早く続編書いてくださいよー
21:45:15 cho45> 冷たい姉とのからみキボンヌ
21:45:17 w******> やべえええ俺きもいいいい
21:45:50 w******> ツンとクールと元気と和み
21:45:51 cho45> あれも一種のツンデレだよなぁ。素直になれない系っていうか、素直に見られない系っていうか
21:45:59 w******> だな
21:46:14 w******> しかし主人公が素直になるだけであっさりデレる
21:46:25 cho45> クールは出てきたとき誰だかわからんかった
21:46:41 cho45> 見せ場までの間の存在感が激しく薄い
21:47:14 w******> まあ仕方ない
21:47:16 w******> だがそれがいい

構成考えたら家族の描写は全部いらないよなぁ。あと、なんか主人公が嫌い。

  1. トップ
  2. book
  3. 読んだ。