プレゼン中にすごいスクリーンセーバーが発動する動画


変なスクリーンセイバーを愛用してると、プレゼンテーションで大恥かくかもしれませんよ。ご注意!

Embarrassing porn screensaver during a presentation. [NSFW] – The Next Web

symfony1.2.6セキュリティリリース


syfony1.2系のアップデート1.2.6が出ました

セキュリティリリースということで、唯一件のバグ修正となっています。

1. symfonyのアドミンジェネレータを使っている人で、
2. unset()を明示的に呼ばずに
3. generator.ymlに書かないことでフィールドを隠すような使い方をしていた場合に、

攻撃を受ける可能性がある、というのをコアチーム内のレポートで発見し、修正したということです。

上記に当てはまるようなコードを書いた人で1.2.x系全部と次の1.3系ブランチを使っている人は、アップデートするか、パッチを当てるか、unset()を必ず呼ぶコードに直すか、するべきだということです。

# で、あってると思いますが、必ず原文にも当たってください

symfonyのキャッシュマネージャーが取れないとき


symfonyで、キャッシュが効いているページを強制的にクリアしたいとき、

  $cacheManager = $this->getContext()->getViewCacheManager();
  $cacheManager->remove('quiz/index?id='.$quizIdToRemove);

とかやってたのですが、デバッグ環境でエラーが出てしまいました。

Fatal error: Call to a member function set() on a non-object in ...

実環境でエラーにならないのでうんうん悩んで調べてみたら、デバッグ環境ではcache: off にしてました。getViewCacheManager()はキャッシュ使ってなければnullを返すようです。

# 考えてみたら当たりまえか

問題は、これがfatal errorで止まっていたためにトランザクションが完了していなかったことです。

cacheManagerを取得したときは、必ずnullチェックして、キャッシュが使われてるときだけ呼び出しましょう。 > 自分

symfony APIがブラウザから直接検索できるように(OpenSearch API)


本家ブログでの発表から。symfony APIの検索フォームが、OpenSearch APIで提供されるようになりました。

syfony公式ページに行くと、ブラウザ右上のサーチボックスが変化して、OpenSearchに対応していることを示してくれます。Firefox3ではこんな感じ。

symfony API 1.2を追加

すると、このあと、サーチボックスでsymfony APIが選べるので、ここにsymfonyフレームワークのクラス名や関数名を入れると、

APIマニュアルの該当ページにジャンプします。

Windows+cygwin+sshで”Could not create directory”が出るとき


エラーメッセージでは

Could not create directory ‘/home/(ユーザ名)/.ssh’.

とか出ますが、cygwinが認識するあなたのホームディレクトリはC:ドライブのルートとかではなくてcygwinのインストールディレクトリなので、たとえば、

C:/cygwin/home/akky/.ssh/

というディレクトリを作れば、そこにsshの設定を書き込んでくれます。

‘.ssh’というドットで始まるディレクトリの作り方は、.htaccessとかのファイルの時と同様ですが、GUIでは作れない(エラーになる。ムキー)ので、”ssh”とでもして作っておいて、コマンドプロンプトでその”ssh”があるディレクトリへ移動して、

> ren ssh .ssh

でその名前にできます。

cygwinの設定ファイルを変更してまったく別のディレクトリを使う手もあると思います。あくまで一例。

symfonyのsync(1.0の場合)、project:deploy(1.2の場合)がsshを呼び出す場合に上のエラーが気になる場合の対処でした。

[symfony] プラグインを簡単に作るためのプラグインsfTaskExtraPlugin


symfonyのプラグインはPEARのパッケージシステムを使っているのですけど、PEARのパッケージングって結構面倒で、僕はあまり好きではありません。PEARにもパッケージを作るためのツールがあるのですが、PHPのスクリプトを書くことになります。

symfony1.2には、symfonyのパッケージを作ることに特化したタスクがsfTaskExtraPluginという名前で提供されています

まだalpha版なので、alphaを明に指定してインストールします


$ symfony plugin:install -s alpha sfTaskExtraPlugin

このプラグインの中のパッケージ作成コマンドを呼ぶと、plugins/ディレクトリの下にある特定のプラグインを、PEARパッケージにしてそこに作ってくれます。


$ symfony plugin:package sfFaqPlugin

これだけで、plugins/sfFaqPlugin/sfFaqPlugin-1.1.0.tgz ができます。(プラグイン名やバージョン番号はサンプル)

プラグインになっていれば、symfonyコマンドでinstall/uninstallを管理できます。


$ symfony plugin:install /sandbox12/plugins/sfFaqPlugin/sfFaqPlugin-1.1.0.tgz

そこにあるpackage.xmlを使ってパッキングしてくれるので、xmlを開いて適度に編集することでバージョンや含むファイルを変えることができます。package.xmlが無い場合は、対話形式でpluginの説明や開発者の名前などが尋ねられるので、順番に入れていくとpackage.xmlも作成してくれます。

なので、たとえば、symfony1.0でしか動かないとpackage.xmlに書いてあるせい「だけで」symfony1.2にインストールできないpluginがあったとしたら、それをtarでplugins以下に展開して、package.xmlのrequire versionだけ1.3未満までオッケーにし、このタスクでパックすれば、1.2対応のpluginができるということです。

もしそういう風に1.2非対応のプラグインを1.2で使って、実績もあるなら、前のエントリで書いたように開発者になって公式サイトにアップするのもいいでしょう。

sfTaskExtraPluginには他に、pluginsの下に一からプラグインを作るためのgenerate:plugin、pluginの中にmoduleを追加するgenerate:plugin-moduleがあります。これらで生成したスケルトンには、テストコードの枠組みも最初からついてきます。

[symfony] 既存プラグインの書き換えを手伝うには


symfony公式サイトの”Plugins”に行くと、数百個のプラグインが提供されています。これらは、インストールするだけでsymfony製のサイトに新しい機能を付け加えるものです。

プラグインを作って登録したり、既にあるプラグインの開発に参加したり、バグ報告をするには、まずsymfony-projectサイトのユーザ登録をする必要があります。メールアドレスだけあれば、右サイドバーの”Create an account”から誰でもユーザ登録ができます。

ログインした状態でプラグインの個別ページ(例 sfFaqPlugin )へ行くと、”Contribute(貢献する)”というタブがあります。ここで、

  • developer: svnにアクセスできる開発者
  • packager: developerに加えて、プラグインの新バージョンをリリースできる開発者
  • leader: 全権限を持つプラグイン開発のリーダー

のどれになりたいかを選び、下のコメント欄には「何をどう直したいか」を書き込んで送信すると、既存の開発者に連絡が行きます。

symfony1.0でしか動かないプラグインは、元の開発者がメンテナンスを止めている場合もあるので、パッケージの1.2対応をしたいと思ったら、ここからどんどん申請して開発チームに入ることができるようです。