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

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

SpringBootにおけるバッチ処理

https://qiita.com/kazuki43zoo/items/47ed3b15077773f02448
上記記事を参考にさせていただきました

SpringBootで何らかのバッチ処理を作る際に高機能でジョブを制御する仕組みがあるSpringBatchを使いたくないようなケースがあります(例えばジョブスケジューラーなどを利用していてジョブは実行するだけにしたい場合など)。その場合はJavaコマンド実行してリターンコードで結果を返すようなシンプルな構造にしたい。

## やりたいこと
・SpringBootでコマンド実行して指定した処理を動かす
・機能ごとにクラスを分けてどの機能を動かすか?は引数で指定する
・ジョブの成功/失敗はコマンド実行のリターンコードで判断する

### 構成

実行コマンドイメージ

“`sh
java exec:<実行したいクラス名> -jar filename.jar
“`

コマンド実行した際の最初にコールするクラス

“`Java:Application.java
package com.example.springboot;

imp

元記事を表示

【Spring Boot+JPA】レコードの作成・更新日時を扱う

Spring Bootを使ってTODOアプリを作成している際に日付の登録や表示で少し詰まったので記録。

# 環境
* Java 11
* Spring Boot 2.7.0
* Maven 4.0.0
* MySQL 8.0.23

# やりたいこと
Spring Data JPAを用いてEntityの保存時に自動で作成、更新日時が入るようにしたい

# MySQLの設定確認
* todos table
“`
mysql> desc todos;
+————–+————–+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+————–+————–+——+—–+———+—————-+
| id | int | NO | PRI | NULL |

元記事を表示

STS環境構築

## 環境
|項目|バージョン|
|—-|—-|
|OS|Windows10|
|STS|4.15.1|

## STSをダウンロード~起動
1. 下記から使用しているOSの「Spring Tools 4 for Eclipse」を押下する。
https://spring.io/tools

1. ダウンロードしたjarファイルをダブルクリック、あるいはコマンドプロンプトで下記を実行し、STSを展開する。
1. “`sh:commond
java -jar {ダウンロードしたjarファイル}
# ex) java -jar ./spring-tool-suite-4-4.15.1.RELEASE-e4.24.0-win32.win32.x86_64.self-extracting.jar

1. 展開したフォルダは適当なフォルダに格納する。
1. 「SpringToolSuite4.exe」を実行する。

## STSを日本語化
2. 下記の「Pleiades プラグイン・ダウンロード」から使用しているOSを押下する。
https://

元記事を表示

Vue.jsで簡単なチャットアプリを作ってみた

Vue.jsの学習の為、チャットアプリを作成してみました。
Vue.jsの記法を学んだ後に、どのように成果物を作ればいいかの参考に少しでもなればと思い記事を作ってみました。

実装はGitHubに上げております。
フロント(Vue.js)
https://github.com/tkNoPrivate/chat-project-front
サーバー(Java)
https://github.com/tkNoPrivate/chat-project-server

## 構成

[Vueアプリ構成](#Vueアプリ構成)
[vuetify](#vuetify)
[ルーティング](#ルーティング)
[APIアクセス](#APIアクセス)
[エラー処理](#エラー処理)
[アプリ紹介](#アプリ紹介)
[まとめ](#まとめ)

## Vueアプリ構成

![Vueアプリ構成図.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/590579/16a1a56c-80ce-6c65-dca0-7b16a734a25

元記事を表示

log4j の出力を rsyslog に食わせる

プロセス内から別のプロセスを呼ぶような jar があって、それぞれが同じファイルにログを出力する場合にサブプロセスからのログ出力が無視されそうな場合の対処として rsyslog を使いたい。

log4j には最初から syslog に出力するような Appender があるけれども単純にそれだけだとメッセージしか出力されずクラス名メソッド名などが拾えないのでどうにかしたい

## rsyslog を更新する

CentOS7,8では出力した構造化データを解析して云々するためのモジュール mmpstrucdata.so がインストールされないので更新する

https://www.rsyslog.com/rhelcentos-rpms/

“`
cd /etc/yum.repos.d/
wget http://rpms.adiscon.com/v8-stable/rsyslog.repo
yum install rsyslog
“`

## rsyslog.conf を編集する

以下

“`
# 以下コメントアウトを解除する
$ModLoad imudp
$UDPServerR

元記事を表示

【JAVA→Python】JAVAで書いた特定の文字をカウントするコードをPythonに書き換えてもらう【新人教育】

# JAVA研修を終えた新卒の子にPythonを教える
入社後研修が終わった新卒の子にとりあえず会社としてはわんぱくにもDjangoの本を渡して学習してもらおうという感じだったので(私の入社時もそうだった)Python自体を学んでもらってDjangoに取り組んでもらおうと思い独断で新人教育の機会をいただきました。
私自身が学習で文章題を解いた時にJAVAでコードを作成したので、せっかくなら新卒の子にPythonに変換してみてもらおうと思いコードを渡してみました。

# 目次
[1.実際に渡したコード(JAVA)](#1-実際に渡したコード(JAVA))
[2.そう、それはDjango](#2-そう、それはDjango)
[3.あれこれ話しがあとに返ってきた解答](#3-あれこれ話しがあとに返ってきた解答)
[4.おわりに](#4-おわりに)

# 1.実際に渡したコード(JAVA)
“`java:JAVA
import java.util.*;

public class Main {
public static void main(String[] args) {

元記事を表示

JUnit未経験者がテストコードを書ききるためにまずやったことと、初心者的悩みポイントを逆引き解説

# はじめに : ユニットテストを書いたことない頃の私の声
わかっているんです。知っているんです。ユニットテストを書いた方がいいのは。

だけどさ何から始めればいいの?
どうやってテストコード追加するの?
なんかアノテーションがやたらあるのは知ってる。ただ使い方がわからん。
ていうか時間がない!書く時間というか、そもそも最初のキャッチアップの時間が!作れない!

というのは数か月前までの私の心の声。

その後、ユニットテストを2つほど書いてみたところで、とりあえず上記のような心の声には「大丈夫だよ、これで始められるよ」と寄り添えるようになった気がします。
そこで

– ユニットテストナニモワカラナイ・・から、どきどきしつつも挨拶ができるようになるくらいまでに何をしたか
– テストを書くにあたって最初に直面した「これってどうしたらいい・・・?」を逆引き解説※

をまとめます。

※解説とか大層なことを言っていますが、初心者です。間違っているところや「もっとこう書いたらいいよ!」ということがあると思うのでぜひご意見お願いします

# 環境
– Windows10
– Eclipse ID

元記事を表示

Springでコンポーネントの起動・停止処理を実装する

Springでコンポーネントの起動・停止処理(初期化・破棄処理)を実装する方法を調べてみました。

# SmartLifecycleを実装する

起動・停止処理という切り口の場合は、`SmartLifecycle`を利用するのが良さげっぽい。DIコンテナ起動時に`start`メソッドが呼び出され、DIコンテナ停止時に`stop`メソッドが呼び出される。

“`java
@Component
public class MyComponent implements SmartLifecycle {
private boolean active;

@Override
public void start() {
System.out.println(“start ” + getClass());
this.active = true;
}

@Override
public void stop() {
System.out.println(“stop ” + getClass());
this.active = false;
}

元記事を表示

ABC258A~Dの解答[Java]

## はじめに
今回から自作ライブラリ(テンプレ)が他クラスにまとめられた書き方をしています。ご注意ください。
なお、今回用いたライブラリは最後にまとめてあります。適宜ご確認ください。

では、コードを見ていきましょう。

## A – When?
問題文は[こちら](https://atcoder.jp/contests/abc258/tasks/abc258_a)

実はprintfの書き方を知らなくて、全部条件分岐しました。
“`A.java
class Main{
public static void main(String[] args)throws IOException{
//テンプレ用オブジェクト
Library Sys = new Library();
//Nの受け取り
int N = Sys.readInt();
//22時台で0~9分の時用
if(N>=60&&N>=70){
Sys.out.println(“22:”+(N-60));
}
//22時台で10分以降の時用
else if(N>=60){
Sys.

元記事を表示

検査例外、非検査例外

検査例外、非検査例外

非検査例外(RuntimeException)
try-catchでエラーを捕捉しなくてもよい。
というより、むしろすべきでない。
コードの書き方で起こるもの。

検査例外(Exception配下のRuntimeException以外)
これは、必ずどこかでtry-catchしなくてはならない。
コードで防ぎようのないエラーだから。(正しくコードを書いていても起きるときには起きる。目的のファイルがない、SQLの接続がうまくいかなかったなど)

それが発生するメソッド内でtry-catchしなくてもthrowsで、呼び出し元でエラーハンドリングすることができる。

元記事を表示

IntelliJでVisual VMを使ってメモリリークを解消する

# はじめに
初めてメモリリークに遭遇したため、対処方法を勉強してみました。

# 環境
+ IntelliJ IDEA 2021.1.2 (Community Edition)
+ Windows 10
+ Java11

## メモリリークとは
Javaプログラムの実行中にJVMのヒープ・メモリが不足することにより、
OutOfMemoryエラーが発生し、プログラムの実行ができなくなる事象です。

通常であればGC(ガベージコレクション)で不要なメモリの解放を行ってくれますが、
GCで削除できないリソースが存在すると、リソースを使い果たしてしまうということがあります。

GCは不要になったオブジェクトを削除してくれますが、逆に不要扱いにならないオブジェクトがプログラムの実行のたびに増えていくと、GCで捨てられるものがないために利用できるヒープ領域がどんどん減っていきます。不要扱いにならないオブジェクトを見つけ出すことがメモリリークの解消方法と言えそうです。

# 対応方法
今回はIntelliJ公式のチュートリアルに沿って実践してみます。
https://pleiades.io/h

元記事を表示

Swingでいろいろ作ってみる

# Swingでいろいろ作ってみます

# 事前学習とまとめ

http://wisdom.sakura.ne.jp/system/java/awt/Gjava8.html

“`Java
repaint();
“`
を実行することで

1. paint()を再度呼び出し

を実行します。
背景色のぬりつぶしをなくすにはupdate()をオーバーライドして

“`Java
public void update(Graphics g) {
paint(g);
}
“`
に変更するらしい。

マウスイベントは抽象クラスMouseListenerに対し処理内容を記述すればよい。ただし、抽象クラスのためすべて定義が必要。

“`Java
public void mousePressed(MouseEvent me) {}
public void mouseClicked(MouseEvent me) {}
public void mouseEntered(MouseEvent me) {}
public void mouseExited(MouseEven

元記事を表示

Java+GradleでOpenCV(JavaCV)を使う

# 前提

Gradle を使って Java のアプリケーションを作成します。
Gradle のインストール方法、基本的な使い方などについては記載しません。

筆者の実行環境は次の通りです。
“`
$ gradle –version

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

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

Kotlin: 1.5.31
Groovy: 3.0.9
Ant: Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM: 11.0.11 (JetBrains s.r.o

元記事を表示

[サーブレット&JSP]子供の身長予測するwebアプリケーションを作成 JAVA

#### サーブレット&jspで子供の身長を予測するwebアプリケーションを作成しました。
#### 今回MVCを完全に無視しました。なのでサーブレット側にロジック部分も記述しております。

## プルダウンから男子か女子を選択する

![スクリーンショット 2022-07-03 0.14.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675188/147b1a26-5937-69c5-9509-21aa767a844c.png)

## お父さんの身長とお母さんの身長を入力

![スクリーンショット 2022-07-03 0.14.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675188/18892aea-a01a-cdd1-1681-7a2fb1e0d165.png)

“`java:form.jsp
<%@ page language="java" contentType="text/html;

元記事を表示

等価判定のNullPonterExceptionの回避方法〜

## 目的
– Javaの等価判定でNullPonterExceptionが発生してしまう場合の、回避方法を学ぼう

## 対象読者
– Java入門者
– Javaの等価判定をなんとなくでコードを記載している
– 等価判定ってなに?って人

## 等価判定とは
複数のオブジェクトが同じであればtrue,異なればfalseとなることを言います。
似たような比較に**等値判定**がありますが、使用方法は若干違います。

### 等価判定の使用方法
オブジェクトを生成して、実際に等価判定を行ってみました。

“`java:Main.java
// 等価判定の場合
// 型:String
String s1 = “サンプル”;
String s2 = “サンプル”;
String s3 = “さんぷる”;

System.out.println(“s1,s2を比較” + s1.equals(s2));
System.out.println(“s1,s3を比較” + s1.equals(s3));

“`

“`java:実行結果
true
false
“`

###### 解説
*

元記事を表示

[Java] 列挙型・enum

### はじめに
Java学習中です
今回はenumについてまとめました

### 列挙型(Enum)とは
プログラムの中で定義する定数を拡張(列挙)し、さらに安全かつ便利にする**仕組み**のこと

### 書き方
“`java
// 通常のクラスの書き方
public class Dessert {

}

// enumの書き方
public enum Dessert {
APPLE, ICE_CREAM, CAKE, // 最後のカンマはなくてもok
}
“`
呼び出す時
(staticの定数を呼ぶときと同じ)
“`java
System.out.println(Dessert.APPLE);
System.out.println(Dessert.CAKE);

#=> APPLE
CAKE
“`

### 特徴
##### 変数への代入ok
`Dessert apple = Dessert.APPLE;`Dessert型のインスタンスが出来上がる
`System.out.println(apple);`でさっきと同じ結果

##### メソッドの引数の型に

元記事を表示

2022年版 VSCodeでJavaを気持ちよく開発する環境構築

# 背景 (自分語りなのでとばしてもいいです)

筆者は普段はPython、C++、Rust、Goを主に書いていて機械学習、数理最適化関連のアプリケーションやWebAPIの開発をしています。機械学習はPython、数理最適化はC++ or Rust、WebAPIはPython or Goというような使い分けをしています。今の会社のプロダクトの内、あまり機械学習と関係ないのにPythonで書かれているものがあり、しかもMyPyが導入されていなく、型hintも適当であまりにも可読性が低いものがあって改修しようと考えています。その際、せっかくなので今後外注もしやすいようにJavaで書き直すことも検討し、気持ちよく開発できる環境をいろいろと試行錯誤しました。

# なぜJavaなのか? (自分語りPart 2)

本当はRustで書きたいし、社内の自分の部門はこの用途でRustメインで書こうと決めましたが、SIerに今後の保守を外注することも考えるとJavaになりました。Kotlinも考えましたが、外注先がJavaしか書けない場合もありますし、何よりVSCodeにはMicrosoft社、あるい

元記事を表示

プログラミング初学者がプログラミング言語と周辺知識の概要を知るための記事

# どのような人向けの記事か
私のような、【駆け出しエンジニアの方やプログラミングに関心のある方、初心者の方】向けにどんなプログラム言語があるのかをざっくりわかるようにゆる〜くまとめたものです。また、備忘録としても投稿しておこうと考えました!

※当方も未経験エンジニアの立場で実務未経験であるため、間違いはあると思いますので適宜ご指摘いただければ幸いです。

# なぜ、この記事を記述するに至ったのか
理由としては、3点あります。
・自分自身が今後フルスタックエンジニアを目指しており、さまざまな言語や技術を習得したいと考えているから
・各言語の特徴を知ることで今後の開発等で最適な言語やライブラリ・コンポーネントへの理解が必須であると考えたから
・自分の武器を増やす上で特徴をまずはざっくり理解したいと考えたから

# 本編
ここからが本番です!自分自身が記事等で学習したものをざっくばらんに言語化していきます。気になる言語があれば、ご自身でも深く調べてみることで、どんな言語なのか実感できるはずなので是非深掘りして見てくださいね!
### 【注意点】
・言語名の横に(マークアップ言語)と記載

元記事を表示

Java Silver SE 11 対策・ポイントメモ(配列の操作・インスタンスとメソッド)

Java Silver SE 11を現在勉強中のものです。
最近やっと模擬問題で合格点を取れるレベルまでになれたので、これまでのポイントをまとめていこうと思います。
※今回は配列とインスタンス・メソッドについて

## ①配列と操作

### 配列の宣言方法

#### パターン①
大括弧とnew演算子を利用した宣言
“`java
int[] array = new int[3];

int[][] array = new int[2][2];
“`

#### ポイント

“`java
// ①大カッコの中は整数しか記入できない。
int[] array = new int[2.3]; // コンパイルエラー

// ②配列の中で変数や計算ををすることができる。
int x = 3;
int y = 2;
int[] array = new int[x * y];

/*
* ③多次元配列の場合、
* 変数宣言時の大カッコの数と、代入する側の大カッコの数が違うと
* コンパイルエラーになる。
*/
int[][] array = new int[2];
int[

元記事を表示

【Android Java】いまさら聞けないActivityとは?

## はじめに
Android Javaって何?という初学者向けの記事になります。
アンドロイド特有の`Activity`についての内容です。

仕事でAndroid Javaを使って修正、開発をしています。
業務に携わってから約半年が経ちました。

Android Javaを使うにあたって、学んだことをアプトプットしようと思い記事にしました。

エンジニアになって1年の未熟者なので暖かい目で見ていただけると助かります。

## あなたは誰?
> 現職:SESエンジニア(歴1年)
前職:営業
年齢:27歳
使用言語:Java, Android Java, C++
工程:テスト、実装(設計もやってみたい…)
好きなこと:サウナ/登山/ダーツ/ピアノ/酒/運動全般
もくもく会主催:[新宿もくもく会](https://shinjuku-realize0707.connpass.com/)

## Acyivityとは
簡単に言うと`Activity`とは、スマホでいう**一つの画面全体**のことを言います。

  • OTHERカテゴリの最新記事