This plugin provides Perl5 & Pod support. Basic functionality may be extended with additional plugins: Languages and Frameworks: Mojolicious HTML::Mason Mason2...
イチから作るには以下のようにせよ。 curl -o cpanm https://raw.githubusercontent.com/miyagawa/cpanminus/master/cpanm /usr/bin/perl cpanm -n -L tools App::FatPacker::Simple Server::Starter /usr/bin/perl -Mlib=tools/lib/perl5 cpanm -n -L local Server::Starter /usr/bin/perl -Mlib=tools/lib/perl5 ./tools/bin/fatpack-simple --output=start_server local/bin/start_server 一旦 tools/ 以下にインストールしているのがポイント。Server::Starter のビルド時依存
Perlの開発者であるLarry Wall氏が、ブリュッセルで開催中のオープンソース開発者カンファレンス「FOSDEM」において、2月1日(現地時間)に、同氏が2015年に61歳の誕生日を迎えることを明らかにするとともに、Perl 6.0のバージョン1.0を2015年のクリスマスにリリースすると発言した。 Perlは現在、最新バージョンであるPerl 5系列と、開発中のPerl 6系列に分岐しており、Perl 6の開発は2000年のスタート以来、難航している。なお、Perl 6では言語仕様の大幅な変更が行われており、Perl 4やPerl 5との後方互換性が失われる。 今回のLarry Wall氏の発言について、Perl開発者の中には懐疑的な見方もあり、今回の発言によって、2015年のクリスマスにPerl 6のバージョン1.0が確実にリリースされるわけではないが、バージョン1.0について語
Devel::NYTProf は Perl5 の世界でもっとも人気があるプロファイラである。表示が美麗であるし、ステップごとの処理速度が簡単にわかるのでとても便利だ。 そんな Devel::NYTProf であるが、Starlet/Starman のようなプリフォーク式のサーバーでうごくウェブアプリケーションとくみあわせる場合の方法論として、わかりやすい資料がみあたらなかったのでここに記すものである。 環境変数 NYTPROF を設定する Devel::NYTProf は環境変数で挙動を変えられる。 plack とくみあわせる場合には、以下のようにするとよい。 NYTPROF=sigexit=int:savesrc=0:start=no sigexit=int 通常、Devel::NYTProf は END { } ブロックでデータのファイナライズ処理をおこなうのだが、SIGNAL によっ
(1)はこちら、(2)はこちらから。 改善、確認のためのベンチマーク 特定できたボトルネックに対して修正した結果、本当に速くなっているのかどうかを確認しなくてはなりません。ここではそのためのベンチマーク手法について紹介していきます。 Benchmark.pm Benchmark.pmはPerlの標準モジュールです。サブルーチンリファレンスなどで与えたコードを指定した回数(0を指定するとCPU時間で3秒間消費するまで)繰り返し実行し、それぞれの実行時間を計測、比較して表示します。 リスト9はDateTimeのインスタンス生成時に、タイムゾーン情報としてDateTime::TimeZoneオブジェクトを渡す場合と、文字列を渡す場合でどの程度処理速度が異なるのかを計測するベンチマークの例です(図6)。 リスト9 DateTimeインスタンス生成のベンチマーク use Benchmark q
YAPC::Asia 2013でLT『How to inspect a RUNNING perl process』してきました How to inspect a RUNNING perl process / YAPC::Asia Tokyo 2013 http://www.slideshare.net/hirose31/inspect-runningperl ハングアップとかメモリバカ食いとか、稀にしか発生しないヘンテコ状態のシューティングやるには静的デバッグより、今ヘンテコ状態にあるプロセスを直接まさぐるのが手っ取り早いよねーということで、既存の手法、 strace gdb bulkdbg gdbperl に加え、拙作の inspect-perl-proc について話しました。 https://github.com/hirose31/inspect-perl-proc 今のところ 3 つ
少し前ですがTest::mysqld 0.17からは copy_data_fromというオプションが加わっています。 これは、Test::mysqld起動時にコピー元のdataディレクトリを指定できるもので MySQLの起動時間を節約することができます。テスト開始時にDBに大量のデータを 入れておきたい場合に特に有効です。 特にゲームなどの場合は、大量のマスタデータもコードの一部と言えるので、ちゃんと 全部流し込んでからテストを実施したいという要件があるので重宝します。 さて、そのdataディレクトリをどうやって作ればよいかという話になるのですが、 それも、Test::mysqldに事前に作らせてどこかに配置しておけば良いでしょう。 手順としては例えば以下のようになります。 ‘tmp/test_mysqld_data’ をdatadirにしてTest::mysqldを起動 DDLとマスタデ
追記: 1.30でsleepとretryのデフォルトが変更になりました。詳しくはドキュメントを参考にしてください 追記2: 2.00でsleepとretryがなくなりました。代わりにmax_waitが追加されました。詳しくはドキュメントを参考にしてください。blogも書いた TCPサーバ・クライアントのテストには欠かせない、みんな大好きtokuhiromのみんな大好きTest::TCP。Plackのサーバのテストなら use Plack::Loader; use Test::TCP; test_tcp( server => sub { my $loader = Plack::Loader->load( 'Monoceros', port => $port, max_workers => 5 ); $loader->run($app); exit; }, client => sub { my
本番環境にperlとかrubyとかnodeを入れるんだけど、もちろん system perl じゃやってられないので指定したバージョンのものを一般ユーザの管理下に突っ込みたい。 で、そういうのをこれまで perlbrew とか rvm とか rbenv とか nvm とか nodebrew とかでやってたんだけど、さすがに色々疑問が湧いてきた。バッチで単発実行するために eval "$(rbenv init -)" とかさすがにおかしくね? みたいな。 ということで tokuhirom method 的にインストール用の簡単コマンドを使って実行、あとはパスを通せばいいじゃん、ということにしようかと思う。 参考: サーバーのセットアップは perlbrew とかじゃなくてよくね? という時のライフハック - blog.64p.org これ、今朝までは Perl::Build をどうにかしてC
こんにちは, 先日Kansai.pmで発表させて頂いたgoccyこと五嶋@たんぽぽグループです. 今回は, 前回紹介した技術的負債の把握と改善を促すためにの続編として, 僕が作ったPerl5コードのコピペ検出器について紹介させて頂きます. はじめに 今やPerl, Ruby等さまざまな言語で, 便利なライブラリ群やフレームワークを利用できる時代になりました. これらを使うことでソフトウェアの開発コストは格段に下がり, より素早く開発することができるようになっています. しかし, 当初予定されていた機能を実装して, 「よしできたから終わり!」というわけにもいきません. 何か物を生み出せば, 必ずそれを保守・運用するコストが発生します. 開発することが便利になった今, 開発物を保守・運用することを支援するツールも求められています. ですが, 保守や運用, とりわけ保守に関して支援するツールはそ
Webアプリにおいて、アクセスやデータ量が多く/大きくなってくると、 バックエンドのパフォーマンスが低下しがちです。 MySQLなどのRDBMSにデータを置いている場合は適切に クエリーを改善する、インデックスを張る、といった策で解決する場合もありますが、 キャッシュを効果的に利用することでより高負荷に対応できる可能性があります。 また、外部APIへの問い合わせなど、どうしてもネットワークや他のリソースのレスポンスタイムに 引きずられる部分に関しては情報を手元にキャッシュしておくと何かとよいでしょう。 今回はWebアプリケーションのレイヤーで最近僕がどのようにキャッシュを使っているのか? の事例を紹介しつつまとめてみたいと思います。 キャッシュについてとその基本 そもそもキャッシュとは、簡単にふわっと表現するならば、 「一時的に情報を手元の近い場所に置いておいて利用する手法、もしくはその一
perlでかかれたwebサーバ Starman の爆速ぶりは目をみはる物がありますが自分の運用環境では lightyのproxyを介しての接続であるためkeepaliveが使えない等Starmanの機能を生かしきる事はできない。 じゃlighty以外のapacheやnginxとかReverseProxy専門のvarnishだとどうなんだろと疑問が湧きtestしてみることにする。 接続構成 abベンチ側 FreeBSD 7.2-STABLE FreeBSD 7.2-STABLE Pentium E2180 2GHz MEM 2.0G アプリサーバ側 FreeBSD 8.0-RELEASE-p2 FreeBSD 8.0-RELEASE-p2 Celeron 1.7GHz MEM 1.5G アプリサーバ側に apache-2.2.14(worker) lighttpd-1.4.26 nginx-
emacsで利用するperlを切り替えるperlbrew.elというのをantipopさんが作っていたのですが、少し動かなかった部分を修正したので、紹介したいと思います。 emacsとperlbrew perlbrewを使っているとPATHなどの関係から使いたいperlのversionを指定できない時があります。そんな時はperlbrew.elが使えます。 インストール まず、https://raw.github.com/kentaro/perlbrew.el/master/perlbrew.el からダウンロードしてきて、以下の設定をします。 (require 'perlbrew) (perlbrew-use "perl-5.14.2") これによりデフォルトでperl-5.14.2を利用できます。 perlコマンドへのpathを取得する 現在のperlコマンドへのpathを知りたい時は
Mac で sed を使ってタブを空白4文字に置換しようと思って cat file.txt | sed 's/\t/ /g'としたら、文字 t が空白4文字になった。sed はもう使いません。Perl でやります。 cat file.txt | perl -pe 's/\t/ /g'でおk。別に cat を使わず perl -pe 's/\t/ /g' file.txtでもいいんだけど、処理を少しずつやっている感じで cat を使った方がしっくりくる。 ついでに、文字コード utf8、 改行 LF にして、全角空白を半角空白2個に置換することも追加すると nkf -w -Lu file.txt | perl -pe 's/\t/ /g; s/ / /g'となる。完璧。 Perl の一行だけで処理を書いてしまういわゆるワンライナーについては Perl one liner 集 perl 1行野
2012年09月28日17:50 カテゴリ書評/画評/品評Lightweight Languages 紹介 - Plack Handbook 著者より献本御礼。 Plack Handbook: Plack and PSGI Development guide ebook Plack Handbook on Gumroad miyagawa/plack-handbook いいね! 内容textもさることながら、販売戦略contextが。 本書「Plack Handbook」は、タイトルどおりPSGI/Plackのハンドブック。書いたのはその父@miyagawaその人。内容は間違えようがないし、仮に間違っていたとしてもすぐ直せる。 電子書籍なのだから。 しかし本作は、PerlでWeb開発している人のみではなく、電子書籍かくあるべしというロールモデルとして、電子書籍をこれから作ろうとする全ての人
Evaluates the BLOCK or EXPR for each element of LIST (locally setting $_ to each element) and composes a list of the results of each such evaluation. Each element of LIST may produce zero, one, or more elements in the generated list, so the number of elements in the generated list may differ from that in LIST. In scalar context, returns the total number of elements so generated. In list context, r
https://github.com/tokuhirom/node-perl/ ここ最近、プログラミング言語同士の壁が徐々に破壊されている気がします。あるプログラミング言語上で別なプログラミング言語を動くようにしたり、置き換えてしまったりするような類です。今回はその一つ、CPAN moduleをnode.js上で動かすという、かなり無茶な気がしなくもない、そんなソフトウェアnode-perlを紹介します。 var Perl = require('../index.js').Perl; var perl = new Perl(); perl.use('LWP::UserAgent'); var ua = perl.getClass('LWP::UserAgent').new(); var res = ua.get('http://mixi.jp/'); console.log(res.as_
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く