タグ

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

  • ゆーすけべー日記

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

    ゆーすけべー日記
  • DBIx::MoCo をなんとなく把握 - Yappo::タワシ

    ソース読んだだけだけど>< moco の session は、特定の範囲で使われるcacheのような物がある。 通常のCacheオブジェクトよりも優先的に使われる。 __PACKAGE__->is_in_session で、現在のセッションのオブジェクトをとるよ。 session は変更のあったrowを保存しといてくれて、end_sessionの時にまとめてsaveしてくれる。 object_id が各レコードのユニークなkeyを作れると。 retrieve は引数から object_id を作ってキャッシュを引いてる。キャッシュ無ければretrieve_by_dbDBから引いてキャッシュに投入。DBがnull返してきても基的にはnullをキャッシュする。 retrieve_multi はキャッシュから引いてきてキャッシュにないobject_idはDBからとってくる。 retriev

  • モダンなXSの書き方 - Islands in the byte stream (legacy)

    PerlのソースコードはPerl言語以上に変化が大きく,それに伴ってXSの書き方もだいぶ変わってきている。新しいAPIを使ったほうが可読性がよかったり高速だったり使いやすかったりする。 たとえば,スカラー(SV)から文字列(PV: pointer valueつまりchar*)を得るAPIの変遷は次のようになっている。 /* SV*からPVを得る古い書き方 */ STRLEN len; const char* pv = SvPV(pv, len); # pvとlen両方ほしいとき const char* pv_only = SvPV(pv, PL_na); # pvだけほしいとき /* その後SvPV_nolen()が追加され,PL_naはdeprecatedに */ const char* pv_only = SvPV_nolen(pv); /* 今は*_constが追加されたのでcons

    モダンなXSの書き方 - Islands in the byte stream (legacy)
    sato_shin
    sato_shin 2009/08/25
    XS
  • 複数ファイルを使った中規模 XS の開発 - daily dayflower

    複数ファイルをビルド対象とした XS の開発について,あまり手間をかけないシンプルで効果的な方法を書いていきます。自分の経験をもとに書きますのでベストプラクティスではありませんが。 余談(SV*() マクロの sideeffect にやられた話) state_stack という配列に state を整数値でスタックとして格納していて,スタックから過去の state を取り出そうとしたんです。 んで(わりと素直に) state = SvIV(av_pop(state_stack)); と書いたら,2つずつスタックから pop されてしまいました*1。 XS hacker なら当たり前な話ですけど,SV*() というのは一見関数然としてますがマクロなんです。 #define SvIV(sv) (SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv)) こんな形で,いずれのケースに

    複数ファイルを使った中規模 XS の開発 - daily dayflower
    sato_shin
    sato_shin 2009/08/25
    XS
  • Ark - opensource.kayac.com

    Web Application Framework Description Ark は perl で書かれたウェブアプリケーションフレームワーク(WAF)です。 Ark はおなじく perl 製のフレームワークである Catalyst を参考に開発されており、その多くの特徴はそのまま引き継いでいます。 そのため Catalyst の経験のある開発者であればすぐに使い始めることができるでしょう。 Catalyst とのいちばんの違いは、Catalyst は実用的に運用するためには基的に mod_perl や FastCGI など永続的なプロセス実行環境を要求するのに対し、 Ark は CGI でも実用的に動作するという点を重視して開発されています。 もちろん mod_perl/FastCGI でも動作します。 より詳しい説明はドキュメントを参照ください。 Download 現在の最新バージ

  • perl で Captcha 認証(セキュリティ画像)をやる方法について

    ユーザ登録とかでロボット等でのスパム登録を防止したりって用途に使われているアレです。こんなヤツ。 最近はブログのコメントとかのスパム防止でもよく見かけます。まずは基礎知識。このような画像で認証を行うことを Captcha っていいます。wikipedia の情報を引用すると、 CAPTCHA(キャプチャ、"Completely Automated Public Turing test to tell Computers and Humans Apart"; コンピュータと人間を区別する完全に自動化された公開チューリングテスト)は チャレンジ/レスポンス型テストの一種で、ユーザが人間であるかどうかを決定する計算処理に使われる。この用語はカーネギーメロン大学のLuis von Ahn、マヌエル・ブラム、Nicholas J. Hopper、IBMのJohn Langfordによって2000年に

  • ゆーすけべー日記

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

    ゆーすけべー日記
  • ゆーすけべー日記

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

    ゆーすけべー日記
    sato_shin
    sato_shin 2009/08/25
    TheSchwartz
  • GitHub - tokuhirom/optimize-perl-doc: how to optimize your perl code?

    =head1 概要 プロジェクトでは、Perl programming における、パフォーマンスチューニングの要諦について書く。 =head2 チューニングの原則 可読性/メンテナンス性とのトレードオフを意識し、メンテナンス性の低下をひきおこすようなチューニングは気をつけておこなうこと。 =head2 無根拠なチューニングはしない マイクロオプティマイゼーションにおいて、ベンチマーク結果のみにたよったチューニングはできるだけ避け、「どうしてこちらの方が高速なのか」を常に意識するよう心がけるべきである。 =head2 ツール =over 4 =item Benchmark.pm Benchmark.pm は、Perl における標準のベンチマークモジュールである。cmpthese, timethese, timeit などを場合によって使いわけるようにする。稿でも主にこれを用いる。 =it

    GitHub - tokuhirom/optimize-perl-doc: how to optimize your perl code?
    sato_shin
    sato_shin 2009/08/25
    最適化
  • Unicode の16進数の実体参照を正規表現などで元に戻す

    Unicode の16進数の実体参照を正規表現などで元に戻す 2008-05-10-3 [Programming] 普段は適切に処理をされてて問題にならないんだけど、 ときどきひょんな局面で出会ってしまうのが、 "�" という形式の文字列、16進数の実体参照です。 Perl でデコードする方法をメモ。 pack と Encode::decode を使うと良いみたい。 #!/usr/bin/perl use strict; use warnings; use Encode; use utf8; binmode STDOUT, ":utf8"; my $a = "情報時代"; $a =~ s/&#x([0-9A-F]{4});/decode('UCS2', pack('H*', $1))/ge; print "$a\n";

    Unicode の16進数の実体参照を正規表現などで元に戻す
    sato_shin
    sato_shin 2009/08/25
    文字列値参照
  • Perl逆引き辞典 - サンプルコードによる Perl 入門

    Perl › here Perlの逆引き辞典です。発展的な話題もこちら。 特徴を解説 バージョン情報 データベース プログラムの自動試験 ソケット プロセス間通信 ワンライナー 統計・解析 XS入門 言語実装の研究 豆知識 モジュール基礎 オブジェクト指向 日付・時刻 文字コード ビット演算子 Perl › here

    Perl逆引き辞典 - サンプルコードによる Perl 入門
  • 2008/06/04 - memo - unknownplace.org

    http://github.com/typester/flight/tree/master lighttpdを使用してFastCGIスクリプトのテスト(開発)サーバーを簡単に立てられるアプリです。 $ flight -p 3000 yourscript.fcgi とかすると localhost:3000 でそのfcgiスクリプトが動くという感じ。 catalystだったら $ flight -p 3000 ./script/myapp_fastcgi.pl でOK。 Catalyst用にはすでに専用のヘルパーを書いていて、lighttpdでテスト(開発)サーバーを立てられるようにしていたのだけどそれをもっと汎用的にした感じ。 ネームスペースは FCGI::Server::Lighttpd とかしちゃってるのだけどどうだろう? App::Flight とかのがいいのかなー。 意見求む。

  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • ユニークなランダム文字列 - unknownplace.org - 2008/02/08

    すでに生成したIDかどうかを気にする必要がないユニークな文字列を作成しようとした場合 use Data::UUID; use MIME::Base64::URLSafe; print urlsafe_b64encode( Data::UUID->new->create ); こんな感じにやるのがいいのかなぁ。これで22文字。 んー。 エントリーのURLとかにつかいたくてもう少し短くしたいけど、文字列生成したときに重複してないか調べるためにDBを引くというのがイヤダナー。

    sato_shin
    sato_shin 2009/08/25
    ユニークなランダムも文字列
  • Perl スクリプトで遅い場所を特定する方法 - Devel::Profiler / Devel::NYTProf

    仕事で書いてる Sledge アプリがあるのですが、先日負荷テストを行った結果びっくりすることに現行アプリの10倍遅いことが判明してしまいました・・・orz Sledge フレームワーク自身が重くないことは今までの経験でわかってるのですが、どうにもソースを見直しているだけでは原因が特定できない・・・そんな活躍するのがプロファイラです。プロファイラの御陰で遅いヶ所を特定することができ、無事に想定するパフォーマンスを得ることができました。この内容に関してはまた別エントリにて。 さて、プロファイラを使うとプログラム実行時の各種情報を収集し、性能解析を行うことが可能です。プロファイラについてもう少し詳しくしるには 性能解析 - Wikipedia あたりを読むと良いでしょう。 プロファイラ(英: Profiler)は性能解析ツールであり、プログラム実行時の各種情報を収集する。特に、関数呼び出しの

  • Apache::Test事始め - D-6 [相変わらず根無し]

    Apache::Test事始め 年末前後からApache::Testで真面目にテストを書き始めている。 ところが全くドキュメントがないんだね。いや、あるんだけど、携帯の機能を使いたいだけなのにあの厚いマニュアル読むの?みたいな感じで。まぁというわけでとにかくざくざくっとドキュメント読んでテスト書いてたらようやくなんとなく分かってきた。この間ある程度他人にも説明できたので自信ついたしw Apache::Testはmod_perlハンドラをテストするときに使う。ディストリビューション等でmod_perlをテストしようと思うとApache自体を立ち上げたりなんだりしなければいけなくて「一体どうテストすればいいんじゃ?!」となりがちだが、Apache::Testを使うと、テスト用httpd.confの生成テスト用のapacheの起動/停止mod_perlハンドラ上で動かしたTest::More等の

    sato_shin
    sato_shin 2009/08/25
    mod_perlテスト
  • perl - @_ は参照である : 404 Blog Not Found

    2008年05月12日18:15 カテゴリLightweight Languages perl - @_ は参照である これでも正解ではありますが、perlの場合もっと簡単な方法があります。 各言語間の参照と値渡し - @author pyridoxin sub swap { my ($x , $y) = @_; $$temp = $$y; $$y = $$x; $$x = $$temp } [codepad] sub swap { my $tmp = $_[0]; $_[0] = $_[1]; $_[1] = $tmp; } my ($a, $b) = (1, 2); print "\$a = $a, \$b = $b\n"; swap($a, $b); print "\$a = $a, \$b = $b\n"; これは、Referenceが存在しなかったPerl 4以前からの仕様です。

    perl - @_ は参照である : 404 Blog Not Found
  • FormValidator::Assets - 髱「逋ス繝ゥ繝� KAYAC BM11

    譌「蟄倥�ョ繝輔か繝シ繝縺ョ蜈・蜉帙r繝√ぉ繝�繧ッ縺吶k繝ゥ繧、繝悶Λ繝ェ縺ィ縺�縺�縺ョ縺ッ繝「繝�繝ォ繝吶�シ繧ケ縺ェ繧ゅ�ョ莉・螟悶〒縺ッ縲ゞRL(繧ウ繝ウ繝医Ο繝シ繝ゥ)豈弱↓繝ォ繝シ繝ォ繧呈嶌縺丞ソ�隕√′縺ゅj縲∫オ先棡蜷後§縺薙→繧剃ス募コヲ繧よ嶌縺上%縺ィ縺ォ縺ェ繧翫∪縺吶�� 縺昴�ョ荳肴ッ帙&繧呈鴛諡ュ縺吶k縺ケ縺乗眠縺励¥繝輔か繝シ繝繝舌Μ繝�繝シ繧キ繝ァ繝ウ繝輔Ξ繝シ繝繝ッ繝シ繧ッ繧剃ス懈�舌☆繧九�励Ο繧ク繧ァ繧ッ繝医r遶九■荳翫£縺セ縺励◆�シ� http://github.com/typester/formvalidator-assets/wikis 迴セ蝨ィ縺ョ繧ウ繝ウ繧サ繝励ヨ縺ェ縺ゥ縺ッ縲∝�域律陦後o繧後◆YAPC::Asia縺ォ縺翫>縺ヲ菴ソ逕ィ縺励◆繧ケ繝ゥ繧、繝峨′縺ゅj縺セ縺吶�ョ縺ァ縺昴■繧峨r蜿ら�ァ縺上□縺輔>縲� http://

  • PL_check とパトリオットミサイルのしくみ - daily dayflower

    前回の記事はおかげさまで id:yappo さんに HE-N-TA-I 認定されたので安心してたら,マッチョな人に牛刀フラグを立てられ(もちろん冗談です*1),Shibuya.pm 入会への道もなかなか険しいなぁと思い知りました。 そんな空気は読まずに理論編?を Perl 5.8.8 のソースをもとに書いていきます。マニア向け。 Perl がスクリプトを実行するまで perlguts の Compiled code セクションと Perl のソースコードをもとに,おおまかな実行機序を書いてみました。 字句解析器(レキサ; toke.c) 字句エラーの検出 構文解析器(パーサ; perly.y*2) 構文エラーの検出 OPCODE ツリーに変換; new*OP() in op.c check ルーチンの実行(pass 1) (文脈にもとづく)文法エラーの検出 by 各 PL_check[](

    PL_check とパトリオットミサイルのしくみ - daily dayflower
  • UTF8 フラグあれこれ - daily dayflower

    UTF8 フラグについてわかってるつもりだったんですが,utf8::is_utf8 considered harmful - Bulknews::Subtech - subtech を読んで混乱したので,自分なりにまとめてみました。間違いがありましたらご指摘よろしく。 まとめ スカラー変数の内部表象の状態を示すものとして UTF8 フラグというものがある スカラー変数は(リファレンス等は別として)下記のものを格納できる (A) 文字列(内部表象: UTF-8) (B) 文字列(内部表象: ISO-8859-1) (C) バイナリ列 純粋なバイナリストリーム(画像ファイル等)かもしれないし, UTF-8 octet stream かもしれないし, CP932 octet stream かもしれないし,etc, etc ... Perl は(後方互換性確保などの理由から)ISO-8859-1

    UTF8 フラグあれこれ - daily dayflower