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

BigDog

将来はこんなんが街中をかっぽするようになるのだろうか。 動きが動物っぽくてキモイのだが。

Erlang入門 その2

erlangプログラムをコマンドラインから動かす Erlang入門のサンプルに以下を追加して、標準出力に出るようにしてみる。 Erlangでは、コマンドラインからの引数は文字列のリストではなくアトムのリストであることに注意。 今回は"1423"といったように引数を1…

Erlang入門

Erlang本を入手したので学んでみる。 インストール debianだとパッケージが用意されている。 # apt-get install erlang erlang-manerlang-manは以下のようにモジュールを調べられるようになる。 $ erl -man lists 基本 _や大文字で始まるのが変数。_は/dev/n…

スピンロックとmutexの速度比較

スピンロック(spin lock)とは ロックを取得できるまでループし続ける。そのためロックを取得できないとCPUを占有し続けるので、競合が多く発生する状況下では一般的なmutexに比べて不利になる。 ただしロックの確認作業はmutexより早い。 詳しくは: スピンロ…

JavaとC#の違い

C#を急遽学ばなくなったのでC#に追加されているキーワードを軸にJavaとの違いについてまとめてみた。Javaを知っているプログラマにとっては、ざっと読めばC#の特徴について短期間で学べるのでは無いかと期待する。 尚、C#については熟練しているわけではない…

Binary Hacks

Binary Hacks ―ハッカー秘伝のテクニック100選作者: 高林哲,鵜飼文敏,佐藤祐介,浜地慎一郎,首藤一幸出版社/メーカー: オライリー・ジャパン発売日: 2006/11/14メディア: 単行本(ソフトカバー)購入: 23人 クリック: 383回この商品を含むブログ (223件) を見…

Emacs21でflymake

flymakeとはバックグラウンドでシンタックスチェックを行いエラー箇所をハイライトしてくれるとっても便利なやつです。Emacs22だと標準で入っているらしいのだが、Emacs21を使っているので手動で入れる。 flymake.elを取ってくる 最初CSVから最新のものをと…

CppUnitを使ってみる

以前はC++で開発することが良くあったのだが、昔と違って今はC++版UnitTestもあって良い時代になったもんだね。というわけで使ってみる。まずインストール。 debian 4.0では下記でインストールできた。 apt-get install libcppunit-dev libcppunit-doc Test …

Thread Local Heap

GC VM

スレッドごとにローカルヒープを持たせて、そのスレッドでnewされるオブジェクトはまずそこに入れましょうという話。 GCはスレッドローカルに行えるので、全スレッドを止める時間を最小限に出来る。ただしWrite Barrierで外部から参照されるのを検地する必要…

Pinned Object

GC VM

コンパクションを採用しているGCでは、GCの際にオブジェクトの再配置が発生する。 ネイティブメソッドをコールしている最中など、オブジェクトが再配置されては困る場合、そのオブジェクトをPinnedとしてマークする。 ただし、再配置できないオブジェクトが…

Write Barrier

GC VM

オブジェクトの更新を検知する仕組み。世代別GCでold領域からyoung領域を指すオブジェクトを探す為などに利用される。 Card Marking 領域をnバイトで区切り(Card)、そのCard内に存在しているオブジェクトに書き込まれたことをビットフラグの配列などに記録し…

GCに関連する技術をつまみ食い的に調べてみた。

Tomcat5.0でルートページをサーブレットに

http://example.com/ とかドキュメントルートでサーブレットに飛ばす方法。 http.confの設定 Apache mod_jk + Tomcat なので、http.confに以下を追加。 片方だとダメ。これですべてのリクエストがTomcatへ渡る。 (というかそれならTomcatをポート80にあげれ…

コマンドラインでsvn使う

SVNサーバのセットアップはこちら インポートする この時、インポートしておきたいファイル以外は消しとく。 svn import svn+ssh://<host-name>/var/svn/okogeimportは特定ディレクトリ以下のディレクトリやファイルを1度にリポジトリに対してmkdirやaddするためのコマ</host-name>…

Screenでヒストリ・コピー・ペースト

1. C-a [でコピーモードにする。 カーソルで、画面の上まで行くとスクロールしてくれる。 C-u で上スクロール。C-dで下スクロール 2. この後、returnかspaceキーでコピー開始もう一回押すとコピー終了 3. C-a ]でペースト関連 screenメモ - 玲瓏庵

GNU Automake

automakeはMakefile.amからMakefile.inを生成する。 Makefileはビルドやインストールなどの手順を記述したmakeコマンド用のスクリプトである。 Makefile.am bin_PROGRAMS = okoge okoge_SOURCES = main.c 試す 以下をbootstarapという名前でスクリプトにして…

GNU Autoconf

Autoconfとは autoconfはconfigure.inからconfigureなどを生成する。 configureは、環境を調べconf.hを生成するスクリプトである。 これにより、環境に対しての依存度の低いプログラムを開発することが可能になるのである。 configure.inはたとえば次のよう…

Smalltalkでmapcar

Lispのmapcarの真似事。ただ、Lispのmapcarはリストを複数個取ることが出来るんだよね。 !Vector defineMethod: input! mapcar: fn |result| result := Vector new. self do:[:el|result add: (fn value: el)]. ^result. ! ! {1.2.3} mapcar: [:el|el+3].! {…

Smalltalkの動的配列をブロックを使って実装する。

{1.2.3} とあったらこれをパーザで次のように展開するようにする。 [|r| r:=Array new. r add:1. r add:2. r add:3. r] value.実行結果 {{'a','b'}.{1+2}.4}! => {{'12'}.{3}.4}