タグ

ブックマーク / brtriver.hatenadiary.org (21)

  • 3分でできる俺PHPテスト環境 - ぷぎがぽぎ

    ※この記事はVOYAGE GROUP エンジニアブログ : Advent Calendar 2012の15日目の記事として書いてます。 3種の神器 PHPUnit, Stagehand_TestRunner, Phake 初めての方はじめまして。いつもの方こんにちは。 VOYAGE GROUP の adingo という会社で 広告配信に関わる Webアプリケーション開発エンジニアをしている @brtriver です。 今日は実際の現場でも使っているPHPの開発環境構築Tipsということで みんな大好き PHPUnit 、 自分は大好き Phake 、毎回テストを手動で実行するのが許されるのは小学生までだよねー Stagehand_TestRunner の 3つを3分でプロジェクトごとにインストールする方法を書いてみます。 何も考えず composer.jsonをコピペで用意 プロジェクト

    3分でできる俺PHPテスト環境 - ぷぎがぽぎ
  • プロとしてWebアプリケーションを開発するということ - ぷぎがぽぎ

    クロコスのエンジニアでもあり、日Symfonyユーザー会のメンバーでもある小川さん([twitter:@fivestr])が執筆した最新作「効率的なWebアプリケーションの作り方 -PHPによるモダン開発入門-」を献いただいたので紹介したいと思います。 最新の技術を追っているわけではなく、実績ある技術や手法の基礎編 サブタイトルに「モダン」という言葉があってPHPでの最先端な開発かと感じる方がいるかもしれませんが、内容はOOP、DI、そしてドメイン駆動開発などの基礎的なところを実例を通して紹介しています。つまり、これから5年後または10年後と利用することができる実績ある技術と手法について紹介していることが特徴だと感じました。*1 Webアプリケーションをプロとして開発するために必要な知識を理解するための一歩 PHPの書籍というと、PHPの構文などPHPの使い方にフォーカスした、または

    プロとしてWebアプリケーションを開発するということ - ぷぎがぽぎ
    Fivestar
    Fivestar 2012/06/03
  • Symfony2 PR7 あらため Symfony Standard 2.0.0 PR7 リリース - ぷぎがぽぎ

    さて、Symfony2が完成度を高めたPR7がリリースされました。どうです。このインストールしてアクセスした画面。なんか豪華です。そして当であれば安定板が出ている予定だったのですが、いまだに絶賛開発中です。 かなり完成度が高くなってきたSymfony2の現在の状況をまとめてみます。漏れor間違いがあれば指摘ください。 サイトのリニューアル いままでsymfony-reloaded.orgだったドメインがsymfony.comになりました。そして、symfony1系のサイトだったsymfony 1.x legacy websiteの上部にもYou are browsing the symfony 1 legacy websiteと案内が表示されています。 legacyと書いてますがSymfony2はまだプレビューリリース版ですのでご注意をば。 そして、ドキュメントにSymfony2 ver

    Symfony2 PR7 あらため Symfony Standard 2.0.0 PR7 リリース - ぷぎがぽぎ
  • ./console --shellを拡張してみた - ぷぎがぽぎ

    早速なので、仕事であまり時間がないけどちょっと触ってみました。 Symfony2からは各アプリケーション毎にconsoleコマンドがあり、以前でいうsymfonyコマンドのようです。 また、インタラクティブシェルも用意されており、--shellオプションで起動できます。*1 で、このシェルを拡張する方法を試してみました。 拡張したいファイルをコピーしnamespaceを書き換える 今回利用したファイルはGitHub - noelg/symfony-demo: A shopping cart application built with Symfony 2です。 symfonyのドキュメントにあったAJAXを使ったショッピングカートのSymfony2実装版です。 動作させるために必要なのはPHP5.3の環境とgit cloneしたファイルです。 主なディレクトリ構成は以下のようになっていまし

    ./console --shellを拡張してみた - ぷぎがぽぎ
    Fivestar
    Fivestar 2010/02/19
    仕事はええw
  • Symfony2 プレビュー版リリース - ぷぎがぽぎ

    Symfony, High Performance PHP Framework for Web Development フランスではSymfonyのカンファレンスが開催され、Symfony2のプレビュー版がついさきほど公開されました。 残念ながら日からtwitterのタイムラインを眺めつつ雰囲気を味わっていたのですが、そのまとめをちょこっと。 イベントの公式サイトは以下のとおり。 SymfonyLive Conferences かなり濃厚な発表が色々あったようです。 以下気になった事 Doctrine2ではマジックメソッドをまったく使っていない => 予想以上に速くなった Doctrineを使い始めて最初に大変な思いをしたのが、マジックメソッドが多いため、どのように処理されているかを追うことでした。 個人的にも嬉しい対応。 Doctrine 2 - Not The Same Old Ph

    Symfony2 プレビュー版リリース - ぷぎがぽぎ
  • MongoDBを使ったセッション管理 - ぷぎがぽぎ

    MongoDBを使ったセッション管理のほうがMySQL(PDO)より確実に速いよね?でも、そのためのクラスが用意されてないよね? ってことで、書いてみました。 sfMongoSessionStorage/sfMongoSessionStorage.class.php at master · brtriver/sfMongoSessionStorage · GitHub 書いたといっても、DBのセッション管理クラスをそのまま書き換えたぐらいです。 設定 使い方はfactories.ymlにて以下のように設定。 レプリケーションさせたりというところまでは考慮してません。 storage: class: sfMongoSessionStorage param: host: localhost #接続先 port: 27017 #ポート db_name: symfony #DB名 collecti

    MongoDBを使ったセッション管理 - ぷぎがぽぎ
  • リダイレクト時にスラッシュ(/)でなくGETパラメータでリダイレクトさせたい - ぷぎがぽぎ

    いまだにハマッたまま抜け出せないので、もう諦めて別の方法で回避していますが、symfony で $this->redirect('fuga/hoge?sid=xxxx'); とすると /fuga/hoge/sid/xxxx に勝手に変換されてリダイレクトされます。 symfonyの強力なサポーターであるid:innx_hidenoriさんとコメントが被ってますが、symfonyサポーターの優しさですw さて、題の件ですが、結論からいうと対処できます。 ただし、symfonyのバージョンによって対処方法が異なります。 symfony1.0, 1.1系(factories.ymlでextra_parameters_as_query_stringの設定ができないバージョン) sf_url_formatが'PATH'という文字列で指定されている場合にスラッシュで自動変換されます。 これを'GET

    リダイレクト時にスラッシュ(/)でなくGETパラメータでリダイレクトさせたい - ぷぎがぽぎ
  • symfony ccで時間がかかる場合 - ぷぎがぽぎ

    ある程度のアクセスがある場合や、キャッシュを多用していると、symfony ccを実行するとかなり時間がかかることがあります。 そういう場合は、アプリケーションのsetting.ymlでcheck_lockをonにしておくと、キャッシュクリア中は全てのアクセスをunavailable.phpにリダイレクトしてくれるので、例えば「メンテナンス中です」のような表示にしておくことができます。 やっていることはsymfony cc時にロックファイルを作成しているだけです。 なので、万が一symfony ccが終わったのにunavailable.phpにリダイレクトされる場合は作成されているロックファイルを削除すればOKです。 また、このロックファイルの存在を知っていれば、自前タスクなどでアプリケーション全体へのアクセスを禁止したい場合などにもロックファイルを作成さえすれば同じような処理を実装するこ

    symfony ccで時間がかかる場合 - ぷぎがぽぎ
  • symfony1.3(1.4)をサキヨミする - ぷぎがぽぎ

    symfony1.3のアルファ版がリリースされようやく全体像が見えてきました。 家でアナウンスがあったように、1.2からどのように変わったのかドキュメントが用意されています。日語でも読めるようになっています。 symfony 1.3では何が新しくなったの? アップグレードするには? 1.3の廃止予定と削除 今後の長期メンテナンスのことを考えると1.2にこだわる理由がなければ移行することになると思います。 ざっくりと読んだ感想では、1.2からの移行はそれほど難しくなさそうです。 個人的には メール送信のライブラリ(SwiftMailer4.1)を持つようになり、今後は日語環境への配慮もしてくれるという点 ウィジットとバリデーターでメソッドチェーンが使えるようになるのでコードが冗長化してしまう問題から解放される点 Doctrineが1.0から1.2になったこと。(ただし何がどう便利になっ

    symfony1.3(1.4)をサキヨミする - ぷぎがぽぎ
    Fivestar
    Fivestar 2009/10/01
    DoctrineはCollectionなどで俺俺クラスが使えるようになっただけでもかなりうれしいです。
  • Snow Leopard + MacPorts1.8.0 の環境でPHPをコンパイル - ぷぎがぽぎ

    忘れそうなのでメモ。 PHPMySQL以外はMacPortsで管理 macbookのOSをアップグレードしたので、macportsも作り直すことにしました。 ただし、PHPCGI版を利用して複数のバージョンでローカルでテストできるようにしたいので、ソースからコンパイルしました。 また、pdoを利用する関係でMySQLはportsからでなくMySQLのサイトからMac OSX用(x86_64)アーカイブを/usr/local/mysqlに展開しました。もちろん64bitです。 あとは、configure、make、make installと楽勝かと思いきや、makeでこけるこける。。 以下のページでずばり解決しました。 http://moudamekamoshirenai.g.hatena.ne.jp/onumerane/20090905/1252137013 必要なパッケージさえ入って

    Snow Leopard + MacPorts1.8.0 の環境でPHPをコンパイル - ぷぎがぽぎ
    Fivestar
    Fivestar 2009/09/12
  • I have enjoyed sightseeing in Tokyo and symfony Meetup Tokyo! - ぷぎがぽぎ

    いやー。楽しかったです。id:sakaikさん、id:Fivestarさん、id:innx_hidenoriがレポートしてくれています。 PHPカンファレンス2009 第3日目テクテクデイに参加してきました - sakaikの日々雑感~(T)編 Fabienと東京観光+Symfony Meetup Tokyo - ゆっくり*ゆっくり fabienさんとのsymfonyツアー&symfony MeetUpに参加しました - しんふぉにゃん 中学生レベルの英語しか話せない自分なのですが、少しでもFabienさんとお話もできてよかったです。 また、FabienさんのSymfony2のお話が聞けたのも貴重な経験でした。 通訳をしてくださったid:AKIMOTOさん、ganchikuさん、カメラマンのid:tsukimiyaさん。当にありがとうございました。 Symfony2のお話で一番印象的だっ

    I have enjoyed sightseeing in Tokyo and symfony Meetup Tokyo! - ぷぎがぽぎ
    Fivestar
    Fivestar 2009/09/08
    フィルターがなくなるのですね。これでFormFilterとコントローラ側のFilterを拡張しようとしたときにlib/filterが被るという煩わしさから開放されるのですね。
  • symfonyのイベント - ぷぎがぽぎ

    5/18にsymfony勉強会があり、イベントという機能について発表してきました。 symfonyのイベント(sfEventDispatcher)はsymfony1.1以降から利用できるsymfonyのコア部分を拡張するための手段で、1.0のころに用意されていたMixinという機能に取って代わるものです。 コアクラスが用意しているイベント発生時に、自前のメソッドを呼び出すように登録ができ*1、登録したメソッドを順次実行するのがイベントディスパッチャという機能になります。 どのようなイベントが用意されているかはsymfony 1.x legacy websiteに一覧があるので簡単に確認できます。 また、この話を聞いて「なんだObserverパターンではないか」と思われた方。正解です。 別にsymfonyだけが持っている機能というわけではなく、ごく一般的にOberserパターンとして知られて

    symfonyのイベント - ぷぎがぽぎ
  • sfFormの表示フォーマットを変更する - ぷぎがぽぎ

    symfonyのformフレームワークはテンプレート中に <table> <?php echo $form ?> </table> とするだけで、定義したフォームのHTMLを吐き出して以下のような画面ができます*1 そして、入力にエラーがある場合は同じコードで以下のような画面ができあがります。 では、この表示フォーマットを変更したい場合はどうしたらよいのかというのが日のミニtips。 ドキュメントには書かれていないのですが、ちゃんとメソッドが用意されています。 フォームクラスのsetupメソッド内で以下のようにsetRowFormatに新しい表示フォーマットを渡してあげればOKです。 <?php ... public function setup() { $format = "<tr>\n <th>%label%</th>\n <td>%field%%help%%error%%hidde

    sfFormの表示フォーマットを変更する - ぷぎがぽぎ
  • symfonyで画像認証を使う - ぷぎがぽぎ

    最近では一般的になりつつあるCAPTCHA(画像認証)をsymfonyで使ってみた手順メモ。設定すると以下のようなキャプチャがフォームで利用できます。 sfCryptoCaptchaPlugin プラグインであるだろうと思い、探してみつけたのが、sfCryptoCaptchaPlugin。 ただし、Readme通りにやってもうまくいかない箇所がいくつかあるので実際に動作した手順のメモ プラグインのインストール plugin:installコマンドが通らなかったので、svnでチェックアウトしてくる。 $ mkdir plugins/sfCryptoCaptchaPlugin $ cd plugins/sfCryptoCaptchaPlugin $ svn co http://svn.symfony-project.com/plugins/sfCryptoCaptchaPlugin/trunk

    symfonyで画像認証を使う - ぷぎがぽぎ
  • sfObjectRouteで確認画面を作ってみる - ぷぎがぽぎ

    [追記] 4/9 sfObjectRouteCollectionを使った場合も追加 sfObjectRouteとは? アシアルさんのブログが一番わかりやすいので、そちらを最初に読むとよくわかります。 参照: symfony 1.2のルーティングまとめ - アシアルブログ sfObjectRouteを使うメリットは? アクションの記述が減ります。ルーティングのルールに従って処理されるからです。 データベースからidで値を持ってくる処理は、ルーティングの設定さえ行えば、アクションにはモデル取得のための記述が $job = $this->getRoute()->getObject(); だけになります。 sfObjectRouteを使った場合のデメリットは? 今回のお題のような確認画面を新しく作りたいというような場合にどうやっていいか悩む。 そして、場合によっては、ルールを超えるために複雑なコー

    sfObjectRouteで確認画面を作ってみる - ぷぎがぽぎ
    Fivestar
    Fivestar 2009/04/10
    宣伝ありがとうございます
  • symfony2のコンセプトを斜め読み - ぷぎがぽぎ

    Symfony 2 Fabien Potencier March 04, 2009 > June 04, 2009 Montreal / Canada - PHPQuebec Conference - 2009 Next > カナダで開催されたPHPQuebec カンファレンスでsymfony2の開発リーダーであるFabienが行ったプレゼンの資料が公開されています。 symfony1.x系はあくまでもsymfony2へ移行していくための準備にすぎないということがわかっている現在、symfony2がどういうような実装になっていくのか気になっていたので、ざっくりと眺めてみた感想を。 1. symfony2のコアはより軽量にかつ柔軟性があるものになるので単純な処理(DB処理などなしで文字列の出力程度)は早い 資料によると、Hello Worldを出力するだけのような(あまり意味の無い)ベンチマ

    symfony2のコンセプトを斜め読み - ぷぎがぽぎ
  • jpMailPluginをsymfony1.1以降で使う場合 - ぷぎがぽぎ

    symfony1.2でaskeet実践のための準備としてsymfonyでメール送信ネタが続きます。 すでに周知の事実としてjpMailPluginはそのままではsymfony1.1以降では動きません。 これは、sfMailクラスがバンドルされなくなったことが一番の原因なのですが、それ以外にも色々とハマります。 とりあえず現状分かっている範囲をまとめます。 symfony1.1で利用する場合 spanstyle::monologさんところが実際に使えるようになるまでを紹介してくれています。 ref: jpMailPluginをsymfony1.1.5に対応してみた(暫定) getPresentationForの所属クラスが変更になっている symfony1.0のころとの違いはgetPresentationForメソッドはコントローラークラスに移動しているので注意 $this->getCont

    jpMailPluginをsymfony1.1以降で使う場合 - ぷぎがぽぎ
    Fivestar
    Fivestar 2008/11/26
    期待age
  • Swift Mailerをiso-2022-jpで送信するための自前ヘッダークラス - ぷぎがぽぎ

    symfonyでは1.0系ではPHPMailerというライブラリをメール送信で利用できるようにコアに含めてくれていました。 しかし、symfony1.1以降はコアにメール送信のライブラリを含めなくなってしまいました。 これは、symfonyが他のライブラリへの依存をできる限り排除しようとするポリシーになったからだと思われます。 そして、symfonyのcook bookではSwift Mailerというライブラリを使ったメール送信方法が紹介されています。 何故PHPMailerではなくSwift Mailerかというところの詳しい説明はありませんが、よりオブジェクト指向としてしっかり作られているという点ではないかと個人的には思っています。 しかし、日語(iso-2022-jp)を扱うことが簡単ではありません。 詳しくは以下のアシアルさんところの記事を読んでみてください。 Swift_Ma

    Swift Mailerをiso-2022-jpで送信するための自前ヘッダークラス - ぷぎがぽぎ
  • parent::setName($value)は使わずに$this->_set('name', $value)を使え - ぷぎがぽぎ

    昨日の続き。 まず、現象の再現方法。 現在某ブログでaskeetをsymfony1.2で実践中なのですが、 symfony+Doctrineでレコード(Doctrine_Record)のプロパティ(body)のセッター部分をハックし、html_bodyというプロバティにMarkdown形式で上書きたい場合のお話です。 家チュートリアルのように、意識せずPropelのコードと同様に以下のようなaskeetのコードを書いてブラウザから登録を行うと。。 class Question extends BaseQuestion { .... public function setBody($v) { require_once('markdown.php'); parent::setBody($v); // <= ここで落ちる // strip all HTML tags $v = htmlenti

    parent::setName($value)は使わずに$this->_set('name', $value)を使え - ぷぎがぽぎ
    Fivestar
    Fivestar 2008/11/18
    あとでここらへんブログにまとめる
  • symfony勉強会 発表内容 - ぷぎがぽぎ

    日付が変わってしまいましたが、第2回symfony勉強会がdinoで開催されました。 私自身はLTで話したのですが、時間が足らずにかなり早口だったと思います。すいません。 言いたかったことは symfony1.1以降ではDSNとひな形生成アプリの署名部分を設定できるタスクがあるよー。 それだです。 ただ、単純なのですが、わざわざcpコマンドやmakeコマンドでファイルをごちゃごちゃ操作しなくても考慮されてるよってところがsymfonyらしいと思います。 なので、以下のスクリプトファイルを作っておけばちょっと幸せになれるかも。。というLTでした。(完) init.sh #!/bin/sh ./symfony configure:database \ --name=main \ --class=sfDoctrineDatabase \ 'mysql:host=localhost;dbname=

    symfony勉強会 発表内容 - ぷぎがぽぎ
    Fivestar
    Fivestar 2008/10/30
    お疲れ様でした。configure:authorは知らなかったです。