10/15・16[大阪]TDDやBDDも学べるよ!PHP Matsuriに参加しよう! #phpmatsuri

重要なことなので、最初に書いておきます。 この記事を読んでいる間にチケットが売り切れるといけないので、 今すぐPHP Matsuriのチケットを購入しましょう! チケット購入はこちら さて、今年もPHP Matsuriの季節がやってきました。 PHP Matsuriって何?と…

そのうち調べるメモ

1. Symfony2 standardディストリビューション(確認時はPR11)をダウンロード 2. /app_dev.php/demo/ にアクセス→正常表示 3. src/Acme/DemoBundle/Controller/DefaultController.phpのindexAction()のreturnの前に以下の1行を追加 $this->container->get('r…

Symfony2でESIを動作させる手順

自分でも毎回分からなくなるのでメモ・・・。 Actionでは、レスポンスにsetSharedMaxAge()とsetPublic()をセット render('HelloBundle:Hello:index.html.twig', array('rand'=>rand())); $response->setSharedMaxAge('10'); $response->setPublic(); return …

git bisectでメソッドが削除されたコミットを探す

git

git bisectを使うと、コミット履歴から「何らかのテスト」が初めて失敗するコミットを探し出すことができます。ちょうど、「Doctrine2 MongoDB ODMのDocumentManagerからcreateQuery()メソッドが無くなっている」という発言を見かけたので、これを例にやって…

git submodule update --init --recursive

git

各サブモジュールの中にさらにサブモジュールがある場合に、それらも再帰的にinit/updateするのをこのコマンドで一発で可能っぽいというのを先ほど知ったのでメモ。 http://www.kernel.org/pub/software/scm/git/docs/git-submodule.html

最近symfonyの翻訳の協力者が増えてきています

日本Symfonyユーザー会で、公式サイトで毎週公開される「A week of symfony」というブログ記事の翻訳を毎週毎週やっています。この翻訳を手伝っていただける方が最近増えてきました。私以外で担当していただいた方々 Fivestarさん brtriverさん shishi4twさ…

Symfony2ドキュメントのビルド用にconfigurationblock拡張を組み込む

Symfony2のオンラインドキュメントはSphinxを使っています。 Sphinxは高機能なドキュメントシステムで、コードのハイライト機能などはデフォルトのままでとても優秀です。1つ、Symfony2のドキュメントで独自に拡張機能を使っている部分があり、それがタイト…

MacBook AirでMacデビューしたのでメモ

mac

symfony本の執筆合宿(@六本木ヒルズのWIRED CAFE)へ行ったら、自分以外全員Macというひどいいじめを受けたので、東京から新幹線で名古屋駅へ帰ってきたらその足でビックカメラ名古屋駅西店へ駆け込み、そのままMacBook Air 13インチを買ってお持ち帰りした…

勉強したいことリスト

NGK忘年会2010では、勉強会を企画運営して勉強する的なLTをしましたが、そんな私が最近「もっと勉強したいなぁ」と思っているネタをメモ的にリストアップ(今さら感があるものばかりですが・・・) Git(まだまだ修行が・・・) Vim GNU Screen zsh Redmine …

symfony 1.4向けの解説書 出版予定

この記事は、Symfony アドベントカレンダー 2010 に参加しています。 Symfony Advent 2010 : ATND http://www.symfony.gr.jp/adventcalendar/2010 「えっ、いまさら?」 と思う方も 「おー!、やっと!」 と思う方もどちらもお待たせしました! 現在、主に日…

Symfony ORM のパフォーマンス比較 (2) Symfony2(PR4) & Doctrine2

この記事は、Symfony アドベントカレンダー 2010 に参加しています。 Symfony Advent 2010 : ATND http://www.symfony.gr.jp/adventcalendar/2010 さて、今回はいきなりですが、Symfony2 と Doctrine2 を使って計測してみます。 この計測を行うには、以下の…

Symfony ORM のパフォーマンス比較 (1) symfony 1.4 & Doctrine 1.2

この記事は、Symfony アドベントカレンダー 2010 に参加しています。 Symfony Advent 2010 : ATND http://www.symfony.gr.jp/adventcalendar/2010 以前、DoctrineとPropelのパフォーマンス比較 - しんふぉにゃんという記事を書きました。その記事が2009年9月…

メモ:Doctrine2でMySQL利用時のcreate table文を発行しているところ

https://github.com/doctrine/dbal/blob/master/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php charsetとかに対応していないっぽい。DB接続時(MySQL)に「set names utf8」を投げるには、Doctrine-DBALにあるMysqlSessionInitを有効にする。(なぜデフォ…

第1回 Symfony2勉強会に参加した

参加というか、言いだしっぺなので主催側ですが・・・。公式なレポートは以下をご参照ください。 http://www.symfony.gr.jp/blog/20111121-symfony2-workshop-1 以下はレポートにない、2次会以降の話と余談などを。 2次会、2.5次会、midnightも盛り上がりま…

メモ

Doctrine1では、有効桁数が15桁以上あるような大きな数値をdecimal型で正しく処理できない・・・。※チケットを作成する必要ありという個人的メモ

自分の部下には「パーフェクトPHP」を読んでおいてもらいたい理由5つ

php

自分の部下には、「これ読んどけ!」と必ず渡しておきたい1冊です。 PHPの開発現場で実際に必要な知識を幅広くカバー さすがにこれで「全部」というわけにはいきませんが、書かれている内容はどれも「必要」 MVCフレームワークの用語や知識 必要最小限かつモ…

KernelとHttpKernel、その辺の起動順序

Symfony2で名前的に混乱しやすそうなのがKernelとHttpKernelで、 Kernelはアプリケーション全体のベースとなる HttpKernelは1つのHTTPリクエストのベースとなる という感じで、Kernelの方がベースよりです。これは説明するまでもないかもしれませんが、フロ…

Symfony2のconfigファイルにおけるimportsの挙動(DIのconfig)

Symfony2のconfigファイルでは、別のconfigファイルをインポートすることができます。 たとえばconfig_dev.ymlでは、共通設定であるconfig.ymlを以下のようにインポートしています。 imports: - { resource: config.yml } また、config_dev.ymlをよく見ると…

Symfony2のデバッグモードのエラー画面で、ファイルのパスを物理ファイルにリンクする

app/config/config_dev.ymlに次のように記述すると、リンクになります。 app.config: ide: macvim「macvim」だと「mvim://open〜」というURLでリンクされ、「textmate」だと「txmt://open〜」というURLになります。他の値を指定した場合、その値がファイルリ…

PearのServices_TwitterでOAuth認証している場合のfriendships/show

OAuth認証してAPIリクエストを送信している場合は、friendships/showでsource_idまたはsource_screen_nameのいずれも指定しなくてもいけるはずなんだけど、PearのServices_Twitterだとパラメーターの数が足りないと言われエラーになります。 http://apiwiki.…

Doctrine2を使った開発のワークフローで悩み中

symfony 1では、ORM Designerを使ってスキーマ設計→schema.yml書き出し→モデルやDBを生成(必要に応じてマイグレーション)というワークフローでした。こういったワークフローをDoctrine2を使った開発でもやりたいと思い、Doctrine2のコマンド等とあれこれ格…

メモ

テキストファイルの末尾の改行を削除する ファイル末尾の改行を削除 - Tetsujin’s blog $ perl -pi -e 's/\n$// if eof' (ファイル名) ※Doctrine2のドキュメントのソースコードの末尾が改行しないルールのようなのですが、Ubuntuのgeditなどで編集すると、ど…

Symfony2のテンプレートレンダリング時の名前の指定

Symfony2でテンプレートをレンダリングする場合、以下のようにやや長い名前でテンプレートを指定します。 $this->render('HelloBundle:Hello:index.twig');この指定はコロンで区切られた3つのパーツで構成されていて、 テンプレートのあるバンドルの名前 テ…

コアのDIエクステンションでの設定を、自前のDIエクステンションで変更する

まず、DIエクステンションについては以下の記事を参照 Symfony2のDIエクステンション - しんふぉにゃん このDIエクステンションですが、Symfony2コアの各バンドルごとのDIエクステンション自体を拡張するうまいやり方は今のところ分かっていないのですが、コ…

Symfony2のKernelでregisterBundles()で登録していなくても、ルーティングに記述しているコントローラーまでは呼び出せる

routing.ymlでresource指定にて各バンドルのrouting.ymlをインポートしている場合、そこは独自に処理されてUrlMatcherとして展開されるので、コントローラーの呼び出しまでは実行されるようです。 しかし、コントローラーから通常の方法でビューをレンダリン…

Symfony2のDIエクステンション

(まだきちんと全容をつかめていないのですが)Symfony2のDI+バンドルのシステムには「エクステンション」という機構があって、DIコンテナから得られる設定を使ってバンドルの初期化などを行えます。これは、各バンドル内の「DependencyInjection」というデ…

Symfony2で、キャッシュディレクトリへ書き出している処理

DIコンテナを使っているのに、キャッシュディレクトリへの書き出しはそれぞれのコンポーネントが別々に直接ファイルを書き出しているのは何とかしたいなと思いつつ・・・。(Symfony Componentsのコンポーネントで、DIコンテナがなくても動作するように設計…

Doctrine2とDoctrine1のUnit Of Work

Doctrine2では、エンティティの値をデータベースへ保存する際にUnit Of Workパターンというデザインパターンの実装を使っています。 Unit of Work パターンと永続性の無視 (twitterで@vectorxenonさんからツッコミがありましたが)Doctrine1でもUnit Of Work…

Doctrine2のORMマッピングXSD

orm/doctrine-mapping.xsd at master · doctrine/orm · GitHub このファイルを眺めると、Doctrine2のORMでどういったことが設定できるのか、なんとなく見えてきます。

Doctrine2のエンティティの変更トラッキング

Doctrine2では、エンティティの変更をトラッキングして最終的に必要な内容だけをDBに書き込むという仕組みがありますが、この「変更」のトラッキングにはいくつかオプションがあるようです。 http://www.doctrine-project.org/projects/orm/2.0/docs/referen…