タグ

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

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

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

    PHP のコードパスを解析する CodePathAnalyzer を作った | 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
    aki77
    aki77 2012/08/21
  • CUI な Git ブラウザ tig を入れてみた - Born Too Late

    Git をなかなか使いこなせずにいる私ですが、これはいい ! コンソールから使える git ブラウザ、tig が超便利 Vim に近い操作感で使えるのが Vim 使いには非常に嬉しいところです。以下で、インストール方法と基操作について紹介します。 インストール インストールは、まずソースコードからやってみたのですが、パッケージが存在することに気づいたので、 aptitude で入れ直しました。 sudo aptitude install tig はい、簡単ですね。 起動する カレントディレクトリを Git のワークツリーに移動して、 tig コマンドを実行します。 $ cd /path/to/work-tree $ tig ヘルプを表示する: h 何はともあれ、わからないことがあればとりあえず h を押してヘルプを調べましょう。 カーソルの移動: j, k Vim ユーザなら、何の問題も

    CUI な Git ブラウザ tig を入れてみた - Born Too Late
  • Travis CI で PHP 5.4 も CI する, PHPUnit も Behat もやる | Born Too Late

    この記事は PHP5.4 Advent Calendar jp: 2011 の 20 日目です. 前日: 次のプロジェクトPHP 5.4 の採用を提案するための 3 つのポイント (@co3k さん) 翌日: (@kokkekun さん) Travis CI とは Travis CI は, Continuous Integration (CI: 継続的インテグレーション) を実行するクラウド環境です. GitHub に push すると, Travis CI の VM 上に通知が行われ, GitHub リポジトリからのチェックアウトや, ユニットテストの実行が行われます. ユニットテストの実行は成功/失敗の結果により通知が行われ, また, 履歴も Travis CI 上に残ります. 元々は Ruby 専用のサービスだったと思いますが, その後 Clojure や Node.js などを

    Travis CI で PHP 5.4 も CI する, PHPUnit も Behat もやる | Born Too Late
    aki77
    aki77 2011/12/20
  • phpenv で複数の PHP 環境を管理する | Born Too Late

    phpenv とは CHH/phpenv - GitHub 複数のバージョンの PHP を管理し, コマンドで簡単に切り替えるためのものです. Ruby でいう rbenv や RVM, Perl でいうところの perlbrew にあたるものです. なお, phpenv の中身は rbenv を流用することで動いています. インストール まず, 以下のコマンドでインストールスクリプトを実行します. $ curl https://raw.github.com/CHH/phpenv/master/install.sh | sh 中では rbenv を git clone していたりするので, Git をインストールしている必要があります. 上記コマンドが成功したら, ~/.bashrc もしくは zsh 使いなら ~/.zshrc に以下のコマンドを追記します. あとはいま編集したファイルを

    phpenv で複数の PHP 環境を管理する | Born Too Late
    aki77
    aki77 2011/10/23
  • php-build で PHP 5.4.0 beta1 をビルドする | Born Too Late

    php-build とは コマンドライン一発でソースコードのダウンロード, 展開, ビルドまで自動でやってくれるツールです. ところで Ruby にも ruby-build というツールがありますね. 環境について 最悪壊れても困らない環境で試すことをオススメします. 今回は開発用 VM 上の Ubuntu 10.10 で作業を行いました. php-build のインストール GitHubphp-build プロジェクト上で特にインストール方法について説明されていません. ここではホームディレクトリ上の .php-build というディレクトリにインストールし, そこにパスを通す, という方法を採ります. .zshrc の部分については, Bash を使っている場合は .bashrc に置き換えてください. 以下のようにコマンドを実行して, 同様の結果が得られれば php-build

    php-build で PHP 5.4.0 beta1 をビルドする | Born Too Late
    aki77
    aki77 2011/10/23
  • 5 分で分かる PHP の組込みインターフェイス | Born Too Late

    PHP の interface や implements ってご存知ですか ? 知っている前提で話を進めます。 それでは PHP の組込みインターフェイスをご存知ですか ? この記事ではそれについて紹介します。 なお、PHP のバージョンは 5.3 以降を前提としています。 (多分、 5.2 でも動く) PHP の組込みインターフェイスとは PHP でインターフェイスを定義するには、 interface 宣言を記述する必要があります。 しかし、以下のようなインターフェイスは PHP に予め組込まれており、定義すること無しに利用できます。 Countable Iterator ArrayAccess 普通 interface といえば、メソッドの定義を強制することで、クラスの再利用性を高めるために用いられていると思います。 上記の組込みのインターフェイスについても、もちろんそういった利点があ

    5 分で分かる PHP の組込みインターフェイス | Born Too Late
    aki77
    aki77 2011/08/14
  • 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
  • PHP 用ベンチマーキングフレームワーク Joshimane というのを作った | Born Too Late

    あくまでもプロトタイプですが. gist: 813246 - Joshimane: A Tiny PHP Benchmarking Framework... But it's just a prototype yet.- GitHub プロトタイプなので, API は大幅に変わると思います. 使用イメージ 以下のようにして使用します. これを実行すると, 以下のような結果が得られます. $ php example.php Job A: 0.52975106 Job B: 0.26065207 一応補足すると, Job A ではループ時に毎回 (つまり 100 回) count($range) が実行されるのに対して, Job B ではループの開始前に一度だけしか count($range) が実行されないので, これだけの差が出ます. 名前について 女子マネです. なんかこう... 陸上部

  • 1