タグ

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

  • Shipped full featured Plack clone for Perl6 named `Crust` - tokuhirom's blog

    Hi, i'm tokuhirom, one of the core developer of Plack. During the past few weeks, I've been hack the Perl6. This is to celebrate the Christmas in the best mood. I'm a minimalist, and I love a software built on clean and well tested parts. I mean tokuhirom loves CPAN. To write the practical web applications in Perl6, it has released some of the library. HTTP::Server::Tiny - IO::Socket::Async based

    yusk_y
    yusk_y 2015/10/29
  • Xslate の mark_raw は template に書かない - tokuhirom's blog

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

    yusk_y
    yusk_y 2015/04/14
    Xslate の mark_raw は template に書かない - blog.64p.org
  • [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

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

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

    yusk_y
    yusk_y 2014/10/18
  • [perl] コントローラがどのテンプレを表示したかをテストする - tokuhirom's blog

    Module::Spy をつかう。 my $render = spy_on('Text::Xslate', 'render'); # コントローラをよぶ ...; my $tmpl = $render->calls_first->[1]; ok { $tmpl eq 'my/index.tt' };

    yusk_y
    yusk_y 2014/03/30
  • Perl 5.19.9 で実装された signatures の構文をためしてみる - tokuhirom's blog

    use 5.019009; use autodie; use feature 'signatures'; no warnings "experimental::signatures"; package Foo { sub new($class, $n) { bless {n=>$n}, $class; } sub bar($class, $a) { $a+3; } sub baz($self, $a) { $self->{n} * $a; } } sub add($left, $right) { return $left + $right; } say add(1,2); say Foo->bar(4); say Foo->new(5)->baz(4); みたいな感じでつかえる。 【追記】 use 5.019009; use feature 'signatures'; no warning

    yusk_y
    yusk_y 2014/03/02
    Perl 5.19.9 で実装された signatures の構文をためしてみる - blog.64p.org
  • Shipped HTML::CallJS - tokuhirom's blog

    HTML から JS にデータを安全にわたす方法として、JSONP みたいに関数をコールするようにしたらいいのではないか、という提案が kazuhooku blog にて行われているわけですが、実際にどういう風につかったらいいのかという所もあると思いますので、ライブラリとしてみました。 https://metacpan.org/pod/release/TOKUHIROM/HTML-CallJS-0.01/lib/HTML/CallJS.pm

    yusk_y
    yusk_y 2013/11/15
  • Perl5 における B optree の操作方法入門 - tokuhirom's blog

    いよいよ今週から YAPC だ。YAPC にあわせて、Perl5 の内部構造を復習できるエントリーを書いたのでご一読いただきたい。 Perl5 hack においては、XS をつかった B optree の操作が楽しい。B optree というのはいわゆる AST(抽象構文木) である。Perl5 は byte code interpreter などではなく昔ながらの AST をそのままなめるインタプリタである。であるから、この B optree を操作すれば、簡単にインタプリタの挙動を変えられるというワケ。 一方で、B optree の操作については、あまり知られていないし情報がすくない。日語でも情報がすくないし、英語でもまた情報がすくなく、それっぽいモジュールのコードをよみながら会得するしかないのが現状だ。 すこしでも B 初心者が、ステップアップできるように、私のもっている情報をここ

    yusk_y
    yusk_y 2013/09/19
  • hokkaido.pm #10 によばれてきました - tokuhirom's blog

    http://atnd.org/events/41429 8/31(土)に行われたHokkaido.pmにJPA様の支援により行くことができました。 ほんちゃんの発表資料は http://tokuhirom.github.io/talks/20130830-hokkaidopm-cpan/index.html#0 こちらになります。 CPAN モジュールの使う上での心がまえというか、そういったことと、plenv, cpanm, carton あたりの話をメインに、網羅的なスライドとしてみました。 YAPC のような大きなイベントとちがって、一人一人と密にコミュニケーションがとれるのが地方PMの魅力の一つだとおもいますので、懇親会などで話題にあげやすいようなスライドにしよう、ということを意識して構成してあります。 地方PMによばれていくのは今回は福岡PMにつづいて二度目なのですが、地方PM

    yusk_y
    yusk_y 2013/09/07
    hokkaido.pm #10 によばれてきました - blog.64p.org
  • perl 5.18.1 がでていますよ - tokuhirom's blog

    https://metacpan.org/release/RJBS/perl-5.18.1 変更点は perldelta をごらんください。 lexical subs など、Perl 5.18.0 で導入された機能に関するバグフィックスが中心ですので、無理にアップグレードする必要はありませんが、今新規に Perl5 をインストールしたい人は、5.18.1 をいれるのがよいかと存じます。

    yusk_y
    yusk_y 2013/08/29
  • Carton 1.0 リリースによせて - tokuhirom's blog

    http://weblog.bulknews.net/post/57356232719/carton-1-0-is-released Carton 1.0 がリリースされました。おめでとうございます! miyagawa++ というわけで早速手元でうごかしてみたところ、いくつか問題があったので miyagawa さんに修正していただきました。 1.0 リリースまでにためしたいところだったのですが、面倒くさくて無理でした。 今回のアップデートで個人的にいいなーとおもったのは以下のような点です。 carton update が実装された 待望の carton update が実装されております。これにより、あたらしめのバージョンに移行することができますね! carton check が実装された cpanfile に記述されてるけどインストールされてないモジュールを確認できる!! carton.

    yusk_y
    yusk_y 2013/08/07
  • [PHP] preg_replace における //e があぶない話 - tokuhirom's blog

    Malware Hidden Inside JPG EXIF Headers という話題がでていたので見てみたところ、単に preg_replace がセキュリティ上問題があるインターフェイスだという話であって、EXIF 云々は直接的に 関係がなく、釣りエントリであることが判明した。 preg_replace は第一引数に正規表現を渡すが、その際に外部からの入力をそのままわたすと危険という話。 なぜならば preg_replace は '/.*/e' のように、eval flag をわたすことができるからだ。 以下のコードをみよ。 <?php preg_replace('/.*/e', 'eval("echo 5960+3;")', ''); つまり、preg_replace($_POST['foo'], $_POST['bar'], '') のようなコードがあった場合、任意のコードが実行

    yusk_y
    yusk_y 2013/07/21
  • 1