昔の最近の出来事(2012.12)

2012/12/31

昼頃起床。

TV見ながら掃除したりとぐうたら過ごしたり。

先日の時間取得のコード。64bit対応のgdcだと正しく時間取得できたり。 32bitのgdcがバグっているのか、コードがバグっているのか。

どうやらstd.datetime内は time64_t 相当で時間を保持しているようなのですが、 MinGW32のtime_tは time32_t なのでここんところで妙な事になっているような。 time()相当の関数実行で時間を得ているものと思われるのですが、 得ている箇所を見つけられません(^^; std.datetimeはコード量が多くしかもテストコードが大半を占めていて 可読性が非常に悪い気がしたり。unittestのブロックを gccでいうところの -E相当で抜く事ができるともう少し見やすくなると思うようなそうでもない ような。
んー、違うか? 時間の取得とは関係の無い、 SysTime(DateTime(2012,1,2,3,4,5)).toISOString() みたいなのも意図通りに ならないから、色々と怪しい箇所が散りばめられているのかしら?

幸いにしてコンソールアプリだとかろうじてgdbが使えたので調べてみたり。 まずコードを以下のような感じでDateTime()とSysTime()に分離し、 それぞれの実行結果を見てみました。

    auto datetime = DateTime(2012,1,2,3,4,5) ;
    auto systime = SysTime(datetime) ;
    writef("%s\n",systime.toISOString()) ;

writef()で止めた所では以下のような感じ。

(gdb) p datetime
$5 = {_date = {_year = 2012, _month = 1 '\001', _day = 2 '\002'}, _tod = {_hour = 3 '\003', _minute = 4 '\004', _second = 5 '\005'}}
(gdb) p/x systime
$6 = {_stdTime = 0x1db27e249d880, _timezone = {original = @0x8b1fe0, stripped = @0x8b1fe0}}

datetimeの方は意図通りの値が入っているようですが、systimeの_stdTimeが 怪しい感じなのかも?Fedoraの方で同じコードを-m32でコンパイルして 同じように止めてみた結果は以下のような感じ。

(gdb) p datetime
$1 = {_date = {_year = 2012, _month = 1 '\001', _day = 2 '\002'}, _tod = {_hour = 3 '\003', _minute = 4 '\004', _second = 5 '\005'}}
(gdb) p/x systime
$2 = {_stdTime = 0x8ce96c6e249d880, _timezone = {original = @0xf7e99fe0, stripped = @0xf7e99fe0}}

systimeの_stdTimeが大分違っているような気が?でも良く見ると 下位4byteは合っているような気も?

もう少し追いかけてみたところ、std/datetime.d:28477 の 「return cast(immutable LocalTime)_localTime;」で何やら例外が発生して いる模様。ここで失敗したまま先に進んでいる為、デタラメな値が_stdTimeにセットされてしまうようです。 2.058ベースのgdcでは大丈夫そう。std/datetime.dの変更に関係するか?という点も あまり関係無さそう。変数_localTimeは「static shared LocalTime _localTime;」 で宣言されているのですが、shared関連でgdcがバグっているのか?

ちょろりお出かけ。

そんな訳で今年を少し振り返ってみたり。
今年は本物お仕事が忙しすぎた為、ゲームは全くやってませんでした。 それこそ去年末にストールしていたアンチャ3が1年ストールしたままになってます(^^;
代わりにコーディングはボチボチやったかも。その要因としては PCを新調したので64bit化対応で色々遊べた所があるかも知れません。 gdcもほどよくアップデートされていたので手持ちコードメンテナンスも適度に 行われた感じでした。 それにしても、意外と64bit化が進んでいない事に驚きを感じなくもありません。 そんな訳でもう少し遊べるんじゃないかと思います。
そういやSAIの新版にも期待しています(^^) ただ、今年のCGはPCを新調した時に 表紙を描いただけになっちゃってますけど(^^;;

そんな感じで今年はここまで。それではみなさん良いお年を。

2012/12/30

AM中に起床。

cairoのMinGWビルド。どうにもスタックが壊れているせいか、 gdbがうまく使えなくてずっこけ場所がよくわからなかったり。 なんとなくcairo中のmutexロックのところで変になっているようですが よくわからず。

なんとなく解決。ビルドにMinGWのコンパイラ(gcc-4.5.1)を使用してインストール していたのを、gdcのビルド時に一緒に生成されるgcc/g++(4.6.3)を使うように configureを実行しなおして再ビルドしたところ大丈夫になったり。 gdcのビルドにはTLS関連パッチが当たっているのですが、それが何かしら効いている のかしら?

cairoの時計を移植してみたり。文字盤の描画はOKなのですが、現在の 時間を取得するPhobosの std.datatime内のクラスがバグってて(?) 意図した時間を取得できなかったり。Fedoraの方ではどうかと確認 してみたのですが、同じコードでこちらはうまく時間取得できる模様。

$ cat time_test.d
import std.stdio;
import std.string;
import std.datetime;

void main(string[] args)
{
    auto currentTime = Clock.currTime();
    writef("%s\n",currentTime.toSimpleString()) ;
}

$ gdc time_test.d

$ ./a.exe
-24036-Sep-28 00:00:09.9465923

こんなのプラットフォームによる違いなんてあるんだろうか?

2012/12/29

起きたら午後もいい時間。寝すぎ。

そういやMinGWで make installが失敗する場合があるのを調べたり。 具体的にはパーミッションの変更に失敗するというもの。 もう少し調べてみると、ただのcpコマンドでも 既に存在しているファイルに 上書きする場合に失敗する事があって謎だったり。
で、ファイルのアクセス許可を変更するとOKになったり。 具体的にはファイルエクスプローラから、コピー先の親のディレクトリ のプロパティを開き、セキュリティタブの「Authenticated Users」 のアクセス許可でフルコントロール可能にするという感じ。

MinGW用にcairoをビルドできないかと試してみたのですが、どうにも うまくいかなかったり。それにしても、glibのビルドにpkg-configが必要 なのですが、pkg-configのビルドにglibが必要になっているって どういう事?

どうにかcairoのMinGWビルドに成功。で、手持ちのD言語ソースで GDIをバックエンドにレンダリングしてみる訳ですがうまく動かなくなってたり。 image_surfaceならばうまくレンダリングできたので何かマズいのかも。

2012/12/28

早くもなく遅くもなく。

あまりの眠さに急速停止。

2012/12/27

遅めに帰着。

調べ事をして終了。

2012/12/26

飲み会。遅めに帰着。

ちょろっと調べ事をして終了。

2012/12/25

遅めに帰着。

ちょろっと調べ事をして終了。

2012/12/24

昼過ぎ起床。

キッズステーションでやってた「みどりのマキバオー」のアニメ。 なんか面白かったので観てました。原作は全く読んだ事が無いのですが、 少年ジャンプ漫画っぽい展開に普通にハマったという感じでした(^^;

Webを探索していたら、最近のEmacsには「linum-mode」なる 左側に行番号を表示するモードがあるのを知ったり。Emacs23.1から標準 で使用可能なようですが、Emacs22ベースのMeadow3でも一応使えるようです。

2012/12/23

昼過ぎ起床。

ぐうたら過ごして終了。

2012/12/22

昼過ぎ起床。

プロ遊の下のD言語関連コンテンツを微妙に更新してみました。ご参考まで。

そういや以前、Cygwinのxzで -9の辞書サイズを指定するとメモリ不足で実行失敗する件。 XZ Utilsから5.0.4のソースを落として ビルドして使ってみたところ、-9を指定しても大丈夫な感じでした。 バージョンが上がったから(Cygwinのは5.0.2)大丈夫になったのか、Cygwinパッケージが バグっているのかは判りませんが、ひとまず野良ビルドした方を使ってみる事に。

2012/12/21

遅めに帰着。

「コンピューターアートテクノロジーコンソーシアム」。 ちょっと驚いた。どんな感じになるのかはまだよく判らず。

色々確認。でもあまりの眠さに急速停止。

2012/12/20

気持ち遅めに帰着。

gdc 64bitのMinGWビルド。大丈夫そう。

2012/12/19

早くも無く遅くもなく。

gdc 64bitのMinGWビルド。64bitの方もまっさらな状態から入れられないか確認。 最初にできあいのバイナリが必要ではあるもののいけそうな予感。

2012/12/18

早めに帰着。

gdcのMinGWビルド。まっさらな状態から見ているだけでビルドできるように なってみたり。binutilsからビルドしなくてはならないというのが アレですが、それは機械がやることなので待てば良いかなと(^^;

2012/12/17

気持ち遅めに帰着。

gdcのMinGWビルド。ひとまずまっさら状態から見ているだけでビルドできそうな 感じになってきたようなそうでもないような。make で -jオプションを使って 確認時間の短縮をしたいところなのですが、オプションを付けると別の理由で ビルドに失敗するようで余計に時間がかかったり(^^;

2012/12/16

AM中に起床。

投票ついでにお買い物。そういえば自転車の電球が切れていたので 調達。予め見ておいた形と同じのがあったので手に取ろうとしたら 2000円近くする値段が付いていて思わず手が引っ込んだり(^^; 隣に下がっていた 電球は2個入っていて300円しない値段だったので何が違うのか謎に思ったり。 2000円の方はキセンノンランプらしく、それが値段の差になっているらしい。 ただ、キセノンの方は「オートライト用」となっておりうちのもオートライト なもんですから、こちらじゃないとダメなのか?と悩んだり。 結局、電圧もワット数も同じなので取り合えず300円の方を買って、ダメなら 2000円のを購入検討する事に。

帰ってコーディングしたり購入した本などを読んでぐうたら過ごしたり。

キセノンライトをWebで調べたところ、明るさが違うということらしい。 どれだけ違うのだろうと思いながら夕食の調達に出かけた所で見てみた訳 ですが、確かに少し暗いです(^^; まぁでも、夜道を照らす目的よりも対向車(者) にこちらの存在を知らせる目的の方が強いと思ってますので、ひとまずこれで 良いかという感じ。

gdcのビルド方法のページをアップデートしようと思ったり。問題はまっさらな 状態から使えるようにビルドする方法が確立されていない点。 確認しているのですがうまくいかずどうしたもんか。

2012/12/15

昼過ぎ起床。

もそもそとコーディングしたりしてぐうたら過ごしたり。

2012/12/14

日付け越え前に帰着。

あまりの眠さに急速停止。

2012/12/13

日付け越え前に帰着。

OpenALを使用した手持ちコードで、alutExit()を実行した際にバッファ類を開放せずに 終了した旨のメッセージが出ていたのを調べたり。一応バッファ類を開放している つもりなのですが、なぜか開放されない場合がある予感。謎。

2012/12/12

気持ち早めに帰着。

Web巡回して終了。

2012/12/11

遅めに帰着。

もそもそとコーディング。

2012/12/10

気持ち遅めに帰着。

Web巡回して終了。

2012/12/09

昼前起床。

もそもそとコーディングしたり調べごとしたり。

2012/12/08

AM中に起床。

もそもそとコーディングしたり、ぐうたら過ごして終了。

2012/12/07

遅めに帰着。

もそもそとコーディング。

2012/12/06

日付け越え前に帰着。

もそもそとコーディング。

2012/12/05

早くも無く遅くも無く。

もそもそとコーディング。

2012/12/04

飲み会で遅めに帰着。

あまりの眠さに急速停止。

2012/12/03

遅めに帰着。

ちょろり調べ事をして終了。

2012/12/02

昼頃起床。

以前判らないままほっぽらかしになっていた、 Windows7で表示可能な特大アイコンとWindowsXPまで表示可能な48x48サイズのアイコン を混在させる件。リソースファイルで書くのではなくて、複数イメージが入っている icoファイルを作成すれば良いのが判ったり。
で、作成の仕方。GIMP2でサイズ毎のイメージをレイヤー毎に分けて作成しておき、 icoエクスポーターでレイヤー毎にbppやパレット有無を指定してicoファイルに書き出せ ば良いようです。

.ico作成イメージ

32bppのみで 256x256、48x48、32x32、16x16の順に並べています。WinXPとWin7では これで大丈夫そう。因みに参考にしたのはInkscapeのソースに含まれる.icoファイルです。 Inkscapeのは4bpp(16色)や8bpp(256色)のアイコンもちゃんと 入っているので、Windows98以前でも大丈夫っぽい感じになってました。

2012/12/01

昼頃起床。

アパートの契約更新。

もそもそとコーディング。大体こんなもんかな?


TOP PREV