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

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

Mockito使い方メモ

# Mockito とは

– Java のテストでモックを簡単に扱えるようにするためのフレームワーク
– 指定されたクラスのモックを作成し、任意のメソッドをスタブ化して指定した値を返すようにしたり、モックのメソッドが期待した通りに呼び出されたかどうかを検証したりできる
– `static` や `final` なメソッドのモック化もできたりする(昔はできなかったはずだけど、いつの頃からかできるようになってた)
– モックの振る舞いの定義を型安全に定義できるのが大きな特徴(だと思う)
– 読み方は「もきーと」

# 環境
“`text
> gradle –version

————————————————————
Gradle 7.4.2
————————————————————

Build time: 2022-03-31 15:25:29 UTC
Revision: 540473b8118064efcc26

元記事を表示

【JSP/Servlet】簡単なチャット機能の作り方

## はじめに
初学者向けのJavaサーブレットを用いた、もっとも原始的なチャット機能の実装方法です。
個人での開発やスクールでの課題作成時に参考にしてください。

## 開発環境

| カテゴリー | ソフトウェア名 | バージョン |
|:-:|:-:|:-:|
| OS | Windows10 | 21H2 |
| エディタ | Eclipse 2018 | 4.8.0 |
| データベース | MySQL | 5.5.39 |

## 設計

**ER図**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1270216/f4306667-3509-22e6-0f4c-c3fb6a043865.png)

**DB設計書**
* ユーザ管理テーブル
* メッセージ管理テーブル
* チャットルーム管理テーブル

データベースは、以上の3つに分かれています。

① ユーザ管理テーブル
![image.png](https://qiita-image-store.s3.ap

元記事を表示

Javaに触れてみました!

こんにちは、プログラミング初学者”fujitacoma”です!

今回は、Javaの基礎プログラムを学ぶ機会がありましたので、
備忘録として残しておきたいと思います!

ちなみに今回、Javaの基礎はTeratailにて学習致しました。
https://prog-8.com

それでは早速参りましょう!

#
#### 以下を満たすプログラムコードを作成し、プログラムを実行してください。

・文字列と数値を格納する配列を作成してください。
・1つ目の配列には、「banana,orange,strawberry」を代入してください。
・2つ目の配列には、数値「300, 500, 100」を代入してください。
・1つ目の配列に対して、for 文を使い繰り返し処理を行ってください。
配列の中身が「banana」の時は2つ目の配列の最初の要素をコンソールに出力してください。
配列の中身が「orange」の時は2つ目の配列の3個目の要素をコンソールに出力してください。
配列の中身が「strawberry」の時は2つ目の配列の2個目の要素をコンソールに出力してください。
#

### ①パッケ

元記事を表示

JavaSilver_SE11(黒本の改造問題)

[黒本](https://www.amazon.co.jp/%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5Java-SE-11-Silver%E5%95%8F%E9%A1%8C%E9%9B%86-1Z0-815/dp/4295007625/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=3BXM80JNHBY45&keywords=javasilver+%E9%BB%92%E6%9C%AC&qid=1658066191&sprefix=javasilver+%E9%BB%92%E6%9C%AC%2Caps%2C355&sr=8-1)のP234_第7章_13の問題をIDEで書き写しながら
少しコードを変更したりして理解を深めていた所「へぇー」となったのでメモ

先に言っておくと以下に記載するようなコードはわざわざ書かないと思います。

### 「へぇー」となったこと
1. interfaceにprivateであればdefaultメソッドじゃない具象メソッドが定義することができる。

元記事を表示

ライブラリ開発者より指定されたバージョンを利用してアプリケーションを作る

# はじめに

記載情報は CI/CD に関連します。
実務上関わった環境・機能を身近な情報としてお届けしたく、投稿をはじめました。
各学習上、お金のかからない方法を選択していきます。

以下の手順を実施することで、アプリケーション開発者がライブラリ開発者より指定されたバージョンを利用してアプリケーションを作る工程を模倣します。

## 対象者と関連環境・機能

この記事は下記のような人を対象にしています。

– CI/CD 初学者
– プログラミング初学者
– 駆け出しエンジニア

記載している環境・機能は以下です。

– Java
– Spring Boot
– Spring Web
– Spring Tool Suite 4
– Gradle
– Azure DevOps
– Azure Artifacts

## 準備

| No | 参照 URL

元記事を表示

Jar を作り、Azure Artifacts を利用して成果物を配布する

# はじめに

記載情報は CI/CD に関連します。
実務上関わった環境・機能を身近な情報としてお届けしたく、投稿をはじめました。
各学習上、お金のかからない方法を選択していきます。

以下の手順を実施することで、ライブラリ開発者が Jar の Library を作り、Azure Artifacts を利用して成果物を配布する工程を模倣します。

## 対象者と関連環境・機能

この記事は下記のような人を対象にしています。

– CI/CD 初学者
– プログラミング初学者
– 駆け出しエンジニア

記載している環境・機能は以下です。

– Java
– Spring Tool Suite 4
– gradlew
– Azure DevOps
– Azure Artifacts

## 準備

| No | 参照 URL |
| –

元記事を表示

Java(Spring)のテストを早くするために頑張ったこと

# はじめに

私のチームではSpringFrameworkを使っているのですが、JUnitテストが**2時間半**もかかってしまい、あまりの遅さのため日々テストが早く終わってくれーという祈りとともに仕事をしていたのですが
さすがに、どげんかせんといかんということで実施した施策を以下記述いたします。

# 現状分析

– ComponentScan対象は全クラス(←雑すぎる・・・)
– ComponentScanだけで18秒程度かかっている
– どうやらクラス単位でコンポーネントスキャンしなおし、ApplicationContextを作り直しているということはログからわかった(←これが最大のトラップでした)

# 作戦1:ComponentScan対象を減らす

ComponentScan対象があまりに多いことも1つの問題だったため
スキャン対象のパッケージをがんばって減らしてみました。

“`
@ComponentScan(
basePackages={
“jp.xxx.xxx”,
“jp.yyy.yyy”,
“jp.zzz.zzz”
}
)
“`

元記事を表示

Gradleテスト時にテスト用の環境変数をセットする方法

# この記事の概要
Gradleでテストを実行する際の、テスト用環境変数をセットする方法を紹介します。

筆者はHottyDBという検索エンジンとレコメンドエンジンの機能を搭載したRDBMSを個人開発しています。
この記事では、そのHottyDBを開発する際に利用した方法を紹介したいと思います!

ちなみに、過去の記事でHottyDBに関する解説もしていますので、よければそちらも参照してみてください!!

https://qiita.com/toru1055/items/0fe400989373823e9c78

# build.gradleへの追記
以下のようなブロックを `build.gradle`へ追記してください。
“`
tasks.withType(Test) {
systemProperty(“`環境変数名1`”, `設定値1`)
systemProperty(“`環境変数名2`”, `設定値2`)

}
“`

例:環境変数=`SAMPLE_VAL`に値=`3`を設定する場合
“`
tasks.withType(Test) {

元記事を表示

Visual Studio CodeのJava環境でエラー出たとき

## 経緯

知り合いの方からJavaをVSCodeで動かすときにエラーが出たとの相談があった。
自分はMacを使ったことがないので調べながらサポートしてみた。

#### 発生したエラー

![qOe0qJxZ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224453/cef8bb4e-e811-2301-18e7-a2625a69edb5.png)

“`
There is no valid JAVA_HOME setting to launch Gradle Language Server.
Please check your “java.jdt.ls.java.home” setting.
“`

## 結論

「Open Settings」ボタンで開く `settings.json` にjava.homeを設定する。
記事によっては `”java.home”: “/Library~”`と書かれているが、
エラーで出た `java.jdt.ls.java.home` を指定することで解消し

元記事を表示

配列の要素m個からn個取る組み合わせ(配列)を列挙する

## Javaで配列の要素m個からn個取る組み合わせ(配列)を列挙する

VBAマクロで、配列の要素m個のなかからn個とる組み合わせの配列を求める課題があった。まず、Javaで、コレクションを使用せず、配列だけを使用して、組み合わせの結果の配列を列挙するコードを書いた。それをVBAに移植した。忘れないうちに残しておく。

まず、順列組み合わせの式を確認する。

– P(n) : n! : 0 <= n 、n = 0 のとき P(n) = 1 - P(n,r) : n! / (n-r)! : 0 <= r <= n 、r = 0 のとき P(n,r) = 1 - C(n,r) : n! / ((n-r)! * r!) : 0 <= r <= n 、r = 0 のとき C(n,r) = 1 階乗 P(n)を定義。VBAに移植するので不用意に再帰しない。 ```Java private int factorial (int n) { int result = 1; while (n > 0) result *= n–;
return result;
}
“`

順列 P(

元記事を表示

Androidプログラミングのimport一覧

Androidでプログラミング(Java)で書くときに、import設定が地味に面倒だったのでまとめる。

### アラート用ダイアログのインポート
“` java
import android.app.AlertDialog;
//以降サンプルコード
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(“ここにメッセージを表示します。”);
builder.show();
“`

### SDKのバージョンチェックのインポート
“` java
import android.os.Build;

//以降サンプルコード
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
//ここにプログラムを各
}
“`

### 通知で利用するインポート
“` java
import androi

元記事を表示

【第一回目/Java学習】初学者によるJava学習 開発の流れ

【この記事について】
=
Javaの勉強を始めた初学者のアウトプット記事となります。
間違いなどございましたら指摘等いただけますと大変勉強になりますので
お時間あればコメントお願いいたします。

1.本日の課題
=
Java基礎知識

2.参考図書
=
スッキリわかるJava入門 第三版 

3.勉強内容:開発の流れについて
=
Javaに関わらず、すべての開発についての流れは
 **①ソースコードの作成(コードを書く)**
 **②コンパイル(コンパイラを用いてソースコードを変換)**
 **③実行(結果を返す)**
のように行われる

**①ソースコードの作成:**

まず、テキストエディタなどでファイルを作成し、
各プログラミング言語の定める文法に従いコードを書く。

このコード、人が読める状態のプログラムをソースコードといい
この際に書き込んだファイルをソースファイルという。
“`java:Hello.java ← ソースファイル(Javaなので.jav

元記事を表示

Spring Boot Web アプリケーションを作る

# はじめに

記載情報は CI/CD に関連します。
実務上関わった環境・機能を身近な情報としてお届けしたく、投稿をはじめました。
各学習上、お金のかからない方法を選択していきます。

以下の手順を実施することで、Spring Boot Web アプリケーションを作る工程を模倣します。

## 対象者と関連環境・機能

この記事は下記のような人を対象にしています。

– CI/CD 初学者
– プログラミング初学者
– 駆け出しエンジニア

記載している環境・機能は以下です。

– Java
– Spring Boot
– Spring Web
– thymeleaf
– Spring Tool Suite 4

## 準備

| No | 参照 URL |
| –: | ———————————————————————–

元記事を表示

【Java】今更知ったAtomicIntegerでラムダ式内処理結果をカウント

以下のように実装できます。

“`Java
AtomicInteger successCount = new AtomicInteger(0);
// 何かしらのデータ取得処理
List dataList = getDataList();
dataList.stream().forEach(data -> {
try {
// 何かしらの処理
process(data);
successCount.incrementAndGet();
} catch (Exception e) {
throw e;
}
});
“`

ラムダ式を使うとローカル変数のインクリメントによるカウントができないため、
非常にダサいですが元々は以下のように成功するたびにListにtrueを追加して、その数をカウントしていました。

“`Java
List successList = new ArrayList<>();
// 何かしらのデータ取得処理
List data

元記事を表示

個人的Minecraft Java Editionの初期設定

身の回りで「Minecraft買った~」という人を割と見かけるので自分のいつもやってる初期設定というか導入方法を書いておく

## Minecraftの購入
[https://www.minecraft.net/ja-jp](https://www.minecraft.net/ja-jp) で購入しましょう。確か今は購入するとJava版もBE版も遊べたはず。
(この前までは別々に購入する必要があった)

## Minecraftランチャーのインストール
[https://www.minecraft.net/ja-jp/download](https://www.minecraft.net/ja-jp/download) から自分の環境に合ったものをダウンロードします。
新規購入した方は購入画面からそのまま進んで大丈夫です。

ダウンロードが終わったらインストールを行いましょう。Chromeであれば左下に表示されるダウンロードされたファイルをクリックしてもらえれば、インストールが始まります。ダウンロードフォルダーをエクスプローラーで開いて、ダブルクリックすることでもできます。

元記事を表示

Spring Tool Suite 4 インストール、Spring Initializr 、gradlew の利用

# はじめに

記載情報は CI/CD に関連します。
実務上関わった環境・機能を身近な情報としてお届けしたく、投稿をはじめました。
各学習上、お金のかからない方法を選択していきます。

以下の手順を実施することで、Spring Tool Suite 4 をインストールを行い、Spring Initializr でプロジェクトのテンプレートを入手の上、gradlew 利用の準備を行います。

## 対象者と関連環境・機能

この記事は下記のような人を対象にしています。

– CI/CD 初学者
– プログラミング初学者
– 駆け出しエンジニア

記載している環境・機能は以下です。

– Java
– Spring Boot
– Spring Web
– Spring Tool Suite 4
– Spring Initializr
– gradlew

## Spring Tool Suite 4(STS)のインストール

後に続く関連記事で Spring Boot Web アプリを作り、CI/CD 環境に乗せていくため、アプリ作成に便利な IDE のインストールを事前作業とし

元記事を表示

現場で役立つシステム設計の原則 備忘①

## 第1章 小さくまとめてわかりやすくする

### 変更が大変なプログラムの特徴

1. メソッドが長い
2. クラスが大きい
3. 引数が多い

### 変更に強いプログラムの書き方

– メソッドは短く、クラスは小さく
– 略語は使わない
– 意味のまとまりで空行をうまく使う
– 説明用のローカル変数の導入(変更の影響範囲を局所化)
– 1つの変数に代入を繰り返す破壊的代入を避ける
– 意味のあるコードのまとまり(段落)を「メソッド」として独立させる
– 業務の関心事に対応したクラス(ドメインオブジェクト)を作る
– **値オブジェクトを利用する**
– **値オブジェクトは完全コンストラクタで作る**
– **コレクションオブジェクトを利用する**

### 値を扱うための専用クラスを作る(値オブジェクト)

– 基本データ型をそのまま使うと無法地帯
– 基本データ型では意味の違う値でも型が同じなのでコンパイル時に検出できない
– 値の範囲を制限することで、わかりやすく安全に
– 値オブジェクトは業務の用語そのもの

NG例

“`java
int quantity;
B

元記事を表示

Javaのモジュールを作ってみる

資格試験の勉強をしていて、モジュールを実際に実装したことがないと思ったのでやってみました。

“`php:HelloOya
package oya;

public class HelloOya {
public void hello() {
System.out.println(“Hello Oya!”);
}
}
“`

“`php:KoMain
package ko;

import oya.HelloOya;

public class KoMain {

public static void main(String[] args) {
HelloOya ho = new HelloOya();
ho.hello();
}

}
“`
“`php:moduleoya
module moduleoya {
exports oya;
}
“`
“`php:moduleko
module moduleko {
//requires moduleoya;

exports ko;

requires transitive moduleoya

元記事を表示

jacksonを使ってjson生成時に先頭文字を大文字にしたい

## やりたいこと

以下のようなクラスがあった場合に、

“`Java
@Getter
public class SampleClass{
private String propertyA;
private String propertyB;
}
“`

オブジェクトを変換すると、
`{“propertyA”:”hoge”,”propertyB”:”fuga”}`
のようになると思うのですが、
諸事情あって、以下のように送信したかったことがありました。
`{“PropertyA”:”hoge”,”PropertyB”:”fuga”}`

いちいち`@JsonProperty()`を書くのは面倒・・・

## 解決法

`ObjectMapper`のオプションで解決できました。

“`Java
ObjectMapper mapper = new ObjectMapper();
// 以下のオプションを有効化!!
mapper.setPropertyNamingStrategy(PropertyNamingStrategies.UPPER_C

元記事を表示

GitHub ActionsからGitLabのMavenパッケージレジストリにDeployする方法

# この記事の概要
筆者は、HottyDBという検索エンジンとレコメンドエンジンの機能を搭載したRDBMSを個人開発しています!
そのHottyDBのα版を公開するにあたり、GitLabのパッケージレジストリを使いました。
この記事では、GitHub ActionsからGitLabのパッケージレジストリにMavenパッケージをDeployする手順を解説します。

ちなみに、過去の記事でHottyDBに関する解説もしていますので、よければそちらも参照してみてください!!

https://qiita.com/toru1055/items/0fe400989373823e9c78

# 背景
Mavenパッケージを公開したい場合、一般にはMaven Central Repositoryを使うと思います。
ただMaven Central RepositoryはJIRAチケットによる申請が必要なので、HottyDBがまだα版であることを考えると少々面倒です。

GitLabのパッケージレジストリであれば簡単にMavenパッケージの公開や削除することができるので、今回使うことにしました!

#

元記事を表示

OTHERカテゴリの最新記事