2012年7月20日金曜日

Firefox 14.0.1

また上がってました。
アップデート後のページを見るとAndroid版への対応を行ったような感じですが。
PC不調により同系列機の古いPCを使ってFirefoxを一気に13に上げたら
Funnelcake Jul 2012
mozilla11 - 1.0
の表示が増えたのですけどよくわかりません。
デスクトップで13ぐらいから気になっていたフリーズに似た現象は14でも同様なようです。

2012年7月9日月曜日

マスクファイルの設定

撮影カメラの角度を変えればいいのだけど扇風機を使ってると常に動いてるのでとめたいと思っていたのですがようやく設定してみました。

motionでマスク画像を用意してマスクを掛けれることは知っていたのですが実際にやるまでが遅い遅い(笑)

そんなわけで早速現在の画像を取ってきてマスクを作ろうと思ってマスクファイルの形式を見てみると、「PGM」ファイルという物が必要らしい。

ファイル形式は知りませんが、PGM : portable gray map と呼ばれるらしく、motionサイトのドキュメントにもありました。

http://www.lavrsen.dk/foswiki/bin/view/Motion/MotionGuideAlphabeticalOptionReferenceManual#mask_file

Linuxではdjpegなるコマンドで変換もできるようで試しにUbuntuで
djpeg -?
と実行したらヘルプが表示されました。手軽なところでCygwinで実行してみると…インストールされているようで同じく動きました。(openwrtのコンパイルはできなかったのですが、色々入れておいたのでようやく役に立った感じです)

同じページにコマンドも表示されているので
djpeg -grayscale -pnm mask.jpg > mask.pgm
と実行して出来上がったファイルを適当なディレクトリにコピーして/etc/motion.confをviなどで
mask_file /home/motion/mask.pgm
と設定してopenwrt再起動。
これで扇風機を動かしても記録されません(笑)

2012年7月5日木曜日

XPのノートのスタンバイが不安定に

スタンバイからの復帰時にブルースクリーンが表示されるようになった。
原因はまだ特定できていないが気になるキーワードとして2つ
  • タッチパッドのマウスのドライバーのインストール
  • 先日AVGのメジャーバージョンのアップデート
マウスドライバも怪しいには怪しいが、もしかするとAVGなのかもしれないというのが今のところの感触。

AVGのアップデートを行ったらプログラムの更新があったので今後でなくなればうれしい。

2012年6月29日金曜日

編集時 カテゴリーを変更するとcategory_id.ini.phpがおかしくなる対処

ppBlog 1.8.8


色々とテストなどを行ってinclude_onceが問題なのかもとおもいつつ直接の原因は
utils_admin.phpの292行目あたりの
$CATEGORY_ID[$i] = "$cat|".implode(',', array_filter(explode(',', $ids)));
この赤字の$cat部分。
ここでカテゴリ名だけで書き換えて保存しちゃっているのでアウトでした。
$CATEGORY_ID[$i] = "$_cat|".implode(',', array_filter(explode(',', $ids)));
正しくは$_catで引っ張ってきている元の形で書き込めばいいのです。(直後のロジックでもそうなってる)
やってることはわかるのですが変数名をアンダースコアを多用して混乱を招きやすい変数名で子チョコちょやってるとよくある罠ですね(笑)

しかしinclude_onceの弊害がはっきり出ていないのでコードを修正したままにするかどうか悩みどころですが今回書き換えた部分は
utils_admin.php 277行目あたりのところと
 if($mode=='update' || is_numeric($ontime)){  # 編集後
  //////
  //include_once ($cat_id); // get::$CATEGORY_ID
  include($cat_id); // get::$CATEGORY_ID
  //////
  $index = get_article_index($id, $orgLINES);
  list(,$cat,) = explode('|', $orgLINES[$index], 3);
  if($cat != $category){ // カテゴリーの変更あり
   foreach ($CATEGORY_ID as $i => $catid){
    list($_cat, $ids) = explode('|', $catid);
    list($__cat,) = explode("\t", $_cat);
    if(strpos($catid, $org_id)){
     $ids = str_replace($org_id, '', $ids);
     //////
     //$CATEGORY_ID[$i] = "$cat|".implode(',', array_filter(explode(',', $ids)));
     $CATEGORY_ID[$i] = "$_cat|".implode(',', array_filter(explode(',', $ids)));
     //////
    }
    if($__cat == $category){
     $_ids = array_filter(explode(',', $ids)); array_push($_ids, $_id);
     $CATEGORY_ID[$i] = "$_cat|".implode(',', $_ids);
     }
同じくutils_admin.php最後のファンクション定義の949行あたり
 function make_category_id(){
 global $CATEGORY_LIST;
 $ini = OD.'category_id.ini.php';
 rewrite_ini($ini, '', '$CATEGORY_ID');
 $CATEGORY_ID = array();
 //////
 //include_once (OD.'category.ini.php');
 include(OD.'category.ini.php');
 //////
 foreach ($CATEGORY_LIST as $i => $line){
  list($_cat,) = explode('|', $line, 2);
  list($__cat, $catlink) = explode("\t", $_cat);
  $_articles = get_articles_by_category($__cat);
  $CATEGORY_ID[$i] = array();
  foreach ($_articles as $a){
   list($id,) = explode('|', $a, 2);
   $CATEGORY_ID[$i][] = $id;
  }
  $CATEGORY_ID[$i] = "$__cat\t$catlink".'|'.implode(",", $CATEGORY_ID[$i]);
 } #foreach
 rewrite_ini($ini, $CATEGORY_ID);
}
これでとりあえず記事更新時にカテゴリを変更しても対応できるようになりました。

残る部分としてはカテゴリ名を変更したときにcategory_id.ini.phpが更新されていないので内部的な不一致が起きているところでしょうか。ま、これも一旦category_id.ini.phpを削除して記事更新を行えば正しくなるので気になるまで放置しておきます。

カテゴリー(だらだらその2)

いろいろと試しているとどうもカテゴリーなどをいじった後は
  1. category_id.ini.phpの削除
  2. 記事更新
で、category_id.ini.phpの再作成を強制的に行えばなんとなく綺麗な状態になりそう。

ただし、サブカテゴリーがある状態でカテゴリーをクリックしたときのURLのパラメータの aim= が空っぽになっているので見てみると、category_id.ini.phpのカテゴリーにカテゴリーIDが空っぽのものができているようです。
この辺の動作がとてつもなく不安定に陥ってそうです。
これが仕様なのかどうなのかは若干不明。なのでちょっと確認をして見ました。

ppBlogの本家では静的リンクになっているので試しに静的リンクを有効にしてみると…webサーバーがだめなのか記事更新をしてもまったく動作がダメに(笑)
本家の状態を見る限り、カテゴリーにサブカテゴリーが含まれていてもカテゴリーをクリックすれば該当するカテゴリーの記事を表示するようになっているのでそのように動作するのが妥当かと思われます。

実際の仕様としては親カテゴリをクリックして表示される一覧はサブカテゴリーのものも含まれているのが仕様としては正しいような気がしますが。

さて、ではどうするべきか?

問題があるのはサブカテゴリーがあるカテゴリーがあった場合の挙動。

含まれているカテゴリーは
┬カテゴリー
│└サブカテゴリー
└その他
その他はあったほうがいいのかなと思って全部削除しましたが追加しておきました。
ゼロ件になるとアンカーが無効になってしまうので記事を追加し、サブカテゴリーにも含めておいて
テストを行ってみました。

category_id.ini.phpを削除し、記事を更新すると、カテゴリー、サブカテゴリーともにaimが指定された状態。
カテゴリー、サブカテゴリーの記事のどちらも更新するだけであればaimは変化なし。
(カテゴリー15件、サブカテゴリー1件、その他1件の状態で)カテゴリーの記事をサブカテゴリーに変更して更新するとカテゴリーのaimだけが消失。カウンタは正しい。
(カテゴリー14件、サブカテゴリー2件、その他1件の状態で)サブカテゴリーの記事をカテゴリーに変更して更新すると、カテゴリーとサブカテゴリーのaimが消失。カウンタは正しい。

ここでサブカテゴリーを0件にしないために再度category_id.ini.phpを削除し、記事を更新すると、カテゴリー、サブカテゴリーともにaimが指定された状態。

(カテゴリー15件、サブカテゴリー1件、その他1件の状態で)カテゴリーの記事をサブカテゴリーに変更して更新するとカテゴリーのaimだけが消失。カウンタは正しい。

再度category_id.ini.phpを削除し、記事を更新すると、カテゴリー、サブカテゴリーともにaimが指定された状態。

(カテゴリー14件、サブカテゴリー2件、その他1件の状態で)サブカテゴリーの記事をカテゴリーに変更して更新すると、サブカテゴリーのaimがカテゴリーのaimになっている。
(category_id.ini.phpはサブカテゴリー側のIDが消えている)

サブカテゴリー→カテゴリーへの変更の更新は見かけ上aimが上書きされているように見えるがあきらかに移動もとのカテゴリーIDが消失しているということなのでしょう。

明らかに記事更新時のカテゴリー移動がダメみたいですね。