タグ

ブックマーク / blog.64p.org (123)

  • znc で im.kayac をつかうための NotifyImKayacSimple.pm をかいた - tokuhirom's blog

    https://github.com/tokuhirom/ZNC-NotifyImkayac/blob/master/NotifyImkayacSimple.pm znc で im.kayac.com をつかうためのモジュールとして sugyan がつくった ZNC-NotifyImkayac があるが、これは依存があって使うのがめんどくさいし、そもそも AnyEvent に依存してるけど AnyEvent つかう必要ないとおもったので、普通に LWP つかうようにして実装した。

  • Data::MessagePack::Unpacker と AnyEvent::MessagePack に関する注意喚起 - tokuhirom's blog

    typester, gfx, tokuhirom の3人で話しあった結果、以下のように決まりましたので、つつしんでご報告いたします。 Data::MessagePack::Unpacker には Bug があるので Deprecate しました。 今後は typester さんによる Data::MessagePack::Stream をご利用ください。 AnyEvent::MessagePack も Data::MessagePack::Stream を利用するように変更してリリース済みとなっています。 なにか不具合・疑問などありましたら [email protected] までお気軽におといあわせください。 以上です。よろしくおねがいします。

  • Do not use LWP::Simple::getstore - tokuhirom's blog

    LWP::Simple::getstore looks only response code from LWP::UserAgent, but It doesn't handles I/O error on file system. use LWP::Simple; getstore("http://image.gihyo.co.jp/assets/images/dev/serial/01/sbcv/0002/3.jpg", '/root/err.jpg') or die "Cannot get image"; You cannot handle "Permission Denied" error. orz. Please use LWP::UserAgent instead. Do not use LWP::Simple in production script. Following s

  • Streaming with PSGI - tokuhirom's blog

    basic streaming(code by chiba-san https://gist.github.com/2785757) use strict; use warnings; my $app = sub { my $env = shift; return sub { my $responder = shift; my $writer = $responder->([ 200, []]); for ( 1..5 ) { $writer->write("hoge"); sleep 1; } $writer->close; }; }; $app; with AnyEvent use strict; use warnings; use utf8; use 5.010000; use AnyEvent; use Time::HiRes qw(sleep); my $i=0; sub { m

  • はやりもの一個飛ばしの法則 - tokuhirom's blog

    なんかこう、世間をみておりますと、いろいろなものがはやったりすたれたりしておりますね。 prototype.js のあとに MooTools とかなんかいろいろあったけど、それを静観して jQuery にいったらだいぶ楽でした。 mod_perl1.3 のときに、mod_perl1.9 とか mod_perl2 を導入してる某はてな社や FCGI を導入している某モジャモジャ社の人から DIS られたりもしましたが、それを静観していたら、plack の季節がやってきて、一個とばしで楽でした。 apache1.3 をつかってるときに lighty やばいよっていってる人いましたが、今はメンテされてないようで、僕は nginx をつかっています。 まあそんな風に、流行っているものは、だいたい攻めすぎてたりなんだりであんまり定着しなかったりするので、現状のものにたいしてそこまでのメリットがないの

    sugyan
    sugyan 2012/04/04
  • プログラミング言語 Tora を公開した - tokuhirom's blog

    http://tora-lang.org/ Perl6 の開発が宣言されてから10年以上の歳月がたち、いまだ実用的な実装はあらわれません。 そんななかで、next perl 的なものをつくりたいと gfx がいってから 3ヶ月ぐらいたっていますが、こちらも一行もコードをかいた様子はありません しょうがないので僕がつくってみました。まだあらけずりですが、意外とうごいています。 今回、とくに Perl5 にあった機能のなかでけずりたかったものは以下のとおり context@ary, %hashつけたかったものは以下のとおり autoboxingMoose 的なものの組み込みハックしやすいVM組み込みライブラリの実装しやすさ 未実装な点は以下のとおり Moose 的なアクセサSignal handlingこまかい socket 関連のものHash::MultiValue の組み込みなどなど。 g

  • 最速な JavaScript のリファレンスマニュアルサイトをつくった - tokuhirom's blog

    JavaScript のリファレンスマニュアルといえば MDN(Mozilla Developers Network) が有名ですが、MDN の資料は探索がめんどくさいし、表示が遅いということで使い勝手がわるいという問題がありました。 そこで、jQuery のリファレンスマニュアルサイトとして有名な jqapi.com とおなじよような使い勝手のサイトがあったらいいのになーとおもいました。 なので、つくりました。 サイト自体はすべて static なデータで構成されているので、github からデータを取得すれば、イントラや自分のマシン内で閲覧することも可能となっています。 なお IE での動作確認はしていないので、うまくうごかない場合は pull-req してください。

  • node.js で人気のあるライブラリ10選 - tokuhirom's blog

    node.js というか npm で依存されているライブラリの上位10個ぐらいがどういうものがはいっているのかをまとめます! 具体的には serach.npmjs.org の Most depends on にのっているリストに註釈をつけただけです! http://search.npmjs.org/ 1位 underscore.js 392個http://search.npmjs.org/#/underscore クライアントサイド JS で人気のたかいユーティリティーライブラリの underscore.js が堂々の第1位。 クライアントサイドでつかってるからそのままつかってる人が多いのかな、とおもっています。

  • Node.js で重い処理をしてしまったときにタイムアウトするの法 - tokuhirom's blog

    (この記事は Node.js アドベントカレンダー不参加記事です) チャットサーバー的な使い方とか意外とみんな興味なくて、普通のウェブアプリケーションなどをかく、という用途にちょっと node.js がつかえたらいいのにな、とおもっている人がおおいようにかんじています。Node.js が人気なのは、v8 をうまくパッケージングしているのが node.js ぐらいで、そして v8 をうまくパッケージングするのが結構めんどくさいから、というところが大きいのです。ぶっちゃけ node.js が〜 とさわいでる人のうち8割は I/O multiplexing だからとかそういう理由で支持しているわけではなかったりするのです(偏見)。 さて、普通の web application のようなものを書こうとしたときに Node.js って基シングルスレッドだし、なんかうっかり重い処理したときにどうした

  • Amon2とJSONとセキュリティ - tokuhirom's blog

    [1]http://d.hatena.ne.jp/ockeghem/20110907/p1[2]http://www.atmarkit.co.jp/fcoding/articles/webapp/05/webapp05a.html[3] http://msdn.microsoft.com/ja-jp/asp.net/ff713315[4] http://labs.cybozu.co.jp/blog/kazuho/archives/2007/01/cross-site_including.phpあたりをよんで、JSON とセキュリティについてかんがえてみた。 ここで、有効とされている対策のうち while(1); を先頭に付与するPOST ですべて処理するといったあたりは、RESTful でないし、BK 感がひどいというか質的ではないのでできるだけやりたくない。 また、Amon2 では互換

  • 唐突ですがここでプラグインをかいてみよう 〜 軽量フレームワークAmon2入門 (10) 〜 - tokuhirom's blog

    Amon2 のプラグインの書き方がよくわからないという話をたまに聞くので、そのへんについて説明したいとおもいます。 基的にはプラグインはただの Perl モジュールで、ただ一つの規約にしたがえば問題ありません。それは 'init'という名前のクラスメソッドをもっているということです。ただそれだけです。 package MyPlugin; sub init { } 1;これで、ひとつの valid なプラグインです。 さて、なにもしないプラグインをつくってもしょうがないので、ちょっと機能をたしてみましょう。 package MyPlugin; sub init { my ($class, $context) = @_; $context->add_trigger( AFTER_DISPATCH => sub { my ($self, $res) = @_; $res->header('X-

  • Amon2::Setup::Flavor::Large + Teng をもちいた簡単な掲示板の作成 その2『ページャーをつけよう』 〜 軽量フレームワークAmon2入門 (8) 〜 - tokuhirom's blog

    さて、掲示板をつくったとはいえ、これだけではおもしろくありませんね。 まずこの掲示板には重大な欠陥があります。具体的にいうと、ページングがされていません。 ウェブアプリケーションにおいてはページングは非常に重要な要素です。 なにかを一覧表示するページをつくるときに、ページングのことが思いうかばないようでは一人前のウェブエンジニアとはいえません。ページングを手抜きすると、あとあと重いページになって泣くことになるでしょう。ページングは最初の段階でいれておくのが結局は楽なのです(という自戒)。 さて、今回の掲示板では Teng をつかっているので非常にページャの実装が容易になっています。Teng ではページャ関連の実装はプラグインとなっていますから、Teng に Teng::Plugin::Pager をよみこませましょう。lib/MyBBS/DB.pm に以下のようにかきましょう。 packa

  • Amon2::Setup::Flavor::Large + Teng をもちいた簡単な掲示板の作成 〜 軽量フレームワークAmon2入門 (7) 〜 - tokuhirom's blog

    前回から大分時間が経ってしまいましたが、唐突に Amon2+Teng で大きめのアプリをつくるチュートリアルでもはじめましょう。Teng というのは、O/R Mapper とよばれる種類のライブラリで、DB へのアクセスを簡単にしてくれるものです。 さて、とにかくも準備からはじめましょう。 % cpanm Amon2 Amon2::Setup::Flavor::Teng Tengで Amon2 をインストールします。 % amon2-setup.pl --flavor=Large,Teng MyBBSとするとスケルトンができあがりますので % cd MyBBSとして、プロジェクト用のディレクトリにはいります。 %cpanm --installdeps .とすると、依存モジュールがインストールされます。 % plackup app.psgi -R libとうつと、サーバープロセスが起動します

  • Amon2 の最近の変更(3.22〜3.25) - tokuhirom's blog

    Amon2::Lite が別 dist に分離されました(Amon2::Lite をつかっているアプリでは Amon2::Lite への依存を明示的に記述するようにしてください)各種依存がすくなくなりましたXslate でつかう bridge のデフォルトが Star になりました。 Star がつかいにくかったりする場合のご要望は #xslate までPragma: no-cache; Cache-Control: no-cache をデフォルトにしていましたが、なにかと問題があるので Cache-Control: private をデフォルトにしましたcarton をつかう人がふえてくるだろうという予測のもと、依存をへらす変更をしています。Amon2::Lite が別 dist になったのが唯一の非互換な変更かとおもいます。Any::Moose のからみで Moose をインストールし

  • Exporter::Auto ってのつくってみたよ - tokuhirom's blog

    https://github.com/tokuhirom/Exporter-Auto なんか @EXPORT にいれるのだるくね! このプロジェクトでしかつかわないから全部 export しちゃってくれていいですよ! みたいなやつ。ありませんか? ありませんか。そうですか。そうなら、ブラウザの「戻る」ボタンを押してください。ってところまでかいてから気付きましたが、最近のブラウザって「戻る」ってかいてありませんね。はい。 で、概要ですが、Sub::Identify + B::Hooks::EndOfScope という荒技で、パブリックっぽいメソッドの一覧をみつけて @EXPORT にぶっこむというイカした技です。 Exporeter::Auto->import がよばれる時点、つまり use Exporter::Auto の時点ではまだメソッドが実際に定義されていないので、B::Hooks:

    sugyan
    sugyan 2011/10/31
  • Module::Install の功罪 - tokuhirom's blog

    M::I が最近微妙だよねという話を懇親会をしていたら、なんか中途半端につたわった感じがあったのでちゃんとまとめておきますね。箇条書きだけど。 利点DSL でかけるのでみためがかっこいい。プラグインとかあって便利 最近は author_tests と、XSUtils ぐらいしかつかてないけど 欠点auto_install がやばいし、つかってると charsbar さんに DIS られますinclude_deps は依存モジュールがアップデートしたときにしぬ!use_test_base がぶっこわれてる → include_deps をつかいこなすのが無理ゲーな実例 use_test_base は test_requires 'Test::Base'; で代替しましょうプラグインがインストールされてない時のエラーメッセージが凶悪dotcloud でつかうには git add -f inc/

    sugyan
    sugyan 2011/10/18
  • Amon2::Auth によるロケタッチAPIをつかったサイトの構築 〜 軽量フレームワークAmon2入門 (6) 〜 - tokuhirom's blog

    https://github.com/tokuhirom/TouchTouch/commit/dbb3cdeacf6629dc8213bd9fa50e14f9712634b9 久々に Amon2 入門だ! 最近リリースされたばかりの Amon2::Auth モジュールをつかってみよう! Amon2::Plugin::Web::Auth への依存を Makefile.PL に設定する!! diff --git a/Makefile.PL b/Makefile.PL index f8b9297..8f0f183 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -20,6 +20,7 @@ WriteMakefile( 'Test::WWW::Mechanize::PSGI' => '0', 'JSON' => '2.50', 'Plack::Midd

  • YAPC::Asia 雑感 - tokuhirom's blog

    LT は「5分間ならだれでもはなせるよね」っていう来敷居のひくい場所ですプレゼンは「なにをつたえたいのか」を明確にすることが一番大事です。たごもさんや kazeburo さんもかいていたけども「なぜそうしたのか」が明確なプレゼンはおもしろいです中規模な方がすぐやくだつ人がおおい(DeNA の規模の事例はほとんどのサイトにはあてはまらない) 大規模だとそういうのもあるのか、へー。 みたいなのはあるし話としてはおもしろいんだけど。「伝えたいことがある」ならプレゼンした方がいいLT の自己紹介は所属と名前をいうぐらいで十分ですLT とかやるときは、友達とか同僚とかに一度みせてからああいう大舞台で発表すれば失敗がすくないです初心者のひとは、これでもかというぐらい練習してからやったほうがいいです。 スライドなしでもいいたいことを全部いいきれる、ぐらいまでどんなトラブルがあるかわからないしand m

  • Testing Web Application 2011秋 - tokuhirom's blog

    とにかく楽に、お気軽に。お気軽にテストを追加できて、お気軽にテストを実行できる。というのがなによりも重要です。 追加しようとおもったときに「どう追加したらいいかわからない」という状況になりがちなので、あらかじめいろいろな構成要素ごとにテストをひととおりかいてみるというのも重要だとおもいます。O/R Mapper のクラスのテストとか、model のテストとか、コントローラのテストとか、JSON API のテストとか。。 ExtUtils::MakeMaker でテストをうごかさないExtUtils::MakeMaker を素でつかうと blib/ とかつかってきてうざいので、Makefile.PL に以下のような hack をほどこしてあります。ウェブアプリケーションで blib/ とかにコピーする必要ないですよね。実運用でも blib/ でうごかさないし、インストールもしませんし。 #

  • Ukigumo の demo サーバーを用意しました - tokuhirom's blog

    http://ukigumo-4z7a3pfx.dotcloud.com/ Ukigumo 結局どういう風にうごいているのか社外の人にはようわからんじゃろうとおもったので、デモサーバーをおいてみた。dotcloud においただけだけど。 Ukigumo の場合、Amon2 を利用しているので deploy が超簡単でした。Amon2 は dotcloud にディレクトリ構成などをあわせてあるので、dotcloud.yml をおくだけで OK なのです。 ついでにちょっとドキュメントも追加して表示できるようにしておきました。こういうアプリのドキュメントの表示は、markdown がやはり便利。はてな記法もいいのだけども、はてな記法って textarea でかくことに特化しているかんじだよね。vim とか emacs とかでかく場合には、markdown でいいやってなる。 そんなかんじです。