タグ

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

  • Shipped File::Zglob 0.01 - tokuhirom's blog

    http://github.com/tokuhirom/File-Zglob File::Find::Rule とかまあ結構なんですけども、 File::Find::Rule->file->in('lib')->name('*.pm')っていうフォームはなかなかぱっと思いだしづらいです。ユーザーフレンドリーじゃないんですね。 シェルだったら lib/**/*.pm ってうったらいっぱつででてくるじゃないですか。そういう風にうちたいですよ。 というわけでつくってみました。 File::Zglob です。 use File::Zglob; my @files = zglob("lib/**/*.pm");という風にうつだけでいいんです。このインターフェースならわすれないでしょう。shell で普段からうってますものね。 ちょっとしたスクリプトとかで超便利だとおもうので、ぜひつかってみてください

  • ゆるふわ 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 を採用

  • Released App::watcher on CPAN - tokuhirom's blog

    https://metacpan.org/module/watcher watcher --dir=./lib/ -- worker.plYou can restart job worker process by watching directory. YAY!

  • Yet another regexp stringification issue. - tokuhirom's blog

    https://github.com/tokuhirom/p5-lingua-ja-kana/commit/43fe5a964c933b3a64373a60593450a4a231df8e Lingua::JA::Kana doesn't work on perl 5.14+. Since it depended on regexp stringification. This code is ugly. substr( $str, 0, 8, '' ); # remove '(?-xism:' substr( $str, -1, 1, '' ); # and ')';Perl 5.9.5+ provides re::regexp_pattern method for this purpose. I think this code is better to fix issue. if ($]

  • How can I get a latest release information from metacpan API? - tokuhirom's blog

    for id:punitan #!/usr/bin/perl use strict; use warnings; use utf8; use 5.010000; use JSON; use LWP::UserAgent; my $ua = LWP::UserAgent->new(); my $res = $ua->post( 'http://api.metacpan.org/v0/release/_search', Content => encode_json( { size => 20, from => 0, sort => [ { 'date' => { order => "desc" } } ], query => { match_all => {} }, fields => [ qw( author version distribution download_url date) ]

  • Meta CPAN API Explorer - tokuhirom's blog

    http://943d31f8.dotcloud.com/ This is a metacpan API explorer. So you can trying to call metacpan api very easily. Enjoy!

  • Amon2::DBI からはじめるデータベースアプリケーション 〜 軽量フレームワークAmon2入門 (5) 〜 - tokuhirom's blog

    はい! というわけで3連休あけですね。 Ruby 会議にいったり、Android なんとかにいったり、リア充生活をおくったりと、各自たのしい3連休をすごされたことかとおもいます。 さて、連休あけの今日は、かるく Amon2::DBI について解説をしてきましょう。 Amon2::DBI は、DBI の薄いラッパーで「素の DBI だとちょっと不便だな」というところにピリリときいてくる山椒のような存在です(ちかくのチンマーハンは山椒がきいてなさすぎるので、もうちょいきいてるといいなとおもいます)。非常にうすいラッパーだし、コードベース自体も非常に簡潔なので、ひととおりよんでからつかうといいかとおもいます。 DBI には子クラスを設定できる機能があって、Amon2ではそれをつかって拡張しています。詳細については DBI の Subclassing the DBI の項目をよんでください。 Am

  • 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リクエストとレスポンスを表現し

    hide_o_55
    hide_o_55 2011/07/14
    "HTTP::Engine は二階の窓から捨てさられており" www
  • 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とかやったらいいんじゃないかみたいなことをいってみたりしま

  • yet another cpanf - tokuhirom's blog

    I wrote cpanf command clone using metacpan API. #!/usr/bin/env perl use strict; use warnings; use 5.008005; use JSON; use LWP::UserAgent; use Pod::Usage; our $VERSION = '0.01'; my $module = pop @ARGV || pod2usage(); # last one is module name my $ua = LWP::UserAgent->new(agent => "$0/$VERSION"); my $release = get_json("http://api.beta.metacpan.org/module/$module", 'distribution'); my $url = get_jso

  • 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

    hide_o_55
    hide_o_55 2011/05/19
    Cool!!
  • Newmo を dotcloud にうつした記録 - tokuhirom's blog

    mysql をつかう際には DBD::mysql への依存を Makefile.PL にかけばすぐにつかえるようになる。create table するときに charset=utf8 を明示的に指定しないと latin1 になるので注意。 smtp の設定を各インスタンスにたいしておこなう場合、service の deploy 時にしか設定はおこなえないので、あとから設定しなおす場合には destroy+deploy するべしとのこと(miyagawaさんじょうほう) cron の設定は、postinstall script でおこなうのが簡単。まあ以下のようなかんじで処理している。 #!/bin/sh crontab - < crontab echo installed crontabcrontab ファイルの中身は以下のようにしている。PATH とかの指定は shell でつかっている

  • dotcloud で Amon2 をつかう! - tokuhirom's blog

    Perl5 の PSGI アプリケーションが死ぬほど簡単につかえる dotcloud の beta 版がリリースされ、一部の Perl monger に invitation がばらまかれているとともに、id:miyagawa さんがdotcloud に join したというニュースもあり、ゴールデンウィークまっただなかの日Perl Mongers のあいだでは空前のコンフィブームとなっています。 というわけで、DotCloud で hello world をやる方法。 sudo easy_install dotcloud dotcloud create tokuhirom dotcloud deploy --type perl tokuhirom.hello mkdir hello cd hello echo "sub {[ 200, [ 'Content-Type' => 'te

  • Perl5 用の Rake っぽいのできたよー - tokuhirom's blog

    http://frepan.org/~tokuhirom/Daiku-0.01/ Rake みたいなの、Perl にも欲しいね、って5年ぐらい前からおもってたけどいいのができたって噂をきかないので自分でかいた。 #! perl use Daiku; use autodie ':all'; task 'all' => 'foo'; file 'foo' => 'foo.o' => sub { system "gcc -c foo foo.o"; }; rule '.o' => '.c' => sub { system "gcc -c foo.o foo.c"; }; build shift @ARGV || 'all'; こういうかんじでつかえる。簡単でしょ。 以下設計のメモ。 基的には Rake とインターフェイスをあわせめでつくってる。巨人の肩に云々。 DSL を DSL としてゴリゴ