symfonyはスタイルシートをデフォルトで media="screen" で読み込む件@印刷用のCSSを作成

view.ymlに指定してやれば、

stylesheets: [ main: { media: print }]

みたいに変更したりはできるのですが

stylesheets: [main: { media: screen, print } ]

はエラー。

media: all

の存在に気づく。恥ずかしい……。
どうせscreenとprintくらいしか指定するメリットある属性なさそうだしとりあえずこれでよしとしよう。

でも二つだけとか三つだけとかがいいときは依然難しいままかな。

どうも別々にファイルを作って差し上げねばならんようだ。
@mediaは無視されるしね。
めんどくせー

もっとスマートな解決法はないものか

getterメソッドにデフォルト値

Definitive Guideを読み直し中

今まで気づいてなくて便利そうな機能をメモっていきます。

http://symfony.xrea.jp/1.0/book/02-Exploring-Symfony-s-Code.html#chapter.2.exploring.symfonys.code

パラメータホルダーのgetterはデフォルトの値を2番目の引数として受け取ります。これは条件文で可能なことよりも遙かに簡潔で便利なフォールバックメカニズム(訳注:障害が起きても最低限の機能を維持するメカニズム)を提供します。リスト2-17で例をご覧ください。

リスト2-17 - 属性ホルダーのgetterのデフォルト値を使う

// 'foobar' パラメータは定義されていないので、getterは空の値を返す
echo $response->getParameter('foobar');
=> null

// デフォルトの値はgetterを条件文に設置することで利用可能
if ($response->hasParameter('foobar'))
{
echo $response->getParameter('foobar');
}
else
{
echo 'default';
}
=> default

// しかしそれに対して2番目のgetterの引数を使う方が遙かに速い
echo $response->getParameter('foobar', 'default');
=> default

ファイル名にピリオドを含むjsファイルを、view.ymlで読み込めない

現象

symfonyにおいて、view.ymlでjavascriptを読み込むとき、jsファイルのファイル名にピリオドを含んでいるとうまくいかないことがある。

解決策

.jsという拡張子まで含めて指定する

詳細

view.ymlで

javascript: [ jsfile ]

としてやると、自動的にweb/js/jsfile.jsをヘッダに読み込んでくれるsymfonyちゃんですが、

js.file.jsなんていう名前のjavascriptを読み込もうとして

javascript: [ js.file ]

とすると、symfonyはjs.fileというファイルを読み込もうとしてしまう。

ファイル名にピリオドを入れてしまうと、「拡張子を指定した」と判断されてしまう模様。
従って、

javascript: [ js.file.js ]

と指定する必要がある。

タスクバーのコンテキストメニュー、サイズ変更(S)・移動(M)の使い方

参考)http://d.hatena.ne.jp/kazuki2life/20081201/1228159204

ずっと使い方が謎だったのです。
マウスだけでやってると、「移動」や「サイズ変更」をクリックしても、ポインタが変わるだけで何も起こらない。

本当の使い方

サイズ変更、移動をクリックした後、キーボードの矢印キーで操作するのが正解。
※移動に関しては、1ストロークでもキーを押すとそれ以降はマウスでも移動できる。


ふぅー、すっきりすっきり

何に使うか?

たまにデスクトップ上でウィンドウが行方不明になったりしませんか?
原因はよく分からないけど、隅のほうでめちゃめちゃちっちゃくなってたりすることがあって、最大化したり設定を開いてみたりその時々で対処してましたが、これで汎用的に解決できそうです。
ってかコレを解決したいがための調査ですた。

p243wが表示されなくなった

表題通り。
Acerのp243wが突然表示されなくなりました。
電源入れた状態で寝落ちてて、目覚めてたら消えてた。

いろいろやってみてわかったこと

  • 信号認識してないとかじゃなくて、起動画面とかの表示がそもそもされない。
  • というか、電源ボタンのオレンジ点灯と青点灯の様子を見ていると、信号は認識してるっぽい。
  • ノートパソコンに接続しても、設定画面では認識されている様子
  • →つまり純粋に「表示が出来ない」

取り敢えずやってみたこと

  • 電源抜いて、電源ボタンを何度か押して放置

サポートに電話したらこう言われた。
数時間ほっといてダメだったら工場送りらしい。
はぁ。。

  • 上記、やってみた→ダメだった。

再度電話すると、取り敢えず万全を期して数日は放置しろとの指示。コレでもダメだったらソフマップに電話だ。

外部キーをカスケード削除(onDelete: cascade)するように設定する

schema.ymlで引っかかる。
モデルのリビルドで、sql文がおかしいと言われる。

table:
  id:
    type:  integer
table2:
  table_id:

としていると、symfonyがtable_idを自動的に外部キーとして認識してくれる。
カスケード削除の実現の為に

table:
  id:
    type:  integer
table2:
  table_id:
    onDelete: cascade

とすると、どうもtable_idが外部キーであると気づいてくれないらしい。
ということで、少し面倒だが丁寧に外部キーとして指定してやる。

table:
  id:
    type:  integer
table2:
  table_id:
    type:                 integer
    foreignTable:         table
    foreignReference:     id
    onDelete:             cascade

これでリビルドが通りました。
うーん。拡張構文にしても自動で認識してくれればいいのに。。1.1や1.2では改善されてるのかしら。

テストデータ ( data/fixture/test_data.yml ) のロードがうまくいかない2

Fatal error: Uncaught exception 'sfException' with message 'Unable to find path for class "○○Peer".' in /usr/share/pear/symfony/addon/propel/sfPropelData.class.php:207
Stack trace:
#0 /usr/share/pear/symfony/addon/propel/sfPropelData.class.php(46): sfPropelData->doDeleteCurrentData(Array)
#1 【プロジェクトの場所】/batch/load_data.php(15): sfPropelData->loadData('【テストデータの場所】')
#2 {main}
thrown in /usr/share/pear/symfony/addon/propel/sfPropelData.class.php on line 207

もう何度目かも分からないので、あまりに間抜けなミスながらもメモ。

  • yamlの記述ミス

テストデータに記述するデータ構造は基本的に

    • test_data.yml
テーブル名:
  テストデータ内でのレコードの名前:
    カラム:  データ
    カラム:  データ

となるがテーブル名はスキーマで指定したphpNameの方を使わないとダメ。

たとえば

    • schema.yml
table_name:
  _attributes { phpName: TableName}
  column:  value
  column:  value

と、なっていれば「テーブル名」にはtable_nameではなくてTableNameを使わなければならない。

新しいテーブル/データモデルを作成したとき、すぐにデータのロードを行うと。Peerモデルが読み込まれていない。

symfony cc

を叩いて。終了。

・・・・・・いい加減こういうしょーもない凡ミスをなくしていきたいところ。