2013-01-01から1年間の記事一覧

PSGIアプリでWebSocketを使う場合、responderはどうすべきか?

Plack::App::WebSocketを実装していて、「PSGIのresponderをどう扱うべきか?」に悩みました。Plack::App::WebSocketは内部で以下のようなことをしています。 my $env = shift; my $fh = $env->{"psgix.io"}; return sub { my $responder = shift; ... # Web…

Plack::App::WebSocketとAnyEvent::WebSocket::Serverをリリース

PSGIアプリケーション上でお手軽にWebSocketを使うためのモジュールPlack::App::WebSocketをリリースしました。 https://metacpan.org/pod/Plack::App::WebSocket こんな感じで使います。 builder { mount "/websocket" => Plack::App::WebSocket->new( on_e…

DuckDuckGo !Bang チートシート

もう何年もブラウザのホームページは https://google.co.jp/ だったけど、この間 https://duckduckgo.com/ に変えた。DuckDuckGoはGoogleと同じく、Web検索エンジン。検索エンジンとしての精度やカバレッジはやはりGoogleに及ばない印象があるけど、検索演算…

DuckDuckGoで検索リージョン設定をする

DuckDuckGoでは演算子で検索リージョン(地域)を指定できる。 r:jpを検索ワードに入れると、日本のサイトを優先表示する。逆に、 r:noneを検索ワードに入れると地域優先度を解除できる。地域優先度のデフォルト設定はDuckDuckGoの設定で指定することができる…

任意の祖先ディレクトリに一発でcdするcdup

Javaでプログラムを書いているとやたら深いディレクトリに入ることがよくあるけど、そんな時、上の方のディレクトリに移動するのが非常にめんどい。たとえばこんな状況。 $ pwd /home/user/program/java/src/jp/co/hogehoge/sample/utilで、ビルドをするため…

DBusイントロスペクション メモ

Web::Dashを作るときにLensサービスのインタフェースを調べたりLensの通信を傍受したりしたのでそのメモ。そもそもDBusとはなんたるかについてはうすださんの記事が詳しくて分かりやすい。 http://www.usupi.org/sysad/175.html - 「D-Bus の存在を感じてみ…

Unity Dashクローン Web::Dash というのを作った

Ubuntuの検索ユーザインタフェースUnity Dashと同じような機能をWebブラウザでできるようにするWeb::Dashというプログラムを作った。動作イメージはこんな感じ。下はXubuntu 12.04でWeb::Dashを立てて、Wikipediaレンズを使って検索したところ。Xubuntuなの…

現在進行中の処理と未来の値を指し示すfuture/promise/deferred

Future::Qモジュールを書いた時に他のfuture実装についてもいくつか調べたのでメモ。futureは(バックグラウンドで)現在進行中の処理と、それが終わったあかつきに得られるであろう結果の値を指し示す(というか保持する)オブジェクト。 http://en.wikipedia.o…

Future::Qをリリース

PerlのFutureモジュールのサブクラスとして、Future::Qというのを作ってみた。これはFutureモジュールにthen()メソッドといったQ.jsと(ほぼ)互換のメソッドを付け加えたもの。こんな感じで使う。

JSON::XS::BooleanオブジェクトをData::Cloneしようとすると死ぬ

表題のとおり。以下のバージョンで確認。 perl 5.14.2 Data::Clone 0.003 JSON::XS 2.33 JSON::PP 2.27200 rt.CPANは https://rt.cpan.org/Ticket/Display.html?id=82584以下のようなテストをやってみると、 use strict; use warnings; use JSON::XS (); use…

CPS関数をループ実行する

CPS(Continuation-Passing Style)の関数をループ実行するのに使えるユーティリティモジュールを試してみた。今回試したのは、 CPS (v0.18) http://search.cpan.org/~pevans/CPS-0.18/lib/CPS.pm Async::Defer (v0.9.4) http://search.cpan.org/~powerman/Asy…