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

Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

God Mode のショートカットをDesktopに配置するとJavaが落ちる

少しばかりハマったので、備忘録。

Windowsには特殊な名前のフォルダを作っておくと、コンパネの操作を一覧で表示できるという機能があります。

Windows 10で「神モード(GodMode)」を使う方法 - GIGAZINE

結論からいうと、これを配置しておくと、Javaベースのプログラムでファイルダイアログを出そうとすると落ちる場合があります。(x86 / x64にかかわらずと思われる)

発端は astah で ファイルを保存してようとして、CTRL-Sしてファイルダイアログを出そうとするタイミングで落ちたからでした。(おれのクラス図を返せ)

落ちている、メソッド名(getDisplayNumberOf) でググルと

[JDK-8178873] JFileChooser crashes JVM in Windows 10 Creator Update (Version 1703) - Java Bug System

がヒットしましたが、再現できずCloseされております。メソッド名から、Graphics Driverのバグかな(Non Pnp Displayが沢山表示されるとかいうバグ)と思ったのですが、無罪でした。

少し日付の範囲を絞って検索して、以下がみつかったので、そのとおりGodModeのフォルダを消してみると、落ちなくないりました。

とんでもないピンポイントバグを踏み抜いて数時間浪費しましたので、みなさんもお気を付けください。そのうちFixされるでしょう。

Cosmos DB with Table API

昨日にひきつづきCosmos DBについてのメモで、今回は Table APIです。

SDKについて

現状のSDK対応マトリクスは以下の通りで、Table API はまだ .NET でしかサポートしていません。

f:id:StateMachine:20170518113528p:plain

NET SDKは、Nugetでバイナリのみ公開されております。

www.nuget.org

また、

You can download the Azure Storage Preview SDK from NuGet, that has the same classes and method signatures as the public Azure storage SDK, but also has the ability to connect to Azure Cosmos DB accounts using the Table API (preview).

とのことで、クラス名、メソッドシグネチャ等々 SDK レベルでの互換は保たれているようなのですが、別ソースです。しかし、ソースは公開されていないようです。

Source code for the CosmosDB compatibility? · Issue #454 · Azure/azure-storage-net · GitHub

OSSといいつつ最新のソースを公開しないのはいかがなものかと(他のJava SDKしかり)

おまけ f:id:StateMachine:20170518113750p:plain

とりあえず動きがあったら、また更新します。

Azure Cosmos DB with Java

Azure Cosmos DB がリリースされました。うんちく的なものは、

などが参考になるのではと思います。

作成

ポータルから、Cosmos DBで検索すると、作成メニューがでてきます。 URI(一意)とAPIを選択します。

f:id:StateMachine:20170517111920p:plain:w300

PIは以下から選べます。

  • Gremlin (Grpah)
  • MongoDB
  • SQL (Document DB)
  • Table (Key-Value)

同一URIで複数のAPIがいけると思っていたのですが、ちと違いました。APIでDocument DBを選択した作った後の画面が以下になります。

f:id:StateMachine:20170517112045p:plain

Javaから使ってみる

クイックスタートから言語毎のサンプルがダウンロードできます。Javaタブを開きまず、必要なデータ(Itemコレクション)を作成してから、サンプルをダウンロードします。

download したサンプルは、mavenプロジェクトになっているので、EclipseなんかでImport Exsiting Maven Projectすれば取り込めます。

ただし、Project Lombok が必要らしいので、JARをダウンロード後、ダブルクリックして起動します。適当にIDEを見つけてインストールしてくれます。

あとは、IDE内でTomcatサーバーを立てて実行します。

実行

ポータルからダウンロードすると、URIやキー情報は、DocumentClientFactory.java に埋め込まれていますのそのまま実行できます。

実行すると例によってToDoアプリが起動しますので、適当に入力すると、データが格納されます。

f:id:StateMachine:20170517130828p:plain:w640

格納されたデータは、ポータルのドキュメントエクスプローラーから参照できます。

f:id:StateMachine:20170517130939p:plain

補足

Javaのチュートリアルは、以下。

DocumentDB を使用した Java アプリケーション開発のチュートリアル | Microsoft Docs

pom.xml に書かれている Document DB SDKのバージョンがとても古いのですが、最新の1.8にしても動きます。ソースはGitHubにあります。

GitHub - Azure/azure-documentdb-java

以上