タグ

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

  • Wikipedia から SKK の辞書を生成するスクリプトをかいた。 - tokuhirom's blog

    https://github.com/tokuhirom/jawiki-kana-kanji-dict SKK-JISYO.L が最近、メンテナンスされてなくて れいわ /令和/ が入ってなかったりして困ってしまう。 そこで、neologd から辞書を生成してみた。 https://github.com/tokuhirom/skk-jisyo-neologd/ しかし、neologd は、形態素解析用の辞書としてはいいと思うのですが、かな漢字変換用として無理矢理使おうとすると誤変換になってしまうケースが多かった。 なので、直接 wikipedia からデータを抽出することにしてみた python で適当に抽出するスクリプトを書いて、github actions で設定した。これで、何もしなくても自動的に辞書がアップデートされていくはず。 工夫したこととかのメモ neologd からの抽出の

    n2s
    n2s 2020/08/30
  • h2o の fastcgi サポートで Plack::Handler::FCGI を動かす - tokuhirom's blog

    h2o で PHP を FCGI で動かすという話題が最近見かけますが、もちろん h2o+FCGI+Perl も快適に動作します。 具体的には以下のように書けばよろしい。 listen: 9090 hosts: default: paths: /: file.dir: /path/to/htdocs/ fastcgi.spawn: "exec /opt/perl-5.18/bin/plackup -s FCGI --nproc 10 /path/to/app/" 簡単すぎて、とくに解説することがないです。 h2o+FCGI で運用した場合のメリットとして、Starlet 等の application server を立ち上げる場合と異なり、application server のプロセスを daemon tools や systemctl 等で管理する必要がないというメリットがある。 一方

  • Perl 5.20 以後 $& は遅くない - tokuhirom's blog

    Perl では長らく $& を一度でもプログラム中に記載しているとあらゆる正規表現マッチが遅くなるというイシューが知られていた。 しかし perldoc perlvar してみると、以下のように記載されている。 In Perl 5.20.0 a new copy-on-write system was enabled by default, which finally fixes all performance issues with these three variables, and makes them safe to use anywhere. Perl 5.20 以後では気にせずに $& を利用してもよいようだ。 という話が社内チャットで出た。

    n2s
    n2s 2015/05/21
  • 検索結果は 200 OK を返す - tokuhirom's blog

    検索結果が0件なときに「存在しない」のだから404を返そうとするコードをたまに見るんだけど、これは 200 OK でやったほうが良い。 処理自体が成功したかどうかを返すのに HTTP status code を使った方がよろしい。

    n2s
    n2s 2014/12/25
    うーん…/ とりあえず思い出した、今は亡きネタ帳の記事→http://web.archive.org/web/20060527023659/http://neta.ywcafe.net/000552.html id:entry:1579959
  • 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

  • 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 =

  • テストについての個人の雑感 - tokuhirom's blog

    テストについての個人の雑感です。ここでいうテストってのは、なんかいわゆる開発をドライブするための開発者用のテストについてであって、品質の保証とかについては一切かんがえてません。 ざっくりいうと 「テストを書いた方が効率的に開発がすすむ場合にはテストを書く」 テストに対する認識 ソフトウェアにたいするテスト というものはソフトウェアそのものの価値には関係しない。 なので、テストにたいしてかけるコストなど、すくなければすくないほど良いにきまっておる。 Open Source Software のテストについて オープンソースソフトウェアの場合、送られてきた patch の品質を travis ci で確認したい、っていう要件とか、手元の環境以外での動作確認などを行いたいので、それなりにテストを書く必要がある。 まして、僕が OSS として公開しているものはライブラリが多い。ライブラリは一般にテ

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

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

    n2s
    n2s 2013/11/18
  • OrePAN - yet another DarkPAN manager - tokuhirom's blog

    https://github.com/tokuhirom/OrePAN This is yet another DarkPAN manager. It is highly depended for cpanm. I don't think about relationship for CPAN.pm. It only works with cpanm. Just type % orepan.pl --destination=/path/to/repository Foo-0.01.tar.gzThen Foo-0.01.tar.gz register to the repo, and it add to the 02packages.details.txt.gz. And... You can install Foo from repo! % cpanm --mirror-only --m

    n2s
    n2s 2013/10/31
  • 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

    n2s
    n2s 2013/10/28
  • 適当なscriptでは use autodie; する - tokuhirom's blog

    chdirのときもエラー処理は必須ですな〜自分で使うスクリプトだからええ加減な書き方してた〜反省 #ubuntu #perl http://twitter.com/mukumaru/status/20694618336 perl5.10.1 以後では autodie.pm が標準添付されているので、それを利用するとよい。 % perl -E 'use autodie; chdir "/foo"' Can't chdir('/foo'): No such file or directory at -e line 1こんなかんじ。use strict; use warnings; につづけて use autodie; と書くだけ。 使い捨てスクリプトでは use autodie; しておくと、いちいち組み込み関数のエラー処理かかなくていいので便利。

    n2s
    n2s 2013/10/24
    Rubyみたいにchdirとかが自動的にor dieしてくれるようになる
  • Amon2 5.01 was released!!! - tokuhirom's blog

    Amon2 5.01 was released on CPAN. Core features are: Default jQuery version is now 2.0 Default template engine syntax is Kolon. Every flavors are CPAN uploding ready. Flavors does not create app.psgi. Create script/${app}-server instead. Plan for 6.00 Next step: We are rewriting Router::Simple for better performance. Enjoy!

    n2s
    n2s 2013/10/09
    4系からがらっと変わった模様
  • 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

    n2s
    n2s 2013/10/02
  • 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

    n2s
    n2s 2013/09/21
  • Perl 5.19.4 ではいった新記法があつい - tokuhirom's blog

    1> my %x=(a => 1, b => 2); $res[0] = [ 'a', 1, 'b', 2 ] 2> %x{a} $res[1] = [ 'a', 1 ] これはあつい!今迄はいってなかったのが不思議なかんじする。

    n2s
    n2s 2013/09/21
    @ hash{key}ではvalueだけだったが%hash{key}で(key,value)が返る。おおお。
  • ここをおさえれば 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

  • cpan-get command to fetch CPAN module tar ball - tokuhirom's blog

    Here is a code: #!/usr/bin/perl use strict; use warnings; use HTTP::Tiny; use File::Basename qw(basename); my $pkg = shift or die "$0 Module::Name\n"; $pkg =~ s!-!::!g; my $http = HTTP::Tiny->new; my $res = $http->get("http://cpanmetadb.plackperl.org/v1.0/package/$pkg"); die "Failed! $res->{status}: $res->{reason}\n" unless $res->{success}; if ($res->{content} =~ /distfile: (.*)/) { my $url = "htt

    n2s
    n2s 2013/09/06
  • Perl5 でハイフンを含む関数名を定義した気分になる方法 - tokuhirom's blog

    Perl5 ではハイフンを含む関数名が定義できません。しかし、どうにかして定義することはできないものでしょうか。 はい。定義するだけならがんばればできます。 package Foo; sub new { bless {} } { no strict 'refs'; *{"hoge-fuga"} = sub { die "YAY!\n"; }; } しかし、これをよぶにはいったいどうしたら。。。 my $foo = Foo->new; $foo->can("hoge-fuga")->(); はい。can で coderef をとればうまくいきました。 しかし、ちょっと無理矢理すぎて、使い勝手はすごくわるそうです。 使うのはあきらめたほうがよさそうですね!

    n2s
    n2s 2013/08/19
    *{"hoge-fuga"}へのsub{}代入で定義、can("hoge-fuga")->()で呼び出し可能。
  • Text::VisualWidth::PP 0.02 がでていた - tokuhirom's blog

    Text::VisualWidth::PP といえば、文字の幅が1文字幅か2文字幅かを判別してうまいことなにかやりたいときに便利なライブラリとして Perl 界では有名ですね。 このモジュール、もとはといえば mobirc を pure perl 化しようとしたときに Text::VisualWidth::XS の PP 版がなくてこまった!! っていう現象がおきたときに、つくったものなんですね。そんなモジュールが他でもつかわれるとは不思議なものです。 さて、そんな Text::VisualWidth::PP ですが、Songmu さんのブログで BEGIN { $Unicode::EastAsianWidth::EastAsian = 1; } をつかっていろいろがんばってる様子がのっておりまして、どうも、これは、楽をするためのモジュールであるはずの Text::VisualWidth:

  • 続・初めてのPerl 改訂第2版 が発売されます - tokuhirom's blog

    いわゆるアルパカの新版がでるようです。この機会に新版を手にいれて、読みなおしてみるのもよさそうですね。 監訳は安心と信頼の伊藤 直也さんです。

    n2s
    n2s 2013/08/07
    asin:4873116287