タグ

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

  • You can install cperl by plenv - tokuhirom's blog

    Today, reini released cperl-5.22.1, is faster, typed perl5 implementation. See http://blogs.perl.org/users/rurban/2015/09/cperl-5221-released.html. I added cperl support for plenv. You can install it by following one liner. plenv install https://github.com/perl11/cperl/archive/cperl-5.22.1.tar.gz Enjoy!

    likk
    likk 2015/09/16
  • Xslate の mark_raw は template に書かない - tokuhirom's blog

    Xslate の mark_rawtemplate 側では使わずに、Controller ないし Model で使って欲しい。 ある文字列が、HTML として処理すべきものかどうかは、サーバー側で判断すべき事案であって、マークアップエンジニアが判断すべき事項ではないから、というのが大きい。 「タグがうまく入力できないんですけど」というディレクターからの起票によって、それをマークアップエンジニアがなんとなく TT の | html はずして XSS 大発生! というような事態は、昭和の時代には多発していたという。 そのような惨事を我々は繰り返すべきではない。 歴史に学ばなくてはならない。

    likk
    likk 2015/03/23
  • [perl] epoch 秒っぽいやつを置換する - tokuhirom's blog

    https://metacpan.org/pod/from_unixtime をみてやってみた。 > cat sql_result id 1 created_at 1419702037 updated_at 1419702037 > perl -MTime::Piece -pe 's/\b(1[0-9]{9})\b/"$1(".localtime($1)->strftime("%F %T").")"/ge' < sql_result id 1 created_at 1419702037(2014-12-28 02:40:37) updated_at 1419702037(2014-12-28 02:40:37) 自分の場合だとこんぐらいのワンライナーでいいかな、と。 上記の正規表現は極めて雑だが、以下のように、一般的に求めたい範囲の unix time にはそれなりにマッチする。 > ep

    likk
    likk 2015/01/05
  • LL から Java に移行した人がはまりがちなこと - tokuhirom's blog

    こんにちは。Java 初心者です。 Java 初心者、得に LL から Java に来た人にありがちな問題について社内向けに書いたものをオープンアンドシェアさせていただきます。 前提として、我々は Java 8 でガンガン攻めているということをご承知おきください。 また、自分がこの数ヶ月で「うわー。こうしとくべきだったのかー」と気づいたやつをドヤ顔で語っているということにもご注意ください。 【追記】 対象は中規模 B2C の場合です(中規模というのは facebook より小さいという程度の意味です) 例外を握りつぶさないようにしよう Eclipse が生成する以下のようなコードをそのまま残しているケース。 これは言うまでもなく良くないですね。デバッグが困難になります。 try { } catch (IOException e) { e.printStackTrace(); } Perl

    likk
    likk 2014/10/01
  • 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 =

    likk
    likk 2014/09/10
  • HTTP::Session2 has been released. - blog.64p.org

    English document is available on metacpan! Following document is written for non-english speakers. HTTP::Session2 を作成した。主に Amon2 で使用することを想定しているが、広く一般につかえるものと思う。 特徴 必要なときに必要なだけ Set-Cookie ヘッダを発行する 必要なときだけストレージにアクセスする クライアントサイドストレージとサーバーサイドストレージの両方をサポート XSRF トークンの管理をセッションライブラリ側に内蔵 AngularJS フレンドリー 上記が、重要なことである。 弊社のようなハイトラフィックなサービスを運営している場合には、できるだけリソースをケチりたいので、そういう思想なものが必要となった。通常の用途では Plack::Session

    likk
    likk 2013/10/28
  • Carton 1.0 時代の Web アプリケーション開発フロー - tokuhirom's blog

    Carton 1.0 がでたところで、Web アプリケーション開発のフローを一度見直しておきたい、そんな人も多いでしょう。 そんな方のために僕のやりかたをまとめました。各社、議論の叩き台にしていただければよろしいかと存じます。 もっとも重要なことは、、 Carton を使うときに、僕が最重要だと思うことは、できるだけ番環境と開発環境の環境をそろえるということです。CPAN モジュールが番と開発でバージョンちがうから挙動がちがってた!! なんてのは時間の無駄ですし、よくないことですからね。 ですから、各開発環境と番環境をできるだけそろえることを意識していきたいとおもいます。 DarkPAN は使ってない そんなに DarkPAN 的なのを使うほど、DarkPAN 的なオレオレモジュールがないので、git submodule で管理しています。 【201308061241update】

    likk
    likk 2013/08/06
  • Web アプリケーションのロジックを手続きとして実装する話 - tokuhirom's blog

    yusukebe のObject::Containerを応用したModel呼び出し のあたりをよんでの感想ですが。 一時期 Catalyst の影響もあって、モデルのインスタンスつくったりなんだりもしていたのですが、結局のところウェブアプリケーションにおいては、モデルをがんばってオブジェクトにモデリングしようとか考えるよりも、つまり手続として扱った方がしっくりくるな、ということに自分の中でなりまして、最近は、ごちゃごちゃ考えるのをやめて、手続きとして実装しています。 yusukebe の例をベースにはなしをすすめると、コントローラを以下のようにかきます。 package MyApp::Web::Controller::Root; use Mojo::Base 'Mojolicious::Controller'; use MyApp::M::Entry; sub index { my $se

  • [perl] Object::Generator の yield が面白い - tokuhirom's blog

    http://blogs.perl.org/users/joel_berger/2013/07/a-generator-object-for-perl-5.html Coro をつかってイテレータを簡単に実装できるようにしているのがオツですな。 use strict; use warnings; use Generator::Object; my $gen = generator { my $x = 0; while (1) { $x += 2; $_->yield($x); } }; print $gen->next; # 2 print $gen->next; # 4

    likk
    likk 2013/07/16
  • plenv 1.9.x のおしらせ - tokuhirom's blog

    plenv が 1.9.x になり、すべてが bash スクリプトになりました。基的には rbenv のコードのコピペとなっています。 前のバージョンにくらべてなにがすぐれているかというと、一番おおきいのは PERL5LIB と PERL5OPT をみなくなっているという点です。bash でうごいているので、perl つかってないのであたりまえですね。これにより、miyagawa さんのとこの Carton さんとの相性がグンバツによくなっております。 具体的には以下のようなケースでの問題が解消しています。 % PERL5OPT=-MDevel::Cover make test Can't locate Devel/Cover.pm in @INC (@INC contains: /Library/Perl/5.12/darwin-thread-multi-2level /Library

    likk
    likk 2013/05/31
  • Spellunker - Pure perl implementation of Spelling checker. - tokuhirom's blog

    https://github.com/tokuhirom/Spellunkerhttps://metacpan.org/release/SpellunkerNowadays, I got trouble by xt/01_spelling.t. Then I wrote a new spelling checker written in perl. Pros. No C compiler required.Dictionaries included in distributionInstallable from CPANReadable code for CPAN AuthorsOptimized for CPAN modulesCons. It's new. Bit unstable.You can use it as testing module like following: use

    likk
    likk 2013/04/24
    スペランカー
  • Best practice to using Test::Perl::Critic - tokuhirom's blog

    Perl::Critic loads all installed policies by default. It means, perlcritic loads "ProhibitAccessOfPrivateData" if it's installed. I don't like that policy. I don't want to write excluding rules for each optional policies. And so, I need to write a lot of policies for 'excludes' section to exclude policies, I don't like. I got an idea. I SHOULD list include policies instead of excludes policies. It

    likk
    likk 2013/04/24
    「ぼくのかんがえたさいきょうの Test::Perl::Critic」
  • Perl5 における ":method" とはなにか - tokuhirom's blog

    attributes.pod によると以下のように説明されている。 method   Indicates that the referenced subroutine is a method. A subroutine so marked will not trigger the "Ambiguous call resolved as CORE::%s" warning. :method というアトリビュートは、その関数がメソッドであることを示します。 このマークがついているサブルーチンは、"Ambiguous call resolved as CORE::%s" という警告をはっしません。 具体的には use strict; use warnings; package Foo sub shift { } sub f { shift->{hoge} }は警告をだしますが use stric

    likk
    likk 2013/04/23
    そうまでして組み込み関数と同じ名前を再定義したいものなのかw
  • UNIVERSAL::DOES の使い道 - tokuhirom's blog

    使い道がよくわからんなあ、とおもって無視していたのですが、 Perl 5.10 以後では UNIVERSAL::DOES がつかえるようになっています。具体的にはあらゆるオブジェクトで ->DOES というメソッドがよべるようになっています。 これにより、オブジェクトがロールをサポートしているかどうかのチェックができるようになっています。 Role は isa に追加してもいいが、以下のように DOES メソッドを追加してもよい。 sub DOES { my($c, $name) = @_; return $name eq 'Role::SuperHero' || $c->isa($name); }Perl 5.10 より古い、もはやメンテナンスされていない Perl でも、変態仮面こと gfx さんによる UNIVERSAL::DOES というモジュールをつかうことにより、エミュレーショ

    likk
    likk 2013/04/04
    使い道は何だw
  • Perl における一般的なコーディング規約について - tokuhirom's blog

    http://perldoc.perl.org/perlstyle.htmlhttp://perldoc.jp/docs/perl/5.8.0/perlstyle.podperlstyle.pod にのっているものが公式のスタイルガイドです(Larry 風)。 Larry has his reasons for each of these things, but he doesn't claim that everyone else's mind works the same as his does. このへんが Perl らしさ、というかそういうかんじですね。 Perl Best Practice にのっている Damian style もありますが、これはだいぶ癖がつよいです。 日では「miyagawa さんのスタイルにあわせておけば DIS られる心配はない」方式のコーディングスタ

    likk
    likk 2013/03/29
    http://perldoc.jp/docs/perl/5.8.0/perlstyle.pod perlstyle.pod にのっているものが公式のスタイルガイドです(Larry 風)
  • ゆるふわなかんじで perl の話題をするためのチャットルームをつくってみた - tokuhirom's blog

    Blog Search ゆるふわなかんじで perl の話題をするためのチャットルームをつくってみた http://lingr.com/room/perl_jp/ だいぶふわふわしててよい。初心者歓迎なムードがただよっています。 Created: 2013-03-13T10:55:15 Updated: 2013-03-13T10:55:15

    likk
    likk 2013/03/14
    ぜんぜん揺るふわな感じじゃないw
  • B::Hooks::Parser と B::OPCheck をもちいたソースフィルターの作り方 - tokuhirom's blog

    ソースフィルターの用途は大きくわけて2種類 ぜんぜん perl でないコードを perl にするperl コードの一部をかきかえる前者は、普通に文字列置換なりでやればいいのだが、後者は意外とむずかしい。 Perl のコードをパースするのは非常にむずかしいのだ。 そこで、Devel::Declare という仕組みが考案されて、キーワードなどに反応して、そこからしばらくの文字列をソースフィルターで置換する仕組みができたわけです。 しかし、Devel::Declare はちょっとゴツいし、なかなかつかいこなすのがむずかしい。 そんなわけで、Devel::Declare の機能は分割され、いくつかの B::* モジュールとして提供されています。 B::Hooks::Parser と B::OPCheck をつかうと、以下のようにして簡単に Devel::Declare 相当のことができます。 以下

    likk
    likk 2013/02/01
  • 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++

    likk
    likk 2013/01/08
  • Perl テスティングハンドブックという電子書籍をだしてみた - tokuhirom's blog

    主に KDP をためしてみたいという理由ですが、だしてみました。 Perl で Test を書くときのポイントを押さえてちいさくまとめています。ボリューム的にはちょっとした小冊子程度です。当に自分で実践につかったことがあるものしかのせてないのがひとつの特徴です。 今回は pandoc でつくってみました。 gumroad からも買えるようにしてみました なお目次は以下のとおり - 前書き - 対象読者 - なにはのっていないか - 想定環境 - カイゼン - Test::More をもちいた基的なテスト - 便利なユーティリティ関数 - is 関数 - cmp\_ok 関数 - is\_deeply($a, $b[, $msg]); - like($got, $regexp[, $msg]); - subtest 関数でテストケースをネストさせる - Test::More をたすけるラ

    likk
    likk 2012/11/13
    紙媒体欲しい
  • Test-Pretty - Prettify the Test::More's output - tokuhirom's blog

    Test::Pretty is a prettifier for Test::More. When you are writing a test case such as following: use strict; use warnings; use utf8; use Test::More; subtest 'MessageFilter' => sub { my $filter = MessageFilter->new('foo'); subtest 'should detect message with NG word' => sub { ok($filter->detect('hello from foo')); }; subtest 'should not detect message without NG word' => sub { ok(!$filter->detect('

    likk
    likk 2012/10/29