JAVA関連のことを調べてみた2021年08月29日

JAVA関連のことを調べてみた2021年08月29日
目次

[WIP] Java テストコード

# 概要
Javaのテストコードの基本について纏めます。

# テストコード考え方
* 取れない値はモックを用意 (例:API,DBなど)
* Boolを返すファンクションに対して何も値をセットしない場合falseを返す
* モックで値がなんでも良い場合any()を利用
* targetsで実際のファンクションをコール

元記事を表示

[WIP] IntelliJ IDEA 便利機能 for Mac

# 概要
IntelliJ IDEA 便利機能について纏めます。

# ショートカットキー
**import**
– option + enter

**複数行コメントアウト**
– コメントアウト該当行を選択 → Command + /

元記事を表示

【STS(SpringToolSuite)初学者必見】STS(Spring Tool Suite)が、PC再起動 or シャットダウン後、PC起動した後使えなくなる

##某プログラミングスクール卒業生の備忘録

どうもお久しぶりです!今回は

__か__
__な__
__り__

しんどかったことを投稿したいと思います(ほんと原因究明までしんどかったです。。。笑)

それでは早速行ってみましょう!

##STS(Spring ToolSuite)が起動しなくなった!?

そうなんです。再起動、もしくはシャットダウン後、PC起動時に使えなくなりました。。。

そのダイアログが

__「アプリケーション”SpringToolSuite4”を開くためのアクセス権がありません。」__

といったダイアログでした(写真を載せたかったんですが、ちょっと無理みたいです笑)

Spring Boot学習中に起きたことで、勉強どころじゃなくなりまして。10時間ほど無駄にしました。

Spring系のコンテンツは、英語のものばっかりなので、同事象が起きた場合はぜひ参考にしてください。
(Springだけじゃなくても、PC内アプリが同じことが起こったらぜひ参考に。)

##環境

Mac Book Pro
  ーシリコンのやつではないです。
SpringToolSui

元記事を表示

DBUnit + spring-test-dbunit を複数スキーマMySQLで使う設定

## 概要

SpringBoot環境でDBUnitを使う際、spring-test-dbunitを使うとアノテーションで指定するだけでデータベースのセットアップとアサーションができて便利ですね。

spring-test-dbunitは2021年8月現在最終コミットが2016年となっていて、残念ながら更新は完全に止まってしまっているのですが、まだそこそこ使われているようです。

ここではDBUnit + spring-test-dbunitを複数スキーマ切ってあるMySQLで使う際の問題について扱いますので、導入などは他の記事を参考にしてください。

## 問題

ひとつのDBにテスト用のスキーマと検証用のスキーマがある等、複数スキーマの環境でDBUnit + spring-test-dbunitを使うとAmbiguousTableNameExceptionが起きて困りました。

(特に制約がなければテストで使用するDBをH2などのインメモリDBにすればこのような問題は起きないしそうしたいところですが…)

スキーマは指定しているのですがどうやら正しく処理がされていないようです。

元記事を表示

JOOQ3.15に上げるとSpring Bootが起動しない

2021/8/28現在、Spring BootとJOOQ 3.15を組み合わせるとDSLContextのインジェクションに失敗するようになりました。

“`
Error starting ApplicationContext. To display the conditions report re-run your application with ‘debug’ enabled.
2021-08-28 08:51:20.130 ERROR 10463 — [ main] o.s.b.d.LoggingFailureAnalysisReporter :

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of constructor in com.example.securingweb.UsersController required a bean of type ‘org.joo

元記事を表示

Java SE 11勉強ノート

# 基本

以下の本で勉強した際の勉強ノート。

なぜJavaはOSに依存しないのか(JVMを理解する)

<目次>
・「OSに依存する」とは
・JVMについて

##◆ 「OSに依存する」とは
 OSによって動作が異なる(動くか動かないか含め)ということを指します。「JavaがOSに依存しない」とは、どのOSでも同じく正常に動作する、ということです。

ではプログラミング言語はどのような特徴により依存しないようになっているのでしょうか?
依存しないための条件として、以下3つが挙げられます。

######① OSがその言語をサポートしていること
######② その言語で行いたい処理を、各OS上でサポートされている範囲内で書くことができ、期待通りの動作が行えること
######③ その言語で書いたプログラムのコンパイル結果がOS独自に定義されており、各OS上で再コンパイルしないで動作させることができること

Javaの場合で考えていきます。
①については、Javaは多くのOSでサポートされています。
②については標準ライブラリがかなり豊富に備わっており、書こうとする処理をOSに依存せずに書くことができる可能性が高いです。
⇒書きぶりからも分かるように、①・②については100%達成できて

元記事を表示

UJIタグで作れる物集

#ujiタグとは
ujiタグとは、**Webcoodinator**が提供している**JSP用**のタグです。このujタグを利用することで、**アプリケーションの動作を制御したり、HTMLので描写する画面部分を作成**することができます。
今回は、ujiタグを使って、画面部分を作成する方法について、簡単に説明していきたいと思います!
##ujiタグで作成できる画面部分
ujiタグを使って、様々なものを作成することができますが、以下のものを作成する方法について、説明していきたいと思います!
・表:2次元の表を作成します。
・ツリー:木構造のテータを段下げして表示させます。
・リスト:単純な繰り返しです。
・条件:条件によって、表示内容を変更します。
・複合Bean:データBeanの繰り返しを待っている際に、データBeanの各項目を参照します。

ujiタグでは、画面部分をインターフェースしたデータBeanを使用して、作成していきます。
意味が分からないという方もいらっしゃると思いますが、ゆっくり説明していきます!

###表
まずは、TableModelをインターフェイスしたデータBea

元記事を表示

マルチスレッドで動作するマイクラサーバーがあるというので試してみる

[Chiyogami](https://github.com/Be4rJP/Chiyogami)という、[Paper](https://github.com/PaperMC/Paper)をフォークしたマルチスレッドに対応するサーバーソフトがあるというので試してみました。

#ビルド
サーバーのjarファイルはそのまま落とせず、各自ビルドして利用するようになっています。
https://github.com/Be4rJP/Chiyogami にて日本語による解説があるのでそちらを参考に。

### 利用するサーバーのバージョンに対応したBranchを選ぶ

現在は[1.15.2](https://github.com/Be4rJP/Chiyogami/tree/ver/1.15.2)、[1.16.5](https://github.com/Be4rJP/Chiyogami/tree/ver/1.16.5)、[1.17.1]
(https://github.com/Be4rJP/Chiyogami/tree/ver/1.17.1)の3つが用意されています。
今回は1.17.1を選択。

#

元記事を表示

AWSのEC2インスタンスでAmazon Correttoを用いてJDK16を導入する

とあるサーバー向けソフトウェアでJava16を必要とする事があった。
すでにAmazon Corretto 8を用いてJDK8がインストールされていたが、
AmazonLinuxならAmazon CorrettoというOpenJDK互換のソフトウェアが簡単にインストールとバージョン切り替えが可能なのでその方法を説明する。
この記事ではAmazon Corretto 16のインストールについて解説するが、Corretto 8については次の記事を参考にしてほしい。→[AWSのEC2インスタンスでAmazon Correttoを用いてJDK8を導入する](https://qiita.com/honahuku/items/e5464bb3b102710b555a)

# 環境
“`
AWS EC2 t4g.medium ARM AmazonLinux2
JDK 1.8.0_302 がインストール済み
“`
今回はARM版のAmazonLinux2を利用しているが、x86でも手順はほぼ同様だと思われる。

# インストール
今回はyumからインストールを行う。rpmからマニュアルでインストー

元記事を表示

Javaでシリアル通信するためにRXTXライブラリを使ってCOMポートを開いた

###あらまし

先日こんなことがあった

https://qiita.com/Rmecan/questions/066befcf0e7b700b3d42

解決したので報告

まず本プロジェクトの環境周りを
プログラムはほぼ触らずに新しいパソコンへ移植というお仕事

– Windows 7 32bit -> Windows Server 2016 64bit
– Java6 -> Java8
– シリアル通信で外部機械との通信あり、シリアル通信には`RXTX-2.1-7`というライブラリを使っている

次に起きた問題

“`Java
// RS232Cポートをオープンする。この処理を実行すると
CommPortIdentifier RSport = CommPortIdentifier.getPortIdentifier(“COM1”);
“`
“`Java
// このエラーになる。( rxtxParallel.dll と rxtxSerial.dll を見つけられませんだって )
> java.lang.NoClassDefFoundError: no rxtxSerial

元記事を表示

AWSのEC2インスタンスでAmazon Correttoを用いてJDK8を導入する

とあるサーバー向けソフトウェアでJava16を必要とする事があった。
AmazonLinuxならAmazon CorrettoというOpenJDK互換のソフトウェアが簡単にインストールとバージョン切り替えが可能なのでその方法を説明する。
この記事ではAmazon Corretto 8のインストールについて解説するが、Corretto 16については次の記事を参考にしてほしい。→[AWSのEC2インスタンスでAmazon Correttoを用いてJDK16を導入する](https://qiita.com/honahuku/items/36e83367f6acac9947c8)

# 環境
“`
AWS EC2 t4g.medium ARM AmazonLinux2
Javaは未インストール
“`
今回はARM版のAL2を利用しているが、x86でも手順はほぼ同様だと思われる。

# インストール
今回はyumからインストールを行う。rpmからマニュアルでインストールする方法はこちら→[AWSのマニュアル](https://docs.aws.amazon.com/corretto/lat

元記事を表示

単純すぎるドメイン駆動設計Javaサンプルコード (4) テスト

– [単純すぎるドメイン駆動設計Javaサンプルコード](https://qiita.com/ynstkt/items/7379062743bdec2df6e3)
– [単純すぎるドメイン駆動設計Javaサンプルコード (1) DDDらしいコード](https://qiita.com/ynstkt/items/ddbb905adf0583121530)
– [単純すぎるドメイン駆動設計Javaサンプルコード (2) 仕様追加その1](https://qiita.com/ynstkt/items/6ed4fac3ba200f73acd3)
– [単純すぎるドメイン駆動設計Javaサンプルコード (3) 仕様追加その2](https://qiita.com/ynstkt/items/518c8d9bea997da7b270)
– 単純すぎるドメイン駆動設計Javaサンプルコード (4) テスト **<- ここ** いまさらですが、ここでテストコードも見てみましょう。 ## DDDの場合 ### ドメイン層 ドメイン層のテストは比較的単純に書くことができ

元記事を表示

単純すぎるドメイン駆動設計Javaサンプルコード (3) 仕様追加その2

– [単純すぎるドメイン駆動設計Javaサンプルコード](https://qiita.com/ynstkt/items/7379062743bdec2df6e3)
– [単純すぎるドメイン駆動設計Javaサンプルコード (1) DDDらしいコード](https://qiita.com/ynstkt/items/ddbb905adf0583121530)
– [単純すぎるドメイン駆動設計Javaサンプルコード (2) 仕様追加その1](https://qiita.com/ynstkt/items/6ed4fac3ba200f73acd3)
– 単純すぎるドメイン駆動設計Javaサンプルコード (3) 仕様追加その2 **<- ここ** - [単純すぎるドメイン駆動設計Javaサンプルコード (4) テスト](https://qiita.com/ynstkt/items/6d390a6e0a4248905af5) さらに、以下の要件が追加されたとします。 - ユーザごとに足し算の履歴を保存できる 今回の例ではコマンドラインインターフェースとしているので

元記事を表示

単純すぎるドメイン駆動設計Javaサンプルコード (2) 仕様追加その1

– [単純すぎるドメイン駆動設計Javaサンプルコード](https://qiita.com/ynstkt/items/7379062743bdec2df6e3)
– [単純すぎるドメイン駆動設計Javaサンプルコード (1) DDDらしいコード](https://qiita.com/ynstkt/items/ddbb905adf0583121530)
– 単純すぎるドメイン駆動設計Javaサンプルコード (2) 仕様追加その1 **<- ここ** - [単純すぎるドメイン駆動設計Javaサンプルコード (3) 仕様追加その2](https://qiita.com/ynstkt/items/518c8d9bea997da7b270) - [単純すぎるドメイン駆動設計Javaサンプルコード (4) テスト](https://qiita.com/ynstkt/items/6d390a6e0a4248905af5) 前述のDDDらしいコードの作成では、手続き型設計のコードをレイヤ化アーキテクチャで分割し、足し算アプリの中心部分である足し算の処理を、ドメイン層

元記事を表示

単純すぎるドメイン駆動設計Javaサンプルコード (1) DDDらしいコード

– [単純すぎるドメイン駆動設計Javaサンプルコード](https://qiita.com/ynstkt/items/7379062743bdec2df6e3)
– 単純すぎるドメイン駆動設計Javaサンプルコード (1) DDDらしいコード **<-ここ** - [単純すぎるドメイン駆動設計Javaサンプルコード (2) 仕様追加その1](https://qiita.com/ynstkt/items/6ed4fac3ba200f73acd3) - [単純すぎるドメイン駆動設計Javaサンプルコード (3) 仕様追加その2](https://qiita.com/ynstkt/items/518c8d9bea997da7b270) - [単純すぎるドメイン駆動設計Javaサンプルコード (4) テスト](https://qiita.com/ynstkt/items/6d390a6e0a4248905af5) 前述のコードをDDDらしく修正するうえで、最初に行うのはドメインの隔離です。 足し算アプリの中心となる部分は、もちろん足し算です。前述のコードの

元記事を表示

単純すぎるドメイン駆動設計Javaサンプルコード

## 背景
チーム内でドメイン駆動設計(以降、DDDと記述)についてちょっとした勉強会をやることになった際、いわゆる手続き型設計との違いについて、具体的なコード例で説明したいと思い、サンプルコードを用意してみました。チーム内でよく使用されているJavaで記述しています。

https://github.com/ynstkt/learn-ddd

勉強会参加者にはプログラミングに疎いメンバもいるので、なるべく理解するのに負担が少ないよう、できる限り単純な例にすることを意識しました。

一方で、実際にはDDDを取り入れるまでもない(むしろ取り入れない方がよい)ほど例が単純すぎることによって、DDDの必要性・効果がうまく伝わらず、むしろ面倒なことをしている印象になってしまう懸念はありますが、概要説明用と割り切っている点はご了承ください。

なお、前提として、そもそもDDDとは何かという部分については、個人的に以下のスライドが内容や流れがわかりやすかったので、勉強会でもそのまま紹介させていただくことにしました。

https://speakerdeck.com/player/7d40c1a5

元記事を表示

【実践!AWS Lambda】Javaで書いたLambdaの初回起動が遅い問題を解決する

# ■ 概要
AWS Lambdaの開発において、必ず出てくる初回起動が遅い問題、、、
NodejsやPythonなどのスクリプト言語のLambdaであれば対策は比較的簡単なのですが、Javaなどのコンパイル型の言語の場合は難易度が上がります
JavaのLambdaの初回起動にかかる時間を**8秒→1秒**に短縮することに成功したので、ここに備忘録を残します

# ■ 目次
1. 前提条件
1. 設計要素の洗い出し
2. コールドスタート対策
2. DBコネクション対策
2. クラスローディング対策

# ■ 前提条件
・ランタイムはJava 11を使用
・以下のような構成とする
①API GatewayをトリガーにLambdaが起動
②RDS Proxyを介してAuroraに接続
③ClientにResponceを返す
![構成図-ページ2のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1887625/6e762b10-849d-1e3e-7b23-044ed2c92e3d.png)

元記事を表示

gsonでパースするときに DateTimeParseException になったメモ

gson で 日付をパースするときに原因不明のエラーになってハマりました

“`
java.time.format.DateTimeParseException:
Text ‘2021-01-11T09:59:01’ could not be parsed at index 19
“`

もともと swagger から自動生成したコードで、
org.threeten.bp.OffsetDateTime が使われていたので、 java.time.OffsetDateTime に変更してもエラーは変わらず。

java.time.LocalDateTime に変更してもエラーは変わらず。

散々ハマってしまったけど、解決方法は下記でした
gson に設定する LocalDateTimeTypeAdapter の formatter の指定が下記になっていた

“`java
DateTimeFormatter.ISO_OFFSET_DATE_TIME
“`

これを下記にしたら無事にパースできました

“`java
DateTimeFormatter.ISO_LOCAL_DATE

元記事を表示

【Java】リクエストパラメータの取得

リクエストパラメータとは

リクエストパラメータはjspのフォームから「名前」と「値」を受け取ることができます。
下記に参考コードを記述します。

“`

ユーザ名:
パスワード:

“`

action属性:送信先のサーバーサイドプログラムを記述します。Javaの場合はサーブレットかJspファイルを指定します。

method属性:リクエストメソッドを記述します。GETかPOSTを選択。

サーブレットでリクエストパラメータを取得する

jspの準備はできたのでサーバーサイドプログラムのサーブレット側でパラメータを取得をしたいと思います。

元記事を表示

OTHERカテゴリの最新記事