Google Site を Wiki のように使ってみた。JavaScriptを埋め込めない以外は、快適そのもの。でもあまりはやってないね。


Google Site を Wiki のように使ってみた。JavaScriptを埋め込めない以外は、快適そのもの。でもあまりはやってないね。


Movable Type へAtom API で投稿できるようにするために、WSSE認証について調べた。
簡単にいうと、ダイジェスト認証を片方向でやってしまう、言わば「簡易ダイジェス認証」かな。ダイジェスト認証はOpenSSLを使ってCで書いたことがるので、WSSEでもCで書きたかったが、perlのコードを見つけてしまったので、高速化が必要になるまでこれで代用しよう。
#!/usr/bin/perl use DateTime; use Digest::SHA1 qw (sha1); use MIME::Base64 qw (encode_base64);
my $username = shift or die "need username\n"; my $password = shift; my $nonce = sha1(sha1(time() . {} . rand() . $$)); my $now = DateTime->now->iso8601 . 'Z'; my $digest = encode_base64(sha1($nonce . $now . $password || ''), ''); my $credentials = sprintf(qq(UsernameToken Username="%s", PasswordDigest="%s", Nonce="%s", Created="%s") $username, $digest, encode_base64($nonce, ''), $now);
print $credentials
perlで書くととてもシンプル!禁断の果実だなぁ。
めでたく、Movable Type へサクサクとAtomAPIで投稿、閲覧、更新、削除できるようになったが、「投稿日時を指定日時に設定できない」など、制約があることが判明。なんか技があるのかなぁ。
参考:
・Six Apart : Developer Documentation : TypePad Atom API
・Six Apart Atom Resource Center
#include <stdlib.h>
#include <stdio.h>
#include <xmlrpc-c/base.h>
#include <xmlrpc-c/client.h>
#define NAME "BLOGGER.NEWPOST CLINET"
#define VERSION "1.0"
static void exit_if_fault_occurred (xmlrpc_env *env){
if (env->fault_occurred) {
fprintf(stderr, "XML-RPC Fault: %s (%d)\n",
env->fault_string, env->fault_code);
exit(1);
}
}
int main(int const argc, const char ** const argv){
xmlrpc_env env;
xmlrpc_value * resultP;
const char* postid;
if (argc-1 > 0) {
fprintf(stderr, "No arguments");
exit(0);
}
//
xmlrpc_client_init(XMLRPC_CLIENT_NO_FLAGS, NAME, VERSION);
xmlrpc_env_init(&env);
//
resultP = xmlrpc_client_call(
&env,
"http://xxx.xxx.com/xxx/mt-xmlrpc.cgi",
"blogger.newPost",
"(sssssb)",
"dummy", // appkey
"100", // blogid
"xxxxxxxx", // username
"xxxxxxxx", // password
"test post by xmlrpc clinet", // content
1
);
exit_if_fault_occurred(&env);
xmlrpc_read_string(&env, resultP, &postid);
exit_if_fault_occurred(&env);
//
printf("%s\n", postid);
free((char*)postid);
//
xmlrpc_DECREF(resultP);
xmlrpc_env_clean(&env);
xmlrpc_client_cleanup();
}これを以下のmakefileでmakeするとちゃんと動く。64bit Linuxを使っているので/usr/lib64となっている。libxmlrpc-c関連は全部つけたが不要なものも混ざっているかもしれない。
CFLAG=-I/usr/include/xmlrpc-c/xmlrpc-c/
-I/usr/include/xmlrpc-c/ -L/usr/lib64/
LIB=-lxmlrpc -lxmlrpc_client -lxmlrpc_server_abyss
-lxmlrpc_util -lxmlrpc_xmltok -lxmlrpc_abyss
-lxmlrpc_server -lxmlrpc_server_cgi -lxmlrpc_xmlparse
-lcurl -lpthread -lxml2
all: test
test: test.c
gcc $(CFLAG) -o test test.c $(LIB)
XML-RPCは「リモート手続き呼び出しを行うための簡単で手軽な方法です。Perl,、Java、Python、C、C++、PHP や多くの他のプログラミング言語で使用できます。」と色々なところで説明してある。動機は、要はXML-RPCが打てるビーム砲が欲しかったから。ターゲットはたくさんある。TBスパムのような非道なことはしないけど。
■ダウンロード
SourceforgeからCVSを使ってダウンロードしようとしたけど、反応なし。orz
次に、Sourceforgeから安定バージョンのソースコードをダウンロードしてmakeするも、エラーがでてOUT。orz
最後に、yumで3つのモジュール、xmlrpc-c、xmlrpc-c-apps、xmlrpc-c-devel、をダウンロード。やっとうまくいった。rpmを作ってくれた人、ありがとう。
※yum listを実行してみると、ほかにもphpやJava用のrpmも用意されていることがわかる。(個人的には興味ないけど)
■コーディング・マニュアル
この後、libxmlrpc_clientというライブラリを使ってプログラムを作ることになるが、まともなマニュアルを探すのに結構苦労した。結局、Sourceforgeのところにあるマニュアルが一番わかりやすそう。サンプルプログラムを使って丁寧に説明している。
■サンプルプログラムをmakeして走らせる
次の記事(エントリ)にあるサンプルプログラムをmakeして走らせた。ここまできたらあとは、楽勝だ!
ITmedia News:米AOL、5Gバイトの無料オンラインストレージを提供
Gmailも1アカウントあたり3G弱まで使えるが、いくつでもアカウントはもらえるので、容量制限はあまり問題ではない。WEBやメールでアップロード、WEBでダウンロードとなるので利用方法が限られてくるが、使いようによっては、ありがたい「容量制限なし無料ネットストレージ」となる。YouTubeやFlickrも使い方によっては、パーソナルな「容量制限なし無料ネットストレージ」となりうる。
こんな感じで、最近はデータを集める(それもハンパじゃない量を)ことを、ほとんどボランティアモードで、ビジネスとするISPが多いけど、儲かりまっか?なにか企んでるでしょ?
リンク: グーグル、噂の「Google Calendar」をついに公開 - CNET Japan.
プライバシーへの懸念は、デフォルト設定ではユーザーがカレンダーに書き込んだ全イベントはプライベートとなることから、ユーザーが自分のカレンダーのイ ベントを公開しない限り問題にならないだろうとSherman氏は見る。「Google Calendarの欠点は、オンラインでしか利用できない点だ」とSherman氏は言う。そんな単純な問題じゃないと思うけどね。G-mailでもそうだけど、仕事にかかわる情報をGoogleに預けることは、100%安心できるテクノロジが確立するまで、絶対にしないな。
人は信用しないが、テクノロジは信用するという…、まっ、しょうがないです。
ポップアップ広告ブロッカーで、姑息で下品な広告たちが遮断された。続いてFireFoxのAdblockで閲覧者の期待していない目障りな広告たちも遮断された。
ただ現状ではAdblockはメンテナンスが非常に面倒で、注意深さが要求される。Adblockに登録するデータベース(ブロックされるサイトのリスト)をオープンリソース化するコミュニティもある。しかし、閲覧者側の視点で開発されるFireFox(やその他のブラウザ)で、広告遮断機能は、閲覧者が真に期待しているものに作り上げられるのはすぐのことだろう。そして、閲覧者に「期待されている広告は表示」されるが、「期待されない広告は確実に遮断」される時代がやってくる。
「動的に生成した広告(へのリンク)を、AJAXで遅延させてページに貼り付けるテク」が、「遮断機能を潜り抜けるというWEB 1.0な手法」に使われるか、「閲覧者の期待を裏切らない広告を提供するというWEB 2.0 な手法」に使われるか。さて…【続く】
新Blogger API が美しいと思ったのは、オブジェクトの生成にPOST、更新にPUT、取得にGET、削除にDELETEの各HTTPメソッドがちゃんと使われていたから。
HTTPクライアントライブラリのデバッグにはうってつけ!である。
面倒だからPOSTで代替しちゃえ!ってのはWEB 2.0的ではないと思う。たぶん。