APX3300の充電ケーブル

僕はAPX3300というBluetoothオーディオレシーバーを愛用している。

コーデックはSBCだが、同じSBCのほかの製品と比べるとわりと音質がいい。少なくとも2000円以下の安物よりもいいし、SONYのSBH20よりもいい。個体差とか好みによる差はあるかもしれないが。

APX3300の充電ケーブルは端子が4極ステレオミニプラグ。これが最近壊れて先頭の端子がすぽっと抜けるようになってしまった。それでも接触が悪くなっただけで、挿してこねくり回せば何とか充電できてたけど不便だった。



ケーブルを買い替えようと思ったけど、純正品の1,080円は高い。調べたらiPod ShuffleのケーブルがAPX3300に使えることがわかったので、Amazonで安いぱちもんを買うことにした。

問題はiPod Shuffleの充電ケーブルは第2世代と第3・4世代で配線が違うこと。どちらを買えばいいのか調べたところ、Amazonの第3・4世代のケーブルのレビューにAPX3300で使えるとあったので、買って試したら充電できなかった(´・ω・`)

それで今度は第2世代のUSB充電アダプタを買って試したら充電できた。第2世代じゃねーかヽ(`Д´#)ノ

iPod shuffle2(第2世代)用USBアダプター

iPod shuffle2(第2世代)用USBアダプター

第3・4世代のケーブルのレビューに使えるって書いた人は、レビューの付け先間違えたのかな。

Windows SDK 7.1のインストール時のはまりポイント

新しいPCにWindows SDK 7.1をインストールしようとしてはまった。何度も同じはまり方をしてるのでまとめておく。

そもそもWindows SDK 7.1は何に使うのか

Visual C++ 2010 Expressにはx64用のコンパイラが入っていないので、Windows SDK 7.1に同梱されているコンパイラを使う。Windows SDK 7.1をインストールして、ターゲットプラットフォームに指定すると、Visual C++ 2010 Expressで64bitのアプリケーションを開発できる。

なぜインストール時にはまるのか

とにかくWindows SDK 7.1よりあとにリリースされたものが入っているとうまくいかない。

Visual C++ 2010のランタイムをアンインストールする

Visual C++ 2010のランタイムの

この二つのどちらかあるいは両方が新しくなっていると、インストールに失敗して以下のメッセージがダイアログに出る。

Installation of the “Microsoft Windows SDKfor Windows 7” product has reported the following error: Please refer to Samples\Setup\HTML\ConfigDetails.htm document for further information.

ログには以下のいずれかが出力される。

C:\Program Files\Microsoft SDKs\Windows\v7.1\Setup\SFX\vcredist_x86.exe installation failed with return code 5100
C:\Program Files\Microsoft SDKs\Windows\v7.1\Setup\SFX\vcredist_x64.exe installation failed with return code 5100

Windows SDK 7.1をインストールするときはこれらを事前にアンインストールする。詳細はkb2717426を参照。

Visual Studio 2010 SP1をアンインストールする

Visual Studio 2010 SP1がインストールされているとコンパイラが新しくなるため、Windows SDK 7.1のインストーラーが古いコンパイラをインストールしようとして失敗してしまう。ログには以下のエラーのいずれかが出力される。

"Microsoft Windows SDK for Windows 7 Compilers for x86" 製品のインストールで次のエラーが報告されました: インストール中に致命的なエラーが発生しました。
"Microsoft Windows SDK for Windows 7 Compilers for x64" 製品のインストールで次のエラーが報告されました: インストール中に致命的なエラーが発生しました。

これを避けるためには、Visual Studio 2010 SP1をアンインストールする。詳細はVisual Studio 2010 SP1 リリース ノートを参照。

Windows SDK 7.1のSP1用のコンパイラを追加する

Visual Studio 2010のランタイムとVisual Studio 2010 SP1をアンインストールしてからWindows SDK 7.1をインストールすると、インストールには成功する。

そこからVisual C++ 2010 Expressに対してVisual Studio 2010 SP1をインストールすると、Windows SDK 7.1のx64用のコンパイラが削除されてしまう。そのためVisual C++ 2010 SP1 Compiler Update for Windows SDK 7.1 パッケージを追加する必要がある。Visual Studio 2010 Professionalの場合は大丈夫。詳細はkb2519277を参照。

今後の課題

二度とこのページを必要としないように、古いビルド環境を前提としているあれをあれする。

昨日注文したファンがケースに付かなかった

ドスパラマグネイトMIのケースファンをPWM制御のものに付け替えるために、UCTB12Pを昨日注文したのが届いたけどケースに付かなかった。

ケースファンの取り付け部にでっぱりがあって、それがファンモーターの支持棒にぶつかってしまう。



これはねじ穴からまっすぐに支持棒がのびているのがいけなくて、もともと付いていたファンは以下のように支持棒がずれているので取り付けられる。こんなの気付かないよ。

僕はこういうことに運がないタイプなので驚きはしないけど。さて、ケースファンどうしようかなあ。

追記 2014-08-11 15:15

結局、隼120 PWM SY1225HB12M-Pを買った。これは普通に取り付けられた。同じ回転数だとケースに最初から付いていたKM121225LSのほうが静かだった。回転数固定とはいえ、かなり静音性の高い製品だったらしい。

PWMファンの回転数は、マザーボード付属のツールで細かい制御が可能だけど、EFIの設定で単にSilent Modeを選択してみたところ、アイドル時で400回転程度になった。ここまで回転数を落とすとさすがに静かだ。

Windowsでキーボードを英語配列に変更する方法

最近のWindowsでは、特定のキーボードのキー配列を変更する方法を使うのが確実。以下の記事がわかりやすい。

Windowsで日本語キーボードを強制的にUS配列化し、再起動不要で切り替える方法

人のブログを探しに行かなくてもいいように自分でも書いておく。

簡単簡単。

久しぶりにデスクトップPCを組んだ

VAIO type ZからVAIO Z1とモバイルと母艦を兼ねる生活を続けてたけど、VAIO Z1では処理能力が苦しくなってきた。最新のノートPCにはモバイルと母艦を兼ねられるようなものはない。そこで久しぶりにデスクトップPCを組むことにした。

ベースはドスパラマグネイトIM。今メモリ高いし32GBもデスクトップにいらないので、B85マザーにCore i7 4790とメモリは16GBで。BTOSSDを付けると高いので、これは別にCrucial MX100 512GBを買ってあとで組み込み。CPUファンは巨大で静かなのに交換。あとで交換したくなっても自分で付けるの大変だから。

ディスプレイとSSDと、手持ちのHDDを二つ付けるためのSATAケーブル2本を全部Amazonに注文したら、火曜日に鳥栖から発送された荷物が金曜日まで届かなかった。月曜日に注文したドスパラのPCは火曜日に発送で水曜日に届いたのに。

届いたPCのケースを開けてみたらSATAの電源が一つ足りなかったので、4ピンから変換するケーブルを一つと、インチねじが足りないっぽかったのでインチねじをヨドバシに注文。この辺はAmazonだとまとめ買い対象なのでヨドバシに。水曜日注文して木曜日着。

さらにSSDを3.5インチベイに固定するマウンタを買っていなかったので、木曜日の朝にヨドバシに注文して夜には到着。IntelSSDはBoxだとマウンタが付属しているので勘違いしていた。

結局、Amazonの荷物が水曜日に届いたところで、いろいろ足りなくて組み上がることはなかったというわけ。久しぶりにPCを組むと注文し忘れがいろいろある。

SSDをオープンベイに付けようとしたらねじ穴が合わなくてあせった。オープンベイのねじ穴ってFDD用でHDDと合わないのね。初めてPCを組んでから15年くらい経っているのに、試したことなくて知らなかった。幸い下段にHDDに合うねじ穴が一組用意されていたので、ねじ二本で固定。

組み上がったところで、ケースファンがややうるさいことに気が付いた。ケースファンはKM121225LSで1200RPM/17.5dB(A)/38.4CFMというスペック。 VAIO Z1の高い音に比べれば無視できるレベルだけど、固定回転なのでPWMに変えれば静かになるはず。

BTOで2,780円で山洋製のPWMファンにするオプションもあったけど、2,780円は高いので選択してなかった。もっと安いのを探したら、UCTB12Pというのがよさそうなのでヨドバシに注文。

パーツの追加注文はこれが最後になるといいなあ。

KancolleSniffer流FiddlerCoreの使い方

FiddlerCoreFiddlerというHTTPデバッグプロキシの、プロキシ実装部分を取り出したライブラリである。アプリケーションに組み込むと、通信内容の取得や書き換えを目的としたHTTPプロキシを簡単に実装できる。

FiddlerCoreはブラウザゲームの支援ツールの作成に便利なライブラリである。Googleの検索結果も上から二つは、艦これの専ブラの作者のページとなっている。

専ブラの実装にFiddlerCoreを使う場合の説明は、上の検索結果のトップのページが詳しい。専ブラの場合の通信の流れは、コンポーネントブラウザ⇔専ブラ⇔艦これサーバーとなる。

KancolleSnifferはFiddlerCoreでシステムプロキシを乗っ取っている。そのため通信の流れは、任意のHTTPクライアント⇔KancolleSniffer⇔インターネットとなる。HTTPが全部KancolleSnifferを経由する。それでも、特にHTTPのレスポンスが悪くなったり、CPUの負荷が上がったりはしない。

FiddlerCoreでシステムプロキシを乗っ取るときは、スタートアップで以下のようにフラグを指定する。

FiddlerApplication.Startup(0, FiddlerCoreStartupFlags.RegisterAsSystemProxy);

乗っ取ったHTTPの内容は、クライアントにレスポンスを返し終わってから呼ばれる、AfterSessionCompleteのイベントハンドラで取得できる。たいていの場合はこれで問題ないはずだ。KancolleSnifferもバージョン1.11まではそうしていた。

Fiddler.FiddlerApplication.AfterSessionComplete += FiddlerApplication_AfterSessionComplete

次期バージョンでは戦闘開始のタイミングをプレイ画面と同期する必要があるため、クライアントにレスポンスを返す前に呼ばれる、BeforeResponseのハンドラを使うようにした。

FiddlerApplication.BeforeResponse += FiddlerApplication_BeforeResponse;

これには一つわながあって、FiddlerCoreはストリーミングモードで動いているので、BeforeResponseのハンドラを呼ぶと同時にクライアントへのレスポンスの送出を始めてしまう。これでは同期しない。

そこでリクエストを送る前に呼ばれるBeforeRequestのハンドラで、戦闘のAPIだけはFiddlerCoreがバッファリングモードで動くようにしている。ついでに、艦これ以外でBeforeResponseが呼ばれないように、SessionオブジェクトのIgnoreメソッドを呼んでいる。

private void FiddlerApplication_BeforeRequest(Session oSession)
{
    var path = oSession.PathAndQuery;
    if (!path.StartsWith("/kcsapi/api_")) // 艦これのAPI以外は無視する
    {
	oSession.Ignore();
	return;
    }
    // 戦闘開始のタイミングのずれを防ぐためにバッファする
    if (path.EndsWith("api_req_sortie/battle") || path.EndsWith("api_req_practice/battle"))
	oSession.bBufferResponse = true;
}

交戦形を表示しようと思っただけなのに死ぬほど面倒なことになって、何度ぶん投げようと思ったかわからないけど、これでようやく表示が意図通りのタイミングになった。

YouTubeに艦これのプレイ動画を投稿する

ゲームのプレイ画面を録画するのもYouTubeに投稿するのも、この記事で初めてやった。以下、録画から投稿するまでの無料ソフトによる動画処理の手順を示しておく。

プレイ画面を録画する

プレイ画面の録画にはロイロゲームレコーダーを使った。定番のBandicamの無料版だとロゴが入ってしまうので。横幅が奇数の動画は多くの動画処理ソフトで正しく扱えないので、ブラウザの横幅を偶数にしておくこと。

Flashの部分をクロップ

ブラウザ全体が録画されるのでFlashの部分を切り取りたい。定番のAviUtilではロイロゲームレコーダーの出力したAVIファイルを読めなかった。回避策はあるらしいが面倒なので却下。Avidemuxが使いやすかったので、これで800×600にクロップすると同時に、不要な前後の動画を切り取るトリムも行った。

入力がMotion JPEGなので出力も合わせようと思ったら、Motion JPEGのコーデックが正しい動画を出力しなかったり、「Cannot setup codec. Bitrate too low ?」とエラーになったりした。バグらしいが解決策が見当たらないのでMP4にして回避した。

文字の書き込み

AviUtilの方が凝ったことができるのだが、矢印一個入れるだけなのでムービーメーカーのキャプション機能ですませた。

動画のエンコード

ムービーメーカーでキャプションを入れると同時に、YouTube向けのエンコードを行った。最初は適当に出力してYouTubeにおまかせしてみたが、動きが激しい部分が低いビットレートできれいに表示されなかった。そこでYouTubeのお勧めに沿って、ビットレートを5,000kbpsにサイズを960×720にしてエンコードしたらうまくいった。

今後の課題

次やるときはAviUtilを使ってみたい。