早くも無く遅くも無く。
風邪悪化で絶不調。帰って即死。
昼ごろ起床。
鼻の奥が痛かったり。風邪をひいたかも。
PCでCPU負荷の高いプログラムを実行するとファンの回転が速くなるのですが、
それ以外になにやらカタカタ音がするので、蓋を開けて点検してみたり。
以前、開けた時はCPUのフィンを止めるネジが一本緩んでいたのですが、
今回はそういう緩みは特に無し。ファンにホコリが引っかかっていた
のでそれを掃除機で吸っただけで元に戻したのですが、とりあえずカタカタ音は
収まってみたり。ホコリのせいでファンの回転になにやらムラができていたの
かしら?
昼過ぎ起床。
掃除したりTV観たり。
なんとなく「四季庭」を
買ってみたり。まいいつの「お庭」だけを切り出したようなソフトです。
ちょろっと触った感じでは、けっこうアラが見えるという気がします。
早くも無く遅くも無く。
PS3ディスク内のムービーファイルを整理したり、Web巡回して終了。
遅めに帰着。
Web巡回して終了。
アメトークの家電芸人の続き。今となっては当たり前の機能になって
るけど当時は画期的だった機能の話が面白かったり。
今やTVなんかのリモコンは付いてて当たり前(てかリモコン無しでは操作ができない場合も)
ですが、TVの前まで行かないとチャンネルを変えられないという時代が
確かにあった訳で。
早めに帰着。
TV観てたらいつの間にか寝てたり。
遅めに帰着。
ちょろりコーディング。イマイチ式が上手く導出できず。
遅めに帰着。
結局、先日のFoldingシミュレーションは、本当にハングして(操作不能状態に陥って)終了。
何気に気づいたこと。いわゆるハイビジョン解像度は 1280x720画素になる訳ですが、
いわゆるフルハイビジョン解像度 1920x1080画素 との画素比で見ると、
2.25倍 フルハイビジョンの方が画素数が多いのだなぁと思ったり。
1080でフレームレートが出ない場合でも、720にすれば大丈夫ってな感じになるのかしら?
昼前起床。
TV観たり Web巡回したりと、ぐうたら過ごして一日終了。
Folding@Homeの実行で、何故かモデル表示が止まった状態になる場合が
あったり。一度目はFoldingを実行しながらBlu-rayディスクの取り出しを
行った為、実はそれが悪さしているのかなぁ?などと勝手な想像をしていました
(実際にディスクを取り出す瞬間に表示が変になる現場を見た訳ではありません)。
で、立ち上げたり落としたりしていると、別の問題を持って来て復帰していた(その後、5時間くらいの問題を2〜3問
実行してました)のですが、また表示が止まってました。
何気にファンの音が突然下がったので(^^; 画面を見てみたら、丁度 表示停止した直後
くらいで、しかも新しい問題を持ってきたばかりだったので、もしかすると
問題の方に原因があるのかもと思ったり。問題の名称は「p4012_supervillin_Still_novisc」。
右下に表示されるグラフが最大値に はり付いた状態になっている為、
何やら妙な事になっているのかも。
で、一度終了して再起動したら、背景には何も表示されてない状態に。その時の写真。
背景が真っ暗なので、オートフォーカスがなかなか思い通りに合わなかったのは秘密。
「p4012_supervillin_Still_novisc」で検索してみると、一件だけ英語ページに
同様の現象を報告すると思われるものを見つけたり(自動翻訳結果の雰囲気だけでしか
見ていませんが)。何かしら再現性があるものなのかも。
昼前起床。
何気にFolding@Homeのページを見ていたら、2PFLOPSを越えていたり。
よく見てみると、PS3は増えていなくて、GPUが妙に増えていたり。
Client statistics by OS OS Type Current TFLOPS* Active CPUs Total CPUs Windows 195 205119 2059338 Mac OS X/PowerPC 7 8495 116611 Mac OS X/Intel 26 8284 51880 Linux 71 42019 311036 GPU 569 5177 12343 PLAYSTATION(R)3 1440 51075 542908 Total 2308 320169 3094116 Total number of non-Anonymous donators = 1011701 Last updated at Fri, 20 Jun 2008 13:47:15 DB date 2008-06-20 14:31:59
早めに帰着。
鉄拳。ポイントで見てプラスマイナス0。勝敗で言うと負けの方が多いのですが。
ちょろりコーディング。
早くも無く遅くも無く。
アメトークの家電芸人が面白かったり。
鉄拳。びっくりするほど勝てず、六段に降格orz げふっ
早めに帰着。
鉄拳。なんとか七段に返り咲き。
眠くなっていつのまにか寝てたり。
早くも無く遅くも無く。
鉄拳。ムキになってやったり(^^; やっと七段に届くところまで。
Wings3Dの新しいのを入れてみたり。
Perfumeのダンスの凄さがイマイチよく判らない今日この頃。
早くも無く遅くも無く。
鉄拳。負けの方が多かったような。
昼過ぎ起床。
今更過ぎて自分でも腰が抜ける思いなのですが、Win32APIのコモンコントロールで
TRACKBARという、いわゆるスライダーが存在する事を知ったり。
てっきりスライダー的なものは無いのかと今まで思っていたのですが、
そんな訳無いですね(^^;
で、実際に表示させてみると確かにスライダーなのですが、
例えばデスクトップメニューの、「プロパティ→設定」の画面解像度の
設定にあるようなツマミの端に色のついたスライダーではなく、
何やら古臭い感じのが出てきたり。ちょっと探せば変え方が判るだろうと
思ってWebを検索してみたのですが、何故かその方法が見つからず。
てか、「TRACKBAR_CLASS」でググると何故か30件しか出てこなくて、
なんで?と思ったり。
昼過ぎ起床。
何気に実行しているFolding@Homeのシミュレーション完了数が1000になってました。
900を越えていたのが約二週間前なので、
3〜4時間で完了する簡単な問題を数をこなした感じかも。
先日のOutOfMemoryの件。小さいコードを書いて動きを確かめてみたり。
$ cat -n gc_test.d 1 import std.stdio ; 2 3 class ImageBuf{ 4 char[] img ; 5 static int id ; 6 int thisId ; 7 8 this(){ 9 thisId=id ; 10 id++ ; 11 printf("I am id=%d\n",thisId) ; 12 } 13 14 ~this(){ 15 printf("Destruct id=%d\n",thisId) ; 16 } 17 18 int allocBuffer(int size){ 19 img.length = size ; 20 return(0) ; 21 } 22 } 23 24 int main() 25 { 26 ImageBuf imgb1 ; 27 28 printf("alloc 300MB start\n") ; 29 imgb1 = new ImageBuf() ; 30 imgb1.allocBuffer(300*1024*1024) ; 31 printf("alloc 300MB end\n") ; 32 33 printf("alloc 300MB start\n") ; 34 imgb1 = new ImageBuf() ; 35 imgb1.allocBuffer(300*1024*1024) ; 36 printf("alloc 300MB end\n") ; 37 38 printf("alloc 300MB start\n") ; 39 imgb1 = new ImageBuf() ; 40 imgb1.allocBuffer(300*1024*1024) ; 41 printf("alloc 300MB end\n") ; 42 43 for(int i=0 ; i<100000 ; i++ ){ 44 printf("alloc 10MB (%d) start\n",i) ; 45 imgb1 = new ImageBuf() ; 46 imgb1.allocBuffer(10*1024*1024) ; 47 printf("alloc 10MB (%d) end\n",i) ; 48 } ; 49 50 return(0) ; 51 }
$ ./a.exe alloc 300MB start # I am id=0 # ----+ alloc 300MB end # | alloc 300MB start # | I am id=1 # ----|--+ Destruct id=0 # <---+ | (1)ここで300MB空いて、300MB使った のでは? alloc 300MB end # | alloc 300MB start # | I am id=2 # | Destruct id=1 # <------+ (2)ここで300MB空いて、300MB使った のでは? Error: Out of memory
(1) (2) (3) (4) ┌───┐ ┌───┐ ┌───┐ ┌───┐ │300MB │→│空き │→│空き │→│空き │ │ │ │ │ ├───┤ ├───┤ └───┘ └───┘ └───┘ ├───┤ │300MB │ │ │ └───┘
早くも無く遅くも無く。
ちょろりコーディング。8192×8192×4byteの画像を何度も読み込んでいると
Out Of Memory でずっこけたり。あるクラスの中で使用する一時バッファを
動的配列で割り当てていたのですが、そいつがいつまで経ってもガベージコレクトされずに居座って
いるように見えたり。居座るだけならまだしも、再利用されてない為に
OutOfMemoryになっている訳で、つまるところメモリリークしているという
状況です。一応デストラクタは機能しているようなので、
インスタンス自体を開放する意思は見られるのですが、実際に開放されているようには見えず、
タスクマネージャーで見てるともりもりとメモリを食っていました。
そこで、std.c.stdlib.malloc()とどのつまり
Cの標準関数のmalloc()を使って割り当て/デストラクタでfree()する
という感じにしてみた所、リークは治まり、巨大画像に続いて小さい画像を
読み込むと、プロセスサイズも縮んでいました。
何やらGCのメモリ割り当てがバグっているのかしら?
そういや、free()でプロセスサイズが縮んでいたのですが、大昔のOSだと malloc()などで
一度拡大したヒープ領域はfree()を実行しても縮まなかったと思います。
最近のmalloc()は システムコールにbrk()やsbrk()を使わずに、mmap()(Windowsの場合はVirtualAlloc())
を使っているようなので、うまく管理すれば munmap()(Windowsの場合はVirtualFree())
を使ってプロセスを縮められるという感じのようです。
気持ち遅めに帰着。
ちょろりコーディング。スクロールバーの挙動にハマってみたり。
SCROLLINFO構造体のfMaskメンバーにSIF_DISABLENOSCROLLを入れないと、
スクロールバーが不要になると自動的に表示されなくなります。この時、丁度
水平スクロールバーが消えるか消えないかの境界の所でウインドサイズを
変えると、水平スクロールバーの存在する状態での
ウインドサイズで 垂直スクロールバーの範囲が取られる事があったり。
原因は次のような感じ。例えは、WM_SIZEメッセージ受信でウインドサイズ
に合わせて SCROLLINFO.nPage の値を更新する事でウインドサイズ変更に
スクロールバーの範囲が追従します。この時、実際にスクロールバーが
不要になるかどうかは、SetScrollInfo()でスクロールバーの情報を
セットした後でないと判りません。この為、WM_SIZE
メッセージ受信時のLPARAMに入っているウインドサイズだけを使って
スクロールバーの範囲を決定するのはまずくて、水平(もしくは垂直)
スクロールバーの状態をSetScrollInfo()実行で変更した後に、
GetClientRect()でクライアント表示サイズを調べて、それに合わせて
垂直(もしくは水平)スクロールバーの情報を再度セットする必要があると
いう感じでした。セットしてみない事にはクライアント表示サイズが
変わるかどうかわかりませんので、結局どうしたかと言うと、水平/垂直の
両方について一度 WM_SIZEのLPARAMのサイズでSetScrollInfo()を
実行し、スクロールバーの表示有無が決定した後のクライアント表示サイズをGetClientRect()で得た後に、
再度、水平/垂直の両方についてSetScrollInfo()を実行するという感じに
してみました。うーん、でもこんな変な事やってる例はWebを検索してみても
見当たらないなぁ?何か間違っている気も。
早めに帰着。
ちょろりコーディング。レバーコントロールに普通のウインドをはめ込める
ようにしていたつもりが、コード整理したときに間違えてて はめ込めなくなっていたのに
気づいたり。
気持ち遅めに帰着。
ちょろりコーディング。
早くも無く遅くも無く。
WBSでやってたSHM-CD(Super High Material CD)。なんで音質が上がるのか
イマイチ納得がいかない気がしたり。で、CDのWikiを調べてみたところ、
どうやら誤り訂正は行っているが、1bitくらいなら誤ってても良いような
方法を使用しているらしいという事を知ったり。それならば確かに違いは
出てくると思われますが、聴いて判るくらい音質が変わるのかなぁ?と
いう気も。て事はですよ、CDをWaveファイル形式などのRAWイメージで
取り込んだら、毎回ちょっとずつ違った値になってたりするのかしら?
という訳で二度取り込みをしてdiffってみたのですが差は無し。
何か間違ってる?
昼ごろ起床。
夕方頃から秋葉で発生した無差別殺人事件のニュースばかりに。
本日なぜか別局で二度見た「脳指紋」の話。指の話では無いけど指紋と言う点は
さておき、脳内の記憶検索結果が一致検出した時、ある特定の脳波が出るのを利用して、
高精度な嘘発見器にも使えるという話。ところで、マンガなんかで
何かに気づいたりすると、電球が点くって表現がありますが、電球に例えるのは
ともかく、何かしら出ているというのは本能的に気づいていたのかなぁ?
などと思ったりして。
昼ごろ起床。暑くて死亡。
鉄拳。負けすぎて五段に降格orz。
SAIのムックが出てるのを知って買ってみたり。導入部などの基本的なところが
おさえられてて、結構詳しく書かれているなぁと思いました。
レイヤーの概念など、かなり基礎的なところから書かれているように思います
ので、「聞く前にググれ」と一蹴されるような類の疑問に対する回答はほぼ
網羅されているのではないかなと感じました。GIMPなどの併用ソフトについても
紹介があったのですが、Inkscapeが出てくるのは著者の趣味による所が大きい
ような気も(^^;
そういや、「デジ絵」って単語は結構浸透してるのかしら?TANEが一番最初に
この言い方を見たのは「デジ絵の文法」なのですが、その後しばらくしてから
中川翔子がTVで使ってるのを見たなぁという感じ。今や「CG」って言うと
2Dや3Dといった分類以上に、色々な場合を指す単語になっていると思います。
「デジ絵」はなんとなく俗っぽい感じがするのを別にすれば、
「コンピューターを使って人の手で絵を描く/描かれた絵」という部分に限定されている
ように思えます。なので、話の中で対象を限定するのには割と便利な単語かもと
思ったり。
「ONE PIECE(50)」。随分前に振ったネタが色々出てきてて、また最初から
読み直したくなってみたり。人魚の娘って、表紙でやってるサイドストーリーで
出ていたような気が?
早くも無く遅くも無く。
Web巡回していたら眠くて死亡。
早くも無く遅くも無く。
例外がキャッチできない原因判明。パッチは以下の通り。
*** libphobos/gcc/deh.d.org Thu Oct 18 02:31:54 2007 --- libphobos/gcc/deh.d Thu Jun 5 22:53:38 2008 *************** *** 324,330 **** // Can never have null landing pad for sjlj -- that would have // been indicated by a -1 call site index. ! landing_pad = cs_lp + 1; if (cs_action) action_record = info.action_table + cs_action - 1; goto found_something; --- 324,331 ---- // Can never have null landing pad for sjlj -- that would have // been indicated by a -1 call site index. ! phase1.landingPad = cs_lp + 1; if (cs_action) action_record = info.action_table + cs_action - 1; goto found_something;
早めに帰着。
例外追跡の話。何故かどうやってもtry/catch で反応しないようだったので、
以前のコンパイラバージョンとか、例外処理のサンプルとかを試したところ、
どうやら現在のSVNのGDCは、例外処理がバグってるという結論に至ってみたり。
で、Webを探って関係しそうなページを眺めたり。一つ心当たりのある点が
あったので、configureオプションを変えて再ビルド。......終わらず。
ビルド中に鉄拳。勝ったり負けたり。ちっともポイントは増えず。
早くも無く遅くも無く。
GDCビルドの続き。エラーするところがあったのですが、ちょろっと直してビルド完了。
手持ちソースをいくつかコンパイルしてみたところ、一部書き換えが必要だったり。
気持ち早めに帰着。
気が付くとTV見ながら寝てたり。
ふとGDCのSVNビュア
を見てみたところ、ついにDMDの 1.030/2.014 に追従したもよう。
そんな訳でビルドしてみたり.....終わらず。
昼ごろ起床。
洗濯したり掃除したり。
ちょろりお出かけ。ついでにゲーセンに寄って「怒首領蜂大復活」を見たり。
二人くらいやっているのを見ただけなのですがかなり厳しい予感。
でも、ハイパーっぽい状態になると敵弾を消せるようなので、
使いどころを見極めれば実は思ったほど厳しくは無いのかも?
気のせいかも知れませんが。
鉄拳。少し勝ち点を取り戻した気も。
たぼさんの2008/5/27の雑記で、
Window基底クラスの一例を見せてもらいました。SetProp()やGetProp()ってなAPIの存在を
初めて知りました。勉強になります。TANEがDで書いたWindow基底クラスは、
特に何も参考にせずに作ったものなので、Dの連想配列に頼りっぱなしの方法に
なっているのが果たして一般的な方法なのかしら?と思うところがありました。
で、今回改めてwxWidgetsと
fox-toolkitのコードを眺めてみたのですが、
ハッシュを使って ウインドハンドラから
プロシージャを逆引きしているようで、結果的には同じ方法に行き着くのかなぁ
などと思ったりしました。
DUIT(GTK+のDラッパー)やwxd(wxWdigetsのDラッパー)も試したのですが、
ビルドに手間がかかりすぎる上にちょっとバグってたりするという理由から、
結局自作クラスの方が具合が良かったというので今に至る感じなのですが、
使い勝手が理由で自前のGUIツールキットを作ったり使ったりしている人って
意外と居るものなのかしら?