親のノートは Windows 8 なんですが、今月の Windows Update でサポート終了になったので、Windows 8.1 にバージョンアップしてました。

ストアで Windows 8.1 へのバージョンアップを選択…インストールできない。何度か弾かれた後バージョンアップ手順をよくよく見てみたら、Windows Update で「重要」扱いのものはデフォルトでチェックされないものであっても前もって全部あてておく必要がある、というのに気付きました。むーん。エラーメッセージに表示してよ。

よく考えたら Windows 10 にバージョンアップすべきだった気がしてきたのだけど、一応 Windows 8.1 のメインストリームサポート期限は2018年01月09日、延長サポート期限は2023年01月10日なので、ハードウェアの実用寿命の方が先に来るでしょうから結果的に問題なさそうです。無償バージョンアップできるうちにすべきかどうかは分からないですが…

水曜に Arduino UNO R3 を買ってきました。買ってから気づいたんですけどこれ SMD edition の方、つまりマイコンチップが DIP パッケージではなく TQFP パッケージなんですな。まあ付けたり外したりする予定はないんで別にいいんですが。

Read the rest of this entry

性能向上
  • QuickTime コンポーネントの処理を効率化した。

Read the rest of this entry

会社でディレクトリが結構階層化されてる git リポジトリをいじってて、grep する時に Makefile.in とかが引っかかるのが邪魔だなぁ、と思いました。

たとえば .o を除外するだけなら grep --exclude='*.o' とでもすればいいですが、同じ .c でもリポジトリにあるものだけ対象にして yacc/lex で .y/.l から自動生成したものは除外したい、とかなると途端に面倒になります。

Read the rest of this entry

Start Developing iOS Apps (Swift) を見ながらチビチビ進めています。Swift は末尾にセミコロンを書かない言語なので慣れません。書いてもいいみたいですけど。

チュートリアルを進めていくと、ビューに配置したコントロールを「Control-drag」してソースコード上にドロップ、という操作が出てきて、これが VNC 経由ではできないのでモニタを繋いで入力を切り替えて、ととても面倒なことになっていたのですが、右クリックしたコンテキストメニューからできることに5分ほど前に気づきました。

さて本題。Work with View Controllers の節まで来たところで、書いてある通りにやってもタップジェスチャーが通知されないという問題に遭遇しました。試しにストーリーボード上に UITapGestureRecognizer を配置するのではなく、ググるとヒットする以下のようなコードで書いてみてもやっぱりダメです。

override func viewDidLoad() {
    super.viewDidLoad()

    let gr = UITapGestureRecognizer(target: self, action: "tapped:")
    photoImageView.addGestureRecognizer(gr)
}

func tapped(gestureRecognizer: UITapGestureRecognizer) {
    print("tapped")
    ...
}

何があかんのや。

ちなみにこれより前の節にある、ボタンが押されたことをハンドルするとかテキストフィールドの編集状態を delegate で受け取るとかいうことは問題なくできています。

uOP$ に乗ってるかどうかの違いなんじゃないの、と指摘されました。uOP$ のことすっかり忘れてました。Sandy Bridge の uOP$ の解説記事はこんなのがあります(英語)

Read the rest of this entry

命令ベンチマークツールでループ中の命令数を増やすとスループットが下がる件にからんで、パフォーマンスを計測する方法一般についてちょろっとググったら、Linux の perf コマンドを使う記事を見つけました。ってこれよく見たら x86/x64 最適化勉強会で聞いたはずじゃん。

これの 3.2 の「アーキテクチャの理解」のところで、命令列が長いと IPC が下がる、というようなことが書いてあります(マイクロアーキテクチャは同じく Sandy Bridge)。

まあ、他の人のところでも同様のことが起こる、ということが(より詳細なデータとともに)分かっただけであって、なんで長い依存列があると遅くなるのかはよく分からんのですが。

最近、命令ベンチマークツールをもうちょっと汎用的に組めるように作りなおしているのですが、さっき試しに計測したら Sandy 上で pmovzxbw のスループットが 0.5 と出てきました。以前のツールで測った時は 1 になっていました。あれれと思って Intel の最適化マニュアルを見たところ、0.5 が正しいようです。あとよく見たら palignr も正しくはスループット 0.5 で、これまた以前のツールでは間違った値が出てきています。

Read the rest of this entry

そういえば調べてませんでしたが、動作することを確認しました。

なお、Windows 10 をアップグレードインストールした場合、アップグレード直後は使えないことが予想されます(Windows 10 に限りませんが)。これは、Ut Video Codec Suite は DLL をシステムディレクトリにインストールしているからです。改めて Ut Video Codec Suite を(再)インストールすると使えるようになるはずです。

その他
  • MFT 版のコーデックを削除した。

Read the rest of this entry