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

分散レイトレースベンチ改

前回の分散レイトレースは、ピクセル毎にプロセスに依頼を出して結果を受け取るという 実装だったためメッセージが多すぎで分散による並列の恩恵を受けることができなかった。 これを改善するため行毎に依頼を出す方式に改めた。 結果はこんな感じ。いちおう…

分散レイトレーシング実験

分散版のレイトレースベンチができたので実験してみた。ローカルマシン1並列 (xp1@192.168.0.10)23> timer:tc(dist_ray, start, ["tmp.bmp", 200, 3, [node()]]). waiting for boot servants...['xp1@192.168.0.10'] start rendering[<0.113.0>] finished! {…

分散プログラミング

1台のマシンでのマルチコア並列のようにプロセスを大量生産して、 さばくのはシステム任せというわけにはいかないのに気づいた。 処理をどう割り当てるのかを制御するスケジューラみたいなものが必要です。 今回はレイ一つ毎にプロセスを作るのではなく、 コ…

レイトレースベンチの並列テスト

プログラミングErlangの20章にlists:mapを置き換えるだけで並列化できますよ、 と書いてあったのでやってみた。置き換えたのはこのレイを飛ばす部分。 % オーバーサンプリング(N x N倍サンプリングして平均する) sampling({PIXEL_X, PIXEL_Y}, Scene, N, GET…

レイトレースベンチ完成

シャドウレイの判定を作っているところで、いろいろ間違っている部分が発覚して直すのに手間取ってしまった。 後ろ向きにレイートレースしていたりとか、 画素の順番がおかしかったりとかいろいろな罠にはまった。 リスト内包表記で複数のリストを組み合わせ…

ベクトル計算

レイトレースベンチの移植の続きをしていたのだけど、 ベクトルの和にすらパターンマッチで[X, Y, Z]=LISTという感じで展開してから 個々に計算するという状況に強いストレスを感じたので一旦作業を中断して他の方法を調べた。 lists:zipとリスト内包表記の…

レイトレースベンチを移植中

とりあえず知っている範囲の構文を使ってやっつけで書いてみた。 まだ未完成だけど更新。 あたらしい言語なのでわりとデバッグに苦労してしまった。 最大の落とし穴はlists:nthが1originなこと。VBかw あとは3要素ベクトルの操作をリスト内包表記で書こうと…

DIBを作ってみる

32bitのDIBを出力する実験。真っ白だけど。 -module(write_test). -export([write_list/2, create_dib32/2]). % リストをファイルに出力 write_list(F, L)-> {ok, IO}=file:open(F, [write]), io:put_chars(IO, L), file:close(IO). % ビットマップイメージ…

レイトレ作成開始

前回書いたビットマップ出力をリライトしつつレンダラの一番外側の枠を作った。 各ピクセルのリストにmap関数でray_shooting関数を適用するとRGBAのリストになるという寸法。 処理の本体たるrenderer:rayshooting/1はただのスタブで常にRGBA(0,0,0,0)を返す…

Erlangはじめました。

先日、家に積んであったErlang入門を何となく手に取ったら今の興味に合った 言語だったので非常にやる気が出た。 Gauche本もHaskell本も途中までしか読んでないが、 Erlangいいよw 本自体は、薄かったのでさくっと斜め読みして改めて分厚い本も入手してきた…

こんなとこまでスパムが来るのか・・・

とりあえずトラックバックを消しといた

出先からmp3を聞けるようにしてみた

出先からストリームでmp3を直接聞くべくセッティングしてみた。 はじめはshoutcastを使おうとしていたのだが、これは頓挫(Linuxのサーバのみで完結する方法がわからなかった)。そこで、類似のicecastを使ってみることにした。まずサーバをインストール。 # …

指定したキーワードでGoogleNewsを購読するプラグインを作ってみた

ここのところしつこくplaggerを弄っていたのだけど ようやく安定して運用できるようになってきました。 長い道のりだった。 仕組みも多少わかってきたのでGoogle News(RSS)用の Subscriptionプラグインを書いてみた。 package Plagger::Plugin::Subscription…

gmailで遊びすぎた

ぎゃー Plagger::Plugin::Publish::Gmail [error] Error while sending emails: Data failed: 550 5.4.5 Daily sending quota exceeded.

use utf8で嵌まる

$args->{content}=~m/(.*)…

正規表現の使い方メモ

perlとかrubyと比べて若干使いにくいpythonの正規表現についてメモ。 とりあえずはmatchじゃなくてsearchを使う。 繰り返しが入る場合は、findall。 場合によってはsubをコールバックと一緒に使う。 import re # -*- encoding: utf-8 -*- html=""" <html> <head> <title>サンプル</title></head></html>…

ひさしぶりにPlaggerを復活させてみた

昔よりインストールは楽になっていてgentooの場合 # emerge g-cpan # g-cpan -i Plagger で一応はインストールできた。ただ、このままだと動作時に足りないライブラリがあった。 追加で以下のものをいれた(うろ覚え)。 # g-cpan -i HTML::TreeBuilder::XPath…

boost::spiritに手を出してみる

c++

噂に違わぬ変態ぶりに感動しつつ、mqoを読むだけの実験コードを書いてみた。 これはいいものだ。 bison, flexの勉強しないといかんなぁと常々思っていたのだが むしろこっちの方が使うの簡単だし申し分ないです。http://luxla.net/project/mqo のblenderのmq…

UTF-8のbomに悩まされる

何故かvimがutf-8で保存したときにbomを付加するようになってしまい、 そのせいで正規表現がうまくマッチしないのに悩まされた。 とりあえずutf-8のBOMを削除するコード。 text=open('utf8.txt').read() import re re_bom=re.compile('^\xEF\xBB\xBF') text=…

文字コード変換

c++

時々必要になるんだけどいつも忘れて調べなおすのでメモ。 WindowsではAPI、それ以外ではiconvが環境に備わっているのでそのまま使える。 ただ、WindowsAPIはcp932とutf8とucs2?くらいしか使えないのでそれ以外が要るときはなんか用意する必要がある。 icon…

コードがはみ出すので横に長いデザイン変えた

長い行をインデントの文句を言われないように分割する

()で囲んでおくことと見つけたり。 long_long_string=( # この括弧でindentを無視する。隣あう文字列は勝手に連結されるので+無しでも可 "long long long very long long long long long long string" + "long long long very long long long long long long…

追加パッケージを使う時のメモ

新しいマシン環境でいつも忘れるので手順を書いておく http://peak.telecommunity.com/DevCenter/EasyInstall から ez_setup.py をダウンロード。 > python ez_setup.pyと実行。 windowsなら C:\Python25\Scriptsにpathを通しておく。コマンドラインで > eas…

valarrayを使ってみようかと

c++

数値演算とか行列向きの低レベルなコンテナ(STLではない)らしいvalarrayを使ってみたかったので使ってみた。 試しに浮動小数点の頂点配列を想定した配列に行列をかけるのと行列同士の積をやってみた。 要するに内積。 いつの間にかvalarrayの嬉しさの中心た…

puttyでscreen起動時にWindowサイズが勝手に変更される件

cui

Connection-DataのTermial-type stringをvt100とかにすれば回避できるのだが カラー表示ができなくなるなどの弊害もあるのでいい方法を探していたのだが、 http://wikiwiki.jp/redstrange/?%C4%EA%B5%C1%BA%D1%A4%DF%A5%DE%A5%AF%A5%ED によると.screenrcで …

組み込みマクロ

c++

環境判別の方法が知りたくなったので調べてみた gccの場合は一覧が直接取得できる。 $ touch a.h; cpp -dM a.hvcではどうやるかわからなかったがとりあえず _MSC_VERを見ればvcであることはわかりそう。http://support.microsoft.com/kb/65472/ja詳しいとこ…

premakeを使ってコマンドラインで開発(vcでもw)

premakeというのはプロジェクト管理ツールで、 define, includeパス, libraryパス, linkするライブラリ, 出力する実行ファイルやライブラリ,含まれるソースなどのプロジェクトの情報をluaスクリプトに書いておき、そこからコマンド一発でvcソリューションやM…

よさげなものを発見

http://premake.sourceforge.net/ 簡単なスクリプトからMakefileやvcのソリューションを生成できるらしい。 うまくすればMakefileやautoconf、vcやmanifestに煩わされるのが軽減できるかも。後で調べる。

apacheがあがらないと思ったら・・・

/var/log/apache2/error_logに No such file or directory: could not open mime types config file /etc/mime.typesとか書いてある。 な、なんだってーw 最初はServerNameのエラーメッセージが出ていたのでその辺りかと思っていたのだが意表をついた罠だ・…

やっぱりGentooに入れ替え・・・

先日、インストールしたZenwalkなのだが、 Synergyが頻繁に操作を受け付けなくなってしまう症状が出てしまった。 どうも原因がわからないので諦めていつものGentooに入れ替えることにした。 他のところは特に不満は無いのだが。