[Perl][Windows]Strawberry PerlでDBIx::Classをインストール

Posted on 23rd 2月 2009 in Perl, Windows, ソフトウェア, プログラム

Strawberry PerlのCPANでDBIx::Classをインストールしてたら以下のようなエラーが出た。

cp lib/JSON/DWIW.pm blib\lib\JSON/DWIW.pm
gcc  -Ilibjsonevt -s -O2 -DWIN32 -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -DPERL_MSVCRT_READFIX -s -O2   -DVERSION=\"0.29\" -DXS_VERSION=\"0.29\"  -o libjsonevt\make_config libjsonevt\make_config.c
libjsonevt\make_config.c:6:22: sys/wait.h: No such file or directory
libjsonevt\make_config.c: In function `do_system_with_redirect':
libjsonevt\make_config.c:42: error: `F_DUPFD' undeclared (first use in this function)
libjsonevt\make_config.c:42: error: (Each undeclared identifier is reported only once
libjsonevt\make_config.c:42: error: for each function it appears in.)
libjsonevt\make_config.c:50: warning: passing arg 2 of `execvp' from incompatible pointer type
dmake.EXE:  Error code 129, while making 'libjsonevt\make_config'
  DOWENS/JSON-DWIW-0.29.tar.gz
  C:\strawberry\c\bin\dmake.EXE -- NOT OK

DBIx::Classが依存しているJSON::DWIWでsys/wait.hというヘッダファイルが必要みたいだが、どうやら存在しないらしい。

Strawberry Perlにはppmも入っていたのでppmからインストールを試したら、すんなりインストールできた。
まだDB自体を構築してないので動作検証コードは書いてないけど多分大丈夫でしょう。

comments: 0 » tags: , ,
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加

[Perl]俺はActivePerlをやめるぞ!ジョジョーッ!!

Posted on 20th 2月 2009 in Perl, Windows, プログラム

WindowsでPerlと言えばActiveperlかCygwin+Perlでしたが、Strawberry Perlなるものがあるようなのでインストールしてみました。

ActivePerlはコンパイル環境がないので、XSモジュールのインストールにはVC++を別途インストールしないといけないが、それでもコンパイルでこける場合が多々あり、ppmからインストールする手法でした。

しかしStrawberry Perlはgccとdmakeというコンパイル環境込みでインストールされるので、CPANモジュールのインストールでこける事がほとんどありません。

ActivePerl+CPANで依存モジュールの多いMooseのインストールは失敗しましたが、Strawberry Perlだとサクッと入りました。

散々待たされた挙句、make NOT OKとか出ないから最高!

comments: 0 » tags: , ,
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加

[Perl]アクセスログ解析に最低限必要なモジュール

Posted on 13th 2月 2009 in Perl, Web, プログラム

アクセスログ解析をPerlで行う場合に最低限必要な(使っている)モジュールを列挙してみた。
基本的にツールレベルなら軽量モジュールを使うけど、これでできない事があれば上位のモジュールを使ってもいい。

1
2
3
4
5
6
use strict; # お約束
use warnings; # お約束
use CGI::Lite; # 検索ワードのデコードに使う
use DBIx::Simple; # ログそのものや集計結果をDBに登録する
use Encode; # 文字コード変換
use Text::CSV::Simple; # CSVファイルをまともにパースする

まったく同様の機能をJavaで書いてみたけど解析そのものは4倍くらい速かった。
ただJavaだと思い立ったらツール作成→実行ができないので、DB関連の所だけInline::Javaで呼び出すって方法がいいのかもしれない。
(やると誰もメンテナンスできなくなるのが難点。もう1人プログラマください・・・)

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加

[PHP]Cannot modify header information

Posted on 12th 2月 2009 in PHP, Web, プログラム

とある理由からheader関数で他のページにリダイレクトする処理を追加する必要があったんだけど、同じページをrequire_onceしているにも関わらず、アクセスするページによってリダイレクトされたり、以下のようなエラーが表示された。

Warning: Cannot modify header information - headers already sent by (output started at /foo/bar/hoge.php:2937)
in /foo/bar/index.php on line 11

よくよくエラーを見たらindex.phpが呼び出しているhoge.phpの最後が

?> // ここに改行が入ってた

のように無駄な改行がされていたため、headerを送出できなかったっぽい。
PHPのデリミタの前後には何も書いちゃいけません。
[php]
...
?>
[/php]

呼び出されているhoge.phpは実際はSmartyのモジュールでした。71ファイル全てが改行されてたので全部修正してなんとかなった。

comments: 0 » tags: , ,
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加

[Java]ソースファイルでの宣言

Posted on 2nd 2月 2009 in Java, プログラム

とりあえず、Javaでアクセスログ解析のプログラムが書けるようになるまで勉強する。
まずJavaがどういうプログラム言語なのかはwikipediaを読んで分かったつもりになっておく。

ソースファイルの最上位階層(という呼び方でいいのかは不明)では、以下の5つの宣言ができる。

・インポート宣言
[java]
import java.io.*;
[/java]

Perlでいうuse Module;みたいなもんだと理解。違うのは*でワイルドカード指定できる事。
ワイルドカードで指定しても、そのパッケージ配下のクラスが全てインポートされるわけじゃなくて、完全修飾名で書かなくて済むだけ。
[java]
// new java.io.FileReader(file);
new FileReader(file);
[/java]

・パッケージ宣言
[java]
package net.sukuna.java;
[/java]

Perlでいうpackage Net::Sukuna::Java::Module;みたいなもんだと理解。
→小文字で書く
→命名規則の慣習はURLを逆にしたもの+機能
→パッケージ名=クラスパス(所定の位置に置かないとクラスファイルが見つけられない)
→同じパッケージ名だからといって、関連性や依存関係があるとは限らない。

・クラス(class)宣言
[java]
class Class1 {}
[/java]

・インタフェース(interface)宣言
[java]
interface Interface1 {}
[/java]

・列挙型(enum)宣言
[java]
enum Enum1 {}
[/java]

インタフェースも列挙型も内部的にはクラスらしい。この辺は後で。

comments: 0 » tags: ,
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加