早めに帰着。
ASSEMBLY 2015 のライブ動画を見ようとしたのですが、Webブラウザ
からだと途切れまくりで視聴に耐えられなかったり。
で、VLCメディアプレイヤーで直接URLを開く方法だと大丈夫そう
だったのでそれで見てみたり.........と思ったら結構途切れるな。
ただ、絵は止まりますが音は切れないようなので、若干ストレスが
軽減されるような気も。
何気にWeb検索してなんだこりゃ?と思った事。
PCのOSシェアというのが出ているようですが、
こちらと
こちらとで
Windowsのバージョン別内訳が随分違うなぁ?と思ったり。
WindowsXPの割合が全然違っています。こんなに差が出るものなのかしら?
それにしても、MacOSとLinuxは Windowsに比べると微々たるものだと
いう感じです。誰もが知っているけど
実際に持ってる人はほとんど居ない、高級ブランドのような
イメージなのでしょうか? 高いのは敷居だとは思いますが。
Graphics compo を観られたり。いつもどの辺を見れば良いのか判らない
Graphics compoなのですが、今回のは割と普通に上手い作品ばかりだったように
思います。ルール上は ほぼ何の制限も無い(スキャナも3DCGも自由に使って良い)
ようなのですが、やっぱツールなどに縛りを与えた方が良いんじゃないかと
思ったりも。例えばWindows付属のペイントのみで描くとか、
しぃペインター で何も無い所から完成する所までを見せるとか
の方が、判りやすいスゴさを与えられるような気がしたりも。
早めに帰着。
ちょろりコーディング。
世界最大級のメガデモイベントである ASSEMBLY 2015が
今日から開催されているようです。
と言っても、時差があるため メインのイベントをライブで観るのは
難しいですが。
Web検索していて知った「ど根性ガエルの娘」。
眠くて急速停止。
早めに帰着。
ちょろりコーディング。
眠くて急速停止。
早めに帰着。
ドラクエの新作発表会をタイムシフトで視聴。
IVの4章までの記憶しかないので、話している内容がいちいち新鮮でした。
3DS版XIの上画面と下画面同期には、は?マジで? ちょっと頭おかしくね?(誉め)
と思ったり。イベントまで画面同期してるとか 3DSの方はPS4以上に大変そうな予感。
あと、鳥山明氏からのメッセージの「出るのは何時になるか....」
のくだりの後で、すぎやまこういち氏の「命ある限り....」のくだりを聞いて
そういや すぎやまこういち も随分なお爺ちゃんだよなぁ?と思ったりも。
30周年内目標と強調していましたが、XI以外にもBUILDERSとか色々作り
過ぎなのでは?と思ったりも。でも、こういう記念日的なもので盛り上がる
のは活気付いてて良いなと感じます。
なんだかここ数日、清澄白川にカフェが多いという話を TVで何度か見ている
気がするデジャヴ。
早めに帰着。
コーディング。捗らず。
昼頃起床。
掃除したり洗濯したり。
ちょろり本屋に。「宇宙兄弟(26)」。色々起こりながらもゆっくり話が
進んでいる感じ。
コーディング。捗らず。
そういやカレンダーを見ていて、9月が3連休になっているの何故だっけ?
と思ったり。EmacsのJapaneseHolidaysでは、
Monday, September 21, 2015: 敬老の日 Tuesday, September 22, 2015: 国民の休日 Wednesday, September 23, 2015: 秋分の日
昼頃起床。
WindowsAPIバインディングのアップデートついでにプロ遊の下の
「D言語でウインドウクラスを実装したときの話」
を更新してみました。御参考まで。
そういやここ数日gdcが頻繁
に更新されているような。
少し早めに帰着。
もそもそとコーディング。間違い箇所は判ったり。さて次をどうしたもんか。
少し早めに帰着。
もそもそとコーディング。どこか間違えている模様。
「オーディンスフィア レイヴスラシル」。
PS2で発売されたオーディンスフィアのHD版らしい。そういや
要領が得られずに途中で放置したんだったなぁ。
ヴァニラウェア作品独特のグラフィックが HDで出るとスゲーだろうなぁ?
と思いつつも、(Wiiで朧村正を出したためか?) PS3にはしばらく来ない感じでした。
2013年にドラゴンズクラウンが来たので 既存タイトルのHD化はせず、新作を
出していくのだろうと思っていたのですがちょっと意外でした。
オーディンスフィア レイヴスラシルは 本気のHD化のようなので
(あの物量のテクスチャを全てHDに直すのかしら?)出たら買ってしまいそう(^^;
遅めに帰着。
もそもそとコーディング。捗らず。
気持ち早めに帰着。
しばらく行っていなかったD言語用の
WindowsAPIバインディング
のマージ。DMD2.067では配列の宣言記述が統一されるらしいので、
それに関連した変更が主なようです。2.066.1ベースなGDCにはまだ関係
無いですが。
昼前起床。
新しくビルドしたgdcのテスト。sftpを使う手持ちコードがあるのですが、
libphobosの std/net/curl.dを改造する必要があるのを忘れてました
(参考)。また、
std.socketやstd.socketstreamを使ったftpプロトコルサポートコードで
シンボルがぶつかるといったリンクエラーが出るようになっていたのですが、
ftpもstd.net.curlの方に移してデッドコードになっていたので削除。
ひとまずコンパイル&実行して、sftpでデータが取ってこれる所を
確認できたり。
ちょろりお出かけ。寄った本屋で 小学生からはじめるプログラミング的
な本が色々並んでいたり。Scratch
によるプログラミング本が多く出版されているのを知ったり。何故
表に平置きされているんだろう?と思ったのですが、夏休みが始まるからかと
すぐに納得。自由研究の幅も広がっているのだなぁと思ったりも。
そういやWeb上で公開されているScratchのプログラムも、最近のJavaだと
ブロックされるわ、ChromeはそもそもJavaプラグインのサポートやめるわで、
簡単に実行できなくなっているのはションボリな感じだなぁと思います。
あれ、何なのですかね? Javaで公開可能なアップレット書くなって事
なんですかね?
AM中に起床。
GCをdisableにすることで回避できるstd.regexのSegfaultについて
コードを見てみたところ、GCに関係無くSegfaultするコードと同じ
ようにキャッシュ実装になっている事が判ったり。そんな訳で
キャッシュ無しの実装に変更してみたところSegfault回避できたり。
*** regex.d.orig 2015-07-14 16:23:55.000000000 +0900 --- regex.d 2015-07-19 23:09:18.268426900 +0900 *************** *** 762,776 **** return makeTrie(set); else { ! auto p = set in trieCache; ! if(p) ! return *p; ! if(trieCache.length == maxCachedTries) ! { ! // flush entries in trieCache ! trieCache = null; ! } ! return (trieCache[set] = makeTrie(set)); } } --- 762,777 ---- return makeTrie(set); else { ! // auto p = set in trieCache; ! // if(p) ! // return *p; ! // if(trieCache.length == maxCachedTries) ! // { ! // // flush entries in trieCache ! // trieCache = null; ! // } ! // return (trieCache[set] = makeTrie(set)); ! return makeTrie(set); } }
昼頃起床。風邪気味で不調。
昨日のsegfaultを最小コードで再現できないか試したり。
なんとなくずっこけ再現はするものの、gdbに乗せないと再現しないとか、
なんかイマイチな感じ。
$ cat test_methodcall.d import std.stdio; import std.regex; void main(string[] args) { foreach( int i, arg ; args ){ auto pngext = regex(".png$","i") ; if( (match(arg,pngext)).empty==false ){ writef("fname is PNG\n") ; } } return ; } $ i686-pc-mingw32-gdc.exe -v Using built-in specs. COLLECT_GCC=i686-pc-mingw32-gdc COLLECT_LTO_WRAPPER=/usr/local/gdc031_20661_510_mingwcross/libexec/gcc/i686-pc-mingw32/5.1.0/lto-wrapper.exe Target: i686-pc-mingw32 Configured with: ../gcc-5.1.0/configure --with-pkgversion='gdc-5 5db820fe30' --build=i686-pc-cygwin --host=i686-pc-cygwin --target=i686-pc-mingw32 --enable-languages=d --prefix=/usr/local/gdc031_20661_510_mingwcross --with-sysroot=/usr/i686-pc-mingw32/sys-root --enable-threads --disable-nls --enable-sjlj-exceptions --disable-bootstrap Thread model: win32 gcc version 5.1.0 (gdc-5 5db820fe30) $ i686-pc-mingw32-gdc.exe -g -O0 test_methodcall.d $ ./a.exe aaa.jpg bbb.png fname is PNG $ gdb -q ./a.exe Reading symbols from ./a.exe...done. (gdb) set args aaa.jpg bbb.png (gdb) run Starting program: /home/TANE/develop/dlang/test/a.exe aaa.jpg bbb.png [New Thread 15764.0x2a78] Program received signal SIGSEGV, Segmentation fault. 0x004553af in _D3std10functional102__T7memoizeS83_D3std5regex18__T9regexImplTAyaZ9regexImplFNfAyaAxaZS3std5regex12__T5RegexTaZ5RegexVki8Z7memoizeFNfAyaAxaZS3std5regex12__T5RegexTaZ5Regex (_param_0=..., _param_1=...) at /usr/local/gdc031_20661_510_mingwcross/lib/gcc/i686-pc-mingw32/5.1.0/include/d/std/functional.d:677 677 auto p = t in memo; (gdb) where #0 0x004553af in _D3std10functional102__T7memoizeS83_D3std5regex18__T9regexImplTAyaZ9regexImplFNfAyaAxaZS3std5regex12__T5RegexTaZ5RegexVki8Z7memoizeFNfAyaAxaZS3std5regex12__T5RegexTaZ5Regex (_param_0=..., _param_1=...) at /usr/local/gdc031_20661_510_mingwcross/lib/gcc/i686-pc-mingw32/5.1.0/include/d/std/functional.d:677 #1 0x0048717d in _D3std5regex14__T5regexTAyaZ5regexFNeAyaAxaZS3std5regex12__T5RegexTaZ5Regex (pattern=..., flags=...) at /usr/local/gdc031_20661_510_mingwcross/lib/gcc/i686-pc-mingw32/5.1.0/include/d/std/regex.d:5870 #2 0x00401445 in D main (args=...) at test_methodcall.d:8 (gdb)
669: template memoize(alias fun, uint maxSize = uint.max) 670: { 671: private alias Args = ParameterTypeTuple!fun; 672: ReturnType!fun memoize(Args args) 673: { 674: import std.typecons : Tuple, tuple; 675: static ReturnType!fun[Tuple!Args] memo; 676: auto t = Tuple!Args(args); 677: auto p = t in memo; 678: if (p) return *p;
$ grep 'memoize!' `find . -name '*.d'` ./src/std/functional.d:alias fastTransmogrify = memoize!transmogrify; ./src/std/functional.d: alias mfib = memoize!fib; ./src/std/functional.d: alias mfact = memoize!fact; ./src/std/functional.d:alias fact = memoize!factImpl; ./src/std/functional.d:alias fastTransmogrify = memoize!(transmogrify, 128); ./src/std/functional.d: alias msqrt = memoize!(function double(double x) { return sqrt(x); }); ./src/std/functional.d: // alias mrgb2cmyk = memoize!rgb2cmyk; ./src/std/functional.d: //alias mfib = memoize!fib; ./src/std/functional.d: alias mfib = memoize!fib; ./src/std/functional.d: alias mfact = memoize!fact; ./src/std/functional.d: alias mLen2 = memoize!len2; ./src/std/regex.d: return memoize!(regexImpl!S, cacheSize)(pattern, flags);
早めに帰着。微妙に具合が悪かったり。
gdcのMinGWターゲット(をCygwinでクロスコンパイル)でビルド。
想定される不具合については最初からパッチ全部盛りでビルド。
エラー無くビルドできてインストール。件の構造体のメンバー変数が
化けるコードをコンパイル&実行してみた所、こちらも直ってました。
やたー(^o^) で、手持ちのWindowsアプリをビルドしてテストした
のですが、連想配列アクセスでSegfault。そういや、
色々あり過ぎてすっかり忘れていたのですが、
fastcall問題の先に、この連想配列Segfault問題と、先の
構造体メンバー変数化け問題の二つがありました
(以前の日記)。
ただ、その後の調査のように
GCをdisableにしても発生する事から、もしかするとSegfaultの原因は
以前と異なる可能性はあります。という訳で、まだダメそう。
てか、連想配列アクセスでSegfaultしているのは事実なのですが、
今回 も std.regex の中で発生しています。
regexって何か変な事でもやってるのだろうか?
遅めに帰着。
gdcがアップデートされていたので、試しにFedoraの方でビルド
してみたり。特にエラー無くビルド完了。インストールした後、
構造体のメンバー変数が化ける(MinGWでもLinuxでも再現)
コードをコンパイル&実行してみた所、
正しく動いている模様。どの変更が影響しているのか判りませんが
直っているかも。週末にでもMinGWターゲットでも試してみよう。
ちょろり考え事。
遅めに帰着。
ちょろりコーディング。
気持ち早めに帰着。
もそもそとコーディング。あまり捗らず。
早めに帰着。
任天堂の岩田社長が亡くなられたらしい。マジでか。
あまりの眠さに急速停止。
AM中に起床。
掃除したり洗濯したり。
国際宇宙ステーション(ISS)で撮影している動画をストリーム配信
しているというのを知ったり(こちら)。
直ぐ夜になったので40分ほど待って夜が明けたのですが、
割と頻繁に切れる模様。720pにしても超ファインという訳では
ないですが、リアルタイム(と言ってもラグはあるのでしょうけど)に
宇宙にあるカメラからの映像が見られるというのは、いつの間にか
随分な未来になってたものだと思います。
映像を見ても、地球上のどの辺なのかちっとも判らなかったので、
X68k界隈で有名な鎌田さんのページにある
三次元人工衛星追跡器で
ISSの位置と地図からリアルタイム具合を調べてみたり。でも、
真上からの地図では やっぱりどこら辺かが判りません。そこで、
三次元人工衛星追跡器の座標と高度を GoogleEarthで合わせて見た
ところ、どうやらほぼリアルタイムに映像が送られて来ている
事が判ってみたり。ただ、映像の方が割とすぐにloss of signalに
なったり、目印の無い海の上の時間が長かったり、そうこうしている
うちに夜になったりと、合ってる瞬間を捕らえるのが意外と大変でした(^^;
三次元人工衛星追跡器では、上がISSの進行方向になりますが、
動画は後ろ向きを撮影しています。また、三次元人工衛星追跡器で
示されている位置よりも少し遅れて絵が届いている感じ(秒速8kmで動いて
いるので、体感的にはほぼリアルタイム)です。
動画の右下はカスピ海、動画では雲に隠れて見えませんが
GoogleEarthで奥に見えるのが黒海、GoogleEarthの左奥に見えるのが
地中海という位置です。てか、現実の映像とほぼ同じようにレンダリング
されているGoogleEarth スゲェな。
AM中に起床。
散髪に。そういやうちのアパートの空き部屋に御新規さんが引っ越して
きていたのですが、散髪への道すがらでも 引越ししているのを数件
見たり。この時期って引越しシーズンなんだっけ?と思ったのですが、
むしろオフシーズンみたい。逆に みんなオフシーズンを狙った結果、
言うほどオフシーズンでもなくなっているのでしょうか。
もそもそとコーディング。仕込みに時間がかかってます。
SAI2の新しいのがリリースされていたり。お疲れ様です。
今回の更新は内部のチューニングがメインのようです。
それにしても、5000pixのブラシとか、よく考えてみたらとんでも
ないサイズなのですが、UNDO付きで全くストレス無く使えるのが
コワい(褒め)です(笑。
例えば B5の100dpi(==716 x 1012pix)を75% 表示して400pixのブラシで描くのと、
B5の1200dpi(==8592 x 12144pix)を6.25% 表示して5000pixのブラシで描くのは、
見た目の感覚はほぼ同じにも関わらず、後者の方が若干重く感じる
程度に留まってます。ブラシのピクセル数比で言うと
400^2と5000^2 とでは 156倍違います。つまり156倍遅くなっても
不思議では無いのですが、そうならないのは物理の法則に反している
レベルですよ?
早めに帰着。
ちょろりコーディング。
遅めに帰着。
その昔、ゲームブックというアナログゲームがありました。
詳しい説明は
ゲームブックのWikipediaに譲るとして、いくつかある作品の中に
「J・H・ブレナン」というアイルランドの作家の作品がありました。
折込みの付属品が付いていたり、シリーズに渡ったお約束があったり
と面白かったのですが、個人的には挿絵がお気に入りでした。
で、Webで検索してみると
グレイルクエストのWikipediaがあり、それこそ約28年経って
初めて知った事とかありました。
挿絵はフーゴ・ハルという人によるものだったのですが、
日本人だとは思っていませんでした(^^;趣味の範疇だったのが、
しかも成り行きで担当したというのも驚きです。
さておき、このシリーズの二巻「ドラゴンの洞窟」の中で、
ドラゴンの生態についての文言あり、かなりうろ覚えですが
物を食べた時に腹の中でメタンが発生するが、それをゲップで
吐き出す際に牙が火打石になって火を吐く.....ゲップで家が
焼かれて迷惑だ みたいな感じだったと思います。
意図的に攻撃の為に火を吐くのではなかったのが、なんかリアル
な設定だなぁと思った記憶がありました。
まさかの復刻版が出ているようなので、覚えていたら買ってしまうかも。
でも、そこらの本屋に置いてあるとは到底思えませんが(^^;
遅めに帰着。
もそもそとコーディング。仕込みが捗らず。
ふと思った事。中世ファンタジーRPGなんかで出てくる「ドラゴン」。
爬虫類的な見た目に羽が生えてたり無かったりするのですが、それ以外に
「火を吐く」っていうオプション設定があります。巨大な爬虫類というのは、
太古の昔に実在した恐竜から、空想できる範囲内という気がするのですが、
火を吐くというのは どこの誰がそういう設定を考え出したんだろう?と
思ったり。
気持ち早めに帰着。
調べ事。
近所の道の距離が測りたくて GoogleEarthを起動したのですが、
何やら3D表示の建物が立体的になってたり。へーと思ったのですが、
今住んでいるアパートも側面(4面)と屋根のテクスチャーがちゃんと
貼られてて、マジで?!どうやってこのテクスチャ作ったの?!
と思ったり。
気持ち早めに帰着。
ちょろりコーディング。
AM中に起床。
洗濯したり掃除したり。
Emacs。ほったらかしにしてたら早速突然死。
もそもそとコーディング。
「ONEPIECE(78)」。フリが多すぎて決着が付くのに時間がかかっているような。
そういやサンジ・ナミ・他 のグループはここ5巻くらい登場していないような
気が。連載にして1年以上登場していない計算。アニメの方もコミックスに
追いついていないので、声優さんも1年休業してる事になるのかしら?
AM中に起床。
Windowsの再起動ついでにCygwinをアップデート。Emacsパッケージが
アップデートされていたので、すぐに野良ビルド版に差し替え。
そういやgccもアップデートされていて、入れなおしたgcc絡みの
DLLは全て更新されました。野良ビルドしたEmacsは -O0でコンパイル
したのですが、これで美人時計起動で死ななければ、普段使いは
これでいくという感じかも。
VMDファイルについて調べたり。何故かフォーマットは独自解析された
ものしか無いっぽい。ボーンが番号じゃなくて名前で指定されるようなのですが、
SJISで格納されている上に15byte分しか保持していなくて、なんじゃこりゃ?って感じ。
名前が途中で切れているものですから、例えば「なんとかかんとか0」と「なんとかかんとか1」
は区別が付かないように思います。実際にSJISコードの上側(80xx-9fxx,e0xx-ffxx)
で切れてるVMDファイルがあって、どうやって扱うんだ?と思ったり。
遅めに帰着。
ちょっと調べ事をしていたら眠くて急速停止。
早くも無く遅くも無く。
ボーンなどの表示を行うのに、レンダリングしたモデルの手前に
線画のボーンを重ねるように描画したいと思いました。
モデルをレンダリングしたところでテクスチャに保存、
続いてボーンをレンダリングした時点で別のテクスチャに保存、
最後に二枚のテクスチャを重ねて表示みたいな事を考えたのですが、
テクスチャ保存前のレンダリングでアルファ付のテクスチャと
して取り込めないようで、なんか違うという事に。
結局、モデルを描画した後に一旦デプスバッファだけをクリアして
再びボーンなどを描けば良いだけという事に気づいてなーんだって
感じでした。
OpenGLを使っててよくやる間違い。例えばライトのON/OFFやデプステストのステータスを
途中で変えたが、元に戻してなくて 次の描画で変になるというパターン。
サンプルコードの断片を貼り付けたりすると大体この罠に陥ります。修行が足りません。
普段使いのCygwin上で -O0でコンパイルした普段使いのEmacsを
起動して美人時計を動かしながらコーディングなどに使っている
のですが、一週間以上死なずに動いています。-O0が効いているような
気がしたりも。結局DLLは調べずじまい。
遅めに帰着。
もそもそとコーディング。なんか思ったのと違う結果に。