2009-12-01から1ヶ月間の記事一覧

商鞅Bot作りました

法家思想を基に秦の改革を進め、秦の天下統一の礎を築いたことで有名な商鞅のtwitter botを作りました。 商鞅のtwitter bot 朝7時30分に一回だけ呟きます。 「商君書」で検索しても書き下し文が出て来ないので、読みずらい漢字には振り仮名を振りました。 な…

孫子bot作った

『孫子』のtwitter botを作りました。 『孫子』のtwitter bot 朝7時に一回だけ呟きます。 基本的に書き下し文ですが、たまに日本語訳も付いています。日本語訳が流れるのは次の日になりますが・・・。 余裕ができたら、話しかけられたときにランダムに文章を…

三略bot作った

「柔よく剛を制す」で有名な『三略』のtwitter botを作りました。兵法が好きな人はどぞー。 『三略』のtwitter bot 朝8時に一回だけ呟きます。 基本的に書き下し文ですが、意味が分かりづらそうなものには日本語訳を付けました。日本語訳が流れるのは次の日…

twitterのfollowing、followersを得るスクリプト

twitterから簡単にfollowing、followersの一覧を得る方法として、Rがあるようです。 iGraphでTwitterのネットワークを表してみる igraphでTwitterのネットワークを描いてみる2 しかし、100人までしか取得できないし、僕自身がRに慣れていないので、自分でス…

すかすかの配列から効率良く全要素を取り出す

一番右端に立っているビットの位置を求めるアルゴリズムが載っていました。http://d.hatena.ne.jp/siokoshou/20090704#p1 http://chessprogramming.wikispaces.com/BitScan#DeBruijnMultiplationまさしく黒魔術!良くこんなの思いつくなぁ、と感心する事しき…

自動拡張する文字列用バッファ

GString #include <glib.h> typedef struct { gchar *str; gsize len; gsize allocated_len; } GString; GString* g_string_new(const gchar *init); GString* g_string_append(GString *string, const gchar *val); GString* g_string_prepend(GString *string, con</glib.h>…

ガーベージコレクタ

メモリリークの問題に悩まされている人は多いと思います。ガーベージコレクタを使うと、メモリ管理の煩わしさから解放されます。 Boehm GC #include <gc/gc.h> void GC_INIT(void); void *GC_MALLOC(size_t size); void *GC_MALLOC_ATOMIC(size_t size); void *GC_REA</gc/gc.h>…

DNS

djbdns #include <djbdns/dns.h> void dns_random_init(const char seed[128]); int dns_ip4(stralloc *out, const stralloc *fqdn); int dns_name4(stralloc *out, const char ip[4]); int dns_mx(stralloc *out, const stralloc *fqdn); djbdnsに含まれているライブラリ</djbdns/dns.h>…

自動拡張する配列

GLibには自動拡張する配列があります。要素の追加、削除が容易に行えます。 GArray #include <glib.h> typedef struct { gchar *data; guint len; } GArray; GArray* g_array_new(gboolean zero_terminated, gboolean clear_, guint element_size); #define g_array_</glib.h>…

ハッシュテーブル

glibcのハッシュテーブル #include <search.h> int hcreate(size_t nel); ENTRY *hsearch(ENTRY item, ACTION action); void hdestroy(void);nelでハッシュテーブルに格納できるデータ数の最大値を設定します。 キーには文字列しか使えません。 hdestroy()を呼ぶとハッ</search.h>…

一行入力

getline()、getdelim() #define _GNU_SOURCE #include <stdio.h> ssize_t getline(char **lineptr, size_t *n, FILE *stream); ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream);Linuxで使える関数です。 getlineはstreamから一行読み込み、*li</stdio.h>…