モノノフ日記

普通の日記です

php

Symfony Advent Calendar JP 2011が電子書籍になったそうです

去年の年末に、僕も書かせてもらったSymfony Advent Calendar JP 2011がようやく電子書籍になったそうです。 たまたまTwitter見てたら@koyhogeさんのツイートで気づいたっていう。 昨年のSymfony Advent Calendarが技評さんより電子書籍として出版されました…

Twigをもっと活用しよう :Symfony Advent Calender 2011 JP - 9日目 -

Symfony Advent Calendar JP 2011 : ATND 9日目の記事です。Symfony2.0.7が昨日リリースされましたね。今回のアップデートで個人的に熱かったのはSymfony2にバンドルされるTwigのバージョンがv1.1.2からv1.4.0へアップグレードされた所です。Twigは便利な機…

Symfony2でControllerやTemplateから現在のルーティング名を取得するやり方

最近Symfony2でガリガリコード書いてるので備忘録がてらブログをひさびさに更新していこうと思います。テンプレートで自分のルーティング名で分岐したい(ex. class="current"つけたい)、ということがよくありそうなので調べてみました。 結論から言うと、Sym…

Symfony2勉強会向けのセットアップ準備(Mac向け)

に参加予定なので先週末にセットアップしたメモをMacの人向けに共有します。勉強会の詳細はhttp://www.symfony.gr.jp/events/20101014-symfony2-studyから。環境はsnow leopard (10.6.5) + homebrewで構築しました。 Apache XCode3.2.4に入ってる2.2.15をそ…

Re: PHPのuniqid()が重い件について

php

PHPのuniqid()が重い件について - a_a___a_a試してみたら自分の環境でもuniqidの処理遅いので調べてみたら、(4年前に)バグとして報告されていました。 At last, I profiled (APD) it and discovered that uniqid() was terribly slow.I searched for some bi…

Propel 1.4のWhatsNewの超訳

この前のsymfony1.4勉強会では、doctrineばっかり言及されててPropelはあんまり触れられてませんでした。1.0から使ってる人はPropelに慣れきってると思うし、あと1.4の情報知らない人が多いのかな、と思って新要素のページを超訳してみたので公開しておきま…

symfonyの非公式マスコットが作成されたようです

昨日Twitterでsymfony使ってる人たちのことなんて言うんでしょうね、という話題をid:Fivestarさんがつぶやいてました。 事の発端 symfony使いはsymfonianなのかsymfonistなのかはたまた他にあるのかどれなんでしょう。。。 http://twitter.com/fivestr/statu…

PHP基礎文法最速マスターの補足

php

id:shin1x1 さんがPerl、Rubyに続いてPHP基礎文法最速マスター - Shin x blogで基礎文法をまとめてくれています。ありがとうございます。空いた時間で書いてみようかなと思っていたら先越されてしまいました。記事を読んでみてコードブロックの説明を最初読…

Imagick::resizeImageのフィルタ別速度を計測してみた

php

Imagick::resizeImageメソッドにはデフォルトでやたらフィルタが用意されていますけど、どれが良いのかさっぱりわからないので全部計測してみました。チェックしたのは http://www.php.net/manual/ja/imagick.constants.php で定義されているフィルタ定数す…

Boost.phpを触ってみた

php

今年のPHPカンファレンスジャパンで個人的に一番面白かったid:moriyoshiの発表に触発されてBoost.phpを試してみました。 試した環境 debian lenny githubからBoost.phpを取得する とりあえず最新版だけ欲しい人は--depthオプション使うとすぐダウンロードも…

symfony1.0.Xにおいてurl_forヘルパーのXSS脆弱性の可能性

symfonyにはrouting.ymlでの設定名を利用してサイト内のURLを返してくれるurl_forというヘルパー関数がありますがXSS脆弱性らしきものを見つけたので共有がてら書き留めておきます。XSSが起こるケースはurl_forの第2引数にtrueを指定して絶対パスを返すよう…

sfPropel13Pluginを導入したときの注意点まとめ

symfony1.0.XでPropel1.3のDBレプリケーションが使いたい!という理由だけでsfPropel13Pluginを導入してみたので簡単に手順をまとめておきます。 インストール SVNリポジトリからプラグイン本体をゲットすれば終了です。チェックアウトでもいいと思いますが…

オブジェクトと連想配列のパフォーマンス

php

でハッシュとオブジェクトのインスタンス生成の比較ベンチマークについて書かれていますが、b:id:i_ogiがブコメで言ってるように毎回配列定義するよりコピーした方が早いと思ったので試してみました。 array.php 0,'member1'=>1,'member2'=>2,'member3'=>3);…

メール配信用のプログラムを書いて失敗した点

php

8000人弱くらいの人数に一括メール配信したい、と言われてPHPでサクっとスクリプト書きました。まぁ、1回きりだしPHP標準のメール関数を使えばいいやと考えて、mb_send_mailを使って書きました。10件くらいのテストデータで動作確認して問題無かったのでえい…

Jobeet - 16日目: Webサービス

ひさびさの和訳公開です。公式ページに日本語訳がすでにあることに驚きながら訳しましたwしかし、ちょっと公式サイトの方は直訳で読みづらい感もあったのでこっちは適所を意訳してみました。あと訳中に出てくる「アフィリエイト」はおそらく「求人を出す会社…

symfony勉強会/懇親会に参加してきました

5/15に開催されたsymfony勉強会/懇親会に参加してきました。会場を提供してくださった株式会社ディノさんいつもありがとうございます。勉強会中の主なトピックスは1.2で変更された部分の話がやっぱり多かったですね。自分は1.2はJobeetでいじりながら、適当…

Jobeet - 15日目: フィード

Day 15: Feeds (1_2) - Symfony昨日、最初のあなたのsymfonyアプリケーションを開発し始めました。ぜひ続けてください。symfonyをより学ぶために、アプリケーションに新しい要素を追加してみたり、コミュニティで知識を共有したりしてみましょう。今日は全く…

Jobeet - 14日目: ぶらぶら過ごす一日

Day 14: The Lazy Day (1_2) - Symfony昨日のsymfonyユーザクラスの説明で、symfonyの基本的特徴のツアーは終わりました。まだ学ぶべきことはたくさんありますが、簡単なプロジェクトであれば自分で作るようになっていると思います。マイルストーン通りに進…

Jobeet - 13日目: ユーザ

http://www.symfony-project.org/jobeet/1_2/Propel/en/13昨日はたくさんの情報でいっぱいでした。ほんの数行のPHPコードだけで、symfonyのアドミンジェネレータは開発者が短時間でバックエンドのインターフェースを作成するのを可能にしています。 今日は、…

Jobeet - 12日目: アドミンジェネレータ

昨日Jobeetに追加した機能は求職者や求人側のフロントエンドアプリケーションがより便利になるものでした。バックエンドアプリケーションについて少しお話しします。 今日はsymfonyの機能的なアドミンジェネレータを使うことでちょうど1時間くらいでJobeetに…

Jobeet - 11日目: フォームのテスト

遅くなりましたが、明けましておめでとうございます。今年もマイペースで訳していきますのでどうぞよろしくお願いします。今回はフォームのテストの書き方についてです。Day 11: Testing your Forms (1_2) - Symfony 前回までのJobeet 昨日はsymfonyで初めて…

Jobeet - 10日目: フォーム

Day 10: The Forms (1_2) - Symfony 今回、結構ボリュームありました。。。しかしフォームフレームワークは1.0から思いっきり変わったところなので押さえておきたいところです。 前回までのJobeet Jobeetの第2週はsymfonyのテストフレームワークの紹介で幸先…

Jobeet - 9日目: 機能テスト

Jobeet - Day 9: The Functional Tests - Symfony 公式サイトのコメント欄でも指摘されていますが、getMostRecentProgrammingJob()メソッドで$categoryを絡めた条件を記述し忘れてるような気がするので追加しています。 前回までのJobeet 昨日、symfonyにパ…

Jobeet - 8日目: ユニットテスト

Day 8: The Unit Tests (1_2) - Symfony 前回までのJobeet 週末にかけて、アドベントカレンダーの最初の5日間で学んだJobeetの要素をカスタマイズしたり新しい要素を追加したりする全ての要素を復習しました。そのプロセスでsymfonyが持つその他の拡張機能に…

Jobeet - 7日目: カテゴリーページを作りましょう

メールで和訳に指摘をいただいたので反映させました。該当箇所は一番最後の「また明日」のところです。ご指摘いただいたGさん、ありがとうございます!しかし、自分の訳よりスマート。。こういうところでセンスの差が(´;ω;`) 前回までのJobeet 昨日はたく…

Jobeet - 6日目: モデルの詳細

Day 6: More with the Model (1_2) - Symfonyあとsymfony1.2.1がリリースされているのでupgradeしましょう。今日は比較的ボリューム少なめでした。 前回までのJobeet 昨日はすばらしい日でした。きれいなURLの作り方とたくさんの事を自動で行うsymfonyフレー…

symfony1.2のサポート期間が1年しかないとかいう話

元ネタはこちらです。ようやく正式リリースされたsymfony1.2が1.0よりサポート短い点を指摘されてます。 symfony1.2.1のリリースよりメンテナンス期間が1.0より短いってどうよ? - ぷぎがぽぎこのブログ記事を読んで2年前くらいのRails界隈で持ち上がった話…

Jobeet - 5日目: ルーティング

Day 5: The Routing (1_2) - Symfony 始める前に 昨日、Jobeetデザインコンテストを開始しました。もし参加したいならばチュートリアルで開発しているメインページのアーカイブを使ってください(アーカイブは静的なHTMLファイル、スタイルシート、画像を含…

Jobeet - 4日目: コントローラとビュー

Jobeet - Day 4: The Controller and the View - Symfony 4日目にして本家から大分置いていかれてしまいました。。あまり気にせず、マイペースでぼちぼち訳していきたいと思います。 始める前に jobeet_job_affiliateテーブルを昨日のチュートリアルで作った…

Jobeet - 3日目: データモデル

Jobeet - Day 3: The Data Model - Symfony ようやく少しPHPコードが出てきました。まだ1.2になって新しいなー、と感じるところはありません。Outputzが凄い勢いで枚数カウントされててちょっぴりうれしかったりします。 あと、コメント欄でFabienがDoctrine…

Jobeet - 2日目: プロジェクト

Jobeet - Day 2: The Project - Symfony手を抜くとかいいながら結局全部訳しちゃいました。意訳してるところも結構ありますが。。今回は要件定義の話で、まだコードは全く出てきません。毎日これくらいのボリュームだったら進めるの楽だなぁ。 あとFabienが…

Jobeet - 1日目: プロジェクトを始めましょう

Day 1: Starting up the Project (1_2) - Symfony最初の方は適当に訳しました。実践に入るところあたりからはCLIやコード中心に書いてます。ファイルパスはサイトとは合わせずに自分の環境をベースにしてます。環境はmacbookでやってます。初日なので張り切…

symfony1.2リリース + 新チュートリアルJobeet公開開始

symfony1.2が正式に公開され、それに合わせaskeetに変わる新しいチュートリアルである「Jobeet」の公開が開始されています。askeetが公開されたときと同様、12/1から1日ずつ進めていくスタイルをとっており、12/24のクリスマスイブに完成する展開みたいです…

symfony1.2でaskeet (Day3)

askeet day3は「symfonyのMVCアーキテクチャ」の回です。日本語訳もあります。 今回からgitを導入して、githubでコード見れるようにしました。日ごとにbranch切っていくので見やすいかと。 404 · GitHub 全体レイアウトを変更 layout.php <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> </head></html>

symfony1.2でaskeet (Day1〜2)

1.2もベータがリリースされたのでぼちぼち触ってみることにしました。秀逸なチュートリアルであるaskeetを1.2でごにょごにょ作ってみることに決定。とりあえずhttp://www.symfony-project.org/askeet/1_2/en/を叩いてみたけど、やっぱり無かった。。観念して…

第2回設計勉強会に参加してきました

第2回設計勉強会に参加してきました。あんまりWebアプリケーションを構築するアーキテクチャ側の話がメインの勉強会に参加したことが無かったので新鮮に話が聞けました。普段、意識せずにフレームワークのルールに慣れすぎているとアーキテクチャ的には変だ…

第2回symfony勉強会

第2回symfony勉強会 2008/11/07追記 動画が公開されました。 前半 後半 第2回symfony勉強会に参加しました。10/26にリリース予定だったsymfony1.2とdoctrineはまだ自分が触っていないところだったので非常に参考になりました。公式ブログ読んでても感じたけ…

Propelで同一カラムに対して複数の条件文を使う書き方

知らなくて5分くらいハマったのでメモ。生SQLだとこんなクエリです。 SELECT * FROM TEST WHERE created_at >= "2008-08-01" AND created_at <= "2008-08-31" これをPropelで書き直すと、下のようなイメージでした。 add(TESTPeer::CREATED_AT, "2008-08-01"…

Rubyのsuperの挙動

社内で下記コードの挙動どうなの?みたいな話題が挙がってました。 class A def foo bar end def bar puts "A's bar" end end class B < A def foo super end def bar puts "B's bar" end end # run B.new.foo 出力結果は「B's bar」になります。http://code…

Controller内でHelper使いたいとき

sfLoader::loadHelpersを利用したらOK。

sfMemcachePluginでcacheのlifetimeが有効になってなかったので修正した

symfony 1.1からはデフォルトで対応してるmemcachedですが、1.0.XはsfMemcachePluginというプラグインを利用して使います。 導入方法については下記ページを参照してください。 memcacheをsymfonyから利用してみる | ueblog Windows+PHP+memcached+symfony |…

convertUrlStringToParameterの仕様変更

symfony 1.0.16で動作してたアプリが1.0.17だと動かなくなってたページがあったので調べてみると、原因はconvertUrlStringToParameter関数の仕様が変わってるのが原因ぽかった。(該当チケット)convertUrlStringToParameterが定義されてるファイルは/sf_symfo…

PECL::Imagickを簡単に使えるライブラリを作った

php

Imagickを使いやすくするImagick_Thumbnailerというライブラリを作ってみました。 早速CodeReposに公開しています。初コミット! http://coderepos.org/share/browser/lang/php/Imagick_Thumbnailer/trunk/Imagick_Thumbnailer.php 概要 画像をリサイズした…

NULLかどうかは!issetを使ってます

php

型まで厳密に見るときは[===]を使う必要があるのはエントリのとおりなのですが、NULLかどうかを調べるにはis_null()を使う方法もあります。 PHP NULLかどうかはis_null()を使う - Shin x blog NULLチェックにis_null使う方法が紹介されていますが、個人的に…

PHPカンファレンス2008

php

今年のPHPカンファレンスは7月21日 - Do You PHP はてなで紹介されてたので反射的にトラバ。 今年の開催は、例年よりも若干早めの7月21日(月祝)となりました。開催日程の詳細は以下の通りです。 - 日時 : 7月21日(月曜日・祝日)10:00 〜 (開場9:30〜)会場 …

Array→Objectにキャスト

php

stdClass Object ( [0] => hoge [1] => moge [2] => fuga )echo $o->0; => Parse error: syntax error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '{' or '$' この場合どうやってアクセスすればいいのかな。わからずー。 cucumberグループ…

Yahoo! Answerがsymfonyで作り直されてた

symfony Web PHP Framework » Blog » Yahoo! Answers powered by symfonyにYahoo! Answersの再構築にsymfonyが使われていることが紹介されてます。Yahoo! Answersは1億3500万以上のユーザがいて、5億1500万のアンサーがある巨大なWebアプリであり、なぜsymfo…

同一変数名による参照の参照

php

foreach()だと参照を要素に設定した配列の要素が上手く取れなくて、for()に戻した。 - ぐらめぬ・ぜぷつぇんのはてダソース読んでてこうやったら動くだろーなってのが思いついたので書いてみます。 foreachで上手く動かす方法だと、addメソッド内の参照の参…

PHPタグの終了タグ

php

今さっき今日から隣に来た派遣の人が「これなんでPHPタグで閉じてないんですか?」とか質問してたのを聞いて理由が即答できなかったので調べた。どこかで「閉じないの推奨」って書かれてるのを見た覚えがあったんですが、Zend Framework PHP 標準コーディン…

symfony1.1 beta3を導入してみる

ちょっと試しにローカル環境に導入してみました。 導入にはPEARからインストールせず、サクっと試せるsf_sandboxを利用してます。sf_sandboxは必要なライブラリとか全部込みでワンパッケージ化されていて、webルートディレクトリに置けばそのまま動く便利モ…