タグ

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

  • ゆるふわ CI サーバー Ukigumo ちゃんのつかいかた、かいたよー - tokuhirom's blog

    Ukigumo はゆるふわであることを第一目標として設計されているので、適当にサーバーを設置していれば、プロジェクトの担当者がそれぞれすきなタイミングでつかえるようになります。 まあ、なんか気軽に設置して気軽につかえるやつがいまいまほしかったのでつくったというかんじです。 クライアント側とサーバー側は完全に分離しているんで、クライアント側は自分のすきな実装でできるし、サーバーの管理者の世話になる必要がまったくありません。その方が楽でしょうということで。というか俺は管理したくないので。いや、するけど、できるだけ最低限の手間でやりたいじゃん。セットアップも超簡単にできるようにしてあるというか、むしろ dotcloud とかにすぐに設置できるレベルですよ。 で、クライアント側はどうやってつかいはじめたらいいかということだけども、非常に簡単で、以下のように一個 HTTP Request をおくるだ

  • Ukigumo - Yet another continuous testing tool - tokuhirom's blog

    http://github.com/ukigumo/ なんか、お気軽につかえて、カスタマイズが容易で、お気楽な continuous testing を support する tool がほしかったので、ちょろっとかいた。 ターゲットは自社サービスの web アプリケーションです。 ベーシックなクラサバ構成となっています。サーバー側は簡単な Web UI と、RPC を提供しているだけで、ごくシンプルです。サーバー側とクライアント側には依存関係はありません。クライアント側はプラガブルな構成となっていて、誰でも簡単にいじれます。 クライアント側は Plagger 風にしようとおもったんですけど、Plagger 風にするといかんせんおおげさになりすぎるので、ライブラリとしての提供にとどめました。べろっとよんだら普通に理解できます。コードをシンプルにするために忌み嫌われがちな Mouse を採用

  • Perl5 の今後の発展についてのアレ - tokuhirom's blog

    http://mtl.recruit.co.jp/blog/2011/08/ye2011-day3.html use v5.14; の意味が “Anything newer than 5.14.0 would be great!” だったのが use v5.16; からは “I want a Perl 5 that works like 5.16” にかわるという話で、これは非常におおきい変化だといえます。 要は、今後は incompatible change がレキシカルコンテキストにたいしておこなわれるということです。とはいえ、その変化というのは劇的におこなわれるものではなく、いままで互換性の Perl 5 の流れを踏襲します。ただ、今まで互換性のためにのこしてあった機能が v5.30 ではつかえなくなったりします。でも use v5.14; とかけば今の perl がつかえます。そん

  • Catalyst が Plack に依存した - tokuhirom's blog

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

  • Re: Perlで、ある要素が配列(リスト)の中に存在するかを調べる方法 - tokuhirom's blog

    http://dqn.sakusakutto.jp/2011/08/perl_10.html もし大学野球の女子マネージャーがPHPのin_arrayをPerlで実装したら。 use 5.12.0; my @list = qw(apple mango orange); my $item = 'orange'; say $item ~~ \@list ? "yes" : "no"; # 実行結果:'yes' スマートマッチ演算子で簡単に配列のなかに要素がふくまれるかどうかを判定することができます(速度がどうかはともかくとして)。

  • life - tokuhirom's blog

    I was laid off by last employer at June 2011. I got a new Job from July, 1st, 2011. I'm still writing perl5 code.

  • length(undef) は Perl5.12+ で undef をかえすようになった。 - tokuhirom's blog

    https://github.com/lyokato/p5-oauth-lite/pull/3 Perl5.12+ では length(undef) が undef をかえすんだけどこれが問題になることがあって、 $headers->header('Content-Length' => length($content));で、$content が undef の場合。$content が undef だから、Content-Length ヘッダが付与されない。これは非常にわかりづらいバグとなる。 まあ $content が undef なのがおかしいのだが。

  • TinyURLをつくってみよう 〜 軽量フレームワークAmon2入門 (4) 〜 - tokuhirom's blog

    インストール今回は Amon2 の最新版が必要なので、すでにインストールしている場合でもあらためてインストールしてください。 環境は OSX, linux を想定していますが、Windowsでもそれほどかわらないかと思います。Windows でやっていてわからなかったら mattn さんにきいてください。 さて、Amon2 のインストールは非常に容易です。Amon2はCPANにリリースされていますから、通常のCPANモジュールと同様にcpanmコマンドでインストールできます。 % curl -L http://cpanmin.us | perl - Amon2 Amon2::DBIで、インストールが完了します。テストに失敗する場合には、コメント欄などできいてください。 TinyURLを作るぐだぐだとかたっていても何もつたわらないと思うので、チュートリアルに入りましょう。 とりあえず、簡単で

  • PSGIとPlackと 〜 軽量フレームワークAmon2入門 (3) 〜 - tokuhirom's blog

    さて、今回は裏をかいて、いったん題のAmon2の話からはずれて、PSGI/Plackのはなしをしましょうかね。 PSGI/Plackは基的にはアプリを書く人は知る必要はあまりないのですが、概念ぐらいは知っておくにこしたことはない、というところです。 さて、数年前のYAPCでわたくしが口を酸っぱくして申し上げたことを皆さんはおぼえているでしょうか。そう、一番大事なのは「PSGIは仕様。Plackは実装」ということなのでした。ここだけ把握していれば十分なので、PSGI/Plack の詳細に興味がない人はブラウザの Back ボタンを連打してください。 PSGIってなんだ?PSGIとは「ウェブアプリケーションとアプリケーションサーバーの間のプロトコルのこと」です。Perlの基的なデータ型であるArrayRef, HashRef やCodeRefを使ってHTTPリクエストとレスポンスを表現し

  • tokuhirom blog

    Amon2のアーキテクチャまずはこちらの図をごらんください。 Amon2 の構造は非常に単純であることをご理解いただけたかとおもいます。基的な構造はこれがすべてなのです。なにしろ、できるだけおぼえることがすくなくなるように意図して設計されておりますから、こういうシンプルな構造になるのもあたりまえといえましょう。 ここで特徴的なところが二点あります。Web Context Object が Context Object を継承しているところ、レスポンスオブジェクトが has-a 関係ではないところです。 Web Context Object が Context Object を継承しているのは、CLI でもなんとなくつかえるようにするためです。この工夫により CLI での開発が異常に楽になっています。このあたりについてはおって解説したいとおもっています。 レスポンスオブジェクトが has-

    tokuhirom blog
  • tokuhirom blog

    Amon2の利点 〜 軽量フレームワークAmon2入門 (1) 〜 というわけで、私が中心となり開発を進めているウェブアプリケーションフレームワークであるところのAmon2に関する連載企画です。続くかどうかはわかりませんけど! 対象読者はウェブアプリケーションの開発の基礎知識はあり、Perlプログラミングを一通り理解していることを前提としています。 Amon2とはAmon2は、ウェブアプリケーションフレームワークです。ウェブアプリケーションフレームワークというのは、ウェブアプリケーションを書くために楽をするためのライブラリと、それに関するツール一式のこととここでは定義しましょう。 そう、Amon2を使えば非常に楽に、高速に、ウェブアプリケーションを開発できてしまうのです。 なぜAmon2なのかしかしウェブアプリケーションフレームワークとひとくちにいっても、Perlだけでも、数え切れないほど

    tokuhirom blog
  • tokuhirom blog

    Amon2::Lite というモジュールを Amon2 に添付してみました。 まだ EXPERIMENTAL な実装なので今後かわる可能性もありますが、とりあえずリリースしました。 http://beta.metacpan.org/module/Amon2::Lite Sinatra や Mojolicious::Lite のような感じで、以下のように app.psgi をかくことができます。 use Amon2::Lite; get '/' => sub { my ($c) = @_; $c->render('index.tt'); }; __PACKAGE__->to_app(); __DATA__ @@ index.tt <!doctype html> <html> <body>Hello</body> </html> 通常の Amon2 の形式への移行も容易だとおもうので、おためし

    tokuhirom blog
  • HTML::Scrubber, HTML::StripScripts::Parser and HTML::Filter::Callbacks - tokuhirom's blog

    #!/usr/bin/perl use strict; use warnings; use utf8; use autodie; use 5.010000; use Benchmark ':all'; use HTML::StripScripts; use HTML::StripScripts::Parser; use HTML::Scrubber; use HTML::Filter::Callbacks; say "Perl $]"; for (qw( HTML::StripScripts HTML::StripScripts::Parser HTML::Filter::Callbacks HTML::Scrubber HTML::Parser )) { eval "use $_;1;" or die $@; printf "%s %s\n", $_, $_->VERSION; } sa

  • 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とかやったらいいんじゃないかみたいなことをいってみたりしま

  • autodie.pm/Fatal.pm is bit slow? - tokuhirom's blog

  • オブジェクトのメソッド一覧をえるの法 - tokuhirom's blog

    メソッドの一覧をえる場合には Class::Inspector をつかうと楽である。 use Class::Inspector; use Data::Dumper; say join "\n", @{Class::Inspector->methods("Data::Dumper", "public")}

  • オブジェクトからクラス名をえる方法 - tokuhirom's blog

    クラス名をえるには以下のようにする。ただしここで Scalar::Util は標準添付モジュールである(from 5.7.3)。 use Scalar::Util qw/blessed/; say blessed($obj);

    hisaichi5518
    hisaichi5518 2011/05/31
    ref($obj); じゃあだめなのかしら。
  • multitail 的なやつを perl で実装する - tokuhirom's blog

    こんなかんじでいいんじゃないでしょうか。 use strict; use warnings; use autodie ':all'; $|++; waitpid $_, 0 for map { fork || do { exec $_ } } ( map { "ssh $_ 'tail -F /service/webapp-*/log/main/current'" } qw/ap1 ap2/)

  • Sleep sort with AnyEvent - tokuhirom's blog

    http://dis.4chan.org/read/prog/1295544154 use strict; use warnings; use utf8; use 5.012000; use AE; my $cv = AE::cv(); sub f { my $t = shift; $cv->begin; my $timer; $timer = AE::timer( $t, 0, sub { $timer = $timer; say $t; $cv->end(); } ); } f($_) for @ARGV; $cv->recv();

  • Perl5 works on browser! - tokuhirom's blog

    I hacked jslinux, so I injected Perl5 binary to jslinux!! You can run Perl5 on browser!!!!!!!!!!!!!!!!!!!!!11111 Modify root.bin with CocProxyThis is a note for hacking jslinux. Very easy. https://gist.github.com/978211 use microperl;Perl5 provides micro version of perl. I used it. You should modify the Makefile.micro file for static linking, change the following line. -LIBS = -lm +LIBS = -lm -sta