今までどのくらいプログラミング言語を触ってきたか大分出遅れたけど乗ってみた。はてなかよっ!上の方は日常的に使ってて下に行くほど怪しくなってくる感じで。Layerなのが全然入ってなくて残念な感じ。あとなんか変なの入ってるな。worldくらいしかやったことないもの。いやC++使ったことない。ObjCばっかり書いてるからかな。彼女のステータスを返す日々着実にバカな方にバカな方に向かってるのを実感してるfaultierです、みなさんお久しぶり。一昨日あたりに見かけた「彼女がいないことをステータスコード404で表わす」ってのが大変ツボに入ったので、今日はせっかくだから実際にそれを実装してみたよ。なんと以下のURLをGETすると「faultierの彼女」ってリソースがいまどんなステータスなのか返してくれるんだ。http://faultier.jp/resource/kanojo...まぁ俺に彼女がいるかどうかなんて瑣末なことはどうでも良くて、一応これGET/POST/PUT/DELETEに対応してて、それぞれ違うレスポンスを返すように作ってあるので、生まれついてのHTTPクライアントな感じの少年少女紳士淑女な方々はいろんなリクエストを送って「リソース:faultierの彼女」をいじってみるといいと思うんだ。操作しようが何も起きませんが。何、あんま使わないからってサボってGETとPOSTしか実装してない?しょうがないやつだな、GETするときにURLの末尾に/putとか/deleteとか入れてみなよ。それっぽい動きするから。teapot」とかも実装する予定。あ、あとちなみに、GETするときにmode=prevとかmode=nextってクエリを付けると「前の彼女」「未来の彼女」についての情報も返ってくる。追記:418も実装した。ついでに多少ステータスコードをいじった。そのリクエストにそのレスポンスは普通無いだろ、みたいのがあるとあれなので。あと、HEADを忘れてたのでHEADも対応した。Rack可愛いよRackネタはネタとして置いとくとして、今回はこれをRackとHamlを使って作ってみた。何でかというと、今Ruby版Atompub::Serverみたいの作ってて、RailsやMerbのプラグインもそのうち書くつもりではいるんだけど、まず単体でサクっと動くの作りたいなと思っていろいろいじってるところだったから。Hamlは興味はあったんだけど中々触る機会がなかったので、ついで。なんというか、Rackは素敵だなぁ。この程度のものを作るのにちゃんとしたWAFを使うのもなんだかゴキブリ退治に対戦車ミサイル持ち出すみたいで気がひけるんだけど、かといってCGIってのもねぇ、みたいなときにもとても良い。簡単な認証とかロギングとかセッションとかは添付のミドルウェア使えば実現できちゃうし、WEBrickとかで簡単にローカル環境で開発サーバ作れちゃうのも魅力的。そんでもって深く考えなくてもWEBrik、thin、mongrel、fcgi、Passengerと色んな環境に対応できちゃうのも素敵だ(というかそれは話が逆で、そのためのインターフェースライブラリなんだけども)。なによりRack::Testが便利すぎる。こんなしょうもないアプリでもちゃんとSpec書いたんだぜ、あんまり簡単だったから。ハムは食べたいけどもHamlの方は、なんというか、結構微妙。いやまぁ、確かにすっきりシンプルなテンプレートが書けるんだけど、普段見なれてるHTMLから乖離しすぎててちょっと抵抗あるかも。学習コスト考えたら素のHTMLとRubyをそのまま書けるerbやその派生/改善版のテンプレートエンジンのがよっぽどとっつきやすい気がする。一人でやってるときはともかく、デザイナーやマークアッパーとの分業で仕事してると、これ出力がどうなるか想像しながらやんなきゃならなくて作業しづらいんじゃないのかなーとか思ってしまう。言え不思議な魅力もあるのも確かで、文句言いながら書いてたけど数分後にはなんとなく慣れてしまった。趣味でなんか作るときにはしばらく使ってみようかなと思ってたりする。ところで一応言っとくけど、あそこからエントリーしても別にデータとか保存してないしメール送ったりもしないので、安心して彼女の名乗りを上げるといいよ!まぁ本当に名乗りたければあんなとこで慎しやかに名乗られても困るけど、いないよねそんな人。何を求めてるんだ、君達は。このブログへのアクセスを見て、どんな人が見に来てくれてるんだろうなーと想像するのは結構面白い。Safariのアクセスが来るとか、大体がリピーターだけど大概の人が1セッションにつき1~2ページしか読まずに帰るとか、それだけでも「ああ、このブログ読んでるのはやっぱ俺と同種の人達なんだろうな」と推測できてニヤニヤできる。いうか、おかしいよねその比率。ここで書いてる内容から言うとまぁそうかなという気がするけど。ところで、面白いのが、「どんなキーワードで検索してこのブログに来たか」。Analyticsで取れたキーワードの上位10位がこれ。いや、LLVMとかDataMapperとかは、実際書いてるし、わかる。いうかLLVMやらDataMapperやらMacRubyで検索してほぼ上位のページに出てることの方が驚き。ごめんなさいごめんなさい。来てくれてるのにDTのことばっかり書いててごめんなさい。俺、それについて一言も言及したことないし、そもそもどっちも一体どんなものなのかも良く知らないんですが。いや、名前は知ってる。どっちも、明らかにもっと相応しいページがあるよね...?ってか、どうやっても俺のブログになんか辿り着けないんだけど...なんでこれが一定数居るんだよ...。先生、怒らないから正直に言いなさい。やってここに辿り着いたんだ。考えたら、今までは本当に一切言及してなかったから謎のキーワードだったんだけど、この記事を書いたせいでそのワードで検索引っかかるようになるねこれ。ボディービル」なんてのでこのブログ引っかかるようになっちゃった前例があるし...。うっかり上記のワードでここに来てしまうであろう人に申し訳ない。当ブログはフィクションではありませんが、実在のふみっ娘とも秘め声CDとも一切関係ありません。ついでに言うとfaultierはボディービルダーではありません。一緒に埋まってますぅ」とかで検索してくれたらもっといいんじゃないかなぁ、って何を言ってるんだろう俺は。追記Google先生、反応速すぎやしないですか...。本当に捕捉されてしまった...。「てってってー」を取り込んでみたりこないだ作ったesotericがあろうことか0.0.2にバージョンアップしました。主な変更点は以下の通り。各言語をコンパイルしてできる中間コードが、前のバージョンでは似非アセンブラ的な何かだったものを、ParseTreeなんかで作るようなRubyの抽象構文木(AST)的な何かに変わった。Languageパーサが埋め込めるようになるとか、無駄に夢が広がる感じで。似非VMでは動かなくなったので、作り直さなきゃいけないんだけど、ちょっと時間かかりそうなので似非VM殺した。そのかわり、ASTはRuby2RubyとかでRubyコードに変換できるように作ってあるので、とりあえずRuby2Rubyを使うようにして誤魔化すことにした。副産物としてDTやWhitespaceのコードを実行可能なRubyスクリプトに変換するコンパイラもどきのツールが出来た。Cへのトランスレータもあるみたいだし、そういうの使えば本当にコンパイルしてバイナリも作れたりしますね。DTでコマンドとか作れるようになるね。Brainf*ckのパーサを追加てってってーのパーサを追加。一応一通りの仕様は満たしてると思うけど、「「\xAB」「\uABCD」「\d00000」:エスケープシーケンスとして、それ全体で1文字と扱われる。(予定)」ってのはまだ実装してない。あと「ててー」と「てっー」が微妙な動きをするのを解決してないけど、まぁそのうちなんとかする。次はまず、VMの再実装と、あとSpec書く。Language~に載ってたStarryやBolicでも実装しようかな。あとは草とかやってみようかしら。楽しくなってきたところだけどアイマスSP買ってきてしまったので、一回休み。したら来月ぐらいから仕事が忙しくなるに違いないのでまた一回休み。一段落ついたら多分飽きてるだろうからまた(ry。Tweet2009年02月17日DTのソースを公開しましたプログラミング言語DTを作ったところ「いいからソースを晒せコラ」と言われたので、DT処理系のソースコードをgithubに上げてみた。GitHub正確に言うと、DTの処理系と言うか、似非VMとそれで実行できる中間言語を吐くコンパイラ群のセット。その中にDTコンパイラとサンプルも入ってます。http://gems.github.comとかやるとesotericがインストールできる...はず。gem作るのも初めてだしそれをgithubで自動ビルドさせるのも初めてなので、なんかしくじったかもしれない。