タグ

ブックマーク / dayflower.hatenablog.com (22)

  • DBIC のスキーマをモデルクラスとして使ってみる - daily dayflower

    ドキュメントに書いてないので今後も使えるかわかんないけど、メモメモΦ 普通 DBIC で新しいレコードを挿入するには、 use strict; use warnings; package My::Schema::Artist; use base qw( DBIx::Class ); __PACKAGE__->load_components(qw( Core )); __PACKAGE__->table('artist'); __PACKAGE__->add_columns( id => { data_type => 'INTEGER', is_nullable => 0, is_auto_increment => 1, }, name => { data_type => 'VARCHAR', is_nullable => 0, }, ); __PACKAGE__->set_primary_

    DBIC のスキーマをモデルクラスとして使ってみる - daily dayflower
  • base (< 2.14) が $SIG{__DIE__} を破壊するのではまった - daily dayflower

    たとえば, #!/usr/bin/perl use strict; use warnings; local $SIG{__DIE__} = sub { warn "signal handled"; die $_[0]; }; require Foo; die "foo"; こんなスクリプトがあったとして,実行すると, signal handled at test.pl line 7. foo at test.pl line 12.みたいになる(それなりの package Foo があったとして)。 ところが,その package Foo の中身が package Foo; use strict; use warnings; use base qw( URI ); # なんでもよい のようになっていた場合。つまり,(パッケージ指定の)use base を使っているときに,実行すると, foo

    base (< 2.14) が $SIG{__DIE__} を破壊するのではまった - daily dayflower
  • worker MPM における mod_perl のグローバル変数 - daily dayflower

    イマイチ worker MPM で mod_perl が安全に使える自信がなかったので確かめてみました。題して「worker MPM でのグローバル変数は Thread Local Storage か Process Global Storage か?」 まず,prefork MPM での httpd.conf から書くと, ServerLimit 2 MaxClients 2 StartServers 2 MinSpareServers 1 MaxSpareServers 0 MaxRequestsPerChild 0こんな感じで,これと等価かな?と思う worker MPM の conf は ServerLimit 1 ThreadLimit 2 MaxClients 2 StartServers 1 MinSpareThreads 1 MaxSpareThreads 2 Thread

    worker MPM における mod_perl のグローバル変数 - daily dayflower
  • UUID::Object と UUID::Generator::PurePerl を書いた - daily dayflower

    UUIDPerl について - daily dayflower でうだうだ書いてたのですが,Pure Perl 実装の UUID generator が欲しくなったので書いてみました(各種 UUID モジュールのインタフェースを共通化するモジュールはまだ書いていません)。 CodeRepos に置いてあります。 UUID::Object http://svn.coderepos.org/share/lang/perl/UUID-Object/trunk/ UUID::Generator::PurePerl http://svn.coderepos.org/share/lang/perl/UUID-Generator-PurePerl/trunk/ この記事で反応?をみて,異論がなければ今月中には CPAN にあげようかなと思っています。 SYNOPSIS としては以下のような感じ。

    UUID::Object と UUID::Generator::PurePerl を書いた - daily dayflower
  • UUID と Perl について - daily dayflower

    UUID がどういうものであるか,とか UUID の表現形については省略します。 UUID - Wikipedia が参考になるかと。 UUID の仕様として RFC 4122 を参照しました*1。なのでより細かいことについては原文を参照してください。策定されるまでにいろいろ経緯があるのですが,そのへんは http://www.rfcnews.jp/archives/2005/07/rfc_4122uuidurn.html に譲ります。 UUID の構造 UUID の内部構造をおおまかに表すと以下のようになります。 variant 2 bit (3 bit) version 4 bit time 60 bit clock_seq 14 bit (13 bit) node 48 bit 実際には variant フィールドは clock_seq フィールドのオクテットの中に埋め込まれています

    UUID と Perl について - daily dayflower
  • use utf8 環境下で => オペレータの左辺が UTF8 flag on になってしまう - daily dayflower

    use strict; use warnings; sub Dump { @_ = map { sprintf "'%s'(%s)", $_, utf8::is_utf8($_) ? 'utf8' : 'bytes' } @_; print {*STDERR} join(q{, }, @_), "\n"; } no utf8; Dump( foo => 'bar' ); #=> 'foo'(bytes), 'bar'(bytes) no utf8; だもんで,両者とも bytes なのは,まぁあたりまえ。 ところが,これを use utf8; で動かすと…… use utf8; Dump( foo => 'bar' ); #=> 'foo'(utf8), 'bar'(bytes) foo の UTF8 flag が on になってる! use utf8 にしてたので,任意の文字列リテラルが

    use utf8 環境下で => オペレータの左辺が UTF8 flag on になってしまう - daily dayflower
  • perluniadvice - daily dayflower

    perluniadvice の前半部分を訳してみました。かなり意訳。 アドバイスと銘うってますが,中級者〜上級者向きです*1。 抄訳 perluniadvice Perl 付属のドキュメント perlunitut はもう読んだ?もしまだなら,そこから読み始めること :) perlunitut - perldoc.perl.org perlunifaq - perldoc.perl.org 以下にわたし(http://juerd.nl/)からのアドバイスの要約を挙げる。perlunitut には記述しなかった内容も含んでいる。 もしあなたが古い Perl を使っているのなら,最新版にアップグレードしよう もしあなたが古い CPAN モジュールを使っているのなら,最新版にアップグレードしよう 「外界」からやってくるデータはすべて decode() しよう 「外界」へ出力するデータはすべて en

    perluniadvice - daily dayflower
  • CPAN 最速検索の劣化コピー作ってみた - daily dayflower

    mala さんの CPAN 最速検索を便利に使わせてもらってるんですが,操作上ちょっと不満なところがいくつかありまして。 カーソルキーのオートリピートがきかない ホイールがきかない 候補の同時表示数が固定 Firefox だからかもしれないですけど。 んで改造しようと思ったんですがわたしにはちと難しそうだったのでいっそ自分なりに書いてみようと思いました。もちろんライブラリを使わずに書く技能はないので jQuery を使いました。 jQuery Mouse Wheel Extension 標準機能だとマウスホイールをトラップするのがたいへんそうだったのでプラグインも使いました。 mala さんのコードをチラ見すると http://cpan.ma.la/list からパッケージ一覧を一括取得 http://cpan.ma.la/dist からディストリビューション一覧を一括取得 してる感じでし

    CPAN 最速検索の劣化コピー作ってみた - daily dayflower
  • Perl XS メモ - typemap と MAGIC をからめて - daily dayflower

    id:tokuhirom さんが http://d.hatena.ne.jp/tokuhirom/20081209/1228829454 で下地をつくってくださったので(perl-users.jp むけまとめも期待してます),ちょっとアドバンスドな話題を。 例題 http://www.sra.co.jp/people/m-kasahr/eb/ http://www.sra.co.jp/people/m-kasahr/eb/ の Perl binding を開発するとしましょう。 http://www.sra.co.jp/people/m-kasahr/eb/ の使い方は,たとえば次のような感じです。 EB_Book *book_pointer; book_pointer = (EB_Book *) malloc(sizeof(EB_Book)); eb_initialize_book(bo

    Perl XS メモ - typemap と MAGIC をからめて - daily dayflower
  • __PACKAGE__ 頻出のコードがうざいとき - daily dayflower

    いちいち__PACKAGE__と書かなければならないのは面倒くさい! DBIx::Classのシンタクスシュガーがほしい - Islands in the byte stream はてブコメントの斜め上っぷりに激しくわらわせていただきました。 たしかにこんだけいっぱいでてくるとうっとおしいですよね。 こういう話題は好きなので冗談半分でわたしも考えてみました。 メソッドチェーンもどき案 Package::Fake::Method という名前で package Package::Fake::Method; sub Chain { my ($target) = @_; return bless { target => $target }, __PACKAGE__; } sub DESTROY {} sub AUTOLOAD { my $self = shift; my $method = our

    __PACKAGE__ 頻出のコードがうざいとき - daily dayflower
  • こんなテンプレートエンジンほしい - daily dayflower

    なぜ、いちいちエスケープを手動で指定しなければいけないのか 文脈によって、自動的にエスケープ手法は決定できるはず と思ってます。 テンプレートエンジン作りたい - kazuhoのメモ置き場 ですよねー。 で,そのへんを自然に取り込んでいるのが,おもに Python 方面で人気のある XML ベースのテンプレートシステムだと思います。 実際,Genshi のドキュメントにも The main feature is a template language that is smart about markup: unlike conventional template languages that only deal with bytes and (if you're lucky) characters, Genshi knows the difference between tags, att

    こんなテンプレートエンジンほしい - daily dayflower
  • 複数のテストサーバをリバースプロキシで集約 (3) - daily dayflower

    複数のテストサーバをリバースプロキシで集約 (1) - daily dayflower と 複数のテストサーバをリバースプロキシで集約 (2) - daily dayflower の続きです。 mod_rewrite の RewriteMap を使ってごにょごにょしましたが,なんともまどろっこしかったです。そもそも URI の書き換えに癖のある DSL を使う mod_rewrite を使わなきゃいけないということ自体がアレです。もっと手になじんだプログラミング言語で書ければロジックもすっきりするのに! というわけでモジュールを書いてみました(mod_proxy_mapper.c - daily dayflower)。 プロキシ専用ですが,サブリクエストを使ってプロキシ先を選定するモジュールです。 サブリクエストを使っているので,Apache でサポートしている言語ハンドラ……CGI*1

    複数のテストサーバをリバースプロキシで集約 (3) - daily dayflower
  • HTTP/1.1 の同時接続数について - daily dayflower

    はてなブックマーク - Fasterfoxが最強すぎる件 - 真性引き篭もり が盛り上がってたので,机上の話だけですが,いまさら書いてみます。 RFC (2616) での記述 Clients that use persistent connections SHOULD limit the number of simultaneous connections that they maintain to a given server. A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy. A proxy SHOULD use up to 2*N connections to another server or proxy, where N is the number

    HTTP/1.1 の同時接続数について - daily dayflower
    jazzanova
    jazzanova 2008/10/27
  • v8 (Google JavaScript Engine) を Apache のモジュールにしてみた - daily dayflower

    ちまたでは Google Chrome より v8 がアツいらしいので,やっつけでつくりました。Joke module です。 ふつーに CGI モジュール的につくってもよかったんですが,なんとなくテンプレート的にしました。ほんとうは mod_perl みたいにサーバのあらゆるところに hook をかけれるようにしたほうがおもしろいんでしょうけど。 <html> <head> <title><?js print('Hello, world!'); ?></title> </head> <body> <ul> <?js for (var i = 0; i < 10; i ++) { ?> <li><?js print(i + 1); ?></li> <?js } ?> </ul> </body> </html> UA のリクエストとか全然処理してない(エンジンにわたしていない)です。だから

    v8 (Google JavaScript Engine) を Apache のモジュールにしてみた - daily dayflower
    jazzanova
    jazzanova 2008/09/04
  • シェル機能をインプリメントしたいなら Term::ShellUI を使うと便利 - daily dayflower

    Web::Scraperのshellをhistoryから補完できるようにしてみました。 shell系は使わないと忘れてしまうので、historyがあったほうがいいかなと思って作ってみました。 ~/.scraperhistoryを作っておくと、historyが使えるようになります。 Web::Scraperのshellでhistory補完 - dann's blog - # おお,たしかに history があると便利。Term::ReadLine ってちょろっと設定するだけでヒストリ保存とかしてくれなかったっけ?と思ったら,別のモジュールでした。 以前*1も使いましたが,Term::ShellUI という CPAN モジュールを使うと高度なシェル機能を簡単にインプリメントすることができます。 特色は, 各コマンドへのサブルーチンリファレンスを指定するだけ エイリアスも指定できる desc

    シェル機能をインプリメントしたいなら Term::ShellUI を使うと便利 - daily dayflower
  • [http://search.cpan.org/perldoc?Web::Scraper:title=Web::Scraper] をつかってみた - daily dayflower

    ドキュメントねー,と思ったら Redirecting… みたいな素敵なチュートリアルがあったのでいまさらながら使えるようになりました。サンプル群も参考になりました。 はてブのホッテントリから,タイトル,URL,キーワード,タグを抜き出すのを書いてみました。わりと素直に書くとこんな感じ? use strict; use warnings; use Web::Scraper; use Encode (); #binmode \*STDOUT, ':utf8'; my $utf8 = Encode::find_encoding('utf8'); my $target = do { if (@ARGV && ! -f $ARGV[0]) { use URI; URI->new($ARGV[0]); } else { local $_ = do { local $/; <> }; $utf8->de

    [http://search.cpan.org/perldoc?Web::Scraper:title=Web::Scraper] をつかってみた - daily dayflower
  • chumby と日本語 - daily dayflower

    未整理なメモメモ。Flash の知識は貧弱なので間違ってるかも。 フォントについて Flash には下記の2種類のフォントがある。 デバイスフォント システム(OS 等)の持っているフォントを使う クロスプラットフォームで使えるように,いくつか predefined な名前がある(_sans, _serif, _typewriter, _ゴシック, _明朝, _等幅) 指定されたフォントがない場合,適当なシステムのフォントに fallback する chumby にどのようなシステムフォントが存在するのかは未調査 chumby に今後マルチリンガルなフォントを入れる予定,らしい 埋め込みフォント SWF ファイルに埋め込まれたフォント 埋め込むグリフ(文字)は限定できる たとえば「Hello World」という(スタティック)テキストを表示したいのなら「HWdelor」という7文字分のフォ

    chumby と日本語 - daily dayflower
  • 図解: Perl と Unicode 文字列 - daily dayflower

    id:tomi-ru さんが [http://e8y.net/mag/015-encode/:title] というとてもプラクティカルな [http://search.cpan.org/perldoc?Encode:title=Encode] 入門をお書きになったので,わたしも違う切り口で書いてみたくなりました。 いちおうの基礎(読み飛ばし可) 文字セット, キャラクタセット, 文字集合, 文字集合 - Wikipedia エンコーディング, 符号化方式, 文字符号化方式 - Wikipedia この2つは異なります。とくに知らなくても下記の文書を読むことはできますが,理解しているとためになります。くわしく知りたい人は自習してください。 文字セットの例 Unicode JIS X 0208 ひらがなとかカタカナとか漢字とか ASCII 文字 エンコーディングの例 UTF-8 ISO-202

    図解: Perl と Unicode 文字列 - daily dayflower
  • ファイルハンドルをめぐる冒険(ただしマニア向け) - daily dayflower

    以下は Perl 5.8.8 のソースを元に記述しました。Perl 5.10 でもそう変わってはいないと思いますが,結構内部が変更されているので違うかもしれません。大まかには同じだと思います。 イントロダクション Perl でのファイルハンドルは内部的には [http://search.cpan.org/perldoc?IO::Handle:title=IO::Handle] オブジェクトとして保持されています。そのような記述は perl5004delta くらいでしか見つかりませんでした。ラクダにもなかったような。 Internal change: FileHandle class based on IO::* classes File handles are now stored internally as type IO::Handle. The FileHandle module

    ファイルハンドルをめぐる冒険(ただしマニア向け) - daily dayflower
  • Perl の文字列の内側の記事の補足 - daily dayflower

    前回の記事が期せずしてホッテントリ入りしたので,ちょっとマズいと思い。 前回の記事が難しいと思ったとしても,それは恥ずべきことではありません。 あくまで Perl の内部構造の話ですから*1。 ただ,Perl で文字列を扱う/文字コードを扱うのは難しい,と思われるのは位ではないです。 というのは,当は,難しく考えなくでも動くように作られてますから。 拙い表現なもので上から目線に感じられたらごめんなさい。 もうちょっと詳しく書きます。 Perl の文字列の扱いは,なるべく後方互換性を確保しながら,進化してきました。 そのため,いろいろな思想,組み方でも動くようにできています。たとえば 文字コード,何それ,気にしない すべてバイナリ列だとみなす(上とほぼ同じ意味ですが) 内部コーディングを EUC-JP octet stream にする 内部コーディングを UTF-8 octet stre

    Perl の文字列の内側の記事の補足 - daily dayflower