fukata.org Blog Github Twitter Facebook Instagram YouTube トラハ 旅人向けブログポータル WebScraper ブラウザの操作を自動化 Text Image ブラウザベースでテキストを画像に変換
Server::Starter の SYNOPSIS には、自分で Server::Starter 配下で実行するサーバを作る場合の例があります。 # in my_httpd use Server::Starter qw(server_ports); my $listen_sock = IO::Socket::INET->new( Proto => 'tcp', ); $listen_sock->fdopen((values %{server_ports()})[0], 'w') or die "failed to bind to listening socket:$!"; while (1) { if (my $conn = $listen_sock->accept) { ... } } ところでこのサーバは Perl でなければ書けないのか? というと、そんなことはないのですね。 Se
https://gist.github.com/nihen/7085103 http://www.perlmonks.org/?node_id=905667 https://rt.perl.org/rt3//Public/Bug/Display.html?id=119937 http://d.hatena.ne.jp/kazuhooku/20100909/1284005880 大きいマスターデータなどを親プロセスで読み込んでおいて、その後forkし、子プロセスでCoWで共有する、そんな幻想を抱いていた時期が僕にもありました。 PerlのGCのための参照カウンタは、変数の内部にカウンターをもっているため、そのカウンターに増減があるとCoWで共有されていたメモリのうちカウンターと同一のページ内のメモリは文字通りCopyされる。 通常のコード内でそのことに気をつけたとしても、子プロセスが死ぬとき
GuardでPerlのテストを実行するときに使えるguard-tapというGemを書いた. t/以下のファイルが変更されたら実行するとか,lib/以下のファイルが実行されたら,名前が似てるテストファイルを推測して実行,とかできる. GitHub - hitode909/guard-tap: Guard gem for Test Anything Protocol guard-tap | RubyGems.org | your community gem host 実行結果のTAP形式の文字列をパースしていて,テスト結果や,失敗したときのエラーメッセージなどをGrowlに表示できる. TAPは単なる文字列のプロトコルで,実装すれば言語によらず使えるので,Perl以外でも使いたい人いたらguard-tapとつなげて使える.いないと思うけど. Test Anything Protocol - W
モバイルファクトリーの伏原です。 私は今回Test::Baseというモジュールを紹介させてもらいます。 Test::Baseとは Test::Baseは、Kwikiなどの作者として知られるIngy döt Net氏が作成した“Data Driven Testing Framework(データ駆動型テストフレームワーク)”です。 データ駆動型テストとは何なのか、実際のテストを見て頂くのが一番早いと思うので、早速実際にTest::Baseを使ったテストを書いてみることにします。 今回使うサンプルプログラム NabeAtzz問題を解くプログラムを作ります。NabeAtzz問題にはいくつかのバリエーションがありますが、今回は以下の条件を満たすもの、と言うことにします。 1からnまでの整数に対して 3の倍数の時は“fool”と出力する 5の倍数の時は“dog”と出力する いずれかの桁に3
昨日Twitterにふらっと投げたらreply付いたので、せっかくだからブログに書いておく。 何気なくTest::MoreのPodを読んでいると、 This adds an implicit done_testing() to the end of your subtest. The following two subtests are equivalent: http://search.cpan.org/~mschwern/Test-Simple-0.96/lib/Test/More.pm subtest 'subtest with implicit done_testing()', sub { ok 1, 'subtests with an implicit done testing should work'; ok 1, '... and support more than one
「ウェブリブログ」は 2023年1月31日 をもちましてサービス提供を終了いたしました。 2004年3月のサービス開始より19年近くもの間、沢山の皆さまにご愛用いただきましたことを心よりお礼申し上げます。今後とも、BIGLOBEをご愛顧賜りますよう、よろしくお願い申し上げます。 ※引っ越し先ブログへのリダイレクトサービスは2024年1月31日で終了いたしました。 BIGLOBEのサービス一覧
2010年05月27日15:36 カテゴリprogramming あなたにも今日こそPerlの文字化けが理解できるたった一つの原則 こんにちは。ECナビラボの須藤(@ajiyoshi)と申します。 唐突です が、Perl(5.8以降)で文字化けに悩んだことはありませんか?私はあります。 そして、よくわからないまま"Perl 文字化け"などで検索すると、次のような単語が洪水のごとく溢れていて、なんだかよく分からなかったりしないでしょうか。 'flagged UTF8'Encode::decodeEncode::decode_utf8Encode::encodeEncode::encode_utf8'Wide character in print at hoge.pl line xx.'use utf8open my $fh, '<:encoding(utf8)', $filebinmode「
perlの配布物の中にあるINSTALLの"Building a debugging perl"セクションにある通り、-DDEBUGGING=ナニガシを指定すればよい。 http://perl5.git.perl.org/perl.git/blob_plain/HEAD:/INSTALL 指定する値によって、 "perl internal debugging code"とデバッグシンボルの両方が有効になったもの (-DDEBUGGINGもしくは-DDEBUGGING=both) デバッグシンボルが有効になったもの (-DDEBUGGING=-g) とできあがるperlが異なる。 "perl internal debugging code"を有効にすると、"much, much more slowly"になるとINSTALLには書かれている。 Note that a perl built w
ウェブサービスのクライアントや、Net::Groonga::HTTP のようなミドルウェアのクライアント、いろいろありますが、HTTP サーバーへの簡単なアクセスを提供するライブラリをつくるときに僕が気をつけていることをここに記す。みんな気をつけたほうがいいです。 HTTP Client Library の引数を変更できるようにするか、HTTP Client Library のインスタンスをさしかえられるようにする変更できないライブラリとか利用価値がないです。。 タイムアウトの設定もかえられないライブラリとか、たまにありますが、ちょっとひどいですね。 生のレスポンス情報がとれるようにするHTTP::Response なり Furl::Response なりをそのままとれるようにすべき。 たとえば、$client->last_response のようなメソッドを用意し、最後のレスポンスオブジ
perlbrew best practice perlbrew には $ perlbrew upgrade-perlというのが実装されてるのがあまりにも有名ですが、これは現在使ってる環境の perl を、そのマイナーバージョンの中で一番新しいバージョンにアップグレードしてくれるんです。 perl-5.16.1 を使っていたら perl-5.16.3 に perl-5.14.2 を使っていたら perl-5.14.4 に。という具合ですね。 同じマイナーバージョンの Perl では XS バイナリの互換性とか保証されているので、すでにインストールされているモジュールはそのまま利用できる状態になっています。 だがしかし $ perlbrew install perl-5.16.2して作った環境を upgrade-perl すると 5.16.3 が入ってるのに perl-5.16.2 って名前が
環境 % cat /etc/redhat-release CentOS release 6.3 (Final)vim zsh screen あたりは入れておく。 perlbrew まずは拾ってくる。 curl -kL http://install.perlbrew.pl | bashそして使うためのファイルを読む設定。確か上記の作業後に指示された気がする。 echo " source ~/perl5/perlbrew/etc/bashrc " >> .zshrc_localときにこの場合、 .zshrc にはこう書いてある。 load_if_exists () { if [ -e $1 ]; then source $1 fi } load_if_exists "$HOME/.zshrc_local"普通に .bashrc / .zshrc に追記してもいい。 いったんシェルを抜けるなり、
Webアプリケーションが遅いとか感じる時って、僕の場合、I/Oがボトルネックなケースが多いのです。つまり、MySQLへクエリーを投げて返却を待つとか、memcachedにget/set等のメソッドを発行した時の待ち時間が長くかかってたり... とかです。そうすると計測して原因を突き止めたくなります。PerlのプロファイラはDevel::NYTProfとか色々ありますが、こうしたI/Oに関しての計測は「Devel::KYTProf」が便利です。適当な場所にて use Devel::KYTProf; するだけで標準エラー出力に「空気読んで」ウマいこと色付きで、I/O周りのかかった時間とどこの箇所か?を表示してくれます。 ただ、この「標準エラー出力に表示」ってのは開発時にターミナルで確認する分には便利なのですが、例えば本番環境などで一時的にパフォーマンスを計測するためにはちょっと不便なことがあり
Perl情弱の@HIROCASTERでございませう。 GrowthForecastとか羨ましすぎるので、最近のPerlの環境はどうやってつくるのか調べた。 今回はplenv+cpanm+cartonという環境を構築します。 Rubyでいうところのplenv+gem+bundleという感じである。 環境はUbuntu 12.04.2 LTSとMac(Mountain Lion)での確認をしています。 plenvまず、OSに付属しているPerlなどを利用して、わけわからないことになって、挫折するのがいつものパターン。 そこで、Perlを複数バージョンインストールして、OS付属のPerlとは別で管理できるplenvをインストールする。 Rubyでいうところのrbenvのようなもの。 CPANからインストールできるらしいけど、今回はGitでcloneしてインストールすることにする。 $ git c
2013-01-21 plenvを使ってみた. @tokuhiromさんがplenvという, Perl 5のインストール管理ツールを開発されたそうです. ブログ記事やREADMEをまとめてみると, plenvの特徴は... Rubyのrbenvから影響を受けている. perlbrewと違って, プロダクトごとにperlのバージョンを指定することができる. とても高速で, インストールも簡単. perlbrewのような機能を持つが, 完全な上位互換ではない. ...という感じっぽい. こういう時はグダグダ言わずに入れて試してみるに限る, というわけでさっそく導入してみましょうー! インストール plenvを導入する為にはCPAN/brew/gitを使う方法がありますが, 今回はgitを使って入れてみます. ただ特徴にも書いてあるとおり, どの方法を使うにせよインストールはとても簡単です
本番環境にperlとかrubyとかnodeを入れるんだけど、もちろん system perl じゃやってられないので指定したバージョンのものを一般ユーザの管理下に突っ込みたい。 で、そういうのをこれまで perlbrew とか rvm とか rbenv とか nvm とか nodebrew とかでやってたんだけど、さすがに色々疑問が湧いてきた。バッチで単発実行するために eval "$(rbenv init -)" とかさすがにおかしくね? みたいな。 ということで tokuhirom method 的にインストール用の簡単コマンドを使って実行、あとはパスを通せばいいじゃん、ということにしようかと思う。 参考: サーバーのセットアップは perlbrew とかじゃなくてよくね? という時のライフハック - blog.64p.org これ、今朝までは Perl::Build をどうにかしてC
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く