大規模OFF管理システム

なんとなく思いついたことだけど、たまに2chとかで見かける大規模OFF会を効率良く管理・運営するシステムって需要あるのかな? とりあえず、大規模OFFの例として以下のようなものがある。それぞれの内容についてはリンク先を参照。 湘南ゴミ拾いオフ FAIR JUD…

血液型で親子判定

親子の血液型の関係をなんとなくメモ。 Parent | Child A + A | A, O A + B | A, B, O, AB A + O | A, O A + AB | A, B, AB B + B | B, O B + O | B, O B + AB | A, B, AB O + O | O O + AB | A, B AB + AB | A, B, AB 浮気性のあなたはA+Bの組み合わせで結…

bisonで生成されるオートマトンの図表示

bisonの-gオプションでvcgファイルが作れることに気付いた。VCGってのはVisualization of Compiler Graphsの略で、シンプルな(しょぼい?)graphvizのような感じ。ただ、今作ってるコンパイラの構文から生成されるVCGファイルは重くてまともに観覧出来ないの…

構文解析(だいたい)完成

構文解析は出来た。実験的に解析木を作ってみたけど、問題無し。この構文に従って書いたコードは以下のような感じになる。これは構文解析のテスト用に作った巨大ソースの一部で、プログラム的な意味は全く無い。構文的に正しいだけのソースコード。 const in…

yaccに苦戦

Scriptive-C*1の文法をBNFで書くが、どうしてもyaccが『シフト・還元が衝突』やら『無意味な非終端記号が云々』などとうるさい。いろいろいじっているうち原因が判明 /* defvar=変数宣言 */ defvar_list: defvar_list defvar ; defvar: deftype varlist ';'…

ネズミ講

最近仕事でネズミ講サービス(と、俺は呼んでいる)の一部のシステムを作っている。良く知らないが、ネズミ講と一言で言っても法律的にはOKなものも多いようで、お客さんは「いまどき、この手のネットワークサービス(俺の言うネズミ講サービス)は広く行な…

俺言語

ちょっとコンパイラ周辺の勉強をしたので、自分への課題として『俺言語』の作製に挑戦していたりする。といってもまだプロトタイプ(と呼ぶのも恥ずかしい)程度の状態で『プログラム言語』とは呼べない。で、どうせ作るならなにか意味があった方が良いのか…

 正規表現 → 非決定性有限オートマトン

http://members.jcom.home.ne.jp/j-klein/src-box/reg2nfa.y正規表現から非決定性有限オートマトン(NFA)を構築するプログラムを作ってみた。yaccの練習がてら作ってみたのだけれど、かなりばかなやり方をしてると思う。やってみて思ったのは、解析木から状…

 興奮

やばい、超かっこいいソフト発見した。これだからsourceforge.{net|jp}めぐりはやめられない。Stellarium Intro: Stellarium is a free software available for Linux/Unix, Windows and MacOSX. It renders 3D photo-realistic skies in real time. With st…

 ソース読み

最近、なにかのソースを読む時に、ソースをすべてプリントアウトして見るのに慣れてきた。というか快適。もちろん巨大なソースだと紙の無駄、インクの無駄、(関数を探したりするのに)時間の無駄で最悪だけれど、そうでなければお勧め。特に、ソフトウェア…

 リンク・メモ

本・書籍通販検索 言語処理系の本 プログラム解析について 資料 最近、見つけて嬉しかったサイトたち。【追記】 すっかり書き忘れてたけど、yaccの勉強に最適 一応大学生ですから…【情報工学実験III UNIX実験 シェル・インタプリタ】

続・yacc

yaccがちょっと分かってくると、"俺言語"を作りたい欲求にかき立てられる。で、ちょっとその欲求に流されてみると、自分がいかにyaccを使いこなせていないかを思い知らされる。cxref(C Cross Referencing & Documenting tool)の中でyacc(bison)が使われ…

Java市場

SourceForge.NETを見ていたら、Java関連のソフトウェア・ライブラリが想像以上に多いことに気付いた。software mapで見たところ、以下のような感じだった。 SorceForge.NETでのsoftware mapにおける言語別のプロジェクト数 言語 プロジェクト数 C 13,743 C++…

 ドキュメント生成ツール

C用のドキュメント生成ツールを作ってみた。今日1日(実質半日ぐらい?)で作ったのだけど、とてもとても公開出来るものじゃない。けど、今必要なものは満たしているので、良しとしよう。こう考えると、構文解析(および、コンパイラ開発)って凄いと思う。…

 更新停滞ぎみ

がんばれ、俺。

タイムマシーンに関するパラドックス

有名なのは『親殺しのパラドックス』だ。過去へもどって親を殺すと、自分が産まれないから親を殺せないってやつ。今日『タイムマシーンの作り方』みたいな名前の本を立ち読みしたらおもしろいのがあったので紹介。 ある教授はタイムマシーンの開発に成功した…

おい、Macよ

Macさんが、嫌な挙動を見せてくれた。 #include int main(int argc, char *argv[]) { int len; len = snprintf(NULL, 0, "OK"); printf("len : %d\n", len); return 1; } これをLinuxで実行すると len : 2 となる。しかし、MacOSXだと len : -1 となる。困っ…

Cドキュメント生成ツール

C用のドキュメント生成ツールいいの無いかな? とおもったらこんなページがあった。http://www.geocities.co.jp/SiliconValley/1319/dev/doxygen.html助かるなぁ。なんだかドキュメント生成ツールってみんなオブジェクト指向言語対応って感じで、C用のドキュ…

C++

STLは便利、Boostも便利、templateも便利、それは分かる*1。でも馴染めない。分からないんじゃなくて、馴染めない。「そのテンプレートは抽象クラスを使えばいらないじゃん」と突っ込みたくなる。もう少し格闘してみるか…。 *1:Boostに関してはちょっと知っ…

文芸的プログラミング!?

言葉だけはやたらと聞く「文芸的プログラミング」。あえて、見て見ぬ振りしてきたのだけど、Boost Graph Library(BGL)やらStanford GraphBase(SGB)のソースを読みたい衝動に駆られて、SGBをダウンロードしたらこれが文芸的だった。いや、びっくりしたtar…

Graphviz

Graphviz - http://www.research.att.com/sw/tools/graphviz/ Graphvizはグラフを生成/描画するソフトウェアで、doxygenのクラス継承図なんかの生成にも使われている。今までdoxygenを通して使ったことしかなかったが、実は凄い興味があった。そこで、graphv…

C++で関数呼び出しツリーの作成

以下のクラスを使用するだけで、関数呼び出しのツリーを出力できることに気付いた。 #if defined DEBUG # define __FUNCTION_TRACER(s) FunctionTracer __function_tracer(s) #else # define __FUNCTION_TRACER(s) #endif class FunctionTracer { private: s…

GNUコーディング規約

http://www.sra.co.jp/wingnut/standards-j_toc.html極度のGNU教信者というわけではないものの、無視できない存在であるGNUのコーディング規約の日本語訳。ざっと前半を流し読みしたけど、ちょっと面白い。暇なら読んでみても良いかも。例えばGNUコーディン…

C++修行中

特に深い理由もなく(本当はちょっとあるけど、書く程のことでもない)C++の勉強をしている。前に他人のC++ソース(といってもほとんどCのような感じ)を読まなくてはいけないことがあって、少し勉強したもののすこぶる中途半端だったので、再度勉強しはじめ…

BrainFuck Machine 0.9

http://members.jcom.home.ne.jp/j-klein/software/bfm/index.htmlはい、一気にアップデート。いくつか修正したい点があるが、それを直ししだい1.0にするつもり。主な変更点はBrainFuckの入力のサポート。長い出力が奇麗に出力されるようにもした(スロー/ス…

 独り言

BrainFuckを拡張して、スタックの使用とシステムコールの呼び出しを可能にすれば、実用的なものを(実用的でない方法で)作れそうだなぁ。 ~xx xxに数字を入れて、該当するシステムコールの呼び出し ^ メモリの内容をスタックにプッシュ _ スタックからポッ…

BrainFuck Machine

http://members.jcom.home.ne.jp/j-klein/software/bfm/index.htmlBrainFuck Machineなんてソフトを作ってみた。コマンドライン上でBrainFuckを実行できる。スロー実行やステップ実行も可能。cursesを使ってスロー/ステップ時には動的なメモリの変化も見える…

 へぇーへぇーへぇー…

http://d.hatena.ne.jp/another/20040114#p1

 BrainFuck2

必死に四則演算を組んでみた。なおコメント内の{1}等の数はメモリの位置を表す(例えば"{1}×{2}"は1バイト目と2バイト目の積という意味)。実行する際は{0}と{1}を初期化し、ポインタを{1}に当てておく。 # {0} + {1} => {2} [>+>+ {2} [>+>- {2}({3}はテ…

 忙しいと言いながら

BrainFuckに挑戦。 >>+>+>+>+>+>+[++++++++>]-]> +++++++++.>++++++++++.>+++++++++++.> ++++.>++++++++.>+++++++++++++.> "JKLEIN"と表示する。BFに慣れてる人にはヌルいコードなのだろうな。追記。一応解説しておくと、メモリの1バイト目は0x00でデリミタ…