まだ重たいCMSをお使いですか?
毎秒1000リクエスト を捌く超高速CMS「adiary

2014/08/30(土)Version 2.28cリリース情報

Version2系のダウンロードはこちらから

Ver2.28b→Ver2.28cの変更点

  • テーブル記法で各行の最後のカラムに空のときに、<td></td>に展開されないバグを修正しました。(lib/Satsuki/TextParser/Satsuki.pm の修正)

過去の変更点

Version2.00(β含む)以降からの乗り換え

  • Ver2.11以前の場合、uploader.conf.cgi をサンプルから再生成してください。

アップデート方法の参考情報。

2014/08/28(木)Windows上での flock の不具合?

これだから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、そのままブロッキングされてしまいます。

*1 : 自分自身で獲得した共有ロックが、排他ロックを獲得する際の障害になっている

共有ロック状態でtruncateすると、ファイルサイズが固定される

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);

挙動まとめ 2017/02/26

  • Windowsでは一度ロックしたものに対し、再度ロックすることができない。
    • 同じファイルハンドルを使用しても「別のロック」とみなされてしまう。
  • Linux等では同じファイルハンドルを使えば、lockは何度でもできる(状態変更できる)。

別の問題 2015/01/16

そもそもLOCK_SH(共有ロック)状態で書き換えようとすると、以前のサイズよりも大きくならず、そもそも書き変えられないという謎のバグに当たりました。

詳細な発生条件は不明ですが、めんどうくさいので、Windowsの場合共有ロックではなく最初から排他ロックをかけることにしました。

2014/08/21(木)adiary Version3.0β2公開情報

ダウンロードはこちらから

Ver3.0β2の変更点

β2で、ブログとして必要な機能はひと通り揃いました。

  • 画像管理(アルバム機能)を追加しました。
    • これにより記事に画像が貼り付けられるようになりました。
  • adiary.conf.cgiで設定していた「Secret_phrase」を自動生成するよう変更しました。
    • この変更でconfigをデフォルトのまま動作させても問題がなくなりました。
  • 細かい修正
    • 記事検索時に全角スペースを区切り文字として認識するようにしました。
    • ノンブロック排他ロックの処理が間違っていたので修正しました。(Thanks to 手石
    • 年月指定や年指定した時に、カレンダーの表示がおかしくなるバグを修正しました。
    • コンテンツ編集画面にて、下層のコンテンツをrootに移動できないバグを修正しました。
    • 他多数

C86版(β1.4)をお持ちの方はC86SEサポート情報も参照してください。

β1以前からのアップデート

上書き(もしくはgit pull)した後に以下の作業を行ってください。

  • adiary.conf.cgi をサンプルから再度作成。
  • 設置してあるブログのデザイン編集を開いて保存(変更する必要はありません)。
  • 「メニュー」→「基本設定」→「編集画面の設定」から、画像リンクのrelを「lightbox[%k]」と設定します。

conf以外は、いずれ自動更新されるようになる予定です(βの間は手動で)。

Ver2からの乗り換え

一部のチャレンジャー向けの内容です。アルバム画像のフォルダは以下のように移動されました。

(Ver2) public/image/<blogid>/ 
(Ver3) pub/<blogid>/image/

ゴミ箱の構造、サムネイルの構造などは変更していませんし、記事に貼り付けるタグで互換性は維持したはずなので、丸コピーして古い記事をインポートすれば画像もそのまま表示できるかと思います。

いずれはこの辺を自動で行うツールを作りますが、β版の使用テストにVer2のデータを使いたい!という人は参考までに。

ちなみに、mp3やm4vファイルなどを(アルバムから)貼り付けると、自動的にaudio/vidoeタグが貼られる仕組みが内蔵されています。

既知の問題

  • プラグイン設定の、個別の設定画面が表示されない。
  • Windows環境でタグ情報の保存に失敗する。(Thanks to 手石)
  • 画像以外のファイルをアップロードした際、アイコンが埋め込まれない。
  • リンク文字列など、タグの区切りの末尾にマッチするワードで記事を検索すると、検索語を含む文字列が2重に表示される。

2014/08/12(火)adiary C86 Special Edition

C86にてadiary Ver3のβ版が限定配布されます。限定テーマが楽しみです!

  • 8/17(日) 「西き06a」 頒価100円
  • 参加団体:adiaryユーザ会
  • 予定用意数:25部
  • 内容
    • adiary Ver3β1.4*1
    • adiary用プラグイン、コメントを流すプラグイン
    • adiary用プラグイン、メモをするプラグイン
    • adiary用限定テーマ「ここあ」

adiary Ver3最初の限定テーマが付属します。限定テーマを入手する唯一のチャンス。

*1 : Version 2系は収録されません

2014/08/10(日)Version 2.28bリリース情報

Version2系のダウンロードはこちらから

Ver2.28a→Ver2.28bの変更点

  • 記事中にツイートボタンがある際、サイドバーのtwitterのTLのデザイン変更に失敗することがある不具合を修正しました。(theme/adiary.jsの修正)
  • IE10等で、テキストボックス等のリサイズ用デバッグバーが表示されてしまう不具合を修正しました。(theme/resizeform.jsの修正)

Version2.00(β含む)以降からの乗り換え

  • Ver2.11以前の場合、uploader.conf.cgi をサンプルから再生成してください。

アップデート方法の参考情報。