2007/02/11
blosxom-xmlrpcを色んなブログツールに対応させる...その後
blosxom-xmlrpc.cgiで、幾らかのブログクライアントを使うと、フォルダ名称(ファイルの存在場所)をカテゴリとして保持するblosxomの制約事項により、setPostCategoriesメソッドを呼び出された事で変わってしまった記事ID(ファイル名)が参照出来なくなる問題です。
申し訳ないですが、適当に解決させていただきました。苦笑
setPostCategoriesが呼ばれたタイミングで、元の記事ファイルを指定のカテゴリ(フォルダ)に移動し、「元のファイル名.post」というファイル名で、どこにリネームされたのかを出力しておく。
もし、getPost等で古い記事IDが参照される場合は、「元のファイル名.post」から、実際の記事ファイルを参照し処理するといった仕組みです。
なにぶん適当すぎて、使用価値があるかどうか分かりませんが、一応ソース差分を添付しておきます。
#「元のファイル名.post」というファイルをいつ消すのかについては、今後の宿題にします。
ダウンロード:blosxom-xmlrpc.cgi-20070211.diff
2007/02/07
XX分で作るWebアプリケーション
掲示板...[作成]こんな風にして、「1クリックで出来るWebアプリケーション」...
アドレス帳...[作成]
とか「3秒で出来るWebアプリケーション」...ってのは駄目?
それか注目度を逆利用して
「30日掛けて作り上げる、高品質Webアプリケーション」...なんて本があったら、売れるでしょうか...苦笑
さ、アフォな事考えとらんと、さっさと寝よう...
おそろしや、おそろしや...(JavaでByRef?)
むかーしむかし、Microsoft Visual J++という道具があったそうな...
その道具では、関数呼出の参照渡しを実現するために、配列を渡してJNI内部で値を設定するといった、奇怪な手法が使われておりましたとさ。
さて話は現代に移り、Microsoft Visual J#という道具が巷では出回っていると聞き、さっそく試した私は、腰を抜かしてしまいそうになりました。
public class Testまさか、こんな結果になりますとは...
{
public static void test1(int a) { a = 2; }
public static void test2(/** @ref */ int a) { a = 2; }
public static void main(String[] args) {
int b = 3;
test1(b); System.out.println(b);
test2(b); System.out.println(b);
}
}
Javaという言語仕様まで変えてしまうとは...
おそろしや、おそろしや...
#まぁ、Javaって言ってない(J#)から、いいんですか...
#そうですか...
BOOLはBooleanにしてboolにあらず
どんな現象かといいますと、Microsoft AgentをAgentObjectsから起動した時に、ConnectedというBOOL型のプロパティをTRUEに設定してやるのですが、どうやらJavaから渡していた値trueが、VARIANT変換により1になっていた事が原因していました。
まぁ、1だしfalseじゃないなら動作するのが一般的なアプリでしょ...と思ってましたが、どっこいMSAgent殿は例外も出さずにConnectedをFALSEに設定して下さいました。
実際、COM上ではBOOLはVARIANT_TRUEもしくはVARIANT_FALSEを設定するのがお決まりで、VARIANT_TRUEは
((VARIANT_BOOL)0xffff)と宣言されていました。C++上でのtrueとは値が異なる訳です。
まぁ、それは自分のミスとして...
きっとMSAgentのConnectedプロパティ処理では
if (VARIANT_TRUE == arg) {というコードが書かれているのだと思うのですが、これは
// Connected 設定時の処理...
}
if (VARIANT_FALSE != arg) {って書くべきなんじゃないかな...
// Connected 設定時の処理...
}
ちなみに、Visual Studioのウォッチエリアに追加した、1の値を持つ問題のVARIANT変数は、VT_BOOL:Trueと表示されていました。
Tagged as: com, java
Bookmarks:





![Validate my RSS feed [Valid RSS]](http://mattn.kaoriya.net/images/valid-rss.png)

