2007-01-01から1年間の記事一覧

更新

http://kilrey.comを更新した。主にプログラミング入門以前の項を書き足した。 プログラミングの入門では「プログラミングをして何の役に立つのか」というところが書かれていないことが多い。結局のところ一般に勧めるにはある程度の利益を提示するしかない…

更新

Web

http://kilrey.com/も更新した。まあ今日書いたわけではないけれど、プログラミング入門以前ということで「コンピュータをうまく使うにはプログラミングを学ぶと良いよ」という内容で書いた。しばしば技術的な方向に脱線しているのはごめんなさい。 あとアー…

結局Vにした。

というわけでhttp://roguesource.web.fc2.com/を更新しました。angband-3.0.6のソースコードも閲覧出来るようになりました。日本語化はしていませんので注意。 Vにした理由は大本だからという程度だけど、Lua関係のコードにはちょっと興味があったり。

改修

Web

http://kilrey.comの設計をだいぶ直した。 URLから項目名を辞書引き ページの上下にパンくず ローカルでも見れる というところ。Smarty依存性が余計に高まった。 http://kilrey.com/angband/r_info.html,http://kilrey.com/angband/r_info2.htmlに生データを…

超スマートポインタ

マルチスレッド版のテストコードを書いてみた。とりあえずテストを通らなかった。まあろくに排他していないから仕方ないか。 いまいちまだ排他する箇所が判っていない。とりあえずリンクを増減する部分とRCなどのパラメータを参照する部分を排他するつもり。

超スマートポインタ

例の論文を帰りの電車内で読んでいたら擬似コードの間違い箇所が判った。もとのから二箇所直せば正しく動くようだ。 で、とりあえずコードを書いてみた。たくさんのノードにたくさんのリンクを乱数で張ってまとめて回収するテストコードも通ったし。 あとは…

ソース閲覧所

アップロード時に壊れたファイルがないかどうか調べ終えた。実際にしたことはftpで全部ダウンロードしてdiffを取っただけなのだけど。作業が簡単な割に時間がかかった。fc2webのサーバは回線があまり太くないのかもしれない。その結果、二つのファイルが壊れ…

AdSense

せっかくドメインを取ったので、試しにGoogle AdSenseに申し込んでみた。そうしたら審査に通ってしまった。namespace kilrey;の下にある広告がそれ(上にあるのはxreaの広告)。 いや、ドメイン代にも届かないのは判っている。むしろサイトの更新を止める前に…

閲覧所

昨日の日記の通り、globalの出力をどこに置くか考えた。容量が十分大きくアップロードの手間が少ないサーバがあれば良いのだ。sourceforgeはコミット権が必要のようで、駄パッチ作者がWebのみでもコミット権を貰うのは気が引ける。 で、検索してみたらfc2web…

global

GNU globalを使ってソースコード閲覧用htmlを作った。xreaにアップしようとしたらうまく行かない。もしやと思ってdu -hsしたら97Mbyte。収まるわけがない。 変愚蛮怒は生ソースで6Mbyteくらいだから15倍以上に膨らんだということになる。設定を変えたらもっ…

つい勢いで

独自ドメインを取ってみた。サーバもxreaの無料プランを借りてサイトも移転した。ちなみに維持費は年間990円。 http://kilrey.com/ xreaはかなり自由度が高いようなので選んだ。CGIの負荷に制限があるという話も聞いたので、たぶん大丈夫だと思うが、しばら…

検索CGI完成

r_info.txtを検索するCGIが完成した。UIにはクエリ入力版(http://kilrey.com/angband/r_info.html)とフラグ選択版(http://kilrey.com/angband/r_info2.html)を用意したのでどうぞ。 - ちょっと修正。JavaScriptを使っている注意書きも付けた。

Embedded C++

組み込みのプログラミングもすることになりそう。その関係でEmbedded C++というのを聞いた。C++から仕様を削って作ったものらしい。新しい部分は皆無なので言語マニア的には全く面白くないのだが、触れる可能性があるのでちょっと見てみた。 http://www.cara…

検索スクリプト

訳有ってperlを使うことになった。$,@,%の接頭辞が気に入らないがそれはまた別の話。で、練習がてらr_info.txt検索スクリプトをperl化してみた。あとでcgiにするつもり。

変愚ソースを読む6

racial.cの次はmind.cとmindtips.hだ。魔法以外でmで使う能力のうち独立ファイルになっていないものが記述されている。要するに超能力や錬気術など。 mindtips.hは各能力の説明を格納している。あまり特筆すべきことはない。mind.cはまずmind_powers変数に各…

自前rwlock

とりあえず前出のRWLockを実装してみた。基盤はboost::mutexとboost::conditionを使った。boostにした理由はあまりないけれど強いて言うならば比較的標準に近いというのが理由だろうか。LinuxだけでなくWinでも使えるようになったわけだし。ただし、速度は考…

排他まだ続く

rwlock_tの状態を見るためにtryrdlock()するのは良くないのかもしれない。wrlock()した際にスレッドIDを記録すればtryrdlock()せずとも確認が出来る。こちらの方がスマートかも。 でも、Winでrwlockがないという問題は如何ともしがたい。自前のrwlockを書い…

もう読んだ

http://www.horobi.com/tips/SmartLock/ javaのsynchronizedを使ってrwlockを実現する例があった。大まかな実装の仕方は聞いたことがあったが、コードになっていると判りやすい。それにしてもjavaは読みやすくて良い言語だ。

排他ほぼ完成か

void read1() { int ret; while (ret = tryrdlock(&rw)) { if (ret==EDEADLK) { break; } else { //エラー処理 } sleep(100);//適当に待機 } //排他でのread作業 if (ret!=EDEADLK) { unlock(&rw); } } void read2() { int ret; if (!(ret = tryrdlock(&rw))…

変愚ソースを読む5

今回はracial.cを解説する。特徴的なレイシャル(クラス)・パワーがあればそれだけでキャラが立つだろう。その意味でここは改造のしがいがある。 関数名 説明 bool do_cmd_archer(void) アーチャーの矢弾の生成 bool gain_magic(void) 魔道具術師の魔力の取り…

変愚ソースを読む4

システム面で重要な部分としてvariable.c, extern.hがある。ここで扱っているものはゲーム全体に影響するデータ、要するにグローバル変数である。 グローバル変数の本体はvariable.cで定義し、そのextern宣言だけをextern.hに記述する。他のファイルでグロー…

REPL

Read-Eval-Print-Loop。 CでもC++でも入力を即時コンパイルして動的ロードすればREPLになるよなと思った。でも検索したら似たようなものが既にあった。良いアイディアだと思ったのだけどな。

排他をさらに

考え直してみたら、一度tryrdlock(&rw)とtrylock(&m)に失敗したスレッドではもうtrylock(&m)を試す必要がなかった。つまり void read() { int rdlockerr = tryrdlock(&rw); if (rdlockerr && trylock(&m)) { rdlockerr = rdlock(&rw); if (rdlockerr) { //エ…

排他の仕方

昨日書いた疑似コードだとwrlock中にreadに来たスレッドが全てlock(&m)で待機するため、循環検出の終了待ちスレッドが多いとスループットが一時的に悪化する。これを改善するためにはmutexが獲得出来なかった場合にただ待機するのではなく、再度rdlockしよう…

変愚ソースを読む3

前回はデータ構造を扱ったので今回はそのセーブ・ロードを扱う。データ構造を変えた場合は初期化・セーブ・ロードを合わせて変えないとほぼバグが発生するので注意。 save.c 関数 セーブ対象 void wr_item(object_type *o_ptr) 個別のアイテム void wr_monst…

変愚ソースを読む2

次は構造体、types.hだ。改造するときに使いそうなものをざっと見て行くと、 構造体 設定ファイル 説明 feature_type f_info.txt 地形について object_kind k_info.txt アイテムの種類について artifact_type a_info.txt アーティファクトについて ego_item_…

変愚ソースを読む1

まず初回はライセンスだ。 /* * Copyright (c) 1989 James E. Wilson * * This software may be copied and distributed for educational, research, and * not for profit purposes provided that this copyright and statement are * included in all such…

読者

そう言えばここの読者って半数以上RDL2経由なのだよね。*1プログラミングねたばかりが続いて申し訳ない気もする。なので、ちょっとRDL2向きの特集を組んでみようと思った。「変愚ソースを読む」だ。変愚は癖のない(adhocは多数ある)ソースなので解説もしやす…

再帰読み書き

超スマートポインタの話の続き。 今回の条件をより正確に書くと 循環検出と循環検出は排他する。 ポインタaの参照上げ下げとaの参照上げ下げは排他する。 異なるポインタa, bについて、aの参照上げ下げとbの参照上げ下げは排他しない。 スレッドXが循環検出…

初心者向けの

先日、プログラミング未習熟な人に「初心者向けのプログラミング言語って何か良いのありますか?」と聞かれた。「とりあえずjavaで」と答えておいたが、実際のところどうだろう。java,ruby,python,javascriptで考えてみた(perl,phpはパス)。 入門者(とりあえ…