2010年11月 Archives

久しぶりに映画館に行ってハリー・ポッターと死の秘宝 Part1見てきました。見た場所はなぜか水戸の映画館なんだけど、字幕版なのか時間の問題なのか原因はよくわかりませんが、結構空いていました。それとももっと人気の映画館があるのかな?

内容としては最終戦なので、戦いがほとんどです。一緒に見に行った友人は戦いばかりで最初のころと相当違っているのに不満だったようです(^^ゞ

今回、ネタバレするほど語ることはない…かな?私はかなり面白かったです。早く Part2 がみたい。150分弱あるんだけど、全然飽きませんでしたよ。

Part2 と Part1 どこで区切るのだろ?と思っていたけど、そのシーンで区切るんだ~という感じですね。というか、ヴォルデモートがかっこいい気がします。悪の帝王って感じで。まぁ、悪の帝王なんだけど(笑)

後、ハーマイオニーのとっても色っぽいシーンが劇中で出てきますが、かなり挑戦的です。ハリーの中の人ダニエル・ラドクリフが日本に来たとき、ハーマイオニーとのキスシーンが…という話をしていて、原作にはそんなシーンがなかったのでジニーと間違えたのかな?と思っていたのですが…それかよ!って感じです。割とびっくり。

ちなみに、今回はエンディングロールを最後まで見ても追加映像はありません。期待したのにな~

イメージファイルと a tag

| No Comments | No TrackBacks

引き続き MovableType4 のお話。

なぜか jpeg イメージファイルをアップロードすると「Invalid image file format.」と言われてアップロード出来ない現象に遭遇。

最初はアップロードしようとしたイメージが壊れている、とか、フォーマットが CMYK なのか、と思っていろいろと調べたけど、全く正常な(?) jpeg ファイル。

これにはかなり参りましたよ。

で、結局ソースファイルを追いかけて調査。その結果わかったのが…MT/CMS/Asset.pm(1162) 以降の以下の部分。

## Read first 1k of image file
binmode($fh);
seek($fh, 0, 0);
read $fh, $data, 1024;
seek($fh, 0, 0);

## Using an error message format that already exists in all localizations of Movable Type 4.
return $app->error($app->translate("Saving [_1] failed: [_2]", $local_base, "Invalid image file format.")) if
    ( $data =~ m/^\s*<[!?]/ ) ||
    ( $data =~ m/<(HTML|SCRIPT|TITLE|BODY|HEAD|PLAINTEXT|TABLE|IMG|PRE|A)/i ) ||
    ( $data =~ m/text\/html/i ) ||
    ( $data =~ m/^\s*<(FRAMESET|IFRAME|LINK|BASE|STYLE|DIV|P|FONT|APPLET)/i ) ||
    ( $data =~ m/^\s*<(APPLET|META|CENTER|FORM|ISINDEX|H[123456]|B|BR)/i )
    ;

この処理は InternetExplorer6/7 の脆弱性に対応したものみたいで(コメントがそんなことを書いてある)、用は読み込もうとしたファイルの先頭 1024byte に html のタグがあると、イメージファイルではなく html として認識してしまうため、らしい。

で、ハイライトした箇所で'<A'があるとエラーになるようになっていて…偶然そのバイト列があってしまった、と。

う~~ん、やりたいことはわかるんだけど…これはなぁ。さすがに困ってしまったよ(^^ゞ

結局圧縮率を変更して、該当バイト列が出てこないようにしてしのいだけど…さてはて、どうしたものでしょうかね。

該当部分を

m/<(HTML|SCRIPT|TITLE|BODY|HEAD|PLAINTEXT|TABLE|IMG|PRE|A)(\s+|>)/i

とかにするくらい?

漢字ファイル名のイメージ

| No Comments | No TrackBacks

MovableType は通常漢字ファイル名のイメージをアップロードしても問題なく動作します。まぁ、表示用の文字コードとサーバの文字コードが一致していないと面倒なことになったりしますが、今は両方とも utf-8 だから大丈夫!

なんだけど、なぜかイメージの貼り付けを行うと、サムネイル画像のファイル名だけそのまま貼り付けられ、ブラウザによっては表示できないという悲しいことに。

で、非常にバタ臭い方法でパッチを当ててみました。あと、ついでに画像データに title="" も設定するように変更。

--- Image.pm.org	2010-11-17 22:55:09.419336951 +0900
+++ Image.pm	2010-11-17 22:55:22.515341878 +0900
@@ -255,6 +255,18 @@
     return $format;
 }
 
+# patched by DENCHU(2010/11/17)
+sub encode_thumb_url {
+    my $url = shift;
+    my @list = split(/\//, $url);
+    if ( $#list < 0 ) {
+        return $url;
+    }
+    my $fname = pop(@list);
+    push(@list, MT::Util::encode_url($fname));
+    return join("/",@list);
+}
+
 sub as_html {
     my $asset   = shift;
     my ($param) = @_;
@@ -316,34 +328,41 @@
             my $link =
               $thumb
               ? sprintf(
-                '<img src="%s" alt="%s" />',
-                MT::Util::encode_html( $thumb->url ),   $dimensions,
-                MT::Util::encode_html( $asset->label ), $wrap_style
+                '<img src="%s" alt="%s" title="%s" />',
+                MT::Util::encode_html( encode_thumb_url($thumb->url) ),
+                $dimensions,
+                MT::Util::encode_html( $asset->label ),
+                MT::Util::encode_html( $asset->label ),
+                $wrap_style
               )
               : MT->translate('View image');
+            my $popurl = encode_thumb_url($popup->url);
             $text = sprintf( q|<a href="%s" onclick="window.open('%s','popup','width=%d,height=%d,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">%s</a>|,
-                MT::Util::encode_html( $popup->url ),
-                MT::Util::encode_html( $popup->url ),
+                MT::Util::encode_html( $popurl ),
+                MT::Util::encode_html( $popurl ),
                 $asset->image_width,
                 $asset->image_height,
                 $link,
             );
         }
         else {
+            my $thumburl = encode_thumb_url($thumb->url);
             if ( $param->{thumb} ) {
                 $text = sprintf(
-                    '<a href="%s"><img alt="%s" src="%s" /></a>',
+                    '<a href="%s"><img src="%s" alt="%s" title="%s" /></a>',
                     MT::Util::encode_html( $asset->url ),
                     MT::Util::encode_html( $asset->label ),
-                    MT::Util::encode_html( $thumb->url ),
+                    MT::Util::encode_html( $asset->label ),
+                    MT::Util::encode_html( $thumburl ),
                     $dimensions,
                     $wrap_style,
                 );
             }
             else {
                 $text = sprintf(
-                    '<img alt="%s" src="%s" />',
+                    '<img alt="%s" title="%s" src="%s" />',
+                    MT::Util::encode_html( $asset->label ),
                     MT::Util::encode_html( $asset->label ),
                     MT::Util::encode_html( $asset->url ),
                     $dimensions, $wrap_style,

う~ん、perl らしくない書き方だ(^^ゞ

perl のコード書いたの何年ぶりだろう?

ず~っと欲しかったこのクッションやっと手に入れました。何度入荷してもすぐ売り切れてしまうようで、なかなか買えませんでしたよ。

ちなみに丸いです。あんまり大きくなくて、小さなボールぐらいな大きさかな?

後、顔文字の部分は印刷っぽいので、おそらくしばらく使っているとはげ落ちちゃうかな?という感じはします。まぁ、それ以前に白いからすぐに汚れが目立つような気がするけど(^^ゞ

どうせなら三つぐらい欲しかったな~一人一個だったのが残念