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

しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

Azure の一部インスタンスタイプでは AMD の CPU がまだ使われている

Ryzen のニュースを見て、松山の緑色した独身の生物が「AMD が使われているクラウドが無いから、仕方なく Intel CPU が使われているクラウドを使ってる」とか、舐めたことを言ってたので書きます。

Twitter でのやり取りも一応載せておきます。

タイトルの通り、Azure の一部インスタンスタイプでは未だに AMD の Opteron HE が使われています。リージョンで異なるみたいですが、Japan East で A シリーズの仮想マシンを作ると高確率で当たります。*1

昔から Azure では Intel ではなく AMD の Opteron が使われてきました。もう 5 年近く前になりますが、モリス先輩がブログで懐かしい画面入りで書いてました。

A シリーズは AMD の A と言われるぐらいだった気がします。新しく追加された D シリーズ以降は基本的に Intel Xeon が使われているので、数は少なくなってきています。

このためだけに A2 インスタンスの VM を立ち上げて確認しました。実際に Opteron HE でした。

f:id:shiba-yan:20170228114343p:plain

他にも内部的に A1-3 が大量に束ねられて作られている App Service では、普通に新しく作成してもまだまだ AMD Opteron HE のインスタンスに当たります。

インスタンスのサイズを変更しても Opteron HE のままなので、Japan East では Intel Xeon ベースの App Service はまだ用意されていないのかもしれません。

f:id:shiba-yan:20170228114522p:plain

個人的に非常に問題だと思っているのが、A シリーズには AMD Opteron と Intel Xeon が混ぜて使われているのですが、Xeon のインスタンスは Opteron に合わせる形でパフォーマンスにスロットリングがかけられていることです。古い Opteron が足を引っ張っている形です。

早く減価償却が終わって AMD Opteron なインスタンスが全て消えることを期待しています。

*1:US のリージョンは既に減価償却が終わったのか、ほぼ Intel Xeon に

Boot Camp 上の Windows 10 で Bluetooth が使えなくなっていたのが直った話

Mac Boot Camp

macOS Sierra 10.12.1 を入れた途端に Boot Camp で動かしている Windows 10 だけで Bluetooth が動作しなくなっていたのですが、今日ちゃんと動くようになりました。

これまでの経緯については前回書いたエントリを呼んでください。

起動したときは問題なく動作しますが、スリープから復帰すると Broadcom Serial Bus Driver over UART Bus Enumerator が起動できなくなるという、非常に厄介な問題でした。

恐らくファームウェアの問題だと思っていましたが、気まぐれで macOS Sierra 10.12.4 Public beta 3 を入れたところ、スリープから復帰しても動き続けていました。

f:id:shiba-yan:20170228002144p:plain

もう半分以上諦めていたので、これまでのアップデートで確認はしていなかったです。ひょっとしたらとっくに改善されていたのかもしれません。

正直なところ Boot Camp に付いてくる Bluetooth ドライバは微妙に古くて不安だったので、適当にジェネリックな新しいドライバを拾ってきてインストールしました。

f:id:shiba-yan:20170228003212p:plain

今は問題なくキーボードとマウスが使えています。毎回ペアリングで問題になりますが、今回は両方ともすんなり上手くいったのでかなり良い感じです。

微妙にはまったのが、これまで使っていた USB BT ドングルが有効になっている間は、内蔵の Bluetooth が無効になるということでした。ドングルを外して、デバイスの再認識を行うと解決です。

残る不具合は DisplayPort を使っている環境で、スリープから復帰すると画面が乱れる問題です。これもファームウェア絡みだと思ってますが、Intel の最新ドライバを入れると少しだけましになった気がします。

10 年近く MacBook Pro を Boot Camp で使ってきましたが、こんなに不具合が多いのは初めてです。

ResXManager を使って UWP アプリケーションの多言語対応を簡単に行う

Visual Studio UWP

UWP アプリケーションを作った場合には、日本語だけの対応だとダウンロード数が伸びにくいので、出来れば多言語に対応しておいた方が良さそうです。

これまで手動で頑張って ResX を追加するという、非常に生産的ではないことを行なっていましたが、Visual Studio に神拡張機能があることを知ったので試しました。

ResXManager - Visual Studio Marketplace

ResX をキー名ベースで編集できるだけでも便利なのですが、Microsoft Translator や Bing Translator を使って、自動的に機械翻訳された ResX を作ってくれます。

今回は手軽な Cognitive Services の Translator Text API を使ってみました。Azure Portal で Cognitive Services のアカウントを新しく作ります。API Type を Translator Text API にするのを忘れないように。

f:id:shiba-yan:20170220130609p:plain

作成が終わったらアクセスキーをコピーしておきます。これを ResXManager に設定する必要があります。

f:id:shiba-yan:20170220135531p:plain

翻訳の準備が出来たので、新しく UWP アプリケーションを作成して、最初に元になる言語リソースを追加しておきます。今回は日本語をベースに各言語に翻訳するので、ja-JP でリソースを作成しておきました。

予めキーとテキストを入力しておきます。最初の 1 つ目はファイルを作成しておかないといけないようです。

f:id:shiba-yan:20170220140740p:plain

Visual Studio から ResXManager を開いて、新しく言語を追加します。まずはわかりやすいように en-US を追加しました。ダイアログでは入力補完が効くので簡単です。

f:id:shiba-yan:20170220135828p:plain

英語だけではつまらないと思ったので、ついでにドイツ語も追加してみました。この時点で ResXManager の表示は以下のようになっているはずです。

f:id:shiba-yan:20170220140412p:plain

言語を追加しただけではリソースファイル自体は生成されないのですが、赤くなっている部分のセルをダブルクリックするとファイル作成ダイアログが表示されるので、ここから作ることが出来ます。

これで機械翻訳 API の準備が出来たので、画面下にあるタブから Translate を選びます。上に機械翻訳サービスのタブがあるので、Azure を選んでコピーしておいたアクセスキーを張り付けておきます。

f:id:shiba-yan:20170220143248p:plain

Source と Target を選択しないといけないので、Source には日本語を Target には英語とドイツ語を選んでおきます。これで準備は完了です。

画面下にある Restart ボタンをクリックすると、翻訳が実際に行われます。

f:id:shiba-yan:20170220140509p:plain

翻訳結果はドロップダウンメニューにもなっているので、選択すると別の翻訳結果を見ることも出来ます。

今は Azure しか設定していないですが、他の API の設定を行うと、それぞれから最良の結果を選べるようになっているみたいですね。

f:id:shiba-yan:20170220143604p:plain

最後に Apply All か Apply Selected をクリックすると、実際にリソースファイルに反映されます。

f:id:shiba-yan:20170220140545p:plain

予め 1 つはリソースを作っておく必要はありますが、後は完全に自動で行えるのはかなり便利でした。

機械翻訳も最近はニューラルネットワークを使うことで質が上がっているので、かなり良い選択になった気がします。今回は UWP に対して使いましたが、当然ながら ASP.NET など ResX を使うアプリケーション全てに対応しています。