SlideShare a Scribd company logo
NetBeansのメモリ使用ログから
機械学習で
きしだが働いてるかどうか判定する
2017/5/20 LINE Fukuoka きしだ なおき
Java8 コーディング
ベストプラクティス
&
自己紹介
●
きしだ なおき
●
LINE FukuokaでJavaを書いてます
今日のはなし
●
Java8コーディングベストプラクティス
●
NetBeansのメモリログから、機械学習で
きしだが働いてるかどうか判定する
ところで、なぜ2本立て?
●
Call for Papersに2本出した
– Java8コーディング〜(30分)
– NetBeansのメモリログから〜(50分)
ところで、なぜ2本立て?
●
両方とおった
– お、おう
ところで、なぜ2本立て?
●
やっぱり1枠で。50分で
– でもJava8のほうが人気タカカッタヨ
ところで、なぜ2本立て?
●
あ、45分で
– Java8中心にやろう
– 先にNetBeansのメモリログから〜をやります
NetBeansのメモリログから
機械学習で
きしだが働いてるかどうか
判定する
メモリログ
●
ヒープの使用量
あそんでる あそんでるなんかしてる
どう取るか
●
JMXという仕組みがある
●
InfluxDBにつっこむ
●
Grafanaで見る
構成
なんかプログラム
JMX
https://github.com/kishida/analyzenb/blob/master/src/main/java/kis/analyzenb/JmxInflux.java
問題
●
Javaのメモリ使用グラフは、GCがあるので波形データに
なる
– 単純な閾値では判定できない
●
時系列データの判定は単純な機械学習では難しい
周波数解析する
●
時間ごとの周波数解析を行う
●
フーリエ変換
– データ全体の周波数解析を行う
– 三角関数で畳み込む
●
窓関数付きフーリエ変換
– 時間ごとにデータを切り出して
フーリエ変換を行う
●
ウェーブレット変換
– 短く切り出した三角関数などを使って
畳み込む
– 処理も簡単
http://d.hatena.ne.jp/nowokay/20161227
※畳み込み
zip(data1, data2)
.map((a, b) -> a * b)
.sum()
離散ウェーブレット変換
●
隣同士を引いて2で割る
– 移動差分
– ハイパスフィルタになる(高い周波数だけ残す)
– ウェーブレット値
●
隣同士を足して2で割る
– 移動平均
– ローパスフィルタになる(低い周波数だけ残す)
– より低い周波数の解析に使う
ウェーブレット変換でできること
●
情報圧縮
– JPEG2000で使われている
●
電子すかし(ステガノグラフィ)
– 人間にはわからないように情報を画像などに埋め込む
上位1/4の周波数成分だけ残してウェーブレット逆変換
http://d.hatena.ne.jp/nowokay/20161229
ウェーブレット変換の適用
●
512データ(8分30秒)をウェーブレット変換
する
●
512 = 2^9
– 9+1=10周波数のデータができる
機械学習
●
ディープじゃないラーニング
●
3層のニューラルネットワーク
●
各時間ごとに10個のデータ
●
出力は1つ
●
10 -> 5 -> 1
https://github.com/kishida/analyzenb/blob/master/src/main/java/kis/analyzenb/BackPropergation.java
教師データはどうする?
●
機械学習では、学習用に、入力値とその入力が
どう判定されるべきかという教師データが必要
Thread count
●
NetBeansが使っているスレッド数
●
NetBeansを触ってないときはスレッド数が32
●
教師データに使える
機械学習とか不要では?
●
ロマンです
結果
●
なんとなく判定できている
https://github.com/kishida/analyzenb/blob/master/src/main/java/kis/analyzenb/UsageData.java
他の手法
●
ニューラルネットではなくSVMで識別する
●
RNN(循環ニューラルネットワーク)を使う
– 学習がうまくいけばウェーブレット変換と
同じ計算になりうる
●
近傍法など障害検知手法を使う
– 多値分類はできない
– 学習が不要
まとめ
●
時系列データのウェーブレット変換からなんと
なく状態を把握することができた
●
常に働いていれば判定など不要
Java8コーディング
ベストプラクティス
話すこと
●
Java8でのコーディングで気をつけることを
まとめる
●
APIの使い方自体はちゃんと把握しておく
Agenda
●
一般的なこと
●
Java 8
●
Java 7以前
一般的なこと
●
Immutability
●
論理式をうまく使う
●
大事なものはインデントを浅く
●
オーバーロード
Immutability
●
変数への再代入を避ける
●
ImmutableList/Mapを使う
変数への再代入を避ける
String message = "default";
if (hoge) {
message = "ほげ";
}
String message;
if (hoge) {
message = "ほげ";
} else {
message = "default";
}
変数への再代入を避ける
String message;
if (hoge) {
message = "ほげ";
} else {
message = "default";
}
●
再代入がないほうが最適化がかかりやすい
●
代入を忘れた場合にコンパイルエラーになる
ImmutableList/Mapを使う
●
Guavaのライブラリ
●
Collectors::toListの代わりに
ImmutableList::toImmutableList
●
ofが便利
– Java 9が待てない人のために
toImmutableList
strs.stream()
.map(String::toUpperCase)
.collect(ImmutableList.toImmutableList());
●
値が変更されないことを明示する
●
並列実行で不具合が起きない
ofが便利
●
固定値のListやMapを作る場合
●
Java 9ではList.of/Map.ofが入る
Map<String, String> countries = ImmutableMap.of(
"JP", "日本",
"US", "アメリカ");
論理式をうまく使う
●
ド・モルガンの法則を活用する
●
片方が定数リテラルを返す条件演算子は
論理演算にできる
●
ifでbooleanを反転させない
ド・モルガンの法則を使う
if (!(str != null && !str.isEmpty()))
{
...
}
if (str == null || str.isEmpty()) {
...
}
リテラルを返す式を論理演算に
● 片方がbooleanリテラルの条件式は論理演算に
boolean f = str == null ? true : str.isEmpty();
boolean f = str == null || str.isEmpty();
大事なものはインデントを浅く
●
早期リターン
if (hoge) {
Foo foo = bar.getSomething();
return foo.getImportantValue();
}
return null;
if (!hoge) {
return null;
}
Foo foo = bar.getSomething();
return foo.getImportantValue();
ifでbooleanを反転させない
●
booleanリテラルを返すとき、条件が
なりたったときにはtrue、elseでは
falseを返すようにする。
if (hoge) {
someProc();
return false;
} else {
anotherProc();
return true;
}
if (!hoge) {
anotherProc();
return true;
} else {
someProc();
return false;
}
オーバーロード
●
引数省略のために使う
●
処理を集約させる
●
引数が多いものを前に
void foo(int count, String message) {
IntStream.range(0, count)
.mapToObj(i -> i + ":" + message)
.forEach(System.out::println);
}
void foo(String message) {
foo(1, message);
}
void foo() {
foo(null);
}
処理が違うならメソッド名を変える
List<Product> find(Author a);
List<Product> find(Category c);
List<Product> findByAuthor(Author a);
List<Product> findByCategory(Category c);
Java 8
●
Stream
●
Optional
●
FunctionalInterface
●
ラムダ
●
Date and Time
Stream
●
forEachのifをfilterにできる
●
forEachでの値変換はmapにできる
●
forEachの入れ子はflatMapにできる
●
count() > 0は使わない
forEachのifをfilterにできる
strs.forEach(s -> {
if (s.length() >= 5) {
return;
}
String upper = s.toUpperCase();
Stream.of(upper.split(","))
.forEach(Syastem.out::println);
});
strs.stream()
.filter(s -> s.length() < 5)
.forEach(s -> {
String upper = s.toUpperCase();
Stream.of(upper.split(","))
.forEach(System.out::println);
});
forEachでの値変換はmapにできる
strs.stream()
.filter(s -> s.length() < 5)
.forEach(s -> {
String upper = s.toUpperCase();
Stream.of(upper.split(","))
.forEach(System.out::println);
});
strs.stream()
.filter(s -> s.length() < 5)
.map(s -> s.toUpperCase())
.forEach(upper -> {
Stream.of(upper.split(","))
.forEach(System.out::println);
});
forEachの入れ子はflatMapにできる
strs.stream()
.filter(s -> s.length() < 5)
.map(s -> s.toUpperCase())
.forEach(upper -> {
Stream.of(upper.split(","))
.forEach(System.out::println);
});
strs.stream()
.filter(s -> s.length() < 5)
.map(s -> s.toUpperCase())
.flatMap(upper -> Stream.of(upper.split(",")))
.forEach(System.out::println);
同じオブジェクトには同じ変数
strs.stream()
.filter(s -> s.length() < 5)
.map(s -> s.toUpperCase())
.flatMap(upper -> Stream.of(upper.split(",")))
.forEach(System.out::println);
strs.stream()
.filter(a -> a.length() < 5)
.map(b -> b.toUpperCase())
.flatMap(upper -> Stream.of(upper.split(",")))
.forEach(System.out::println);
Streamで書くメリット
●
行われる操作が限定される
●
変数の行く先を追わなくてよい
●
結果、読みやすくなる
strs.stream()
.filter(s -> s.length() < 5)
.map(s -> s.toUpperCase())
.flatMap(upper -> Stream.of(upper.split(",")))
.forEach(System.out::println);
count() > 0は使わない
strs.stream().filter(s -> s.length() > 5).count() > 0
strs.stream().anyMatch(s -> s.length() > 5)
例外処理はあきらめる
●
例外と関数型プログラミングは相性が悪い
●
あきらめてtry〜catchを書く
●
streamをあきらめてfor文を使う
Optional
●
ifPresentのifをfilterにできる
●
ifPresentでの値変換はmapにできる
●
ifPresentの入れ子はflatMapにできる
●
引数には使わない
●
orElseThrowにException::newを書かない
ifPresentのifをfilterに
strOpt.ifPresent(s -> {
if (s.length() >= 5) {
return;
}
String upper = s.toUpperCase();
findSome(upper) // return Optional
.ifPresent(Syastem.out::println);
});
strOpt.filter(s -> s.length() >= 5)
.ifPresent(s -> {
String upper = s.toUpperCase();
findSome(upper) // return Optional
.ifPresent(System.out::println);
});
ifPresentでの値変換をmapに
strOpt.filter(s -> s.length() >= 5)
.ifPresent(s -> {
String upper = s.toUpperCase();
findSome(upper) // return Optional
.ifPresent(System.out::println);
});
strOpt.filter(s -> s.length() >= 5)
.map(s -> s.toUpperCase())
.ifPresent(upper -> {
findSome(upper) // return Optional
.ifPresent(System.out::println);
});
ifPresentの入れ子をflatMapに
strOpt.filter(s -> s.length() >= 5)
.map(s -> s.toUpperCase())
.ifPresent(upper -> {
findSome(upper) // return Optional
.ifPresent(System.out::println);
});
strOpt.filter(s -> s.length() >= 5)
.map(s -> s.toUpperCase())
.flatMap(upper -> findSome(upper))
.ifPresent(System.out::println);
どこかで見た。
●
Optional.ifPresentはStream.forEachと同じ
– Optionalを要素1つまでのStreamと考える
引数にOptionalを使わない
●
メソッド定義者がnullに対応する
●
フレームワークの入り口は除く
OrElseThrowにException::newを
渡さない
●
なにかのキーから値を取得しようと思って失敗
している。
●
例外の原因を究明するためにはキーの値が必要
●
例外メッセージにキーの値を含める必要がある
FunctionalInterface
●
実装したクラスを作らない
●
ラムダを割り当てた変数を作らない
String twice(String s) {
return s + s;
}
strs.stream()
.map(Util::twice)
.forEach(System.out::println);
Function<String, String> twice = s -> s + s;
strs.stream()
.map(twice)
.forEach(System.out::println);
ラムダ
●
むやみにAtomicInteger/Longを使わない
AtomicInteger count = new AtomicInteger(0);
strs.stream()
.filter(s -> s.length() < 5)
.forEach(s -> count.incrementAndGet());
int[] count = {0};
strs.stream()
.filter(s -> s.length() < 5)
.forEach(s -> ++count[0]);
Date and Time
●
自分で時間を計算しない
long TIME_OUT_MILLIS = 3 * 60 * 60 * 1000;
long TIME_OUT_MILLIS = Duration.ofHours(3).toMillis();
Java7以前
●
LinkedListは使わない
●
IOExeptionをRuntimeExceptionでラップ
しない
LinkedListは使わない
●
ほとんどの場合、ArrayListのほうが速い
●
LinkedList.remove/insertの実装がひどい
– 値をたどってから操作を行う
– 途中への値挿入・削除が効率いいという連結リスト
のメリットを持っていない
IOExceptionを
RuntimeExceptionでラップしない
●
UncheckedIOExceptionを使う
try {
readFile();
} catch (IOException ex) {
throw new RuntimeException();
}
try {
readFile();
} catch (IOException ex) {
throw new UncheckedIOException();
}
まとめ
●
細かいことを積み重ねるとケアレスミスが減っ
ていきます。
●
1ヶ月くらいで慣れて自然にバグが減ります(個
人の感想です)

More Related Content

What's hot (19)

PDF
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
 
PPTX
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
Koichi Sakata
 
PPTX
LINQ 概要 + 結構便利な LINQ to XML
ShinichiAoyagi
 
PPTX
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
JustSystems Corporation
 
PDF
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
bitter_fox
 
PDF
イマドキの現場で使えるJavaライブラリ事情
takezoe
 
PDF
Reactive Extensionsで非同期処理を簡単に
Yoshifumi Kawai
 
PDF
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
Unity Technologies Japan K.K.
 
PDF
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
 
PDF
Java SE 8 lambdaで変わる プログラミングスタイル
なおき きしだ
 
PDF
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Yoshitaka Kawashima
 
PPTX
Androidで使えるJSON-Javaライブラリ
Yukiya Nakagawa
 
PDF
コンピューティングとJava~なにわTECH道
なおき きしだ
 
PDF
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
Hironobu Isoda
 
PDF
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
 
PDF
Use JWT access-token on Grails REST API
Uehara Junji
 
PPTX
async/await のしくみ
信之 岩永
 
PDF
Java EEを補完する仕様 MicroProfile
Norito Agetsuma
 
KEY
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Uehara Junji
 
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
 
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
Koichi Sakata
 
LINQ 概要 + 結構便利な LINQ to XML
ShinichiAoyagi
 
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
JustSystems Corporation
 
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
bitter_fox
 
イマドキの現場で使えるJavaライブラリ事情
takezoe
 
Reactive Extensionsで非同期処理を簡単に
Yoshifumi Kawai
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
Unity Technologies Japan K.K.
 
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
 
Java SE 8 lambdaで変わる プログラミングスタイル
なおき きしだ
 
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Yoshitaka Kawashima
 
Androidで使えるJSON-Javaライブラリ
Yukiya Nakagawa
 
コンピューティングとJava~なにわTECH道
なおき きしだ
 
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
Hironobu Isoda
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
 
Use JWT access-token on Grails REST API
Uehara Junji
 
async/await のしくみ
信之 岩永
 
Java EEを補完する仕様 MicroProfile
Norito Agetsuma
 
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Uehara Junji
 

Viewers also liked (20)

PPTX
Kotlin is charming; The reasons Java engineers should start Kotlin.
JustSystems Corporation
 
PDF
Arachne Unweaved (JP)
Ikuru Kanuma
 
PDF
VMの歩む道。 Dalvik、ART、そしてJava VM
yy yank
 
PDF
Java libraries you can't afford to miss
Andres Almiray
 
PDF
Jjugccc2017spring-postgres-ccc_m1
Kosuke Kida
 
PPTX
Jjug ccc
Tanaka Yuichi
 
PDF
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Hiroyuki Ohnaka
 
PDF
2017spring jjug ccc_f2
Kazuhiro Wada
 
PPTX
U-NEXT学生インターン、過激なJavaの学び方と過激な要求
hajime funaki
 
PDF
Polyglot on the JVM with Graal (English)
Logico
 
PDF
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
Works Applications
 
PDF
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Yahoo!デベロッパーネットワーク
 
PPTX
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~
Yoshio Kajikuri
 
PPTX
グラフデータベース入門
Masaya Dake
 
PDF
日本Javaグループ2017年定期総会 #jjug
日本Javaユーザーグループ
 
PPTX
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
Koichi Sakata
 
PPTX
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
Hiroshi Ito
 
PDF
Introduction of Project Jigsaw
Yuichi Sakuraba
 
PDF
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
Yahoo!デベロッパーネットワーク
 
PPTX
サーバサイド Kotlin
Hiroki Ohtani
 
Kotlin is charming; The reasons Java engineers should start Kotlin.
JustSystems Corporation
 
Arachne Unweaved (JP)
Ikuru Kanuma
 
VMの歩む道。 Dalvik、ART、そしてJava VM
yy yank
 
Java libraries you can't afford to miss
Andres Almiray
 
Jjugccc2017spring-postgres-ccc_m1
Kosuke Kida
 
Jjug ccc
Tanaka Yuichi
 
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Hiroyuki Ohnaka
 
2017spring jjug ccc_f2
Kazuhiro Wada
 
U-NEXT学生インターン、過激なJavaの学び方と過激な要求
hajime funaki
 
Polyglot on the JVM with Graal (English)
Logico
 
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
Works Applications
 
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Yahoo!デベロッパーネットワーク
 
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~
Yoshio Kajikuri
 
グラフデータベース入門
Masaya Dake
 
日本Javaグループ2017年定期総会 #jjug
日本Javaユーザーグループ
 
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
Koichi Sakata
 
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
Hiroshi Ito
 
Introduction of Project Jigsaw
Yuichi Sakuraba
 
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
Yahoo!デベロッパーネットワーク
 
サーバサイド Kotlin
Hiroki Ohtani
 
Ad

Similar to Java8 コーディングベストプラクティス and NetBeansのメモリログから... (20)

PDF
60分で体験する Stream / Lambda
 ハンズオン
Hiroto Yamakawa
 
PDF
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
Satoshi Yamada
 
PDF
FM音源をいじれるWebサービスを作った
CHY72
 
PDF
Jpug study-pq 20170121
Kosuke Kida
 
PDF
lispmeetup#63 Common Lispでゼロから作るDeep Learning
Satoshi imai
 
PDF
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
Uptime Technologies LLC (JP)
 
PDF
20120317 IT系勉強会 in 神戸
Takahiro Iwase
 
PPTX
第六回渋谷Java Java8のJVM監視を考える
chonaso
 
PDF
PostgreSQL安定運用のコツ2009 @hbstudy#5
Uptime Technologies LLC (JP)
 
PDF
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
Computational Materials Science Initiative
 
PPTX
Ctb57 with god7
kingtomo
 
PDF
Python 機械学習プログラミング データ分析ライブラリー解説編
Etsuji Nakai
 
PDF
Rユーザのためのspark入門
Shintaro Fukushima
 
PPT
2008.10.18 L4u Tech Talk
mitamex4u
 
PDF
並列対決 Elixir × Go × C# x Scala , Node.js
Yoshiiro Ueno
 
PPTX
pi-6. 繰り返し
kunihikokaneko1
 
PDF
Write good parser in perl
Jiro Nishiguchi
 
PDF
関西Php勉強会のlimeの話
Hisateru Tanaka
 
PDF
Introduction pp.js
Mizushima Kazuhiro
 
PPTX
Apache Spark+Zeppelinでアドホックなネットワーク解析
npsg
 
60分で体験する Stream / Lambda
 ハンズオン
Hiroto Yamakawa
 
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
Satoshi Yamada
 
FM音源をいじれるWebサービスを作った
CHY72
 
Jpug study-pq 20170121
Kosuke Kida
 
lispmeetup#63 Common Lispでゼロから作るDeep Learning
Satoshi imai
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
Uptime Technologies LLC (JP)
 
20120317 IT系勉強会 in 神戸
Takahiro Iwase
 
第六回渋谷Java Java8のJVM監視を考える
chonaso
 
PostgreSQL安定運用のコツ2009 @hbstudy#5
Uptime Technologies LLC (JP)
 
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
Computational Materials Science Initiative
 
Ctb57 with god7
kingtomo
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Etsuji Nakai
 
Rユーザのためのspark入門
Shintaro Fukushima
 
2008.10.18 L4u Tech Talk
mitamex4u
 
並列対決 Elixir × Go × C# x Scala , Node.js
Yoshiiro Ueno
 
pi-6. 繰り返し
kunihikokaneko1
 
Write good parser in perl
Jiro Nishiguchi
 
関西Php勉強会のlimeの話
Hisateru Tanaka
 
Introduction pp.js
Mizushima Kazuhiro
 
Apache Spark+Zeppelinでアドホックなネットワーク解析
npsg
 
Ad

More from なおき きしだ (20)

PDF
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
なおき きしだ
 
PDF
GraalVM at Fukuoka LT
なおき きしだ
 
PDF
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
なおき きしだ
 
PDF
GraalVMについて
なおき きしだ
 
PDF
VRカメラが楽しいのでブラウザで見たくなった話
なおき きしだ
 
PDF
最近のJava事情
なおき きしだ
 
PDF
怖いコードの話 2018/7/18
なおき きしだ
 
PDF
Java新機能観察日記 - JJUGナイトセミナー
なおき きしだ
 
PDF
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
なおき きしだ
 
PDF
これからのコンピューティングの変化とこれからのプログラミング at 広島
なおき きしだ
 
PDF
Summary of JDK10 and What will come into JDK11
なおき きしだ
 
PDF
Summary of JDK10 and What will come into JDK11
なおき きしだ
 
PDF
Java10 and Java11 at JJUG CCC 2018 Spr
なおき きしだ
 
PPTX
New thing in JDK10 even that scala-er should know
なおき きしだ
 
PPTX
Java Release Model (on Scala Matsuri)
なおき きしだ
 
PDF
これからのJava言語と実行環境
なおき きしだ
 
PDF
JavaOne報告2017
なおき きしだ
 
PDF
JavaOne2017で感じた、Javaのいまと未来 in 大阪
なおき きしだ
 
PDF
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
なおき きしだ
 
PDF
JavaOne2016報告
なおき きしだ
 
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
なおき きしだ
 
GraalVM at Fukuoka LT
なおき きしだ
 
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
なおき きしだ
 
GraalVMについて
なおき きしだ
 
VRカメラが楽しいのでブラウザで見たくなった話
なおき きしだ
 
最近のJava事情
なおき きしだ
 
怖いコードの話 2018/7/18
なおき きしだ
 
Java新機能観察日記 - JJUGナイトセミナー
なおき きしだ
 
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
なおき きしだ
 
これからのコンピューティングの変化とこれからのプログラミング at 広島
なおき きしだ
 
Summary of JDK10 and What will come into JDK11
なおき きしだ
 
Summary of JDK10 and What will come into JDK11
なおき きしだ
 
Java10 and Java11 at JJUG CCC 2018 Spr
なおき きしだ
 
New thing in JDK10 even that scala-er should know
なおき きしだ
 
Java Release Model (on Scala Matsuri)
なおき きしだ
 
これからのJava言語と実行環境
なおき きしだ
 
JavaOne報告2017
なおき きしだ
 
JavaOne2017で感じた、Javaのいまと未来 in 大阪
なおき きしだ
 
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
なおき きしだ
 
JavaOne2016報告
なおき きしだ
 

Java8 コーディングベストプラクティス and NetBeansのメモリログから...