www.morihi-soc.net のブログは閉鎖しました。(2022/12/31) ご連絡は Twitter(@morihi_soc) かメール(morihisa.sec@gmail.com)でお願いします。
Gazelle という新しいPlack::Handler(Server)をリリースしました https://metacpan.org/release/Gazelle 前のISUCONの結果報告で「Chobi」として紹介していたものを名前を変更しました。 GazelleはnginxやApacheでreverse proxyを行うことを前提に書かれたPlack::Handlerです。nginxの後ろにunix domain socketを利用して配置した場合、”Hello World”のベンチマークで、Starmanの3倍、Starletの1.7倍程度高速に動作します。 一番左はnginxで静的ファイルを配信した場合のQPSです ベンチマークの詳細はこちら↓です https://github.com/kazeburo/Gazelle/wiki/Benchmark 特徴など Gazelleは以下
https://atnd.org/events/57038 YAPC::Asia Tokyo 2014 ベストスピーカー2位ということで地方pmに3回行かせてもらえる権利のうち1回目を行使しました。ありがとうございます。 主催の @aloelight さん、会場を提供してくださったクリプトン・フューチャー・メディア株式会社さま、ありがとうございました。ボーカロイド作ってる会社!!! とかテンション上がっておりました。 で、せっかく行ったので自分も自分にできる話をしました。 運用とデータ分析の遠くて近い関係、ISUCONを添えて from SATOSHI TAGOMORI ちょっと散漫な内容になりましたが、思うところをあれこれ突っ込んであります。障害対応とはつまり過負荷障害の対応シミュレーションだったんだよ!!! という冗談は(半分くらい本気ですが)置いておくとしても、運用系モニタリングとサ
私とPerl 2000 大学時代に中国語とか言語処理とかCGIとかでちょっと使った 2004 中国でベンチャー(Perl 0%) 2005 外国語学校の営業兼情シス (Perl 5%) 2009 印刷系のSIer (Perl 15%) 2011 カヤック (Perl 90%) 2014 はてな (Perl 1%) 2007年 Perlを本格的に学びだす 2005年にレンサバ借りてMT運用くらいはしていた HTML/CSS はそこそこ詳しくなった(自社のサイトからテーブルレイアウト殲滅とか) JavaとレガシーASPとかColdFusionとかの環境に危機感 Web業界・Perl界隈へのあこがれ 2007年に「初めてのPerlを購入」 デイリーポータルviewerを作る 最初はCGIだったけど今はplack化して運用中 CPAN Authorに対する憧れ
タイトルですべてを語っていますし、http://blog.livedoor.jp/sonots/archives/32645828.html あたりを読むと良いのですがメモ。 最初にまとめると CORE::print() を使う場合は 4096 or 8192 byte 以下に収めること CORE::syswrite() なら混ざらない 男は度胸。flock(2)する ということです。 これでわかった人は読む必要ありません。 以下蛇足。 はじめに perl ではファイルハンドルに書き込むときには何も考えずに CORE::print() を利用しますが、この人はなんかいい感じにバッファリングしたり、長い文字列だったらぶった切ってくれたりしてくれます。 で、普通はバッファリングのことはみんな意識しているので以下のようにヒットアンドアウェイをやったりしますね。close() で自動的に flus
現状、本稿ははげしくかきかけです。フィードバックをおまちしております。 はじめに† Perl で C の拡張がスラスラと書けたら……。C の拡張がスラスラ書けたら、ネイティブのバインディングもスラスラ書けるし、ホットスポットを C で最適化するなんてこともお手の物。書けたらいいけど、XS ってなんかむずかしそう……。 ちがうんです! 今までの XS の教え方がまちがっていたんです!この教材をつかえば、誰でも簡単に今すぐに XS を書けるようになるんです。Perl の C 拡張を書いて同僚や上司を アッー! と言わせちゃおう! この教材では XS のややこしい機能をつかわずに、Perl の C 拡張を書く方法を伝授!初心者でもすぐに C 拡張が書けるようになるぞ! 前提知識† 本稿では一般的な C の知識および Perl の知識を読者がもっていることを想定しています。XS の知識や Perl
perlの変数のデータ量を調べたいということがあって、何を使ったらいいか調べたんだけど、Devel::Sizeというのが便利そうだった。 こんなかんじで使える。 use Devel::Size qw(size total_size); my $size = size([1, 2, 3, 4, 5]); warn $size; my $total_size = total_size({ a => [1, 2, 3], b => { c => [1, 3, 5], }, }); warn $total_size; sizeというのは構造のために使われている容量を出してくれるやつ。 The size function returns the amount of memory the variable returns. If the variable is a hash or an array,
@takezawaさんから、PerlベースのWebアプリケーションサーバであるStarletで複数ポートをlistenできるようにするPRをいただいたのでマージしました。やったね! で、それに伴いprefork型TCPサーバのThundering Herd問題を再訪したので、その備忘録。なお、Thundering Herd問題については、prefork サーバーと thundering herd 問題 - naoyaのはてなダイアリーや、Starman と Starlet のベンチマークと Accept Serialization - Hateburo: kazeburo hatenablogあたりを参照のこと。 まず、こんなテストスクリプトを書いた: thundering-herd.pl こいつを書いてあるコメントのとおり実行してみることで、2種類のケースでThundering Herd
本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回はmyfinderこと久森達郎さんで、テーマは「Perlアプリケーションのテストと高速なCI環境構築術」です。テストに利用するさまざまなモジュールから、CI(Continuous Integration、継続的インテグレーション)環境の構築、そして増えたテストを高速に実行する枠組みの構築までを紹介します。 なお本稿のサンプルコードは、本誌サポートサイトから入手できます。 テストの目的 まずはテストを行う目的を整理します。 コードを壊していないことを確認する 1人で開発するものであれば、どんな状況であれ責任を負うのは自分だけですが、チームや組織が複数にまたがる場合にはテストが重要になります。プロダクトが大きくなるにつれ、自分の開発によって想定外の機能にも影響を与えることが多くなります。逆にほかの開発者が行ったコミットによって
この記事はPerl Advent Calendar 2013の16日目の記事です。 Test::Synopsis::Expectation Perlのモジュールを作る際に便利そうな少し変わったモジュール、Test::Synopsis::Expectationを使ってみます。 その前にテスト対象のモジュールを作ります。ひな形作成に便利なMinillaを使ってスケルトンを作成します。 $ minil new AwesomeTargetそこで出来たAwesomeTarget/lib/AwesomeTarget.pmを以下のようにいじります。 package AwesomeTarget; use strict; use warnings; sub plusplus { my ($class, $num) = @_; return ++$num; } 1; なんのことはない、ただ++するだけのクラス
本トークでは、私が開発しているCompilerモジュール群(Compiler::Lexer, Compiler::Parser, Compiler::CodeGenerator::LLVM)を用いて、Perlコードがブラウザ上やiOS上で動作する、これからの新しいPerlプロダクトのかたちをお見せできればと思っています。 時間が余れば、上記モジュールを静的解析ツールとして利用した場合に得られるメリットについても、作成したモジュールを交えながらご紹介したいと思います。 ※どのモジュールもまだ開発途中ではありますが、当日はできるだけ多くのアプリケーションを動かせるようにして臨みたいと思っています。
https://github.com/Songmu/p5-Redis-LeaderBoard https://metacpan.org/module/Redis::LeaderBoard RedisのSorted Setがランキング作るのとかに便利だよーってのは今や多くの人に知られるところですが、 同率問題とかがめんどくさかったりするので、その辺解決したやつを書いてみました。 というか、このへんみなさん個別に書いてると思うんですけど、色々めんどくさくなってカッと なってCPANに上げました。Synopsis丸コピですが、以下のような感じで使います。 use Redis; use Redis::LeaderBoard; my $redis = Redis->new; my $lb = Redis::LeaderBoard->new( redis => $redis, key => 'lead
先日、MonocerosというPlack::Handler(サーバ)をリリースしました。MonocerosはStarmanやStarletと同じくPrefork型ですが、AnyEventを使い、C10Kのような多数のコネクションを捌くことができる特徴を持ち、非常に高いパフォーマンスを備えています。 このセッションではStarmanやStarlet、Twiggyといった各Plack::Handlerの内部構成の簡単な紹介、Monocerosを実装する上で学んだPlack::Handlerの構成や作成方法から、forkやUNIXプロセス、Linux TCPの話を交えて、高性能なWebアプリケーションサーバの作り方について紹介します。 今では当たり前となったPlack/PSGI対応Webアプリケーションですが、どのPlack::Handlerを使うべきなのか、なかなか自信をもって選ぶことができて
Perl 5.20 で、CPANPLUS とその依存モジュールたちが core distribution から分離されます。 また、5.22 では CGI.pm と Module::Build が分離されそうです。 ここにいたり、Perl 5 の core distribution にはいっている、ということの意味が徐々にかわってきつつあります。 では、現在の状況はなぜおきているのかを考えてみましょう。 configure_requires の普及Perl 5.8.5 あたりの時代では、Module::Build などは core distribution にはいっていないと、つらかったわけですが、configure_requires が普及したことにより、インストーラを CPAN shell で自動的にインストールすることができるようになりました。 これにより Module::Build
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く