
三外科対抗テニス
2005/11/3

— posted by martin at 02:44 pm
Comment [0]
TrackBack [0]
2005/11/3
— posted by martin at 02:44 pm
Comment [0]
TrackBack [0]
2005/11/2
PHP史上最悪の脆弱性(ぜいじゃくせい)が発見されたようです。まずすべき対策は、PHP4.4.1以上にアップグレードすることのようです。が、多くの方は、独自でドメインを取っていても、レンタルサーバーなのでPHPのバージョンアップには手が出せないという状況だと思います。
これは、暫くはサーバー会社なり管理人さんの反応を見るしかないですね。とにかく重大な脆弱性らしいです。具体的な部分を自分のブログ に少し書きましたが、まだよく呑み込めていません。ppBlogのプログラム自体は、現時点では、怪しい箇所は思いつきませんが見直しておきます。
— posted by martin at 04:37 pm
Comment [1]
TrackBack [1]
2005/10/26
だいぶ仕上がってきた感じの1.5です。まだ、未実装のものもありますが。今回では、前回のアップデート時に指摘されていたものを中心にデバッグを行いました。
ここにきて、やや大きめの修正がありました。それは、各テーマディレクトリにあるテンプレートファイルtemplate.phpの中での記述です。これまでは、「最近のエントリー」や「コメント」などのエリア表示の設定は、環境設定から行っていたのですが、今回のバージョンからは、各テーマにより柔軟性を持たせようと、template.phpでエリア表示指定も行うようにしました。各テーマによって表示させたいエリアが違ってくることもあるでしょうから。これまでは、各テーマでのエリア関連のタグの記述は、例えば「最近のエントリー」エリアは
<div id="recently">%_RECENTLY:Recently:block_%</div><!--#recently-->
のような感じでした。%で囲まれた中に2つのコロン(:)があって、真ん中の「Recently」がエリアでのタイトル表示になり、次のblockというのが、ボックスを展開した状態で表示させるか(block)、それとも閉じた状態で表示させるか(none)を表していました。今回はこれにもうひとつコロンを最初に加えて、この「最近のエントリー」エリアの場合は、
<div id="recently">%_RECENTLY:1:Recently:1_%</div><!--#recently-->
みたいになります。エリアでのタイトル表示「Recently」の前に、このエリア自体の表示・非表示を指定する1か0を指定します。ボックス展開のon/offを指定していたnone/blockはそれぞれ、0と1に変更になります。今回のバージョンアップでは、従来のこの部分を変更しないときちんと表示されません。この変更は、お使いのエディタでやってもよいでしょうし、また、従来どおり、オンラインで管理画面の「テーマの編集」から編集してもいいです。ちなみに、エリアボックスでのタイトル「Recently」を日本語表示にしたいなら、
<div id="recently">%_RECENTLY:1:最近のエントリー:1_%</div><!--#recently-->
とすればいいです。簡単ですね。あ、たしか配布中のやつは、この「最近のエントリー」エリアが「非表示」の設定(0)になっていたと思うので、動作確認も兼ねて表示させるように編集してみて下さい。で、この変更により、これまでownerディレクトリにあるキモの設定ファイルini.inc.phpでのエリア関連の設定値はなくなっています。
あとは、細かいところでは、アクセス解析関連で、ぼちぼち出てた次世代ウェブ技術「Web2.0G」指向の新鋭ブラウザ(ベースはFirefox)Flock のトラックもキャッチするようにしています。なのでこのFlockアイコンも追加してます。
何だか、AjaxのコメントボタンがMacOSX Safariで再び利かなくなったという報告もあるようで、帰宅したら確認してみます。。
あ、それからひとつ前の書き庫にある「画像ギャラリーでのドロップシャドウ今回の修正ファイルを添付しておきます。
— posted by martin at 12:08 am
Comment [16]
TrackBack [0]
2005/10/25
最近のエントリーはアップデートばかりでバランスが悪いので、たまには開発日誌を書いてみよう。
それなりにプロ意識を持ったデザイナー達がざわざわとエントリーしてそうなDeviantART のサイト。ここでは至る所で作品のサムネイル画像を目にすることができます。で、どの画像にもいい感じでドロップシャドウが利いていますね。ドロップッシャドウ自体はppBlogでも指定出来るのですが、このDeviantのサイトのように綺麗ではありません。何故なら、おそらくDeviantのサイトでは、個々のサムネイルの大きさに合わせて、動的に「影」を生成しているからです(おそらく。ソースを見た感じでの推論です)。ppBlogでは、サーバーへの負荷やパフォーマンスを考慮して、このアプローチは取っていません。何より、PHPでのドロップシャドウのプログラムは「何だかややこしそうだ」というのがありました。
でも、画像ギャラリーのサムネイル画像で、ぜひともDeviantみたいなドロップシャドウを実現したくて勉強がてらスクリプトを書いてみました。こんな感じです。左上にある「エリア拡張ボタン」を押すと見やすいと思います。
function ImageDropShadow($from='', $output, $borderW=5){
$size = GetImageSize($from);
$tl_shadow = ImageCreateFromPNG("Images/top-left.png");
$offsetX = ImageSX($tl_shadow);
$offsetY = ImageSY($tl_shadow);
$br_shadow = ImageCreateFromPNG("Images/bottom-right.png");
$shadowX = ImageSX($br_shadow);
$shadowY = ImageSY($br_shadow);
$canvas = ImageCreateTrueColor($size[0]+$offsetX+$shadowX+$borderW*2, $size[1]+$offsetY+$shadowY+$borderW*2);
ImageAlphaBlending($canvas, true);
switch ($size[2]){
case 1 : $out = ImageCreateFromGIF($from); break;
case 2 : $out = ImageCreateFromJPEG($from); break;
case 3 : $out = ImageCreateFromPNG($from); break;
}
$bg_color = ImageColorAllocate($canvas, 255, 255, 255);
Imagefilledrectangle ($canvas, 0, 0, ImageSX($canvas), ImageSY($canvas), $bg_color);
ImageCopy ($canvas, $out, $offsetX+$borderW, $offsetY+$borderW, 0, 0, $size[0], $size[1]);
// top left
ImageCopyResampled($canvas, $tl_shadow, 0,0, 0,0, $offsetX,$offsetY, $offsetX,$offsetY);
$tp_shadow = ImageCreateFromPNG("Images/top.png"); // top
ImageCopyResampled ($canvas, $tp_shadow, $offsetX,0, 0,0, $size[0]+$borderW*2,$offsetY, ImageSX($tp_shadow),ImageSY($tp_shadow));
$tr_shadow = ImageCreateFromPNG("Images/top-right.png"); // top right
ImageCopyResampled ($canvas, $tr_shadow, $offsetX+$size[0]+$borderW*2,0, 0,0,
$offsetX,$offsetY, ImageSX($tr_shadow),ImageSY($tr_shadow));
$r_shadow = ImageCreateFromPNG("Images/right.png"); // right
ImageCopyResampled ($canvas, $r_shadow, $size[0]+$offsetX+$borderW*2,$offsetY, 0,0,
$shadowX,$size[1]+$borderW*2, ImageSX($r_shadow),ImageSY($r_shadow));
$l_shadow = ImageCreateFromPNG("Images/left.png"); // left
ImageCopyResampled ($canvas, $l_shadow, 0,$offsetY, 0,0,
$offsetX,$size[1]+$borderW*2, ImageSX($l_shadow),ImageSY($l_shadow));
$bl_shadow = ImageCreateFromPNG("Images/bottom-left.png"); // bottom left
ImageCopyResampled ($canvas, $bl_shadow, 0,$size[1]+$offsetY+$borderW*2, 0,0,
$offsetX,$shadowY, ImageSX($bl_shadow),ImageSY($bl_shadow));
ImageCopyResampled ($canvas, $br_shadow, $offsetX+$size[0]+$borderW*2,$offsetY+$size[1]+$borderW*2,// bottom right
0,0, $shadowX,$shadowY,$shadowX,$shadowY);
$bm_shadow = ImageCreateFromPNG("Images/bottom.png"); // bottom
ImageCopyResampled ($canvas, $bm_shadow, $offsetX,$offsetY+$size[1]+$borderW*2, 0,0,
$size[0]+$borderW*2,$shadowY, ImageSX($bm_shadow),ImageSY($bm_shadow));
ImageDestroy($tl_shadow); ImageDestroy($tp_shadow); ImageDestroy($tr_shadow);
ImageDestroy($l_shadow); ImageDestroy($r_shadow);
ImageDestroy($bl_shadow); ImageDestroy($bm_shadow); ImageDestroy($br_shadow);
ImageDestroy($out);
switch ($size[2]){
case 1 : case 3: ImagePNG($canvas, $output); break; // GIF and PNG
case 2 : $out = ImageJPEG($canvas, $output); break; // JPEG to JPEG
}
ImageDestroy ($canvas);
}
いやー、長い長い。メモ紙に模式図を書きながらでないと、とても頭の中だけでは無理でした。改良の余地はありそうですが、これをutils.phpに組み込んで、画像ギャラリーのサムネイル画像はそれっぽいドロップシャドウ付きで表示できるようになりました。Deviantと違う点は、Deviantはサムネイル画像とは別に、背景に影を(動的に)用意しているのですが、この上に挙げた関数で生成される影はサムネイルと一体化しています。なので、一度サムネイル画像を作ってしまえばおしまいなので、サーバー負荷などを気にする必要もありません。
上のギャラリーアイコンをクリックして雰囲気を見てください。最初にしては、まぁまぁかなと。なお、ここのギャラリーは、まだ画像が少ないんでイマイチな感じですが、weblogの方は画像が揃っているので、なかなか見ごたえはあります→http://martin.p2b.jp/index.php?mode=gallery
— posted by martin at 02:15 am
Comment [0]
TrackBack [0]
2005/10/23
こんにちは。とりあえず、今朝のアップしたやつでバグ報告のあったところで、手直ししたやつです。修正したところは、コメント数の取得と、Ajaxモードでのコメント内リンクをきちんとリンクになるようにした点です。
まだ、カテゴリーのソート関連でバグがあるようですが、これはまた午後からのときに見てみます。修正した3点のファイルを添付しておきます。
— posted by martin at 10:53 am
Comment [20]
TrackBack [0]
Comments