昔の最近の出来事(2019.01)

2019/01/31

早めに帰着。

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

2019/01/30

早めに帰着。

Cygwinのテストバージョンアナウンスがあったようですが、 3.0.0がナンバリングされている模様。

2019/01/29

早めに帰着。

SAI2の新しいのが来てたり。お疲れ様です。今回はバグ修正のみの模様。 そういや「キャンバスを開く」で ファイルビュアを開いた所、 (過去に開いた)マルチディスプレイの とある画面の方に開いたのですが、 ディスプレイ表示の切り替え操作が面倒臭かったので 初期位置に戻す で いいやと思いメニューを探したところ、SAI1では「ウインドウ」メニューの中にあった 「全てのフローティングパネル/ダイアログの位置を初期化」に相当 するの項目が見当たらなかったり。そんな訳で稀に使いたくなる場面が あるかもです。御参考まで。

2019/01/28

早めに帰着。

ちょろりコーディング。

パッケージインストールしたCygwinのEmacs X11版を何気に起動した所、 画像表示のコマンドがなんか思ったのと違う動きをしていたので、 26.1を野良ビルドしたり。すると何故か.emacsの読み込みでエラーするように なったり。調べてみたらkeisen-mule.elの中でEmacs 19か否かを判定 するコードがあり、nilになるのが期待のところが tになっているようだったり。 原因は 26.1で無くなった関数対応がマズっていたというTANEのチョンボでした(^^;

「(if (string-match "19." (emacs-version)) t nil)」という 判定コードでEmacs19(と思われるもの)だったらt、そうでなければnilが返るようにしたつもり だったのですが、関数実行(emacs-version)で返る文字列の中に 「2019-01-28」という西暦を含んだビルド日付が入っていたため、 前述判定コードでは「19.」(19とそれに続く任意の1文字)が2019-の「19-」に マッチしてしまってました。 で、そもそもバージョン番号だけの文字列として「emacs-version」という (関数と同じ名前の)変数があるので、 「(if (string-match "19." emacs-version) t nil)」 とする方が良い気がしたり。 そんな訳でEmacsの雑記 に置いてあるkeisen-mule.el.xzはバグってます。すんません。

Windows8の次をWindows9ではなくWindows10にした理由が、Windows95およびWindows98 である事を判定する為に「Windows9」という文字列でチェックしているコードが 沢山あったからという事らしいのですが、バージョン番号っぽいものが含まれた(でも厳密には バージョン番号として付与したものではない)文字列で、バージョン判定するのは危険という話でした。

で、肝心の画像表示のコマンドが思ったのと違う動きをしている件は 野良ビルドしたemacs-X11では大丈夫そう。パッケージインストール版と 野良ビルド版との違いがありそう。

2019/01/27

AM中に起床。

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

Win32APIで判らない事があって検索すると、高い確率で 「猫でもわかるプログラミング」 のページが出てきます。ページによっては20年前に書かれたものもあるのですが、 今でも変わらず参考になる場合がほとんどです。 ドキュメントとして変更の必要が無いというのは、Win32APIも大きく変更が 無いとも言える訳ですが、よっぼど変な事をやっていなければ昔の実行バイナリが 動くというのも、そういう事だからとも言えるのかなと思ったりも。 逆の言い方をすると、Win32APIという基盤は変わらないのに、GUIのツールキットや プログラム言語が変わるせいで、移行と称した作り変えを行ってるというのは なんだか筋が悪い話なのかもなぁ?とは思ったりも。

2019/01/26

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

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

テニス。大阪なおみが優勝したのスゲーってのはあるのですが、 コートの周りの壁って全面ディスプレイなの?とか、上から撮影している カメラってどうやって動かしているの?とか、チャレンジであれだけの 解像度でイン/アウトが判定できるのに審判要るの?とか、そういう所が 気になったりも。

2019/01/25

早めに帰着。

そういや今更ですが、Win32APIのメッセージを取得する GetMessage()の戻り値について。戻り値はBOOL型となっているのですが、 TRUEは1、FALSEは0でdefineされてるものの、GetMessage()実行の結果、 エラーの場合は-1を返すとなっています。 BOOLなのに二値ではないというのが「?」と思う感じです。 C99より前の C言語にはネイティブなブーリアン型はありませんので、 BOOLはintのtypedefな訳ですが、そもそも三値を取るのであればGetMessage() の戻り値はINT型にすべきだったのでは?とは思ったりも。

2019/01/24

早めに帰着。

ちょろり調べ事。

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

2019/01/23

遅めに帰着。

調べ事をして終了。

2019/01/22

遅めに帰着。

Inkscapeの0.92.4が来てたり。 バグフィックスがメインの模様。1.0のalphaも来ているらしい。 そういや何気に0.92台になったのが 2017年1月頃で、 そこから0.0.1ずつ上がって約2年か。

2019/01/21

遅めに帰着。

ちょろりコーディング。

2019/01/20

昼頃起床。寝すぎ。

掃除したり洗濯したり。

ちょろりコーディング。

2019/01/19

AM中に起床。

ケーブルTV関連機器の保守対応。電子ロックも先月電池交換したばかりなので 特に何もなく終了。電気とガスをまとめたプランの話をされたのですが 安さの加減が微妙な感じだったので保留。

ちょろりコーディング。

2019/01/18

遅めに帰着。

GDCのGitHubリポジトリ の構成が変わったっぽい。これまでのリポジトリは gdc-archivedに名前が変わって、本流は gdcと なるようです。 gccの同期コピーが置かれてて、こちらは gccのミラーと 同等レベルの内容のようです。 gccにコミットされているgdcはC/C++版のDフロントエンド(dmd 2.076.1相当っぽい) のようなので、以前、 「何も無い所からどうやってビルドするんだろう?」と思った 疑問点はひとまず解消。最新のD言語版のDフロントエンドは これまでと同様にsetupスクリプトを使用してgccにパッチしてから ビルドする流れのようですが、 C/C++版のDフロントエンドが含まれるgccを使ってビルドできるのかは 不明な感じに思ったりも。

2019/01/17

早くも無く遅くも無く。

NVIDIAドライバの新しいの(417.71)を入れたり。特に問題は無さげ。 それにしてもこんなに更新頻度が高いもんだっけ?とは思ったりも。

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

2019/01/16

早くも無く遅くも無く。

Web巡回して終了。

2019/01/15

早くも無く遅くも無く。

東京MXで「センコロール(Cencoroll)」が放送されていたり。 初見は2009年の12月なので 約9年前になるのか。今見ても一人で制作したというのは やっぱ 信じがたいように思ったりも。それにしても何故このタイミングで 放送されたのだろう?

2019/01/14

AM中に起床。

Webを散策していたら 「Unix History」という サイトの存在を知ったり。この中にある Unix Timelineという Unix系OSの 系譜図がすげぇ。そういやLinuxも系列の中に入っていますが、スクラッチ 開発なのにどうつながってるんだ?と思った所、MINIXから派生している 感じになってたり。ここは直接MINIXから派生している訳では無いと思いますが、 MINIX上でLinuxを開発していたという所から線が出てるのかなと思われます。 こうしてみると、iOSやAndroidもUNIX系統という事になると言われればそうなるのか と思ったりも。

2019/01/13

AM中に起床。

拙作mcalendarを 更新してみました。今年の5/1と10/22の祝日を追加しました。ご参考まで。

2019/01/12

昼過ぎ起床。雪が降ってたらしい。

サラウンド音源のコーデックについて。チャンネル数については表記があるので判りやすい のですが、エンコーディングについて理解がイマイチだったので少し調べてみたり。 大きくドルビーラボラトリーズ(1965年設立)の開発したドルビーデジタルと、 DTS社(1990年設立)の開発したDTS(デジタル・シアター・システムズ)の二つに分かれるようです。 ドルビーデジタルに対抗するコーデックとしてDTSが出てきたという関係にあるようです。 デジタルではないドルビーサラウンドは1972年に公開された「時計じかけのオレンジ」と いう映画で、初のドルビーデジタル採用の映画は1992年に公開された「バットマン・リターンズ」 なのだそうです(参考Wikipedia)。 DTSは1993年に公開された「ジュラシック・パーク」で初導入された (参考Wikipedia)そうな。
極めて最近のコーデックだと以下のような対応になるみたい。

ドルビーデジタルDTS備考
Dolby TrueHDDTS-HD Master Audioロスレスコーデック
Dolby AtmosDTS:Xサウンド出力を動的にレンダリング

ここでちょっとややこしいのは、Blu-rayなどの映像メディアに記録されている コーデックと、映画作品のエンドロールに出てくるオーディオロゴ が食い違って いる場合があるって所。例えば「アナと雪の女王」のBlu-rayでは "DTS-HD Master Audio"で記録されていますが、エンドロールには "DolbyAtmos" の表示(in selected theaters という但し書きはありますけど) がされてたりします。因みに、Blu-ray再生した最初にディズニーのロゴが出てくる所 ではDolby TrueHD、CMチャプターでは Dolby Digital 5.1 と使われるコーデックは様々です。
ドルビーとDTSのどちらで収録されているかはメディアをリリースする メーカー次第のようです。例えば映像リファレンスの為に買ってた 攻殻機動隊/イノセンス のセット UHD-BDでは、イノセンスは DTS:X(7.1.4ch)で収録されてますが、リメンバー・ミーでは (英語音声のみ)DolbyAtmosで収録されてます。因みに、我が家のAVレシーバーでは DolbyAtmosはアトモス拡張が無視されてDolbyTrueHD(7.1ch)で、 DTS:XもDTS-HD Master Audio(7.1ch)で再生されます。天井スピーカー に相当するものが無いので当たり前(^^; (スピーカー配置の参考ページ)

以前、7.1chっていつぐらいからある テクノロジーなんだっけ?って書いた事がありましたが、 ドルビーサラウンド7.1というWikipediaに、 2010年3月にトイ・ストーリー3で初めて導入されたという記述がありました。 ところで、同ページに邦画で採用された作品リストも載ってますが、 図書館戦争(実写映画)で採用されたのが2015年らしい。これが一番最初なの? もしそうだとすると遅すぎない?という気も。さておき、 以前調べた通り、2012年以降のBlu-rayではDTS-HD Master Audio(7.1ch)で収録されてる という事を鑑みると、7.1chは2010年以降に一般的になってきたのではと 考えます。しかし、Blu-rayの(いわゆる旧版の方の)イノセンスは "リニアPCM(7.1ch), DolbyDigital EX(6.1ch), DTS-ES(6.1ch)" で収録されて2006年12月にリリースされてます (参考)。 話が少し逸れますが、「映画けいおん!」のBlu-ray(2012年7月リリース) は"リニアPCM(5.1ch)とリニアPCM(2ch)"「のみ」で収録されていたそうですが、 光デジタルだと転送レート的にリニアPCMでは2ch分しか送れない為、 5.1chで鳴らせない(2chとなってしまう)となったそうです。この為、 プレイヤー側で一旦 DTS 5.1chにエンコードしてから光デジタルを 通すといった技が必要な場合もあったようです。で、話をイノセンスのBlu-rayに戻すと、 サラウンドと言えば光デジタルでサラウンドアンプに繋ぐというのが 一般的だった 2006年当時に、7.1chってどうやって鳴らすんだ? という疑問が今にして湧いてきたりも。

2019/01/11

早くも無く遅くも無く。

エアコンはなんとか復活。

耳をすませばを観たり。冒頭から見たの初めてかも。 楽器演奏をするシーンでの指使いとか、今見てもスゲーなぁと 思う所があります。
耳をすませばのWikipediaで 日本の映画で初めてドルビーデジタル(5.1chサラウンド)を正式採用した作品 だという事を知ったり(因みに、ドルビーデジタルの Wikipediaによると試験採用は ゴジラvsメカゴジラみたいです)。

2019/01/10

遅めに帰着。

エアコン不調。復活できず。今日は寒いのに。

眠くて死亡。

2019/01/09

遅めに帰着。

ホンマでっか!?TVで放送されてた尾田栄一郎の自宅大公開。 想像の遥か上を行っててヤベぇ。

2019/01/08

遅めに帰着。

Webを眺めていて知った 働きアリの法則 というWikipediaの文書。働かないアリが一定数存在する話は 聞いたことがあったのですが、働かないアリ(フリーライダー)が 増えてコロニーが滅びるというのに、死んでも働きたくない(結果死ぬ)を 体現するってどんだけ働くのが嫌なんだよ!?と思ったり。

2019/01/07

遅めに帰着。

株式会社サンジゲン先日話題に挙げた「バンドリ!」をはじめ、3DCGでのアニメ作品を 制作している会社です....ってのを調べてて知りました(^^; ノイタミナ枠で放送されていた「ブラック★ロックシューター」も 同社制作だったらしい。
Wikipedia などでも触れられていますが、「リミテッドアニメーション」と呼ばれる 一秒あたりのコマ数を減らすといった手法を用いているそうな。 先日述べたような中割り枚数を調節するってのは既に行われているって 事で当たり前っちゃそうかも(^^;;
あと、バンドリ!では、背景はCGでは無さそうに思っていたのですが、 実際にモデリングに手がかかる場合やセルルック(セルアニメーション のような見た目)に馴染むように、美術専門の制作会社に外注する事 が多いらしい。意外に思う反面、確かに背景は3DCGじゃない方がセル アニメ感が出るように思います。そういった所でも2Dセルアニメに 寄ってるように感じるのかも?と思ったりも。

2019/01/06

昼頃起床。社会復帰が大変だ。

掃除したり洗濯したり。

Webを眺めていたら「インクトーバー」なるものの存在を知ったり。 2009年にJake Parkerというイラストレーターさんが個人的に始めた 企画らしい。毎年10月の一カ月間の間、インクを使って描いた絵を ネットに投稿するというものみたい (Inktober公式)。 元々画力の向上を目的として始めたようですが、少しずつ浸透して きてる?かも? 因みに、インクを使ってと述べましたが、 FAQページによれば、特にアナログである必要も、期間中毎日描く必要も 無いようで、お絵描き月間という感じでやってみれば?というノリのようです。 所で、TOOLSページに ペンやらインクやらが挙げられていますが、何気に殆どが日本の メーカーなのに へー、と思ったり。

2019/01/05

昼過ぎ起床。寝すぎ。

食事調達ついでにちょろり本屋に。未だアオイホノオの20巻を捕獲できず。

そういや3DCGキャラクターを使ったゲームなどのTVCMが流れてますが、モデルが 良く出来ているなぁと思ったりします。個人的に「MMD系モデル」と呼ぶ事に してますが、MMD(Miku Miku Dance)で色々なモデルや動画作品が発表される ようになってから、モデルの質が上がったのかなと想像します。

で、つい数日前に知った「BanG Dream! (バンドリ!)」というメディアミックス プロジェクトのアニメ(の二期放送)。キャラクターが全て3DCGとなっているのですが、 アップとかにも耐えられる感じになっているのに感心しました。動きは少々リアルに寄ってる所が あるように思いましたが、関節が固い感じも無く、程よい物理演算による揺れなど、 随分昔のトゥーンシェーダーを使った作品に比べると 格段に2Dアニメに寄せられているように思いました。

動きについてはMMDなんかでもそうなのですが、3DCGだと2Dではできなかった 細かい動きも入れられる為か、どうしてもリアルに寄ってしまうように 思います。 3DCGでは キーフレームに対する中割りが自動で行われる為、フレームレートなりに リニアに中割り映像を生成できる事から 自動的にスムーズな動きになってしまう というのが理由の一つにあるのかな?と考えます。 3DCGアニメでは、2Dアニメのように 動画検査や動画チェックといった工程が あるのか判りませんが、もし2Dのアニメーターが原画や動画(中割り)を描く 感じで、3DCGのキーフレームの中割りを何枚で行うかを決めたとしたら、 2Dアニメ独特の動画になるかも?と思ったりも。

2019/01/04

AM中に起床。

またエアコン停止。しばらく置いて復活。

ldc2の新しいのを入れてみる事にしたり。今使えているldc2はアーカイブを展開して パスを通せば使えたと思う(要は特別に何かをした記憶が無い)のですが、 同じようにldc2-1.13.0-windows-multilib.7z を展開してパスを通してみた所、コンパイルは問題無さそうなのですが、 リンクにlld-linkを使用しているようで、VS系のライブラリのリンクに失敗。 ここ、dmdやldc2はリンカをどうやって探しているのか良く分からないまま なのですが(過去に推測はしましたが)、 何故かVSのリンカを認識していないようです。前はDMDの方が VSをインストール すると急にlld-linkの方を使わなくなるのでどうなってんのか調べるという 流れだったのですが、今回はその逆。因みに、使えているldc2のバージョンは ldc2-1.10.0-beta2-windows-multilib なのですが、このバージョンはリンカが同梱 されていなかった為、VSのインストールが必須だったように思います。 ldc2-1.13.0-windows-multilib ではlld-linkが同梱されるようになった為、 それでVSの方を使わなくなったのか?とも思ったのですが、lld-linkを リネームしてみた所、今度はdmdの方に置かれているlld-linkを使おうと する為(dmdのもパスから外すとリンカが無いと怒られる)、どうやってもVSの link.exeを使おうとしません。どういう仕組みでリンカを探しているのか 調べる必要があるの?面倒臭せぇ.....

ldcのgitリポジトリをcloneして見てみた感じでは、どうやら環境変数 VSINSTALLDIRが設定されていない場合はldcに同梱されるbin/dumpEnv.bat を実行してインストールされたVSのパスから環境変数設定のバッチファイルを 探して実行する(厳密にはcmd.exeを子プロセス起動してバッチファイルを実行し、 設定される環境変数の一覧を親プロセス(コンパイラドライバ?)で受け取り、 setenv()を使って自プロセスに環境変数設定し直している) という仕掛けになってるっぽい。Cygwinのコマンドラインから ldc2を使用するので、環境変数VSINSTALLDIRは設定されていない状態です。 なので、前述の通り環境変数を設定していると思われます。 使えているldc2-1.10.0-beta2-windows-multilibとVSのリンカを認識しない ldc2-1.13.0-windows-multilib とでは、bin/dumpEnv.batの実行結果に違い 無いようなので、動きの違いがどこから生じるのか全く判らず。

その後、README.txtに何やら説明が書かれているようだというのが判ったり。 それによると、VSINSTALLDIRが設定されていれば、VSの環境が正しく設定されている と信じる、LDC_VSDIRが設定されていれば、そこから環境変数を設定するバッチファイル を実行する(挙動解析した動き)、etc/ldc2.confファイルでライブラリ群のパスを 指定し、-linkerスイッチでlink.exeを指定する事でも使える、という感じらしい。 で、LDC_VSDIRだけを設定してみた所、VSのリンカを使う動作になったり。 結果から言うと ldc2-1.10.0-beta2-windows-multilib から挙動が変わっていると いう事になるのですが、 1.13.0のようにlld-linkが含まれているにも係わらず、もしVSのリンカの使用可否を 常に常にチェックして使用可能な場合は常に使うようにしてしまうと、逆に lld-linkを使う環境に戻せないという挙動も面倒臭い感じかもと思ったり。 という訳で、LDC_VSDIRの設定有無で切り替えるのは、妥当な挙動という気がしたりも。

ソースでは以下の箇所が該当する模様。

driver/linker.cpp

    185 bool useInternalToolchainForMSVC() {
    186 #ifndef _WIN32
    187   return true;
    188 #else
    189   return !getenv("VSINSTALLDIR") && !getenv("LDC_VSDIR");
    190 #endif

useInternalToolchainなのでtrueの場合はlld-linkを使うという事なのでしょう。 個人的になんだか読みにくいので 「return getenv("VSINSTALLDIR")==NULL && getenv("LDC_VSDIR")==NULL ;」 と読み替えると、どちらの変数も設定されていなければ true になるという事みたい。 両方もしくはどちらか設定されていればfalseになるという感じ。
因みに、実際に環境変数を設定する所では以下のようになっていました。

driver/tool.cpp

    303 bool setupMsvcEnvironmentImpl() {
    304   if (getenv("VSINSTALLDIR"))
    305     return true;
    306
            : 以下環境変数を設定するコード

ここを見たので、VSINSTALLDIRが設定されていなければ自動設定コードが 動くと思った訳ですが読みが浅かったです。修行が足りません(^^;

んー、やっぱダメ。出来合いのスタティックライブラリを使用してるコードのリンクに 失敗したり。

ldc2 -m64 -L=/subsystem:windows -L=/entry:mainCRTStartup msvcrt.lib msvcmrt.lib  -L=/LTCG -L=/NODEFAULTLIB:libcmt.lib -L=/NODEFAULTLIB:libvcruntime.lib -of=mandelview.exe Ccanvas.obj Mandelbrot.obj Coloring.obj PPMutil.obj main.obj myMainWindow.obj MainPanel.obj SubPanel1.obj SubPanel2.obj GraphicFrame.obj GraphicBase.obj GraphicBaseEx.obj Spin.obj FontMan.obj NewCanvasDialog.obj gmp.obj gmpp.obj mpfr.obj mandelview.res win32frame/libwin32frame.lib util/libutil.lib win32/libwin32.lib gdi32.lib winmm.lib x64/jpeg.lib x64/libpng16.lib uxtheme.lib x64/mpir64.lib x64/mpfr64.lib
mpir64.lib(memory.obj) : error LNK2001: 外部シンボル "__iob_func" は未解決です。
mpir64.lib(assert.obj) : error LNK2001: 外部シンボル "__iob_func" は未解決です。
mandelview.exe : fatal error LNK1120: 1 件の未解決の外部参照
Error: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\bin\HostX64\x64\link.exe failed with status: 1120

Webを検索してみると、VSのバージョンにより定義が変わったとか色々 書かれているのですが、今回はldcのバージョン以外は何も変えていない ので、VSのライブラリからシンボルが無くなったという訳では無いと思われます。 それにしてもコンパイラを変えただけ(ライブラリもリンカも変えていない)なのに こんなに色々突っかかる?

2019/01/03

AM中に起床。

またエアコン停止。しばらく置いて復活。

ちょろりコーディング。構造を整理する必要がありそう。

「象牙多層球」なるものの存在を知ったり (参考blog)。 すげぇ。

2019/01/02

AM中に起床。

Webを散策していて知ったツイート。 こんな工夫がされていたとは。

「おばあちゃんとゲーム(3) (瀬野反人)」。今巻で最終巻らしい。 全巻通してTANEがやった事のあるゲームは出てこなかったのですが、 マニアックと思われるゲームも扱ってて面白かったと思います。

2019/01/01

あけましておめでとうございます。今年もよろしくお願いします。

明けて1時間経たないくらいですが、Pixivでは大量に描き初めCGがアップロードされていたり。 今年は最大で1645psくらいでした。去年よりはちょっと少ない気もしますがそれでも多いかな。

そういやTwitterのテレビCMが放送されてたな。

AM中に起床。

エアコン停止。予想を大分ハズれてます。

TV観たり、ちょろっとコーディングしたりとぐうたら過ごしたり。

エアコン。しばらく置いた後、電源入れたら今回は一発で復活。今度は耐えられるか?


TOP PREV