さんらとSDLをWebSocketと組み合わせて...という話をしていておもしろそうだったので実装してみた。WebSDLRuby/SDLの画面描画を全て文字列としてシリアライズし、WebSocketで送信、Canvasに描画する。ブラウザ上で発生したイベントをWebSocketで送信、SDLのイベントモデルの中に還元してやる。いうのが基本的な仕組み。webでWebSDL版が起動するようになっている。Canvasに対応したブラウザで開く。Canvasを使うだけでは芸が無いので、マルチユーザに対応、ユーザ間の情報共有にも対応してみた。0.1秒毎に更新しているのがかっこわるいが、適切なイベントに基づいた処理をすれば、パズルゲームやアドベンチャーゲームなど頻繁に画面更新のないものなら実用的なものができる可能性がある。ウェブへぇボタンとかね。現在の方法では実現が困難である。GMTだいたい以下のような感じになる。password_from_keychainはOSXのkeychainからパスワードを取ってくるだけの関数。GMailのTwitterフォルダ(follow通知メールが溜まる)の中から未読(UNSEEN)のメールを探してきて、ユーザ名とおぼしき部分を抜き出して出力、既読にする。GMT表にまとめてみた。主な違いは、getc/readcharがbyteを返すだけみたいだ。パスワードをファイルに保存したくない、という理由から?デフォルトでは毎回パスワードを聞くようになっている。Macではsecurityコマンドというのでキーチェーンにアクセスできるそうなので、それを使ってみる。標準エラー出力にパスワードを吐くのでpopen3を使う。GMT噂のMagLevを試してみた。GMT憧れシリーズ第二弾。Scalaの勉強でもしようかな、と思ってScalaの本を開いたら、Scalaでは無名関数を_(アンダースコア)を使って定義できるらしい。6]とか書きたいよね。定義しておくと、それが呼ばれてよしなにしてくれる。定義されているので、Rails使いにはおなじみだろう。される時に適当なProcを返すような何かを作ればよい。Scalaそうしてできたのがこれ。後に括弧が要ると思っていたがそんなことはなかったぜ。書けないけど、そう書きたい人はブロック使ってください。LazyCallのインスタンスを返し、受け取ったメッセージを引数と共に保存。はじいているのは、引数として渡される時にこの問い合わせが発生するので、それを無視するため。使えなくなると思う)to_proc内で、保存したメッセージを、procの引数に送り直している。その結果と置き換えている。ような表記が可能になる。_0は、_.[0]のエイリアス二夜にわたるProxyObject特集、いかがでしたでしょうか。同じものを意味しないそうです。閉じた本の続きに書いてあった。使うと、20倍くらい遅い。GMTHaskellにはMaybeモナドというのがあって、エラー処理をかなり適当な感じに書けてとても便利そう。これはすこし横着こういった記述を頻繁に使う必要があり、なんとかしたい。nilこういう風に書く事ができるようになって幸せ。途中のどこかで失敗すると、単にnilが返る。このように、包んだオブジェクトのフリをするオブジェクトを使う手法はRailsでは多用されていて、読んでみると割と楽しい。ProxyObjectとか呼ぶらしい。父「たぶん...」というような会話を想像してしまって、とても人間的。いうか、人がやっているのを目にすると、手を出したくなってくる。子供がプラモデル組み立てているのを見て「ちょっとお父さんにかしてみなさい」というタイプ。結局、前回の最短は23Bだったらしい。:)文字数を削るという共通の目的が、変数名から意味すら奪うのだろうか。20Bという噂はなんだったんだろう...反省を生かして、今回は、27Bまで縮んだところで寝かせておく。続きにあるのはお気に入りの答えだが、パー。いくつかの方針で使っている方法を組み合わせたら23Bになった。GMTとあるchmファイルをWindowsで見ていて気がついたのだが、一つのキーワードに複数のドキュメントが割り当てられている場合がある。同じファイルを、Macで見ると、最初のコンテンツしか表示されない。そもそも、chmのインデックスは下記のような形式のドキュメントになっていて、chmの中の、chm.rbでこれをパースしているのだが、キーワードが複数のドキュメントに対応する場合が想定されていないようだ。value="cat_doc"></object>...普通の感覚ではこれを見ても一番上のキーワードが下の方まで有効だと思えないのだが...あと、目次(Topic)を読むところが、case-sensitiveになっていたので、目次が取れていなかった。GMT久々にgolf。数字を出力するコード。25Bここからは手強いので寝かせて。20B文字列のRangeを使う方法もやってみたけど、挙動に問題があるのでやめ。風の噂では、20Bまでいける、と聞いたんだけど...がんばります。