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

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

IRCクライアントJavaライブラリKittehを使ってみる

JavaのIRCクライアントライブラリの[Kitteh](https://kitteh.org/irc-client-library/)を使ってみます。

Kitteh IRC Client Libraryを略してKICLとも呼ばれるようです。

# 環境

OS:Windows10
Java:openjdk 17.0.6 2023-01-17 LTS
Maven:3.8.7

# 設定

## Mavenのプロジェクトにインポート

“`xml:pom.xml

org.kitteh.irc
client-lib
8.0.0

“`

## IRCサーバのSSL証明書をjavaキーストアに登録する[^1](SSL通信をする場合)

[^1]:https://kitteh-irc-client-library.readthedocs.io/en/latest

元記事を表示

Leetcode 67. Add Binary

https://leetcode.com/problems/add-binary/description/

“`java
class Solution {
public String addBinary(String a, String b) {
StringBuilder sb = new StringBuilder();

int i = a.length() – 1;
int j = b.length() – 1;
int carry = 0;
while (i >= 0 || j >= 0) {
int sum = carry;
if (i >= 0) {
sum += a.charAt(i) – ‘0’;
i–;
}
if (j >= 0) {
sum += b.charAt(j) – ‘0’;

元記事を表示

Spring Boot WEBサービスを ASA (Azure Spring Apps) 環境で起動する (jar ファイル形式)

# Spring Boot WEBサービスを ASA (Azure Spring Apps) 環境で起動する (jar ファイル形式)

## 目的
[Spring Boot WEBサービス](https://qiita.com/hiroxpepe/items/4a0f5e077155ce41e7ac)を [Azure Spring Apps](https://learn.microsoft.com/ja-jp/azure/spring-apps/overview) 環境で起動して理解を深めます。

## 実現すること

Microsoft Azure Spring Apps に Spring Boot の jar ファイル形式のWEBアプリをデプロイ・起動します。

## 開発環境

+ Windows 11 Home 22H2 を使用しています。
+ [WSL](https://learn.microsoft.com/ja-jp/windows/wsl/about) の Ubuntu を操作していきますので macOS の方も参考にして頂けます。

元記事を表示

備忘録(eclipseでMySQL連携の方法)

EclipseでJavaとMySQLの連携にとても苦戦したので、その戦いの記録

初心者なので必要のないデータやチンプンカンプンな表記があるかもですが、ご指摘いただけると嬉しいです。

バージョン
Eclipse:2021-06 (4.20.0)
MySQL:Ver 8.0.32 for Win64 on x86_64 (MySQL Community Server – GPL)
JDBC:mysql-connector-j-8.0.31.jar

今回の挑戦
Javaでデータベース連携をしたシステム開発に挑戦をしたい

どこまでできたか
eclipseでMySQLへの接続まで

参考にしたサイト
<MySQLへのダウンロード時に参照>
https://johobase.com/mysql-download-install-initial-setting/

<MySQLの立ち上げ方について参照>
https://prog-8.com/docs/mysql-env-win
恐らくバージョンの違いでこの記事だけでは上手く起動できず下記サイトも参照
https://beiyan-tool

元記事を表示

[Java] デザインパターン – Adapter

## 目的
以下の書籍を読んで、デザインパターンについて学習したため、その備忘録として記事を作成する。

* Java言語で学ぶデザインパターン入門 第3版 (著: 結城浩)

## Adapterパターンとは
* 既に提供されているものと必要なものの間のずれを埋める変換器の役割を果たす
* (例)直流xxボルトを交流xxボルトに変換するACアダプタ
* 既存のクラスには全く手を加えずに、目的のインターフェース(API)に合わせようとするもの

2種類のAdapterパターンがある。
| 分類 | 具体的な使用方法 |
|:-:|:-:|
| クラス | 継承 |
| インスタンス | 移譲 |

移譲については以下の記事が詳しい。

https://qiita.com/jesus_isao/items/4b6b7846ccf5eb46b1bc

### なぜこのデザインパターンを使うのか
* クラスを新規作成するよりも、テスト済みの既存のクラスを再利用した方がバグ発生時の調査範囲を特定しやすいため。
* 既存のクラスはテスト済みなので、バグが発生した時は、再利用先のクラス(Ada

元記事を表示

assert method

assertを、入力値チェック、出力値チェック、コンストラクタチェックなどに使う
assertはデフォルト無効なため、java -eaオプションで実行すること
“`java
class Item{
private String name;
private int price;

public Item(String name, int price) {
this.name = name;
this.price = price;
assert price > 100 : “constructor price over error”;
}

public int getPrice() {
return price;
}

public void setPrice(int price) {
assert price > 100 : “set price over error”;
this.price = price;
}

元記事を表示

try with resource, AutoCloseable

class implements AutoCloseableがtry with resourceできる
BufferedReadearなど。
try blockの最後でclose()が呼ばれる
class implements AutoCloseableがnullの場合はNullpointerは発生しない。closeもしない
記述した順番と逆順でclose
“`java
class Sample implements Closeable {
String msg;
Sample(String msg) {
this.msg = msg;
}
@Override
public void close() {
System.out.println(this.msg + ” close”);
}
void method() {
System.out.println(this.msg + ” method”);
}
}
public class Outer {
public

元記事を表示

JUnit 5 で全 @BeforeAll の前に処理を行う

全テストの実行前に static 変数のフラグをセットしたかったため、そうしたことのできる方法を探したところ、JUnit 5 と IntelliJ や Maven Surefire Plugin の組み合わせで実現可能だとわかったためご紹介します。

JUnit 5 User Guide の [6.4.5. Registering a LauncherSessionListener](https://junit.org/junit5/docs/current/user-guide/#launcher-api-launcher-session-listeners-custom) を読めばわかることではあるのですが、もっと簡単な例と実行結果が載っている日本語の記事があるといいんじゃないかと思って執筆しました。

## 前提

– Gradle 4.6 以上
– Maven Surefire/Failsafe 3.0.0-M6 以上
– IntelliJ IDEA 2017.3 以上

Maven では Surefire/Failsafe Plugin のプレリリース版を使っている点にご注

元記事を表示

存在しない彼女へのアクセスによって起きるぬるぽをKotlinのNull Safetyの力で防ぐ

# 今日はなんの日?
今日はバレンタインらしいですが、特に変わったことがないのでいつも通りの記事を書きたいと思います。
# とあるコード
“`java
import java.util.Calendar;

class Chocolate {}

class Kanojo {
private Chocolate choco = new Chocolate();

Chocolate getChoco() {
return choco;
}
}

class Naotiki {
private Kanojo kanojo;
Kanojo getKanojo() {
return kanojo;
}

void eat(Chocolate choco){
System.out.println(“おいし~”);
}

public static void main(String[] args) {
//私のインスタンスを生成
Naotiki

元記事を表示

*作成中* 継承の多様性について

“`Parent.java
String val = “A”;

void print() {
System.out.println(val);
}

void difference() {
System.out.println(“super1”);
}

“`

“`Child.java
String val = “B”;

void print() {
System.out.println(val);
}
void print2() {
System.out.println(“sub1”);
}

“`

“`Main.java

package Sample;

public class Main {
public static void main(String[] args) {
Parent a = new Parent();
Parent b = new Child();

元記事を表示

【Java基礎】if構文-2.否定の条件分岐

[問題]  (参照:http://www.cc.kyoto-su.ac.jp/~mmina/bp1/hundredKnocksBasic.html)
整数値を入力させ、値が0ならばzero、0でない場合はnot zeroと表示するプログラムを作成しなさい。

# コード
“`Java
import java.util.*;

public class Main {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
if(t == 0){
System.out.println(“zero”);
}else{
System.out.println(“not zero”);
}
}
}
“`

↓「2」と入力

# 結果
“`
not zero
“`

元記事を表示

SpringBoot @GetMappingについて

@GetMappingアノテーション付きメソッドは、与えられたURI表現式と一致するHTTP GETリクエストを処理します。

“`java:PersonController.java
package com.informanaging.project.demo.controller;

import com.informanaging.project.demo.domain.Person;
import com.informanaging.project.demo.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RequestMapping(value = “/api/person”)
@RestController
public class PersonController {
@Autowired
private PersonServi

元記事を表示

Leetcode 1523. Count Odd Numbers in an Interval Range

https://leetcode.com/problems/count-odd-numbers-in-an-interval-range/description/

## アプローチ
### Brute force

“`java
class Solution {
public int countOdds(int low, int high) {
int total = high – low + 1;
if (total % 2 == 0) {
return total / 2;
}
if (low % 2 == 1) {
return total / 2 + 1;
}
return total / 2;
}
/* TLE
public int countOdds1(int low, int high) {
int count = 0;
for (int i = low; i <= hi

元記事を表示

Spring Boot WEBサービスを Azure App Service 環境で起動する (Docker イメージ)

# Spring Boot WEBサービスを Azure App Service 環境で起動する (Docker イメージ)

## 目的

[Spring Boot WEBサービス](https://qiita.com/hiroxpepe/items/4a0f5e077155ce41e7ac)を [Azure App Service](https://learn.microsoft.com/ja-jp/azure/app-service/overview) 環境で起動して理解を深めます。

## 実現すること

Microsoft Azure App Service に Spring Boot WEBアプリの Docker イメージをデプロイします。

## 開発環境

+ Windows 11 Home 22H2 を使用しています。
+ [WSL](https://learn.microsoft.com/ja-jp/windows/wsl/about) の Ubuntu を操作していきますので macOS の方も参考にして頂けます。

WSL (M

元記事を表示

ChatGPT Java Interface実装

記事ディレクトリ
1. 記事の紹介
2. Java ベースの API を呼び出す
2.1 環境構成
2.2 コードを書く
3. 重要なまとめ
3.1 公式ウェブサイトのリンクアドレス
3.2 開発言語の例へのリンク
1. 記事の紹介
まず、ChatGPT公式 Web サイトにアクセスする必要があります。この Web サイトでは、呼び出しインターフェイスの多くの言語の例が提供されてChatGPTいAPIますjava,go,C#。

私は開発者なので、呼び出しインターフェイスjavaの使用方法を次のように詳しく説明します。javaChatGPTAPI

2. Java ベースの API を呼び出す
2.1 環境構成
公式ウェブサイトのリンク アドレスによると、クリックしてjava例にジャンプしますGitHub。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3148647/1f781852-0866-6c39-87a4-1b09981ee467.png)

GitHub上記にジャンプした後、

元記事を表示

springでListのstringなどの要素にvalidationのアノテーションを付与

“`java
import java.util.List;

import jakarta.validation.constraints.NotNull;
import lombok.Data;

@Data
public class SampleRequest {
List<@NotNull String> list;
}
“`

アノテーションを自作する場合は “`ElementType.TYPE_USE“` を使用する。

“`java
@Target(java.lang.annotation.ElementType.TYPE_USE)
“`

元記事を表示

プログラムからpdfの長体を入れる【iText】

# PDFで長体(縦に長いor横に長い文字)を入れたかった
元々はAmazonのFBA商品ラベルを自分で作りたかった。(物販の人向け)
セラーセントラルからダウンロードできるものは文字数によりフォントの横幅をコントロールして、表示される文字数を変えていた。

出来上がりイメージはこちら
![スクリーンショット 2023-02-13 16.47.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120789/facc2f32-78b5-60b2-9e57-737133bd4985.png)

## 行き着くまで
最初は文字幅を変えられるのかと思いきや、あんまりそんな情報が見つからない。
こんなんとか
https://helpx.adobe.com/jp/indesign/kb/4096.html

### PDFLibにはあるみたいだった
https://www.softel.co.jp/blogs/tech/archives/4897

### ただ、有償のものは避けたかったので他のライブラリで探す

元記事を表示

[Java] デザインパターン – Iterator

## 目的
以下の書籍を読んで、デザインパターンについて学習したため、その備忘録として記事を作成する。
* Java言語で学ぶデザインパターン入門 第3版 (著: 結城浩)

## Iteratorパターンとは
何かがたくさん集まっているときにそれを順番に指し示していき、全体をスキャンして処理を繰り返すもの。
* 具体例(配列`arr`の宣言は省略)
“`java
for (int i; i < arr.length; i++) { Sysytem.out(arr[i]); } ``` 上記のように変数`i`が添字として役割を果たし、ループごとに次の要素を指し示している。 ここで使われている変数`i`を抽象化し、一般化したものをデザインパターンでは「`Iterator`パターン」 と呼ぶ。 ## 実際に使ってみる ライブラリに、`java.util.iterator`のインターフェースがあり、以下メソッドを持つ。(詳細はURLを参照)

* forEachRemaining
* hasNext
* next
* remove

https://docs.oracle.

元記事を表示

【macOS】Spring Boot + MySQL + MyBatis を使ったアプリケーション作成

# 概要
Spring Boot + MySQL + MyBatisを使って、タスク管理アプリケーションを作成しました。
忘備録として、Spring Boot + MySQL + MyBatisの使い方と、作成したアプリケーションの起動方法をまとめます。

# 環境
* macOSバージョン:12.3.1
* Spring Bootバージョン:3.0.0
* Javaバージョン:17.0
* MySQLバージョン:8.0

# 事前準備
以下を参考に、MacにJava 17、MySQL 8.0、STS(Spring Tool Suite 4)をインストールします。
* [Javaのインストール手順](https://docs.oracle.com/javase/jp/17/install/installation-jdk-macos.html#GUID-F575EB4A-70D3-4AB4-A20E-DBE95171AB5F)
* [MySQLのインストール手順](https://prog-8.com/docs/mysql-env)

# MyBatisの使い方
MyBatisは、Ja

元記事を表示

Deprecated, SuppressWarnings

@Deprecatedをつけると非推奨
SuppressWarnings(“deprecation”)で警告を消すことができる
@Deprecated(forRemoval=true)をつけると非推奨削除予定
SuppressWarnings(“removal”)で警告を消すことができる

“`java
class Sample {
@Deprecated(forRemoval=true)
public void method() {
System.out.println(“—-“);
}
@Deprecated
public void method2() {
System.out.println(“—-“);
}
}
public class Outer {
@SuppressWarnings(“removal”)
public static void main(String args[]) {
Sample s = new Sample();
s

元記事を表示

OTHERカテゴリの最新記事