2014/08/30(土)Version 2.28cリリース情報
Ver2.28b→Ver2.28cの変更点
- テーブル記法で各行の最後のカラムに空のときに、<td></td>に展開されないバグを修正しました。(lib/Satsuki/TextParser/Satsuki.pm の修正)
Version2.00(β含む)以降からの乗り換え
- Ver2.11以前の場合、uploader.conf.cgi をサンプルから再生成してください。
これだからWindowsは……。
use Fcntl; my $fh; sysopen($fh, "test.txt", O_CREAT | O_RDWR) or die; flock($fh, Fcntl::LOCK_SH()); flock($fh, Fcntl::LOCK_EX()); close($fh);
Linuxなどでは、共有ロックが排他ロックに切り替わるのですが、Windows上では切り替えることができず*1、そのままブロッキングされてしまいます。
use Fcntl; my $fh; sysopen($fh, "test.txt", O_CREAT | O_RDWR) or die; flock($fh, Fcntl::LOCK_SH()); truncate($fh, 0); # ファイルサイズを 0 に seek($fh, 0, 0); # ファイルポインタを先頭へ print $fh "test!!\n"; close($fh);
こんなテストプログラムを走らせます。LOCK_SH以外は、ロックを伴うファイル操作ではよく行う処理です。
LOCK_SH(共有ロック)は本来ならLOCK_EX(排他ロック)ですが、前項で述べたとおりWindows環境ではとりあえず共有ロックで開いておいて後から排他ロックに変更できないので、そのような状況を想定してLOCK_SHで記述してあります。
さてこのプログラムを実行すると、Windows上では0byteのファイルが作成されます。ActivePerl(5.14)の問題かもしれませんが、truncateでのファイルサイズ指定がそのままclose()後のファイルサイズになります。
不思議なことに、LOCK_EX(排他ロック)に変更するときちんと中身のあるファイルが作られます。
use Fcntl; my $fh; sysopen($fh, "test.txt", O_CREAT | O_RDWR) or die; flock($fh, Fcntl::LOCK_SH()); seek($fh, 0, 0); # ファイルポインタを先頭へ print $fh "test!!\n"; truncate($fh, tell($fh)); # 現在の位置でファイル切り詰め close($fh);
そもそもLOCK_SH(共有ロック)状態で書き換えようとすると、以前のサイズよりも大きくならず、そもそも書き変えられないという謎のバグに当たりました。
詳細な発生条件は不明ですが、めんどうくさいので、Windowsの場合共有ロックではなく最初から排他ロックをかけることにしました。
β2で、ブログとして必要な機能はひと通り揃いました。
C86版(β1.4)をお持ちの方はC86SEサポート情報も参照してください。
上書き(もしくはgit pull)した後に以下の作業を行ってください。
conf以外は、いずれ自動更新されるようになる予定です(βの間は手動で)。
一部のチャレンジャー向けの内容です。アルバム画像のフォルダは以下のように移動されました。
(Ver2) public/image/<blogid>/ (Ver3) pub/<blogid>/image/
ゴミ箱の構造、サムネイルの構造などは変更していませんし、記事に貼り付けるタグで互換性は維持したはずなので、丸コピーして古い記事をインポートすれば画像もそのまま表示できるかと思います。
いずれはこの辺を自動で行うツールを作りますが、β版の使用テストにVer2のデータを使いたい!という人は参考までに。
ちなみに、mp3やm4vファイルなどを(アルバムから)貼り付けると、自動的にaudio/vidoeタグが貼られる仕組みが内蔵されています。
C86にてadiary Ver3のβ版が限定配布されます。限定テーマが楽しみです!
adiary Ver3最初の限定テーマが付属します。限定テーマを入手する唯一のチャンス。