perl

Catalyst/Tripletail Testing

Catalyst::Manual::Tutorial::Testing - Catalyst Tutorial - Part 7: Testing - metacpan.org Test::WWW::Mechanizeを使ったテスト。CatalystはTest::WWW::Mechanize::Catalystを使用する。 Catalyst http://trac.takatoshi.dyndns.org/trac.cgi/changeset/…

Catalyst/Tripletail Debugging

Catalyst::Manual::Tutorial::Debugging - Catalyst Tutorial - Part 6: Debugging - metacpan.org デバッグ方法について。 Catalystはprintとかlogとかを使う、いわゆるprintデバッグと言われるもの以外にも、Perlのデバッガを使えます。テスト用サーバーが…

Catalyst::Manual::Tutorial::Authenticationと同じことをTripletailでやってみたよ

これ Catalyst::Manual::Tutorial::Basicsと同じことをTripletailを使ってやったのでその感想とか - libnitsuji.so の続きです。こっそりと続いています。Catalyst::Manual::Tutorial::Authentication - Catalyst Tutorial - Part 4: Authentication - metac…

Catalyst::Manual::Tutorial::Basicsと同じことをTripletailを使ってやったのでその感想とか

Catalyst::Manual::Tutorial::CatalystBasics - Catalyst Tutorial - Part 2: Catalyst Application Development Basics - metacpan.orgチュートリアルの内容は、Catalystのプロジェクトを自動生成して、SQLiteにデータベースを作って、DBIx::Classを使った…

ithreadsとithreads::shared

ithreadsはinterpreter threadsのことでPerl 5.6で導入された。当初はWindowsでfork()をサポートするために用意されたものだったが今では(Perl 5.8から?) use threads;ってすると使える。 これは従来のPerlのスレッドと違って、デフォルトではスレッド間で…

(便乗ネタ)テンプレートエンジンのベンチマークをTripletailでやってみた。

ClearSilver の Perl バインディングを使う(Perlのテンプレートエンジンのベンチマーク) - spiritlooseのはてなダイアリー でClearSilver、Template-Toolkit、HTML::Templateのベンチマークを取っているのを見てTripletail::Templateも一緒にやってみた。 コ…

ファイルアップロードの進捗を表示するやつ

フォームでファイル選択してサブミットしてサーバーにファイルを送信している間に(レスポンスを待っている間に)、裏で通信してアップロードの進捗を取得して表示するというやつ。プログレスバーとか出すやつ。カッコいいなーいつかやりてーなーと思ってい…

正規表現の | はパイプではない

"|"(パイプ)を使った正規表現はめちゃくちゃ遅いから使わないように、ということです。確かにベンチマークを取ると32倍速いです。 http://qootas.org/blog/archives/2006/06/perl_regex_perf.html 初めて知った。 でも。 Perlの正規表現で /abc|def/とすると…

system()

なんかの本にも注意書きが書いてあった気がするんだけどちょっとはまったのでメモ。 perlのsystem()関数は引数の取り方によってビミョーに動作の仕方が変わる。 If there is more than one argument in LIST, or if LIST is an array with more than one val…

NEXTとSUPERの挙動について

(昨日の続き) NEXTを試してたら頭が混乱してきた - libnitsuji.so で試してわかったこと。SUPERとの対比で。 クラス階層がこうなっていて、 A / E C ? / D(?は本当はバックスラッシュです。なぜかはてなになるんだよな) Dを基点にメソッドをコールしてクラ…

NEXTを試してたら頭が混乱してきた

PerlのコアモジュールにNEXTというのがあります。 NEXT - perldoc.perl.org NEXT - Provide a pseudo-class NEXT (et al) that allows method redispatch - metacpan.org とりあえずSYNOPSISのコードを実行してみたのがことの始まりでした。 環境はPowerBook…

Devel::Cover

カバレッジ解析。 powerbook:~/projects/PerlTesting/Queue/trunk takatoshi$ HARNESS_PERL_SWITCHES=-MDevel::Cover prove -lr t/queue..........ok t/queue_class....ok All tests successful. Files=2, Tests=23, 8 wallclock secs ( 6.25 cusr + 0.41 cs…

Perlでのモジュールテストについて

なんか(ダラダラと)長くなるんでさわりだけ先に書く。 $ prove -lr - Test::SimpleとかTest::Moreとかを使ってテストを書いて実行する。h2xsとかModule::Starterとかは使わない。make testも使わない。 例えばQueueというクラスがあるとする。 package Que…

do..whileはループじゃない

だからnext, last, redoは使えません。 (ループじゃないってのは言い過ぎ) do BLOCK does not count as a loop, so the loop control statements next, last, or redo cannot be used to leave or restart the block. See perlsyn for alternative strateg…

use List::Util qw( first);

Perl 5.8からList::Utilというのが標準モジュールになった。 ということをPerl Best Practicesを読んでて知った。 忘れないようにメモ。 List::Utilはデフォルトでは何もエクスポートしないのでuseするときに指定する必要があります。 たとえばfirstというの…

Crypt::SSLeayを入れてたら、

こんなのが出た。 SSLeay.xs:252: 警告: 互換性のないポインタ型からの引数 2 個の `SSL_set_info_callback' を渡しますです ぷっ。 ってかテスト通んないし。追記:force installした。

perltidyを使ってみました

perltidyってのは整形ツールです。インデントとか改行とかカッコの位置とかを調整してくれる。 コードが変にならないのかすごく不安なんだけど。とりあえず使ってみる。常用するかどうかはわかんないけど。 インストールはこうする。 $ sudo apt-get install…

Chapter 1. Introducing CGI and mod_perl を読んで

Practical Mod-Perlという本があるのだけれど、その内容はオープンソースになっている。 mod_perlはいつかちゃんと勉強しなきゃと思っていたので読みはじめました。 んで、やっぱり書かないと覚えないし身に付かないし。 - CGIの歴史 まあ、これはね。問題な…

perl5.8.8

perlをインストールし直しました。バージョンは5.8.8です。 Mac OS Xにはもともとperlが入ってて、さらに自分でビルドしたやつもあったんだけど。 まずは以前にビルドした5.8.7を削除 sudo rm -rf /usr/local/lib/perl5/perl5.8.7 sudo rm -rf /usr/local/li…

mod_perlについて

まずはここを読む。 mod_perlとは - はてなキーワード 次に自分の言葉でまとめる。 mod_perlを使うとApacheがHTTPリクエストを処理するいろんなフェーズでPerlを使ってなんかの処理ができる。こういうのを「フックする」とか言う。ApacheにはAPIがあって、mo…

last.fmのrecent tracksを保存して出力する

いきなりやる気が出てきたのでプログラムを書いた。よかった。 サイドバーを追加したのでなんか表示したいよねということで最近聞いた音楽を表示することに。もうみんなが2,3年前にやったりして今はもう誰もやらないんじゃないかという感じだけど。というか…

YAMLをロードするコード

YAMLって「わいえーえむえる」でしょうか?それとも「やむる」でしょうか? 会社の同僚は後者、俺は前者でした。 で、YAMLをロードするのは簡単なのですが、やっぱり人のコードを読むのは参考になります。なりすぎます。 とりあえずこのやりかたを憶えておけ…

実用Perlプログラミング 第2版

横浜に行ったのでいつものようにルミネの有隣堂に行ったら売っていたので迷わず購入。 テンプレート、データベース、テスト辺りに期待。 著者はMaypoleを作った人なんですね。実用 Perlプログラミング 第2版作者: Simon Cozens,菅野良二出版社/メーカー: オ…

column foo => type is 'text'ってなんだ

そういえばJiftyというPerlのフレームワークがあったなと思い、 http://www.tcool.org/jifty/Tutorial.html を読んでいたら、モデルクラスでデータ構造を定義するときにこんな構文を使っていた。 column title => type is 'text', label is 'Title', default…

Catalyst, Sledge, Maypole

どれもPerlのフレームワークです。 Maypoleのソースを読んで、少し模写して、なんとなく流れがわかってきたところで、他のフレームワークがどうなってるのか気になってきました。で、すぐに思いつくところとしてCatalystとSledgeのソースを読んでみました。…

useとかimportとかについて

Maypoleのソースコードを読んでいて、どうしてもわからないことがあったのだけれどやっとわかってきたのでメモ。 Maypoleでアプリケーションを書くときはMaypole::Applicationをuseして、 package MyApp; use Maypole::Application; MyApp->setup();とかしま…

Catalyst入門

基本が大事!ということで、Catalystに再入門してみた。 Catalyst::Manual::Intro - Introduction to Catalyst - metacpan.org というイントロがあるので、それをまとめながら訳す。訳しながらまとめる。 という作業をやっている途中で http://www.tcool.org…

Jiftyというフレームワーク

PerlのWebアプリケーションフレームワークでJiftyというのがあるようです。だーいぶRuby on Railsを意識している感じ。 "Jifty" is pronounced JIFF-tee と書いてあったので、読み方は「じふてぃー」でいいのでしょうか。 Jifty - an application framework …

PowerbookにPerlをインストール

はじめてPerlをビルドした。 バージョンは5.8.7です。 Perlはもともと入ってるんだけど、@INCが @INC: /System/Library/Perl/5.8.6/darwin-thread-multi-2level /System/Library/Perl/5.8.6 /Library/Perl/5.8.6/darwin-thread-multi-2level /Library/Perl/5…

プログラミングPerl Volume 1を読み終えた

プログラミングPerl - libnitsuji.so で「ついに買いました」って書いているので、3ヶ月くらいということになる。 毎日寝る前とか休みの日とかにこつこつと読んでいました。内容的にはだいたい今までに勉強したことなんだけれど、Perlを作った人が書いている…