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

なぜかCairo

Cのポインタと構造体の練習として、スタック、キューに続いて連結リストを作ってみようと思った。ちょろっと書き始めてみたところ、何だか思ったよりも関数の個数が必要で大がかりなので、無味乾燥な例ではやる気にならない。せっかくやるなら、少しぐらいは…

キューを書き直し

構造体の基礎練習だと思って書いてみた、Cでキューを実現するコードには、色々と基本を踏み外していたところがあるらしいので、書き直してみた。 #include <stdio.h> #include <stdlib.h> #define FULL -1 #define EMPTY -2 typedef struct { int len; int index; int line[1]; </stdlib.h></stdio.h>…

キューをCで

長さがあらかじめ分かっていない配列を含む構造体でも、1度にメモリ確保できるというので(これ)、今度はスタックじゃなくてキューを作ってみた。キューはリング状にしてデキュー時のスライドという無駄な処理をなくすのが常套手段のようだけど、ひとまず効…

__send__メソッド

以前、デジカメ写真の取り込みスクリプトで、ファイルをcpするかmvするかをオプションで切り替える処理を以下のように書いた。 if Options[:copy] || Options[:move] f = Proc.new {|src,dest,opt| case when Options[:copy] FileUtils.cp(src,dest,opt) whe…

スタックをCで

やっぱり世の中はCでできてるんじゃないかという気がして、少しCをやってみた。構造体とかポインタの練習に簡単なスタックを作ってみた。 #include <stdio.h> #include <stdlib.h> typedef struct { int size; int ptr; int *stk; } Stack; int Allocate(Stack *s, int size){ s</stdlib.h></stdio.h>…

スレッドで読み込み

Rubyのスレッドは並列実行はサポートしていないので、CPUバウンドなボトルネックに対しては効果がないけど、IOバウンドなものに対しては有効だという話。Wikiquoteはネットワークが遅いので、やってみた。シンプルで分かりやすい。 #!/usr/local/bin/ruby re…

キャッシュ対応のWikiquote

Wikiquoteから1つ引っ張ってきて表示するスクリプトを書き換えた。毎回ネットワークにアクセスするのもバカらしいので、1度に持ってこれる5、6個の引用(HTMLで1枚分)を~/.quotesに保存するようにした。このファイルに引用が存在する限り、ネットワークに見…