2010/01/14


なんとなくテーブルにデータがINSERTされたらGrowlされる...なんて仕組み作って見ようと思った。それだけ。
sqliteでextensionを作る。growlはWindowsのGNTPにも対応したmattn謹製gntp-sendを使う。
mattn's gntp-send at master - GitHub

command line program that send to growl using GNTP protocol.

http://github.com/mattn/gntp-send
gntp-sendはコマンドラインプログラムだけど、外部からライブラリとしても使える様にしてあります。
#include <stdlib.h>
#include <sqlite3ext.h>
#include <growl.h>

SQLITE_EXTENSION_INIT1
static void growl_func(sqlite3_context *context, int argc, sqlite3_value **argv) {
    if (argc == 1) {
        const char *text  = (const char *)sqlite3_value_text(argv[0]);
        growl("localhost", "sqlite3", "sqlite3-trigger", "database-update", text, NULL, NULL, NULL);
    }
}
__declspec(dllexport) int sqlite3_extension_init(sqlite3 *db, char **errmsg, const sqlite3_api_routines *api) {
    SQLITE_EXTENSION_INIT2(api);
    return sqlite3_create_function(db, "growl", 1, SQLITE_UTF8, (void*)db, growl_func, NULL, NULL);
}
こんなコード書いて # gcc -shared -dll -I c:/sqlite3 -I headers growldb.c lib/libgrowl-static.a -lws2_32 -o growldb.dll
こんな風にコンパイル(Windowsの例)。
あとはテーブルにトリガー張って sqlite> create table foo(comment text);
sqlite> select load_extension('growldb.dll');
sqlite> create trigger tri_foo
   ...> before
   ...>   insert on foo
   ...> begin
   ...>   select growl(new.comment);
   ...> end;
試してみよう!



sqlite> insert into foo values('hasegawa! xss xss');


sqlite3-growl
xssキター!

ただしinsertする側は必ずload_extension('growldb.dll')しとかないといけないので、oracleの様には行かない。
真面目な話、この方法をうまく使えばsqliteでネットワークレプリケーションとか出来そう。
えっ?誰得?.......知りません!
Posted at by



2010/01/06


期待出来そうだったので動かしてみた。
Opera 10.5 for Linux/FreeBSD、Gtk対応 | エンタープライズ | マイコミジャーナル

Opera Softwareは2009年12月22日(ノルウェー時間)、新しいJavaScriptエンジンやレンダリングエンジン、ベクターグラフィックライブラリを搭載したOpera 10.5 pre-alphaを公開した。Betanewsの計測によればOpera 10.5 pre-alphaの速度はChromeを陵駕しており、アルファ版ながらも大幅な性能改善をアピールしている。 2009年12月22日に公開された段階ではWindows版とMac OS X版が公開されていた。2009年12月31日(ノルウェー時間)、Unix版も公開。FreeBSD/i386版、FreeBSD/amd64版、Linux/i368版、Linux/x86_64版が用意されている。

http://journal.mycom.co.jp/news/2010/01/05/040/index.html
むむむー。まだ残念。
opera-10-50-6177-linux-i386
Posted at by



2010/01/01


昨年は自分で思っていた程にはアウトプット出来なかった気がします。が...本年も気を張りすぎずに、笑って貰えてちょっぴりタメになる技術をブログにして行きたいと思います。

本年も宜しくお願い致します。
Posted at by