- 1. Mockito使い方メモ
- 2. 【JSP/Servlet】簡単なチャット機能の作り方
- 3. Javaに触れてみました!
- 4. JavaSilver_SE11(黒本の改造問題)
- 5. ライブラリ開発者より指定されたバージョンを利用してアプリケーションを作る
- 6. Jar を作り、Azure Artifacts を利用して成果物を配布する
- 7. Java(Spring)のテストを早くするために頑張ったこと
- 8. Gradleテスト時にテスト用の環境変数をセットする方法
- 9. Visual Studio CodeのJava環境でエラー出たとき
- 10. 配列の要素m個からn個取る組み合わせ(配列)を列挙する
- 11. Androidプログラミングのimport一覧
- 12. 【第一回目/Java学習】初学者によるJava学習 開発の流れ
- 13. Spring Boot Web アプリケーションを作る
- 14. 【Java】今更知ったAtomicIntegerでラムダ式内処理結果をカウント
- 15. 個人的Minecraft Java Editionの初期設定
- 16. Spring Tool Suite 4 インストール、Spring Initializr 、gradlew の利用
- 17. 現場で役立つシステム設計の原則 備忘①
- 18. Javaのモジュールを作ってみる
- 19. jacksonを使ってjson生成時に先頭文字を大文字にしたい
- 20. GitHub ActionsからGitLabのMavenパッケージレジストリにDeployする方法
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);
// 何かしらのデータ取得処理
ListdataList = getDataList();
dataList.stream().forEach(data -> {
try {
// 何かしらの処理
process(data);
successCount.incrementAndGet();
} catch (Exception e) {
throw e;
}
});
“`ラムダ式を使うとローカル変数のインクリメントによるカウントができないため、
非常にダサいですが元々は以下のように成功するたびにListにtrueを追加して、その数をカウントしていました。“`Java
ListsuccessList = new ArrayList<>();
// 何かしらのデータ取得処理
Listdata
個人的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パッケージの公開や削除することができるので、今回使うことにしました!
#