WEBアプリケーション研究室 開発ノート TOP WEBアプリケーション研究室 開発ノート [Doctrine] 生SQLやPDOStatementをハイドレイトする-1対多編 生SQLやPDOStatementをハイドレイトするで単純なクエリーのハイドレイトをやりましたが、Doctrineで私の好きな機能の一つ、1対多のleftJoinを旨い具合にハイドレイトしてくれる奴を生SQLでやってみました。 ちなみにテーブル定義はこんな感じです。 User: columns: username: string(255) password: string(255) indexes: myindex: fields: username type: unique actAs: [Timestampable] Phonenumber: columns: user_id: integer phonenum
TextMate上でいま開いている.jsファイルをJSLintを使ってsyntax checkしようという話し。 spicermonkeyでJSLintを動かそうとしたけどうまくいかなかったので、 Rhinoのjs.jarを使って動かすようにしました。 まずはRhinoを適当に*1ダウンロードします。 $ wget ftp://ftp.mozilla.org/pub/mozilla.org/js/rhino1_7R2.zip |unzip $ cp rhino1_7R2/js.jar ~/Dropbox/lib 次に以下のサイトを参考にJSLintをダウンロードします。 JSLint and Rhino http://jslint.com/rhino/index.html $ curl http://jslint.com/rhino/jslint.js > ~/Dropbox/lib する
【戯れ言】symfonyはCakePHPよりは大規模向けです - ぷぎがぽぎ すでに過去の資料に言及されていますが、敢えて釣られてみます。 自分の基本的なスタンスとしては大規模であろうと小規模であろうと好きなフレームワークを使って開発するのが良いと思います。 結局のところ同じ程度に成熟していればどのフレームワークを使っても、レアなケースを除いて望んだアウトプットが得られると思います。 ただそれぞれのフレームワークにベストプラクティスというか勝ちパターンのようなものはあると思います。 業務での利用について自分なりに知っていると思えるCakePHPとsymfonyについて勝ちパターンを考えてみました。 CakePHPのベストプラクティス PHPのコーディングかRailsの経験者がチームに居る 連想配列が中心となるデータモデルに慣れる 各種日本語書籍で全体感をつかんでおく 開発のイメージにフレー
開発部の海老原です。みなさん今日も元気に symfony してますか? ということで、技術ネタです。 5/15 (金) に開催されたsymfony勉強会/懇親会にて、 『ルーティングを使って�シンプルなアプリケーション開発を』 という発表をしてきました。 発表資料は以下になりますので、興味のある方は是非ご覧ください! symfony 1.2 が出たばかりの頃ならともかく、いまこのネタをやるにはちょっと鮮度が落ちすぎているのではないか……と心配だったのですが、 聞いてみると意外に好評だったようで、これはこれでよかったのかな、と思います。 自分としてはもっと突っ込んだ話をしていきたかったので それなりに悔いは残っていますが、また発表の機会があればそこで挽回したいです。 ともあれ、会場提供してくださった株式会社ディノ様、進行をしてくださった月宮さん、 つたないプレゼンを最後までお聴きいただいた参
5/15に開催されたsymfony勉強会/懇親会に参加してきました。会場を提供してくださった株式会社ディノさんいつもありがとうございます。 勉強会中の主なトピックスは1.2で変更された部分の話がやっぱり多かったですね。自分は1.2はJobeetでいじりながら、適当に遊んでるレベルなのでもっと使わないとなと身にしみました。あとsymfonyは今後、どのコンテンツも全てクラスベースの概念を使って拡張していく方針になるような気がするからOOPの理解が深めれるフレームワークとしてもウリになるかもしれないなとか感じました。 懇親会ではこんな感じの話題で盛り上がっていた記憶があります。 sfFormは慣れれば便利 メンテナンス性は疑問がある symfony1.2を実践投入しているところは少ない 最近デスマ それに付随してクライアントが云々 男の子牧場やろうよ! カヤックの名刺カッコイイ かなり睡眠不足
symfonyでsuper cacheを実現するsfSuperCachePluginの、symfony1.2での使い方について。 super cacheは、動的にページを生成するWebアプリケーションにおいて、ほとんどの場合にWebサーバの仕組みを使って静的に作成したhtml(等)を直接クライアントに返すことでサーバの応答を早くし、サーバの負荷も軽減する手法です。 よく知られているのはWordPressのSuperCacheプラグインです。これを正しく設定すれば、動的生成でありながら静的生成のパフォーマンスを持つブログを運営することができます。 これまで自作でsuper cache相当の仕組みを作ったことはあるのですが、symfonyのプラグインがあるのでこれが使えるかどうか調べてみました。 とりあえず、READMEにあるように進めてみます。 プラグインのインストール まず、プラグインはs
発表資料 資料はこちらになります。プレゼンのPDFデータはこちら。 動画 各種データ プレゼン中で見せた、TCPDF出力のPDFサンプルは以下です。 sfTCPDFPluginで出力したサンプルPDF その1 sfTCPDFPluginで出力したサンプルPDF その2 自分で書いたhtmlから生成したPDF symfony上でのPDF生成例として、プレゼンで見せた画面のコードを張っておきます。 sfTCPDFPluginを使ったPDF出力サンプルコード なお、このコードだけでは動きません。だいたい、以下の作業が必要です。 適当なプロジェクトとappを作成 sfTCPDFPluginのインストール settting.ymlでのsfTCPDFモジュール有効化 app/[app名]/modules 以下に、tar.gz中身を展開 http:://mydmain/[app].php/pdf/ind
sfFormのバリデータはフィルタを兼ねていて、バリデータを通るまえの汚染された値($taintedValues)とバリデータを通った後のクリーンな値($values)の二つを保持してます。この二つの違いがわかってないと結構はまります。少なくとも僕ははまりました。 getValues()やgetValue($filed)などのメソッドで返ってくるのはバリデータを通った後のクリーンな値なので、getValues()で値がうまく取れない!というときはバリデータのフィルタがうまくいっていなことが多いです。ありがちなのは、widgetは設定してるのにvalidatorをセットしてない場合とcallbackで値を返してない場合。 widgetは設定してるのにvalidatorをセットしてない場合 widgetをセットしたフィールドは何かしらバリデータを設定しないと値がとれなくなるので、バリデートしな
Services Platform.sh for Symfony Best platform to deploy Symfony apps SymfonyInsight Automatic quality checks for your apps Symfony Certification Prove your knowledge and boost your career SensioLabs Professional services to help you with Symfony Blackfire Profile and monitor performance of your apps
元Vine SPARC開発者。2003年度未踏ユース採択者。ウノウ株式会社立ち上げ時に参画して4年間CTOとして従事。退職して現在P&Aラボにて客員起業家として起業準備中。 携帯サイトを作ってるとIPアドレスから携帯キャリアを判別することが多いですが、これを高速に判定するsymfonyプラグインを作りました。 sfMobileIPPlugin - openpear 元ネタ: PHPで高速に携帯ゲートウェイのIPから携帯キャリアを判別する - グニャラくんのグニャグニャ備忘録@はてな やってることは大体同じです。 隣り合うIPアドレス帯をまとめている 各キャリアが公開しているIPアドレス帯は隣あった領域である事が多いので、連続したIPアドレス帯は一つにまとめるようにしてます。 これにより、検索領域が 1/3 ぐらいに減りました。 まとめたIPアドレス帯はキャッシュしている まとめたIPアドレ
id:brtRiverさんのエントリ「http://d.hatena.ne.jp/brtRiver/20090412/1239563001」を見て、そういえばプラグインでreCAPTCHAのやつがあった気がしたので、試しに使って見ました。 reCAPTCHAは、sfFormExtraPluginの一部として提供されているウィジェット/バリデータです。 sfFormExtraPlugin symfony Forms in Action 付録A - ウィジェット - Captchaウィジェット 上記ウィジェット一覧の説明を見ればなんとなく使い方は分かりますが、実際にやってみた例が以下です。 reCAPTCHAにサインアップ reCAPTCHAの場合はrecaptcha.netのライブラリをAPI的に利用する形なので、recaptcha.netにサインアップして、APIキー(公開鍵、秘密鍵)を取
March 04, 2009 > June 04, 2009 Montreal / Canada - PHPQuebec Conference - 2009
皆さんこんにちは、小川です。 花粉症には厳しい季節がやってきましたが、負けずにブログを書いていきたいと思います。 今回はsymfony 1.2で新しくなったルーティングまわりについて書いてみたいと思います。 ◆ ルーティングの定義とREST 具体的に何が新しくなったのかというと、RESTfulなルーティングがサポートされました。 RESTについて非常に噛み砕いて説明すると、リソース(URI)にHTTPのGET,POST,PUT,DELETEなどといったメソッドを用いてアクセスして操作するものだと思ってください。 具体的なコードを見た方がたぶんわかりやすいと思うので進めていきます。まずは従来のルーティングです。 // apps/frontend/config/routing.yml product: url: /product param: { module: product
Services Platform.sh for Symfony Best platform to deploy Symfony apps SymfonyInsight Automatic quality checks for your apps Symfony Certification Prove your knowledge and boost your career SensioLabs Professional services to help you with Symfony Blackfire Profile and monitor performance of your apps
GmGuardPlugin sfGuardPluginはすごく便利なのですが、「認証に利用するIDが固定されてしまう」という点と、「ユーザーのテーブルが1対1のリレーションで二つに分かれてしまうのが気持ち悪い」という点が気になって、作ってみました。sfGuardPluginを使った方がいいのかまだ少し悩んでますが、とりあえずアップしてみます。 ご意見ありましたらお願いします。 ※対応ORMはpropelのみです。 ※2009/5/22 remember meの機能でたまに挙動がおかしい時があるのに気づきましたが、1つのプロジェクトで複数のサブドメイン&アプリで運用していて、cookieなど様々なものが絡み合っているので、まだ突き止めていません。どうにか時間を作ってがんばります。何かありましたらコメントお願いします。 一つのユーザーIDが一つのハッシュしか持てなくなっていたので、修正しました
GmAdminGeneratorPlugin admin generatorのテーマを作ってみたのでアップします。 インストール&使用方法 symfony plugin-install http://plugin.gomo.jp/plugins/GmAdminGeneratorPlugin/GmAdminGeneratorPlugin-1.4.8.tgz すでにインストールしてあってupgradeする場合は symfony plugin-upgrade http://plugin.gomo.jp/plugins/GmAdminGeneratorPlugin/GmAdminGeneratorPlugin-1.4.8.tgz cssとimagesの入ったフォルダをシンボリックリンクする。 ln -s ~/plugins/GmAdminGeneratorPlugin/web/GmAdminGen
symfonyでアプリケーションを書いている際にデータベースへのコネクションが欲しくなったとします。 見ていると二通りの書き方をする人が周囲にいました。 どちらもデータベースへのコネクションを返してくれそうな気配を漂わせています。 $conn = Propel::getConnection(); $conn = sfContext::getInstance()->getDatabaseConnection(); どちらを経由してもCreoleのConnectionに触ることができます。 またCreoleの中ではオブジェクトをキャッシュする実装があるので、結局の所同じオブジェクトが帰ってくるはずです。 loadConfiguration(); $lime = new lime_test(); $conn2 = Propel::getConnection('propel'); $conn =
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く