SlideShare a Scribd company logo
1 of 48
Java
Puzzlers
櫻庭 祐一
寺田 佳央
Dedicated to John
Carpenter
We are Click and Hack the Type-It brothers !!
コード中に発生する勘違い
Java プログラミングにおける
奇妙な振る舞いをする小さなプログラム
複数の選択肢から、何が表示される?
ミステリーの解明
問題の解決方法
教訓
Java Puzzlers のルール
public class JavaPuzzlers {
public static void main(String... args) {
System.out.println(“Japan Java User
Group Presents!”);
}
}
1.Japan Java User Group Presents!
2.Java Puzzlers
3.0xCAFEBABE
4.その他
1問目
問題1:They Live
public class TheyLive {
public static void main(String... args) {
int sum = 0;
for (int i = Integer.MIN_VALUE;
i < Integer.MAX_VALUE; i++) {
if (i != 0) sum += i / Math.abs(i);
}
System.out.println(sum);
}
}
選択肢1:They Live
選択肢
1. -1
2. 0
3. 1
4. その他
public class TheyLive {
public static void main(String... args) {
int sum = 0;
for (int i = Integer.MIN_VALUE;
i < Integer.MAX_VALUE; i++) {
if (i != 0) sum += i / Math.abs(i);
}
System.out.println(sum);
}
}
正解は ?!
解答1:They Live
選択肢
1. -1
2. 0
3. 1
4. その他
public class TheyLive {
public static void main(String... args) {
int sum = 0;
for (int i = Integer.MIN_VALUE;
i < Integer.MAX_VALUE; i++) {
if (i != 0) sum += i / Math.abs(i);
}
System.out.println(sum);
}
}
解説1:何が悪いのか?
-2147483648/abs(-2147483648) = -1
-2147483647/abs(-2147483648) = -1
2147483646/abs(2147483646) = +1+)
……
-2
解説1:何が悪いのか?
-2147483648/abs(-2147483648) = +1
-2147483647/abs(-2147483648) = -1
2147483646/abs(2147483646) = +1+)
……
0
解決1:どうやって直すのか
public class TheyLive {
public static void main(String... args) {
int sum = -1;
for (int i = Integer.MIN_VALUE+1;
i < Integer.MAX_VALUE; i++) {
if (i != 0) sum += i / Math.abs(i);
}
System.out.println(sum);
}
}
教訓1:
• 意図しない動作をするメソッドが存在する
• 使用時には必ずJavadocをチェックしよう
• メソッドを作成する場合には、
想像しやすい動作になるよう心がけよう
2問目
問題2:MarshmallowMan
public class MarshmallowMan{
public static void main(String... args) {
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += foo(i);
}
System.out.println(sum);
}
public static long foo(long l) {return l;}}
選択肢2:MarshmallowMan
public class MarshmallowMan {
public static void main(String... args) {
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += foo(i);
}
System.out.println(sum);
}
public static long foo(long l) {return l;}}
選択肢
1. 0
2. 45
3. 55
4. コンパイルエラー
正解は ?!
選択肢2:MarshmallowMan
public class Sum {
public static void main(String... args) {
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += foo(i);
}
System.out.println(sum);
}
public static long foo(long l) {return l;}}
選択肢
1. 0
2. 45
3. 55
4. コンパイルエラー
解説2:
sum = sum + data コンパイルエラー
sum += data コンパイルエラーにはならない
int sum = 0;
long data = 10;
System.out.println(sum += data);
この問題と同じ
解説2:
JLS §15.26.2. Compound Assignment Operators
E1 op= E2
E1 = (T) ((E1) op (E2)) ※ T は E1 の型
つまり
sum = (int) (sum + data)
https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2
解決2:Java 8 以降での計算処理
IntStream.rangeClosed(1, 10).sum()
桁があふれた際に ArithmeticException を出力
java.lang.StrictMath#addExact
java.lang.Math#addExact
java.util.concurrent.atomic.LongAdder
java.util.concurrent.atomic.DoubleAdder
複数スレッドからの更新で Atomic 性を保つ場合
AtomicLong よりおすすめ
教訓2:
• 演算子の振る舞いについて正しく理解しましょう
• 何が最適な解決方法か考えましょう
3問目
問題3:The Thing
public class TheThing {
public static void main(String... args) {
StringBuilder builder
= new StringBuilder("J");
builder = builder.append("a");
Stream.of("v", "a")
.forEach(builder::append);
System.out.println(builder);
}
}
選択肢3:The Thing
public class TheThing {
public static void main(String... args) {
StringBuilder builder
= new StringBuilder("J");
builder = builder.append("a");
Stream.of("v", "a")
.forEach(builder::append);
System.out.println(builder);
}
}
選択肢
1. Ja
2. Java
3. Compile Error
4. Exception
正解は ?!
選択肢3:The Thing
public class TheThing {
public static void main(String... args) {
StringBuilder builder
= new StringBuilder("J");
builder = builder.append("a");
Stream.of("v", "a")
.forEach(builder::append);
System.out.println(builder);
}
}
選択肢
1. Ja
2. Java
3. Compile Error
4. Exception
解説3:何が悪いのか?
ラムダ式:
final 以外のローカル変数にアクセスできない
StringBuilder builder = new StringBuilder("J");
builder = builder.append("a");
// NG
Stream.of("v", "a")
.forEach(c -> builder.append(c));
解説3:何が悪いのか?
ラムダ式:
final 以外のローカル変数にアクセスできない
// Effectively Final
StringBuilder builder = new StringBuilder("Ja");
// OK
Stream.of("v", "a")
.forEach(c -> builder.append(c));
解説3:何が悪いのか?
メソッド参照:
finalでないローカル変数にアクセスできるい
StringBuilder builder = new StringBuilder("J");
builder = builder.append("a"); // Not-Final
// OK
Stream.of("v", "a")
.forEach(builder::append);
教訓3:
• ラムダ式とメソッド参照はほぼ同じだが、若干の違
いがあることを意識しよう
• ラムダ式と匿名クラスも違いがあるので、気をつけ
よう
• thisの扱いが異なる
• メソッド参照の使いすぎに注意しよう
• 他の人が読めないコードになりがち
4問目
問題4:OpenSesame
public class OpenSesame {
public static void main(String... argv){
List<Integer> integerList = Arrays.asList(1,2,3,4,5);
List<Integer> filterdData = integerList.stream()
.filter((int i) -> (i > 2))
.collect(Collectors.toList());
System.out.println(filterdData);
}
}
選択肢4:OpenSesame
public class OpenSesame {
public static void main(String... argv){
List<Integer> integerList = Arrays.asList(1,2,3,4,5);
List<Integer> filterdData = integerList.stream()
.filter((int i) -> (i > 2))
.collect(Collectors.toList());
System.out.println(filterdData);
}
}
選択肢
1. 1,2
2. 3,4,5
3. 何も表示されない
4. コンパイルエラー
正解は ?!
解答4:OpenSesame
public class OpenSesame {
public static void main(String... argv){
List<Integer> integerList = Arrays.asList(1,2,3,4,5);
List<Integer> filterdData = integerList.stream()
.filter((int i) -> (i > 2))
.collect(Collectors.toList());
System.out.println(filterdData);
}
}
選択肢
1. 1,2
2. 3,4,5
3. 何も表示されない
4. コンパイルエラー
解説4:何が悪いのか?
public class OpenSesame {
public static void main(String... argv){
List<Integer> integerList = Arrays.asList(1,2,3,4,5);
List<Integer> filterdData = integerList.stream()
.filter((int i) -> (i > 2))
.collect(Collectors.toList());
System.out.println(filterdData);
}
}
期待する型が見つからない
クラス Test のメソッド filter は指定された型に適用できません
期待値:List<T>, Predicate<T>
検出値:List, (int i) -> (i>2)
解決4:IntStream を使いましょう
public class OpenSesame {
public static void main(String... argv){
int[] filterdData =
IntStream.range(1, 6)
.filter(i -> i > 2)
.toArray();
System.out.println(Arrays.toString(filterdData));
}
}
教訓4:
• Lambda 式を記述する場合、部分的に型を
書くくらいならば 型を省略しましょう
• primitive 型を使用する場合、対応する
Stream を使いましょう
5問目
問題5:The Fog
class Ship<T> {
private T t;
public Ship(T t) { this.t = t; }
public void setCrew(T t) { this.t = t; }
public int hashCode() { return Objects.hashCode(t); }
}
public class TheFog {
public static void main(String... args) {
Map<Ship<String>, String> map = new HashMap<>();
Ship<String> a = new Ship<>("A");
Ship<String> b = new Ship<>("B");
map.put(a, "a"); a.setCrew("B");
map.put(b, "b");
System.out.println(map.values().size());
}}
選択肢5:The Fog
class Ship<T> {
private T t;
public Ship(T t) { this.t = t; }
public void setCrew(T t) { this.t = t; }
public int hashCode() { return Objects.hashCode(t); }
}
public class TheFog {
public static void main(String... args) {
Map<Ship<String>, String> map = new HashMap<>();
Ship<String> a = new Ship<>("A");
Ship<String> b = new Ship<>("B");
map.put(a, "a"); a.setCrew("B");
map.put(b, "b");
System.out.println(map.values().size());
}}
選択肢
1. 0
2. 1
3. 2
4. Exception
正解は ?!
解答5:The Fog
class Ship<T> {
private T t;
public Ship(T t) { this.t = t; }
public void setCrew(T t) { this.t = t; }
public int hashCode() { return Objects.hashCode(t); }
}
public class TheFog {
public static void main(String... args) {
Map<Ship<String>, String> map = new HashMap<>();
Ship<String> a = new Ship<>("A");
Ship<String> b = new Ship<>("B");
map.put(a, "a"); a.setCrew("B");
map.put(b, "b");
System.out.println(map.values().size());
}}
選択肢
1. 0
2. 1
3. 2
4. Exception
解説5:
• MapはKeyのハッシュ値を使用する
• 同じハッシュ値をputすると、上書きする
• ハッシュ値が後から変更された場合、同じハッシュ値の
エントリがあっても存在し続ける
• しかし、そのエントリにはアクセスできない
• MutableなオブジェクトをMapのキーにすることは危険
解決5class Ship<T> {
private T t;
public Ship(T t) { this.t = t; }
// public void setCrew(T t) { this.t = t; }
public int hashCode() { return Objects.hashCode(t); }
}
public class TheFog {
public static void main(String... args) {
Map<Ship<String>, String> map = new HashMap<>();
Ship<String> a = new Ship<>("A");
Ship<String> b = new Ship<>("B");
map.put(a, "a"); // a.setCrew("B");
map.put(b, "b");
System.out.println(map.values().size());
}}
教訓5:
• MutableなオブジェクトをMapのキーにしない
• Imutableなオブジェクトを使い慣れよう
• hashCodeメソッドをオーバーライドする場合、必ず
equalsメソッドもオーバーライドする
Java
Puzzlers
櫻庭 祐一
寺田 佳央
Dedicated to John
Carpenter

More Related Content

What's hot

Java SE 7 InvokeDynamic in JRuby
Java SE 7 InvokeDynamic in JRubyJava SE 7 InvokeDynamic in JRuby
Java SE 7 InvokeDynamic in JRubyHiroshi Nakamura
 
Visual C++で使えるC++11
Visual C++で使えるC++11Visual C++で使えるC++11
Visual C++で使えるC++11nekko1119
 
Metaprogramming in JuliaLang
Metaprogramming in JuliaLangMetaprogramming in JuliaLang
Metaprogramming in JuliaLangYuichi Motoyama
 
Java x Groovy: improve your java development life
Java x Groovy: improve your java development lifeJava x Groovy: improve your java development life
Java x Groovy: improve your java development lifeUehara Junji
 
Xtend30分クッキング やきに駆動
Xtend30分クッキング   やきに駆動Xtend30分クッキング   やきに駆動
Xtend30分クッキング やきに駆動Shinichi Kozake
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案yohhoy
 
Synthesijer and Synthesijer.Scala in HLS-friends 201512
Synthesijer and Synthesijer.Scala in HLS-friends 201512Synthesijer and Synthesijer.Scala in HLS-friends 201512
Synthesijer and Synthesijer.Scala in HLS-friends 201512Takefumi MIYOSHI
 
Frege, What a Non-strict Language
Frege, What a Non-strict LanguageFrege, What a Non-strict Language
Frege, What a Non-strict Languagey_taka_23
 
Xtend30分クッキング
Xtend30分クッキングXtend30分クッキング
Xtend30分クッキングShinichi Kozake
 
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~Fujio Kojima
 
Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義JPCERT Coordination Center
 
C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~Fujio Kojima
 
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020Fujio Kojima
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由kikairoya
 
Javaセキュアコーディングセミナー東京第1回演習の解説
Javaセキュアコーディングセミナー東京第1回演習の解説Javaセキュアコーディングセミナー東京第1回演習の解説
Javaセキュアコーディングセミナー東京第1回演習の解説JPCERT Coordination Center
 
60分で体験する Stream / Lambda
 ハンズオン
60分で体験する Stream / Lambda
 ハンズオン60分で体験する Stream / Lambda
 ハンズオン
60分で体験する Stream / Lambda
 ハンズオンHiroto Yamakawa
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかYuki Miyatake
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)Takuya Tsuchida
 

What's hot (20)

Java SE 7 InvokeDynamic in JRuby
Java SE 7 InvokeDynamic in JRubyJava SE 7 InvokeDynamic in JRuby
Java SE 7 InvokeDynamic in JRuby
 
Visual C++で使えるC++11
Visual C++で使えるC++11Visual C++で使えるC++11
Visual C++で使えるC++11
 
Metaprogramming in JuliaLang
Metaprogramming in JuliaLangMetaprogramming in JuliaLang
Metaprogramming in JuliaLang
 
Java x Groovy: improve your java development life
Java x Groovy: improve your java development lifeJava x Groovy: improve your java development life
Java x Groovy: improve your java development life
 
Xtend30分クッキング やきに駆動
Xtend30分クッキング   やきに駆動Xtend30分クッキング   やきに駆動
Xtend30分クッキング やきに駆動
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案
 
Synthesijer and Synthesijer.Scala in HLS-friends 201512
Synthesijer and Synthesijer.Scala in HLS-friends 201512Synthesijer and Synthesijer.Scala in HLS-friends 201512
Synthesijer and Synthesijer.Scala in HLS-friends 201512
 
Frege, What a Non-strict Language
Frege, What a Non-strict LanguageFrege, What a Non-strict Language
Frege, What a Non-strict Language
 
Xtend30分クッキング
Xtend30分クッキングXtend30分クッキング
Xtend30分クッキング
 
C++14 Overview
C++14 OverviewC++14 Overview
C++14 Overview
 
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
 
Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義
 
C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~
 
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
 
Javaセキュアコーディングセミナー東京第1回演習の解説
Javaセキュアコーディングセミナー東京第1回演習の解説Javaセキュアコーディングセミナー東京第1回演習の解説
Javaセキュアコーディングセミナー東京第1回演習の解説
 
60分で体験する Stream / Lambda
 ハンズオン
60分で体験する Stream / Lambda
 ハンズオン60分で体験する Stream / Lambda
 ハンズオン
60分で体験する Stream / Lambda
 ハンズオン
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
 
Juliaで並列計算
Juliaで並列計算Juliaで並列計算
Juliaで並列計算
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)
 

Similar to Java Puzzlers JJUG CCC 2016

Javaセキュアコーディングセミナー東京第3回演習の解説
Javaセキュアコーディングセミナー東京第3回演習の解説Javaセキュアコーディングセミナー東京第3回演習の解説
Javaセキュアコーディングセミナー東京第3回演習の解説JPCERT Coordination Center
 
Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習JPCERT Coordination Center
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?Moriharu Ohzu
 
ATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlersATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlersAdvancedTechNight
 
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門15分でざっくり分かるScala入門
15分でざっくり分かるScala入門SatoYu1ro
 
Java8から始める関数型プログラミング
Java8から始める関数型プログラミングJava8から始める関数型プログラミング
Java8から始める関数型プログラミングstylefreeslide
 
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!bitter_fox
 
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPAkira Takahashi
 
Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義JPCERT Coordination Center
 
Javaセキュアコーディングセミナー東京第2回演習の解説
Javaセキュアコーディングセミナー東京第2回演習の解説Javaセキュアコーディングセミナー東京第2回演習の解説
Javaセキュアコーディングセミナー東京第2回演習の解説JPCERT Coordination Center
 
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードプログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードShigenori Sagawa
 
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」yoshiaki iwanaga
 
Effective java 勉強会
Effective java 勉強会Effective java 勉強会
Effective java 勉強会Takinami Kei
 
ディープニューラルネット入門
ディープニューラルネット入門ディープニューラルネット入門
ディープニューラルネット入門TanUkkii
 

Similar to Java Puzzlers JJUG CCC 2016 (20)

Javaセキュアコーディングセミナー東京第3回演習の解説
Javaセキュアコーディングセミナー東京第3回演習の解説Javaセキュアコーディングセミナー東京第3回演習の解説
Javaセキュアコーディングセミナー東京第3回演習の解説
 
Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
C#6.0の新機能紹介
C#6.0の新機能紹介C#6.0の新機能紹介
C#6.0の新機能紹介
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
ATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlersATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlers
 
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門15分でざっくり分かるScala入門
15分でざっくり分かるScala入門
 
Enshu8
Enshu8Enshu8
Enshu8
 
Java8から始める関数型プログラミング
Java8から始める関数型プログラミングJava8から始める関数型プログラミング
Java8から始める関数型プログラミング
 
Rの高速化
Rの高速化Rの高速化
Rの高速化
 
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!
 
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JP
 
Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義
 
Javaセキュアコーディングセミナー東京第2回演習の解説
Javaセキュアコーディングセミナー東京第2回演習の解説Javaセキュアコーディングセミナー東京第2回演習の解説
Javaセキュアコーディングセミナー東京第2回演習の解説
 
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードプログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
 
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
 
2023_freshman
2023_freshman2023_freshman
2023_freshman
 
boost tour 1.48.0 all
boost tour 1.48.0 allboost tour 1.48.0 all
boost tour 1.48.0 all
 
Effective java 勉強会
Effective java 勉強会Effective java 勉強会
Effective java 勉強会
 
ディープニューラルネット入門
ディープニューラルネット入門ディープニューラルネット入門
ディープニューラルネット入門
 

More from Yoshio Terada

AI-Java-for-Financial.pdf
AI-Java-for-Financial.pdfAI-Java-for-Financial.pdf
AI-Java-for-Financial.pdfYoshio Terada
 
Java-Virtual-Thread-LT.pdf
Java-Virtual-Thread-LT.pdfJava-Virtual-Thread-LT.pdf
Java-Virtual-Thread-LT.pdfYoshio Terada
 
Cloud Native Architecture ことはじめ 最適な実行環境を選ぶポイント
Cloud Native Architecture ことはじめ 最適な実行環境を選ぶポイントCloud Native Architecture ことはじめ 最適な実行環境を選ぶポイント
Cloud Native Architecture ことはじめ 最適な実行環境を選ぶポイントYoshio Terada
 
Jakarta EE Microproile Update JJUG 2020 May
Jakarta EE Microproile Update JJUG 2020 MayJakarta EE Microproile Update JJUG 2020 May
Jakarta EE Microproile Update JJUG 2020 MayYoshio Terada
 
Azure RedHat OpenShift - Red Hat Forum 2019
Azure RedHat OpenShift - Red Hat Forum 2019Azure RedHat OpenShift - Red Hat Forum 2019
Azure RedHat OpenShift - Red Hat Forum 2019Yoshio Terada
 
JakartaOne 2020 Japan Announce
JakartaOne 2020 Japan AnnounceJakartaOne 2020 Japan Announce
JakartaOne 2020 Japan AnnounceYoshio Terada
 
Jjug CCC 2019 Fall Azure Spring Cloud
Jjug CCC 2019 Fall Azure Spring CloudJjug CCC 2019 Fall Azure Spring Cloud
Jjug CCC 2019 Fall Azure Spring CloudYoshio Terada
 
Sapporo Developer Festa 2019
Sapporo Developer Festa 2019Sapporo Developer Festa 2019
Sapporo Developer Festa 2019Yoshio Terada
 
AKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab ContentsAKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab ContentsYoshio Terada
 
Oisix ra Daichi Microservice with Kubernetes
Oisix ra Daichi Microservice with Kubernetes Oisix ra Daichi Microservice with Kubernetes
Oisix ra Daichi Microservice with Kubernetes Yoshio Terada
 
Virtual Kubelet and Virtual Node
Virtual Kubelet and Virtual NodeVirtual Kubelet and Virtual Node
Virtual Kubelet and Virtual NodeYoshio Terada
 
Japan Container Day 2018
Japan Container Day 2018Japan Container Day 2018
Japan Container Day 2018Yoshio Terada
 
Java on Kubernetes on Azure
Java on Kubernetes on AzureJava on Kubernetes on Azure
Java on Kubernetes on AzureYoshio Terada
 
The Experience of Java on Kubernetes with Microservices from HackFest
The Experience of Java on Kubernetes with Microservices from HackFestThe Experience of Java on Kubernetes with Microservices from HackFest
The Experience of Java on Kubernetes with Microservices from HackFestYoshio Terada
 
Application Development Vision
Application Development VisionApplication Development Vision
Application Development VisionYoshio Terada
 
How to face the Kubernetes ?
How to face the Kubernetes ? How to face the Kubernetes ?
How to face the Kubernetes ? Yoshio Terada
 
JavaOne 2016 Report for Java EE
JavaOne 2016 Report for Java EEJavaOne 2016 Report for Java EE
JavaOne 2016 Report for Java EEYoshio Terada
 
Istio on k8s on Azure (AKS)
Istio on k8s on Azure (AKS)Istio on k8s on Azure (AKS)
Istio on k8s on Azure (AKS)Yoshio Terada
 

More from Yoshio Terada (20)

AI-Java-for-Financial.pdf
AI-Java-for-Financial.pdfAI-Java-for-Financial.pdf
AI-Java-for-Financial.pdf
 
Java-Virtual-Thread-LT.pdf
Java-Virtual-Thread-LT.pdfJava-Virtual-Thread-LT.pdf
Java-Virtual-Thread-LT.pdf
 
Cloud Native Architecture ことはじめ 最適な実行環境を選ぶポイント
Cloud Native Architecture ことはじめ 最適な実行環境を選ぶポイントCloud Native Architecture ことはじめ 最適な実行環境を選ぶポイント
Cloud Native Architecture ことはじめ 最適な実行環境を選ぶポイント
 
Jakarta EE Microproile Update JJUG 2020 May
Jakarta EE Microproile Update JJUG 2020 MayJakarta EE Microproile Update JJUG 2020 May
Jakarta EE Microproile Update JJUG 2020 May
 
Azure RedHat OpenShift - Red Hat Forum 2019
Azure RedHat OpenShift - Red Hat Forum 2019Azure RedHat OpenShift - Red Hat Forum 2019
Azure RedHat OpenShift - Red Hat Forum 2019
 
JakartaOne 2020 Japan Announce
JakartaOne 2020 Japan AnnounceJakartaOne 2020 Japan Announce
JakartaOne 2020 Japan Announce
 
Jjug CCC 2019 Fall Azure Spring Cloud
Jjug CCC 2019 Fall Azure Spring CloudJjug CCC 2019 Fall Azure Spring Cloud
Jjug CCC 2019 Fall Azure Spring Cloud
 
Sapporo Developer Festa 2019
Sapporo Developer Festa 2019Sapporo Developer Festa 2019
Sapporo Developer Festa 2019
 
AKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab ContentsAKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab Contents
 
Java on Azure 2019
Java on Azure 2019Java on Azure 2019
Java on Azure 2019
 
Java on Azure 2019
Java on Azure 2019Java on Azure 2019
Java on Azure 2019
 
Oisix ra Daichi Microservice with Kubernetes
Oisix ra Daichi Microservice with Kubernetes Oisix ra Daichi Microservice with Kubernetes
Oisix ra Daichi Microservice with Kubernetes
 
Virtual Kubelet and Virtual Node
Virtual Kubelet and Virtual NodeVirtual Kubelet and Virtual Node
Virtual Kubelet and Virtual Node
 
Japan Container Day 2018
Japan Container Day 2018Japan Container Day 2018
Japan Container Day 2018
 
Java on Kubernetes on Azure
Java on Kubernetes on AzureJava on Kubernetes on Azure
Java on Kubernetes on Azure
 
The Experience of Java on Kubernetes with Microservices from HackFest
The Experience of Java on Kubernetes with Microservices from HackFestThe Experience of Java on Kubernetes with Microservices from HackFest
The Experience of Java on Kubernetes with Microservices from HackFest
 
Application Development Vision
Application Development VisionApplication Development Vision
Application Development Vision
 
How to face the Kubernetes ?
How to face the Kubernetes ? How to face the Kubernetes ?
How to face the Kubernetes ?
 
JavaOne 2016 Report for Java EE
JavaOne 2016 Report for Java EEJavaOne 2016 Report for Java EE
JavaOne 2016 Report for Java EE
 
Istio on k8s on Azure (AKS)
Istio on k8s on Azure (AKS)Istio on k8s on Azure (AKS)
Istio on k8s on Azure (AKS)
 

Recently uploaded

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Recently uploaded (11)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

Java Puzzlers JJUG CCC 2016