タグ

関連タグで絞り込む (341)

タグの絞り込みを解除

perlとPerlに関するnipotanのブックマーク (742)

  • 国際化はすげぇつらかった - D-6 [相変わらず根無し]

    国際化はすげぇつらかった MojoMojoを使ってみて国際化についてちょっと研究してみた。CPANにはLocale::Maketext, Locale::Maketext::Lexicon, Locale::Maketext::Simple等々色々あって正直よくわからんかったのだが、今回調べてみてようやく把握した。 まず先に行っておくけど、Locale::Maketext::* 系のモジュールのコードは正直クレイジーなので、暇じゃなきゃあんまりソースコードを漁るのはお勧めしない。 国際化の大まかな流れは、文字列IDがあって、それに対応する言語の「翻訳」が存在する、という感じ。Catalystを使っているなら、Catalyst::Plugin::I18Nを使用して、MyApp::I18N名前空間以下に.poや.moファイルなどをおくのが主流。 問題はHTML::FormFuなど、他の国際化さ

  • Parse::RecDescentでJSONをパース - はこべにっき ♨

    JSON::Hatchet の構文解析子 - Tociyuki::DiaryのJSONパーサがすっきりと書けていたのものだから,ちょっとうちもJSONパースしたくなってので書いてみました.といってもLL構文のパーサを1から書くのも芸がない感じだったので.Parse::RecDescentというCPANモジュールを使ってJSONのパーシングをしてみました. Parse::RecDescentはその名のとおり,汎用の再帰下降型パーサです.LL(1)文法にのっとっていれば,パースが可能です.*1 id:tociyukiさんがの記事にあるBNFを流用させてもらい,JSONのパーサを書くと以下のようになりました. このように,BNFっぽいものを記述するだけでパースを行うことができてお手軽です.パターンとして正規表現を書くこともできて,スキャナーに相当することもやってくれてます. 構文規則に合わせてパ

    Parse::RecDescentでJSONをパース - はこべにっき ♨
  • ゆーすけべー日記

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

    ゆーすけべー日記
    nipotan
    nipotan 2009/01/28
    つまり、KC とはるみ姉さんの結婚式の Special Thanks は Tatsuhiko Miyagawa なわけだ
  • WebService::Simpleが便利

    ぐるナビ #!/usr/bin/perl use strict; use warnings; use utf8; use YAML; use WebService::Simple; my $key = 'hoge'; my $gnavi = WebService::Simple->new( base_url => 'http://api.gnavi.co.jp/ver1/RestSearchAPI/', param => { keyid => $key }, ); my $res = $gnavi->get({freeword => '焼うどん'}); warn Dump $res->parse_response; HotPepper #!/usr/bin/perl use strict; use warnings; use utf8; use YAML; use WebService::

  • 502 Bad Gateway

    502 Bad Gateway nginx

    nipotan
    nipotan 2009/01/21
  • prove (Test::Harness) コマンドの --state オプション - daily dayflower

    テストが膨大になっていくと,あるテストでは時間がかかったりして「そのテストはもう成功することがわかっとるっちゅうねん;失敗するテストだけ再テストしたいっちゅうねん」ってことになったりします。そんなときに使えるのが prove コマンドの --state オプションです。 --state オプションに failed という引数をわたすと,「テストの対象は前回 fail したテストスクリプトのみ対象」という意味になります。ステートを保存する save と併用して指定してみます。 % prove --state failed,save No saved state, selection will be empty Files=0, Tests=0, 0 wallclock secs ( 0.00 usr + 0.00 sys = 0.00 CPU) Result: NOTESTS「No save

    prove (Test::Harness) コマンドの --state オプション - daily dayflower
  • Re: XSの勉強を始めるためのエントリーポイントは? - Islands in the byte stream (legacy)

    Re: XSの勉強を始めるためのエントリーポイントは? あまり参考にならないかもしれませんが,私がXSを勉強するにあたっては,CPANのモジュールのソースコードを読むより実際に書いてみるのが一番だと思います。ただし,何か特定の目的があって,そのために関係がありそうなコードを探して読む,ということは非常によくあります。 以下,思いついたことを適当に並べてみます。 自分でコードを書いてみて初めて分かることが少なくない 学ぶのに適した理想的なコードは,そう簡単には見つからない 古い書き方やおかしな書き方をしているコードも大量にあるので,そういうコードをフィルタリングするためにも,いろいろな作者のコードを読んだほうがいい 多くのコードの中から理想的な部分を抜き出して,それを身につけていく 目的とまったく関係ないコードから閃きを得ることも多い perlのソースコードをすぐ参照できるようにしておくのは

    Re: XSの勉強を始めるためのエントリーポイントは? - Islands in the byte stream (legacy)
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

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

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • 先の記事のList::Utils::firstの使い方は間違っている! - Islands in the byte stream (legacy)

    先の記事の「List::Util::firstは遅い」でのfirst{expr}の使い方が間違っていました orz first{expr}は+(grep{expr} ...)[0]に等しく,ブールコンテキストでのscalar(grep{expr}...)に等しいのはList::MoreUtils::any{expr}です。ただしパフォーマンスについての結論は同じで,要素数が少なければgrep > anyとなります。 TODO: grep/first/anyその他についてのまとめをあとで書く(perl-users.jp向き?)。

    先の記事のList::Utils::firstの使い方は間違っている! - Islands in the byte stream (legacy)
    nipotan
    nipotan 2009/01/19
  • perl - URI::Escape::XS 0.04 - URI Encode と Punycode の共存 : 404 Blog Not Found

    2009年01月16日17:30 カテゴリLightweight Languages perl - URI::Escape::XS 0.04 - URI Encode と Punycode の共存 URI::Escape::XS 0.04 を Release したのでお知らせします。 /lang/perl/URI-Escape-XS/trunk - CodeRepos::Share - Trac Dan Kogai / URI-Escape-XS - search.cpan.org (Wait till updated) きっかけは、これ。 はてなブックマーク - %E8%84%86%E5%BC%B1%E6%80%A7%E8%A8%BA%E6%96%AD.jp IDN、国際化ドメイン名は、 URI Encode ではなく Punycode で encode しなければならない。よって「脆弱

    perl - URI::Escape::XS 0.04 - URI Encode と Punycode の共存 : 404 Blog Not Found
  • mod_perliteを試してみた - とほほのN88-BASIC日記

    Ideas - O'Reilly Media modperlite PHPのようにファイルを置くだけで実行されてCGIより速くてmod_perlより簡単なapache moduleだそうです。去年からのCGI frameworkブームを補完する上でも試してみるっきゃないということで まずはソースの取得 svn co http://code.sixapart.com/svn/mod_perlite/trunk modperlite cd modperliteちなみにもうすぐgithubに移行されるようです。 コンパイルとインストールはapxsにパスを通して ./Build.PL ./Build ./Build installhttpd.confとかconf.d/modperlite.confとかに LoadModule perlite_module modules/mod_perlite.s

    mod_perliteを試してみた - とほほのN88-BASIC日記
  • Client Challenge

    A required part of this site couldn’t load. This may be due to a browser extension, network issues, or browser settings. Please check your connection, disable any ad blockers, or try using a different browser.

  • List::Util::firstは遅い - Islands in the byte stream (legacy)

    (追記:この用途ではList::Util::firstを使うのは誤りで,List::MoreUtils::anyが意図されたコードです。効率についての結論は変わりません) List::Util::first{expr}は組み込みのgrep{expr}に似ているが,exprが最初に真になった段階でその値を返すので,grep{expr}よりも効率がいいと説明されることが多い。しかし,実際にベンチマークを取ってみると,多くの場合grep{expr}より遅い。最初の要素が真になるというfirst{expr}にとって最適な条件でさえ,要素数が40を越えたあたりでようやくgrep{expr}とほぼ同程度の速度になる。したがって,List::Util::first{expr}が効果的なケースはそれほど多くないと思われる。 また,もし単なる文字列の検索でよく,その検索をプログラム中で繰り返すならば,gre

    List::Util::firstは遅い - Islands in the byte stream (legacy)
    nipotan
    nipotan 2009/01/15
  • モダンな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)
  • 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

  • Memcached::libmemcachedのメンテナになった。 - D-6 [相変わらず根無し]

    Memcached::libmemcachedのメンテナになった。 Tim Bunceがちょっと時間がないってことでMemcached::libmemcachedのメンテナになった。libmemcached体にはあんまり関わってないんだけど、Perlラッパーはおいらが担当ですよ。なにか問題あったら連絡してください! カテゴリ 日常 2008年12月17日 07:28 D | ブログ記事のURL | コメント(0) | トラックバック(0) |

  • 私的 XS メモ - IT戦記

    参考にしたサイト集 perlxs - perldoc.perl.org perlxstut - perldoc.perl.org perlguts - perldoc.perl.org perlapi - perldoc.perl.org http://d.hatena.ne.jp/tokuhirom/20081209/1228829454 Perl XS メモ - typemap と MAGIC をからめて - daily dayflower http://pub.ne.jp/wakapon/?entry_id=1109553 http://pub.ne.jp/wakapon/?entry_id=1109664 準備 $ h2xs -A -n MyXSS Makefile.PL CC => 'g++', 型 SV スカラー AV 配列 HV ハッシュ CV コード GV グロブ RV リ

    私的 XS メモ - IT戦記
  • Source Filters in @INC - tokuhirom's blog

    Source Filters in @INC perl5.8.9 から入ったという、@INC のなかに coderef ぶっこんどいて、ソースフィルタするという機能。 をためしてみる。 package OreOreFilter; use strict; use warnings; use File::Spec; sub import { unshift @INC, new OreOreFilter(); } sub new { bless {}, shift } sub OreOreFilter::INC { my ($self, $fname) = @_; for my $inc (@INC) { next if ref $inc; my $real = File::Spec->catfile($inc, $fname); next unless -f $real; open my $f

    nipotan
    nipotan 2008/12/17
  • 技術的アドベントカレンダーの有用性について - tokuhirom's blog

    技術的アドベントカレンダーの有用性について 続かないかと思われていた JPerl Advent Calendar ですが、意外にも折り返し地点をまわっております。 http://perl-users.jp/articles/advent-calendar/2008/15.html 15日目は id:miyagawa さんです。perldoc の使い方の解説記事です。 来、アドベントカレンダーというのは、イエスの降誕祭を待ち望み、12月1日からクリスマスまでの間に1日一個ずつクリスマスツリーを模したカードの窓を一個ずつあけていくようなもののことです。 一方、エンジニアの世界では、技術系アドベントカレンダーというものがあります。これは、一日一個ずつ tips 的な記事を掲載していくというものです。Perl の世界では、2000年からはじまっています(発祥がどこかは寡聞にして知りませんが)。

    nipotan
    nipotan 2008/12/17
  • XSを書く難しさ - Islands in the byte stream (legacy)

    最近思うが,つくづくXSは難しい。いとも簡単にSEGVを起こし,デバッグが難しく,それゆえモジュール作者のやる気が失われたときのリスクが非常に大きい。そうやって多大なリスクを犯してXSを書いても,肝心の速度がPurePerl以上に遅いことも少なくない。 最近だとClass::MOPにパッチを送ったのだけど,その後幾度かのバグフィクスや修正を経た0.72現在,パフォーマンスがかなり落ちている。 最初のパッチでのパフォーマンス(いずれもPerl 5.8.9 linux multi-thread with -DDEBUGGING): Initialization: Rate pp xs pp 2327/s -- -18% xs 2844/s 22% -- Looking into the stash: Rate pp xs pp 20958/s -- -72% xs 73770/s 252% -

    XSを書く難しさ - Islands in the byte stream (legacy)