タグ

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

  • Xslate の mark_raw は template に書かない - tokuhirom's blog

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

    ziguzagu
    ziguzagu 2015/03/20
  • JS とかの管理を grunt+bower でやるようにしてみた - tokuhirom's blog

    bower 的なものを使わないと、「これどこから拾ってきたんや……」という感じになりがちなので、一応やったほうがいいでしょうと。 bower は直接使っていると、git のレポジトリをぶちまけるばかりで、あきらかに不要なファイルを配信することになり気持ち悪いなーと思っていたのですが、grunt なり gulp なりを使うと、いらないファイルは展開されないようです(ちゃんと main というプロパティを bower.json に記述している場合)。 Perl なりなんなりで書いていると、node.js のツールを一部だけ使うのとかだるくてアレですが、Java の案件だとみんな何かしら LL を併用しながらやるので、まあいいかな、と。 package.json に以下のように記述します。そうすれば grunt の依存とかもなんとなく入る。 { "name": "jmx-dashboard",

    ziguzagu
    ziguzagu 2015/02/16
  • ipcalc - IP Calculator - tokuhirom's blog

    http://jodies.de/ipcalc CIDR の計算をする機会が最近多いんですが、毎度手でやってたんだけど手でやるの大変だな、ッて思ったのでツールを探してみたら ipcalc っていうツールがいいらしいと知りました。 $ ipcalc 192.168.0.1 Address: 192.168.0.1 11000000.10101000.00000000. 00000001 Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000 Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111 => Network: 192.168.0.0/24 11000000.10101000.00000000. 00000000 HostMin: 192.168.0.1

    ziguzagu
    ziguzagu 2015/01/08
  • Harriet ー テストのときつかうにデーモンの取扱を簡単にするためのフレームワーク - tokuhirom's blog

    https://github.com/tokuhirom/Harriet/https://metacpan.org/module/TOKUHIROM/Harriet-0.01/lib/Harriet.pmテストのときにつかう mysqld, memcached, stf, groonga あたりのデーモンを、.t 単位で起動していては遅くてかなわない。かといって、あらかじめ起動させておくというのも。。 というわけで prove のプラグインとしてよしなにする、みたいなのをがんばってかく、というような試みがおこなわれてきたわけですが、どうもめんどくさい。 なんか適当にやったらうまくうごく、っていうかんじのカジュアルなツールがほしいな、なんておもったりするわけですよ そこで、Harriet ってのをつくってみました。 なんかこう、t/harriet/mysqld.pl っていうファイル名でこん

    ziguzagu
    ziguzagu 2015/01/05
  • Validation Night で話してきた - tokuhirom's blog

    なんかしらんけどスライドアップしようとしたら slideshare に拒否られてるので悲しみ溢れております。 とりあえず思ってることをいくつか。 相関バリデーションどうよ? ベーシックな単項目の Validation 以上のものを Validation framework でやろうとするのは悲しみしか産まないので、たとえば以下のようにしています。 List<String> messages = new Validator().validate(params); if (params.isHojin()) { if (!params.has代表者名()) { messages.add("法人は代表者名いれてね!"); } } else { } そこあんま気張ってもね、的な。 HTTP で Validation error 上げるとき 200 を返すべきか 200 を返すべきだと思います。 僕

    ziguzagu
    ziguzagu 2014/12/05
  • JJUG CCC 2014 Fall で「Java で1から10まで書いた話」を発表してきました - tokuhirom's blog

    tokuhirom's Blog Search JJUG CCC 2014 Fall で「Java で1から10まで書いた話」を発表してきました Javaで1から10まで書いた話(sanitized) from Tokuhiro Matsuno コード書いた話が少ない中でわりと異色な感じでしたが、思ったより反応もあってよかったです。 Created: 2014-11-28T08:09:37 Updated: 2014-11-28T08:09:37

    ziguzagu
    ziguzagu 2014/11/25
  • Content-Security-Policy と nonce の話 - tokuhirom's blog

    Content-Security-Policy の nonce を利用すると、XSS の脅威をかなり軽減できます。 そこで、Web Application Framework ではデフォルトで対応したほうがよいのではないか、という旨を @hasegawayosuke さんから教えて頂いたので、実装について考えてみました。 とりあえず CSP の nonce はどういうものなのかを考慮するために、コード例を探していたのですが、実際に動くサンプルというものが nonce 関連のもので見当たりませんでした。 そこで、実際に動くサンプルを用意しました。 https://github.com/tokuhirom/csp-nonce-sample 以下は Sinatra で書かれたサンプルコードです。 require 'sinatra' require 'securerandom' get '/' d

    ziguzagu
    ziguzagu 2014/09/26
  • Parallel::Prefork で子プロセスが死なない場合の対応方法 - tokuhirom's blog

    殺しても死なない子は念入りに殺す必要があるし、死なないなら死なないで死んでないことを記録に残しておく必要がある。 infof("[%d] Worker exiting...", $$); $0 = "worker master: exiting..."; { infof("Remains %d workers", $pm->num_workers); local $SIG{ALRM} = sub { infof("[%s] wait_all_children timeout. Sending alarm to %s", $$, join(",", sort keys $pm->{worker_pids})); $pm->signal_all_children("INT"); alarm 3; }; alarm 3; $pm->wait_all_children(); alarm 0; }

    ziguzagu
    ziguzagu 2014/06/27
  • [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' };

    ziguzagu
    ziguzagu 2014/03/15
  • Module::Spy - Spy for Perl5 - tokuhirom's blog

    I released the new great Module::Spy. Repository is now on github.com/tokuhirom/Module-Spy.git. I saw jasmine at few days ago. jasmine is very popular BDD testing framework for JavaScript. jasmine has the great interface for spy. A spy can stub any function and tracks calls to it and all arguments. I'm using the local feature in the past days. Because it's good enough for me. For example, followin

    ziguzagu
    ziguzagu 2014/03/10
  • 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

    ziguzagu
    ziguzagu 2014/02/25
  • anton & giton - tokuhirom's blog

    giton について https://github.com/tokuhirom/giton giton ってのかいた。 git submodule で github においてあるモジュールをインストールしようとしてたけど、ln でリンクはったりするのがめんどいので、なんとなくインストールしてくれる仕組みをつくった。 依存関係とかはとくに面倒みてくれない。 まあ、社内モジュールとかでそんなに依存が複雑になったら負けなかんじするので、そこまでいくようなら CPAN にあげてね、ぐらいのかんじです。 giton.json というファイルに以下のようにかく。 { "dependencies":[ { "repository":"[email protected]/tokuhirom/JKML.git', "ref":"0.01", }, ] } そうするとそれを元に cpanm がなんとなくインス

    ziguzagu
    ziguzagu 2014/02/21
  • DBD::mysql の async について - tokuhirom's blog

    並列にバンバン処理するかっこいい機能がついたわけではなく、だいぶアドホックな実装になっている。 mysql client として考えた場合に処理が遅いのは、DB サーバーの I/O や集計処理で、データを返しはじめてからの処理は速い、という経験則にもとづいた処理となっている。 request をなげておいて、sock を poll しておき、readable になったら blocking I/O で普通に読む。mysql server は返しはじめたら一気に書くので、読みはじめたら一気によんでも問題がない。という実装依存のコードになっている。 という感じの実装になってるので、一般的な実装とだいぶちがうので、普通の実装だとおもって読んでると混乱する。 【201402181531 追記】 「select * from t みたいなケースだと、i/o bound でダラダラデータが返ってくる」と

    ziguzagu
    ziguzagu 2014/02/19
  • Shipped Localizer 0.01 - tokuhirom's blog

    https://metacpan.org/release/Localizer Abstract: I released yet another localizetion library for us(me and co-workers). Localizer というモジュールをだした。 Locale::Maketext はよいモジュールだが、OO-ish ではないしドキュメントがわかりづらい。 Locale::Maketext::Lexicon は便利だが、内部のコードが高度すぎてなにをやっているのかよくわからず、オーバースペックな感じだなと感じることがあるし、なにか変えようとしたときになにをしているのかさっぱりわからないので、よく困っていた。 Locale::Maketext::Lexicon をハックする謎コードをつみあげていたのだが、つみあげたコードの方がでかいぐらいのノリになってき

    ziguzagu
    ziguzagu 2014/02/18
  • Web Application の validation はどのレイヤーでかけるべきか - tokuhirom's blog

    数年前にも同じことかいた気がするけど、最近の状況にあわせてかいてみる。 途中で面倒になってきて説明が雑になっている点をご容赦ください。 言いたいことは「結局、昔はサーバサイドで懇切丁寧なエラーメッセージを出すためにModelではなくControllerでバリデーションに関する知識が必要だったけど 今はJavaScriptでやるから不要だよね111」ってことです。 この表題は、よく話題にあがるところなのだが、理想論としては Model, Controller, Client side のいずれにおいてもきっちりと validation を行うことがのぞましい。 しかし、実際にはなかなか面倒である。ということで、どこをはぶくかというと Controller における Validation であろう。 ユーザーに対する親切なメッセージは JS の側でだすのが理想的。model の validat

    ziguzagu
    ziguzagu 2014/02/10
  • Perl5 において chomp() とはなにをするものか - tokuhirom's blog

    えてして、プログラミングにおけるバグの発生源は、使い方をまちがえていることに起因するものも多い。 を電子レンジでかわかす人がいるように。 そもそも chomp() という組み込み関数はなぜ必要なのか。 Perl5 では、データを行単位で処理するということが重視されたインターフェイスになっている。これは一般的なテキスト処理の頻出パターンだからだ。 while (<>) { chomp; say if /foo/; } これは、入力データを行ごとにとりだし、改行をとりのぞき、/foo/ という正規表現にマッチする行だけを表示するというプログラムだ。 Perl5 を知っている人なら、だれもが簡単に理解できる。 ここで $/ という変数が問題となる。$/ は、行の区切りがはいっている特殊なグローバル変数で、awk でいうところの RS にあたるものだ。 この $/ を変更することにより「行」の区

    ziguzagu
    ziguzagu 2013/11/19
  • 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

    ziguzagu
    ziguzagu 2013/10/29
  • Devel::NYTProf で Starlet/Starman (Plack) でうごくウェブアプリケーションのプロファイリングをおこなう方法まとめ - tokuhirom's blog

    Devel::NYTProf は Perl5 の世界でもっとも人気があるプロファイラである。表示が美麗であるし、ステップごとの処理速度が簡単にわかるのでとても便利だ。 そんな Devel::NYTProf であるが、Starlet/Starman のようなプリフォーク式のサーバーでうごくウェブアプリケーションとくみあわせる場合の方法論として、わかりやすい資料がみあたらなかったのでここに記すものである。 環境変数 NYTPROF を設定する Devel::NYTProf は環境変数で挙動を変えられる。 plack とくみあわせる場合には、以下のようにするとよい。 NYTPROF=sigexit=int:savesrc=0:start=no sigexit=int 通常、Devel::NYTProf は END { } ブロックでデータのファイナライズ処理をおこなうのだが、SIGNAL によっ

    ziguzagu
    ziguzagu 2013/10/08
  • __DATA__ の何行目をよんでいるかを知りたい - tokuhirom's blog

    DATA からデータをよんでいるときに、今ソースコード全体のうち、何行目をよんでいるかを知りたいというケースがある。 そんな場合は以下のようにすればよいだろう。 #!/usr/bin/env perl use strict; use warnings; use utf8; use 5.010000; use autodie; use Fcntl qw(:seek); my $line_number; my $pos = tell(*DATA); seek DATA, 0, SEEK_SET; read DATA, (my $buf), $pos; $buf =~ s/\n/$line_number++/ge; while (<DATA>) { warn $line_number + $. . " : " . $_; } __DATA__ hoge fuga hige そもそも *DATA

    ziguzagu
    ziguzagu 2013/09/19
  • ここをおさえれば Perl 情報通になれるよというサイト一覧 - tokuhirom's blog

    Perl 関連の情報をあつめるには、僕は以下のサイトをみています 個人ブログ TATSUHIKO MIYAGAWA'S BLOG http://weblog.bulknews.net/ 最新の miyagawa 情報がえられます。 Charsbar::Note http://d.hatena.ne.jp/charsbar/ 最新の DBD::SQLite 情報などがえられます。 Hateburo: kazeburo hatenablog http://kazeburo.hatenablog.com/ kazeburo さんのサブブログっぽいやつ。nomadscafe.jp の方と使いわけがよくわからない。 あと「はてぶろ」で検索してもみつからない。 おまとめ情報 FrePAN http://frepan.64p.org/ 手前味噌ですが、FrePAN の feed を購読すると、Chnag

    ziguzagu
    ziguzagu 2013/09/10