タグ

ブックマーク / blog.64p.org (18)

  • Perl 初心者がウェブアプリケーションを書く時に気をつけるべきこと - tokuhirom's blog

    $c->req->param('id') みたいなメソッドは使ってはいけない。これは歴史的経緯から残っているものなので、基的に使わない方がいい。 $c->req->parameters->{id} をかわりに使ってください。 Perl の世界には List コンテキストというものがあって、これがウェブアプリケーションを開発するときには鬼門となります。 +{ id => $c->req->param('id') } のようなコードは、param メソッドはリストコンテキストではすべての id を返すので、 ?id=3&id=hasegawa&id=yosuke というようなクエリが来ている場合、 +{ id => 3, hasegawa => 'yosuke' } のようなデータ構造が作成される。これは明らかに意図していない挙動である。 以下の様にかくのがおすすめです。 my $id =

    shiban8y
    shiban8y 2014/09/11
  • Minilla を用いた Perl モジュールの作り方 - tokuhirom's blog

    http://shanon-tech.blogspot.jp/2013/05/perl.html Perl モジュールの作り方、2013年においては Authoring tool をつかって作るのがよいです。具体的には Minilla でつくるのがオススメであります。 perlbrew なり plenv なりで perl をいれたあとは、 % cpanm Minillaとして Minilla をインストールします。 % minil new Fooとすると、Foo.pm のスケルトンができあがります。作者の名前などは ~/.gitconfig などから自動的にさがしてきますので、設定不要です。 できあがったディレクトリは以下のような形になっています。 Foo ├── Build.PL ├── Changes ├── cpanfile ├── lib │   └── Foo.pm ├── LI

    shiban8y
    shiban8y 2013/06/04
  • Emacs で一人 Twitter - tokuhirom's blog

    Day One で一人 Twitter しよう、みたいなエントリをたまにみるんだけど、正直 Day One の iPhone アプリはつかいづらいし、なんか day one の mac アプリもなんかいちいちひらくのが面倒でつかってなかった。 そこで、われわれのような Emacs 厨は常時 Emacs を開き、その中で一生の大部分をすごしているので、emacs でひとり twitter っぽくしようと考えた。 change-log-mode をちょっと改造して、ささっと設定。いいかんじである。 見た目は ↓ のようなかんじ。 --- /tmp/zshdRLJOW 2012-07-24 11:50:43.060566000 +0900 +++ .emacs.d/elisp/hacked-add-log.el 2012-07-24 11:43:53.712566000 +0900 @@ -44

  • ふと思いたって、emacs の設定を1からやりなおしたの記 - tokuhirom's blog

    久々に Emacs の設定をした。普段は vim をつかっているのだが、日語の長 文を vim で書くのはつらいので Emacs 環境を整備したかったのだ。 (Emacs ですべてを書くと左手の小指が死ぬので、日語のときだけにつかう ことにしている) Emacs の設定は最近は MELPA だか package.el だか el-get だかでやるのが ナウいらしいのだが、どうちがうのかよくわからない。いろいろと日語の情 報があるのだが、「そもそもどれがなんなのか」というところをあんま説明し てくれてなくて辛い。 いろいろと調べた結果、僕は以下のような結論にたっした。 package.elインストーラ。tar ball とか file を指定すると、それをインストールして くれる。便利。 MELPAレポジトリから定期的にフェッチしてきて、いいかんじに package.el 対応の サ

  • 【適当訳】Any::Moose は Deprecated です。 - tokuhirom's blog

    http://search.cpan.org/~sartak/Any-Moose-0.20/lib/Any/Moose.pm 新しいコードでは Moo を Any::Moose のかわりに使ってください。 Moo のクラス/ロールは、透過的に、そして正しく Moose にアップグレードすることができます。これは、Any::Moose より根的にいいデザインです。Mouse のメタクラスはMoose のメタクラスといいかんじには動作せんのです。 Any::Moose はよくがんばりました。まあなんかそれなりにはうごいていたけど、もうこれ以上つかわないでね :) MooX::late ってモジュールをつかうと Any::Moose から Moo への移植が楽になりますのでお試しあれ〜。 【解説】 後半にいくにつれて適当度がましています。

    shiban8y
    shiban8y 2013/02/13
  • plow というプロジェクトをはじめた - tokuhirom's blog

    plow というのは、なんか perl5 をより簡単につかえるようにするというか、お気楽につかいたい気分のときのためのツールです。 https://github.com/tokuhirom/plow/ インストールすると plow コマンドがつかえるようになります。 いくつかの機能がありますので、気がむいた順で紹介します。 まず、一個おおきいのは、repl です。まあ、こんなかんじでつかえます。 % plow plow> 3+2 5 plow> undef plow> undef plow> 3+2 5 plow> undef plow> say "YO!" YO! 1普通に便利ですね。

    shiban8y
    shiban8y 2013/01/29
  • 2013年 のPerl5 の OOP について考える - tokuhirom's blog

    Moo今年の命? 新しくつくるならこれが無難な気がします。速度的にも Mouse とあまりかわらない。 若干依存がおおい気もするけど、インストールベースがふえれば気にならなくなるかな、ともおもいます。 Class::XSAccessor とかつかってるんで、速度的にもホットスポットは速いのがよい。 なお発音はムーだとおもう。 (http://www.forvo.com/word/moo/) Mouse完成している感じがする。得にわるい点もないが、あえていうと xs 部分がおおいので、gfx 以外がメンテできないかんじがするのが欠点か。 Xslate をつかっている場合は自動的に xslate が mouse つかってるので、自然と Mouse がロードされるので、そういった意味では Mouse つかってもいいかなとおもっている。

    shiban8y
    shiban8y 2013/01/16
  • Email::Sender will switch to Moo? - tokuhirom's blog

    Email::Sender の TRIAL version が cpan にあがっていますが、なんと Moo に移行しています。Moose をつかっているからという理由で Email::Send にこだわったり、Mail::Krohn とかいう alternative をつくったりする時代の終焉がちかそうです。 Mail::Krohn はつくったはいいけどもう will be deprecated になる気がします。 @rjbs++

    shiban8y
    shiban8y 2013/01/09
  • Testing Web Application 2011秋 - tokuhirom's blog

    とにかく楽に、お気軽に。お気軽にテストを追加できて、お気軽にテストを実行できる。というのがなによりも重要です。 追加しようとおもったときに「どう追加したらいいかわからない」という状況になりがちなので、あらかじめいろいろな構成要素ごとにテストをひととおりかいてみるというのも重要だとおもいます。O/R Mapper のクラスのテストとか、model のテストとか、コントローラのテストとか、JSON API のテストとか。。 ExtUtils::MakeMaker でテストをうごかさないExtUtils::MakeMaker を素でつかうと blib/ とかつかってきてうざいので、Makefile.PL に以下のような hack をほどこしてあります。ウェブアプリケーションで blib/ とかにコピーする必要ないですよね。実運用でも blib/ でうごかさないし、インストールもしませんし。 #

  • Ukigumo - Yet another continuous testing tool - tokuhirom's blog

    http://github.com/ukigumo/ なんか、お気軽につかえて、カスタマイズが容易で、お気楽な continuous testing を support する tool がほしかったので、ちょろっとかいた。 ターゲットは自社サービスの web アプリケーションです。 ベーシックなクラサバ構成となっています。サーバー側は簡単な Web UI と、RPC を提供しているだけで、ごくシンプルです。サーバー側とクライアント側には依存関係はありません。クライアント側はプラガブルな構成となっていて、誰でも簡単にいじれます。 クライアント側は Plagger 風にしようとおもったんですけど、Plagger 風にするといかんせんおおげさになりすぎるので、ライブラリとしての提供にとどめました。べろっとよんだら普通に理解できます。コードをシンプルにするために忌み嫌われがちな Mouse を採用

  • LL脳な人でもこれぐらいは覚えておくとうれしいgdbのつかいかた。または猫でもわかるgdb講座 - tokuhirom's blog

    LLつかってても「ばすえらーになるー」っていう状況ってたまにあるわけですが、LL しか普段つかわないゆとりは、ここでお手あげになってしまったりすることがままあります。 で、「ばすえらーになるんですが」ってときの最低限これだけはやってみたらどうか、という話。「えー、わたし gdb とかわかんないしー」とかいってる人でもこれぐらいならできるんじゃないかなーっと。 perl t/00_load.tというコマンドで segv するという場合、gdb をつかって % gdb --args perl t/00_load.tとうつ。 すると、以下のようにプロンプトがでるので、"run" とうつ。これでスクリプトがはしりはじめる。 % gdb --args perl t/00_load.t GNU gdb (GDB) 7.0-ubuntu Copyright (C) 2009 Free Software

  • 最近は local::lib を直接つかわないでもいきていけるという話 - tokuhirom's blog

    wget --no-check-certificate http://cpanmin.us/ perl cpanm -l extlib My::Favorite::Moduleってやれば、extlib/ にモジュールをインストールしてくれる。cpanmin.us からとれる script は、コア以外にまったく依存してないので、すぐつかえる。 あとは以下のようにしたらライブラリパスがとおります。 perl -Mlib=extlib/lib/perl5 myscript.pl これで基的には大丈夫だとおもいます。

  • Perl5 によるメール送信 - 実践的な Email::Sender の利用方法 - tokuhirom's blog

    Perl5 では、E-mail の送信をするためのモジュールが多数 CPAN にアップロードされているが、現在もっともまじめにメンテされていて質がよいのは Email::Sender らしい。 Email::Sender は登場当初はドキュメントもなさすぎるしつかいものにならなかったが、現在ではだいぶマシになっている。Moose 依存が気にならないケースでは、実用としてつかっても問題ないとおもう。 iso-2022-jp の日語のメールを送るには、以下のようにすればよい。 use 5.12.1; use utf8; use Email::Sender::Simple qw(sendmail); use Email::Simple; use Email::Simple::Creator; use Data::Recursive::Encode; use Encode; # e-mail o

  • gearman の worker process にスコアボードをつけてみる - tokuhirom's blog

    http://d.hatena.ne.jp/tokuhirom/20100201/1264989237 ↑でつくったスクリプトに score board 機能をつけてみた。 で、これかいてからきづいたんだけど、Parallel::Prefork には Parallel::Prefork::SpareWorkers ってのがあるんですね。で、これつかうと score board とかもつかえる。じゃあ、なにがちがうのかなーと。 で、いろいろきいてみたところ 「Parallel::Scoreboard のメリット」は 任意の長さのデータを書ける監視プロセスとワーカープロセスに親子関係がなくても使える任意のマネージャーと組み合わせることができる毎秒1回ポリングとかにはむかない(モニタリングの方は遅いため) ステータスの書き込みは seek & write だから速い「Parallel::Pref

  • How to authenticate with basic auth + htpasswd - tokuhirom's blog

    use strict; use warnings; use Authen::Htpasswd; use Plack::Builder; my $app = sub { [200, [], ['OK']] }; builder { my $authen = Authen::Htpasswd->new('user.txt', {encrypt_hash => 'md5'}); enable 'Auth::Basic', authenticator => sub { my ($username, $password) = @_; my $user = $authen->lookup_user($username); return $user && $user->check_password($password); }; $app; };

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • Perl で utf8 化けしたときにどうしたらいいか - TokuLog 改メ tokuhirom’s blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • 1