sticker20 ステッカー ニーマル

2006年10月20日

symfonyでcssのmediaタイプを変えたい時

aa

Media specific stylesheet
http://www.symfony-project.com/book/trunk/templating_configuration

ブラウザのページを印刷する時に、印刷しなくて良いようなヘッダーやフッターの部分はCSSを使って隠せたりしますが、

「css 印刷 media print 隠す」
http://www.google.co.jp/search?sourceid=navclient-ff&ie=UTF-8&rls=GGGL,GGGL:2006-18,GGGL:en&q=css+%E5%8D%B0%E5%88%B7+media+print+%E9%9A%A0%E3%81%99

<head>にCSSをリンクする時には、mediaの指定が必要だったりします。

デフォルトでは、media="screen"となっているので、どうもprint属性は認識されないようです。困ったなと色々検索してると、やはりsymfony側で対応出来るみたいです。方法としては view.yml のスタイルシートの設定で、print属性にしたいものを以下のようにします。

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

これだけでした。

 

posted by sticker20 at 14:17| Comment(41) | TrackBack(8) | symfony | このブログの読者になる | 更新情報をチェックする

2006年10月17日

symfonyの使える?バージョン

symfonyでは現状

  • stable 0.6.3
  • beta 0.7系
  • alpha 0.9系

があるかと思いますが、この乱立が使う側に結構混乱を招いているようです。

通常stableが安定して、多くの人が使うべきバージョンなのですが、開発が日々行われている為、使いたい新機能がstableに無かったり、stableなんだけどまだ1.0のメジャーバージョンに行ってない為にバグが潜んでたり(sfCacheで悩まされたりしてました)、正直使う側のユーザーとしては

「どれを使ったらいいのよー!」

ってなってるみたいです。現に最近のメーリングリストでは、alphaを使っているにもかかわらず、

「あれ、これ、それが動かないぞー!」

って怒ってる人の発言がよく目に付きます。他には

「alphaがバグってるんだったら先に行ってくれー!」

と言ってる人もいるようです。(alphaなんだから当然開発途中なんですが)答える方の人も少し疲れてる様子で、ウィキペディアのリンクを貼って「alphaとはbetaとは」、と解説している人も居ます。

そのウィキペディアのリンク
http://en.wikipedia.org/wiki/Development_stage

そこでみんなの疑問がどのバージョンが一番良いの?っていう事になると思います。

これはあくまでも主観的な意見で個人の経験談ですが、現状は0.7系のbetaが宜しいかと思います(キャッシュ周りもうまく動いているようですし)。0.6.3系は一応stableですが、やはりまだバグが残っています。0.9系のアルファは現状 最前線で開発されているので、手戻りが多そうでなかなか手が出せません。

しかしながら、0.7系でうまくまとまるのかというとそういうことでもなく、0.8系から盛り込まれてきている新しい機能( http://www.symfony-project.com/trac/wiki/SymfonyPlugins )なんかは使えませんし、構造自体かなり手が加えられているようなので0.7系でアプリケーションを完成してしまい、いざ1.0系に移った時には動かない、ということにならないか結構心配だったりします。

最近のメーリングリストにもありましたが、0.8より下のバージョンで開発したプロジェクトで、symfonyをアップグレードする場合、

 symfony upgrade 0.8

のコマンド実行が必要なようです。

もう少し待てば1.0が出ると思うので、あまり現状深追いせずsymfonyで遊んでおくだけも手かもしれません。

参照:

posted by sticker20 at 10:44| Comment(1) | TrackBack(0) | symfony | このブログの読者になる | 更新情報をチェックする

2006年10月14日

symfony askeetの翻訳

askeet翻訳

 

本家でもaskeetの日本語訳はありますが、どうも2日目で止まっています。今後大きな改訂を待っているのでしょうか?

http://www.sticker20.com/askeet/index/page/3

ちょっと今後のaskeetドキュメントへの改訂が怖いですが、翻訳を3日目からやってみることにしてみました。かなり長いので途中で力尽きるのは目に見えていますが、暇を見つけてやっていきます。(3日目でも半日かかった)

 

posted by sticker20 at 17:44| Comment(2) | TrackBack(0) | symfony | このブログの読者になる | 更新情報をチェックする

symfonyでPEARのような外部ライブラリのautoloadについて

symfonyはsymfonyでかなり完成されていて、あまり外部ライブラリは必要ないのですが、PEARを使っていた人なんかは「うー、ここはPEARが使えるのに!」って事もあると思います。

そんな時には、プロジェクトのトップディレクトリから辿れる config/config.php や使う直前にrequire_once() を書いたり、*/lib/ にファイルをコピーしたり出来ますが、やはりsymfonyのオートロードを使いたいものです。

で、symfonyでどうやってオートロードを使うのか?ですが、これには autoload.yml という設定ファイルを書く必要があります。
これについては、この辺りに書いています。

それで、内容ですが簡単にまとめるとこうなります。

  1. デフォルトのオートローディングの設定は
    $pear_data_dir/symfony/config/autoload.yml にある
  2. これを書き換えても良いが、symfony アプリケーション毎に定義したい場合は、myproject/apps/myapp/config/ に autoload.yml を作り提示されているフォーマットのように設定する。

autoload.ymlフォーマット

  • autoload:
    • ライブラリのラベル名
      • config_autoload.yml.phpでコメントとなる部分
      • 取り込むべき拡張子タイプ
      • ライブラリの場所
      • サブフォルダ内の検索するかどうか

うまく作成されたかどうかは、

MY_PROJECT/apps/cache/APPLICATION_NAME/ENVIRONMENT/config/config_autoload.yml.php

を確認してみましょう。オレンジ色は自分の環境に合わせて読み替えてください

参照:

posted by sticker20 at 12:58| Comment(0) | TrackBack(0) | symfony | このブログの読者になる | 更新情報をチェックする

2006年10月13日

sfThumbnail.class.phpのアルファチャンネルなpngなどへの対応のその後

root/plugins/sfThumbnail/lib
http://www.symfony-project.com/trac/browser/plugins/sfThumbnail/lib

前から更新されるのを待って居るんですが、なんかなかなか更新されません。まだソースは2ヶ月前の物です。

ステッカー ニーマルではとりあえずpngのサムネイル化に対応する為次のようなコードを追加しています。

@@ -1,4 +1,6 @@
 <?php
+// png alpha channel
+//http://www.symfony-project.com/trac/ticket/832
 
 /*
  * This file is part of the symfony package.
@@ -282,6 +284,11 @@
     }
 
     $this->thumb = imagecreatetruecolor($this->thumbWidth, $this->thumbHeight);
+   
+    if($this->imgCreators[$this->imgData['mime']] == 'imagepng'){
+      imagealphablending($this->thumb, false);
+      imagesavealpha($this->thumb, true);
+    }
 
     if ($this->sourceWidth <= $this->maxWidth && $this->sourceHeight <= $this->maxHeight && $this->inflate == false)
     {
@@ -301,6 +308,10 @@
   public function save($thumbDest, $creatorName = null)
   {
     $creator = $creatorName !== null ? $this->imgCreators[$creatorName] : $this->imgCreators[$this->imgData['mime']];
+   
+    if($creator == 'imagepng'){
+        imagesavealpha($this->thumb, true);
+    }
     $creator($this->thumb, $thumbDest);
   }
 }

なんかすごい適当ですが、一応動いています。(png32ぐらいしかテストしてませんが)

これで困っていた方は、こちらから一応ダウンロードできます。
sfThumbnail.class.php - 6.9 KB

参考:

posted by sticker20 at 16:33| Comment(5) | TrackBack(0) | symfony | このブログの読者になる | 更新情報をチェックする

アルファチャンネルなpngのインターネットエクスプローラー(IE internet explorer)での表示の仕方

ステッカー ニーマルでは綺麗なステッカー貼付けの為、アルファチャンネルなpngを使うことを推奨しています。

が、しかしアルファチャンネルpngはIEで、透明部分が表示できないのでは?と思われる方も居るかもしれません。が、しかし、1つ方法があるのです。

その方法とは「AlphaImageLoader Filter」です。
http://msdn.microsoft.com/workshop/author/filter/reference/filters/alphaimageloader.asp

何か聞いたこともないやつです。マイクロソフトの解説ページもよく何をやっているのか分かりません。かんたんに解決しますと次のようになります。

  1. IEでは通常はアルファチャンネルpngはサポートされておらず、透明部分はグレー表示される
  2. IEでアルファチャンネルpngを正しく表示する為に「AlphaImageLoader Filter」が後付け?のように用意されている
  3. 「AlphaImageLoader Filter」を使うには、アルファチャンネルpngを表示したい img タグの style に次のように設定する
    style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/AlphaChannel.png');"
  4. img の src には設定する画像がないので、1px * px の透過GIFを用意しておきそれを設定しておく。(”画像がないですよ×マーク” が表示されないように)
  5. 結果としてコードは次のようになります。

<img src="./blank.gif" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='./AlphaChannel.png');">

簡単にローカルでテストできるようにコードを用意しました。気になる方はダウンロードしてみてください。
AlphaPng.zip - 10.1 KB

参照:

カスペルスキー(kaspersky)を入れたらsubversionが...

246twa6w4

アンチウイルスソフトウェアランキング、最強はどれ?
http://gigazine.net/index.php?/news/comments/20060905_antivirus/

という記事から、kasperskyがセキュリティー最高峰ということで、長年使っていたNortonを止め、kasperskyをインストールしてみました。

「Norton Internet Securityほどの柔軟性はあるのか?」と不安視してたのですが、これがなかなかよく、プログラム別でのネットの接続許可などもあり、Norton程度の機能は十分あるようです。

そうこうしている内にSubversionも1.4に上がり、高速化、画像の差分までチェック可など、かなり良さそうだったので入れてみました。最初は問題なく使えていた ように見えていたのですが、どうもチェックアウトが出来ません。それどころかリポジトリブラウザも全く動きません。1.4のバグか?と思いましたが、そんなあからさまなバグではないだろうと、今度はkasperskyを疑ってみました。

そうすると案の定、kasperskyがどうもsubversionのネット接続を制限していたようで、下のような設定をしてやりsubversionを信頼ゾーンに持って行くことで解決しました。

これで大丈夫です。
元ネタ Kaspersky Anti Virus 6 and Subversion problems
http://schrepfler.blogspot.com/2006/06/kaspersky-anti-virus-6-and-subversion.html

因みにジャストシステムからkasperskyが発売されるようなので、日本でも流行るかもしれません。

ジャストシステム、セキュリティソフト「Kaspersky」を発売
http://gigazine.net/index.php?/news/comments/20061003_justsystem/
ジャストシステムは4日、セキュリティソフト「Kaspersky Internet Security 6.0」の販売を発表した。
http://journal.mycom.co.jp/news/2006/10/05/381.html

また、AOLからkasperskyとは言っていませんが、フリーでセキュリティーソフトが出ています。
http://www.activevirusshield.com/antivirus/freeav/index.adp?
av_heroshot
中身はどうもkasperskyのようです。

2006年10月11日

domなphp

prototype.js script.aculo.us 何かを使っていると、getElementsByTagName() なんかをphpで使えたらHTML解析とか簡単だなぁーって思っていました。

そうこうしているうちに、symfonyのフォームのrepopulationで使うsfFillInFormFilter.class.phpの存在に気づきました。
http://www.symfony-project.com/book/trunk/fillin
※repopulationとは、フォーム要素への入力値再割り当て?で、要はエラー表示なんかする時に、元々の入力値を要素にデフォルトで表示するようなことです。(一般的ですが、コーディングはライブラリ無しではかなり辛いやつです)

HTML_QuickFormでもライブラリ内でさんざん手を焼いていたものですが、ここではDomDocumentやらDomXPathやらPHP5ならではの機能を使っています。

この手法を応用すると、HTTP_Clientなんかで取ってきたHTMLをPHPで簡単に解析できたりします。

ここで一つ注意しないとはまってしまうのは、エンコーディングです。

$document = new DomDocument('1.0', 'UTF-8');
$document->loadHTML($html);

とUTF-8宣言でやっていても、読み込むHTMLのmetaのContent-Typeが定かでないとどうも文字化けしてしまいます。なので、エンコーディングの指定が必要な場合は特に、読み込ませる元となるHTMLのmetaタグ(Content-Type)の内容まで確認しておきましょう。

//自分の場合ですが、元ネタにContent-Typeすらなかったので追加してるサンプル
//$html はUTF-8です
$html = preg_replace('/<title>/i', '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>', $html);

symfonyのメーリングリスト

以前から開発の会話はメーリングリストでされていましたが、

http://dir.gmane.org/gmane.comp.php.symfony.users

どうもこのメーリングリストでは検索がうまくいかないんです。メーリングリスト内でもそういう話題があったりしました。

最近のポストで「google groupでやらない?」って事もあり、どうも10月10日にgoogle groupの方に移行したようです。(招待メールも来ました)

そんなわけで、開発でぶつかった場合はこちらのメーリングリストを覗いてみるのも良いかもしれません。

posted by sticker20 at 09:56| Comment(0) | TrackBack(0) | symfony | このブログの読者になる | 更新情報をチェックする

2006年10月10日

symfonyのインストールバージョン

symfonyの最新バージョンは、0.9系ですが、sticker20.comでは、symfonyはまだ0.7系で動かしています。

通常であれば、http://www.symfony-project.com/askeet/ja/1 のようにsymfonyはインストールできますが、これでは最新の0.9系はインストールされません。

0.9系をインストールするには「pear install symfony/symfony-beta」の部分を

pear install symfony/symfony-alpha

のようにalphaに置き換えるようです。

因みにpearのコマンドで、

pear remote-info symfony/symfony-beta

のようにしてみると、

PACKAGE DETAILS:
================
Latest      0.9.2316
Installed   0.7.1914
Package     symfony
License     MIT
Category    symfony
Summary     symfony framework
Description symfony framework

こんな感じに表示され、現行の最新バージョンなんかが表示されます。

posted by sticker20 at 12:21| Comment(0) | TrackBack(0) | symfony | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。