きしだのはてな このページをアンテナに追加 RSSフィード

2018-08-20(月) JDK12の最初のJEPはSwitch Expression(Preview)

[][] JDK12の最初のJEPはSwitch Expression(Preview) 12:23  JDK12の最初のJEPはSwitch Expression(Preview)を含むブックマーク

JDK12に最初のJEPが入りました。

JDK 12


JEP325 Switch Expressions(Preview)です。

JEP 325: Switch Expressions (Preview)


拡張Switchについては、Qiitaでまとめていますが var a = switch(f){case 0->false;default->true;}のような書き方ができるような仕様変更です。

Amberで検討されているJava構文の変更 - Qiita


これで、Switchが便利に使えるようになります。


ところで、JDK11はRCが出るはずでしたが、2つほどP1のバグが残ってるのでまだのようです。

JDK 11: No Release Candidate, yet


IBMメインフレームで使われているs390x CPUでネイティブコールに失敗してるのと、SSLの挙動がおかしいみたいですね。

[JDK-8209637] [s390x] Interpreter doesn’t call result handler after native calls - Java Bug System

[JDK-8207317] SSLEngine negotiation fail Exception behavior changed from fail-fast to fail-lazy - Java Bug System


それと、ツッコミ隊長であるStephen Colebourneさんが、OpenJDKでのLTSについて質問しています。そこにOracleのMark Reinholdさん、Red HatのAndrewさん、AdoptOpenJDKのMartijnさんが答えていて、だいたい肯定的な意見に見えますね。

What does LTS mean for OpenJDK?

トラックバック - http://d.hatena.ne.jp/nowokay/20180820

2018-08-09(木) Project LoomでJavaでの継続(Continuation)を試す

[][]Project LoomでJavaでの継続(Continuation)を試す 10:20 Project LoomでJavaでの継続(Continuation)を試すを含むブックマーク

Project Loomは、Javaで継続(Continuation)やFiber(軽量スレッド)、末尾呼び出し最適化なんかを実現するプロジェクトです。

OpenJDK: Loom


そのLoom、ながいことどうやって動かすかもよくわからない感じだったのが、先日のJVMLSにあわせてプロトタイプが公開されてました。

http://mail.openjdk.java.net/pipermail/loom-dev/2018-July/000061.html


ビルド方法はこんな感じです。

$ hg clone http://hg.openjdk.java.net/loom/loom  
$ cd loom  
$ hg update -r fibers 
$ sh configure   
$ make images

たりないパッケージはconfigureのときに教えてくれるので、それに従って入れていけばいいです。


Continuationはプログラムを動かしたり止めたりの制御ができる仕組みです。

public class LoomSample {
  public static void main(String... args) {
    var scope = new ContinuationScope() {};
    var c = new Continuation(scope, () -> {
      System.out.println("c1");
      Continuation.yield(scope);
      System.out.println("c2");
      Continuation.yield(scope);
      System.out.println("c3");
    });
    System.out.println("out1");
    c.run();
    System.out.println("out2");
    c.run();
    System.out.println("out3");
    c.run();
    System.out.println("out4");
  }
}

Continuation#yieldで動きを止めて、run()で再開できる感じ。

実行するとこういう出力になります。

out1
c1
out2
c2
out3
c3
out4

Fiberは、このContinuationにスケジューラを組み合わせて並行実行する感じになります。


で、たとえばゲームなどで、異なる動きをするキャラクタを1/60ごとに1フレーム動かすみたいな処理は自分で状態機械を組んだり面倒なコードが必要になります。継続で書ければ、それぞれの動きを通常の処理として書けばいいことになります。


往復運動する青い四角と、円運動する赤い丸を1/20秒ごとに動かすというサンプルを書いてみました。

https://gist.github.com/kishida/3898fdc50757e8d66a2f1f79f6d378db


結構いい感じに動いてます。


Loomの資料は、wikiがここにあって、JVMLS2018の資料なども公開されています。

https://wiki.openjdk.java.net/display/loom/Main


目的みたいなことは、ここでまとまってます。

Loom Proposal.md


Fiberは、伊藤さんがechoサーバーつくってます

https://github.com/chiroito/sandbox/blob/master/sandbox-loom/src/main/java/FiberEchoServer.java

2018-07-29(日) JVM Language Summitに行く-Day0 移動日

[]JVM Language Summitに行く-Day0 移動日 01:54 JVM Language Summitに行く-Day0 移動日を含むブックマーク

JVM Language Summitという、JVM言語の開発者が集まるイベントがSanta ClaraのOracle Campusであるのですけど、毎年おもしろそうな発表ばっかりで、一度行きたいと思っていたので行くことにしました。

ただ、時期が時期だけにSanJose空港行きの飛行機がちょう高かったので(もしかしたら福岡-成田が高いのかも)、台湾経由でサンフランシスコ空港に行くことにしました。


朝10時くらいに、ちょっとヨドバシでカードリーダー付USB-Cハブを買って、11時くらいに福岡空港に。

f:id:nowokay:20180803092751j:image


台湾時間13時に桃園空港についた。

トランジットに7時間あるので、台北駅まで出ました。MRT便利。

f:id:nowokay:20180803092752j:image


目的は、この変な人形の写真を撮ること。もちろんVRも撮ってます。

f:id:nowokay:20180803092753j:image



ところで、ガチャガチャコーナーがあって、NO MORE盗撮があったのですが、台湾の人にわかるんでしょうか?

f:id:nowokay:20180803092755j:image

f:id:nowokay:20180803092754j:image


台湾時間20時に飛行機に。

で、サンフランシスコ行こうとすると、一旦日本に戻ってくるわけですね。

f:id:nowokay:20180803092756j:image


そしてサンフランシスコ空港に西海岸時間17時ごろ到着

f:id:nowokay:20180803092757j:image


18:30くらいのBARTにのってMillbraeまで。

f:id:nowokay:20180803092758j:image


Millbraeで19:20くらいのCaltrainに乗り換え。

f:id:nowokay:20180803092759j:image


Caltrainでは、どっかの駅についたときに、サラサラ金髪の少年がなんか楽しそうに走ってきて、癇癪玉のようなものを外に投げて戻っていきました。楽しそう。


そしてようやく20:15くらいにSanta Claraにつきました。

f:id:nowokay:20180803092800j:image


そこからはUberで、AirBnBで予約したおうちまで。20:45くらいにつきました。

ちなみに移動手段はAirBnBのホストの人が全部調べていてくれました。ありがたや。


日本時間だと30日13時なので、27時間くらいかかってますね。

つかれた。

トラックバック - http://d.hatena.ne.jp/nowokay/20180729

2018-07-23(月) VR180カメラでVRを撮るのにハマりまくっている。みんなも買おう

VR180カメラでVRを撮るのにハマりまくっている。みんなも買おう 03:14  VR180カメラでVRを撮るのにハマりまくっている。みんなも買おうを含むブックマーク

先日Oculus Goを買って、360channelで鈴木咲がネクタイ締めてくれる3D動画を見たりして、VRおもしれーとハマっていました。

で、そういうの撮れるデバイスあるかなーと思ったら、VR180という規格をGoogleが作っていて、それに対応したカメラをLenovoやシャオミが出してることがわかり、これは可及的速やかに購入して身の回りを記録するべきだと早速購入。

買ったのはLenovoのMirage Cameraです。

そしたらすげー面白かった。登壇のたびに撮影してます。登壇気分が味わえて楽しい。

f:id:nowokay:20180724021851j:image


ちなみに、360channelの動画はこれ。

”はだける浴衣”でイチャイチャ新婚生活♡ 鈴木咲 ファンが見たいVR | 360Channel | VR動画配信サービス

Oculus Goで3Dで見るには専用アプリで見る必要があります。

https://www.oculus.com/experiences/go/1068604633204352/

ここには360版だけのコンテンツと3Dもあるものがあるんですが、平面が360度あるより、180度立体があるほうが断然よいです。立体じゃない360コンテンツだとがっかり感ある。360だと、鈴木咲が近づいてきても、ただデカくなるだけで近づいてきた感じじゃないんですよね。3Dだと「ちょ、近づきすぎ」ってなる。

で、これ書きながら見てたら、Webの360版だと浴衣ぬぐのね。ぜんぜんはだけてないなーと思ったら、そういうことだったか。

ちなみに、鈴木咲は、だいぶ前にオリエント工業の人形として有名になった人ですね。

鈴木咲さんのツイート: ”よくね、オリエント工業製のリアルな...”


いや、これは鈴木咲 紹介エントリではない。


まあそんな感じで、360よりも180で立体に撮れるほうが重要だと思って、そしてできるだけ早く3Dで記録を始めたいと思って、すぐにヨドバシで買ったのです。

で、何を撮るかというと、身の回りのいろいろを撮るのが楽しいです。コンビニの雑誌の棚とか近所の交差点とか。散らかった部屋を撮ってOculus Goで見ると、散らかった部屋が立体に見えて楽しいです。


大きい建物は結構いいです。博多駅を見上げたり。

f:id:nowokay:20180724021847j:image


それと、吹き抜けおすすめ。これは羽田第一ターミナルの吹き抜けです。手を出して撮ると、足元に床がないので恐怖体験できます。

f:id:nowokay:20180724021836j:image


あと、写真撮影OKな美術館。国立西洋美術館で考える人VRを撮ってきました。

f:id:nowokay:20180724021844j:image


地獄の門はかなりいいです。もちろん横を向けば立像が見えます。

f:id:nowokay:20180724024553j:image


絵画も、サイズ感が体験できてすごくいいです。

f:id:nowokay:20180724021840j:image

ただ、解像度の問題で細部はぜんぜん見れないけど。シニャックの点描なんかは、完全に点がつぶれて普通の絵になっちゃってます。それでも存在感は なかなかいいです。


面白いのが、上野公園からスカイツリーが見えるのを写真で撮ると、見えてる大きさに比べて小さくしか映らないのだけど、これがVRで見るとそれなりに大きく見えます。

f:id:nowokay:20180724024549j:image


一番のヒットは名刺交換VRです。名前のとおり、名刺交換するところをVR動画で撮ったのですが、これは見るとフフッってなります。

f:id:nowokay:20180724023344j:image

他にもビールを注いでもらうVRも撮ったのですが、なにかしてもらうVRは とてもいいです。コンビニレジVRとか撮りたいですが、これはなかなか難しい。

あ、でも、普通に名刺交換の作法指導なんかに いい気がしますね。


福岡オフィスを撮って東京オフィスの人に見せたりもしたのですが、オフィス紹介VRとかもよさそう。

f:id:nowokay:20180724023728j:image

不動産やさんとかは物件紹介VRやればいいと思うな。


ただ、これ撮ってもOculus Go持ち歩くわけにもいかないし、なかなかその場で人に見せれないなーと思ったら、いいものがあった。

結構ちゃんとVRに見れるので、これでその場で人に見せることができます。

Oculus Goで見るには一度PCにデータ移してからOculus Goにファイル転送する必要もあって面倒だし。

関係ないけど、このAmazonレビュー、ほとんどが違う製品のレビューで、レビューをクリックすると別製品が出てくるんだけど、どういうことなんだろう?まあいいや。


180度レンズが筐体の端にあるので、普通に手で持つと高い確率で手が映り込みます。自撮り棒あるほうが楽です。はさむやつより、ネジのほうがいいです。


それと、1度壊れて電源入らなくなって修理待てないので買いなおしたのだけど、そうするとデータも取り出せなくなるので、MicroSDカード入れておくのがいいです。

買いなおしたのは、修理には10営業日かかると言われたので、確実に8月になってしまって、それまでの面白イベントが撮れないわけで。実際、この数日でもいろいろ撮れたので買いなおしてよかった。修理あがってきたら誰かに売りつけようかと。


あ、撮るときの注意としては、食べ物とか机の上に置いてあるものとか撮るときに下に傾けて撮るとVRで見るときに酔ってしまうので、あくまでカメラは垂直に。見るときに下を向こう。

それと、手の分 前に出てしまうので、あまり近づきすぎないように気を付けること。特に食べ物を撮るときに近づきすぎると焦点が合わないので、ちょっと目の高さよりカメラを下げるくらいがいいと思います。実際にそこに目を置いてちゃんと見えるか、という感じですね。

あと、手がかぶらないように。あ、視界の範囲の人は だいたい映るので、広く共有したいものを撮りたかったら、完全に視界から人がいなくなってから撮るのがいいです。それでもあとでVRで横を見たらおっさんがちょうこっち見てるとかあります。

それと、炎天下で動画とってると熱ですぐ止まってしまいます。注意。


ということで、みんなVR撮りまくると楽しいと思うよ。特に子どもとかイヌとかネコとか。

今のところ簡単に共有する方法がなくて、ファイルを直接やりとりするしかないのだけど、FacebookGoogleがなんとかしてくれるでしょう。

2018-07-08(日) ロケールを指定してJShellを起動

[]ロケールを指定してJShellを起動 21:39 ロケールを指定してJShellを起動を含むブックマーク

  • J-Duser.language=enをつける
C:\Users\naoki>java\jdk-10.0.1\bin\jshell -J-Duser.language=en
|  Welcome to JShell -- Version 10.0.1
|  For an introduction type: /help intro

nonamenoname 2018/07/10 14:24 それは言語であってロケールではないのでは...まあ、言語も込みかな(user.countryも使えばいいのかな)

nowokaynowokay 2018/07/12 03:36 あ、確かに