ChefでMacを開発マシンとしてセットアップ

boxen, pivotal worktationなど最近Macを開発環境として自動でセットアップするためのツールが幾つかでてきています。このような実装を幾つか見てみましたが、各会社用に特化しているので個人では少し使いづらいため、chefの既存のレシピを使って個人用の環…

Plack::Middleware::Profiler::KYTProfでプロファイリング

Devel::KYTProfでプロファイリングするのも、ミドルウェアになっていると使いやすいかもしれないということで作ってみました。 https://github.com/dann/p5-plack-middleware-profiler-kytprof What is KYTProf? onishiさんのDevel::KYTProfは、ネットワーク…

Plack::Middleware::Profiler::NYTProfでプロファイリング

PlackアプリをプロファイリングするモジュールPlack::Middleware::Profiler::NYTProfを更新しました。 https://github.com/dann/p5-plack-middleware-profiler-nytprofbayashiさんにパッチをもらって、負荷テスト環境などでも使えるようになりました。ある一…

Devel::Cover::Report::VimででC0なカバレッジのコードを vim で表示

secondlifeさんのsimplecov-vimのエントリ見ていいなと思ってたんですが、perlでもDevel::Coverのreportとして実装されてました! http://subtech.g.hatena.ne.jp/secondlife/20120312/1331528672 cover -report vimでreport(cover_db/coverage.vim)を生成し…

Horizon

Software Engineerにお勧めの技術書

人に聞かれることも増えてきた昨今ですが、お勧めする本は毎年そう変わりはしないのでまとめてみました。言語に依存する本は、書き出すと多くなってしまうので除いてます。 コンピュータサイエンス関連のおすすめ本 Computer Architecture 大規模なシステム…

flower

kamakura

id:vkgtaro さんと鎌倉いってきたときの写真。由比ケ浜は夕焼けが絵になって素晴らしかったですね。また行きたいなあ。

Test::Perl::Metrics::Liteでコードの”死活”監視

複数人で開発していて、コードベースが管理できないくらいに複雑化してしまうというケース、誰もが1回は経験したことがあるのではないかと思います。それを防ぐために、問題のあるコードに対してアラートをあげるのをテストで行うためのモジュールが、Test::…

Perl::Metrics::LiteのCLIでPerlモジュールのメトリクス測定

Perl::Metrics::LiteにCLIを追加しました。FIleとSubroutineのメトリクスを測定できます。簡単にlocやmccableのcomplexityなどを測定できるので、casualに使ってみて頂ければ。また、Jenkins用に組み込むためのmeasureperl-jenkinsというスクリプトも同梱し…

3分でPerlのプロジェクトをJenkins Readyにする

こんばんは、着る毛布が届く前に風邪を引いたdannです。色々な環境やプロジェクトに携わっていて、その度にJenkinsのセットアップやPerlプロジェクト用のモジュールのインストールなどをしていたりしませんか。また、プロジェクトを作るたびに、Job毎にプラ…

Perl::Metrics::Lite - プラガブルなメトリクス測定モジュール - Perl Advent Calendar 2011

Perl Advent Calendar Hacker Trackの21日目です。 http://perl-users.jp/articles/advent-calendar/2011/hacker/21こんばんは。dann です。みなさん、意識は高まっていますか? 僕は上々です。 今回は拙作の Perl::Metrics::Lite というモジュールを紹介さ…

Jenkinsで継続的メトリクス測定のすすめ - Perl Advent Calendar 2011

Perl Advent Calendar Test Trackの11日目です はじめに こんばんは、家で凍死しそうなので、そろそろセラムヒートでも買おうと思っているdannですTest Track 11日目です! ikasam_a さんから「Jenkinsの話を書いて!」と言われたので、ACDD(Advent Calendar…

Javaの標準Collectionフレームワーク代替としてのfastutil/HPPCの使用のすすめ

Goな人が最適化しているエントリ(http://blog.golang.org/2011/06/profiling-go-programs.html )を読んで、ちょっと面白いなと思ったので、元の論文を読んでみました。読んでみたところ、Java 64bit版は標準のC++の5.8倍遅いとなっていたので本当かな?と思…

PerlプロジェクトでテストカバレッジのCIをする方法

前回から大分時間が経ってしまいましたが、今回はPerlのテストカバレッジ結果のサマリをJenkinsにIntegrationする方法について説明します。 概要 以前、proveのJUnit用のFormatterを使ってテスト結果をJUnit形式のXMLに変換する方法を紹介しましたが(http:/…

大規模(AP/DB) サーバーでのLarge Pageの使用のすすめ

近年はメモリも安くなり、性能を向上させるために多量のメモリを使うことで性能を維持するのは、ある程度の大規模環境であれば一般的なことではないかと思います。特に、JVM、Oracleなどで多量のメモリを使うアプリケーションでは、ヒープサイズが数Gb-数十G…

大規模DBサーバーでのInfiniBandの利用のすすめ

大規模なトランザクションが求められるシステムでは、ストレージには一定以上の投資をしたほうが全体の運用コストは下がります。アーキテクチャをシンプルに出来、かつ台数を少なくできることでオペレーションコストが劇的に下がるからです。従来はHDDを中心…

OracleでSQLのParse回数を軽減するための方法

OracleではSQLの実行手順は、次の3フェーズから構成されます。 Parse Execute Fetch その中でParse処理は、次のような手順で行われます。 セッションにキャッシュされたカーソルが存在しない場合 カーソルをオープン 共有プール上に共有カーソルがある場合 s…

OracleのSQLのチューニングに使うツール

Oracleでは性能に関連するデータが色々と取れるため、性能問題の解決がかなり容易になっています。OracleのSQLのチューニングによく使うツールと使い方のポイントをまとめてみました。 性能状況の統計的分析 (Statspack) 問題箇所の全体に占める割合によって…

DevOpsに優しいSQLの管理方法

性能チューニングは、Hardware, OS, Middlewareに対する理解があるかないかで大分かわってくるところがありますが、Hardware, OS, Middlewareといったインフラに詳しいだけでは、踏み込んだチューニングは行えません。それにも関わらず、AP開発と運用は比較…

Hardwareの基礎性能を測定するためのツール

インフラの性能でアプリケーションの性能限界が決まってしまうため、Hardwareの基礎性能を把握しておくことはとても重要です。以下では、Hardwareの基礎性能を測るための各種ツールを紹介します。 ディスク用ツール - fio DBサーバーなどのI/O intensiveなサ…

継続的プロファイリング

Google-Wide Profiling: A Continuous Profiling Infrastructure for Data Centers http://research.google.com/pubs/pub36575.html 継続的プロファイリングの仕組み 測定はOprofileとGoogle Perf Tools OprofileでのHPMのプロファイル Google Perf Toolsを…

perfの使い方

CPUネックのサーバーの状況をリアルタイムに知りたいケースというのは、科学計算、暗号処理、画像処理などのCPU boundなアプリケーションでは良くあるんじゃないかと思います。perfはoprofileのリアルタイム版といった感じで、hardware event, software even…

Le Grand Bleu

TwitterのBlenderに近いアーキテクチャになっているMessage Pack RPCのJava版の実装を読んでみた

TwitterのBlenderはNIOの使い方として面白い使い方だなあと思っていたので、それに比較的近い実装をしているMessagePack-RPCのJava版の実装を読んでみました(MessagePack RPCのJava版でも同様にNettyを使っています)。読んでみた感じだと、MessagePack RPC…

TwitterのBlenderのアーキテクチャのポイント

http://engineering.twitter.com/2011/04/twitter-search-is-now-3x-faster_1656.html「バックエンドサービスのI/Oが同期になると、I/O待ちで遅くなり、フロントが詰まってしまうので遅い。だから、Non BlockingなI/O呼び出しをしI/Oを多重化し、その呼び出…

Explored!

ついにFlickrのExploreに載りました!今年はもっとたくさん載せられるように頑張りたいところです。http://www.flickr.com/explore/interesting/2011/4/10/page31

Perl CPANモジュールガイド Rocks!

PerlはCPANという環境があるからこそ、今も一線で使われ続けているといっても過言ではありません。しかし、その最大の利点は、同時に初中級者にとっては問題にもなりえます。それは、モジュール量が多すぎて、何を選択すればよいかを判断するのが難しいから…

qunit-tapとproveを使ってJSの単体テストのCIをする方法

「phantomjs + qunit-tapでCLIで単体テスト」をするという素晴らしい方法をt-wadaさんが書かれてました。これを少し応用するだけでJavaScriptの単体テストのCIすることができます。 http://www.slideshare.net/t_wada/wandering-about-javascript-testingFT…

トランザクション数の多いDBサーバーのディスク構成について

IOPSが高い値を維持でき、ある程度コストを抑えたDBサーバーのディスク構成を考えてみる。RAIDカードを全てのスレーブに置くというのは価格がかかりすぎること、SSDが安くかえるようになったことを考えると、以下のような構成が、そこそこの価格でIOPSを稼ぐ…