2004年11月15日月曜日

perl5.8.5でClass::Fieldがtestでこける

新しいサーバにSledgeをインストールしていたところ、Sledgeを動かすのに必要なモジュール、Class::Fieldがmake testでこけました。原因はperlのバージョンによるwarnningのメッセージの違いによるもののようなので、特に気にせずmake installしてしまってOKだと思います。

>
::ok( $warnings eq <<WARN,    'Improper use of fields & base warned about' );
Bar is inheriting from Foo but already has its own fields!
This will cause problems with pseudo-hashes.
Be sure you use base BEFORE declaring fields
WARN
<

ちなみにエラーがでていたコードは上の部分で「with pseudo-hashes」の部分を削除すれば5.8.5でもテストに通りました。

2004年11月11日木曜日

Foo-conf.plの使い方

SledgeでConfigファイルを読み込む際、環境変数SLEDGE_CONFIG_NAMEが設定されていないと、/etc/Foo-conf.pl(Fooはプロジェクト名)というファイルが実行されるんですが、このファイルには接直SLEDGE_CONFIG_NAMEを設定するような記述を書いておくんだそうです。具体的には以下のような記述を書いておきます。
>

$ENV{SLEDGE_CONFIG_NAME} = 'staging';
1;
<

またhttpd.confに以下のような記述を書くことで同様のことを実現できます。

>

PerlSetEnv SLEDGE_CONFIG_NAME production
<

こちらを使う方がなにかと便利なので、実際にはFoo-conf.plを作成することはほとんどないかもしれませんね。

実はFoo-conf.plが何に使われるのかわかっていなくて、miyagawaさんに直接聞いてしまったんですが、Sledge::Doc::Installにこのファイルに関することが書いてあったのに後で気づきました。。Docに書いてあるのに親切に答えて頂いたmiyagawaさん、ありがとうございました。感謝です。


Template::Plugin::Dumper

search.cpan.org: Template::Plugin::Dumper - Plugin interface to Data::Dumper

テンプレート内のパラメータをダンプするためのTTプラグイン。TT標準のプラグインなのに今まで使ったことありませんでした。普段はwarn Dumperで事足りるんですが、テンプレート内で演算なんかしたときのデータを確認したいときなんかに使えますね。というか今までこのプラグインに気づかなくてうかつ。


2004年11月5日金曜日

最もセキュアなOSはBSDとMac OS X

ITmedia エンタープライズ:最もセキュアなOSはBSDとMac OS X――mi2g調査

最もセキュアなOSはBSDとMac OS X。これって単純に普及してないからねらわれにくいってのもあるんじゃないですかねー。それにもっと重要なのはサーバの管理をどれだけちゃんとやるかってことだと思います。


2004年11月4日木曜日

コメントスパム対策をしました。

数日前にコメントスパム対策としてmt-comment.cgiの名前を変更したんですが、全く効果がなかったので、別の対策を行うことにしました。

他のブログはどんな対策をしているかみてみると、
-TypeKeyを使う
-連続投稿できる間隔を設定
-日本語が含まれていないコメントをブロック
-BanリストによるIP制限
というような方法が一般的みたいです。それぞれの方法をみてみると、TypeKeyは普通にコメント書きたい人にも一手間かけてしまうのがちょっとと思うし、連続投稿できる間隔の設定というのも一回は書き込まれてしまうし、Banリストは作成するのがめんどいしということでいまいち。

そこで今回は日本語が含まれていないコメントをブロックするという方法を少し発展させて全角ひらがなが連続するm文字が、n箇所以上無いコメントはスパムとみなすという対策をとることにしました。

今回修正したファイルはMT::App::CommentsとMT::L10N::jaの2つです。モジュールを直接いじるとMTをバージョンアップするときなんかに困ることになりそうなんで、プラグインとして書こう思ったんですが、プラグインの作り方を調べるのがめんどくさくなって、直接修正に妥協しちゃいました。。

この修正で、ひらがなが3文字連続している部分が2箇所以上ないコメントをPostした場合、エラーメッセージを表示するようになりました。軽くテストしましたがきちんと動いているみたい。

以下のコードをMT::App::Commentsのpostメソッドの上の方に追加し、MT::L10N::jaの%Lexiconに日本語エラーメッセージを追加しました。

>

my ( $m, $n ) = ( 3, 2 ); # ひらがなの文字数, 出現する回数

my $enc = $app->{cfg}->PublishCharset || '';
my $text = MT::I18N::encode_text($q->param('text'), $enc, 'euc');

my @count = $text =~ /(?:\xA4[\xA1-\xF3]){$m,}/g;
return $app->handle_error($app->translate(
"Your comment looks like a spam.[_1][_2]", $m, $n ))
if $text ne "" && scalar (@count) < $n;
<




2004年11月2日火曜日

DBD::mysql2.9005_3

DBD::mysqlがバージョンアップしたみたいです。変更点はこんな感じです。

-DBI1.43が必要になった。
-$dbh->last_insert_id()が使えるようになった。
-mysql_unsafe_bind_type_guessingオプションをセットすると数字っぽいスカラー値を数字として扱い、クオートしない。(自己責任で使ってね。)
-最近のmysqlでカラムが壊れるのを修正した。
-Makefile.PL実行時、5.008ではLANGがCに設定されてない場合、文句を言ってCに変えまて実行します。

うーむ、カラムが壊れるって何でしょうか。。

以下実際のChangelogです。

>>
2004-10-27 Rudolf Lippan (2.9005_3)

-Removed requirement that mysql.mtest be included in the distribution.

-DBI 1.43 is required -- It is needed for support of $dbh->last_insert_id().

-Added $dbh->{mysql_unsafe_bind_type_guessing} = 2 which will look at each bind_param and make guess based on whether it looks like a number, and if the parameter looks like a number, it will not be quoted. [thanks to dragonchild for cleaning up the initial rough draft impementation making it ready for prime time]

-Applied patch to fix column which broke with later version of mysql [Tim Bunce]

-Merged $dbh->last_inert_id() from the 3.0 dev tree

-If you are using perl 5.008 without a $ENV{LANG} of "C". Makefile.PL will now 1. Complain loudly, and 2. set LANG to "C" and then exec itself with the new lang setting.

-Added '$dbh->{mysql_unsafe_bind_type_guessing}'. When this flag is enabled any scalar that is passed to execute() and was used innumeric context will be treated as a number when being sent to the database backend. This can be a secuity problem in that if you use a string in numeric context, it will NOT be quoted before being passed to the database -- use at your own risk. The default is off.

-fixed typo in pod changing failed_auto_reconnects_failed to auto_reconnects_failed [Paul DuBois ]

<<




2004年11月1日月曜日

[求人] WEBプログラマ(Perl)を募集しています。

僕の働いている会社でperlプログラマを募集しています。平均年齢が若く、おもしろい意見なら誰の意見でも取り入れられるような働きやすい職場だと思います。一緒にWebアプリケーション開発してみませんか?興味を持たれた方はお気軽にご連絡下さい。

-職種
--WEBプログラマ(Perl)

-雇用形態
--正社員

-応募資格
--18歳~30歳くらいまで

-必須のスキル
--プログラミングが好きだ
--Perlを使ってWEBアプリ(掲示板など)を開発したことがある
--UNIXのコマンドをある程度理解している
--基本的なHTMLを理解している

-歓迎するスキル
--DB(MySQL、PostgreSQL)を扱える
--mod_perlを利用した開発経験がある
--Sledgeを利用した開発経験がある
--自宅でサーバを運用している

-仕事内容

--自社のASPサービス開発、運用やシステムの受託開発など。1プロジェクト当たり、1人もしくは2人程度でPerl,DBを駆使した開発を行います。主な開発環境はLinux+Apche+mod_perl+MySQLです。スキルアップに貪欲で、責任をもって業務に取組んでくださる方からのご応募をお待ちしております。

-勤務時間
--フレックス制 コアタイム 11:00~17:00

-待遇
--月20万円~(年齢・能力・経験を考慮の上、面談により決定)
--交通費全額支給
--完全週休2日制(土・日)

-勤務地
--東京都目黒区(東急東横線中目黒駅徒歩1分)
--株式会社ブイキューブ

-連絡先
--horiuchi@vcube.com