2008-11-01から1ヶ月間の記事一覧
マイクロスレッドの比較対象のひとつとしてlua5.1を使ってみたけど、Luaって最近の言語と比べて結構独特な部分が多いなと思いました。以下、はまったところ: Tableを配列風に使うときの開始インデックスは1であることを忘れる Tableの存在しないインデックス…
http://b.hatena.ne.jp/bellbind/ http://b.hatena.ne.jp/entry/http://www.reddit.com/r/programming/comments/7fcaq/oo_programming_why_traits_rule_and_mixins_and/
新しいはてブは一覧ページでも本文を埋め込むようになったけど、どうもこの本文はノイズが多すぎて、一覧性にも支障があるので、Stylishを使ってユーザーCSSで消すことにしました。タグで絞り込むと非表示表示を切り替えられるのに、絞り込まないとそれがな…
rails風にwebアプリを作成できる話題のmerbを使ってみました。 インストール すでにgem,rails,mongrelが入っているcygwin上にいれてみました*1。まずはgemの更新 gem update gem cleanそしてmerbを入れる gem install merb入ったのはmerb-1.0.1でした。デフ…
linux上でgcc-4.3を使った場合。違いはptr型、long、long double、size_t、time_tなどで起こる。 x86 sizeof(int) = 4 sizeof(void *) = 4 sizeof(size_t) = 4 sizeof(ptrdiff_t) = 4 sizeof(wchar_t) = 4 sizeof(void) = 1 sizeof(clock_t) = 4 sizeof(time…
fgetcで書ければ、freadで書ける - ラシウラでは、fgetcからfreadを使うように変えました。これは機械的に変換しただけでしたが、ここからつぎは1文字づつコピーしている部分を、memcpyを使用して、ブロック単位でコピーするように変えてみましょう。 まずリ…
初心者では、fgetcで一文字づつ処理するコードは記述できるのに、バッファを使うfreadで書くのに悩む人もいます。単純にfgetcで一文字づつ処理するコードは、以下のような形になるでしょう for (;;) { int ch = fgetc(file); if (ch == EOF) break; ... } こ…
PythonでのDSL風記述に挑戦するため、PythonでのProlog風のソルバーを作ってみました。エンジンの実装は、 合併のお知らせ|OKIソフトウェア をベースにしています。PythonでPrologのDSLをやってるものとしては、以下のものがありました: http://code.active…
Cが使えると自称する人で、本当にC言語の意味を理解できてる人はわずかだったりします。というかリファレンスマニュアル等を見たことが無い人も多かったりするし、かれらが参考にしたリソースが仕様を理解して書かれているかどうか怪しいものも多い。実装が…
配列シャッフルをC言語(ISO C89)で書くと以下のようになります: #include <stdlib.h> #include <math.h> #include <stdio.h> static void shuffle(const char ** const array); static void swap(const char ** const array, int i, int j); static const char * names[] = { "taro", "j</stdio.h></math.h></stdlib.h>…
配列のソートはいまさらいうまでも無いアルゴリズムですが、なぜか最初にくるアルゴリズムがバブルソートだったりするのはなぜでしょうか。正直バブルソートは直感的にわかりにくいと思います。比較的わかりやすいのは選択ソートだと思います。「一番小さい…
風邪で寝てるあいだ、頭痛な頭でなぜか配列のシャッフルするアルゴリズムのことを思い出し、乱数と使い方の落とし穴について考えてました。シャッフルは、たとえば輪読の順番を決めるときにつかいます。名簿を最初あいうえお順に並べて配列に入れておいてシ…
実行すると自分自身のコードを吐き出すプログラム。こういうのってなんていうんだっけ。自己複製? コード→文字列の変換のエスケープが不要になるrubyが一番作りやすくて、しくみも理解しやすいかも。注意したところは、改行文字を直接使わないようにしたこ…