nDiki : flock
Related term
2002年10月21日 (月)
■ NaneyOrgWiki 改良

新 WikiEngine の開発にははいったけれども、稼働するのはずっと後になりそうなので、今使用している engine もまだまだ手を入れて遊びます。
@ DanglingLink の強調
WikiName と違って[[, ]]で区切るページ名は DanglingLink の時に「どこまでが名前かわからない」かなと思い、 CSS で破線をつけるようしてみる。
@ shared lock の導入
今までは CGI スクリプトの最初で必ず exclusive lock をかけるというバカ lock だった。 これだと WantedPages のような時間のかかる処理のあるページにアクセスがあると、他のページの read が軒並み sleep させられてしまう。
なので、書き込みのないアクセス時には shared lock で flock するように修正。 これで read vs read でのアクセスが待たされたくなったはず。 それでも時間のかかる shared lock なアクセスがあると write 系のアクセスはやっぱりしばらく待たされてしまうのだけれど、write 系は頻度が低いから……。
- Wiki考 (2002-09-20)
- Windows 上での Apache 2.0.53 では PATH_INF... (2005-04-10)
- 過去の今ごろ (2004-07-15)
- Parse::RecDescent の precompile (2002-11-18)
- [ WiKicker ] touch (2003-05-14)
2003年4月23日 (水)
■ [ WiKicker ] SunOS 5.6 にインストール

結局flock 問題は、File::Flock モジュールを使う事にする。 $^O eq 'solaris' な時は File::Flock::lock を使うようにコードを修正。
それから、RCS まわりでも問題。
Warning: missing newline at end of file /tmp/...
といった感じの警告が出て期待した結果が得られない。 調べてみると rcsdiff の呼び出しで警告。 実際には diff が吐いている。 Sun の diff と GNU diff ではファイル末処理が違うようだ。 ということで、こちらは diffutils-2.8.1 と rcs-5.7 を home の下に入れて解決。
ふう、これで WiKicker は
- Debian GNU/Linux sid
- FreeBSD 4.4-RELEASE
- Red Hat Linux 8.0
- Solaris 2.6
で動く事を確認。都合5つ(SunOS は一つのホストで2個動かしている)。 今の所の注意点は
- Apache が suEXEC しているかどうか
- Perl 5.005_03 or Perl v5.8.0 ? (依存ライブラリの問題、UTF-8 の扱いの違い)
- SunOS の flock 問題
- SunOS の diff 問題
といったところか。
- [ Perl ] Memcached を使ってみる (2004-01-12)
- Windows 上での Apache 2.0.53 では PATH_INF... (2005-04-10)
- [ WiKicker ] SpeedyCGI (2003-10-17)
- Warning: SuexecUserGroup directive re... (2004-07-10)
- Debian に RSS リーダ「フレッシュリーダー」をインストール (2006-03-06)
2004年3月2日 (火)
■ [ Perl ] Log::Log4perlのはまりどころ

WiKicker / DiKicker の Log::Log4perl 対応作業。
- www.naney.org は Apache の VirtualHost としてエラーログも個別に吐かれている
- エラーログは自分のホームディレクトリに吐かれるものの、root 所有である
- ディレクトリは自分に所有権があり、エラーログが肥大化したら消す事もできるのだが、Apache をリスタートする権利がないので(週に1度のシステム側のローテーションが起きるまで)二度とエラーログが見れなくなる。
ということで、warn -> Apache のエラーログに流れている警告メッセージも、Log::Log4perl の方に流して、好きに消せるようにしておくことにする。
@ Log::Log4perl->init_once
SpeedyCGI 下で動かす事を想定して初期化は、init_once で行うようにする。 可能な限り早く初期化すべきなので、設定ファイル名/設定文字列はプロパティファイルに記述しておくのではなく、CGI プログラムで最初に生成する Controller オブジェクトの初期化パラメータで指定するように。
@ $SIG{__WARN__} を設定
$SIG{__WARN__}を設定して、warn のメッセージを Log::Log4perl に送る。 最初はほぼ FAQ の例のまま、以下のように記述。
use Log::Log4perl qw(:easy);
BEGIN {
$::SIG{__WARN__} = sub {
local $Log::Log4perl::caller_depth = $Log::Log4perl::caller_depth + 1;
WARN(@_);
};
}
しかし期待していた通りに動かず悩む。原因は前述する init_once との絡み。 use Log::Log4perl qw(:easy) した時点でデフォルトの初期化が行われてしまうため、初期化済みになってしまって init_once での設定処理がスキップされていたのが問題。
use Log::Log4perl;
BEGIN {
$::SIG{__WARN__} = sub {
local $Log::Log4perl::caller_depth = $Log::Log4perl::caller_depth + 1;
if (Log::Log4perl->initialized) {
Log::Log4perl->get_logger->warn(@_);
}
};
}
と修正。 get_logger も暗黙的に初期化を行うので、init_once する前に warn されるとやはりデフォルトの初期化がおこってしまう。 それではまずいので initialized が真(=初期化済み)の時のみロギングするようにする。 ただしこれだと init_once する前の warn メッセージが失なわれる(STDERR あたりに print するようにすればいいかもしれない)。
@ CGI::Carpとの絡み
CGI::Carp も $SIG{__WARN__} を上書きするので同時に使えない。 以前に use していたのが残っていてはまる。
@ Log::Log4perl::Appender::Synchronized で core dump ?
NaneyOrgWiki、nDiki でロギングしはじめたところ、CGI プログラムの処理はきちんと成功しているもののその後(?) speedy_backend が core dump してしまう事があるようだ。 最初は $::SIG{__WARN__} の設定あたりに問題があるのかと思ったが、Log::Log4perl::Appender::Synchronized を使わないようにしたところ core を吐かなくなった。
IPC::Shareable、IPC::Semaphoreなんて使っているしやっぱりこれが怪しい。 とりあえず外しておくことにする。
しかし何らかの方法でシンクロしておかないとログファイルが壊れるはずだから、本当はどうにかしなければならないな。 もっと簡単に flock とかで排他制御する Appender とか無いのかな。 自分で書くしかない?
- www.naney.org サーバ断続的にダウン (2006-04-30)
- Windows 上での Apache 2.0.53 では PATH_INF... (2005-04-10)
- サーバ高負荷状態につき DiKicker 機能修正とサーバ設定変更 (2006-03-03)
- [ WiKicker ] SpeedyCGI 対応するも…… (2003-11-09)
- [ WiKicker ] SpeedyCGI (2003-10-17)
2004年9月1日 (水)
■ CGI::Session

Apache::Session 1.6 を使おうかと思ったら Windows XP + ActivePerl 5.6.1 だと make test が通らない。flock まわりの既知の問題らしい。
ということでやっぱり CGI::Session を使う事にする。 expire の処理などもこちらの方が良さそげ。
@ Perl 5.005_03 と CGI::Session
t/complex_ds.t、t/db_file.t、t/file.t でそれぞれ CGI::Session::File、CGI::Session::DB_File、CGI::Session::File の new メソッドが見つからなくて失敗する。 use base でうまく require されていない? それぞれ別途 use でロードするようにテストを修正すると通過。
ちょっと気持ち悪いが動くことは動く。
- Pentium 4 マシンから Athron 64 マシンに乗り替え (2008-09-05)
- Berkeley DB 4.2.52 + DB_File 1.808 をホ... (2004-02-08)
- [ WiKicker ] SunOS 5.6 にインストール (2003-04-23)
- WiKicker の Win32 対応 (2005-04-04)
- 今日のさえずり - Mobile Google Notebook、iモード... (2007-11-15)
2004年10月7日 (木)
■ [ WiKicker ] NFS 上での flock

数日前、プロジェクトの一つで使っている WiKicker が突然動かなくなっている事に気がつく。アクセスしてもレスポンスが返ってこない。 チェックしてみると知らない間にサーバがリプレースされている様子。
どちらも SunOS 5.6 で、バイナリ互換な環境。 管理者いわく「ひととおりWebページ等は移行できているようですが」。
でチェックしてみると新サーバへの移行に際し、ホームディレクトリはまだ旧サーバのものを NFS でマウントしている様子。 どうやら flock まわりの問題か。ホームディレクトリの下だと WiKicker の make test が通らないし (/tmp の下などだと通る)。
WiKicker の修正もちょっと大変だし、このままホームディレクトリが NFS 下にあるなら /usr/local か /var のどっかに WiKicker 用のデータベースを書かせてもらうようにしないといけないな。
- WiKicker の Win32 対応 (2005-04-04)
- [ WiKicker ] SunOS 5.6 にインストール (2003-04-23)
- Debian GNU/Linux に Hyper Estraier 1.2... (2006-05-31)
- [ Perl ] Log::Log4perlのはまりどころ (2004-03-02)
- Hyper Estraier で社内 Web コンテンツ検索 (2006-06-01)
2005年4月4日 (月)
■ WiKicker の Win32 対応

WiKicker をベースにちょっとしたWebアプリケーションを作ろうという話になったのだが、そういえば Win32 対応していない。
ということで ActivePerl で動くように手を入れる。 まずは make test が通るようになるまで修正。
あたりを修正してだいたい対応できたようだ。 同梱している DiKicker の方は DB_File::Lock の make test が通らないので、とりあえず使用不可ということで。 WiKicker の方も flock まわりがきちんと動いているか確認する必要があるな。
- Windows 上での Apache 2.0.53 では PATH_INF... (2005-04-10)
- Windows 上の WiKicker で履歴機能が動かないのは環境変数 ... (2006-11-27)
- [ WiKicker ] 久しぶりにメンテナンス (2004-04-02)
- Win32 で WiKicker が落ちるのは binmode の設定忘れのせい (2005-04-18)
- WiKicker 0.25 リリース - Win32 対応は動作未確認 (2005-05-07)
2005年4月16日 (土)
■ WiKicker リリースに向けてテスト追加・バグ修正

WiKicker の Win32 対応のために、ファイル処理まわりや flock を使っているところを中心としたテスト・修正作業。
- ファイルのパス文字列の作成は File::Spec を使うように修正
- Windows 2000 上でこけていた flock 処理部分を修正
これでようやく Win32 で動くようになったかな。 まだ一部警告が出るけど。
しかし ThinkPad X31 (2672-PHJ、Pentium M 1.60GHz [Banias]) の上での QEMU + Windows 2000 は、やっぱり遅すぎて動作検証には使いづらい。WiKicker で1ページの処理に10秒以上かかったりするし。 結局 VNC を使って、別のPCで作業を行った。
- 私的10大ニュース2003 (2003-12-31)
- UPS 選択用にワットチェッカーで消費電力を測定しよう (2005-12-09)
- WiKicker の Win32 対応 (2005-04-04)
- CD-R ドライブが使えない (2006-07-27)
- WikiPage 編集画面で Ctrl+S を押すとプレビューするようにしてみる (2006-04-29)
スポンサード リンク
■よく検索されるキーワード
perl(62) torrent(54) linux(48) 提案書(47) windows(43) 書き方(41) 使い方(29) アジェンダ(26) x31(25) 充電式カイロ(25) cvs(22) インストール(20) サンプル(20) thinkpad(19) アジェンダとは(19) f-01a(18) wiki(17) c#(16) 感想(16) カイロ(16) usb(16) java(16) 秋葉原(15) debian(15) ヨドバシカメラ(15) subversion(15) 壁紙(15) 作り方(15) 静電気(14) apache(14) グッズ(14) デロンギ(13) フリー(13) sh-01a(13) ganttproject(13) 修理(13) ssh(12) svn(12) ヨドバシ(12) truecrypt(12) ダイソー(11) 手帳(11) activeperl(11) ubuntu(11) ほぼ日手帳(11) firefox(10) mew(10) mp980(10) ドラマ(10) 日本語(10) n-01a(10) google(10) tc-1(10) 評判(10) ツール(10) djunit(9) cgi(9) 動画(9) mp3(9) オイルヒーター(9) docomo(9) rcs(9) 除去(9) centos(9) メモリ(9) エネループ(9) 設定(9) p-01a(9) tortoisesvn(9) 無印(8) ケース(8) 口コミ(8) ミノルタ(8) メール(8) インストーラ(8) 会議(8) xampp(8) 加湿器(8) af(7) 値段(7)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザインProcess Time: 15.140642s / load averages: 0.06, 0.13, 0.15
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク