タグ

ブックマーク / blog.yuyat.jp (5)

  • PHP のコードパスを解析する CodePathAnalyzer を作った | Born Too Late

    レガシーコードと戦っていると、「このコードのどこをどう通ってこういう結果になってしまっているのか」がわからなくなることがあります。 初見でコードを理解する能力は、コードを読んできた経験が多ければ多いほど、向上するものだと思います。 とは言っても、構造化やモジュール化が適切でなく、スコープの長大なコードなどは、人間の限界を超えているものもあるでしょう。 ステップ実行のできる IDE などを使う、という選択もあると思いますが、僕は重厚な IDE を好みません。 もっと楽にできる方法で、コードパスを解析する方法があれば、ということで作ってみました。 yuya-takeyama/code_path_analyzer 元になっているのは、仕事の時にコード中にベタ書きした関数です。 Gist に公開したところはてブが 10 ぐらい付いたのと、次必要になったときにすぐ使えるようにしておきたかったので、ラ

    PHP のコードパスを解析する CodePathAnalyzer を作った | Born Too Late
  • PHP 5.2 で並列数を保ちつつ非同期 HTTP 処理 | Born Too Late

    最近は Admiral Sir Cloudesley Shovell というバンドの 1st フルアルバム Don't Hear It... Feat It をよく聴いています。 Sir Lord Baltimore のような、骨太なリフと、ブルージーでドラマ性もある楽曲が魅力のバンドですが、現在進行形で活動中のバンドです。 ストーナーロックとか好きな人は是非。 ここから題です。 あるところに、Web API を数十万回単位で叩きまくる、PHP で書かれたバッチプログラムがあったとしましょう。 処理件数が増えるごとに処理時間が増大するので、いつしか 1 日経っても終わらないようになってしまいました。 そのプログラムは HTTP リクエストを直列に行っていたので、それを並列化させれば何とかなるのではないか、と考えて作ったのが以下のライブラリ。 yuya-takeyama/parallel_

    PHP 5.2 で並列数を保ちつつ非同期 HTTP 処理 | Born Too Late
  • PHP で Reactor パターンを使った非同期 MySQL 問い合わせ | Born Too Late

    最近は非同期処理に興味があります。 Reactor パターンというのは、非同期処理の実装パターンのひとつで、例えば HTTP 問い合わせなんかで「読み込みが完了するのを監視しつつその他のタスクを進め、読み込みが完了したタイミングでその結果を処理する」みたいなヤツです。 例えば Node.js では Reactor パターンを使ったプログラミングが比較的簡単に行えます。 PHP でも同じことをやりたい、というときには React というフレームワークがあって、少し前に話題になりました。 PHPでもリアルタイムWeb。node.phpReact」 現状 React ではファイル I/O やソケット通信を非同期に行えるようになっております。 が、MySQL で非同期処理を行う方法は今の所提供されていません。 PHP でも mysqli_poll を使えば非同期に MySQL にクエリを投げられ

    PHP で Reactor パターンを使った非同期 MySQL 問い合わせ | Born Too Late
  • PHP 用キャッシュライブラリ Cache_Casual をリリース | Born Too Late

    Cache_Lite は未だに PHP4 なコードであんまりだし, Zend_Cache は依存関係がめんどくさそうなので, 外部ライブラリに依存しないものを作ってみました. Github Openpear 使い方 Cache_Casual オブジェクトは ArrayAccess インターフェイスを実装しており, 連想配列のように操作することができるので, かなりカジュアルだと思います. カスタムキャッシュコンテナ 上記の例では, キャッシュコンテナとしてファイルを利用しています. キャッシュコンテナは Dependency Injection (依存性の注入) により Cache_Casual オブジェクトに差し込むことができるので, Cache_Casual_ContainerAbstract クラスを継承し, Cache_Casual_ContainerInterface インターフ

    PHP 用キャッシュライブラリ Cache_Casual をリリース | Born Too Late
  • Hello, World! するだけの PHP Extension を作る | Born Too Late

    来月開催される ZendEngine勉強会@東京に向けて, 少しでも予習しておこうと思い, 以下のページを参考にやってみました. PHP Extension を作ろう第1回 - まずは Hello World DSAS開発者の部屋 しかし, この記事そのままのやり方では上手くいきませんでした. 書かれたのが 2006 年ということもあり, 一部情報が古くなっている部分があるようです. そこで, 上記の記事を参考にしつつ, 調べてまとめてみました. 0. 前提とする環境 私は以下の環境で検証を行いました. LAMP 環境は tasksel コマンドで構築したものです. $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=10.10 DISTRIB_CODENAME=maverick DISTRIB_DESCRIPTION="Ubu

    Hello, World! するだけの PHP Extension を作る | Born Too Late
  • 1