end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

perl

ModPerl::MethodLookupによるmod_perl2のmethod調査

[error] [client 192.168.0.1] Can't locate object method "auth_name" via package "Apache2::RequestRec" at 〜 [error] [client 192.168.0.1] Can't locate object method "get" via package "APR::Table" at 〜「Apache2::RequestRecからauth_name()を…

モダンperlにおけるssh clientはNet::OpenSSH ?

「sshのパスフレーズを入力できるcpanモジュールがなさそう」という噂を聞き、調べてみたら、Net::OpenSSHにたどり着きました。http://search.cpan.org/perldoc?Net::OpenSSH確かにNet::OpenSSHでは、new()の際にpassphraseを指定できますが、気になるコメン…

Parse::RecDescentによるパーサ作成

http://search.cpan.org/perldoc?Parse::RecDescentcpanにあるドキュメントは長くて読むのが大変ですが、次のurl辺りで分かりやすくまとめられているので、参考にさせていただくと、よさそう。http://d.hatena.ne.jp/gnjdg6457/20110526/p1 http://rainyday.…

CGI::Sessionによるセッション管理

簡単なセッション管理を実装することになり、perlのCGI::Sessionを使用しました。CGI::Sessionでは、セッション情報をcookieやmysqlへ登録できるようですが、私の場合、ファイルとしてセッション情報を保持したので、そのsrcの一部を記載しておきます。http:…

Unicode::Normalizeによる文字正規化

http://d.hatena.ne.jp/end0tknr/20100613/1276427626以前、書いたmysqlのcollateに関連するかもしれませんが、Unicode::Normalize というperl moduleを見かけました。http://d.hatena.ne.jp/dayflower/20060605/1149478073「①→1」や「㈱→(株)」ができるよう…

Encode.pm または ord() でunicodeの文字参照を取得

unpack()を使わなくても、次のような感じで文字コードを参照できるみたい。 ※他にも方法はあるようですので、「perl 文字参照」でググりましょう #!/usr/local/bin/perl use strict; use utf8; use Encode qw/encode decode :fallbacks/; main(); sub main {…

perlで利用できるグラフ生成ツールを調べてみた

2013/6/23追記 www.fusioncharts.com によるグラフ・ライブラリの比較表を追加 http://www.fusioncharts.com/javascript-charting-comparison/ これまで、グラフを自動生成する場合、GD::Graph か FusionChartsFree しか使ったとがありませんでした。GD::Gra…

Net::Dropbox::API

http://search.cpan.org/dist/Net-Dropbox-API/あるもんですね。 試してもいないし、ドキュメントもまともに読んでいませんが、とりあえず、メモ。

Scrappy - Powerful Web Spidering, Scraping, Creeping Crawling Framework

http://search.cpan.org/perldoc?Scrappywebに対してクローラーやスクレイピング等々、いろんなことができるようです。 スクレイピングってWeb::Scraperみたいなんて思っていたら、Web::Scraperは、Dependencies に含まれていました。(そりゃそうかも知れま…

perl実装されたジョブキューサーバは Gearman , TheSchwartz, Q4M 等

Q4M Queue Ffor Mysql の略で、例えば、mixiで使用されているみたいです。 http://alpha.mixi.co.jp/blog/?p=2453 Gearman , TheSchwartz http://d.hatena.ne.jp/tokuhirom/20071017/1192589429 ↑このurlで分かりやすく解説されています。 gearman はリアル…

Spreadsheet::WriteExcelのセル内改行にはset_align('vjustify') or set_text_wrap()

改行を含む文字列を単純にwrite()やmerge_range()で出力しようとしましたが、改行しない状態でexcelファイルが生成されました。http://search.cpan.org/perldoc?Spreadsheet::WriteExcelどうやら、Spreadsheet::WriteExcelでセル内改行するには、set_align('…

Time::Duration::ja で human-readable な経過時間を表示

先程のエントリに続き、またも「perl cpanモジュールガイド」から。viewvcやtracでは、commitからの経過時間を?日前や?ヶ月前のように表示しますが、 perlでは、Time::Duration::ja が、これを実現してくれるようです。 tracの例 perl src #!/usr/local/bin/…

Number::Format で数値を human-readable に表示

「perl cpanモジュールガイド」を読んだら、Number::Formatと興味深気なmoduleを見かけました。lsコマンドでは、 -h (human-readable)スイッチで、K,M,G等 file sizeを人が読みやすい(分かりやすい?)感じに表示してくれます。 $ ls -lh total 3.1M drwxr-xr-…

perl 5.12.3でSpreadsheet::WriteExcelによるcgi出力で失敗

colinux環境を壊したことをきっかけに、perl 5.10.?->perl 5.12.3へ移行しましたが、どうやらperl 5.12.3では Spreadsheet::WriteExcelによるcgi出力で失敗するケースがあるようです。※以前、記載している次のエントリも合わせてご覧下さい。 http://d.haten…

Spreadsheet::WriteExcel で数値に\(円)マーク付きの通貨形式で表示

Spreadsheet::WriteExcel では、set_num_format() を使って数値の表示形式を指定できます。http://search.cpan.org/perldoc?Spreadsheet::WriteExcel今回、「123456」->「\123,456」のように¥マーク付きの通貨形式で表示したいと思い、Spreadsheet::WriteEx…

perlでUUIDを扱う場合、OSSP::uuid > Data::UUID ?

とても分かりやすく、まとめられている。http://d.hatena.ne.jp/dayflower/20090306/1236314881これまでは、もっぱら Data::UUID を使用していましたが、OSSP::uuid を試したくなりました。

perlによる英語の自然言語処理

とても、分かりやすい。 http://googlewhacks.blogspot.com/2007/12/pittsburgh-perl-workshop1natural.html感心したものを写経しておきますが、英語かぁ。使うケースは少ないかも。 module note Lingua::EN::Conjugate 主語、動詞、時制を入力すると動詞の…

CGI.pmって、標準モジュールでなくなったの?

v.5.12.3のmodule一覧を見て、驚いた。 http://search.cpan.org/~rjbs/perl-5.12.3/私の環境にあるv5.10.1 では、corelistで標準moduleとして表示されますが... $ /usr/local/bin/corelist CGI CGI was first released with perl 5.004そもそも、私がcorelis…

LWP::UserAgentでリダイレクト先のコンテンツを取得

$res->is_redirect を使って、次のように書くみたい。 #!/usr/local/bin/perl use strict; use warnings; use utf8; use HTTP::Request::Common; use LWP::UserAgent; #↓今回の件とは関係ありませんが... my $LWP_OPT = {file =>"cookies.txt", autosave=>1,…

要素数を指定して、配列を作成

「x」演算子を使用して、↓こう書きます。 my @list = ('?') x 10; 私の場合、↓こんな感じで、sqlの引数指定に使用しています my @args = ('?') x $csv->fields(); my $args_str = join(',',@args); my $sql =<

perlで日付を扱うなら、DateTime::Format::*がよさそう

分かりやすく、まとめられています。CPAN DateTime::Formatまとめメモ http://ido.nu/kuma/2007/05/09/datetimeformat-summary/

CGI::Cookieって、CGI.pmに含まれているんですね

http://search.cpan.org/perldoc?CGI::Cookieそりゃそうか use CGI::Cookie; my %cookies = CGI::Cookie->parse($ENV{HTTP_COOKIE}); my $c_val = $cookies{c_atri}->value; expires は、-1d や +3M を指定できますが、詳しくはCGI.pmのドキュメントをご覧下…

CGI.pmで cgiのquery paramをparse

CGI->new() のように引数なしでnewするケースが殆どだと思いますが、CGI->new( "query param 形式な文字列" ) で利用すると、cgiの引数(query param)を簡単にパースできます。 ※しかもurl decode付き ※apacheのaccess_logをparseする際にも使えそう #!/usr/l…

Spreadsheet::WriteExcelで積み上げ棒グラフを表示

2013/11/23追記 当時は、種類を混合したグラフ作成に苦労しましたが、Spreadsheet::WriteExcel の後継である Excel::Writer::XLSX なら add_chart() に subtypeを指定できるので、混合グラフも問題なく作成できそうです。 http://search.cpan.org/perldoc?Ex…

「ブックの保護」なexcelでは、Spreadsheet::ParseExcelがparse()失敗?

Spreadsheet::ParseExcelを使ってexcelファイルをparse仕様としたところ、エラーとなったので、調べてみました。私の書いたsrc. my $parser = Spreadsheet::ParseExcel->new(); my $wbook = $parser->parse($xls_path); unless ( $wbook ) { my $msg = join(…

perlでファイル探索なら、File::FindよりFile::Find::Ruleかも

http://perl-mongers.org/2008/05/opendirglobfilefindrule.htmlこれまでは、ファイルを探す際、File::Findを使って再帰的に処理していましたが、 glob()、またはFile::Find::Ruleを使うといいかもhttp://search.cpan.org/perldoc?File::Find::Rule以前、フ…

メール送信はNet::SMTP→Email::Senderに乗り換えるべき?

私の場合、perlでメール送信する場合、Net::SMTPを使用して次のようなsrcを書いていました。 use Encode; use Net::SMTP; my $CONF = TEST::Config->get_config(); sub send_mail { my ($self,$subject,$message,$mailto) = @_; #user登録がない場合、送信は…

Becky! ver.2.52からのメールはMIME::Parser->parse_data()で失敗

thunderbirdのメールはMIME::Parser->parse_data()できるのにBecky! ver.2.52はできないので調べてみたら、MIME::Parser がcontent headerのparseに失敗しているようでした。 thunderbirdとBecky! ver.2.52のcontent header まず、thunderbirdとBecky! ver.2…

Devel::Traceによるトレース(デバッグ)表示

perlのcliなアプリをデバッグするなら、Devel::Trace を使うといいかもしれません。 $ perl -d:Trace ./test.pl ./tool/test.pl:10: main(); ./tool/test.pl:14: my $dbh = Baitai::DBI->connect(); /app/baitai/www/tool/../lib/Baitai/DBI.pm:11: my ($cla…

Net::SMTPでsmtpサーバにauthできなければ、Authen::SASLが必要かも

Net::SMTPでメール送信しようとしたら、smtpサーバへのloginに失敗するので、いろいろと調べてみたら、Authen::SASLのinstallで解消しました。 というメモです。 修正前src #!/usr/local/bin/perl use strict; use utf8; use Encode; use MIME::Base64; use …