Fork me on GitHub

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 00:17 in ソフトウェア::lang::c | WriteBacks (0)
Tagged as: c, DB, growl, sql, sqlite
Bookmarks: このエントリーのtweets add to hatena add to hatena | add to delicious.com | add to livedoor.clip add to livedoor.clip | add to buzzurl add to buzzurl | add to fc2bookmark add to fc2bookmark | add to Yahoo Bookmark add to Yahoo Bookmark | add to Pookmark add to Pookmark

2009/12/02

はてな
os0xさん。お疲れ様でした。次の活躍も期待しています。
株式会社ALBERTを退社します - 0xFF

ファイル整理とかしていて2005年当時に書いたプログラムとかが出てきて、あまりのアレさに感慨深くなりました…

http://d.hatena.ne.jp/os0x/20091201/1259626454
私も以前フォルダの中を色々探索してたら、8年前のソースコードが出て来て懐かしくなりました。某IRCチャネルでは一度晒した事があるのですが、ネタとして面白そうだったのでブログに転載します。
8年前の私は、何故かtelnetに興味があり、Windows標準のtelnetは何故色が出ないんだ!なぜあんなショボいんだ!と思って、自前でtelnetを作っていました。
最初はvectorに登録する予定でしたが、面倒くさくなってやめてしまいました。
xterm互換です。NTLM認証対応です。Win32 APIでエスケープシーケンス表現しています。utf-8には対応していません><。とても長いです。変に凝ってます。そしてAPIゴリゴリです。懐かしいと感じると同時に、センスの無さに笑いました。

sTelNet.c
sshが標準な今、telnetのソースコードなんて無意味に近いですが、興味のある方だけ、どうぞw
Posted at 01:23 in ソフトウェア::lang::c | WriteBacks (0)
Tagged as: c, telnet
Bookmarks: このエントリーのtweets add to hatena add to hatena | add to delicious.com | add to livedoor.clip add to livedoor.clip | add to buzzurl add to buzzurl | add to fc2bookmark add to fc2bookmark | add to Yahoo Bookmark add to Yahoo Bookmark | add to Pookmark add to Pookmark

2009/11/19

はてな
ふと思いつきで書いたコードを実行してしまって死にかけた。
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <memory.h>

int main(void) {
  char *p = NULL;
  struct sigaction sa_sigint;
  memset(&sa_sigint, 0, sizeof(sa_sigint));
  sa_sigint.sa_handler = (void (*)(int))fork;
  sa_sigint.sa_flags = SA_RESTART;
  if (sigaction(SIGSEGV, &sa_sigint, NULL) < 0) {
    perror("sigaction");
    exit(1);
  }
  sleep(1);
  puts("僕は死にましぇん!");
  return *p = 0;
}
Ctrl-CとかCtrl-Zとか押しまくってようやく止めた。
良い子は真似しちゃ駄目よ。
Posted at 01:24 in ソフトウェア::lang::c | WriteBacks (0)
Tagged as: C
Bookmarks: このエントリーのtweets add to hatena add to hatena | add to delicious.com | add to livedoor.clip add to livedoor.clip | add to buzzurl add to buzzurl | add to fc2bookmark add to fc2bookmark | add to Yahoo Bookmark add to Yahoo Bookmark | add to Pookmark add to Pookmark

2009/11/12

はてな
Gyazoアプリがgithubにあがってるのを知った。
gyazo's Profile - GitHub

Gyazo is Open Source!

http://github.com/gyazo
GyazoWinならびにGyazoのLinux版にもお世話になっているので結構嬉しい。今日見たらESCキーで中断出来る様になってた。嬉しい。
よし!私もGyazoアプリ作るぞ!と思って、考えたけど結局思いついたのがこれしか無かった。

コマンドプロンプトから実行すると、コマンドプロンプトをキャプチャしてgyazoするアプリ、GyazoCmd!

mattn's GyazoCmd at master - GitHub

gyazo interface to windows command prompt

http://github.com/mattn/GyazoCmd
実行するとこんな風になります!
gyazocmd
だっ....誰得!汗
Posted at 00:47 in ソフトウェア::lang::c | WriteBacks (0)
Tagged as: C, gyazo, windows
Bookmarks: このエントリーのtweets add to hatena add to hatena | add to delicious.com | add to livedoor.clip add to livedoor.clip | add to buzzurl add to buzzurl | add to fc2bookmark add to fc2bookmark | add to Yahoo Bookmark add to Yahoo Bookmark | add to Pookmark add to Pookmark