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

統計

利用者のブラウザ統計のトップがFirefoxだった。*1確かにJavaScriptページではFirefoxを勧めているし、Greasemonkey関連のページに来る人は全てFirefoxだろうけども、だからといって検索CGIに来る人たちまでFirefoxを使うようになるとは考えがたい。というこ…

検索CGI

Web

検索CGIを更新した。検索対象が選べるようになった。今検索できるのは変愚蛮怒-1.7.0とXangband-1.2.0。他のは要望があれば追加するということで。 http://kilrey.com/angband/r_info.html http://kilrey.com/angband/r_info2.html http://kilrey.com/angban…

Google Analytics

Web

特に書いていなかったけど、Google Analyticsを入れている。大した人数が見に来ているわけではない ここ ->[http://kilrey.com/:title]というのが大半と思われる">*1のだけど色々判ることがある。例えば人気のあるページはトップと検索CGIだ。トップは通路の…

復旧

ソース閲覧所はローカルから少しずつアップロードし直してみることにした。全消しではないのだから、何かの手違いかもしれない。

ソース閲覧所

あうー。幾つかファイルが消されている風。別に規約違反ではないと思うのだけど、ファイル置場として使っているとみなされたのだろうか。

更新

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…