C++ でも最近はスマートポインタが使えるわけですが、 std::shared_ptr を作る関数である std::make_shared が IDE の静的解析と相性が悪くて辛みを感じています。(とりあえず CLion での挙動ですが、 VS でも同じような感じじゃないかなぁ…)

  • std::make_shared<Hoge>( とまで打った時に出てくる引数サジェストが Args&&... になってて全く役に立たない。 Hoge クラスのコンストラクタから情報を引っ張ってきてほしい。ついでに言うと引数間違えてても IDE からは警告が出ない(コンパイルして初めて間違っていることが分かる)。
  • Hoge クラスのコンストラクタを右クリックして呼び出し元を検索しても出てこず、よくよく考えたら make_shared 経由なので自分で書いたコードからは直接呼ばれてなかった。make_shared を書いた位置がヒットしてほしい。

make_shared に限らないし、根本的にはスマートポインタにも限らないし標準ライブラリにも限らないわけですが、何とかならんのですかねこれ。

Read the rest of this entry

macOS 10.13 High Sierra の次のベータで 32bit アプリ起動時に警告が出るようになったそうで。以前から「High Sierra は 32bit アプリを『妥協無しに (without compromise)』サポートする最後の macOS である」とはアナウンスされていましたが、実際にそういう挙動になってきたということになります。

『妥協無しに』がどういう意味合いなのか分からないので 10.14 以降でどうなるのか(完全に動かなくなるのか、最適化レベルが下がる程度なのか、とか)判然としないのですが、私としては QuickTime がどうなるのか気になります。QuickTime は 32bit のフレームワークだからです。64bit のプロセスからはプロセス間通信を経由して使うようになっています。

まさか QuickTime のためだけに 32bit プロセスを動かす機能を維持するとも思えない(そもそも QuickTime は macOS SDK から削除されている)ので、10.14 か遅くとも 10.15 あたりで 32bit サポートと一緒に QuickTime も消滅するのでしょう。

今頃 iMovie をバージョン 9 (正確なバージョンは忘れた)からバージョン 10.1.8 にアップデートしたんですが、バージョン 10 以降では動画を出力する際に任意の QuickTime の映像コーデックを使うことができなくなってるようです。mp4 (たぶん中身は H.264)か ProRes だけ。読み込みはできるっぽい(ちゃんと検証してない)。

普通の使い方なら別に何の問題もないんですが、私は自分の映像コーデックのテストに使ってるので何もできなくなってしまいました。というわけでフリーでちゃんとメンテナンスされていて任意の QuickTime の映像コーデックを使える編集ソフトないですか。(必ずしも編集できる必要はないんだけど)

機能追加
  • UMxx: QuickTime 版のエンコーダを追加した。
性能向上
  • UMxx: 全体的に高速化した。
バグ修正
  • ULxx: エンコーダに誤った設定をしてもエラーを返さなかった。

Read the rest of this entry

2017年12月にいただいた寄付は以下の1件です。ありがとうございました。

日付 お名前 金額
12/11 紳士MMDer 3,000円

バージョン 19.0.1 で追加された UtVideo T2 (UMxx) ファミリの詳細などです。

Read the rest of this entry

機能追加
  • 速度を重視した新しいコーデック (FourCC: UMRA, UMRG, UMY4, UMY2, UMH4, UMH2) を追加した。QuickTime コンポーネントではデコードのみ。

Read the rest of this entry

1つのベクタレジスタ(たとえば __m128i のこと)を返すラムダはきれいにインライン展開される(つまり、妙な一時変数がメモリ上に取られたりしない)ことは分かっているんですが、複数のベクタレジスタを返す普通の(=ラムダではない)関数がインライン展開されるときはどうなのか、というのが気になりました。

Read the rest of this entry

std::tuple の要素アクセスで std::get はあっても std::set がないのはなんでだろうか、と思ってたんだけど、 std::get は参照を返すのでそこに代入すればそれでいい、ということに気づいた。

あと std::set はコンテナクラスである…

ゆーむさんじゅうちょめちょめさい、というネタが使えなくなりました。