2010-01-01から1年間の記事一覧

utf8フラグがよくわかっていない件の回答

http://d.hatena.ne.jp/tori243/20100510/1273497722 不完全だけどこれの回答。 decodeした時に結果がころころ変わる件の原因 自分のコメント内容を再検証してみると… 1.フラグOFFした後。 文字コード→utf8とあるけど、そもそもこれが間違い! 「latin-1」で…

FizzBuzzでテスト駆動開発をしてみた

http://gihyo.jp/magazine/wdpress/archive/2010/vol56 Web+DB Press vol56で「RSpecを用いたテスト駆動開発」という記事がありました。 いままでTDDは興味あったけどやったことなかったし せっかくなのでPerlで同じことしてみました。 ほとんどが記事を元に…

plackupで--daemonizeオプションをつけた時のアクセスログ

plackup -s Starman --daemonize hello.psgiこんな感じでStarman+daemonizeで起動したときにアクセスログがどこにも出ない*1。 fujiwaraさんにPlack::Middleware::AccessLogはどう?とアドバイス頂いたので使ってみた。 use Log::Dispatch; use Plack::Build…

utf8フラグがよくわかっていない件

自分が文字コードについてわかっていないっぽい。 とあるサイト*1でスクレイピング*2した結果をほげほげしようとしたら、 以下のような感じになった。 スクリプト # テストの一部 { use Data::Dumper; # 最初のスクレイピング文字列 diag "str :",Dumper($rs…

podをサイト構造に変換するモジュール ※動画付き

twitterで「podをサイト構造に変換したいよー」とつぶやいたら Pod::Siteを教えていただきました。 lestrratさんありがとうございました。 Pod::Site インストールするとpodsiteというスクリプトがついてくるので これを実行するだけでサイトが構築される。…

カジュアルPerl #02 に参加してきました

春のPerlフレッシュマンアワーということでしたが、 全然フレッシュじゃないおっさんが行ってきました。 新宿で迷ったせいで10分ほど遅れたため、オープニングトークは聞けませんでした>< ほとんどメモは取ってなくて聞いていただけなので 間違っているか…

DBD::mysqlでコンフィグを指定する方法

mysqlを別バージョンの別ポートで複数立ち上げているときに、 portだけ指定してもうまく接続できなかった。 my $dsn = "DBI:mysql:database=$database;host=$hostname;port=$port"; my $dbh = DBI->connect($dsn, $user, $password); mysql_read_default_fil…

psgiファイルに __DATA__ があるとうまく動かない?→動きます

※2010/4/6 追記 このエントリは間違いです。動きます のかな? plackupコマンドでうまく表示されなかった。 Mojolicious::Liteのサンプルってほとんど__DATA__使ってるからハマってしまった。 以下のように、テンプレートを別ファイルにする必要あり。 また…

Mojolicious::Liteでセッション変数持ち回す方法

stashかと思ったら違った。 flashを使う。 use Mojolicious::Lite; get '/' => sub { my $self = shift; $self->flash(hogehoge => 'higiiiiiiiiii!!'); $self->redirect_to('/hoge'); }; get '/hoge' => sub { my $self = shift; $self->render_text('Yea b…

ハッシュが空かどうかを判定する

if (!%hash){ # ハッシュが空 }

文字コードを自動判別するモジュール Unicode::Japanese

Unicode::Japanese 文字コードを自動判別するのに Encode::Guess+Jcodeで行っていたのですが、 このモジュール使うとよさげなロジックで判別してくれそう。 こんな感じかな。 use Unicode::Japanese; my $s = Unicode::Japanese->new(); my $code = $s->get…

Catalyst::Plugin::AutoCRUDを試してみた

Catalystでcrud提供するモジュール何があるかなーと探してた。 http://dev.catalystframework.org/wiki/crudこのページのモジュール名から、お手軽に実装出来そうなCatalyst::Plugin::AutoCRUDを試してみた。 インストール cpan Catalyst::Plugin::AutoCRUD…

prototype mismatchが出まくる件

ModPerl::PerlRunとして実行しているcgiスクリプトがあるのですが、 こないだのDBD::Pg非同期対応したらprototype mismatchがエラーログにがしがし出まくっていた。*1 Prototype mismatch: sub ModPerl::ROOT::ModPerl::PerlRun::hoge_2excgi::PG_OLDQUERY_C…

mod_perlでメモリに乗っかってるperlモジュールを確認する

方法を教えていただきました。 以下を適当なcgiから実行すればおk*1 #!/usr/bin/perl use CGI; my $cgi = new CGI; print $cgi->header; print Dumper(\%INC); すばらしす *1:ModPerl::Registryで動くcgi

ミリ秒単位のsleepについて

ミリ秒単位のsleepは 4引数select を使う方法と Time::HiRes を使う方法があるけど、Time::HiRes::sleepの方がいいのかな? なぜなら、selectを使ったら Perl::Criticで怒られたから。 t/perlcritic.t ......... 15/20 # Failed test 'Test::Perl::Critic f…

非同期クエリ考察結果

※2010/03/05追記 ちょっとスクリプト変えた id:sfujiwaraさんの記事を参考にDBD::Pgによる投げっぱなし非同期クエリを試してみた。 http://d.hatena.ne.jp/sfujiwara/20100225/1267075758 いろいろ試してみておおむね問題ないが、 SQLで発生した内部エラーは…

utf8フラグを一気に落とすモジュール Unicode::RecursiveDowngrad

http://blog.livedoor.jp/nipotan/archives/50228106.html おおー ハッシュや配列のutf8フラグを一括で落としたいときはこれを使うといいらしい。 さっきのWeb::Scraperテストコードで試してみる。 落とす前 use Web::Scraper; use LWP::Simple; use Data::…

Web::ScraperでURIを使うのとテキストを突っ込むのとでは結果が異なる

テスト用サイト 価格.comのゲーム本体カテゴリから、 「売れ筋ランキング」「注目ランキング」「満足度ランキング」の2位の情報だけ スクレイピングして持ってくる http://kakaku.com/game/game-console/ スクレイピング1:LWPのgetでテキスト突っ込む use…

スキーマクラスロード時に「Couldn't instantiate component」が出る

こんなの。 Couldn't load class (アプリケーション名) because: Couldn't instantiate component "モデルモジュール名”モデルにDBICとか使ってる時に発生。以下の項目をチェックしてみる コンフィグの設定を間違っていないか コンフィグのschema_classを間…

URIパースモジュールのベンチマーク

バッチ処理でURIのパースにURIモジュール使ってたのですが、 プロファイルとってみたらこいつが結構ボトルネックになっていたので 別のモジュールを探していたらURI::Splitというのがあったのでベンチマークとってみた。*1 ベンチマークスクリプト use stric…

perlでインタラクティブシェル

perl版irb。 perlshというのもあるが、 Devel::REPLの方が良さげ。 ただし、cpanで直接インストールしようと思ったら Data::Dump::Streamerでtestが通らない。 こちらを参照すると、 ロケールの問題らしいのでforceしちゃいました。 cpan -f Data::Dump::Str…

置換後の文字列を別変数に格納する

my $var = "hogehoge123"; $var =~ s/hoge/fuga/g; このようにPerlの一般的な置換を行うと変数そのものを置換する。 しかし、置換後の結果を別変数に格納したい場合もある。 その場合は以下のように記述する (my $tmp_var = $var) =~ s/hoge/fuga/g;

Lingua::JA::Regular::Unicode 半角/全角変換モジュール

Lingua::JA::Regular::Unicodeアルファベット/カタカナの半角⇔全角処理を行う。 平仮名⇔カタカナ変換も可能。 以下pod引用。 use Lingua::JA::Regular::Unicode qw/regular/; alnum_z2h("A1"); # => "A1" hiragana2katakana("ほげ"); # => "ホゲ" space_z…

perl勉強メモはじめます

とりあえず適当に自分の勉強メモを記していく予定です。 たぶんまとまらない