JAVA関連のことを調べてみた2022年05月13日

JAVA関連のことを調べてみた2022年05月13日

Dockerでサクッと試すローコード開発 -「iPLAss」

本記事では、Dockerで「iPLAss」をインストールし、簡単に機能を試すまでの手順をまとめます。
近年開発手法として注目される「ノーコード開発」や「ローコード開発」ですが、iPLAssが提供するローコード開発の形をDockerでサクッと体験してみてください!

# iPLAssとは

「iPLAss」は、オープンソースのローコード開発プラットフォームです(OSS版のライセンスは、`AGPL v3`になります)。

以下のような特徴を持ちます。

– **ノーコード開発**
GUI操作によるノンプログラミングでのデータ定義やその他の各種定義(認証ポリシーや画面表示に関する設定など)を行うことでアプリケーションの構築が可能です。また、データ定義を行うことで自動的に当該データのCRUD(登録/参照/更新/削除)機能を持った汎用管理画面を構成します。
▼ `Admin Console` という管理者向けのWebコンソールで各種定義が行えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.co

元記事を表示

【Servlet・JDBC】executeUpdata()とexecuteUpdata(String sql)の違いについて <忘備録>

DB操作の時に使用するexecuteUpdate()とexecuteUpdate(String sql)の違いについての忘備録

調べたことや実行したものをまとめたものなので、間違ってる部分があるかもです。

## 実行環境
・Eclipse 4.23.0
・Java 17
・Apache Tomcat 9.0
・Servlet 4.0

## executeUpdateとは
一言で表すと『SQLを実行するやつ』

もう少し細かく説明すると、
・SQL文を実行する
・[INSERT, DELETE, UPDATE]のSQL文を実行可能
・更新行数が戻り値として返される

こんな感じになる。
二つ目については、MERGEも実行できるらしい。
自分はMERGE文を使ったことが無いため、実際に実行できるかどうかは不明。

## executeUpdate()とexecuteUpdate(String sql)の違い
では、引数の有無の違いでどのような違いがあるのか。

パッと見、引数の有無の違いしか分からないが、調べてみると異なる点がまぁまぁあるらしい。
簡単にまとめると、
* execut

元記事を表示

SpringSecurity(ステートレス)Jwt認証

## 前提条件
以下URLのプログラムを元にJwt認証用(ステートレス)に変更します。

https://qiita.com/nmaolks/items/92edd19b3b606fad82f9

## クラスの説明
以下の6つのクラスを改修、追加します。

### ◇設定ファイル
 〇WebSecurityConfigクラス(設定)

### ◇認証(トークン取得)
 〇WebUsernamePasswordAuthenticationFilterクラス(認証)
 〇WebAuthenticationProviderクラス(検証)
 〇SuccessHandlerクラス(認証検証成功時)
 〇FailureHandlerクラス(認証検証失敗時)

### ◇認可(トークン認可)
 〇JwtAuthorizationFilterクラス(認可)

## プログラムの流れ
◇JWTトークン取得する場合
ユーザがトークン取得APIを実行時

認証(トークン取得)が動く

◇その他API

【Java】StreamAPIを用いた階乗(n!)・順列(nPr)・組み合わせ(nCr)の計算記述方法(サンプルコード・計算時間の性能比較有)

# 概要
 本記事はJava8より追加されたStreamAPIを使用した場合と使用していない場合の階乗・順列・組み合わせの記述方法と性能比較について説明します。
 StreamAPIの理解やサンプルコードの流用等でご利用ください。
 また、それぞれの計算は静的メソッドにて、int型の入力、BigIntegerの出力で実装してます。
 本記事に記載されているサンプルコードはJava8以降で実行できます。
 サンプルコードは静的メソッドで記載してますので、クラス内に記載するだけで簡単に流用することができます。

# 階乗計算(n!)
 $n!$の階乗計算をします。
 $n!$は$1$から自然数$n$までの連続する$n$個の自然数の積を計算します。
 例えば、$4!$は自然数$1$から$4$までの$4$個の積、つまり$4!=1\times2\times3\times4=24$です。
 従来通りの実装方法のサンプルコードは以下のものです。
“`Java:StreamAPIを用いない場合の階乗計算の静的メソッド
/**
* 階乗計算
* n!の計算を行う
* @param n 入

【Java】フィールド変数とローカル変数

フィールド変数とローカル変数についてまとめる。

フィールド変数
クラス内に定義される変数のこと。
フィールド変数はクラス内のメソッドから参照可能な変数となる。

ローカル変数
メソッド内にて宣言された変数のこと。
※メソッド内の範囲でしか参照できない変数。
※if文/for文/while文等にて宣言されている変数もローカル変数に含まれる。

フィールド変数の実例
“`java:fieldSample.java
public class fieldSample {
private String name = “Jony”;

public void name() {
System.out.println(name); // 実行結果:Jony
}
}
“`
ローカル変数の実例
“`java:localSample.java
public class localSample {
public void sample() {
String name = “Jony”;
int age = 30;
}

public static void main(Strin

【Java】可変長引数

可変長引数についてまとめる。

**可変長引数**
Java SE 5から引数の個数が不定(可変)なメソッドを定義できるようになった。

##### 可変長引数の使用方法
下記のように引数の型の直後にピリオドを3つつけて宣言する必要がある。
注意点:可変長引数は2つ以上同時に宣言できない。
    可変長引数は最後の引数として宣言する必要がある。
“`java:sample.java
// sample1
void sample1(int… num) {
for (int i = 0; i < num.length; i++) { System.out.println(num[i]); } } // sample2 void sample2(int value, int... num) { // do something } ``` 可変長引数を宣言する際の注意点が2つある。 注意点: ①可変長引数は2つ以上同時に宣言できない。 ②可変長引数は最後の引数として宣言する必要がある。 ```java:ngsample.java // sample1 void sample1

進化についていくのは大変

プログラム言語ってたくさんあって
私がやってきたのはjava、C#、swift、javascriptあたりがメインなんですが
ずーーっと思っているのが『進化しすぎてません?』


 Struts便利だなー
 ⇒DIっていうのが次来るらしい
 ⇒seaser便利
 ⇒えっseaser古いの?世界的にはspringなの?
 ⇒spring便利
 ⇒えっspringbootが簡単?
 ⇒springboot便利

こんな感じで、
とにかくいろんな技術が次から次へと出てきては進化が続いてて
java⇒kotlin
javascript⇒typescript
みたいに派生していった言語もあるし。

各言語のフレームワークも山盛りあって、
例えば画面周りはいつの間にか
「え?jspでゴリゴリ動的に作る時代終わったの?」
「SPA??react?vue?Angular?javascriptでゴリゴリ書くのが主流なの?」
「え!javascriptじゃない!?typescriptで書くの!?」
「tsをコンパイルしてjsにしてnodeで実行!?」

5年前までバリバリコーディングしてたけど昇進し

SpringBootでDBUnit 〜@ExpectedDatabase〜

SpringBootでDBのテストを書いています。
アノテーションの属性の意味を忘れないようにメモ。

# @ExpectedDatabase
## value
結果検証用のファイルのパスを記入する。

## assertionMode
DBと結果検証用のファイルを比較のしかたを指定する属性。
##### DEFAULT(または指定なし)
全てのテーブルとカラムの一致を比較する。
そのため、CSV等を用意したテーブル以外も調査対象となる。

このまま使うと、
“`
junit.framework.ComparisonFailure: table count expected:<[3]> but was:<[47]>
“`
と言った感じのスタックトレースが出力されてしまう。DB上の全てのテーブルが見られていることがわかる。
そのため、単体テストで用いる場合は以下の2つのどちらかを指定する必要がある。

##### NON_STRICT
結果検証用のファイルに存在しないテーブル、カラムがあっても無視する。

##### NON_STRICT_UNORDERED

【新卒SE】Java入門 ~Singleton(シングルトン)とはなんぞや~

 今日、研修でJavaの問題演習に取り組んでいた際に初めて知った概念?で、正直まだ理解が曖昧ですが、後学のために間違っていても良いので現状の考えを残そうと思い、アウトプットします(間違ってたら教えてくださいm(__)m)。

## シングルトンとは
一言でいうと、
**「1つのクラスからは1つのオブジェクト(インスタンス)しか作れないよ~」**
ってことです。
通常、クラスから複数のオブジェクトを生成できると思います。例えば、以下の図のように
「Car クラス→TESLA・TOYOTA・BMW」と言ったように、複数のオブジェクトを通常は生成できます。
しかし、シングルトンの場合は、オブジェクトの生成の処理が一度しか行われないため、下図のようの1つのオブジェクトしか生成されません。なので、「このクラスからはオブジェクトを一つしか作りたくない!」というような時にシングルトンを使用します。
![スクリーンショット 2022-05-11 21.56.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65804

【Java】型変換の不思議:データ型(byte ~ long) ⇔ char型

データ型からchar型にcastについてまとめる。

#### データ型(プリミティブ型)について
※byte ~ long & charまでを紹介する。
| データ型 | 値の種類 | ビット数 | 格納できる範囲|
|:——–|:——–:|:——-:|:-:|
|byte |整数値 |8ビット |-128 ~ 127 |
|short |整数値 |18ビット |-32,768 ~ 32,767 |
|int |整数値 |32ビット |-2,147,483,648 ~ 2,147,483,647 |
|long |整数値 |64ビット |-9,223,372,036,854,775,808 ~
9,223,372,036,854,775,807|
|char |文字  |16ビット |0 ~ 65,535
※Unicode文字、\u0000~\uffff|

#### castの実例
“`java:castSample.java

【Java】Stringクラス①:length

Stringクラスにてよく使用するメソッドの詳細について
パート毎に内容をまとめていく。
今回はlengthについて下記の通りまとめる。

###### lengthの働き
length():文字列の長さ(文字数)を取得(return)する。
length :配列の長さ(要素数)を取得(return)する。

###### lengthの使用例
“`java:sample.java
String sample1 = “Hello”;
String sample2 = “Hello World”;
String[] str = new String[5];

System.out.println(sample1.length()); // 5 ※文字数をカウント
System.out.println(sample2.length()); // 11 ※スペースも1文字としてカウントされる。
System.out.println(str.length); // 5 ※要素数にてカウントされる。
System.out.prin

【Java】Caused by: org.flywaydb.core.internal.license.FlywayEditionUpgradeRequiredExceptionの対処方法

# 参考

https://stackoverflow.com/questions/70438180/what-is-the-last-version-of-flyway-community-edition-that-supported-mysql-5-7

# 事象
MySQL(v5.7)に対して、Flyway(v8.5.10)でマイグレーション実行したら下記のエラーが発生。
“`
Caused by: org.flywaydb.core.internal.license.FlywayEditionUpgradeRequiredException:
Flyway Teams Edition or MySQL upgrade required:
MySQL 5.7 is no longer supported by Flyway Community Edition, but still supported by Flyway Teams Edition.
“`
Flywayの依存
“`xml

org.flywaydb

【JSP】宣言とスクリプトレットの違いについて <忘備録>

JSPの宣言(declaration)とスクリプトレット(scriptlet)の違いについての忘備録

調べたことや実行したものをまとめたものなので、間違ってる部分があるかもです。

## 実行環境
・Eclipse 4.23.0
・Java 17
・Apache Tomcat 9.0

## 宣言とスクリプトレットの特徴
#### 宣言(declaration)
“`text:記述例
<%! int num = 0; %>
“`
・変数やメソッドの宣言を行う
・1回目のリクエスト時のみ処理が実行される
・jspコンテナが再起動されるまで値が保持される
・ここで宣言した変数はインスタンス変数になる
・スレッドセーフではない

#### スクリプトレット(scriptlet)
“`text:記述例
<% int num = 0; num++; %>
“`
・Javaコードを記述する
・リクエストの度に処理が実行される
・ここで宣言した変数はローカル変数になる
・スレッドセーフ

### スレッドセーフとは
マルチスレッドでも問題なく動作するシステム。

このサイトにわ

[Java]Paizaでよく使うコード集

## 著者
Javaを用いてPaizaを解き始めた駆け出しエンジニアです。
元々はJavaScriptを用いてBランク程度の問題を解いていたのですが、業務でJavaを使用することになったので、学習のアウトプットとしてPaizaを活用しています。(有料会員)

JavaScriptで問題を解く時と比べてJavaだと文字列→数値の変換や、配列の扱い方、定義の仕方など、暗記しづらいがよく使うコードがたくさんあるなと感じました。

そこで、自分のアウトプット兼備忘録のために、Paizaでよく出てくるコードを載せました。
(Paizaでは、解答を転載することは禁止されているので、解答自体を載せることはしません。あくまでメソッドや定義の解説になります。)

“`java:int型で入力値を保存
int n = sc.nextInt();
int m = sc.nextInt();
“`

“`java:数値を文字列変換
int num = 10;

String str = String.valueOf(num);
“`

“`java:文字列を数値変換

GoogleColabでImageJを動かそう

# あらまし

使いやすい画像処理環境は、画像処理のアルゴリズム実装のときに役立ちます。
私は、GoogleColabがJavaを動かすことができることは知っていましたが、外部ライブラリを利用できることは知りませんでした。
この記事は、私が普段から使っているImageJをColabで動かす手順の記録です。

# ColabNotebookを編集する

Colabノートブックはデフォルトのプログラミング言語のカーネルがpythonになっています。
これを、javaに変更します。
方法は、kernelspecのpythonの箇所をjavaに置き換えるだけです。
置き換えると、このような状態になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/379410/368a1efb-2051-cce1-b31e-9620158c3776.png)

編集の方法は、まず、GoogleDriveに新しいColabノートブックを作り、空のまま、「.ipynb」でダウンロードします。

4分チャレンジ:タブ区切りファイルをhtmlファイルに変換する

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック

「プロになるJava」を読んで

# 概要
[「プロになるJava」](https://gihyo.jp/book/2022/978-4-297-12685-8)を読みましたので、各部ごとのアウトプットを兼ねて記します。

# 第一部 Javaを始める準備
### Javaとは
Javaとは、プログラミング言語であるJava言語と実行環境であるJVMを中心としてプログラミング技術を指す。

### JVMとは
Java仮想マシンのこと。コードを読み込んで実行する役割を持つ。

### JDK
Javaのプログラムを開発するために必要なソフトウェアパッケージで、Java Development Kitの略。
JVMもJDKに含まれる。

#### Java SE
Javaでどのようにプログラムをかけるか、どのように動作するか、といった仕様のこと。

### 開発環境の準備
1. Oracle JDKのインストール
2. IDEのインストール 本書ではIntelliJ IDEAを使用します。

# 第2部 Javaの基本
### Jshell
JShell=Javaのプログラムを1行ずつ実行できるコマンドラインツール

#

型推論 var を使う・使わないの判断基準

memo.

## 結論
右辺を見て、型が容易にわかる場合は var を使う。

## 理由
右辺を見ても型がわからない、または型を勘違いするような場合は、一目で理解しづらいコードになってしまうから。

## 具体的には
右辺を見れば一目で何の型かわかるような例

### インスタンス化している

“`java
var list = new ArrayList();
“`

### リテラルである

“`java
var n = 123;
“`

### 戻り値の型を容易に推測できるメソッドを呼び出している

“`java
var date = LocalDateTime.now();
“`


## 参考資料

https://qiita.com/dhirabayashi/items/a4a13d19b41779325bb0

初心者でもすぐに取り組めるエンジニアとして大切なこと2選

# はじめに

いつも読んでくださってありがとうございます。
今回はWEBエンジニア1年目の僕が新入社員研修で誰にでもできてかつエンジニアとして特に大切だと思った点を2つ紹介していこうと思います。
これを意識するだけでエンジニアとしての価値が確実に上がるので最後まで読んでもらえたら嬉しいです。

## 1.字下げを確実に行う

一つ目は自下げを確実に行うことです。
自分が書いたソースコードは自分以外の大多数のエンジニアが見ることがほとんどです。
その際に字下げが疎かになっていると全体の構成が掴みにくくエンジニアとしての信頼が失われてしまします。
下記に2つの全く同じ内容のソースコードがあります。違いは字下げをしているかしていないかのみです。
字下げをしている方のソースコードは全体の構成を簡単に理解することができます。
しかし自下げをしていないソースコードはどのような構成なのかを理解するのにとても苦労します。
今回の例は少し極端でしたがソースコードを書く際には字下げをして全体の構成を誰が見ても理解できるようにすることが重要です。

~~~ Practice.java
public cla

【java】javaにおける2次元の連想配列を作成

他に2次元の連想配列のやり方を知っている人がいたらご教授ください

# コード

“`java
import java.util.HashMap;
import java.util.Map;
class Main {
public static void main(String[] args) {
Map> map = new HashMap>();
map.put(1, new HashMap());
map.get(1).put(“名前”,”田中”);
map.get(1).put(“国語”, 33);
map.get(1).put(“数学”, 10);
map.put(2, new HashMap());
map.get(2).put(“名前”,”高橋”);
map.get(2).