Archive for 1月, 2007

31
2007

staticなクラス変数は参照のみということを知りました。
うーん。。。しょうがないのでglobalにします。

29
2007

kwLog公開

| No Comments | No Trackbacks | はてなブックマークへ追加 | del.icio.usへ追加 |

一通りblogの引っ越しも終わりました。。。
ようやくkwLog公開です。
でも記事自体は2001年からあるのでSince 2001としました。
とりあえず10年を目標にがんばってみよう。

29
2007

VOXからも移行

| No Comments | No Trackbacks | はてなブックマークへ追加 | del.icio.usへ追加 |

VOXからも移行完了。AtomAPIの使い方がわからず
フィードバックから送信しちゃいましたが・・・
AtomFeedからふつーに読んでいけました。。。

29
2007

いろいろがんばって

| No Comments | No Trackbacks | はてなブックマークへ追加 | del.icio.usへ追加 |

so-net blogからの移行にも成功。移行するためのプログラム書きました。
http://labs.makotokw.com/blog2mt/
においておきます。

26
2007

過去のblogを全部とりこんだところ1000エントリーを超えました。再構築がめっちゃ遅い。仕方がないのでダイナミック・パブリシングをオンにします。
さて、ダイナミック・パブリッシングでは「テンプレートタグを拡張するプラグインが動作しない」
という致命的な弱点があります。・・・というのをよく聞くのですが、結局のところ”テンプレートタグを拡張するプラグイン”というのが何を指してるのかわからないのです。
またPHP化でincludeしているとうまくいかないとも言います。全く意味がわかりません。だってダイナミックパブリッシングはPHPで動くのにPHPのincludeができないって・・・どういうこと。
とにかく押せ押せでやってみるのです。
とにかく遅いのは、日付とエントリーなのでテンプレートごとに個別に選択するようにして以下のテンプレートをダイナミックにします。
-日付アーカイブ
-エントリー・アーカイブ
で、別にディスク容量はたんまりとあるのでキャッシュを有効にします。以下のMovable Type 3.3のマニュアル通りに、cacheフォルダの作成と$mt->caching =true;の追加を行います。

ページ・レベルのキャッシング
ダイナミック・パブリッシングを最適化する別の方法は、ページ・レベルのキャッシングを有効にすることです。この機能によって、ダイナミック・パブリッシングは、1つのリクエストから次のリクエストに移行する間、ファイル・システムにキャッシュされるので、スタティック・ページに近いスピードが得られます。長期的に見ると、これはディスク・スペースをより多く消費しますが、性能上の利点があります。ページ・レベルのキャッシングをオンにするには、ブログのルート・ディレクトリにcacheという名前で新しいディレクトリを作成し、パーミッションを777(rwxrwxrwx)に設定する必要があります。次に、Dynamic Site Bootstrapperテンプレートに次の行を加えます。
$mt->caching =true;この行は$mt->view();の行の上に加えてください。この行を削除すると、キャッシング・オプションが無効になります。
修正後に再構築すると、ダイナミック・ページを表示するときに、作成したキャッシュ・ディレクトリ内にキャッシュするようになります。キャッシュされたあとは、ブログ・コンテンツがそのキャッシュされたページより新しい場合、またはリクエストを受けた場合に限り、1ページずつ再構築されます。

しかし以下のエラーがでました。

ページが見つかりません。
include_once({{MTBlogSitePath}}toolbar.php) [function.include-once]: failed to open stream: No such file or directory

{MTBlogSitePath}}が展開されていないようです。toolbar.php自体はダイナミックじゃないテンプレートから生成されたものなのでMTのタグは入っていません。{{MTBlogSitePath}}が悪いとみました。
toolbar.phpはmtview.phpと同じフォルダにあるので
 include_once(‘toolbar.php’);
にしちゃいました。
これでうまくいったものの。。。いろいろ問題が・・・最近のエントリーの表示がおかしいのとがおかしいです。
仕方ないのでデバッグしました。は、php/lib/block.MTArchiveNext.phpで展開されます。でこっから archive_lib.phpの_hdlr_archive_prev_next -> get_entryが呼び出されます。で、さらに$mt->db->fetch_entriesにいきます。
どうも、php/lib/mtdb_base.php の 512行目からの$orderの設定がおかしいです。

$order = 'desc';
if (isset($blog) && isset($blog['blog_sort_order_posts'])) {
if ($blog['blog_sort_order_posts'] == 'ascend') {
$order = 'asc';
}
}
if (!isset($order)) {
$order = 'desc';
if (isset($blog) && isset($blog['blog_sort_order_posts'])) {
if ($blog['blog_sort_order_posts'] == 'ascend') {
$order = 'asc';
}
}
}

if (!isset($order))のif文には絶対入りません。
上記の15行を以下に置き換えてみると直ります。

if (!isset($args['sort_order'])) {
$order = 'desc';
if (isset($blog) && isset($blog['blog_sort_order_posts'])) {
if ($blog['blog_sort_order_posts'] == 'ascend') {
$order = 'asc';
}
}
} else {
$order = ($args['sort_order'] == 'ascend') ? 'asc' : 'desc';
if (isset($blog) && isset($blog['blog_sort_order_posts'])) {
if ($blog['blog_sort_order_posts'] == 'ascend') {
$order = ($order == 'asc') ? 'desc' : 'asc';
}
}
}

多分、こういうことがしたかったのでは。。。
これで、も最近のエントリー表示も直りました。

24
2007

PHPではエラーが発生するときに呼び出すfunctionをset_error_handlerで設定できます。
まだまだPHPでtry-catch方式でエラーハンドリングを行っている方は少ないと予想していますが、
try-catchで統一するための方法が以下にありました。

http://www.alexatnet.com/Blog/Index/2006-10-18/php-coding-tip-convert-notices-and-warnings-into-exceptions

function errorHandler($errno, $errstr, $errfile, $errline) {
throw new Exception($errstr, $errno);
}
set_error_handler('errorHandler');
try {
file_put_contents('cosmos:\\1.txt', 'asdf');
} catch (Exception $e) {
echo $e->getMessage();
}

これで、PHPのエラーが起きたときに例外を発生させることが可能です。

22
2007

断念

| No Comments | No Trackbacks | はてなブックマークへ追加 | del.icio.usへ追加 |

VistaコンテストにGadgetを出品する予定でしたが、
時間の都合上断念しました・・・
YahooWidgetを移植するつもりだったのですが、
UIの作り方のあまりの違いに時間が足りずに断念しました。
YahooWidgetはUIの部品を独自のオブジェクトで作れるのですが
var newImage = new Image();
Sidebar Gadgetは完全にhtmlで記述しないといけないので特に
動的に追加したり書き換えたりというときにはかなりの
変更量が発生します。Sidebar GadgetからYahoo Widgetの移植の方が
プログラマ的には楽かもしれません。
しかし、今後htmlベースでアプリをつくる技量は必要なので
粛々とSidebar Gadgetの勉強も続けていきます。

21
2007

外国の方からOSが起動してから数時間かかって予定が表示されない。と言われます。
Outlookをlockしたまま終了すると、
メールボックスの修復作業が行われるのですが、
オートメーションでアクセスするとこの修復作業が裏で行われるので
なかなか起動しないという状態になります。
一応終了時にoutlook.exeをunloadするようにしているのですが、
その処理がうまくいっていないのか、そもそもYahooWidgetEngineが終了処理
をちゃんと実行してくれていないのか、まだ調査ができていません。
ただずっと気になっている問題ではあります。

21
2007

Vista RC1 IE7のUserAgent

| No Comments | No Trackbacks | はてなブックマークへ追加 | del.icio.usへ追加 |

どうでもいいことですが、Vista UltimateのRC1(Build 5600)で
IE7でアクセスするとUserAgentが”Media Center PC 5.0;”なっていました。
いじょ。

20
2007

Hatena Trendsを更新しました。
日本のページでは問題なく更新されたのですが、
アメリカのYahoo Widgetではなぜか新規登録されてしまいました・・・
サポートにマージを依頼、難しかったら削除してもらって
再度登録しよう・・・・