end0tknr's kipple - web写経開発

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

perl

Amon2のO/RマッパーをTeng→DBIx::Classに変更

※一連のAmon2関連の写経は、これで、一旦、終了Amon2のデフォルトのorマッパーはTengですが、試しに DBIx::Class (dbic)に変更。 http://amon.64p.org/database.html STEP1 - dbicのスキーマクラスを作成 DBIx::Class::Schema::LoaderによるDBIC用スキーマ自…

DBIx::Class::Schema::LoaderによるDBIC用スキーマ自動作成

DBIx::Class::Schema::Loaderの手動スキーマ生成、初心者向けチュートリアル - Yet Another Hackadelic まぁ、↑こちらに記載されている通りですが、そのままではtableやcolumnに登録した日本語が文字化けしてしまうので、make_schema_at() のDB接続オプショ…

Amon2で、mysql に Amon2::DBI 接続する

以下は、ORマッパーを使用しないケースです 設定ファイル - development.pl use File::Spec; use File::Basename qw(dirname); my $basedir = File::Spec->rel2abs(File::Spec->catdir(dirname(__FILE__), '..')); my $dbpath = File::Spec->catfile($basedi…

Amon2によるバッチプログラム(CLI)の作成

更に先程のエントリの続きです http://amon.64p.org/cli.html ↑こちらに記載されている通りですけど、bootstrap() でコンテキストを取得できるので、後は、DB処理等をお好きに #!/usr/local/bin/perl use strict; use FindBin; use File::Spec; use lib File…

Parallel::ForkManager 等で並列処理すると 子プロセスは Devel::NYTProf で計測不可?

アプリのプロファイリングで、手間取ったのは、きっと、別プロセスにしたことが原因

Net::FTPのノリで、Net::SFTP->new() すると error

Net::FTP - search.cpan.org Net::SFTP - search.cpan.orgNet::FTP -> Net::SFTP への移行で、何も考えずに Net::FTP -> Net::SFTP の置換後、次のようなsrcでnewすると... use Net::FTP; my $ftp = Net::FTP->new('hogehoge.host.jp', Debug => 0) or die "…

Time::HiRes::gettimeofday() と Date::Calc::Localtime() で1秒未満の時刻表示

データを1秒未満で、シリアライズする必要があったので #!/usr/local/bin/perl use strict; use Time::HiRes qw/gettimeofday/; use Date::Calc qw/Localtime/; main(); sub main { my ($epoc_time,$micro_sec) = Time::HiRes::gettimeofday(),"\n"; my @Loc…

Math::BaseCalcで16進数以外の基数変換

31進数で出力する必要があるらしいので... http://search.cpan.org/perldoc?Math%3A%3ABaseCalc #!/usr/local/bin/perl use strict; use utf8; use Math::BaseCalc; main(); sub main { my $base_31 = Math::BaseCalc->new(digits=>[0..9,'A'..'U']); print …

Spreadsheet::WriteExcelで日本特有の書式(\や平成)を出力したい

以前から、Spreadsheet::WriteExcelで日本特有の書式(¥や平成等の和暦年度)を出力したいと思いつつ、ほっといていますが、Spreadsheet::ParseExcel::FmtJapan が参考になるのかも以下は、Spreadsheet::ParseExcel::FmtJapan のsnippet my %FormatTable = ( …

複数コマンドの標準出力(STDOUT)のclose()で、「error writing output file」

どうやら、次のload_total_data()でclose()が例外を投げるみたい。 標準出力を2個経由している為?、opensslを利用している為? よく分かりませんが、dieせず、warning程度にしておきます my $OPENSSL = '/usr/bin/openssl'; my $GUNZIP = '/bin/gunzip'; my $…

apacheのログ(access_log)解析は、Apache::ParseLog 等のcpan moduleより正規表現

結局、これがお手軽。 apacheのログ(access_log)をパースするcpan moduleは多くあります Regexp::Log::Common Barbie / Regexp-Log-Common - search.cpan.org Parse::AccessLogEntry Marc Slagle / Parse-AccessLogEntry - search.cpan.org Apache::ParseLog…

Plackのソースには、psgiファイルのサンプルがあるんですね

psgiファイルの書式は、サンプルファイルで一目瞭然 $ ls -l Plack-0.9986/eg/dot-psgi/ total 68 -rw-r--r-- 1 endo endo 135 Feb 24 2011 Dumper.psgi -rw-r--r-- 1 endo endo 122 Dec 5 02:29 Hello.psgi -rw-r--r-- 1 endo endo 262 Feb 24 2011 cgi-pm.…

Config::Generalのkey-valueのvalueに改行(\n)を登録したい

と思って、Config::Generalのperldocを読んでみましたがよく分かりませんでした。 http://search.cpan.org/perldoc?Config::General が、次のようなscriptでserializeすればいいだけのことでした。 #!/usr/local/bin/perl use strict; use utf8; use Config:…

PSGI/Plack をmod_perl2に組み込む練習

http://search.cpan.org/perldoc?Plack::Handler::Apache2 http://search.cpan.org/perldoc?Plack ↑これらのurlに記載されている通りですが、自分用の練習です。まず、次のperl scriptをhello.psgiというファイル名で保存。 #!/usr/local/bin/perl use stric…

POE-1.350のmake testでerror...未解決です

何だろう? make時にerrorは見当たらなかったし...、今度、気が向いたら調べます [endo@colinux POE-1.350]$ make test /usr/local/bin/perl mylib/gen-tests.perl lib/POE.pm <略> t/90_regression/neyuki_detach.t .................... 1/12 # Failed te…

cpanにもない古いverの入手は、http://backpan.perl.org で

タイトルの通りです。 POE の古いverを探していたら、辿り着きました。 http://backpan.perl.org

「HTTP::Body - HTTP Body Parser」 はHTML::Parserより気軽に使えるかも

http://search.cpan.org/perldoc?HTTP::Body HTMLのパーサは HTML::Parser ( http://search.cpan.org/perldoc?HTML::Parser )しか知りませんでしたが、HTTP::Body は気楽?に解析できてよいかも。 use HTTP::Body; sub handler : method { my ( $class, $r ) …

Filesys::Notify::Simple でディレクトリ内の追加/変更/削除を監視

http://search.cpan.org/perldoc?Filesys::Notify::Simpleこういうものがあるんですね。 #!/usr/local/bin/perl use strict; use Filesys::Notify::Simple; use Data::Dumper; main(); sub main { my $watcher = Filesys::Notify::Simple->new([ "./test" ])…

IO::String + Archive::Zip でファイルを経由せずunzip

http://d.hatena.ne.jp/toku_bass/20110716#1310844437Archive::Zipを使ってzipデータを解凍する場合、必ずファイルに書き出す必要があると思っていましたが、IO::String を使えば、zipデータを直接、解凍できるみたい。 ※一方、圧縮(ZIP)に IO::String は必…

Algorithm::KMeansを使ったk-meansによるカテゴライズ

cpanにはk-meansアルゴリズムを実装したmoduleがたくさん http://search.cpan.org/search/?query=k-means&mode=allsearch.cpan.orgで「k-means」をキーワードに検索すると、Algorithm::KMeans だけでなく、Text::Bayon や Algorithm::Cluster 等、約10個のモ…

Math::Combinatorics で 階乗、組み合わせ、順列を算出

http://search.cpan.org/perldoc?Math::Combinatorics 書こうと思えば、書けますが、こういうmoduleがあると、やはり使ってしまいます。 #!/usr/local/bin/perl use strict; use Math::Combinatorics; use Data::Dumper; main(); sub main { #階乗 my $ret_f…

Data::Structure::Util::unbless()を使ってblessを解除

encountered object 'Sample::ClassObj=HASH(0xa679b58)', but neither allow_blessed nor convert_blessed settings are enabled at /usr/local/lib/perl5/site_perl/5.10.1/JSON.pm line 154.\nと、JSON.pmに怒られて、「perlのオブジェクトのblessって解…

Devel::Sizeで変数のメモリ量を計測したら、でかくて驚いた

select * from (select hm.member_id, sum(val) as val from $tbl_name ss join hems_member hm on (hm.update_date<=? and ss.member_sid=hm.member_sid) where ?<=ss.date_month and ss.date_month<=? group by hm.member_id ) as ss_summary where val=0;…

Net::SMTPはnew()時の名前解決に失敗すると、 Invalid argument

#!/usr/local/bin/perl use strict; use utf8; use Authen::SASL; use Net::SMTP; main(); sub main { my $smtp = Net::SMTP->new( 'hogehoge.jp', Hello=>'hogehoge.jp', Port=>587, Timeout=>20, Debug=>1 ); die "can't connect smtp server: $!" unless …

perlで全角=2文字,半角=1文字で文字列長を算出する

http://d.hatena.ne.jp/end0tknr/20090316/1237158571以前、書いた \p{In〜}によるblock正規表現に関連する内容です。 「use utf8;」の場合、全角or半角に関わらず1文字として扱ってしまうので、次のように書けば、全角=2文字,半角=1文字で文字列長を算出で…

postgisを使って、perlやjavaでも幾何学計算

http://www.finds.jp/docs/pgisman/1.5.1/postgisのリファレンスを読んで、perlやjava、c等言語を問わず、幾何学計算を実現できそうな気がしたので試してみました。 (postgisのinstallは別のエントリをご覧下さい)回転や拡大縮小、移動は、html5 canvasでも…

apache 2.2.19にDSOでmod_perl-2.0.5を組み込んでみた

http://d.hatena.ne.jp/end0tknr/20090314/1237003479以前も同様のエントリを記載していますが、apache 2.2.19 + mod_perl-2.0.5 の組み合わせでは、なぜか静的moduleとしてinstallできません。(error msg等は面倒なので書きません)なので、mod_perlをdsoで…

電力会社から提供されている電力使用状況CSVデータを取得し、jsonで保存

関西電力だけは、やや書式が異なるようですが、次のように書けば良さそう。 #!/usr/local/bin/perl use strict; use utf8; use Encode; use HTTP::Request::Common; use JSON qw/encode_json/; use LWP::UserAgent; #各電力会社から提供されている電力使用状…

ジョブキューサーバ: Gearmanの自動起動script

http://search.cpan.org/dist/Gearman/ http://search.cpan.org/dist/Gearman-Server/job queueサーバのGearmanについて調べていますが、試しに自動起動scriptを書いてみました。 実際の環境に合わせて書き換えが必要な部分もありますが、とりあえず、動作し…

mod_perl2を使ってシングルサインオン認証を書いてみた

cpanにはApache::AuthTicketやApache::AuthCookie等、mod_perlによる認証モジュールはありますが、modperlを使った実装を経験したことがないので、試しに書いてみました。 概要 まず、user_id / passwordでloginすると、rsa private keyによる署名付のcookie…