2010/01/22


前回はあんましいい感じじゃ無かったが...ちょっと気になる事があって、もう一回試してみた。
Opera 10.5 pre-alpha for Labs

We have just released Opera 10.5 pre-alpha for Labs. This pre-alpha is based on the Evenes branch and includes Windows, Mac, and UNIX builds (see below for download link).

As you may know, we don’t typically open new versions to user-testing this early in the development cycle. However, we are really excited about what the Desktop team is cooking up and want your feedback.

Many of you have been asking for a glimpse of Carakan, our new ECMAScript/JavaScript engine, and an update to our HTML

http://labs.opera.com/news/2009/12/22/
期待を込めて...

opera-10-50-6177-linux-i386-2
うむ。この前と同じ感じ。ちなみにFlashだと変になるのも変わらない。

それよりも気になってた事があって...

javascript:window.oncontextmenu=function(){return false};void 0 おもむろにアドレスバーへ打ち込み、たわわに実ったウィンドウを撫でるように右クリック...

でっ...でない!!


operaはこれまでjavascriptでコンテキストメニューが抑制出来なかったんだけど、このバージョン抑制出来てる!
これで右クリックを使ったwidgetやツールなんかも動くようになるよ。これまで自作のスクリプトがoperaに移植出来なかった皆さん、朗報です。

ワクワク!
Posted at by



2010/01/21


Perl Hacker面白いよ。:)
変な人いるし、堅い人もいる。ネタに一生懸命になれる人達がいっぱいいるし、意味なく1行に拘る人もいる。


私はPerlでスーパークリエイター奥一穂(kazuho)さんと会えた。
kazuho-sign
kazuhoさんにお好み焼き屋で箸袋の裏に貰ったサイン!
今も大事に持ってるお!
はせがわさんにも会えた。あ、ちゃうちゃう。はせがわさんはwassrだ。

次はどのHackerに会えるかな。
Posted at by



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