flightというアプリを作ってみたのだがどうか

http://github.com/typester/flight/tree/master

lighttpdを使用してFastCGIスクリプトのテスト(開発)サーバーを簡単に立てられるアプリです。

$ flight -p 3000 yourscript.fcgi

とかすると localhost:3000 でそのfcgiスクリプトが動くという感じ。

catalystだったら

$ flight -p 3000 ./script/myapp_fastcgi.pl

でOK。

Catalyst用にはすでに専用のヘルパーを書いていて、lighttpdでテスト(開発)サーバーを立てられるようにしていたのだけどそれをもっと汎用的にした感じ。

ネームスペースは FCGI::Server::Lighttpd とかしちゃってるのだけどどうだろう? App::Flight とかのがいいのかなー。

意見求む。

by typester / at 2008-06-04T13:51:00 / perl / Comment

PDF::FromImage

とか言うのを作った。exampleディレクトリにimages2pdf.plというのがあって、これつかうと

image2pdf.pl -o output.pdf *.png

とかやることによりコマンドラインで渡した画像から一気にPDFのスライドが作れる。

install_script するかまよったけどとりあえずしなかった。うかつにやるとおこられそうだしな。。

by typester / at 2008-05-29T17:28:00 / perl / Comment

YAPC::Asia 2008 Tokyo

去年は参加できなかったため、2年ぶりのYAPCでした。

僕のセッションの資料もアップしておきました。

やっぱり参加するとグッとモチベーションがあがりますね。

2年前うけた衝撃も大きかったですが、今年もいろいろな人からアイデアややる気をもらいました。

ところでこの2年間でひとつ大きく変わったなぁと思うのは、perlハッカーの使っているPCの種類が変わったことです。

2006年時には

Thinkpad大杉

こんな感じで Thinkpad が幅をきかせまくっていたと思うのですが、今回の hachathon で Thinkpad を使っていたのは僕と mizzy さんだけ!

今年はみんな Macbook。

R0010880.JPG

Hackathon きてた人の9割くらいは macbook だったんじゃなかろうか。。

by typester / at 2008-05-22T15:17:00 / perl · yapc / Comment

Google Docs にファイルアップロードするスクリプト

を書いてみた。

http://github.com/typester/www-google-docs-upload/tree/master/example/gdoc-upload.pl

muttとかサーバーサイドのメーラーを使っているとコンソールで開けない添付ファイルが来たときちょっと困るなーと思っていて、いままではsshfsとかでマウントしてあるところに一時的にファイルを保存してそこをローカルのPCから開いていたけど面倒。

いちおうimapも使えるようにしてあるので添付ファイルだけほかのメーラーで読むというのもありかなと思ったけどBeckyもThunderbirdも(imap経由だからか)重くてよけいめんどい。

で、mutt からパイプでわたすだけで google docs にアップロードされたら便利だなーと思って作ってみたというところ。

ただパイプで渡したのを File::Temp で保存してそれをアップしてるのだけど、Google Docs側が拡張子でファイルの種類を判別してるようで、File::Temp->new しただけだと拡張子がつかなくてアップされない><

ので現状は

| gdoc-upload.pl -n ppt

とか拡張子を指定する必要がある。

by typester / at 2008-05-12T12:51:00 / perl / Comment

convertコマンド

ImageMagickのconvertコマンドをsystem関数でたたいてた古いプログラムを動かす必要があったのだが、そのためだけにImageMagickインストールするとか面倒すぎたので、perlでconvertコマンド的なものを書いてお茶を濁した。

ファイル形式の変換とリサイズしかできない。

#!/usr/bin/env perl

use strict;
use warnings;

use Getopt::Long;

use Imager;
use Path::Class qw/file/;

GetOptions(
    \my %options,
    qw/geometry=s/,
);

my $in  = file($ARGV[0]);
my $out = file($ARGV[1]);

my ($width, $height) = ($options{geometry} || '') =~ /(\d+)x(\d+)/;

# read
my $img = Imager->new;
$img->read( file => "$in" ) or die 'Cannot read: ', $img->errstr;

# scale if exists geometry option
if ($width and $height) {
    $img = $img->scale( xpixels => $width, ypixels => $height, type => 'nonprop' );
}

# write
$img->write( file => $out ) or die 'Cannot write: ', $img->errstr;
by typester / at 2008-03-12T12:24:00 / perl / Comment

Catalystアプリオレオレポリシー

下記camr作った時点での僕のポリシーは

  1. アプリ名にかかわらず設定ファイルはconfig.yamlとconfig_local.yaml
  2. でも変更することがないほとんどの設定はyamlには書かない。yamlがごちゃっとするときもい
  3. ForceUTF8系モジュールは使用しない。内部がきちんとutf8で統一されていれば必要ない。
  4. MyApp::UtilsとかいうのでいろいろBKなことをまとめてする。uri_forを気に入るように直したり、FillInFormの挙動変えたり

なんか抜けてる気がするけどこんな感じ。

by typester / at 2008-02-29T12:17:00 / perl · catalyst / Comment

Webカメラから直接写真をFlickrにあげる

はてなフォトライフでWebカメラから直接写真を撮影してアップロードできるようになりました - はてなフォトライフ日記 - 機能変更、お知らせなど

をみて、おもろいなーとおもったので僕も作ってみた。Flickrバージョン。

http://coderepos.org/share/browser/websites/camr/trunk

本家に比べると大分しょぼいけど、動いたので満足した。なんかこれだけで3時間くらいかかった。。

ローカル git レポジトリからあげる方法がわからなんだので、普通に svn import した><

by typester / at 2008-02-29T02:54:00 / perl / Comment

utf8::is_utf8

miyagawaさんが#catalystでいってたことやっと理解できた、きがする。

use Data::Dumper;

my $s = "H\x{c3}\x{ab}llo";

utf8::decode($s);

warn Dumper $s;        # => "H\x{eb}llo"
warn utf8::is_utf8($s) # => 1

だけれども

my $s = "H\x{eb}llo";

warn utf8::is_utf8($s) # => Warning: something's wrong

ということで、"\x{6751}\x{702c}\x{5927}\x{8f14}" などというData::Dumper表記でかならずしも utf-8フラグがたつわけじゃない。ということがいいたかったんだと思うのだけれど、

そもそも ë が latin-1 では "\x{eb}" だけど utf-8 では "\x{c4}\x{ab}" であるということを僕が認識してなかったせいでおかしなことになった。すみません。

by typester / at 2008-02-17T23:07:00 / perl / Comment

Catalyst::Controller::Resources

かっこいい。

オレオレ規約をもとに雛形を生成するヘルパースクリプトでがんばるよりこういう自分用のコントローラをつくるほうがスマートだなぁ。

Catalystユーザー的にはオールドタイプな自分としては見習おうと思った。

by typester / at 2008-02-16T19:34:00 / perl · catalyst / Comment

ユニークなランダム文字列

すでに生成したIDかどうかを気にする必要がないユニークな文字列を作成しようとした場合

use Data::UUID;
use MIME::Base64::URLSafe;

print urlsafe_b64encode( Data::UUID->new->create );

こんな感じにやるのがいいのかなぁ。これで22文字。

んー。

エントリーのURLとかにつかいたくてもう少し短くしたいけど、文字列生成したときに重複してないか調べるためにDBを引くというのがイヤダナー。

by typester / at 2008-02-08T14:19:00 / perl / Comment

3 4 5 6 7 8 9 10 11 12

(Page 7 of 30)