ラベル perl の投稿を表示しています。 すべての投稿を表示
ラベル perl の投稿を表示しています。 すべての投稿を表示

2008年1月18日金曜日

「FFmpegで作る動画共有サイト」が発売されます!

動画共有サイトを作ってみたいという方向けの書籍「FFmpegで作る動画共有サイト」が1/29にに毎日コミュニケーションズさんから発売されます!
FFmpegとはというところから始まり、インストールから各言語でのFFmpegの使いかた、実際にサイトを構築するところまで入ったてんこ盛りな書籍です。

僕も4章のPerlでFFmpegを使うという部分を書きました。
僕が書いた部分ですが、まずはシンプルにsystem関数を使ってPerlからffmpegを実行する方法をサンプルスクリプトを使って紹介し、そのスクリプトをffmpegコマンドの実行結果を取得したり、タイムアウト処理をすることができるように拡張していくという内容になっています。

拡張していくにあたって、誰でも簡単に試せるよう、CPANモジュールは使わず、標準モジュールと組み込み関数のみを使うようにしました。

ただ、CPANモジュールの便利さも知ってもらいたかったので、ここまでに拡張したスクリプトをCPANモジュールを使って書くとどうなるか?というのを最後に紹介しています。

ここではmizzyさん作のFFmpeg::Commandを使ってサンプルコードを書きました。

今回CPANモジュールを使うコードと使わないコードを書いてみて、改めてCPANモジュールの便利さを痛感しました。
これを読んで、Perlっていいかも、ちょっと試してみようかなと思ってくれる方が少しでも増えたら幸いです。


FFmpegで作る動画共有サイト
月村 潤 本間 雅洋 堀田 直孝 原 一浩 足立 健誌 尾花 衣美 堀内 康弘 寺田 学
毎日コミュニケーションズ (2008/01/29)
売り上げランキング: 15883




・予価:2,940円(税込)
・B5変型判 272ページ
・ISBN978-4-8399-2466-9
・発売日:2008年01月29日

■内容紹介

YouTubeやニコニコ動画など、最近のWebサービスでは動画共有サービスが大人気です。その多くのサイトで、動画投稿時の変換に利用されているのがオープンソースの動画変換ソフト(エンジン)「FFmpeg」です。

FFmpegは、様々な動画・音声形式の変換に対応しており、動画共有サービス立ち上げの際に必須の技術ですが、これまでまとまった解説書がありませんでした。本書は、動画共有サイトの開発を日常的に行っている著者による、FFmpegを利用して動画共有サービスを構築するための技術解説書になります。

本書では、動画に関する基本的な解説から、FFmpegのインストールや使い方、Perl、PHP、Python、Javaの4つのプログラム言語での利用方法、字幕を入れられるFlashを使った動画プレイヤーの制作方法、Pythonを使った動画共有サイトの構築まで、サンプルを交えて解説します。本書で解説するのは、比較的小規模での動画共有サイトの作り方となりますが、サーバサイドの工夫次第では、大規模な動画共有サイトにも発展させることも可能です。

動画共有サイトの開発環境は多岐に渡り、本書はそのエッセンスをまとめたもので、すべての環境や手順は解説してません。また、本書の開発環境は、著者が日常的に利用している環境で、必ずしも一般的な環境ではないかもしれません。ただ、実際に動画共有サイト構築のために、著者自身が試行錯誤しながら身につけた知識や技術は、FFmpegを利用した動画共有サイト構築の際に、必ず参考になると考えています。

著者:原一浩・寺田学・本間雅洋・足立健誌・堀内康弘・堀田直孝・月村潤・尾花衣美


2006年5月23日火曜日

JSON::Syckで改行を含むデータをダンプすると改行の後にスペースが2個入る

Ajaxる時のサーバとのデータ交換フォーマットとして、JSONを使う時、perlでサーバ側を実装する際にはJSONとかJSON::Syckというモジュールを使うとperlのデータ構造をJSONフォーマットに変換してくれるので便利です。

昨日これを使って、サーバからデータを取得し、textareaに取得したデータを入れるということをしたところ、改行を含んだテキストだと、改行の後にスペースが2個入ってしまうという現象に遭遇しました。
要はこうなってほしいところが、

><

こうなってしまうんです。

><

調べてみると、クライアントで受け取ったJSONデータをevalした段階ですでにスペースを含んでいたので、サーバ側でJSONデータを作成するところに問題がありそうだということがわかりました。
そこで以下のようなスクリプトを書いて、JSON,JSON::SyckがどんなJSONデータを吐き出すか見てみました。
>

#!/usr/bin/env perl
use strict;
use JSON::Syck;
use JSON;

my $data = {
key => "foo\nbar\nbaz\n"
};

print "# Dumped by JSON::Syck $JSON::Syck::VERSION:\n";
print JSON::Syck::Dump($data), "\n";

print "# Dumped by JSON $JSON::VERSION:\n";
print objToJson($data), "\n";

<

結果は以下のとおり。

>

# Dumped by JSON::Syck 0.12:
{"key":"foo\n\
bar\n\
baz\n"}
# Dumped by JSON 1.05:
{"key":"foo\nbar\nbaz\n"}

<

どうやらJSON::Syckを使ってダンプしたデータは、整形のため、改行の後に、スペースが2個入っているようです。それでこれをJavaScriptでevalするとこのスペースもデータとして含まれてしまうため、上記のような現象が起きたみたいです。
そもそも改行後にスペースが入ってしまうのが問題なのか、スペースが入るのは問題なくて、クライアント側のJavaScriptでのパースに問題があるのかわかってませんが、試した限りだと、IEとFirefoxでスペースつきのデータの扱い方が異なるようで、挙動が変わってしまい、困りました。

とりあえず、サーバ側で改行コードを[BR]とかに変換しておいて、クライアント側でそれを改行コードとか、<br />に変換するという風にして対処しましたが、ちょっと付け焼刃的ですかねー。

2006年4月29日土曜日

Apache::RequestからPOSTデータがとれない!?

うおーーーーー、Apache::RequestからPOSTデータがとれない!!なぜだーと小一時間悩んでいたら、こんなコード書いてました。

>

sub handler {
my $r = Apache::Request->new(shift)
my @keys = qw(foo bar baz);
for my $key ( @keys) {
my $val = $r->param($_);
warn "$val\n";
}
}
<

原因に気づいて愕然としました。。。

2006年4月20日木曜日

LWPのバージョンあげたらファイルアップロードが遅くなった

ここ最近AtomPPを使ったサービスを作っているんですが、そのためにXML::Atomをインストールしたら、LWPを使って10MBくらいの大きいファイルをアップロードすると異常に時間がかかるようになってしまいました。
アップロード時のサーバの様子を見ているとメモリとCPUをやたらと消費しているようです。

LWPのドキュメントを読んでいるとHTTP::Request::Commonのドキュメントに$DYNAMIC_FILE_UPLOADをTRUEにセットすれば大きなファイルをメモリをあまり使わずにアップロードできるよと書いてあったので、これをTRUEにしたところ、劇的にアップロードの時間が短縮されました。

めでたしめでたし。





2006年3月24日金曜日

Sledge::Plugin::FormValidator::Simple - Sledgeのバリデータ

Sledge用のバリデータを作ろうと決めてから結構たってしまいましたが、ようやくそれっぽいものができました。



Sledge::Plugin::FormValidator::Simple-0.01



今のところFormValidator::Simple::Extensionが必要です。
Sledge::Plugin::FormValidator::Simpleを使う場合にはあらかじめこれをインストールしておく必要があります。

このバリデータの特徴は以下のとおりです。
- プロファイルをYAMLで定義できる
- 1つのYAMLファイルにすべてのプロファイルを記述でき、バリデーション時には自動で選択される
- 使用するプロファイルを手動で選択することも可能
- エラー時の挙動も定義可能
- エラーメッセージもYAMLで記述可能。テンプレート側でメッセージを選択可能



以下使い方の説明です。


まずPagesクラスでSledge::Plugin::FormValidator::Simpleをuseします。

>


package Your::Proj::Pages;
use Sledge::Plugin::FormValidator::Simple;

<

Sledge::Plugin::FormValidator::Simpleをuseすると、validatorメソッドがPagesクラスに
追加されます。

次にコンフィグにバリデーションに関する設定を追加します。

>


package Your::Config::_common;

$C{VALIDATOR_OPTIONS} = {
profile => '/path/to/profiles.yml',
messages => '/path/to/messages.yml',
messages_decode_parms => 'utf-8',
plugins => [
'FormValidator::Simple::Plugin::Japanese',
'Your::Original::Validation',
],
loader => 'YAML::Syck',
};

<


さらにプロファイル、エラーメッセージを定義したYAMLを用意します。

>

# profiles.yml

"Your::Pages::Root" :
contact :
- name
- [ [NOT_BLANK], [LENGTH, 0, 30] ]
- email
- [ [NOT_BLANK], [EMAIL_LOOSE], [LENGTH, 0, 100] ]
- tel
- [ [NOT_BLANK], [NUMBER_PHONE_JP], [LENGTH, 0, 30] ]
- content
- [ [NOT_BLANK], [LENGTH, 0, 5000] ]
login :
- userid
- [ [NOT_BLANK], [ASCII] ]
- password
- [ [NOT_BLANK] ]
"Your::Pages::Signup" :
input :
step1 :
- userid
- [ [NOT_BLANK], [ASCII] ]
- password
- [ [NOT_BLANK] ]
- name
- [ [NOT_BLANK], [LENGTH, 0, 30] ]
- email
- [ [NOT_BLANK], [EMAIL_LOOSE], [LENGTH, 0, 100] ]
step2 :
- tel
- [ [NOT_BLANK], [NUMBER_PHONE_JP], [LENGTH, 0, 30] ]
- address
- [ [NOT_BLANK], [LENGTH, 0, 200] ]

# messages.yml
DEFAULT:
name:
DEFAULT: name is invalid!!
action1:
name:
NOT_BLANK: input name!
LENGTH: input name(length should be between 0 and 10)!
email:
DEFAULT: input correct email address!
action2:
name:
DEFAULT: hoge.

<

バリデーション実行時、Pagesクラス名とdispatch名に対応したプロファイルが自動で選択されます。
対応したプロファイルがない場合、バリデーションは実行されません。
使用するプロファイルを手動で変更したい場合は、valid_profile_$pageメソッドを定義します。

>


package Your::Pages::Signup;
use strict;


sub valid_profile_foo {
my $self = shift;
if ( $self->r->param('step') == 2 ) {
return ('step2');
}else {
return ('step1');
}
}

sub dispatch_foo {
...
}
sub post_dispatch_foo {
...
}


<

valid_profile_$pageメソッドは使用するプロファイルのキー名を返すようにします。
上記の例ではクエリー内のstepが2の場合はYAML内の定義のうち、 Your::Pages::Signup -> foo -> step2 が使用されます。


バリデーションでエラーがみつかると、セッションにvalid_pageとvalid_resultがセットされます。
それぞれの値はの下記のとおりです。


バリデーション結果をセットした後、デフォルトでは、current_urlで取得されるURLへのリダイレクトを行います。
もしリダイレクト先を手動で設定したい場合は、valid_redirect_url_$pageを定義します。

>


sub valid_redirect_url_foo {
return '/foo/error';
}

<

また、リダイレクト以外の処理をさせたい場合はvalid_error_$pageを定義します。

>


sub valid_error_foo {
my ($self, $result) = @_;
$self->tmpl->param(result => $result);
$self->load_template('/bar/error');
$self->output_content;
}

<

valid_error_$pageを定義すると、リダイレクトする代わりにこのメソッドが呼び出されます。
上記の例はテンプレートに結果をセットしエラーテンプレートをロードしています。
valid_error_$pageはvalid_redirect_url_$pageより優先されます。


Sledge::Plugin::FormValidator::SimpleがuseされたPagesクラスおよびそのサブクラスでは、
dispatch前にセッションからバリデーションエラーの際にセッションにセットされた
valid_result、valid_pageを取得しようと試みます。(取得の際、セッションからこれらのキーは削除されます。)
valid_resultを取得できた場合、valid_result、valid_pageをテンプレートのパラメータとしてセットし、
さらにfillin_formをloadし、バリデーションに通った値をfillinします。



2006年3月21日火曜日

Template::Plugin::Encode

内部エンコーディングをFlagged UTF-8にしたところ、テンプレート内の日本語を含んだURLにuriフィルタを適用すると、空になるという現象が発生してしまいました。
uriフィルタをハックして、、とも思いましたが、テンプレート内でEncodeモジュールが使えたら便利かなと思い、プラグインを書いてみました。


Template::Plugin::Encode-0.01


使い方はこんな感じ。メソッドの実装は、Template::Plugin::Jcodeを参考に、virtual methodとして扱えるようにしてみました。

>

[% USE Encode %]

# encode
<a href="/foo/bar?jword=[% ja_str.encode.encode('utf-8')|html|uri %]">click here</a>

# decode
[% foo.encode.decode('euc-jp') %]

# from_to
[% num = bar.encode.from_to('sjis','euc-jp') %]
[% bar %]

<

こういうプラグインはすでにCPANにあるだろうと思ったんですが、ミストを感じなかったので、作成してみました。

2006年3月15日水曜日

FormValidator::Simple::Extension - アップロードファイルのバリデーションなど

前回のエントリでFormValidator::Simpleでアップロードされたファイルのバリデーションができるように拡張したモジュールを書いているといいましたが、それっぽいものができました。

FormValidator-Simpe-Extension-0.01.tar.gz

SimpleのExtensionてどっちやねんという感じですが、アップロードファイルのバリデーション以外に、メッセージをFlaggedなUTF-8にデコードした形でgetできるような機能もつけてみたので、名前をなんにするか悩んだ挙句、とりあえずExtensionにしておきました。使い方はこんな感じです。

>


use FormValidator::Simple::Extension;

## アップロードファイルのバリデーション

FormValiator::Simple::Extension->check( $q, [
thumbnail => [
'UPLOAD_NOT_BLANK', # ファイルがアップされたかどうか
[UPLOAD_FILESIZE,0, 1024], # ファイルサイズは1kBまで
[UPLOAD_FILENAME_REGEX, 'jpe?g|gif|png$'] #画像っぽいファイル名ならOK
],
]);

## メッセージをFlagged UTF-8でうけとる

FormValidator::Simple::Extension->set_messages('messages.yml');
# どんな文字コードからデコードするか文字コードをセット
FormValidator::Simple::Extension->set_message_decode_parms('utf-8');
my $result = FormValidator::Simple::Extension->check($q, $prof);
# メッセージはデコードされる
my $messages = $result->messages;

<

これらの拡張が本家のFormValidator::Simpleに取り込まれたらうれしいのですが、アップロードファイルを取得する方法がApache::Requestのuploadメソッドしか想定してないので、ちょっとマイナー過ぎるきもします。。
CGI.pmのuploadメソッドも考慮したものにすれば、取り込んでもらえるかなー。



2006年3月14日火曜日

MIME::Lite::TT::Japanese 0.08

TokuLog!な人にSubjectだけじゃなくて、FromもMIMEエンコードしないと、携帯で返信できないyo!というメールをパッチとともにいただいたので、早速適用して、CPANにアップロードしておきました。


MIME::Lite::TT::Japanese 0.08


どうもありがとうございました。

ところで、SledgeのValidatorのほうですが、FormValidator::Simpleだとアップロードされたファイルについてのバリデーションができないことに気づいて、ちょっとなやんでます。とりあえず、アップロードできるように拡張したモジュールを書いてみているんですが、いまいちしっくりきません。。もうちょい時間がかかりそう。

2006年3月11日土曜日

FormValidator::Simple::ProfileManager::YAML

SledgeのValidatorを作るにあたって、FormValidator::Simple用のプロファイルをYAMLで定義するためのモジュールを書いてみました。

FormValidator::Simple::ProfileManager::YAML

まずは以下のようなYAMLファイルを用意します。

>

# sample yaml profile
group1 :
- name
- [ [NOT_BLANK] ]
- email
- [ [NOT_BLANK], [EMAIL_LOOSE] ]
- tel
- [ [NOT_BLANK], [NUMBER_PHONE_JP] ]
- content
- [ [NOT_BLANK] ]

group2 :
subgroup1 :
- userid
- [ [NOT_BLANK]]
- password
- [ [NOT_BLANK]]
- name
- [ [NOT_BLANK] ]
- email
- [ [NOT_BLANK], [EMAIL_LOOSE] ]
subgroup2 :
- tel
- [ [NOT_BLANK], [NUMBER_PHONE_JP] ]
- { zip : [zip1, zip2] }
- [ [ZIP_JP] ]
- address
- [ [NOT_BLANK] ]
<

group1とかsubgroup1というのはプロファイルをグルーピングするのに使います。

使い方は簡単です。まずオブジェクトを作成します。

>

use FormValidator::Simple::ProfileManager::YAML;
my $manager = FormValidator::Simple::ProfileManager::YAML->new('/path/to/profile.yml');
<

デフォルトではYAMLをロードするのにYAMLモジュールを使いますが以下のようにloaderをオプションとして渡すと、YAML::Syckを使うこともできます。

>

my $manager = FormValidator::Simple::ProfileManager::YAML->new(
'/path/to/profile.yml',
{
loader => 'YAML::Syck',
}
);
<

プロファイルを取得するには、get_profileメソッドを使います。パラメータとして、グループ名を渡せば、そのグループに属するプロファイルを取得することができます。
取得したプロファイルはそのままFormValidato::Simpleに渡すせます。

>

# group1のプロファイルを取得
my $profile1 = $manager->get_profile('group1');

# subgroup2のプロファイルを取得
my $profile2 = $manager->get_profile( 'group2', 'subgroup2' );

#取得したgroup1のプロファイルをそのままわたす。
my $result = FormValidator::Simple->check($q , $profile1);

<

2006年2月3日金曜日

SledgeのPluginをいくつかCPANにアップしました

ちょこちょと作ってこのブログでも紹介していたSledgeのプラグインのうちいくつかをCPANにアップロードしました。

- Sledge::Plugin::Prototype 0.02
- Sledge::Plugin::IfModifiedSince 0.05

Sledge::Plugin::IfModifiedSinceはブログで公開したのからちょっと改良を加えていて、set_last_modifiedメソッドでLast-Modifiedヘッダに更新日をセットすることができるようになったり、if_modified_sincedメソッドにファイルのパスを渡せば、そのファイルの更新日とIf-Modified-Sinceヘッダを比較するようになったりしてます。

Template::Plugin::AutoLink

テキスト中のURLやメールアドレスを自動でハイパーリンクに置換してくれるTTフィルターを書いてみました。

Template::Plugin::AutoLink 0.03

こんな感じで使います。

>

# テンプレート内

[% use AutoLink %]

[% FILTER auto_link target='_blank' %]

hori-uchi.com
http://hori-uchi.com/

[% END %]

# アウトプットはこんな感じ
Search here
http://hori-uchi.com/

<

こういう機能をもったプラグインて絶対すでにあるだろうと思っていたんですが、CPANで探しても見つからなかったので、書いたんですが、実はあったりするのかな。

追記
miyagawaさんが作ったTemplate::Plugin::Clickableというまったく同じことができるモジュールがすでにありました。やっぱないわけないですよね。。



2005年11月5日土曜日

shibyya.pm テクニカルトーク#6に行ってきました。

shibyya.pm テクニカルトーク#6に行ってきました。告知から開催までの期間がかなり短かったにもかかわらず、会場は満員。少し遅れていったのですが、席は満席で立ち見になってしまいました。

これが会場が満席の様子。120人強いたみたいです。さすが世界最大のperl mongersです。恐るべし。


今回印象に残ったのは、発表直前までデモ用のコードをいじってたnaoyaさんの後ろ姿でしょうかw
それと2次会であんのうんぷれいすのなかの人といろいろお話できたのが刺激になりました。2pass試さねば。





2005年10月28日金曜日

Sledge::Plugin::IfModifiedSince

ひさしぶりにSledgeのプラグインを書いてみました。


Sledge::Plugin::IfModifiedSince 0.01
<追記 date="2005/10/30">上のリンク先が404だったのを直しておきました。失礼しました</追記>


If-Modified-Sinceヘッダからコンテンツが更新されたかを判定するif_modified_sinceメソッドと、レスポンスとしてNot Modifiedを返すnot_modifiedメソッドをPagesクラスにインポートします。

各メソッドはこんな感じで使います。

>

package Your:Pages;
use Sledge::Plugin::IfModifiedSince;

sub dispatch_foo {
my $self = shift;

my $last_modified_epoch = ...;

unless ( $self->if_modified_since($last_modified_epoch) ) {
$self->not_modified;
return;
}
}
<

If-Modified-Sinceを投げてくれるやさしいエージェントにはこちらもやさしくしないとってことでちょこっと書いてみました。



2005年10月27日木曜日

Shibuya Perl Mongers テクニカルトーク #6

Perlっ子なら誰もが参加したいであろうShibuya Perl Mongersテクニカルトークの6回目、Shibuya Perl Mongers テクニカルトーク #6が11月2日に開催されるそうなので、僕も早速申し込みました。

miyagawaさんのSixApartのカルチャーと開発手法はぜひ聞いてみたい!
Ajax,Catalystなどの旬な技術の紹介も面白そうですし、今回もおなかいっぱいになりそうなこゆーい内容になってます。







2005年9月15日木曜日

Sledge::Dispatcherリリース

Sledge用のmod_perlハンドラSledge::Dispatcherがリリースされたみたいです。

トリガのCGIファイルを作らないですむのはかなり便利ですね。
もうひとつ僕がいいなーとおもったのは、URLからPages内のdispatchメソッドがどこにあるかわかりやすくなるなーという点。

トリガのCGIファイルを使う場合、CGIファイル内に呼び出すPagesクラスを記述するのですが、Pagesクラスならどのクラスも
呼べるので、適当に設計して作っていると、URLとPagesクラスが対応しなくなっちゃうときがあるんです。特に僕はちょっと考えたら、
まず手を動かしちゃう人なので、うまく対応しなくなってCGIファイルを編集しなおしなんてことをよくやっちゃいます。

なので、dispatchメソッドを書いた時点でURLが決定するSledge::Dispatcherはかなりイイ!と思いました。

via: #!shebang.jp:Sledge::Dispatcher





2005年9月12日月曜日

Class::DBI 3.0.1の中身は0.96

MFPMのRecent MailでClass::DBIが3.0.1にバージョンアップしたことを知りました。

search.cpan.org: Tony Bowden / Class-DBI-3.0.1

早速何が変わったのかChangesを見てみると、、

>

3.0.1 UNRELEASED

- Code is identical to 0.96
- New section added to documentation on Release Philosophy
- Replace eq_set with is_deeply in t/04 to work around Test::More bug

3.0.0 UNRELEASED

- IDENTICAL to 0.96. Only difference is version renumbering.
<

ということで、中身は0.96と同じで、バージョンを付け直しただけみたいです。
これから大きなバージョンアップを行う下準備というところでしょうか。



2005年8月17日水曜日

Class::DBI::Sweet

CDBIのメーリングリストを眺めていたら、複数のテーブルにまたがった検索なんかをClass::DBI::Sweetを使えば簡単にできるよみたいな投稿があったので、マニュアルを眺めてみましたが結構いろいろできそう。
ざっと見た感じ

-Class::DBI::PagerのようなData::Pageを利用したページング
-Class::DBI::Plguin::CountSearchでできるようなカウント検索
-SQL::Abstractを使った複雑な検索
-JOINを使った検索
-retrieve_allでorder_by
-キャッシング機能

といったようにかゆいところに手が届く機能が満載です。
それぞれの機能は個別のプラグインとしてだいたいCPANにアップされてますが、これひとつですべて住むってのは便利かも。




2005年8月8日月曜日

MIME::Lite::TT::Japanese0.06

MIME::Lite::TT::Japaneseを0.06にバージョンアップし、CPANにアップしました。
今回の変更点は2つです。
- 長すぎる本文を自動改行するようにした。
- perlのバージョンでEncodeとJcodeの利用を切り替えていたのをJcode一本にした。

最初の自動改行については、やろうやろうと思っていたのですが、ついつい先延ばしになっていたのをやっと実装しました。デフォルトで72byte以上(文字数で35文字くらい)の行は自動的に改行されます。この値は変更可能で、MIME::Lite::TT::Japaneseのインスタンス作成時に「LineWidth」という名前で渡してやればOKです。また、自動改行したくない場合は「LineWidth」に0をセットすればOKです。

この自動改行の実装にJcodeのjfoldメソッドを使っているため、今回思い切って、Encodeの使用をやめて、Jcodeで一本化しました。最新のJcodeはperl5.8以降ではEncodeのラッパーとして動作するので、バージョンの切り分けはJcodeに任せようと思ったのも一本化の要因です。

EncodeでISO-2022-JPなMIMEエンコーディングができるようになったのをきっかけにMIME::Lite::TT::Japaneseのバージョンアップを思い立ったのですが、結果として、Encodeを使わないということに。。




Encode 2.11

Encode 2.11がリリースされ、CPANにアップロードされています。

DanさんのエントリーEncode-2.11 releasedからトラックバックをいただいてバージョンアップを知りました。ありがとうございます。

今回のバージョンアップの目玉はなんと言ってもISO-2022-JPのMIMEエンコードに対応したことでしょう。以下のようなコードで簡単にエンコードできるみたいです。
>

$header = encode('MIME-Header-ISO_2022_JP', $utf8);
<

これでまかまかさんのおっしゃるとおり、MIME::Lite::TT::Japaneseのコードを簡単にできそうです。







2005年8月1日月曜日

Class::DBIの開発が大変なことになっている模様。。

Class::DBIの作者が最近立ち上げたメーリングリストを削除、さらに、アーカイブとWikiも削除してしまったそうです。
そろそろ1.0のリリースかなんて思っていたので、かなりの衝撃です。。
今後の動向に注目です。

via:Class::DBI の開発でトラブル: blog.bulknews.net