タグ

perlに関するterazzoのブックマーク (72)

  • http://blog.moe-project.com/2011/06/09/%E9%81%85%E3%81%84each%E3%81%AE%E4%BB%A3%E3%82%8F%E3%82%8A%E3%81%AB%E4%BD%BF%E3%81%86splice%E3%81%AE%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%80%81%E3%83%87%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88/

    terazzo
    terazzo 2011/06/09
  • each()は遅い上に微妙な問題も起きやすい - Islands in the byte stream (legacy)

    特別な条件がないかぎり、each()は使うべきではありません。代わりにkeys()/values()を使うべきです。その理由は2つあります。 each()は遅い each()でハッシュ全体をループするのは遅いです。これは、keys()/values()がその内部の値をそのまま参照する*1のに対し、each()は代入しないとその値を使えないからです。 ベンチマーク: #!perl use strict; use warnings; use Benchmark qw(cmpthese); my %hash = map { $_ => $_ } ( 1 .. 10000 ); cmpthese -1, { each_k => sub { while(my $key = each %hash) { } }, each_kv => sub { while(my($key, $value) = eac

    each()は遅い上に微妙な問題も起きやすい - Islands in the byte stream (legacy)
    terazzo
    terazzo 2011/06/04
    同じ連想配列に対してeach使うループが入れ子になってたりしてもおかしくなるのか。
  • Yokohama.pm #7 が開催されました - Yokohama Perl Mongers

    ということで、Yokohama.pm #7が大盛況のうちに無事終了致しました。 今回のYokohama.pmも様々なテーマのトークが揃っており、それぞれとても興味深かったように感じます。 また、今回トークが初めてという方が数名いらっしゃいましたが、Yokohama.pmでは初めてトークする方も入りやすい雰囲気となっていますので、次回以降もトークが初めてという方がおられたらぜひスピーカーとして参加して頂けたらと思います。 もちろん、今までトークをやってこられた方も積極的に参加して頂いて、様々なレベルのトークが聞けるPerl Mongersとして進めて行ければと考えておりますのでどうぞ宜しくお願い致します。 参加された皆様、トークされた皆様、サポートして頂いた皆様、また今回の開催において会場の貸出やWifi提供等で支援して頂いたライブドア技術部会に感謝致します。ほんとうにありがとうございました

    terazzo
    terazzo 2011/05/16
  • サブルーチン名に「!」「?」を使えるようにがんばった - Perl日記

    昨日の続き。 ソースフィルタを使って作った。 Xubname.pm package Xubname; use strict; use warnings; use Filter::Simple; my %IDENT = ( '?' => __PACKAGE__.'_is_', '!' => __PACKAGE__.'_destroy_or_danger_', ); FILTER_ONLY code => sub { s[ ( sub \s* ) ( [^\W]\w* )\? ( \s* ) ] [${1}$IDENT{'?'}$2$3]gxs; s[ ( \&? \s* (?:[^\W]\w*::)* ) ([^\W][\w]*)\? ] [${1}$IDENT{'?'}$2]gxs; }, code => sub { s[ ( sub \s* ) ( [^\W]\w* )\! ( \s*

    サブルーチン名に「!」「?」を使えるようにがんばった - Perl日記
    terazzo
    terazzo 2011/05/01
  • YappoLogs: Cocoa::Growl が面白い

    Cocoa::Growl が面白い なんかの時に、お勧めの growl を扱うモジュールの話をした時に、最近の俺の macbook pro では Mac::Growl が入らなくなって悲しいって話をしてたら typester さんが Cocoa::Growl を作ってくれました。 Objective-C をそのまま XS module 化しててイカすんですが、さらに AnyEvent のイベントループを cocoa のイベントループを使うようにする AnyEvent::Impl::NSRunLoop なんてのまで作っちゃって、 これを使うと growl の通知をクリックしたイベントとかを Perl 側でハンドリング出来ちゃったりして面白そうだけど使いどころ良くわからなかったので、 AnySan で繋いでる irc チャンネルに yappo って含む発言があったら growl で通知して、そ

  • Test::TCPでgearman workerのテストを書く - Kentaro Kuribayashi's blog

    この項、必ず追記を参照のこと。 Gearmanを使ったジョブの処理を書いていて、 gearmandを起動 workerプロセスを起動 clientがジョブを投げ、先に起動したworkerがそれを処理 返ってきた結果を検証 テスト終了時には、gearmand/workerをシャットダウン ってのを全部いっぺんにできないかなーってんで、Test::TCPでやってみました。workerプロセスはlistenする必要がないので、 no warnings 'redefine'; local *Test::TCP::wait_port = sub {}; とかしちゃってるところが「ヒャー」って感じですが、まあいいかな、と。。。他にいい方法があったら教えてください!!1 use strict; use warnings; use Test::TCP; use Test::More; use Gearma

    Test::TCPでgearman workerのテストを書く - Kentaro Kuribayashi's blog
    terazzo
    terazzo 2010/12/01
  • 『グーグル ブロック チェーン』|法定 デジタル 通貨|イーサリアム の ブロック チェーン・埼玉県上尾市|藤枝市|ブロック チェーン ポイント

    五島市 グーグル ブロック チェーン 「玄関前の小さな椅子に座って、暗くなっても家に入らず、じーっと私の帰りを待ち続けるようになったんです 新潟県佐渡市 ブロック チェーン google 後日警察が息子を厳しく調べたところ、父親を寝床の中で、顔に布団をかぶせ鼻口閉塞させて、窒息死させたことを自白した,20 日 パチスロ イベント enjin ブロック チェーン 山形県鶴岡市 ビット コイン の ブロック チェーン 地裁は「雄大から心理的DVを受け、雄大からの心理的影響を強く受けていた」と認定はしたが、「強固に支配されていたとまでは言えない」として、責任を大幅には減じることはせず、懲役8年の実刑 富里市 CR北斗の拳6 拳王 Ver.394 そのため、ひきこもり支援者の間でさえ「女性はいない」との声が上がるほど、女性のひきこもりは可視化されていない, ガートナー ブロック チェーン 長野県中

    terazzo
    terazzo 2010/12/01
  • 「バリデーションはどの位置で必要か」のやりとりで思ったこと。

    個人的にはapi単位での引数のバリデーションはあった方がbetterかなとおもう。 tokuhiromが 複数人で開発している場合では、クラスをかいた人と利用者がちがう場合があるので、validation は必要だとおもうけれど。と書いてるけどこれはまさにその通りで、 さらに言うと自分の書いたコードも時間が経てば他人が書いたコードと一緒だから バリデーションの情報から引数の情報を読み取れると、 そのapiに対する理解の速度は向上するとおもう。 実行速度とのトレードオフだったりはするだろうけど、無駄な引数渡したり、当は必要な引数を渡しきれなかったりして それで誤動作とかするくらいならバリデーションあったほうがいいんじゃないでしょうかね。 perlcodesampleさんの 動的言語の利点は、引数にどのような型でも渡せるので、静的言語のように型の指定がいらないということです。つまり、動的言語

    terazzo
    terazzo 2010/11/18
  • How do you get the return value of "if" statement in Perl5? - tokuhirom's blog

    http://d.hatena.ne.jp/rightgo09/20101114/p1 just fucking do { } it. use 5.10.1; my $year = 2010; my $month = 11; my $nendo = do { if ( $month >= 4 ) { $year; } elsif ( $month <= 3 ) { $year - 1; } else { die; } }; say $nendo;

    terazzo
    terazzo 2010/11/15
  • CPAN 関連の API などのメタデータについての雑感 - tokuhirom's blog

    CPAN のメタデータは以下の3つにより配布されている。 authors/01mailrc.txt.gzmodules/02packages.details.txt.gzmodules/03modlist.data.gzいずれも gzip した状態で 200KB を越えるようなわりと大きなテキストファイルなので、これを web site や、CLI 等から直接利用すると、速度が遅くなる。 そこで、以下のような解決策がかんがえられているみたいです。 CPAN::SQLitehttp://search.cpan.org/~rkobes/CPAN-SQLite-0.199/ 上記ファイルから SQLite にデータをつっこむスクリプトを提供。検索用のメソッドも提供してくれる。 なお、一部の検索系のメソッドに SQL Injection 脆弱性があるので注意。ユーザーからの入力を直接いれさせると大

    terazzo
    terazzo 2010/03/06
  • ゆーすけべー日記

    サキとは彼女の自宅近く、湘南台駅前のスーパーマーケットで待ち合わせをした。彼女は自転車で後から追いつくと言い、僕は大きなコインパーキングへ車を停めた。煙草を一吸ってからスーパーマーケットへ向かうと、ひっきりなしに主婦的な女性かおばあちゃんが入り口を出たり入ったりしていた。時刻は午後5時になる。時計から目を上げると、待たせちゃったわねと大して悪びれてない様子でサキが手ぶらでやってきた。 お礼に料理を作るとはいえ、サキの家には材が十分足りていないらしく、こうしてスーパーマーケットに寄ることになった。サキは野菜コーナーから精肉コーナーまで、まるで優秀なカーナビに導かれるように無駄なく点検していった。欲しい材があると、2秒間程度それらを凝視し、一度手に取ったじゃがいもやら豚肉やらを迷うことなく僕が持っているカゴに放り込んだ。最後にアルコール飲料が冷やされている棚の前へ行くと、私が飲むからとチ

    ゆーすけべー日記
    terazzo
    terazzo 2010/01/11
    三代吉だけ苗字……
  • 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

    terazzo
    terazzo 2009/12/30
    集権というかグローバルリソースで管理すると複数人で作るときマージが面倒かも。今時たいした手間じゃないんだけど。
  • プラグマをストップさせよ! | taro-nishinoの日記 | スラド

    CPANを常日頃観察している方は、やたらとプラグマもどきが多いことにお気づきだと思います。これらは目的が多少違っていても、多くはベストプラクティスのためだと言ってもいいでしょう。 いいプログラマの素質にはいろいろな要素があります。当然頭が切れる、理解が速い、構想力に秀でている等いろいろあるでしょう。私が思うには、最低限必要なことがあります。つまり己を知っていることなんです。自分の弱点、短所、悪癖等を自覚していることです。その弱さを知っていれば、当然それをカバーするものはないかと探して、strict、warningsのコアプラグマはほぼ誰でも必須であることに気がつくはずです。自分が駄目だからそれらに頼らざるを得ないのです。後、使うべきプラグマは個人差があるでしょう。日人なら日語リテラルを書く機会が多いから、どうせ書くならUTF-8でやるのが面倒が無いのでutf8プラグマでしょう(これも極

    terazzo
    terazzo 2009/12/18
  • YappoLogs: Plaggerに関する重要なお知らせ

    Plaggerに関する重要なお知らせ 「それPla」の用法が変更になりました。 詳しくは下記の参考文献を、ご確認下さい。 参考文献:http://d.hatena.ne.jp/keyword/%a4%bd%a4%ecPla Posted by Yappo at 2009年09月09日 11:18 | TrackBack | 適当

    terazzo
    terazzo 2009/09/09
    >Engie
  • 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

    terazzo
    terazzo 2009/05/28
  • XSで共有文字列を活用する - Islands in the byte stream (legacy)

    Perl 5.8以降には共有文字列というメカニズムがあり,非常に限定的ながら,うまく使用するとメモリと速度の双方を節約できる。 基的な使い方: SV* sv = newSVpvn_share(pv, len, hash); SV* sv = newSVpvs_share("..."); これでsvの文字列部分がインタプリタ全体で共有されるため,同じ文字列を複数個生成してもmalloc(3)は一度で済む。 実際には,共有文字列SVの生成速度そのものは通常の文字列SVよりも遅いことがある。しかし,共有文字列の真価は,ハッシュキーとして使用する際に発揮される。 ハッシュからキーを検索する際にはキーとなる文字列の照合*1を行わなければならないが,共有文字列はポインタ値がインタプリタを通して等しいので,文字列の照合は行わなくてすむ。また,共有化文字列SVは内部にハッシュ値*2を持っているので,ハッ

    XSで共有文字列を活用する - Islands in the byte stream (legacy)
    terazzo
    terazzo 2009/05/09
    JavaのHashMapとかもキーをFlyweightにしたら速くなる(equals()で稼げる分)けど、String#intern()が結構重い。/RubyもString#internなのか
  • Journal of Matts (1087) - Perl on LLVM

    There was recently some talk on p5p about getting perl up and running on the LLVM. This was following the recent excitement from the Python crowd about the Unladen Swallow project, and less so, the MacRuby Experimental Branch.So following that post I decided to see how easy/hard it was to get to the first stage - getting perl compiled and running with clang, the llvm gcc-like compiler.It wasn't to

    terazzo
    terazzo 2009/04/10
  • PerlのXSからPerlの関数を簡単に呼び出せるようにしてみた (C++で) - moriyoshiの日記

    Perlの謎APIをwrapして、Perlスクリプトの関数をC++から簡単に呼び出せるようにしてみた。 てか、 リファレンスカウントを透過的に行えるようpimpl形式のコンテナを使ってみる mortalを透過的に行えるようcall_sv()による関数呼び出しを完全にブラックボックス化する って実験をやりたかっただけなのにDevel::BindPPとは完全に別プロダクトになっちゃいました。 test1() は、任意の数の引数を取り、引数の合計値を返す add()という関数 *1 を C++ から呼び出す例。 test2() は、MIME::Base64::encode_base64() を呼び出す例。 test3() は、複数個の値を返す関数を処理する例。 test4() は、perl::value() の演算子オーバロードのテスト。 #include <iostream> #include

    PerlのXSからPerlの関数を簡単に呼び出せるようにしてみた (C++で) - moriyoshiの日記
    terazzo
    terazzo 2009/04/01
  • C++ で Perl 拡張を書くためのモジュールを書いた - TokuLog 改めB日記

    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

    terazzo
    terazzo 2009/03/29
  • 第68回 関数ではなくforで処理を共通化する - bingo_nakanishiの他言語出身者のためのPerl入門

    いま、 ############### 中西 ############### ############### 木村 ############### ############### 田中 ############### ############### 山 ###############と出力するソースを考えるとする。 へたくそに書く なにも考えずにとてもへたくそに書くと、 use strict; print q{###############}, "\n"; print q{中西}, "\n"; print q{###############}, "\n"; print q{###############}, "\n"; print q{木村}, "\n"; print q{###############}, "\n"; print q{###############}, "\n"; pr

    第68回 関数ではなくforで処理を共通化する - bingo_nakanishiの他言語出身者のためのPerl入門
    terazzo
    terazzo 2009/02/26
    for文のブロックって実は概念的には関数だったという風にも考えられるかも