タグ

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

  • Carton 1.0 時代の Web アプリケーション開発フロー - tokuhirom's blog

    Carton 1.0 がでたところで、Web アプリケーション開発のフローを一度見直しておきたい、そんな人も多いでしょう。 そんな方のために僕のやりかたをまとめました。各社、議論の叩き台にしていただければよろしいかと存じます。 もっとも重要なことは、、 Carton を使うときに、僕が最重要だと思うことは、できるだけ番環境と開発環境の環境をそろえるということです。CPAN モジュールが番と開発でバージョンちがうから挙動がちがってた!! なんてのは時間の無駄ですし、よくないことですからね。 ですから、各開発環境と番環境をできるだけそろえることを意識していきたいとおもいます。 DarkPAN は使ってない そんなに DarkPAN 的なのを使うほど、DarkPAN 的なオレオレモジュールがないので、git submodule で管理しています。 【201308061241update】

    hide-K
    hide-K 2013/08/06
  • PhantomJS + Selenium::Remote::Driver でスクレイピングをこころみる - tokuhirom's blog

    PhantomJS といえば、WebKit を headless でうごかせて便利なやつですが、PhantomJS 1.8 から Ghost Driver がくみこまれるようになりました。 わかる人むけにかくと「JSONWire Protocol をサポートする httpd が phantomjs にくみこまれた」ということです。 GhostDriver は WebDriver Wire Protocol の1実装です。で、そのクライアントライブラリとして Selenium::Remote::Driver が CPAN にあがっていますから、これをつかって簡単に phantomjs とやりとりができます。 Selenium::Remote::Driver という名前のとおり、Selenium もつかえますんで、selenium をつかって、対応しているブラウザでのテストもできるのがいいかん

  • 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/

    hide-K
    hide-K 2011/10/18
  • Catalyst が Plack に依存した - tokuhirom's blog

    Catalyst 5.90001 がでまして、こちらのバージョンは Plack に依存しております。これは非常に PSGI プロジェクトにおいてはひとつの節目となるリリースといえましょう。HTTP::Engine が最初にリリースされてから3年、みんなよくがんばった!感動した!(3年前(たぶん)のジョーク(10年前のテキストサイト風)) そういうわけですが、私としてはぜんぜん Catalyst の使用はおすすめしませんで、Amon2 つかうのがオススメですね!

    hide-K
    hide-K 2011/08/16
    5.9系リリースおめ。温故知新になるかどうかわかんないけど久々に見て見る
  • Fukuoka.pm #19 に参加してきました - tokuhirom's blog

    http://atnd.org/events/16157 JPAさんの支援をうけまして、dotcloud 的なかんじでウェブアプリをデプロイするための環境を構築する方法についての発表をしてみました。 当日の発表資料はこちらになります。 http://tokuhirom.github.com/talks/20110611-fukuokapm-dotcloud/#0 他の方の発表などは各種ブログをご覧いただくとして、僕が感じたことについて書いておきます。 Fukuoka.pm では、Shibuya.pm ではやらないワークショップなどもあって、形態がちがくて面白いなーとおもいました。 (というか perl-casual とかでワークショップとかやればいいとおもった) あと地方PM大集合みたいな企画もいいんだけど、出張Fukuoka.pmとかやったらいいんじゃないかみたいなことをいってみたりしま

    hide-K
    hide-K 2011/06/20
  • web application 開発における git のブランチ運用ルール - tokuhirom's blog

    俺は普段こういう運用でやっているが、君はどうか。 社内の trac にドキュメントをかいたので、コピペしておく。git についてはカジュアルにつかってるだけなので、もっとこうしたほうがいいんじゃねえのというのがあればおしえてください。 ブランチ命名規則master 番の deploy 用。誰かに deploy されてこまるものはいれない。stg ステージングの deploy 用iss(\d+) チケット$1 用の topic branch。master から分岐させるその他、キャンペーン関係など、おいやすくしたい者は別途名前つけてもよし。 stg の運用基的に、開発はチケットにひもづく topic branch でおこなうので、以下のような作業フローとなる git co master git co -b issXXX # トピックブランチをきる ... # development gi

    hide-K
    hide-K 2010/12/15
  • Q4M + Parallel::Prefork + Signal handling + Log::Minimal - tokuhirom's blog

    conditions precedent: use daemontools & multilogPoints: make DB connection after forkdo not trap SIGTERM while calling queue_wait(), so that the process can be shut down while waiting for the response from q4mremove $time and add $PID for log. Because I'm using multilog. It prints the tai64n automatically(and, tai64n is better).package OreOre::Worker::Base; use strict; use warnings; use parent qw/

    hide-K
    hide-K 2010/11/16
  • 位置関係のCPAN modules - tokuhirom's blog

    requires 'GIS::Distance::Lite'; requires 'HTML::MobileJp'; requires 'Geo::Coordinates::Converter'; requires 'Geo::Hash::XS'; requires 'HTTP::MobileAgent'; requires 'HTTP::MobileAgent::Plugin::Locator'; requires 'Geo::Coordinates::Converter::IArea';最近だと、このへんつかうかな。俺だったら。

    hide-K
    hide-K 2010/09/27
  • MobaSiF::Template と Text::Xslate の比較 - tokuhirom's blog

    40 :デフォルトの名無しさん:2010/08/01(日) 21:43:47 xslateというテンプレートエンジンが速いそうですが、mobasifと比べてどっちが速いでしょうか。 ベンチマーク探したけど、両者を比較しているのは見つかりませんでした。 というか xslate のほうは後発なんだから、高速だと主張するならTTなんかじゃなくて mobasifと比べてほしいよね。 http://pc12.2ch.net/test/read.cgi/tech/1280541200/40 http://xslate.org/ にはわざと MobaSiF::Template との比較はのせていません。日でしかしられておらず、しかも日でも一社以外ではほとんどつかわれていないとおもわれるテンプレートエンジンとの比較を掲載しても海外の人がひいてしまうからです(xslate.org は海外へのプロモーショ

    hide-K
    hide-K 2010/08/16
    Text::Xslate::Bridge::MobaSiFが待たれる
  • Log::Dispatch::* にかんするパッチ2種 - tokuhirom's blog

    hide-K
    hide-K 2010/08/16
  • 適当なscriptでは use autodie; する - tokuhirom's blog

    chdirのときもエラー処理は必須ですな〜自分で使うスクリプトだからええ加減な書き方してた〜反省 #ubuntu #perl http://twitter.com/mukumaru/status/20694618336 perl5.10.1 以後では autodie.pm が標準添付されているので、それを利用するとよい。 % perl -E 'use autodie; chdir "/foo"' Can't chdir('/foo'): No such file or directory at -e line 1こんなかんじ。use strict; use warnings; につづけて use autodie; と書くだけ。 使い捨てスクリプトでは use autodie; しておくと、いちいち組み込み関数のエラー処理かかなくていいので便利。

    hide-K
    hide-K 2010/08/16
  • モダンな Perl の開発環境の構築方法 - tokuhirom's blog

    一般的な OSX 環境および Linux 環境における、モダンな Perl 開発環境の構築方法についてまとめてみたよ。 perlbrew のインストールperlbrew をつかうことにより、簡単に最新版の Perl5 を利用することができるようになる。 perlbrew をいれる。% curl -L http://xrl.us/perlbrew | perl - install % ~/perl5/perlbrew/bin/perlbrew init ~/.bashrc (または ~/.zshrc)に source ~/perl5/perlbrew/etc/bashrc を追記。あたらしいシェルをたちあげる。最新版の perl をインストールする。% perlbrew install perl-5.12.1 % perlbrew switch perl-5.12.1 ここまできたら、she

    hide-K
    hide-K 2010/07/16
  • mac ports やめました! ー homebrew で快適 OSX 生活! - tokuhirom's blog

    http://mxcl.github.com/homebrew/ 昨日 mac mini を購入しまして、「さて、mac ports いれなきゃなあ。でも mac ports での環境構築って時間かかるし、CPU パワーもくうし、電気代かかるしエコじゃないし」とかおもっていたところ、そういえば hsbt さんが homebrew ってのをオススメしてたなーとおもって、いれてみたところ、非常に快適。 mac ports は、システムにもともとはいっている perl とか ruby とかもいちいちコンパイルするので、序盤の環境構築が非常に時間がかかるのが難点です。 しかし homebrew は、system にもともとはいっているものはそのままつかうので、初動がはやい。自分の場合、macbook の調子がわるくって、mac mini にかいかえたので、すぐにでもつかいはじめたかったので、非常に

    hide-K
    hide-K 2010/06/28
  • Perl 5.13.2 がもたらした package NAMESPACE BLOCK 構文があたえるもの - tokuhirom's blog

    開発版の Perl 5.13.2 がリリースされたが、5.13.2 の目玉はなんといっても package NAMESPACE BLOCK 構文だろう。 use 5.13.2; use warnings; package Point { use Moose; has 'x' => (is => 'rw', isa => 'Int'); has 'y' => (is => 'rw', isa => 'Int'); __PACKAGE__->meta->make_immutable; no Moose; }; のように、パッケージを宣言することができるようになった。 この構文は非常に大きい変化をもたらす。 1 ファイルに複数のクラスを書くことが苦でなくなる。package NAME BOCK 構文を利用する場合、BLOCK の中はインデントすることになるため、複数パッケージを1つのファイルにか

    hide-K
    hide-K 2010/06/24
  • Proc::Guard - サーバープロセスを起動するライブラリ - tokuhirom's blog

    http://frepan.64p.org/~tokuhirom/Proc-Guard-0.01/lib/Proc/Guard.pm テストなどで memcached やら ttserver やら gearmand やらを起動するにあたって、サーバープロセスを起動するとかいった場合に、サーバーの種類ごとにライブラリを書くのも馬鹿馬鹿しいので、起動する部分だけを抽象化してみたという話。主にテストでつかう用途を想定している。 たとえば、memcached の起動部分は以下のようにかくことができる。$proc が消滅した時点で、memcached のプロセスは消滅する(by DESTROY())。 use Test::TCP qw/empty_port wait_port/; use File::Which qw/which/; use Proc::Guard; my $port = empty

  • Template-Toolkit のよくない点について - tokuhirom's blog

    TT はすばらしいテンプレートエンジンだが、いくつかの点ですぐれていない点がある。その中でもっとも気にくわない2つは以下のもの。 Speedtoo many plugins on cpanとくに速度の遅さは致命的で、キャッシュや、一部の XS 化などによる高速化がはかられてはいるものの、「ボトルネック」になりうるほど遅い。 プラグイン機構は便利だが、一方で、CPAN モジュールへのラッパーモジュールが大量に生成されている。 この2つの欠点は、Text-Xslate の TTerse syntax で解消されているので、こういった点が気にくわない人は、ためしてみるといいのではないかとおもう。 【追記】 なぜ、TT でプラグインが異常に発達するのかというと、関数を export するのがめんどくさいから。で、その欠点は Xslate では Text::Xslate->new(module =>

    hide-K
    hide-K 2010/06/08
  • cronolog と plackup の連携 - tokuhirom's blog

    multilog に access logerror log をまぜてだすと、エラーでてんのかどうかよくわからなくなっちゃうので、まあわけた方がよろしい。 multilog でパターンマッチで適当に分割するという手もあるけれど、アクセスログは集計などにもつかうので、日ごとにファイルがわかれていた方が便利でしょう。 というわけで、こんな風にしてみた。 use Plack::Builder; builder { open my $fh, "| /usr/bin/cronolog /var/log/plackup/%Y/%m/myapp-%Y%m%d.l og" or die "cannot load log file: $!"; select $fh; $|++; select STDOUT; enable 'Plack::Middleware::AccessLog', logger =

    hide-K
    hide-K 2010/05/10
  • first impression for Text::Xslate - tokuhirom's blog

    僕がつくってるフレームワークであるところの Amon に Xslate 対応をいれてみた。 かなり TT とおなじ感覚でつかえるかんじ。テンプレートの継承が追加されてるぐらいで、基は TT とおなじかんじか。 フレームワークにくみこむときはこんなかんじ。 package Amon::V::Xslate; use strict; use warnings; use base qw/Amon::V::TemplateBase/; use File::Spec (); use Scalar::Util (); use Text::Xslate 0.001_08 (); sub import { my $class = shift; if (@_>0 && shift eq '-base') { my $caller = caller(0); no strict 'refs'; unshift

    hide-K
    hide-K 2010/05/08
  • Text::ClearSilver のベンチマークをとってみた - tokuhirom's blog

    【追記】ごめん。うそなんだ。。。当は一番はやいのが cs です。 id:gfx が clearsilver binding をかいたということなので、ベンチマークをとってみた。 結果をみてみると、意外なことに Text::ClearSilver の方が TT より遅いということがわかった。なんでだろう。 5.010001 linux at foo.pl line 22. Template: 2.22 Text::MicroTemplate: 0.11 Text::ClearSilver: 0.10.5.0 (warning: too few iterations for a reliable count) Rate cs tt mt cs 1139/s -- -60% -96% tt 2833/s 149% -- -91% mt 32258/s 2732% 1039% --ベンチマークス

  • AE::HTTP で HTTP::Request をなげるには - tokuhirom's blog

    HTTP::Request をつかって呼ぶのはそんなにむずかしい話ではない。という。たとえば、以下のようにすれば、普通によべる。 sub http_request_by_http_request { my $cb = pop @_; my ($req, @args) = @_; my %headers; $req->headers->scan(sub { $headers{$_[0]} = $_[1]; }); http_request($req->method, $req->uri, body => $req->content, headers => \%headers, @args, $cb); } ↓のようにしてもいいかも。$req->headers のあたりがちょっとアヤシイけど。 http_request($req->method, $req->uri, body => $req