- 機能を考える (だるい)
- 「これはいいんじゃね!?」と思う (たのしい)
- インターフェイス考える (だるい)
- はやく動かしたいと思いながら実装する (たのしい)
- 追加機能を考える (わりとたのしい)
- 2 番目へ
理路整然とした
もっと理路整然と文章書けるようにならないといけないなぁってよく思う。頭悪いんだ。こう、理解できる限界線ってのがイメージとして見えていて、そこらへんを漂う思考っていうのは、もう少しもう少しって思えても全然まとまらない。数学とかやってるとその線が明確に見えてきてすごく嫌な感じ。あの理解できないっていう気持ち悪さはなんともいえない。
落ち着きが足りない、と言われる。
何か伝えようとする努力が足りないんだろうか。どうも書くだけ書いて、これで理解されないならいいやって思うことが多いように感じる。
だからレポートとかってすごく苦手なのですよ。あとで読み返したくないレポートができあがる。思い出したくない何かができあがる。気持ち悪い何かができあがる。
日記だからってのはよくないな。
Google Adsense / XHTML
document.write を使ってるおかげで、application/xhtml+xml だと使えないあの広告コードをどうにかして導入する。
まー Keystone Websites: Making AdSense work with XHTML をまるパクって、/google-adsense.html を作って、あとは object 要素作っといた。
<xsl:template name="adsense"> <div class="google-adsense"> <xsl:choose> <xsl:when test="$real-flavor = 'html'"> <script type="text/javascript"><xsl:comment><![CDATA[ google_ad_client = "pub-4629424540171624"; google_ad_width = 468; google_ad_height = 60; google_ad_format = "468x60_as"; google_ad_type = "text"; google_ad_channel =""; google_color_border = "000000"; google_color_bg = "F0F0F0"; google_color_link = "0000FF"; google_color_url = "008000"; google_color_text = "000000"; ]]></xsl:comment></script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> </xsl:when> <xsl:when test="$real-flavor = 'xhtml'"> <object width="468" height="60" data="/google-adsense.html" type="text/html"></object> </xsl:when> </xsl:choose> </div> </xsl:template>
HTML そのままプレゼン
メモ、ご飯
脆弱な生活
Ruby.each
Ruby の each 系メソッドで一つ気に入らないというか、仕方ないんだけど面倒くさいことがある。なにかっていうと index を使いたければ自分で変数作ってインクリメントしないといけないこと。each だけに関しては each_with_index があるけど、他の Enumerable なメソッドにはない。そんなに必要なわけじゃないし、だいたいは他のもっといい書き方が存在するんだけど、prototype.js の each 系を見てから、ちょっと不便だなぁって思うようになった。
prototype.js の each 系は全て index と item が両方渡される。でも、受け取る側の関数は仮引数を常に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 までなんとなく買っていた雑誌で、結構お世話になった。扱いが荒いせいかボロボロだったり、コーラ溢して裏表紙が破けていたり、いやそんなのどうでもいい。XSLT も DOM もよくよく考えるとこの雑誌で記事を読んだのが最初の出会いであるし、上で書いた Ruby もそうだったりする。
入門書として、いろんな言語がいっぱい載ってるこういう雑誌って結構いい感じ。なんとなくもういいかなって思ったらちょうど一年分だったりして。これ買うのやめてからは一冊もプログラミング関連の本を買ってない (大学の教科書は別として) 。なんかぐーぐる先生とこの雑誌一年分で十分な感じ。そんな感じで今さっき意外と雑誌の情報って死なないんだなぁと思った。
当たり前だけど、雑誌を読んでプログラミングをどうこうしていたのは楽しかったからに他ならず、それから VB をやったり Javascript をやったりして最近やっと形になるようなスクリプトを書けるようになった。今考えれば結構長かったけど、あんまり長いことやってる自覚はない (し、別に実際長いわけではない)。だから俺はプログラミングにおいて何か努力したとかそういうことがない。これから、そういう努力をするハメになるのか、それとも楽しいままプログラミングと付き合って行けるかがよくわからないけど、願わくば楽しいままやっていきたいと思う。言い換えれば、努力なんて一瞬たりともしたくない。
mabinogi, 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 いぢるほうが時間かかった。
Audioscrobbler (Last.fm) の Moderate 機能
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 みたいな表記が認められてるっぽい (前までは先頭大文字であとは小文字以外は不正で却下されてた)。ルール読んでないけど。
椿屋四重奏とか
daimas DVD でハマってきた。プロローグよいよい。しかし本当に、ライブで見てもヴォーカルがイケメンすぎてもったいない。ちげぇよ! なんかちげぇよ! でもホント、プロローグは素敵。
あと関係ないけどストレイテナーがやっぱいい。ドラムのにーちゃんはいまいち好きになれないのはいいとして、TENDER のよさが最近わかった気がする。REBIRTH もいい。LOVE RECORDS もいい。EVERGREEN もいい。Reminder, The remains は今更言うまでもなく、さりげなく SAD AND BEAUTIFUL WORLD もいい。Melodic Storm は 窓に射す光る影の色が 瞬く度に変わるように
のところが素敵。
伝説板の BURGER NUDS スレで、バーガーに似てるバンドについての話が出てたけど、いまいちしっくりくるのがなくて面白い。
何を書いていいか
前にも何度か書いて、その度にどうしようもないという結論はでるものの、どうも何を書いていいか何を書いてはいけないかがよくわからない。所謂「常識的な判断」ってのは結局人によって違うから、ある程度参照するにしても、自分の常識と誰かの常識は絶対に一致することがないのだから、厳密な判断基準にはならないし、厳密な判断基準なんて存在しない。だから、誰かに文句をつけられることは、公開文書を書いている以上どうしようもない。とはいえそれだから何を書いてもいいかっていったら当たり前のようにそうではないわけで、その「常識的な判断」の範囲がやっぱりわかっていないといけないのだなぁって。
じゃあどうやってその範囲を見極めるかって言っても上手いこと簡単に見極めることができるなら、こんなセクションなんぞ書かないよなぁ。一対一の場合は何度か相手をキレさせることが必要だけど、不特定多数だとしたらそもそもその方法は通用しないし、むしろ相手をキレさせる気なんてしたくない。ってここまで書いて気付いたけれども、結局言いたいことなんて言わないのが一番いいわけか。なるほど。うんうん。気付くのが遅い。
しかしそれでも、たまに書く何かが誰の気に触れたり、作った何かを批評家気取りの誰かに罵られる可能性は常にあるし、これからもそれを続けるなら、いつか必ずあるといってもいい。今はまだ明確に敵意を持って直接言われたことはないけれど、今だって多少誰かが何かを思っているだろう。だから、それを受ける覚悟と、それを受け流せるスキルが必要なのだけれど、足りていない。どうやってそのスキルをあげるか。
ねむいねむい。
解決:はてなからうちのサイトにリクエスト出すと 500
今日たまたまはてな RSS に lowreal.net を突っ込んでみたら 500 Error で登録できないことに気付きました。毎回ちゃんとリクエストしてるのが確認できるので、これ使ってデバッグ。
UA によって変わることというなら、ヘッダぐらいしかないので、ENV ダンプして再現するかやってみたけど再現せず、、っと思いきや ENV.clear してなかったので、clear してから突っ込んでみたら見事 500 発生。Accept が存在すると仮定しているコードがあったので @cgi.accept || "*" に書き換えた。はてなは Accept 送らないみたいだ。
HTTP の仕様を見ると Accept がない場合は "*" として扱うとあるので、どうせなら cgi.rb でここらへんのをやってくれると嬉しいと思った。
たぶんこれでブクマしたときに要約がちゃんと生成されるはず。ついでに投げ銭 Acceptable に ;)
FCGI, Ruby, 変更なしで

以前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 使うべきだなぁ。
読んだ。
学校の階段 なにこれ。
今日の 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******> だがそれがいい
構成考えたら家族の描写は全部いらないよなぁ。あと、なんか主人公が嫌い。
数式がわからない。
読み終わったリスト
読んだ順
- 半分の月がのぼる空6
- セーラー服。いろんな意味で何度か閉じた。やれやれ!!
- 狼と香辛料
- こういう系はあんまり見ないなって思った。
- RE:凪野アオイ
- ちょ、おま、的展開が多かった。戦争ものかよーって思っててけとーに読んでたのだけれど、後半は結構よかった。
- 神曲奏界ポリフォニカ
- 若干オサレ系 (謎) だったので何度か閉じた。ラノベの王道的展開というかなんというか……
- お留守バンシー
- やわらかい系。こういうの好きよ。うん。
そういえば伏線をどうこうする作品が少ない気がする。かろうじて RE はそういう傾向かもしれないけど、これもあっさり伏線回収するしなぁ。
あと学園モノと見るからにオサレ系 (しかし友人の話だと中途半端にオサレ) が残ってる。オサレ系は最後まで読めなさそう。前借りたオサレ系なやつは3ページか4ページから先を全く読めなかった。あのオサレさは僕には無理ですよ、みたいな感じ。
mixi, 画像をオーバーレイさせる GreaseMonkey スクリプト

mixi-overlay.user.js もうありそう
Lightbox のパクりだけれど、Lightbox のソースを使ってないです。素直に使えよって話ですよ。ローディングイベント系をタレカ (謎) しているので、結構微妙。
普通のポップアップで画像表示するのを抑制して、オーバーレイで表示します。MM_openBrWindow() で開くやつを全て書き換え。
それと他人のプロフィールページ (/show_friend.pl) のときは、その人の画像 (または「もっと写真を見る」リンク) をクリックすることで、その人の写真全部をオーバーレイ (上の画像がその様子) します。
UI がカスなお絵かきチャットをした。
作品名:中村屋
過激な内容ですので、18未満のエロゲをできない方や、心臓が弱い方はご遠慮ください。
ライセンスは Public Domain ですので、どしどしこれを使って CSS を書いたりしてみてください。mixi の画像にも最適です。ということで、mixi 用の画像 もありますよ。
- mixi コミュニティ: ナカムラやんぐなゲルニカ
- Latest topics > お絵描きチャット - outsider reflex

ついでに洗濯機。
mixi がアレなのは HTML やデザインだけじゃない。
何か思ったよりも3カラム破壊 CSS or GreaseMonkey Script がブックマークされてて怖い。たぶん ma.la さんのところからリンク張られたせいだ。しかし ma.la さんのアイデアがすごいと思った。「忘れてた (CSS の) プロパティを思い出すよ……」なんて詩的になってしまいたくもなる。どこが詩的かはともかく、ね。
それにしても、スクリプトを書くに当たって mixi のソースを眺めたけれど、「これはひどい」って感じだ。Web 2.0 にちなんで mixi は Web 0.8 とか Web 0.9 とか言われているけど、ホントそんな感じ。まぁソース気にするのなんて一部のアレ気な人だけだろうけど。
しかしまぁそんなところにですよ、この謎の固定幅3カラム化とか、不思議だなぁなんて。レイアウトを変えて、要求するブラウザサイズを上げて、正直どこでも得られるような情報を表示されても、なぁ。なぁなんてなぁ。
関係ないけど、mixi がいくら閉鎖的って言ったって、人口一位ってねぇ、会員一杯いたらさ、結局 WWW と大して変わらないじゃまいか。個人情報とか、危ない、ぜ?
どうせやるなら、ウェブサービスとか、Ajax とか、もっとウェブウェブした、先駆的なことをして欲しかった。会員だけ多くたってねぇ。
ああなんか書こうと思ったことを忘れてしまった。すかいぷめ。
いくつかの SNS から mixi が選ばれたのは、足跡のせいだよね。mixi を使えば使うほど、誰かに足跡を残せば残すほど、「誰か」が自分を見てくれるという幻想が足跡にあるんだよね。気持ち悪いけど、そういうものみたいだ。
