スポンサーサイト

0

    一定期間更新がないため広告を表示しています


    • 2014.12.23 Tuesday
    • -
    • -
    • -
    • -
    • -
    • by スポンサードリンク

    WindowsのPCで開発するphperがxhprofを使う方法

    0

      xhprofはfacebookが開発した超・強力なプロファイリングツールです。コールグラフというどこがボトルネックになっているかを綺麗に画像にして見せてくれる機能が有名です。
      しかし、残念なことに、phpのライブラリではなくphpの拡張なので、Windowsでは使うことができません(自分でビルドすればいいんですが、それが難しい…)
      「そろそろmacにしたら…?」というお馴染みの声が聞こえてくる中、家庭の事情でWindowsのPCしか使えない私が色々試行錯誤して、xhprof使える方法を見付けたのでご紹介します。

      結論:Vagrant使え!

      え?ここで終わっちゃ、だめ?w

      Vagrantって最近よく聞くけど何?という方も多いでしょう。
      Vagrantは仮想OSを開発者にとって嬉しい状態にセットしてくれるありがたいソフトです。ぜんぶ無料で使えます(お金払うと快適な速度のほうが使えるらしいですが)。ま、私も2か月前に初めて知ったんですけどね!

      さっそくやり方を書きます。

      1. VirtualBoxをインストールします。(無料)
      2. Vagrantをインストールします。
      3. コマンドプロンプトを開き、適当なフォルダでvagrant initを実行します。
      4. フォルダを見るとVagrantfileというファイルができています。お好きなエディタで開いて下さい。編集する箇所は4か所です。
        config.vm.box = "base"
        を
        config.vm.box = "precise64"
        に変更
        
        # config.vm.box_url = "http://domain.com/path/to/above.box"
        を
        config.vm.box_url = "http://files.vagrantup.com/precise64.box"
        に変更
        
        # config.vm.network :private_network, ip: "192.168.33.10"
        を
        config.vm.network :private_network, ip: "192.168.33.10"
        に変更
        
        # config.vm.synced_folder "../data", "/vagrant_data"
        を
        config.vm.synced_folder "./data", "/var/www/vagrant_data"
        に変更
        
      5. ここでVagrantfileがあるフォルダ内にdataというフォルダを作っておきます。
      6. コマンドプロンプトでvagrant upを実行して、仮想マシンを作らせます。だーっと実行結果が流れるので待ちましょう。特に最初は時間がかかります。
      7. 実行が終わったらコマンドプロンプトでvagrant sshを実行しましょう。お馴染みの(?)SSHで仮想マシンに接続できます。precise64にしたのでOSはUbuntuの64bitです。 sudoが効くので、いつもサーバー構築する時のように、phpやapacheをインストールできます。
        特にバージョン等にこだわりが無ければ
        sudo apt-get update
        sudo apt-get install php5
        
        でOKです。今日(2013/07/25)の時点では、PHP5.3.10が入りました。
      8. そしていよいよxhprofをインストールします。
        sudo apt-get install php-pear make
        sudo pecl install xhprof-beta
        
        extension=xhprof.soをphp.iniに追記したらインストール完了です!Vagrant万歳!

      後は、Vagrantfileのあるフォルダの下に作ったdataフォルダの中にxhprofを試したいPHPアプリ(wordpressとかOpenPNEとか自作の何かとか)のソースを入れて、Ubuntu側に何かhttpサーバーを入れて、/var/www/vagrant_data(アプリによっては/var/www/vagrant_data/webとかになりますが)をドキュメントルートに設定するだけで、Windowsでも好きなようにxhprofでのプロファイリング結果を出して見ることができます。
      xhprofの設定方法やプロファイル結果の見方については検索するとたくさん記事が出て来るのでググってみてください。

      これだけなら単にVirtualBoxかVmwarePlayerを使えば従来でもできたことですが、Vagrantのすごいところは、dataフォルダに入れたPHPのソースをプロファイル結果に従ってその場で、しかもWindowsのPC側の使い慣れたエディタやIDEで編集できるところ(synced_folderのすごいところ、というべきか)。

      色々と開発中の不便に悩むたびに「YOU macにしちゃいなYO!」と言われることが多いWindowsですが、Vagrantという強力な武器をゲットした今では、もうmacの誘惑も怖くないですね!



      #phpmatsuri 2013でOpenPNE3のcookbookを書きました

      0

        7/14〜7/15札幌で開催されたphpmatsuriに行ってきました!

        わざわざ札幌まで行った理由としては、今すごいコミュニティ欲が高いシーズンが来ていて、更に、札幌は私の生まれ故郷で実家があるので子供達を連れて行っても預け先がある(子供を自宅に置いて行かなくて済むのでDAuth=ダンナauthが取りやすい)というだけです。ついでに、春先に一度倒れた祖父の見舞い(超元気でした)も行きたかったし、単に暑すぎる名古屋から涼しい札幌に少しでも涼みに行きたかったというのもありました。不純な動機ばかりですがw ともかく子供二人と自分、三人分の飛行機代をかけて札幌まで行きました。

        作ったもの:OpenPNE3のcookbookと、そのcookbookを使ったVagrant環境

        OpenPNE3のcookbookと、そのcookbookを使ったVagrant環境を作りました。

        なぜ作ろうと思ったかと言うと、素人さんは素人さんでもmac使いの人はいざとなれば自力でビルドしてもらえばいいのでまぁいいとして、windows使いの人にOpenPNE3が動く環境を作ってもらうのが難しいと前から考えていて、唯一おすすめできると思っていたのがxamppぐらい。でも、xamppの最新版はPHP5.4で、OpenPNE3が今のところPHP5.4で動かない(PNEが悪いわけではなくsymfony1.4とdoctrine1.2の問題で)という状態になっていました。
        私自身、開発用xamppを5.4にしてからPNE3の案件が戻って来たときに非常に困っていたという事情もあります。私もPHPカンファレンス関西で安藤さんが紹介してくださったvagrantを使って開発環境を用意して回避したので、同様に一般向けに作ったらいいんじゃないかと思ったわけです。

        開発は苦労しました。
        まず、私のruby力不足。随分前にこのブログで「rubyを始めてみた」的なエントリーを書いた記憶があるのですが、必要に迫られなかったこともあり、実際はhello world以上のことをやったことがなかったのです。Vagrantfileはまだいいとしても、cookbookのほうを書くためには、制御構造(if,each…)の書き方やら連想配列の書き方からグーグル先生に訊きながらの作業になりました。しかも一日目夜のcandycaneのワークショップで「if文のブロックで囲むとインデントが深くなるのでnot_ifやonly_ifを使え」とか言われて慌てて直したり…。
        さらに、会場の回線環境があまり良くなくてほぼスマフォのテザリングで頑張ったのですが、大量の依存パッケージ(apache,mysql,php…)をインストールさせることになるので、タイムアウトエラーが頻発してしまい、実際のPNEインストールに辿り着かせるまでが大変という状態でした。

        最終的には、OSにprecise64を使い、かつsynced_folderなしであればインストール完了して画面が表示できるところまではなんとか作ることができました。
        phpmatsuriは終わりましたが、phpmatsuriだけのために作ったcookbookやvagrant環境ではないので、今後も開発を続けたいと考えています。
        具体的には、
        * Vagrantを使う場合にsynced_folder内にソースを入れられるようにする
        * 設定項目でもっと柔軟性を持たせたい(インストールするプラグインとか)
        * precise64以外のOSにも対応したい(特にRedhat,CentOSはマストかと)
        * ruby力をつける&モジュール分割するなどしてもう少しcookbook自体のコードを綺麗にしたい
        という野望を持っています。目標は大きく!

        LTについて

        初日に講演されたどなたか(失念…ごめんなさい><)を見習ってスライドは英語、喋りは日本語にしました。一人同時通訳にしたら絶対に時間が足りないと思ったので。結局、日本語だけ喋っても時間は足りませんでした…。

        少しだけウケを狙った「〜〜済のものがこちらになります」が滑って悲しかったです。タイトルのひねりが足りなかったのではないかと反省。せっかくLT時間が3分間だったり、ネタがchefだったりしたので、『OpenPNE3 3分間クッキング』とかつけるべきでしたね。←反省するところ間違ってる?

        結果20位台(魂抜けてて正確な順位は聞いてなかった)という評価をいただきました。次はもっと上を狙えるよう頑張りたいです!

        二日間通しての感想

        OpenPNE関係で普段からお世話になっている手嶋屋の手嶋さん(鳩サブレありがとうございましたm(_ _)m)と「リアルでは初めまして」。川原さん・NEKOGETさん・cakephperさんとも以下同文。PHPメンターズの道場生仲間の佐藤さんとも初めまして。
        更に、LTで「名古屋から来た」と言ったお陰で、岐阜から来た外人さんお二人からも声を掛けていただきました。名古屋在住と岐阜在住が札幌のphpmatsuriまで来て、子供の話とか保育園の話で盛り上がるという謎の展開^^;お二人が日本語で喋ってくれてるのに私が英語交じりで返すというアホっぷりを晒してしまい、申し訳なかったです。
        偶然、福岡のfusicから来た前回・前々回の優勝者の方とずっと同じテーブルでハックするという幸運に恵まれました。が、お隣の同僚さんも含めて、すごすぎて何も盗んで来れなかった…orz

        KEEP

        • 来年も参加する!
        • ネタだけじゃなく実用的なものを作る

        PROBLEM

        • 準備はしっかりと(実はCentOSのOSイメージ持っていくのを忘れてたのです)

        TRY

        • もっと色々な人と話す(今回ほとんど同じテーブル+前からネット上で知っている人としか話してないので)

        来年もぜったい行くぞー!というか名古屋でやろうよ!←



        1

        PR

        calendar

        S M T W T F S
         123456
        78910111213
        14151617181920
        21222324252627
        28293031   
        << July 2013 >>

        twitter

        selected entries

        categories

        archives

        recent comment

        • djangoテンプレート上でmodelのメソッドに引数を渡す方法(djangoで出勤簿アプリ試作中♪)
          GavannITサービス-なりとみ
        • 私がそれでも名古屋市に住み続ける理由を6つにまとめてみた!
          bose wireless speaker
        • FastCGIでdjango…400エラー???
          levi's
        • さくらインターネットdjangoが突然500エラー!?(Pythonバージョンアップされてた
          salomon running shoes
        • 私がそれでも名古屋市に住み続ける理由を6つにまとめてみた!
          louboutin shoes
        • FastCGIでdjango…400エラー???
          yeezy boost 350
        • さくらインターネットdjangoが突然500エラー!?(Pythonバージョンアップされてた
          jordan 11
        • Silexでエラーページをカスタマイズする方法 : Symfony Advent Calendar 2011 - day 12
          pandora jewelry
        • django対symfony 日本語メール送信(その1 symfony編)
          nike air vapormax
        • 解決!XREAでCGI版Pythonを使ってdjangoを動かす(人柱?)
          kate spade

        recent trackback

        • HTMLの表(TABLE)のセル(TD)に斜線を引くjavascriptライブラリ slash.js 作っちゃいました
          常山日記
        • django対symfony 日本語メール送信(その1 symfony編)
          CPA-LABテクニカル
        • CodeIgniterでユーザー認証
          されどLAMPな日々
        • 久々にdjangoを最新版にしたらHTMLがエスケープされちゃった!!(解決済み)
          常山日記
        • FastCGIを諦めてmod_pythonを使う。Apacheのアップグレード
          サーバー用語集
        • さくらインターネット、sqlite3でdjango@CGI版を使う際の設定メモ
          常山日記
        • さくらインターネット スタンダードプランでdjango使ってる方、DBは?
          mitszoの日記
        • python多次元リストをsort(並べ替え)する方法?
          mitszoの日記
        • フォームから送信した値とrequest.POSTの挙動($_POST@PHPとの比較)
          Humming Via Kitchen
        • 日本語テキストをtruncate@django(Python全般にも??)
          常山日記

        recommend

        links

        profile

        search this site.

        others

        mobile

        qrcode

        powered

        無料ブログ作成サービス JUGEM