前回に引き続き今後のネタのメモとか。ImparaGoogleのDremelに触発されてつくったものとのこと。MapReduce以外の選択肢が増えてくると、pigみたいな高級言語の重要度があがってくるかもしれないですね。Trackを無視ちょっと前に、ApacheがIE10のDNTを無視するパッチをだしてましたが、これも影響してるのだろうか。ちなみにこのパッチをコミットしたのはこの人らしい。Experiencesupersonic名前からしてすごそうですね。これをうまく使えれば、下手にhadoop使うより大量にメモリ積んだマシン1台でがんばれるシチュエーションが増えそう。PRESS総集編のバックナンバーをまじめに消化してたら、Vol.42のアルゴリズム&データ構造の記事がおもしろかった。naoya氏を見習って自分で実装してみたいと思います。surfaceとかkindleのpaperwhite予約しました。Lispの練習にCodeChefの↓の練習問題をやってみた。Exceededでおちてしまった。totalローカルだと3.42s程度だった。Exceededだった。Exceededだった。read-sequenceで読み込んだほうが早いかと思って以下のように書いてみた。total残念ながら逆に遅くなってしまった。parse-inputの部分で60%くらい時間がかかっていた。#'<にするとなぜか遅くなる。誰もlispではパスしてない模様。いうのをもっと高速に書く方法あるのだろうか。ローカルだと0.2秒くらいだけどリモートでは3秒くらいかかってた。そもそもCodeChefの実行環境がしょぼすぎる疑惑が。apiをつかっているサービスで以下のようなエラーがでた。除いて廃止されたらしい。ドメインもapi.twitter.comに統一されたらしい。ログイン直後にverify_credentialsをつかってるアプリは多いと思われるが、その場合ログインに失敗したように見えるので認証まわりをライブラリ任せにしてると原因がわかりにくいかも。twitterの開発ブログまめにチェックしたほうがよさそう。LispでZeroMQを試してみたが、今度はiOSからも試してみた。exceptionがあるのでiPhoneアプリに組み込んでもソースは公開しなくて大丈夫なはず。ビルドできるようになっているが、iPhone用にクロスコンパイルをするためには適切なオプションを与えてやる必要がある。一応、本家サイト上にもドキュメントはあるが最新のXcodeではうごかない。シミュレータ用でもうごかせるようにしておきたい。いうわけで、以下のようなビルドスクリプトを書いた。これをZeroMQのtarを展開してできたディレクトリにbuild.shとかで保存して実行すると、armv7とi386に対応したlibzmq.aができる。libraryこのlibzmq.aと、includeディレクトリの中身をXcodeにインポートしてやればよい。追加してやるのを忘れないように。ZeroMQを用いた簡易チャットアプリサンプルとしてチャットアプリを実装してみる。チャットでの発言はREQ/REPを用いてアプリ→サーバに渡し、PUB/SUBを用いてサーバ→アプリにブロードキャストする。rep-sockから発言を受け取ってpub-sockにそのまま流すだけ。msg))))))))(pull-and-publish)REQ/REPではなくPULL/PUSHでもできるはずだが、なぜかcl-zmqではpullがつかえなかったのでREQ/REPをつかった。アプリ側objective-c版ZeroMQもあるけど、今回はそのままCのAPIを利用した。簡単のためタイマーで1秒ごとにソケットにメッセージがあるかどうかobserveSocketでチェックしているが、別スレッドにしたほうがスマートzmq_recvのマニュアルによると、zmq_recvをZMQ_NOBLOCKで呼んだときにメッセージがなかった場合はEAGAINが返るとなっているが、-1がかえってきていた。LispでZeroMQを試してみた。quicklispのインストール以下を参考にquicklispをインストールする。:zeromq)ここで以下のようなエラーがでる場合はzeromqのインストールができていないか、ld.so.confに問題がある。すればちゃんとロードされるはず。2以下のようにしてライブラリのパスを設定してやっても回避はできるがおすすめしない。サンプルコード参考に以下のようなエコーサーバを書いた。deviceといわれる。client.lispで実行。うまくいけばサーバ側からレスポンスが返ってくる。Lisp(sbcl)でZeroMQを利用して、簡単なエコーサーバ/クライアントを実装した。