タグ

ブックマーク / holidays-l.hatenadiary.org (7)

  • Re: Time::Piece::MySQL とタイムゾーン - Yet Another Hackadelic - ヒルズで働く@robarioの技ログ

    Time::Piece::MySQL とタイムゾーン (訂正あり) - Yet Another Hackadelic Unix timeにタイムゾーンの概念を持ち込むのは気持ち悪いです。 得られたUnix timeに対してタイムゾーンに対応する目的で数値を加算減算してはいけないと思います。 何故ならUnix timeは「UTCにおける1970/1/1からの経過秒数」だからです。 タイムゾーンがJSTになっていて、NOW()はJSTにおける時刻を返しているという前提で話を進めますが、 (当然のことながら、UNIX_TIMESTAMP()はUTCにおける時間を返している) 何が話をややこしくしているかというと、 $ perl -MTime::Piece -MTime::Piece::MySQL -e 'my $t = Time::Piece->from_mysql_datetime("2010

    Re: Time::Piece::MySQL とタイムゾーン - Yet Another Hackadelic - ヒルズで働く@robarioの技ログ
  • voidコンテキストの使われ方 - ヒルズで働く@robarioの技ログ

    まあ、PP のモジュールが void context であることを判定につかってるケースってほとんどないんですけどね。 ないですねぇ。自分もそんなの書かないし。 ちなみにClass-MOPではlib/Class/MOP/Method/Wrapped.pmでvoidコンテキスト関連の処理が書かれてますね。(前のエントリの最後に書いたのと同じ用途) ラップ系はvoidコンテキストの面倒を見ないといけないですからね。 これまでの流れだと「そもそもvoidコンテキストって何に使うねん」って思ってる人もいそうなので例を挙げておきます。 voidコンテキストの実用例としては、例えばPod::Simple::RTF(Perl5.9.3以降ならコアモジュール)にあって、lib/Pod/Simple/RTF.pmのsub rtf_escで出現します。コメントも付いてて処理も平易なので、何やってるかは見れば分

    voidコンテキストの使われ方 - ヒルズで働く@robarioの技ログ
  • Catalyst::Runtimeのバージョンチェックをしているようでしていない件 - ヒルズで働く@robarioの技ログ

    Catalyst::Helperが出力するMyApp.pmに、 use Catalyst::Runtime '5.70'; ってあるじゃないですか。 あまりHelper使わないから気付かなかったけど、良く見たら文字列になってるんですよね。ってことは、Catalyst::Runtimeバージョン5.70以上を要求してるわけじゃなくて、sub importに'5.70'という引数を渡してるだけなんですよ。 これを use Catalyst::Runtime 5.70; このように書くとバージョンチェックが働いて、Catalyst::Runtimeのバージョンが5.70未満だとコンパイルエラーになります。 $ perl -e "use Catalyst::Runtime '5.70';"; $ perl -e "use Catalyst::Runtime 5.70;"; Catalyst::Ru

    Catalyst::Runtimeのバージョンチェックをしているようでしていない件 - ヒルズで働く@robarioの技ログ
  • Perlから外部コマンドを実行する - ヒルズで働く@robarioの技ログ

    最近Perlから外部コマンドを実行する場合は、openやsystemなどを使わずにIPC::Cmdを良く使っている。 特に深い理由はないんだけど、 IPC::Cmdは5.009005からコアモジュールに入っている それなりに綺麗に書ける $IPC::Cmd::VERBOSEを真にしておけば、実行するコマンドの内容を出力してくれる 戻り値も「標準出力,標準エラー出力,その両方」が、改行区切りで配列になって戻ってくるのも地味に便利 (『かえりち』だと『返り血』に変換されるので、昔から『もどりち』って言うようにしてる>id:amachang) とかかなあ。多分1番目の理由が大きい。コアモジュールに凝ってるのかもしれない。 ログ吐きにはLog::Message::Simple使うようになったし。 まあLog::Message::Simpleは、daemontools付属のmultilogと相性が良

    Perlから外部コマンドを実行する - ヒルズで働く@robarioの技ログ
    studio-m
    studio-m 2009/05/01
    外部コマンドの実行にはIPC::Cmdを使う。コアモジュールだし、戻り値がSTDOUT,STDERR,その両方が改行区切りの配列で戻ってくるのも便利。
  • Catalystのバージョンを上げたら文句言われた。 - ヒルズで働く@robarioの技ログ

    Catalystのバージョンを5.71にしたらこんなメッセージが出るようになりました。 [warn] Used regexp fallback for $c->model('View::TT'), which found 'MyApp::Web::View::TT=HASH(0x21d44d0)'. Relying on regexp fallback behavior for component resolution is unreliable and unsafe. You probably meant $c->model('MyApp::Web::View::TT=HASH(0x21d44d0)') instead of $c->model{'View::TT'}, but if you really wanted to search, pass in a regexp as the

    Catalystのバージョンを上げたら文句言われた。 - ヒルズで働く@robarioの技ログ
  • Perlで既存のファイルを書き換える時のBest Practicesは? - ヒルズで働く@robarioの技ログ

    何か今日sed -iのようなことをしたくなったのですが、読み書き両用モード(+<)でopenしてseekしてtruncateして云々というのが面倒だったのでテンポラリファイル使ってごにょごにょしてしまいました。 すんなりできる方法を助言を頂きたく。。。 条件 ファイル一覧は、抽出条件が複雑なためスクリプト内で生成されます(コマンドラインから与えられません)。 できればコアモジュールだけで・・・ ※1番目の条件は、ファイル一覧抽出後にそれらを引数にしてexecするという手もありますね。と書いてみたものの、引数が多くなるとダメになってしまうので、この案は却下。 use File::Temp; use File::Copy; foreach my $file (qw(foo.txt)) { # open temporary file my $out = File::Temp->new; open

    Perlで既存のファイルを書き換える時のBest Practicesは? - ヒルズで働く@robarioの技ログ
    studio-m
    studio-m 2008/07/19
    Inplace-Editでファイルを書き換える
  • indexアクションへのtrailing slash - ヒルズで働く@robarioの技ログ

    筆者は、なるべくデザインをローカル(つまりfileプロトコル)で確認できるように、外部JS/CSS/画像へのパスは絶対パスではなく相対パスで書くようにしています。また、少し話はズレますが、あるアクション固有の静的リソースの配置を /action/ /images/action/foo.png /js/action/bar.jsではなく /action/ /action/images/foo.png /action/js/bar.jsとして、/action/内のHTMLには「./images/foo.png」「./js/bar.png」と書くようにしています。 /action/以下を丸ごとアーカイブして他所へ持っていってもそれなりに見えたり見えなかったり。 新規に作り直したいと思ったら、色々ファイル名を変更しなくても % mv ./action ./action_old % mkdir ./

    indexアクションへのtrailing slash - ヒルズで働く@robarioの技ログ
    studio-m
    studio-m 2008/07/19
    末尾の/無しでindexにアクセスした時にRoot.pmのautoでリダイレクトする方法
  • 1