- 1. 【初学者】Javaで簡単なRPGゲームを作ってみる①
- 2. 【Java】配列について
- 3. Doma入門 – Criteira APIで結合を使う
- 4. コードカバレッジの種類について
- 5. 【Java】データ型・文字列のクラスのチートシート
- 6. Microsoft Azure SDK For SQL API of Azure Cosmos DB Service 4.6 を使ってみる
- 7. Processing(Java)からSwiftで書いたプログラムを呼び出す
- 8. SpringBoot+Junit5でWebAPIの単体テストと結合テスト、4パターン
- 9. ラーメンで学ぶJava 【その1】
- 10. [Android開発]Javaで画像をサーバーから取得してImageViewに設定しよう!!
- 11. 【Java】オーバーロードとオーバーライド
- 12. 【Java Silver】クラス変数インスタンス変数・ローカル変数・とは何か
- 13. [Java silver 勉強用]パッケージについてのまとめ
- 14. [WSL] aptでJavaを入れようとしたら404になる現象の解決法(個人的メモ)
- 15. 超初心者がSpring入門の本を完走したので、自分なりにまとめてみる
- 16. Android11でTextToSpeechが動作しない時の対処法
- 17. Error: A JNI error has occurred, please check your installation and try again
- 18. Lightbend Academyの講座が無償/有償にわかれます
- 19. Java Lambda で巨大 JSON を扱う
- 20. JavaFXでtextFieldのフォーカスアウトイベントを実装する
【初学者】Javaで簡単なRPGゲームを作ってみる①
自己満の備忘録ですのでご容赦ください。
# JavaでRPGゲームを作ってみる
Javaの勉強をしていたらRPGゲームの記事を見つけたので、自分流にアレンジして作ってみたいと思います。
## 構想
敵が現れる→ジャンケンする→勝ち:ダメージ大与える、あいこ:ダメージ小与える、負け:ダメージ食らう→倒す
という流れです。
まあ行き詰まったら変えていくかもしれません。笑## 実践
### ジャンケンゲームの作成
とりあえず最初にジャンケンゲームを作ってみます。“`Janken.java
import java.util.Scanner;class Janken {
public static void main(String[] args) {System.out.println(“最初はグー!じゃんけんぽん!”);
String[] cpuhands = {“グー”, “チョキ”, “パー”};
System.out.println(“出したい番号を選んでください\n[0]グー\n[1]チョキ\n[2]パー”);
Int
【Java】配列について
Javaの配列について勉強したことのメモです。
–
###配列の宣言
“`
(int方の場合)
int[] arr = new int[5];
“`
###配列arrに値を代入
“`
arr[0] = 3; // 1番目(先頭)の要素に 3 を代入
arr[1] = 1; // 2番目の要素に 1 を代入
arr[2] = 6; // 3番目の要素に 6 を代入
arr[3] = 0; // 4番目の要素に 0 を代入
arr[4] = 4; // 5番目の要素に 4 を代入
“`
###arrを簡略化
“`
int[] arr = {3, 1, 6, 0, 4};
“`
###配列arrの要素数を出力
“`
(要素数が3の場合)
System.out.println(“配列arrの要素数…” + arr.length);
結果:配列arrの要素数…3
“`
Doma入門 – Criteira APIで結合を使う
## はじめに
[Doma](https://github.com/domaframework/doma) 2.43.0のCriteria APIで結合を使う方法を説明します。
DomaのCriteira APIでは、「単純に結合をするだけの場合」と「結合した上で関連エンティティを取得する場合」の2つのパターンをサポートします。後者については意味合いとしてはJPAのjoin fetchに少し似ています。
DomaやCriteria APIの概要については[Doma入門](https://qiita.com/nakamura-to/items/deaff05ba530317f3cf8)の他の記事もお読みください。
## この記事で使うサンプルコード
ここでは、簡略化したコードで説明します。
完全なサンプルコードをについては下記のプロジェクトを参照してください。– https://github.com/domaframework/simple-examples/tree/master/dsl-style-java
データベースには部署を表すdepartmentテーブルと従業
コードカバレッジの種類について
# コードカバレッジ
## 本記事の概要
本記事では、下記3種類のカバレッジについて記載する。– ステートメントカバレッジ(C0:命令網羅)
– ブランチカバレッジ(C1:分岐網羅)
– 単純条件カバレッジ(C2:条件網羅)## 説明で用いるサンプルコード
if (条件文a1 || 条件文a2) { //判定条件A
命令文1
} else{
命令文2} if (条件文b1 && 条件文b2) { //判定条件B
命令文3
}## ステートメントカバレッジ(C0:命令網羅)
### 結論
– 実行可能なステートメント(命令)のうち、**テストで実行された命令の割合**のこと
⇒カバレッジを100%にするには、実行可能なステートメントを全て少なくとも1回は実行する必要がある### 上記サンプルコードの場合
– 命令文1~3のステートメントを行う3つのテストケースが必要## ブランチカバレッジ(C1:分岐網羅)
### 結論
– 全ての判定条件のうち、**テストで実行された判定条件の割合**のこと
⇒カバレ
【Java】データ型・文字列のクラスのチートシート
個人用メモにJavaのデータ型をメモりました。
–
とりあえず最初は– String(文字列)
– int(整数)
– double(小数点を含む数)この三つは確実に抑える。
データ型・文字列のクラス
=| 種類 | 型名 | 扱える範囲 |
| ———— | ——- | ——————————————————- |
| 整数型 | int | -2147483648 ~ 2147483647 までの整数 |
| 文字列クラス | String | “Java”、”自分”、”Mac” などの複数の文字 |
| 浮動小数点型 | double | ± 1.8 × 10308 ~ ± 3.4 × 10 – 324 さらに細かい数字 |
| 論理型
Microsoft Azure SDK For SQL API of Azure Cosmos DB Service 4.6 を使ってみる
Azure CosmosDB Java SDK version 4.x が2020年に公開されております。
以下ドキュメントに使い方が公開されているのですが、最低限のHello Worldコードとしてはどうなるのかを作ってみました。
https://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-sdk-java-v4# pom.xml
“`xml
com.azure
azure-cosmos
4.6.0
“`接続に必要な情報はAzure Portalで取得できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.co
Processing(Java)からSwiftで書いたプログラムを呼び出す
[Processing](https://processing.org/) を使ってユーティリティ系のソフトを作っていると、どうしてもかゆいところに手がとどかない(システム環境設定系とか)
Swiftで実装すればAPIを叩くのに苦労はしないが、
Java側で `Runtime#exec` とか `ProcessBuilder` を使うのはなんか違う気がするので、
どうにかしてして、Javaで実装されたメソッドのようにSwiftで実装した関数を叩きたい!# JNA(Java Native Access)
Processingの実体はPAppletクラスを継承したJavaクラスであるため、
Javaの文法、資産を利用することができるJavaには、JNI(Java Native Interface)と呼ばれる、C/C++などで実装されたネイティブコードと連携する仕組みがある。
このJNIを利用すれば、Swiftで実装したネイティブコードを呼び出されるのではと思うが、
このJavaとC/C++を繋ぐJNIを書くのがマヂ無理
(パッケージ名を含めた関数名をつけた関数をつくったり…)
SpringBoot+Junit5でWebAPIの単体テストと結合テスト、4パターン
#WebAPIの単体テストと結合テスト
PJでWebAPIを新規作成するにあたり、Junitでどのようなテストが作成できるか調べたのでメモ。##目次
###テストコード
1. [単体テスト(クラス単位でのテスト)](#1単体テストクラス単位でのテスト)
2. [結合テスト1(任意の複数クラスの結合)](#2結合テスト1任意の複数クラスの結合)
3. [結合テスト2(全クラスの結合、ローカル環境)](#3結合テスト2全クラスの結合ローカル環境)
4. [結合テスト3(全クラスの結合、任意の環境)](#4結合テスト3全クラスの結合任意の環境)###テスト対象コード
* [EmployeeController.class](#employeecontrollerjava)
* [GetEmployeeUsecase.class](#getemployeeusecasejava)
* [Employee.class](#employeejava)
* [EmployeeRepository.class](#employeerepositoryjava)
* [TempEmployeeR
ラーメンで学ぶJava 【その1】
#Javaをラーメンで学ぼう
なぜならみんなラーメンが好きだから。
Javaの基本をラーメンを通して学びましょう。#一連の目標
– Javaの基本を理解して書けるようになる
読者のみなさんがこれくらいのレベルに達してくれたら嬉しいなあ。
#出力にチャレンジ
プログラミング学習において、”This is a pen.”にあたる導入は”Hello World!”と出力することです。
しかし、ラーメン大好きなみなさんには「ラーメン大好き」と出力していただきます。Javaで出力したい時のキーワードは
**System.out.println();**
です。この`()`の中に入れた内容が出力されます。「ラーメン大好き」と出力したいならこう。
“`java:Main.java
public class Main {
public static void main(String[] args) {
System.out.println(“ラーメン大好き”);
}
}
“`今は、
`public class Main`
`public st
[Android開発]Javaで画像をサーバーから取得してImageViewに設定しよう!!
#説明
画像ファイルをURLで参照して、サーバーから取得する方法です。(非同期処理)#Java
“`java:GetImagesUrl
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.widget.ImageView;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;public class ImageUrl extends AsyncTask
{ ImageView bmImage;
public ImageUrl(ImageView bmImage) {
this.bmImage = bmImage;
}@
【Java】オーバーロードとオーバーライド
オーバーロードとオーバーライドについてまとめます
#オーバーロード
名前は同じだが**シグニチャ**の**違う**メソッドを複数定義すること。
→名前は同じでも**メソッドとしては別物****※シグニチャとは**
・メソッド名
・引数リストの型
・引数の数
・引数の順番**【オーバーロード時に考慮しないもの】**
・戻り値の違い
・引数の変数名
・アクセス修飾子の違い例)
“`java
int price(int a, double b){
return a * b;
}
“`【オーバーロードするパターン】
“`java
double price(int a){ //別メソッド扱いなので戻り値を変えても問題ない。シグニチャが異なっているのでオーバーロード
//処理
}int price(double a, int b){ //引数の順番が逆→オーバーロード
//処理
}“`
【**finalがついているメソッド**をオーバーロードすることも**可能**】
“`java
final void price(){
//処
【Java Silver】クラス変数インスタンス変数・ローカル変数・とは何か
インスタンス変数・ローカル変数・クラス変数の違いについてまとめます。
##static変数(クラス変数)
– **static**で宣言する変数のこと
– クラスの全てのインスタンスに共通する値を持つ。クラスにつく形で値を持つので**クラス変数**ともいう##インスタンス変数
**クラスの直下**、**メソッドの外**に定義する変数##ローカル変数
**メソッド内**で宣言する変数のこと
**インスタンス変数、クラス変数と同名**のローカル変数を定義しても問題ない!!!##コードで確認
“`java
public class Main{
public static void main(String[] args){
Party P1 = new Party();
Party P2 = new Party();
Party.budget = 10000;P1.participants = 5;
P1.remain(); //budgetは9500として出力System.out.println(Party.budget);
[Java silver 勉強用]パッケージについてのまとめ
# パッケージについて
## パッケージとは
クラスを整理するための仕組みのこと。
Java言語には多くのクラスが存在する。そのため、大量のクラスを目的や機能ごとに整理しておくと、目的ごとに使いやすくなり、クラスの管理も容易になる。## パッケージ宣言の仕方
「package パッケージ名;」で宣言する。
(正)ソースコードの先頭行に記述する“`java:Hello.java
package jp.co.xxx;
import aaa.*;
public class Hello(){
System.out.println(“hello world!”);
}
“`(誤)パッケージ宣言よりも前にimportが記述されている
“`java:Hello.java
import aaa.*;
package jp.co.xxx;
public class Hello(){
System.out.println(“hello world!”);
}
“`必ずソースコードの先頭行に記述しなければならない
パッケージ宣言よりも前に記述できるのはコメントだ
[WSL] aptでJavaを入れようとしたら404になる現象の解決法(個人的メモ)
#環境
Windows10 Education 2004
WSL Ubuntu18.04 LTS#現象
WSLのUbuntu18.04にJavaをインストールしようと以下のコマンドを実行したところ…
“`
sudo apt install default-jdk
“`
このような404エラーが発生しインストールに失敗する。“`
Ign:1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 libnss3 amd64 2:3.35-2ubuntu2.11
Err:1 http://security.ubuntu.com/ubuntu bionic-updates/main amd64 libnss3 amd64 2:3.35-2ubuntu2.11
404 Not Found [IP: 91.189.88.152 80]
E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/n/nss/libnss3_3.35-2ub
超初心者がSpring入門の本を完走したので、自分なりにまとめてみる
## はじめに
Springの本完走致しました!!
[本のURL](https://www.amazon.co.jp/dp/B07H6XLXD7/ref=cm_sw_r_tw_dp_x_v9rEFb70ZV0ZC)
私なりに、軽くまとめてみようと思います。
日本語が拙い部分があったり、知識が足りていない部分がありますが、読んでいただけるとありがたいです。## 環境について
OpenJDK14.0.2
STS4?
Maven3.6?
あと、STSにLombokいれてました。## DI(依存性の注入)
* インスタンスの生成
* インスタンスのライフサイクル管理DIが主にこの2つをしてくれている。
DIをすること(利用する?)ことで、newでインスタンス生成して変数に入れ込むという手間が省けたり、
使い終わった変数に`null`を入れ忘れることの防止もできる。## Autowiredについて
Autowiredをつけておくと、自動でインスタンスを生成してくれます。(DIの対象のアノテーションがついているクラスは自動生成されるらしい。)
シングルトンらしいので、エラーが起きや
Android11でTextToSpeechが動作しない時の対処法
##はじめに
急に開発で使用しているPixel3でTextToSpeechが動作しなくなった。
他の開発端末Xperia等では普通に動く。
TextToSpeechのonInitListenerで `status = -1`が返却される##原因及び対処法
###原因: android 11の仕様###対処法: AndroidManifest.xmlにINTENT_ACTION_TTS_SERVICEを追加
公式に以下のように書かれていました。
> Apps targeting Android 11 that use text-to-speech should declare TextToSpeech.Engine#INTENT_ACTION_TTS_SERVICE in the queries elements of their manifest:マニフェストに以下のような感じで追加すると動くようになります。
“`xml:AndroidManifest.xml
・・・
・・・
Error: A JNI error has occurred, please check your installation and try again
#Error: A JNI error has occurred, please check your installation and try again
指定されたコンパイラー準拠は1.5ですが、JREは〜みたいなエラー
参考
https://qiita.com/ponsuke0531/items/fb59a387cbbd8bb387fdJavaコンパイラのバージョンが問題だった。
プロジェクトを右クリック→プロパティー→
左側のJavaコンパイラーを選択→コンパイラー準拠レベル:を選択JREのレベルに合わせる。
(11)など
変更することで今回は対応。
Lightbend Academyの講座が無償/有償にわかれます
リアクティブシステムを構築するためのツールキット 「[Akka](https://www.lightbend.com)」 の開発元でおなじみの [Lightbend社](https://www.lightbend.com) が提供しているオンライントレーニングサービス [Lightbend Academy](https://academy.lightbend.com) の講座が、無償で提供されるものと有償で提供されるものにわかれるとのメールが来ていました。
“`
The response has been so good, in fact, that we have decided to move to a hybrid free/premium model
starting Oct 15, 2020, instead of reverting back to our original subscription-only offering.
“`そもそも、Lightbend Academy を受講するにはすべて有償だったのが、2020年5月頃から期間限定で無償で受講できるよ
Java Lambda で巨大 JSON を扱う
InputStream を Lambda の入力にする記事を書きました。
Java Lambda の入出力型を試してみた〜Stream 編〜
https://qiita.com/kazfuku/items/6f0f55ffa3a88d76cfaaInputStream を使用した場合のメリットとして、巨大な JSON を扱えると書いてます。そこで、実際のところどうなのかを検証してみました。
## テストデータ
まず、巨大 JSON を用意しました。name と text を持った object が 6000 個含まれるデータで、Lambda の入力サイズ上限 6MB に近い、約 5.9MB です。“`Json
{
“data”:[
{
“name”:”vrZPwIw3T7″,”text”:”Ku7aQqW3WzUeiRdXnNB26iVElWdOUj8mQhvHksvN1sMmQ2fT3M8navvbTJuspda2q0bY3FWvsDoguE33tTNtoxuiHjdkUIHmylIezYGitmhJ2bbgcHhcHPzGr4eg3Ger9Ei
JavaFXでtextFieldのフォーカスアウトイベントを実装する
## やりたいこと
– TextField コンポーネントからフォーカスアウトしたときのイベントを実装したい。
– フォーカスアウト時に文字を自動で置き換えたい。## やったこと
`inintialize()` の中で `focusedProperty()` に対して `addListener()` でイベントを追加することで、フォーカスアウト時のイベントを追加することができました。“`java
textField1.focusedProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue extends Boolean> arg0, Boolean oldPropertyValue,
Boolean newPropertyValue) {
if (!newPropertyValue) {
textField1.setText(textFiel