2012年11月17日土曜日

「ヱヴァンゲリヲン新劇場版:Q」を予想する

新世紀エヴァンゲリオン新劇場版: Q をみるにあたって

先週に序と破をみるなどしたり、電子版のパンフレットを読みふけり、ダラダラと周囲のファンと語りあったりした。
予習したわけですな。
せっかく予習したことだし、ここはオタクらしく劇場に足を運ぶ前に内容の予想でもしてみようかなって思ったので、いまこれを書いてます。

2012年9月17日月曜日

いまだからこそ、もう一度みよう。「ぼくらの七日間戦争」を。

もう一度みた「ぼくらの七日間戦争」

たまたま動画配信コンテンツの一覧から「ぼくらの七日間戦争」というタイトルをみかける機会があり、そのまましばらくそのタイトルをみて考えにふけった。

2012年7月30日月曜日

2012年6月2日土曜日

まだまだ Skype API で闘えます

今日は Skype API についての個人的な所感についてメモしておこうと思ったので、だらだらと書いてみます。ああ、ええと、Skype APIの利用シーンとしてはサーバプロセスのような使い方を想定します。ボットとかふくむ感じね。

  1. プロセス間通信は死ぬ
  2. Skypeクライアントは死ぬ
  3. X11は死ぬ
大きく上の要点について書くことにする。基本的には安定化のチューニングを行うプロセスについての解説ね。


2012年5月22日火曜日

SkypeKit 4.2.1 for Desktop のランタイムを Ubuntu 12.04 LTS で動かす

バイナリとして認識しないし、意味がわからないなぁと悩んでいた。
file したら 32ビットの ELF ってでてるやんけ!

sudo apt-get install ia32-libs

無事、 linux-x86-skypekit が実行できた。

2012年3月26日月曜日

CoffeeScript + Express + Socket.IO + nTwitter + eco / Node powered by JavaScript

java-ja温泉に参加

先週の金曜日から日曜日にかけて、java-ja温泉に参加してきました。
成果物:https://github.com/takano32/party-tracker

別に各人はJavaのプログラムを書くことを強要されているわけではなくて、java-jaコミュニティに近いひと、あるいは温泉でJava書きたいなっていう人たちが集まった感じです。

java-jaにとっては恒例のイベントとなっていて、すでにJavaを書く人は少ないですね。でも、かつてJavaのプロフェッショナルだった人たちが集まってボードゲームしたり、JVMで動作するわけわかんない言語をいじったりしているので、Javaの質問をしたりしてJavaパワーを底上げするにはいい機会かもしれません。

情報戦

java-jaの参加表明の期間には各人が何のプログラムを書くのかを記入する欄があります。これを押さえておいたり、参加者のブログを巡回して参加者がいつも書いている母国語を知っておくとものすごく後々作業がはかどります。なぜなら、その人の隣のポジションをキープすることで、先生を得ることができるからです。

最初、Clojureを書くつもりだったので、太一さんの隣をキープしていじくり回そうと考えていたのですが、温泉に行く前にClojureを予習していたらLISPのいいところがつぶれてる感じでいまいち積極的に使いたい言語にならなかったので、今回は保留してNodeをいじることにしました。

詰まるところ、私はJavaScriptスペシャリストなはぎーさんの隣に座ることにしました。はぎーさんはC++などでOpenNIなどのプログラムをいじるようだったので、少しはぼくも助けになるかな、とか思ったからです。結局、ぼくからアドバイスできたのは最近の std::runtime_error は #include<exception> ではなくて #include<stdexcept>  すると使えるようになるになったみたいですよ、という情報だけでしたが・・・



ぼくが今年のjava-ja温泉で書いたプログラム

CoffeeScript + Express + Socket.IO + nTwitter + eco / Node powered by JavaScript で指定したアカウントのタイムラインをTwitter Streaming API で監視するというプログラムを書きました。

Party Tracker という名前が示すとおり、後々は Twitter Streaming API の statuses/filter でキーワードやハッシュタグも監視して、イベントの状況を表示できるWebアプリケーションを作成したいと考えています。

以下、このプログラムを書いていたときに感じたことを紹介したいと思います。

CoffeeScriptの雑感

今年のjava-ja温泉で書いたCoffeeScriptについて簡単に感想というか感触などについてメモしておきます。

シンタックス

簡潔に記述できてすばらしいです。JavaScriptでの記述の冗長性に違和感を感じている方たちにはとてもおすすめです。さらに、JavaScriptの文法が頭に入っていると「おそらくこの記述であの形に変換されるはず」というのがわかるくらいではありますので、HTMLに対するWiki記法くらいの感覚で使うといいかもしれません。表現力についても同じようなことがいえます。Wiki記法が出力する成果物がHTMLを超越することがないように、CoffeeScriptで書いたプログラムがJavaScriptの表現力を超越することもありません。過度に期待するのは止めましょう。

あとは、好みの問題もあるかもしれませんが、オフサイドルールを持っている記述言語なのも個人的にはとてもよい言語だと感じました。今どきにありがちな "->" で関数を表現したり、オフサイドルールによってブロックを表現するなどの手法をもちいることで、とにかく簡潔で読みやすいプログラムが書けます。

私はシンタックスについてはとても気に入りました。JavaScriptに対してCoffeeScriptというものができたと考えるならば、Javaに対応したCoffeeという重めの記述言語があってもよいかもしれないと感じたほどですね。

エラーメッセージ

エラーメッセージはJavaScriptがわからないと言っていることの意味がわかりません。CoffeeScriptでJavaScriptの知識がなくても簡単にプログラミングできる!みたいな夢をもっていた方たちはすぐにJavaScriptの勉強をしましょう。

気になるポイントとしては、 "coffee" コマンドで hoge.coffee などを実行したときにエラーが起きているファイル名は hoge.coffee なんですが、エラー行が "coffee -c hoge.coffee" しないと作成されない "hoge.js" の行数ででてきているあたりが気になりました。どうせなら中間ファイルをはき出してエラーファイル名と位置を変更してほしい。これはおそらくエディタやIDEが発展してきたらどうやって開くのか謎、みたいなことになりそう。

Cakefile

CoffeeScriptの簡潔な記述でタスクを記述できるのがよい。Rakeの影響を大きく受けているようで、すんなりと記述することができた。DSL で定義されていると思われる exec の使い勝手もなかなかで標準出力と標準エラー出力などをうまく扱うことができてよい。

ただし、注意すぺきポイントとしてはデフォルトのタスクが登録できない、利用できないところだと思う。 "cake" とターゲットなしで実行したときには "rake -T" 相当の挙動となり、登録されているタスクの一覧が表示される。

なお、この事項についてはすでに検討済みのようなので、チケットなどを新しく作成してもおそらく方針が転換されることはないと思う。
ぶっちゃけ、今回の用途では Makefile でもよかったのですが、なんとなくプロジェクト全体の流儀をCoffeeScriptでまとめているときにCakefileを使わないのは気持ち悪いので使いました。

Socket.IOが便利すぎる

今回のプログラミングで充実感を得ることができたのはSocket.IOライブラリのおかげかもしれません。Socket.IOライブラリを使うことで簡単にクライアントとサーバの非同期通信のプログラミングを行うことができました。

WebSocketの仕様を追いかけていた人たちにはわかることだと思いますが、WebSocketの仕様がとにかく不安定で、こいつを生でいじる気にならない。いまでもブラウザごとに挙動が異なるはず。ところが、このSocket.IOというのは賢いやつで、それぞれのブラウザで利用可能なWebSocketの実装を選んで勝手に効率のよい通信方法で結んでくれる。場合によっては勧告されていた期間の短いドラフトの実装でも使ってくれるみたいだし、最悪の場合はXmlHttpRequestまでフォールバックして通信してくれる仕組みになっているので、とりあえずSocket.IOを使っておけばクロスブラウザプログラミングを意識しなくても動作するというのが大きい。今後も積極的に利用したいライブラリだと感じた。

ただし、こいつの中身は前述の理由からクロスブラウザプログラミングなどの汚い部分をギュウギュウに細密充填したようなものになっているため、中身は相当な覚悟がないとダイブして読み砕くことができないと思う。実際、自分くらいのレベルではすべてを追う気にはなれなかった。すでに歴史あるライブラリである。

Node の今後を予想

閑話休題。
と、思ったんですが、ここまでの話が長くなったので別の機会に「Node とそれを利用したプロダクトの未来を予想」というタイトルでエントリを書きます。


2012年3月18日日曜日

@keitahaga in Security Hall of Fame @ Google

またもおれたちのハガがしびれてあこがれる偉業達成です。

Security Hall of Fame
The following people have qualified for a Google Security Reward. On behalf of our hundreds of millions of users, we thank the named individuals for helping make Google products safer.
今回は January - March 2012 です。

http://www.google.com/about/company/halloffame.html

2012年2月15日水曜日

@keitahaga w/ cloud.com


また @keitahaga 先生のご活躍が。
http://support.apple.com/kb/HT1318

うっかりしてたら、cloud.com と apple.com は別だったぜ、的な地獄のミサワも驚きな感じのコメントもナイスでした。

2012-01-09 cloud.com
A cross-site scripting issue was addressed. We would like to acknowledge Keita Haga of keitahaga.com for reporting this issue.
2012-01-09 appleseed.apple.com
An access control issue was addressed. We would like to acknowledge Christopher SJ Ong for reporting this issue.
2012-01-06 consultants.apple.com
A cross-site scripting issue was addressed. We would like to acknowledge Himanshu Sharma(нα¢кєя) of www.s3curity.net, Cim Stordal, Belmin Vehabovic, Jose A. Vazquez of spa-s3c.blogspot.com, Keita Haga of keitahaga.com, Olivier Beg of spinozalyceum, and Aditya Gupta, Subho Halder and Dev Kar from KIIT University, India for reporting this issue.
2011-12-21 mfi.apple.com
A cross-site scripting issue was addressed. We would like to acknowledge Keita Haga of keitahaga.com for reporting this issue.
2011-12-19 gsxws2ut.apple.com
An information disclosure issue was addressed. We would like to acknowledge Keita Haga of keitahaga.com and Julius Kivimäki for reporting this issue.

2012年1月26日木曜日