Rhythm & Biology

Engineering, Science, et al.

C

libeventでHTTPサーバを試す

libeventに含まれるevhttpを使って、簡単なhttpサーバを作ってみました。 404を返す まずは404 not foundを返すコードを書いてみます。ただし、GET以外のメソッドの場合はBad Requestを返すようにします。 #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <event.h> #include <evhttp.h></evhttp.h></event.h></errno.h></stdlib.h></stdio.h>…

libeventでタイマー処理をする

libeventでタイマー処理をする方法について書きます。 まずは3秒後に指定の関数を呼ぶコードです。 #include <stdio.h> #include <sys/time.h> #include <event.h> void say_hello(int fd, short event, void *arg) { printf("Hello\n"); } int main(int argc, const char* argv[]) { struc</event.h></sys/time.h></stdio.h>…

libeventでechoサーバをつくってみた

memcachedで使われていることで有名なlibeventを試してみました。 以前libevを試したことがあるのですが、libeventの方が少し書きやすいという印象です。パフォーマンスに関してはlibevのほうが上という噂ですが。libeventやlibevに関して少し説明しておくと…

CからGraphvizを使う

perlだとGraphvizモジュールがあったり、C++ならBoost::Graphがあって、情報も調べればすぐに出てくるのですが、Cから使う場合に関しては公式ドキュメント以外にあまり見かけない気がします。そこで今回、Cからgraphvizのライブラリを使う方法に関して簡単に…

perlの実行時間計測とInline::Cのすごさ

研究として数値計算をやることが多いのですが、やはり実行時間が気になってしまうものです。 perlに限らず、スクリプト言語はやはり速度面でのネックがありますが、まずは実行時間を計測してどれぐらい遅いのかを知りたいと思いました。簡単な数値積分(Euler…

change the entry point

C

C言語をはじめ習うときには、 #include <stdio.h> int main(void) { printf("Hello World\n"); return 0; } なんて書かされますね。そして「どんなプログラムでもmain関数からはじまる」と教えられます。でも、 #include <stdio.h> __attribute__((constructor)) void first() </stdio.h></stdio.h>…

Inline::C

perlの中でCが書ける、そう聞いただけでワクワクします。 自分の専攻だと、どうしても実行速度を気にしてしまいます。Cで書いても実行に1日かかるようなものが多いので。楽したいところはperlで、カリカリにチューニングしたいところはCで、なんて住み分けが…