JAVA関連のことを調べてみた2023年10月12日

JAVA関連のことを調べてみた2023年10月12日

AWS CDK で Infrastructure as Code する: SpringBoot編2

こんにちは。ただいまAWS CDK絶賛勉強中です。

https://qiita.com/masatomix/items/445335b5c216f10485c5

のつづきです。前回まででDockerイメージが作成できたので、そのイメージを使ってECSを起動していきます。

ちなみに、[前回](https://qiita.com/masatomix/items/445335b5c216f10485c5)作ったDockerイメージはこれでした。

“`console
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myorg/spring-boot-sample-tomcat 0.1.1-SNAPSHOT cdcd3af69190 3 days ago 363MB
$
“`

## 前提条件

– [AWS CDK で Infrastructure as Code する: ECS編](https://qiita.co

元記事を表示

【Java・学習ログ14】日付と時刻について

教本に沿ってやってみたシリーズ、『第15章』その2。
≪使用教材≫スッキリわかるJava入門 第3版 スッキリわかるシリーズ

## ■日付と時刻
**基準日付(エポック)**…1970年1月1日0時0分0秒
日時情報を扱うには下記のような形式がある。

long型

基準日時(エポック)から経過したミリ秒で記述する方法。
現在日時を得られるSystem.currenTimeMillisメソッドを用いて処理時間の計測を行う。
“`java
public class Main {
public static void main(String[] args) {
long start = System.currentTimeMillis();

long end = System.currentTimeMillis();
System.out.println(“処理に掛かった時間は” + (end – start) + “ミリ秒”);
}
“`
date型

Javaで「ファイルからの入力を行うスキャナを作成する」の動作を確認してみた

# 概要

Javaで「ファイルからの入力を行うスキャナを作成する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/scanner/index4.html

# 実装

以下のファイルを作成しました。
“`JSample4_3.java
import java.util.Scanner;
import java.io.FileNotFoundException;
import java.io.File;

class JSample4_3{
public static void main(String[] args){
try{
File file = new File(“sample2.txt”);
Scanner scanner = new Scanner(file, “UTF-8”);

while (scanner.hasNextLine()){
String dat = scanner.nextLine();
System

ModelMapperでenumマッピングのデモ

まず、enum Color定義します。
“`java:Color
enum Color {
WHITE(“白”, “color is white”),
BLACK(“黒”, “color is black”);

private String value;
private String description;

Color(String value, String description) {
this.value = value;
this.description = description;
}

public String getValue() {
return value;
}

public String getDescription() {
return description;
}
}
“`

Catを定義します。カラー属性がある。
“`java:Cat
class Cat {
private Color color;

public Cat() {
}

public Cat(Color color) {
thi

ONLYOFFICEオンラインエディターをJavaのウェブサイトに統合する方法

この記事では、Javaで書かれたWebアプリケーションにONLYOFFICE Docsを統合方法をご紹介します。

:::note warn
統合の例は、ドキュメントエディタの機能と、Document Serverをあなたのアプリケーションに接続する方法を示すために使用されます。**適切なコードの変更なし**に、これらの例をあなた自身のサーバで**使用しないでください**!テスト用のサンプルを有効にした場合は、本番環境に移行する前に無効にしてください。
:::

## 重要なセキュリティ情報

テスト例を使用する際には、以下のセキュリティ面に留意してください:

* 認証が必要ないので、不正アクセスからストレージを保護することはできません。
* パラメータはあらかじめ用意されたスクリプトに従ってコードによって生成されるので、リンクのパラメータ置換に対するチェックはありません。
* 各テスト例はONLYOFFICE Document Serverからのリクエストのみを対象としているため、編集後のファイル保存リクエストにおけるデータチェックはありません。
* 他ドメインからONLYOFFI

Javaコマンドでクラスパス指定時に注意すること

## 前提
**Windows11**を使用しています
ディレクトリの指定は**相対パス**で行います

## 構成
例えば以下のディレクトリ構成を想定します
“`:H:\Java
H:\Java
├─B
│ │
│ └─Y
│ Sub.java

├─C
│ │
│ └─Z
│ Base.java

└─A

└─X
Main.java
“`
それぞれのコードの実装は以下の通りです
“`:H:\Java\A\X\Main.java
package X;

import Y.Sub;
import Z.Base;

public class Main {
public static void main(String[] args) {
new Sub().Message();
new Base().Run();
}
}
“`
“`:H:\Java\B\Y\Sub.java
package Y;

public

簡単springbootでのFilter実装

# 目的
Filterで設定した状態でない場合に、特定にURLに遷移しようとするとフィルター機能を実装すること。
(例)ログインしていないユーザーがログインユーザー限定のURL(/userEdit/)などに入ろうとした場合、下記のように弾かれること。
![ログインフィルター 2023-09-28 164906.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3185982/996dd646-7b01-b84f-03dc-dd234faf28b3.png)

# 実装手順
1.Filterの定義
2.FilterConfig.java(URLの適用設定)
3.まとめ

# 1.Filterの定義
LoginFilter.java→フィルター機能の内容を記述。

コードについて
doFilterメソッド→ここでフィルタリング処理を行っている。requestとresponseを引数として受け取り、チェーン内の次のフィルターまたはサーブレットにリクエストとレスポンスを渡す。
リクエストを型変換して、セッション情

Java JDKとSDKとは

## JDKとは

– JDK (Java Development Kit)
ソフトウェアパッケージのこと
ソースコードを機械語へ変換するコンパイラや
機械語を実行するJVM (Java仮想マシーン)等が含まれている

## SDKとは

– SDK (Software Development Kit)
コンパイラ等、開発時に使用するツールのこと
Javaの場合はJDKのことを指す

Javaで「スキャナで取得した値を指定したデータ型の値として取得する」の動作を確認してみた

# 概要

Javaで「スキャナで取得した値を指定したデータ型の値として取得する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/scanner/index2.html

# 実装

以下のファイルを作成しました。
“`JSample2_3.java
import java.util.Scanner;
import java.util.InputMismatchException;

class JSample2_3{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);

try{
System.out.println(“年齢を入力してください”);
int old = scanner.nextInt(16);

System.out.println(“年齢は” + old + “です”);
}catch (InputMismatchEx

【Java・学習ログ13】文字列処理について

教本に沿ってやってみたシリーズ、『第15章』その1。
≪使用教材≫スッキリわかるJava入門 第3版 スッキリわかるシリーズ
## ■基本的な文字列操作

文字列の内容を調査するメソッドがStringクラスに用意されている。

#### 【調査】
| | |
|-|-|
|内容が等しいか調べる|public boolean equals(Object o)|
|大文字、小文字を区別せず等しいか調べる|public boolean equalsIgnoreCase(String s)|
|文字列長を調べる|public int length()|
|空文字か(長さが0か)を調べる|public boolean isEmpty()|

※大文字・小文字の区別のことを**文字のケース**という。

#### 【検索】
| | |
|-|-|
|一部に文字列sを含むかを調べる|public boo

java、SQLメモ

任意のテーブルにレコードを追加する
“`java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class Main {
public static void main(String[] args) {
Connection connection = null;
PreparedStatement preparedStatement = null;

try {
// データベースへの接続を確立
connection = DriverManager.getConnection(“jdbc:mysql://localhost:3306/mydatabase”, “us

JavaFX の InvocationTargetExceptionを治す

# 環境
InteliJ IDEA
JDK21
ビルドツールとしてMavenを使用

# 問題

以下のような
・TestWindow.java
・TestWindowController.java
・test-view.fxml
の3ファイルで構成されている単純なJavaFXアプリケーションをTestWindow#main()から実行すると、InvocationTargetExceptionがスローされる。

実行イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368194/79c280a7-6380-b341-7e76-3145fbeeb1a3.png)

“`java:TestWindow.java
package com.example.hoge;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javaf

Mac向けマインクラフトMOD開発環境のセットアップ

# Mac向けマインクラフトMOD開発環境のセットアップ

– [著者の環境情報](#環境情報)
– [これからダウンロードする3つのツールについて](#これからダウンロードする3つのツールについて)
– [インストールについて](#インストールについて)
– [コマンドライン操作のセクション](#コマンドライン操作のセクション)
– [主要なファイルの説明](#主要なファイルの説明)
– [主に開発において変更や作成をするファイル](#主に開発において変更や作成をするファイル)

## 環境情報

### OS
– **バージョン**: macOS Ventura [13.0.1]

### Java
– **バージョン**: java version [1.8.0_381]
– **インストールパス**: [/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home]

### Forge
– **バージョン**: forge [1.12.2]

### IDE
– **名称**: [Eclipse]
– **バージョン

GithubActionsを利用してJavaアプリのテストを自動化する

`GithubActions`を使ってGithub上でリソースを管理しているJavaアプリのテストを自動化してみる。
今回はGithubActionsの触りということで、簡単なUnitテストのみやってみる。

## 初期状態

Githubの以下の構成からスタート。

“`
RepositoryRoot
/SampleJavaApp(EclipseJavaプロジェクト)
/src/main/java
Sample.java
/src/test/java
SampleTest.java
/gradle/wrapper
gradle-wrapper.jar
gradle-wrapper.properties
build.gradle
gradlew
gradlew.bat
“`

Gitリポジトリの下にJavaアプリリソースを管理するEclipseプロジェクトフォルダがある感じ。

`main`ブランチから派生したブランチを作成し、

Disqus APIを使用してフォーラムのスレッドと投稿を取得する方法

[Disqus](https://disqus.com/)は、ウェブサイトにコメント機能を追加するための人気のあるプラットフォームです。この記事では、Javaを使用してDisqus APIからフォーラムのスレッドと投稿を取得する方法を解説します。

# 1. 必要なライブラリのインポート

まず、以下のライブラリをプロジェクトに追加する必要があります。
– `OkHttpClient`: HTTPリクエストを行うためのライブラリ
– `Gson`: JSONのシリアル化およびデシリアル化のためのライブラリ

`OkHttpClient`と`Gson`をMavenプロジェクトに追加するには、`pom.xml`ファイルに対応する依存関係を追加する必要があります。

以下は、それぞれのライブラリのMaven依存関係です:

1. **OkHttpClient**:
“`xml

com.squareup.okhttp3
okhttp

Unsupported major.minor version 52.0 の原因と解消法

## 環境
– 言語 Java
– 開発環境 IntelliJ

## 事象
昨日、プロジェクトコンパイル時に以下のエラーが出力された。
“`kotlin:エラーログ
org/jetbrains/kotlin/idea/gradleTooling/AndroidAwareGradleModelProvider : Unsupported major.minor version 52.0
“`

## 調査結果
JDKとJREのバージョン差異で発生する。

## 対応
以下3つを統一させる。

・システム環境変数「JAVA_HOME」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1202056/e8c13b32-3fab-bfb0-8ae2-7a05acac14a6.png)

・プロジェクトのSDK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1202056/cda9b897-09

デザインパターン Decoratorパターン

# Decoratorパターン
Decoratorパターンは、継承の代わりにコンポジションを使用するデザインパターン。

継承の代替手段として知られ、継承を利用するよりも柔軟に機能追加を行うことができる。**継承を避けたい場合に特に有用**。

継承がコンパイル時に機能を追加しているのに対して、Decoratorパターンはプログラムの実行時に機能を追加しているため、クラスの変更が最小限に抑えられ、柔軟性が向上する。

具体的には、オブジェクトをラップし、親クラスへの参照を保持したクラスを利用することで、ラップするごとに独自の機能を追加していくことができる。

ランタイム時に機能を追加することができ、これによって機能を拡張させることができる。

コードが複雑になるという欠点を持つ。

`java.io`パッケージの`InputStream`に関連するものや、UIフレームワークで利用されている。

## Decoratorパターンが利用できるシチュエーション
バーガーショップの注文システムを作成するとする。

バーガーは「ハンバーガー」「チーズバーガー」の2種類があり、その他オプションとし

テストしやすいJavaコードを書く 

普段業務でJavaを書く際、テストコードを意識したコードを書いているが、それを言語化してみた。

## 本稿の対象ユーザー

* テスト駆動開発を期待した人は回れ右。
* 普段からテストコードを意識してコードがかけている人は回れ右。
* Java に関して基本的な知識がある。
* Java で Spring か Jakarta EE(あるいは Java EE) のアプリの構造を知っている。

# テストコードのありがたみ

私は、前職の SIer 時代はテストコードを書くのがあまり好きではなかった。
単純に動作確認するだけであれば普通にアプリを動かすか、デバッグ機能で検証した方がわざわざ実装するよりも早いケースがほとんどだと思うし、テストコードを書く場合はテストコードのメンテナンスコストも発生するのであまりコスパが良いとは思えなかった。
もちろん、テストコードを書かないと結合可能になるまでテストできないことも、細かい単位で分けた方がバグの原因特定がし易いことも知ってはいるが、そのテストコードを長期的に維持する必要があるかは些か疑問だった。
しかし、自社開発の会社へ転職してアジャイル開発

ABC323A~Fの解答[Java]

## はじめに
今回はFまでコンテスト中に解けたのでそれを載せようと思います。

なお、僕のライブラリは[提出結果](https://atcoder.jp/contests/abc323/submissions?f.Task=&f.LanguageName=Java&f.Status=AC&f.User=viral)よりご確認ください。
では、見ていきましょう。

## A – Weak Beats
問題文は[こちら](https://atcoder.jp/contests/abc323/tasks/abc323_a)

愚直に調べました。
“`A.java
final class Main {

private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner( System.in );
private static final SimpleWriter out = new SimpleWriter( System.out, aut

Javaで「キーボードから入力された値を取得する」の動作を確認してみた

# 概要

Javaで「キーボードから入力された値を取得する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/scanner/index1.html

# 実装

以下のファイルを作成しました。
“`JSample1_4.java
import java.util.Scanner;

class JSample1_4{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);

System.out.println(“趣味を入力してください。”);

String hobby = scanner.nextLine();
String[] tokens = hobby.split(“\\s+”);
for (int i = 0 ; i < tokens.length; i++){ System.out.println("[" + i + "]" + to