タグ

ブックマーク / mt.endeworks.jp (13)

  • CGIをPlackで開発(2) - D-6 [相変わらず根無し]

    CGIをPlackで開発(2) 前のエントリ書いたら宮川さんにオススメ方法を教えてもらった http://twitter.com/miyagawa/status/10271128928plackup \      -L Shotgun      -MPlack::App::WrapCGI      -e 'Plack::App::WrapCGI->new(script => "/path/to/cgiscript.cgi")' だそうです!これなら全ての要件を満たせるもよう!そしてapp.psgiを作る必要ありません。 今これやってみて一つだけ問題点。多分POD入りのCGIは動かない。それと、__DATA__は見てくれるけど、__END__があると動かない。__END__さっき簡単なパッチのpull requestを送っておきました! カテゴリ 開発 タグ cgi perl plack 2

  • CGI.pmで作ったCGIをコマンドラインから実行する - D-6 [相変わらず根無し]

    CGI.pmで作ったCGIをコマンドラインから実行する 某所での会話: 13:14 <#perl6> t****: y'know, one thing that got me into Ruby was that the CGI library would auto-detect that I was testing it in a browser and take arguments as if I was working in a browser. Made troubleshooting a breeze... 13:14 <#perl6> t****: I mean, testing from the command line... 13:15 <#perl6> t****: I always wished the perl CGI module would do that...

  • make bundle_local_lib - D-6 [相変わらず根無し]

    make bundle_local_lib 最近、miyagawaさんが書いたこちらののツールを多少改変したものを使ってlocal::lib環境にCatalystアプリの全依存関係を突っ込んでからデプロイ、ということをしていました。 が、このツール自体をコピペするのに疲れました。なのでApp::BundleDepsとModule::Install::Bundle::LocalLibというものを作りましたよ!M::I::Bundle::LocalLibのほうはMakefile.PLに1行だけ記述を入れておくとmake bundle_local_libと書くだけで./extlibにlocal::lib環境を作ってくれるというものです。 俺的には超便利! 想定している使い方はApp::BundleDepsのPOD(cpan github)を見てもらうのが一番よいかもしれません。 これを使うとCa

  • Perlシグナル処理 - D-6 [相変わらず根無し]

    Perlシグナル処理 思い立ったので適当に書いてみる Perlのシグナルハンドラは%SIGグローバル変数にシグナル毎のハンドラを設定することで実現できる。例えばCtrl-CはSIGINTを発生させるので、INT用のハンドラを設定する: $SIG{ INT } = sub { warn "got SIGINT!" }; %SIGに限った事ではないのだけれども、ここでまず注意しなくてはいけないのが、%SIGはグローバル変数であること。ある関数foo()内で%SIGをいじったあとにreturnすると、foo()を呼び出したスコープでもその値は有効になってしまう。これだと自分はよくても他のモジュール等に影響を与える可能性がある。そこでまず癖としてlocal修飾子を使う癖をつけてほしい local $SIG{INT} = sub { warn "got SIGINT (OUTSIDE)" }; su

  • Fukuoka Perl Workshop #14 行ってきました - D-6 [相変わらず根無し]

    Fukuoka Perl Workshop #14 行ってきました 11/14、ようやく杉山さんとの去年?からの約束を果たすべく福岡に行って、Fukuoka Perl Workshop #14 に参加してきました。 都内でやっているイベントでは比較的最先端技術とかを話す人が多いですが、地方にいくと必ずと言っていいほど「実務的な話」のリクエストがあがります。今回もご多分に漏れずまっさきにそういうリクエストが出たので、JPAの肩書きで参加はしたものの、弊社endeworksの実例を出して色々どういう開発手法を採っているのかを話させていただきました。     http://users.endeworks.jp/~daisuke/presentations/fukuoka-pm/fukuoka_perl_workshop14.pdf 発表の時はJPAのロゴが入ったスライドだったんですが、内容がJP

  • JPAサイト構築中 - D-6 [相変わらず根無し]

    JPAサイト構築中 結局ユーザー管理だとか、お金を振り込む事だとか、なんか色々やらざるを得ないと言うことから、自分で書いたほうが速いという決断でJPA用のサイトを一からCatalystで書いてます。 今回はこれをgithubで晒しているわけですが、今ふと思ったのは、普段から我々PerlプログラマはCPANでいろんなCatalystのプラグインだとかを見ていたり、もしくはあちこちで細かいティップスみたいなものを聞きかじってるわけだけど、ひょっとすると俺たちほとんど他人のCatalystアプリケーションって見たことない? よくよく考えたら自分でさえも2,3回しかなかった。もちろん、社内のものは除く。完全に外部の奴ね。MojoMojoみたいな完全にできあがってるアプリケーションってなかなか外に出てこないし、そもそも一回作ってそのままインスコしておしまい、みたいなの多いもんな。 まぁそんな事を踏ま

  • JPA Semniar #1 (第一回旗揚げセミナー!) - D-6 [相変わらず根無し]

    JPA Semniar #1 (第一回旗揚げセミナー!) Japan Perl Associationセミナー#1 を開催します。 記念すべき第一回旗揚げセミナーです! 秋葉原UDXでCatalystを使い倒す話とMoose等の最新ベストプラクティスに関しての話になる予定で、講師はJay Shirley氏です。日ではまだあまり名前が売れてないかもしれないですが、トップレベルの技術者で、CatalystやDBIx::Classなどを現場でどう生かすのかというノウハウについては絶大なるものを持っています。また、最近ではMatt Trout氏らとEnlightened Perl Origanisation (EPO)という、エンタープライズ分野でPerlを使うためのノウハウやサポートの提供を行う団体を立ち上げています(EPOはThe Perl FoundationなどよりもJPAにかぶるかもし

    studio-m
    studio-m 2009/03/11
    是非! 同時通訳とか配慮が行き届きすぐる。希望です
  • モダンPerl入門とどいた - D-6 [相変わらず根無し]

    モダンPerl入門とどいた 「モダンPerl入門」が届きました。翔泳社様、ありがとうございます>< 嬉しい限りなんですが、でももう怖くてひらけねぇ。間違いとかあったら嫌だー。こわいー。僕はテレビとかでBGMが怖い感じになるとチャンネルを変える人なのです。中味を読んで万が一いやな内容があったらいやだからもうしばらくあけないぞ! なんて事は言っていても見ないわけにはいかないので見たわけですが、装丁とか、僕の予想をはるかに超えていてすごい嬉しいです。内容も実は結構良い内容だとは思っております。自信がないのは文章の書き方とかだけで、ここまでターゲットを絞ってMooseの実践的な使い方とかを解説したは現在他には存在しないはずだし、その辺り興味のある方には我ながらちょうどいいと思います。 ちなみにこの、執筆時には全てPODで書きました。=head1 チャプタータイトルみたいな感じ。表とかはas-

    studio-m
    studio-m 2009/02/03
    konozamaらなければいいが…
  • 「モダンPerl入門」書きました。 - D-6 [相変わらず根無し]

    「モダンPerl入門」書きました。 モダンPerl入門 今みたらAmazonでも表紙が入稿されたらしいので宣伝させていただきます。えー、モダンPerl入門というを翔泳社さんから出版させていただくことになりました。でも最初に断っておきます。誤字脱字はある気がします。ごめんなさいごめんなさい。日語不得手なんです(こういう時だけ帰国子女カードを使わせていただきます)。 ともあれ、内容的には自分が普段Perlを使っていて、同僚とかに知っておいてほしいな、って思っている実践的な内容ばかり書きました。このはたとえPerlがメインの言語ではなくともPerl仕事で使っていて、なおかつ初級〜中級のあたりでうろうろしてしまっている人たち向けに書いています。初級者向けの構文説明はほとんどありません。上級者向けのわけわかんないところはXS以外ありません(はい、XSの入門あります)。ほとんどは、Perlで業

    studio-m
    studio-m 2009/01/17
    発売は2/10!
  • File::Tempの使い方 - D-6 [相変わらず根無し]

    File::Tempの使い方 元ネタはこちらから File::Tempオブジェクトはファイルハンドルであり、同時にoverloadを使用すると文字列に見える、という妙なオブジェクトなんですね。なので、以下のコードは無用 my $expect = 'hogehoge'; my $out = File::Temp->new; diag $out; open my $fh, '>', $out; # ここ print $fh $expect; close $fh; my $contents < io $out; is $contents, $expect; File::Temp->new()した段階ですでにFileHandleオブジェクトになっているはう。なのでこいつに直接書き込んじゃうのが吉 my $expect = 'hogehoge'; my $out = File::Temp->new;

    studio-m
    studio-m 2008/09/23
    「UNLINKオプションをつけておけば、File::Tempオブジェクトがスコープ外に達したときに自動的に一時ファイルが削除されます。」
  • YAuthスペック - D-6 [相変わらず根無し]

    YAuthスペック Yauthとは"Yome(嫁) Auth"の事で主に男性が婚姻関係、もしくは親密な関係にある女性に対しての認証を得るために使われるプロトコルです。トランスポートレイヤーは電話やメールが使われる事が多いですが、スペック上の規定は特になく、プラッガブルな実装を可能にしています。 プロトコルに参加するのはPeer (同僚・友達)、Client (認証を得たい人物), End Point (嫁)の三者です。プロトコルが発動する前に、PeerよりClientにProbe (お誘い)メッセージが送信されます。この時点ですでにキャッシュされたEnd PointよりのレスポンスをClientが持っている場合はただちにClientからPeerへ返答が返ります。 キャッシュされたレスポンスがない場合はClientよりEnd Pointに実装依存のトランスポートレイヤーに乗せてクエリーが投げ

    studio-m
    studio-m 2008/05/30
    ClientがEnd Pointの認証を得ずPeerとの通信を行うことが可能な脆弱性が指摘されており、それに起因する事故の報告も後を絶たない
  • はまった JOIN with DBIx::Class - D-6 [相変わらず根無し]

    はまった JOIN with DBIx::Class DBIx::ClassでJOINを使用するには二つ目のハッシュにjoin要素を入れるんだが、ここにセットする名前ではまった。 My::Schema->resultset("Hoge")->search( { "hoga.poop" => $poop }, { join => "hoga" } ); ってやってると、No such relationship...とか言われちゃう。色々と中身を見て最終的に DBIx::Class::ResultSource->relationship_info($relation); がundef返してる。さらに確かめるためにrelationshipの中身を見る: use Data::Dumper; print STDERR (My::Schema->resultset("Hoge")

    studio-m
    studio-m 2008/04/24
    古い設計のDBでハマったけど助かった! print Dumper($schema->resultset('Hoge')->result_source->_relationships);
  • ハッシュに値を振り分ける時のコード - D-6 [相変わらず根無し]

    ハッシュに値を振り分ける時のコード 例えばCSVなファイルを読み込んで、それをハッシュの中に展開、格納と言った感じの動作をPerlで行いたかったとします。例えば 1,2,3 と言った行を my %hash = ( 'col1' => 1, 'col2' => 2, 'col3' => 3 ); のようなハッシュに展開する関数が欲しいわけです。皆さんはこれをどういう風に実装しますか?ぱっと思いつくのはforループですよね my @colums = ('a', 'b', 'c'); my @values = (1, 2, 3); # もちろん実際にはsplit(/,/, $line)とか、CSVパーサーを使う my %h; for (0..$#columns) { $h{ $columns[$_] } = $values[$_]; } 実はこのようなCっぽい書き方はPerlでは大概遅いです。D

    studio-m
    studio-m 2008/03/12
    my @colums = ('a', 'b', 'c'); my @values = (1, 2, 3); my %h; @h{ @columns } = @values;
  • 1