Perl

Apache2 + mod_perl2 環境で再起動するまでメモリ使用量が増え続ける問題の解決策

とあるアプリケーションを Apache2 + mod_perl2 の1層構造で運用していたところ、 httpd プロセスがメモリを消費しつづけ解放せず、ログローテートのタイミングでメモリが解放される現象がありました。 原因は MaxRequestsPerChild の設定にありました。 運…

任意のセッションIDを指定する。

CGI::Session を利用する場合に、デフォルトのセッションID生成ロジックは、CGI::Session::ID::md5 を利用しています。 CGI::Session (snip) $self->{_DSN}->{id} ||= "md5"; (snip) "CGI::Session::ID::" . ($self->{_DSN}->{id} =~ /(.*)/)[0], (snip) で…

リバースプロキシ先で、リモートIPアドレスを取得する方法

バックエンドが Apache2 + mod_perl2 の環境で、リバープロキシ先のバックエンド側で、リモートIPアドレスを取得する方法 if ( $r->subprocess_env->{HTTP_X_FORWARDED_FOR} ) { my @clients = split( /,/, $r->subprocess_env->{HTTP_X_FORWARDED_FOR} ); $…

Catalystでユーザ認証処理をする

Catalystで簡易なユーザ認証処理を実装します。 前提条件 MySQL5.0.x ・テーブルとレコード作成 CREATE TABLE users ( id integer NOT NULL auto_increment PRIMARY KEY, username varchar(20) NOT NULL, password varchar(30) NOT NULL ) ENGINE=InnoDB; IN…

Catalystアプリケーションを mod_perl1 で

Catalystアプリケーションを mod_perl 環境で動作させるための設定をメモ。 ・前提条件 Apache1.3 + mod_perl1 がインストール済み。 ・Apacheに設定を追加 Port 8080 +<Location /catalyst> + SetEnv PERL5LIB ライブラリのPATHを列挙 + + SetHandler perl-script + PerlHandler</location>…

CatalystでTemplate-Toolkitを使用したView

CatalystでTemplate-Toolkitを使用したViewクラスを作成する。 ・ヘルパースクリプトを利用して雛形を作成する $ ./script/myapp_create.pl view TT TT exists "/who/am/i/MyApp/script/../lib/MyApp/View" exists "/who/am/i/MyApp/script/../t" created "/…

Catalystで任意のファイルにログを出力する。

Catalystのデフォルト log メソッドは、ログを標準出力に表示します。 でも通常は任意のファイルに出力したいですよね。の調査。 利用するCPANは Catalyst::Log::Log4perl。 ・アプリケーションクラスに Catalyst::Log::Log4perl 設定を追加する $ vi lib/My…

Catalystでアプリケーションを構築して、/helloにアクセスしてHelloWorldを出力する

・前提条件 Catalystインストール済み。自分の環境では、Catalyst::Runtime '5.70' ・アプリケーション作成 $ cd /home/own $ catalyst.pl MyApp ・ディレクトリ構成 MyApp/ MyApp.pm Controller/ Model/ View/ lib/ root/ static/ images/ *.png favicon.ic…

Module::Build is not configured with C_support

Catalystインストール途中の Devel::Caller Build時に 「Module::Build is not configured with C_support」 エラーエラーメッセージ Module::Build is not configured with C_support at /usr/local/lib/perl5/site_perl/5.8.5/Module/Build/Base.pm line 3…

TemplateToolkit で 自作プラグインを使う

Perl で Template-Toolkit-2.19 - comprehensive template processing system - metacpan.org を利用していて、 URLのGETパラメータを生成するとき、& や ? を含んでいるパラメータ値をURLエンコードしたい時に、 TT の Filter である uri を利用しました。 …

ERROR 1305 (42000): FUNCTION テーブル名.NEXTVAL does not exist

Perl + Class::DBI を使っていて、以下のエラーが発生しました。 ERROR 1305 (42000): FUNCTION テーブル名.NEXTVAL does not exist 原因は、DBアクセサ側で sequence を設定していたからでした。 例) __PACKAGE__->sequence(qw(id)); ↑を設定すると、シーケ…

Memcached の容量を監視する

Cache::Memcached を利用して Memcached を利用していますが、 容量を監視したいと思ったときに エラー(容量が一杯によりset失敗とか)をハンドリングする方法がないようでした。(知らないだけ?) どうにか容量を監視できないかなぁということで、memcachedサ…

Apache2.0 + mod_perl2 で Class::DBI のキャッシュを防ぐ

Apache2.0 + mod_perl2 の環境で、Class::DBI を利用したところ、 Class::DBIがどうにもデータをキャッシュして困りました。 調べたところ yappo さんのところで解決策を発見しました。 http://blog.yappo.jp/yappo/archives/000284.html 解決策 $Class::DBI…

Issuing rollback() for database handle being DESTROY'd without

Apache2 + mod_perl2 + Class::DBI の環境で掲題のエラーが Apacheのログに出力されました。 Issuing rollback() for database handle being DESTROY'd without explicit disconnect() ... 検索したところ、今回の原因については以下のあたりで当たりました…

Deep recursion on subroutine "Class::DBI::_flesh"

Class::DBI を利用して、 search メソッドを実行したときに以下のエラーが発生して、暴走しました。 Deep recursion on subroutine "Class::DBI::_flesh" 原因は、Class::DBIのメソッドをインスタンスから call してたからでした。 my $table = Table->new; …

DBD::SQLite の make test でエラー

sqlite3(クライアント) をインストールした状態で、DBD::SQLite(1.12) の make をします。 次に make test を実行するとこけます。 Makefile を見ると sqlite3クライアントがある場合、それ以上のライブラリをコンパイル時に読み込まない模様。 そのため mak…

DBD::SQLite でエラー closing dbh with active statement handles

DBD::SQLiteで以下のエラーが発生 closing dbh with active statement handles http://search.cpan.org/~msergeant/DBD-SQLite-1.13/ http://rt.cpan.org/Public/Bug/Display.html?id=17603 これは、1.11のときの bug だそうで、 1.12 で修正されてる。 けど…

mod_perl2 でアプリケーション

Apache2 + mod_perl2 環境でアプリケーションを作成する方法です。 ・環境 Apache - 2.0.59 mod_perl - 2.0.3 ・インストール 省略.. ・httpd.conf /perl でアクセスされたら、ModPerl2.pm を呼ぶ設定 PerlModule mod_perl2 PerlRequire /home/own/perl/lib/…

[notice] child pid 12143 exit signal Segmentation fault (11)

Apache1.3 + mod_perl を構築して、/(ルート)にアクセスした時点でエラーが発生しました。 logs/error_log [notice] child pid 17208 exit signal Segmentation fault (11) googleで検索するとPHP関連が多くHitしましたが、今回はPHPはインストールしていま…

sqlite3インストール時にtclsqlite.cでエラー

DBD::SQLiteで作成したDBを、Unixのコマンドライン上から扱う必要があり、sqlite3クライアントをインストールしました。 このとき、make で以下のエラーが発生してつまづきました。 gcc -g -O2 -DOS_UNIX=1 -DHAVE_USLEEP=1 -DHAVE_FDATASYNC=1 -I. -I../s…

sqliteクライアントを使って、コマンドラインでSQLiteファイルを扱う

SQLiteファイルをsqliteクライアントを用いて処理する必要が出てきて調査 ・いままで DBD::SQLiteをDBIから利用して、SQLを発行してましたOT~Z ・sqliteクライアントについて DBD::SQLiteのバージョンが1.0.0になってから、SQLiteファイルが sqlite3 クライ…

perl -MCPAN -e shell でインストールに失敗する原因は

CPANからモジュールをインストールする方法でFTPで接続エラーになってました。 perl -MCPAN -e shell cpan> 原因は/etc/resolv.confのDNS設定が間違っていたためでした。 ありゃー

Perl Best Practices: Standards and Styles for Developing Maintainable Code

Perl Best Practices: Standards and Styles for Developing Maintainable Code作者: Damian Conway出版社/メーカー: O'Reilly Media発売日: 2005/07/22メディア: ペーパーバック クリック: 65回この商品を含むブログ (27件) を見るamazonから届きました。 …

null: Parsing of undecoded UTF-8 will give garbage when decoding entities at /home/someone/cpan-lib/HTML/FillInForm.pm line 86, line 1.

HTML::FillInFormを使っていたら動作はしますが、Apacheのエラーログにログが出力されました。 エラーログ null: Parsing of undecoded UTF-8 will give garbage when decoding entities at /home/someone/cpan-lib/HTML/FillInForm.pm line 86, <GEN0> line 1.per</gen0>…

SOAP::Lite x mod_perl で エラー(Unexpected Content-Type '' returned)

SOAP::Lite x mod_perl 環境下で "Unexpected Content-Type '' returned" が返される問題。 mod_perlを利用せず、CGIなら動作する。 ・原因 SOAP::Lite のバージョンが古かった(v0.55) ・解決方法 SOAP::Lite のバージョンをv0.60a以上にする リリースノート

プロファイル

Devel::DProfを利用したプロファイルについてです。 perl5.8.7からは標準収録されています。 使い方 $ perl -d:DProf test.pl # カレントディレクトリに"tmon.out"ファイルが作成される $ dprofpp tomon.outtest.pl は、プロファイルしたいプログラム。コン…

既存のperl製CGIをmod_perl環境下で動作させるための注意点

[perlとは?] 説明 スクリプト言語 メリット テキスト形式で記述・実行するので人間の目で見えるからメンテナンスが容易 文字列処理が得意 デメリット 実行のたびにコンパイルする必要があるので、他の実行ファイル形式プログラムと比較して低速。 [mod_perl…

SOAP::Lite CGI側のuri設定

CGI側でuriに下記の記述をしていたら、Apacheのエラーログにメッセージが出力されてた 状態 Apcheのerror_logにメッセージが出力される 動作はしている Apache エラーメッセージ Usage of '::' in URI (uri:MyClass::SoapServer) deprecated. Use '/' instea…

SOAP(Simple Object Access Protcol)-クライアントでEnvelopeを表示する

SOAPモジュールを利用したXML-RPCサーバ/クライアント # サーバ #!/usr/local/bin/perl -w use strict; use warnings; use SOAP::Transport::HTTP; my $cgi = SOAP::Transport::HTTP::CGI ->dispatch_to('SoapServer') ->handle(); package SoapServer; sub …

SOAP勉強中

http://www.microsoft.com/japan/msdn/columns/xml/xml10152001.asp XML-RPCサーバ/クライアントをperlで構築したいんですが、 サーバのレスポンスを少し複雑なXMLで表現したいところで悩んでいます。 とりあえずSOAP::Transport::HTTP::CGIで、CGI(not Deam…