ウォンツテック

そでやまのーと

2007-03-01から1ヶ月間の記事一覧

学校では「その通り」とか「全くそう思う」とかはexactlyとかを習ったけどニュース、映画、ドラマでは必ずといっていいほど「absolutely」を使う。 否定する場合も「absolutely not」などを使う。

ap_process_http_connectionの処理に戻ってap_read_requestをした後のwhileの中を見てみる while ((r = ap_read_request(c)) != NULL) { c->keepalive = AP_CONN_UNKNOWN; /* process the request if it was read * without error */ ap_update_child_status…

多倍長整数を32bitのunsigned long値を要素とするvectorで管理するのだけれども、演算した際の桁あふれをどう扱うか考えてみた。まずCPUのレジスタにアクセス出来るならばフラグレジスタのCFビットを検査し、桁あふれが起きたかどうかを確認する事が出来る。…

多倍長整数の乱数を生成する方法についてもう少し詳しく考えてみた。 生成した乱数を桁数をLとする 種を生成する(srand(),rand()を16回行い64バイトの整数を生成) 種を初期カウンタ値としてセットする while (true) { カウンタ値をハッシュ関数(md5)にかけ…

昨日の続き ap_read_request /server/protocol.c apr_brigade_destroy(tmp_bb); r->status = HTTP_OK; /* Until further notice. */ brigadeのtmp_bbを削除してstatusをHTTP_REQUEST_TIME_OUTからHTTP_OKに変えている。requestをget出来たのでHTTP statusコ…

ランダムな素数を作るためにまずランダムな整数を作る必要がある。(ランダムな素数はその整数が素数かどうかを調べ、素数が見つかるまで繰り返す方法を取る) そこでランダムな整数を作る方法にはどんなのがあるかというと以下の方法があるらしい。(擬似乱…

apache reading さて、今日からはgdbを使って実際に動かしながらapacheのソースを読む事にしたのでまずはgdbでapache探索出来るように下準備をする。http://httpd.apache.org/dev/debugging.html まずはgdbで使うsymbol infoが埋め込まれた実行ファイルが必…

年代と金は向こうの方式で認識した方がいい。 例えば1997年とかは「千九百九十七年」といった認識ではなく「十九 九十七」でこれをそのまま認識する(頭の中で千九百九十七に変換しない)。お金も同様に$20billionは「20にビリオンでドル」なんだなっていう…

前回平文を1バイトずつ暗号化すると書いたけど、これだとECBといわれる方式であり単なる巨大な変換表を作成するだけとなってしまうので、CBCというわれるブロック方式を採用する。CBC(Cipher Block Chaining)の概要を書くと以下のようになる。 平文をRSAで使…

STLの勉強をするのにただつまらないコードを書いてもあれなのでRSAの暗号アルゴリズムによるkey(公開鍵、秘密鍵)の生成とファイルの暗号、復号化のコードを書いてみようと思う。 ざっくり調べてみたところRSA Algorithmとその周辺には以下の要素がある。 1…

/server/util_filter.c フィルターの実装を見てみる。まずはフィルター名の格納方法から typedef struct { int c; filter_trie_node *child; } filter_trie_child_ptr; struct filter_trie_node { ap_filter_rec_t *frec; filter_trie_child_ptr *children; …

bucketのheapに関する操作 heap_bucket_read static apr_status_t heap_bucket_read(apr_bucket *b, const char **str, apr_size_t *len, apr_read_type_e block) { apr_bucket_heap *h = b->data; *str = h->base + b->start; *len = b->length; return APR…

・write関連続き apr_brigade_writev APU_DECLARE(apr_status_t) apr_brigade_writev(apr_bucket_brigade *b, apr_brigade_flush flush, void *ctx, const struct iovec *vec, apr_size_t nvec) struct iovec *vec全てをbrigade(bucket)に書き込む関数で主に…

STL勉強メモ 汎用アルゴリズムとかのfindとかfind_ifとかadjacent_findとかに渡す引数でconst_iteratorとiteratorを混ぜてはいけない。たとえば以下のようなのはerror vector vec; ... vector::const_iterator i = vec.begin(),j; j = adjacent_find(i, vec.…

Cricket 日本人はたまに映画なんかでちらっと見る事が出来るスポーツ「クリケット (cricket)」ってUSとかイングランド植民地圏(だった国)では恐ろしく有名なスポーツっぽい。CNNとか見てるとbaseballより盛んじゃないの?って気がする。パキスタンのcricket…

strにbucketのデータ位置をセット

apr_bucket_immortal_make apr_bucket_immortal_create apr_bucket_transient_make apr_bucket_transient_create apr_bucket_allocでbucket領域を確保し、初期化を行う const apr_bucket_type_t apr_bucket_type_immortal = { "IMMORTAL", 5, APR_BUCKET_DAT…

bucketメモリ操作関連 apr_bucket_simple_copy APU_DECLARE_NONSTD(apr_status_t) apr_bucket_simple_copy(apr_bucket *a, apr_bucket **b) apr_bucket_allocを呼び出し*bにセットしている。 apr_bucket_simple_split apr_bucket_simple_split(apr_bucket *a…

/srclib/apr-util/buckets/apr_brigade.c apr_buckets.hで宣言されていたbrigadeの操作関数郡 APU_DECLARE(apr_status_t) apr_brigade_cleanup(void *data) { apr_bucket_brigade *b = data; apr_bucket *e; while (!APR_BRIGADE_EMPTY(b)) { e = APR_BRIGAD…

/srclib/apr-util/include/apr_buckets.h からbucket操作関数の概要メモリ確保開放用関数 APU_DECLARE_NONSTD(apr_bucket_alloc_t *) apr_bucket_alloc_create(apr_pool_t *p); APU_DECLARE_NONSTD(void) apr_bucket_alloc_destroy(apr_bucket_alloc_t *list…

/srclib/apr-util/include/apr_buckets.h struct apr_bucket_type_t { //このbucketのタイプ名 const char *name; //このbucketが理解出来る関数の数. 5未満は駄目 int num_func; //bucketがメタデータを含んでいるかどうか enum { APR_BUCKET_DATA = 0, APR…

今日からapacheのコード(httpd2.2.4)を読んで行き、メモ代わりにブログに書こうと思う。 まずはAPRの基本構造であるAPR_RINGから。 APR_RING srclib/apr/include/apr_ring.h #define APR_RING_ENTRY(elem) \ struct { \ struct elem *next; \ struct elem *p…

正規表現コーディング完了。 ./RegeX '(a*|b+)de(f|c)' adef こんなんとかちゃんと認識してくれた。(adefは左記の正規表現を満たす) いやー ちゃんと動くと楽しいねやっぱ。 NFAからDFAへの変換メイン部は以下の感じ void DfaClass::nfaToDfa(NfaClass& nf…

DFAのコーディング完了 ε遷移をDFAの状態に追加する部分がちょっとおかしいのでデバッグ中。

NFAからDFAへの変換アルゴリズムを以下のように変更 ※「状態」と単体で書いた場合はDFAの状態とする Dtrans ... nnodeの状態番号のリストを保持させる Dnode .... 二つの状態を表しそれをe_node, e_transitionとし、それぞれ、「DFAの状態」と「その状態から…

昨日の続き。 NFAのdtransからdnodeへの変換は以下のようにした void NfaClass::setTransToNode() { for (int i=0; i<ntransNum; i++) { int from = ntrans[i]->from; if (nnode[from] != NULL) { // create new Nnode, and set to next link of nnode[i]. Nnode* newNode = new Nnode(); newNode->ch </ntransnum;>…

前回のコーディングでntransというNFA用のデータ構築まで出来、次はnnodeという状態番号を元にしたデータを作成し、その後DFAを構築する。 まず、NFAのntransからnnodeへの変換を考える。 struct Nnode { char ch; int to; Nnode* next; } *nnode[MAX]; nnod…

STLの勉強メモ 入力反復子 InputIterator 出力反復子 OutputIterator 前方向反復子 ForwardIterator 双方向反復子 BidirectionalIterator ランダムアクセス反復子 RandomaccessIterator 挿入反復子 insert_iterator back_insert_iterator ⇒ back_inserter(Co…

gtagsをemacsで使えるようにgtags.elをemacsのパスが通る場所にコピー cp /usr/share/gtags/gtags.el /usr/local/share/emacs/site-lisp/ その後に~/.xemacs/init.elに以下の設定を追加 (autoload 'gtags-mode "gtags" "" t) (setq gtags-mode-hook '(lambda…

xemacsでdiredがずっと使えなかったのだけど、以下の設定で使えるようになった。 [~/.xemacs/init.el] (setenv "LC_ALL") (setenv "LC_TIME" "C")

前回考えた擬似コーディングを元にNtrans表の作成までをコーディング。nfa.h #ifndef _NFA_INCLUDE_CHECK #define _NFA_INCLUDE_CHECK #include <iostream> #include "regex.h" const int NTRANS_MAX = 128; const char EMPTY = -1; struct Ntrans { char ch; int to; </iostream>…