読者です 読者をやめる 読者になる 読者になる

どこかのだれかへ

職業ゲームプログラマ。気になったニュースのピックアップや開発日記などを書いています。

vimのvimfilesディレクトリをgithubで管理

Vim

会社でもVimを使いたいけど環境持っていくのが面倒でやっていなかった。
やっと重い腰を上げgithubでvimfiles(.vim)を管理するようにして会社でも同じVim環境で使えるようにしてみた。

GitHub - Tepp91/vimfiles

ついでにNeoBundleからdein.vimにしたり。というか最初からvimrcを書き直してみた(まだまだ未完)

面倒に感じていた理由はNeoBundleのプラグイン管理がgitで行われているので、git submoduleにする必要があった。
ただgit submoduleは使ったことがなかったのでちょっと億劫だった。

vim scriptはほとんど理解していないが、もうちょいいろいろ書く予定。
vimrcの読書会とかも参考に読んどくといいかも。
vimrc読書会

積みゲー

雑記

ゲームをやる時間がなくて、まったく進まないのにどんどんやりたいゲームが出てくる。

FF15は最終章まで一気にやったけどここでレベル上げの作業が必要になってから勢いがなくなってしまった。
キングダムハーツシリーズとか終わる気がしない。
ゲーム開発のほうもしたいし、少しずつでも進めていかないと・・・・・・

alignによるアライメントの変化で思ってたsizeofと違う結果になった

C++ 備忘録

事の発端

頂点データを設定したが、うまく描画されず調べてみるとVertex構造体のサイズが思ってたのと違う!

struct Vertex{
    Vector4 pos;
    Vector2 uv;
};

std::cout << sizeof(Vector4) << std::endl; // 16
std::cout << sizeof(Vector2) << std::endl; // 8
std::cout << sizeof(Vertex) << std::endl;  // 32

Vector4とVector2の合わせて24byteのつもりでデータを設定していたので頂点を1個進めるごとに8byteずれていってしまう。4byteアライメントと考えても24byteならなんの問題もないはず。一体なぜ。

原因

実は、Vector4はメンバ変数として__m128を使用しており、__m128は16byteアライン*1で定義されている。 どうやらこれによってVector4を持つクラス・構造体も16アライメントになるようで、結果24byteではなく、16の倍数である32byteになったようだ。

ちなみに、さらにこのVertex構造体をHogeクラスで持つと、やはりHogeクラスも16byteアライメントになった。

*1:メモリを16byte境界で確保する

WPFのListViewでダブルクリックでコマンドを実行する

WPF 備忘録

サンプルを作成したのでGitHubにアップした。

GitHub - Tepp91/WPFSampleCollection
にあるListViewDoubleClickがそれだ。

当初、ListViewのOnDoubleClickイベントを使おうとしたが、大まかうまくいくもののListViewのヘッダー部分でもダブルクリックに反応してしまっていた。

また、トリガーなどを利用する方法もあったが、イベントでダブルクリックされたアイテムのインスタンスを取得したかったので、今回はダブルクリックでコマンドを実行する添付ベハイビアを作成することで解決した

今回嵌まったポイントしては、以下のコードだ

ListViemItemにはListViewのDataContextを見に行ってくれないため、RelativeSourceを使用することで直接見に行くようにしている。これに気付くのにずいぶん時間がかかった。

ちなみに今回はダブルクリックで対応したが、もちろん単純なクリックでも紐付けるイベントを変えれば可能だし、また添付ビヘイビアなのでListView意外にも利用することが可能なので、汎用性が高くなっている。

Visual Studioの外部ツールからVimを起動する際の引数

開発記 Vim
--servername $(ProjectFileName) --remote-silent +$(CurLine) $(ItemPath)

Adornerを利用して、プレースホルダを表示する

WPF

プレースホルダって検索すると「(UIデザイン的に)プレースホルダは止めておけ」という記事があるけれど、それは気にせず実装してGithubにアップしたので紹介しておく。

GitHub - Tepp91/WPFSampleCollection
にPlaceholderサンプルを追加した。

プレースホルダはAdorner(MSDN:装飾の概要)を使用して実装している。 Adornerを利用することで、対象のコントロールにオーバーレイする形で描画することが可能だ。 MSDNのサンプルではOnRenderを利用しているが、今回はTextBlockを利用してプレースホルダを表示している。

実装して厄介だったのは、AdornerLayerの取得タイミングだ。

Adornerは直接対象コントロールに設定できず、対象コントロールのAdornerLayerに設定する仕組みとなっている。 今回はBehaivorで実装したので、最初はOnAttachメソッドのタイミングで生成しようとAdornerLayerを取得しようとしたが、このタイミングではnullが返ってきてしまった。

色々試して、最終的に対象コントロールのOnLoadメソッドのタイミングならうまく出来ることが分かったが、思わぬところで躓いてしまった。

Boseのイヤホンが壊れたら、直営店に持って行こう

雑記

今日Boseのイヤホンが壊れたので、直営店に持って行ったら、
その場に在庫があったので、すぐに有償交換することが出来た。

普段、作業するときはBoseノイズキャンセリングヘッドホンを使っている。
会社では、Quiet Comfort 20(イヤホン)、自宅ではQuiet Comfort 15(ヘッドホン)を使用している。

今日、会社で作業しようとイヤホンをしたら「ブツッ」というノイズが頻発、 さらに左耳側は低音がやけに響く。どうも断線系の故障っぽかった。

Boseのヘッドホンなどは保証期間後に故障した場合、新品と有償交換*1することが可能だ。 実はQC15のほうは一度壊れたことがあり、その際はサポートセンターに郵送して対応した。

とりあえずサポートセンターに電話したが、混んでいるのかまったく出る気配がない。
ググってみると、直営店から送ってもらうことも可能(むしろ郵送代もかからなくて楽ちん)らしく、 帰りにBoseの直営店に行ってきた。

表参道のBoseに行って話をしたところ、直営店から送ることも可能、 さらに今回は在庫があったためなんとその場で有償交換することが出来た (郵送すれば、きっと1週間はかかっていただろう)

Boseノイズキャンセリングは非情に高機能で、今は作業する上では欠かせないガジェットの1つだ。 正直、明日からイヤホンがなくて憂鬱だと思っていたところだったので、この対応は非情に嬉しく、Boseへの信頼が増した出来事だった。

*1:税込み15120円。本体のみで付属品はなし。また保証が1年付く。