2011年7月29日金曜日

Image::Magickのdensityが効かない



コマンドラインでconvert -density 300 sample.pdf out.png
はできたのに、以下は変化しない。



my $img = Image::Magick->new();
$img->BlobToImage($pdf_data); #読み込み
$img->Set(density => '300', magick => 'png');
@png_data = $img->ImageToBlog(); #書き出し



悩んだあげく読み込み前に記述で出来た。



my $img = Image::Magick->new();
$img->Set(density => '300');
$img->BlobToImage($pdf_data); #読み込み
$img->Set(magick => 'png');
@png_data = $img->ImageToBlog(); #書き出し



うへぇ、なんでだろ。ドキュメントに書いてあったかなぁ、、、


蛇足:gsでpdf->画像変換の場合


gs -dSAFRE -dBATCH -dNOPAUSE -sDEVICE=png16m -r400 -sOutputFile=out_%d.jpg sample.pdf
って%dを書かないと、1ページ目しか出力されないです。


image to pdf


convert *.jpg output.pdf





2011年7月25日月曜日

Text::Xslateのcascade



参考ページ


http://perl-users.jp/articles/advent-calendar/2010/casual/8
http://search.cpan.org/~gfuji/Text-Xslate/lib/Text/Xslate/Syntax/Kolon.pm
http://pixiv.cc/himachoco/tag/Xslate


環境


mojoliciousとText::Xslate(Kolon)


基本


welcome.html.tx を呼び出した際に、wrapper.txでラップする。



# welcome.html.tx
<p>xslate render this</p>




# wrapper.tx
<!DOCTYPE html>
<html>
<head></head>
<body>
</body>
</html>



継承


wrapper.txを別テンプレートを利用して組み立てる。



<!DOCTYPE html>
<html>
<body>
</body>
</html>




# head.tx
<head>
<meta hoge />
</head>



でも、この場合は継承する必要もなかったから
: include inc::head で読み込むだけでいいか。


todo


今のままだと全部のファイルに
: cascade inc::wrapper # template/inc/wrapper.tx
: around main -> {
: }
を書かないといけないんだけど、どうやるんだろう。。。





2011年7月16日土曜日

一時ファイル作成



File::Temp使わんでも、my $fh = IO::File->new_tempfileで良かったんや。





Archive::Zipにzipデータを渡す場合、IO::Stringで。



IO::Scalarだと_isSeekableでシークできないと言われるので、



my $zip = Archive::Zip->new();
my $fh = IO::String->new($zip_data);
$zip->readFromFileHandle($fh) == AZ_OK or warn 'open error';


な感じで。

docにもちゃんと書いてあって、IO::Scalarは対応する予定はないそうです。





2011年7月5日火曜日

Ubuntuにeasy_install



sudo apt-get install python-setuptools





starmanとMojoliciousこと始め





$cpanm Mojolicious::Lite
$cpanm Server::Starter
$cpanm Net::Server::SS::PreFork
$start_server --port ***.***.***.****:3000 -- starman --workers 32 myapp.pl


myapp.pl



#!/usr/bin/env perl

use Mojolicious::Lite;

get '/' => 'index';
app->start;

__DATA__

@@ index.html.ep
<html><body>foo</body></html>



ok,動いた。portを有効にしておくの忘れないように。未来の僕。
次はnginxでリバースプロシキとText::Xslate継承か。
デーモン化もいるね。