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

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

Javaプログラムからwindowsバッチファイルを実行する

実務でJavaプログラムからバッチファイルを実行する処理が実装されていたので備忘録として簡単なサンプルを残しておく。

今回はA5M2.exeを起動するバッチファイルをJavaから起動する処理を実装した。

なぜA5M2なのは特に理由はない。

実装する処理の流れは以下の通り。

①バッチファイルを起動するJavaプログラムを実行

②バッチファイルからA5M2.exeを起動

# Javaプログラムの実装

Javaのソースは下記の通り

“` sample.java
public class Sample {

public static void main(String[] args) {
try {
ProcessBuilder pb = new ProcessBuilder(“C:\\Users\\User\\Desktop\\hello.bat”);
Process process = pb.start();

int result = process.waitFor();
System.out.println(“戻り値:” + resu

元記事を表示

【Java基礎】入力フォームを使おう

[問題]  (参照:http://www.cc.kyoto-su.ac.jp/~mmina/bp1/hundredKnocksBasic.html)
数値を入力させ、その入力値を表示するプログラムを作成しなさい。

# コード
“`php
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
System.out.println(t);
}
}
“`

↓ 入力フォームに「56」と入力

# 結果
“`
56
“`

文字列の場合は
“`java
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {

元記事を表示

【Java基礎】割り算の余りを求める

[問題]  (参照:http://www.cc.kyoto-su.ac.jp/~mmina/bp1/hundredKnocksBasic.html)
15000を7で割った余りを表示するプログラムを作成しなさい。

# コード
“`php
public class Main {
public static void main(String[] args) throws Exception {
System.out.println(15000 % 7);
}
}
“`

# 結果
“`
6
“`

★ a % b =aをbで割った余り

元記事を表示

【Java基礎】数値の入力と文字列の入力の違い

[問題]  (参照:http://www.cc.kyoto-su.ac.jp/~mmina/bp1/hundredKnocksBasic.html)
1789+1758を計算して結果を表示するプログラムを作成しなさい。

# コード
“`PHP
1. 数値として数字を入力する場合
public class Main {
public static void main(String[] args) throws Exception {
System.out.println(1789+1758);
}
}

2.文字列として数字を入力する場合
public class Main {
public static void main(String[] args) throws Exception {
System.out.println(“1789+1758”);
}
}

“`
# 結果
“`
1. 3547
2. 1789+1758
“`

★数値として表示させたい、計算させたい時は、’ ’を付けない。

元記事を表示

【Java基礎】文字列を表示させる

[問題] (参照:http://www.cc.kyoto-su.ac.jp/~mmina/bp1/hundredKnocksBasic.html)
実行するとHello worldと表示するプログラムを作成しなさい。

# コード
“`Java
public class Main {
public static void main(String[] args) throws Exception {
System.out.println(“Hello world”);
}
}
“`

# 結果
“`
Hello world
“`

★System.out.println(“”); = 表示させる

元記事を表示

【Java】Excelワークシートの行と列を挿入または削除する方法

無料の[Free Spire.XLS for Java](https://jp.e-iceblue.com/introduce/free-spire-excel-for-java.html)を使用すると、プログラムで簡単にExcelワークシートの行や列を挿入したり削除したりすることができます。今回は、Javaアプリケーションで**Excelワークシートの行や列を挿入・削除する方法**を、以下の部分から紹介します。
– **[Excelワークシートに行を挿入する](#excelワークシートに行を挿入する)**
– **[Excelワークシートに列を挿入する](#excelワークシートに列を挿入する)**
– **[Excelワークシートの行と列を削除する](#excelワークシートの行と列を削除する)**
– **[Excelワークシートの空白の行と列を削除する](#excelワークシートの空白の行と列を削除する)**
## 【依存関係の追加】
この方法は、無料のFree Spire.XLS for Javaが必要ですので、先にjarファイルをインポートしてください。
### 1. Ma

元記事を表示

data.sqlを使ってテストコードを簡略化してみる

data.sqlとは

data.sqlを使用して、テストコードを簡略にしてみた。
data.sqlを使用すると、アプリケーションをロード時にテスト用とか初期にDBにqueryを実行したい時に役に立ちます。
data.sqlの配置パスは・・・src/resources/data.sql!

data.sql適用前

下のロジックではfindByBloodType()からgivenPerson()にてPerson Entityにデータを挿入して
ロジックを確認しています。
“`java
@Autowired
private PersonRepository personRepository;

@Test
void findByBloodType() {
givenPerson(“martin”,10,”A”);
givenPerson(“david”,9,”B”);
givenPerson(“dennis”,8,”O”);
givenPerson(“sophia”,7,”AB”);
givenPerso

元記事を表示

【Eclipse】サーバー・ランタイム環境からApacheが削除されてしまった場合の対処方法

### 【概要】
サーバー・ランタイム環境からApacheが削除されてしまった場合の対処方法を備忘録として残します。

### 【経緯】
SpotBugsというプラグインを追加した際に、何故か既存のプラグインが一部削除されてしまいました。
その削除対象にサーバー・ランタイム用のプラグインも含まれており、サーバー・ランタイム環境から削除されたようです。

### 【環境】
Eclipse Version: 2022-12 (4.26.0)

### 【発生事象】
メニュー -> ウィンドウ -> 設定 から
サーバー -> ランタイム環境 の画面を表示して、追加ボタンを押下します。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121997/5d69e3e9-af11-0967-f889-7d224bf4a81c.png)

サーバー・ランタイム環境の一覧が表示されますが、Apacheが存在しないことが確認できます。
![2.png](https://qiita-image-store.s3.a

元記事を表示

MotionLayoutを使ってSplashScreenにアニメーションをつけてみた

こんにちはandroidでアプリ開発を学習中のみのむしと申します。

今回は、前回に引き続きSplashScreenでアニメーションをつける方法について学びましたので、忘備録として残したいと思います。

MotionLayoutとは

アプリ内のモーションとウィジェットのアニメーションを管理できるレイアウトタイプで
ConstraintLayoutのサブクラスと公式ドキュメントに書かれています。
早速参考サイトや動画見ながら、実装していきたいと思います。

https://developer.android.com/training/constraint-layout/motionlayout?hl=ja

drawable(background_bg.xml)に新規xmlファイルを作成する

“`xml

元記事を表示

【Spring Boot】Resilience4jのRateLimiterでリクエストパラメータごとの流量制御

# 流量制御とは

アプリケーションで一度に実行できる処理の最大値を設定し、同時にリクエストされる回数を制限することです。サーバの負荷が一定以上になるのを防ぐことで、安定的にアプリケーションを稼働させることができます。APIを外部に公開する場合など、リクエストの回数がものすごく多くなる懸念があるときに使用すると有効でしょう。

Javaでは`Resilience4j`というライブラリに`RateLimiter`という仕組みがあるので、それを用いて実現することができます。

– [Resilience4j公式ドキュメント](https://resilience4j.readme.io/)

# リクエストパラメータごとに流量制御を適応する

通常流量制御はコントローラーに設定したURLごとに適応することが一般的でしょう。このような使い方に関しては、以下のサイトでわかりやすく解説されていました。

https://qiita.com/d-yosh/items/31fad6b4f6a9bb518e6d

本記事ではURLのエンドポイントに加え、リクエストパラメータごとでも制御する回数を分け

元記事を表示

Java ユーティリティクラス

開発の現場で〇〇Util.javaというのがあり、どのような役割があるのか疑問に思ったので調べました。

## ユーティルティクラス
Utilとはユーティルティクラスを指していたことが分かりました。
ユーティルティクラスとは、多くのクラスで使いそうな共通の処理をstatic領域にまとめて、簡単に処理を呼び出すためのクラスらしいです。
例えば、オブジェクトがnullや空文字なのか判定するメソッド、バリデーションチェックをするメソッドなどは多くのクラスで使いそうなのでユーティルティクラスに保存しておく実装になります。

## 使用例
“`java
class MsnUtil {
private MsnUtil(){}; //インスタンス化させないようにコンストラクタをprivate
public static boolean isempty(String msn) {
if(msn == null || msn.equals(“”)) {
return true;
} else {
retur

元記事を表示

JSF入力チェック

# bootstrap-5-jbvalidator

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106550/208dfb37-d39d-acc8-5ab0-342af72f9b9a.png)

“`.html

“`

“`.js
$(function () {

let validator = $(‘form.needs-validation’).jbvalidator({
errorMessage: true,
successClass: true,
language: ‘static/lib/boot

元記事を表示

React Native で react-native-sqlite-storage を使用する方法

[React Native で react-native-sqlite-storage を使用する方法](https://naoto-kagaya.com/articles/2022-12-18-react-native-sqlite-storage)

https://naoto-kagaya.com/articles/2022-12-18-react-native-sqlite-storage

# 上記記事の目的
React Native で expo を使わずに react-native-sqlite-storage を使えるアンドロイドアプリ開発環境を構築する。

# 記述内容

– react-native-sqlite-storageの導入方法
– 動作テスト

元記事を表示

Android+OpenCVで特徴点マッチングをやってみた

# はじめに
Android Application(Java)上で画像認識をやってみたいなと思い、OpenCVを使ってて特徴点マッチングをやってみました。

Windows 10 64-bit
Android Studio バージョン:Dolphin 2021.3.1 Patch 1
Android APIレベル:33
OpenCV SDKのバージョン:4.7.0
開発言語:Java

# OpenCVの取り込み
Android StudioへのOpenCVの取り込みはすでに分かりやすくい記載されている方がいるので以下を参照

https://qiita.com/tifa2chan/items/a2ec4f5d90eeb9cf1802

※GradleのSync errorが発生する場合は以下を参照

https://qiita.com/yoshiyuki-N/items/b6dba2c7167681dba7b2

# 特徴点マッチングについて
画像認識の手法の一つ(という理解)です。
画像中に含まれている特徴量を計算して特徴点を抽出します。
異なる画像間で抽出した特徴量を比較し、近

元記事を表示

String型やInt型に直接拡張関数を生やすのはいかがなものか(value classを検討しよう)

## 要約
– プリミティブ型に拡張関数を書くと、必要以上に広いスコープが対象になってしまう
– `value class`を活用するとスコープと用途を限定できて良いかも
– 絶対こうすべきという強い思想はまったくなく、検討する価値のある方法の1つという意

## よくある場面

?<`1500`のようにIntで扱っている値を画面に表示する際に、`1,500円`のようにカンマ区切りにして「円」をつけたStringに変換したいな ```kotlin val formatedPrice: String = "%,d".format(1500) + "円" println(formatedPrice) // -> 1,500円
“`

?<この変換はいろいろな箇所で使うから`Int.kt`ファイルに拡張関数として追加しておこう ```kotlin Int.kt fun Int.format(): String = "%,d".format(this) + "円" ``` ?<簡単に呼び出せるようになって、コードもスッキリした ```kotlin val formatedPrice

元記事を表示

ファイルアクセスと例外処理

proになるJava 第12章

・多くのプログラムでは、データを外から受け取り、処理結果をプログラムの外に出力する必要があります。
 プログラムで想定してないデータがやってきた場合などに例外として対応する場合の処理を見ていきます。

ファイルへの保存を行います。

sample code
projava/Writefile.java

package projava;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;

public class WriteFile {
public static void main(String[] args) {
var message = “””
test
message

元記事を表示

MybatisのInvalid bound statement (not found)でぼんやりはまった

# Mybatis + Java + SpringBoot4

パッケージ割を変えたら、
Mapper XMLのSQLを実行できなくなった・・・。
JavaのRepositoryで定義したメソッドと紐づけできなくなったらしい。

### エラー内容
Invalid bound statement (not found)

### 原因

MyBatisConfigのJavaクラスで定義している@MapperScanのベースパッケージ

“`
@MapperScan(basepackage=”com.example.xxx.yyy.zzz”)
“`

– レポジトリ(Javaクラス)の場所
com.example.xxx.yyy.zzz.aaa.bbbパッケージに配置。
– Mapper XML ファイルの場所
src/main/resource/xxx/yyy/zzz/aaa/bbbフォルダに配置。

### 解決

– Mapper XMLファイルの場所

MapperScanと同じ階層に配置する
src/main/resource/xxx/yyy/zzz

##

元記事を表示

Stream#max()

max,minは、Comparatorを渡す
“`java
public class Outer {
public static void main(String[] args) {
List l = List.of(“C”,”X”,”A”);
l.stream().max((a,b) -> a.compareTo(b)).ifPresent(System.out::println);
l.stream().min((a,b) -> a.compareTo(b)).ifPresent(System.out::println);
}
}
“`
“`
X
A
“`

元記事を表示

String#compareTo()

sortに渡すComparatorのbaseになる考え方
returnが1以上になるとsortはひっくり返す

“`java
public class Outer {
public static void main(String[] args) {
String s1 = new String(“A”);
String s2 = new String(“B”);
System.out.println(s1.compareTo(s2));
System.out.println(s1.compareTo(s1));
System.out.println(s2.compareTo(s1));
}
}
“`
“`
-1
0
1
“`

元記事を表示

findAny findFirst method with parallelStream

findFirstは1個目の要素が保証される
findAnyは1個目の要素が保証されない
“`java
public class Outer {
public static void main(String[] args) {
List l = List.of(1,2,3,4,5);
l.parallelStream().findAny().ifPresent(System.out::println);
l.parallelStream().findFirst().ifPresent(System.out::println);
}
}
“`
“`
3
1
“`

元記事を表示

OTHERカテゴリの最新記事