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

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

簡単SpringBoot,Thymeleafでページネーションを実装

# やりたいこと
下記のようにページネーション機能を実装する。
![ページネーション1 2023-09-26 .png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3185982/e5460dbf-2184-9b6a-bb6c-4e81c407c97b.png)
![ページネーション2 103854.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3185982/9efe3c45-6cc3-42b2-c8ed-6ad6501b9628.png)

# 環境
springboot2.7.7
java 11
postgres

# 実装手順
①Entity
②Repository
③Service
④Controller
⑤Html

# ①Entity
“`java
@Entity
@Table(name = “goods”)
@Getter
@Setter
public class Goods {
@Id
@C

元記事を表示

Javaで「日時を加算/減算する」の動作を確認してみた

# 概要

Javaで「日時を加算/減算する」の動作を確認してみました。以下のページを参考にしました。

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

# 実装

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

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

Calendar calendar = Calendar.getInstance();

System.out.println(“日時を2005/12/30に設定します”);
calendar.set(2005, 11, 30);
dispCalendar(calendar);

System.out.println(“– — — — — –“);

System.out.println(“日を1ずつ増加させます”);
for (int i =

元記事を表示

Spring Securityの基本的な理解:Bean登録と認証・認可のイメージ解説

# はじめに
最近、Spring Securityでのログイン機能の実装方法に関して詳しく取り組んでいます。その中で得られた知見を元に、この記事では具体的な実装手順を省いて、Spring Securityを用いた実装の背後にあるコンセプトやイメージに焦点を当てて解説します。

具体的な実装方法については以下に記事を作成しました。参考にしてみてください。

– **開発環境の構築とログイン画面の実装について**

https://techchallengediaryth.com/java-springsecurity-login-part1/

– **入力されたユーザ名とパスワードを固定値の情報と照合する方法**

https://techchallengediaryth.com/java-springsecurity-login-part2/

– **入力情報をデータベースのユーザ情報と照合する方法**

https://techchallengediaryth.com/java-springsecurity-login-part3/

– **ログアウト機能の実装手法**

h

元記事を表示

オーバーロードとオーバーライド

## オーバーロード
* 同じ名前で引数が異なるメソッドを複数定義すること。
* 同一クラスで行われる。
“`java
public class Main{
public static void main(String[] args) {
Sushi s = new Sushi();
s.neta(“たまご”);
s.neta(“サーモン”,220);
s.neta(“いくら”,480,”北海道”);
s.neta(“ウニ”,800,”羅臼”);
}
}
class Sushi {
void neta(String name) {
System.out.println(name + ” 通常価格 110円”);
}
void neta(String name,int price){
System.out.println(name + ” 時価 ” + price+ “円”);
}
void neta(String name,int price,String area) {
System.out.println(ar

元記事を表示

ミニ生命保険システムを作成 S08

# 関連記事
https://qiita.com/Weekend/items/79a6a3fd69ba017e124c

# はじめに
Salesの中に、MainViewと依存サービスはどのようにデカップリングするのですか? 
今回は、CommandとCallBackを使ってMainViewをリファクタリングします。

“`java
@Route(“/main”)
class MainView extends VerticalLayout {

// bad smell
private SalesService salesService;
// bad smell
private ProductService productService;
// bad smell
private UnderwritingService underwritingService;
// bad smell
private ApplicationRecordRepository repository;

MainView(Sales

元記事を表示

Springアノテーションまとめ

# はじめに
自己学習として、springbootを学んでいます。「アノテーションって、すごい便利!」と感動しましした。と共に、たくさん種類があって、きちんと覚えないといけないという思いから備忘録として書くことにしました。100%完全理解ではなく、学習していく中で自分なりに重要だと思うものをピックアップして簡単な説明となっています。初心者なので、間違いがあればご指摘ください!
※随時更新予定

# Controller,Serviceに主に記述するアノテーション
# @Autowired
springが自動的に依存関係を解決し、対応するインタンスを注入する。ServiceやHttpSessionなど以下のように記述することでそのクラスのインタンスを使えるようになる。
“`
@Autowired
SampleService sampleService;
@Autowired
HttpSession session;
“`

# 主にControllerに記述するアノテーション
# @Controller
クラスに対してそのクラスをControllerとして認識する。

# @Re

元記事を表示

request という変数について

# **`request`**

**`request`** は、JavaのサーブレットやJSPなどのウェブアプリケーション開発で利用される特別なオブジェクトであり、HTTPリクエストに関連する情報へのアクセスができます。

これは、「暗黙オブジェクト」とよばれ、開発者が明示的に宣言する必要はありません。

具体的には、**`request`** オブジェクトは 「**`HttpServletRequest`** インターフェースのインスタンス」を指し示し、HTTPリクエストに含まれる情報へのアクセスを可能にします。
サーブレットコンテナやJSPコンテナが自動的に **`HttpServletRequest`** の「インスタンス」を生成し、それを **`request`** という変数に自動的にバインドします。

開発者は、この **`request`** 変数を利用して、HTTPリクエストからクエリパラメータやセッション情報、ヘッダなどの情報に簡単にアクセスでき、**`request.getParameter()`** などのメソッドを用いてクエリパラメータを取得することができます

元記事を表示

スッキリわかるJava入門 実践編 第3版 まとめ – part4 -JVM制御とリフレクション

# はじめに
こんにちは ◤●ㅅ●◥ノ

今回はJVM自体の制御に関わるAPIについて学びました!

## 第4章 JVM制御とリフレクション

### 1.JVM自体の制御
そもそもJVMとは…?
 Java Virtual Machineの略で、Javaのプログラムを動かすために必要なソフトウェアのこと

Javaには開発者がJVM自体の内部機構にアクセスして情報を得たり、
直接制御するためのAPIが存在する
JVM自体を制御するAPIについて学んでいく

### 2.JVMの終了
System.exit()を呼ぶとその場でプログラムを終了する
System.exitにはint型の引数を与えることができ、その数値が終了コードとしてOSに報告される
→多くのOSでは0は正常終了、0以外は異常終了を意味する

どのように使うのか
エラーの原因ごとに異なる終了コードを返してプログラムを終了するようにする
→バッチ処理が異常終了した場合の原因究明に使うことができる

### 3.外部プログラムの実行
java.lang.ProcessBuilderクラスを利用する
→自分が開発している

元記事を表示

Stream でインデックスと要素を扱いたい

## 目次
[1. はじめに](#1-はじめに)
[2. Java の for 文](#2-java-の-for-文)
[3. guava](#3-guava)
[4. 実装](#4-実装)
[5. まとめ](#5-まとめ)
[参考文献](#参考文献)

## 1. はじめに
### Java 100 本ノック、55 本目の応用。
業務で Java を使うので、[Java 100 本ノック](https://github.com/JustSystems/java-100practices)を使い学習をしています。[55 本目](https://github.com/JustSystems/java-100practices/tree/master/contents/055)の問題は、ファイルを読み 1 行の文字数を合計して出力するプログラムを実装するというものですが、応用として読んだ行に行番号をつけて別ファイルに書くプログラムを実装することにしました。

### Python の for 文では簡単にインデックスを扱える。
Java では、[`Files`](https://docs.

元記事を表示

Javaで「日時を設定する」の動作を確認してみた

# 概要

Javaで「日時を設定する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/calendar/index3.html

# 実装

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

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

Calendar calendar = Calendar.getInstance();

System.out.println(“現在の日時を設定します”);
dispCalendar(calendar);

System.out.println(“– — — — — –“);

calendar.set(Calendar.YEAR, 2005);
System.out.println(“年を2005年に設定します”);
dispCalendar(c

元記事を表示

Java JDBC

# はじめに
JavaのWebアプリケーションに,DBを利用した機能を実装するために必要となる**JDBC**についてまとめる.まずは,JDBCの概要をまとめてから,基本的な実装方法についてまとめる.

# JDBCとは
JDBCは”Java DataBase Connectivity”の頭文字をとったもので,Javaプログラムがデータベース管理システムにアクセスできるようにするものである.

JDBCを構成する基本要素は以下の二つである.
**1. JDBC API**
Javaアプリケーションがデータベースにアクセスするためのクラス/インタフェースの集まりである.これらを用いて,データベースを操作するプログラムを作成する.
**2. JDBCドライバマネージャー**
複数のJDBCドライバを管理するためのクラスで,目的のデータベースに対応したJDBCドライバを選択し接続するために使用す

元記事を表示

[jtreg]Windows環境でjtregをビルド

## 0.環境
– Windows 11 Home 22H2(build:22621.2283)
– Git (2.41.0.windows.3)

## 1.Cygwinのセットアップ

– Cygwinのインストーラを[公式サイト](https://www.cygwin.com)からダウンロード。
– ダウンロードした`setup-x86_64.exe`を実行(念のため管理者として実行)。
– 設定はいじらずに`Choose A Download Site`の画面まで次へ。
– ダウンロードサイトは`https://ftp.yz.yamagata-u.ac.jp`を指定。
– `dos2unix`、`make`、`unzip`、`vim`、`wget`、`zip`を追加してインストール。
– Cygwinのルートディレクトリ配下に`.ssh`ディレクトリを作成し、鍵を生成。GitHubに公開鍵を登録しておく。

## 2.テスト対象のPATH設定

– テスト対象となるJDKをダウンロードし、任意のディレクトリに解凍。
– 環境変数に`JAVA_HOME`とPATHを通

元記事を表示

Javaで「日時に関する情報を取得する」の動作を確認してみた

# 概要

Javaで「日時に関する情報を取得する」の動作を確認してみました。以下のページを参考にしました。

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

# 実装

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

class TestCalendar1{
public static void main(String args[]){
String[] week_name = {“日曜日”, “月曜日”, “火曜日”, “水曜日”,
“木曜日”, “金曜日”, “土曜日”};

Calendar calendar = Calendar.getInstance();

int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
int d

元記事を表示

DebianベースのDockerイメージにmysql-clientを追加できない

## 結論
`mysql-client`の代わりに`default-mysql-client`を使用すればOK

## 経緯
以下のDockerfileでビルドが失敗

“`
FROM openjdk:17.0.1-jdk-slim

ARG USERNAME=kyoto_kanko
ARG USER_GROUP_NAME=workspace
ARG USER_UID=1000
ARG USER_GID=1000

ARG PKG=”git vim curl unzip zip sudo mysql-client”

SHELL [“/bin/bash”, “-c”]

RUN apt-get update \
&& apt-get install -y ${PKG} \
&& groupadd –gid ${USER_GID} ${USER_GROUP_NAME} \
&& useradd –uid ${USER_UID} –shell /bin/bash –gid ${USER_GID} -m ${USERNAME} \
&& echo %

元記事を表示

これからJavaSilver(Gold)を受ける不安でいっぱいな君へ

# これからJavaSilver(Gold)を受ける不安でいっぱいな君へ

この記事を読んでいる貴方はきっと黒本をやり尽くして、受かる気はするけど自信はない。不安でいっぱいな状態なんだと思います。絶対そうです。そういうことにします。

そんなあなたの不安を少しでも軽減できたらと思い書きました。

### こんな人に読んでほしい

– 黒本をやり尽くした人
– 受かるか不安で仕方ない人
– どこまで勉強すれば受かるか知りたい人

## もくじ

– 自己紹介
– 勉強スタイル
– どこまで勉強すれば受かる?
– 受験時の心構え

## 自己紹介

初めまして、底辺SierのXINです。

新卒未経験で業界に入り、業務では主にJavaを扱っています。

Javaは4月ごろから触れ始め、2023年6月12日にJavaSilver、2023年9月16日にJavaGoldを受験しました。(SE11)

勉強期間はSIlverが1ヶ月半、Goldが2ヶ月ちょっとです。(※黒本を読んでた期間)

テスト結果は両方一発合格、正答率はSilverが81%、Goldが91%で他の方の受験記と比べても比較

元記事を表示

【個人開発】情報漏洩を防止するChatGPTのCLIツールをプロトタイプした話

ChatGPTはプログラミングを含んだ様々な質問に答えてくれる便利なツールです。

一方で、特別な設定をしなければ、ChatGPTに送信した内容は学習データとして利用されるため、情報漏洩のリスクを孕んだツールでもあります。

例えば、社外秘をChatGPTに入力してしまい、その内容をChatGPTに学習されてしまうと、他の人がChatGPTを利用した際に社外秘が生成されてしまうといったことが起こり得ます。

そのため、業務でChatGPTを使う時は「入力内容が社外秘であるか?」といったことを気にする必要があり、結構イライラします。

今回はこの「ChatGPTを介した情報漏洩リスク」を自動で防ぐツールとして[「privacy gpt cli」](https://github.com/YukihiroArakawa/privacy-gpt-cli)を作成しました。

![Screen Shot 2023-09-23 at 18.23.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482077/15a

元記事を表示

【Java初心者】Wekaによる機械学習 05-Javaのコマンドラインでロジスティック回帰

# もっと簡単にロジスティック回帰できないか

前回の記事( https://qiita.com/SeijiMiwa/items/64ae3d7b96d1ecca8478 )では、wekaのAPIをJavaから呼び出して、ロジスティック回帰する方法を説明しました。

本当は、コマンドラインで実現したかったのですが、そのときは方法がわからず。
ただ、コマンドラインのヘルプで、「何となくこんな感じかな」というところまでたどり着きましたので、やってみます。間違っていたらご指摘をお願いします。

# データ

前回と同様、fukugyou.arff を教師データ。fukugyou-test.arff をテストデータとします。

# コマンドライン

今回も mini-wekaを使います

“`
java -cp mini-weka-3.9.15955.jar:. weka.classifiers.functions.Logistic -t fukugyou.arff -d fukugyou.model
“`

これで fukugyou.model にモデルが生成されます。

これを使って、

元記事を表示

ミニ生命保険システムを作成 S07

# 関連記事
https://qiita.com/Weekend/items/79a6a3fd69ba017e124c
# はじめに
今回はUnderwriting中に様々なルールを実装します。デザインパターンにおける単一責任、テンプレートメソッドを理解する必要がある。また、ロジックとデータの分離という考え方も理解しておく必要がある。
![undw.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3554924/7145a899-3ffa-dbe6-2695-eb9ed234abd8.png)

# 実装
## 単一責任
保険システムに様々なルールがあります。ルールの実装が混在すると、システムのメンテナンスが非常に難しくなる。そこで、1つのルールと1つのクラスで実装する。各ルールにはビジネスチェックが1つだけ含まれる。例えば、被保険者の年齢のチェック。
“`java:InsuredAgeRule
public class InsuredAgeRule extends Rule {
privat

元記事を表示

Javaで「度の単位の角度をラジアン単位に変換する」の動作を確認してみた

# 概要

Javaで「度の単位の角度をラジアン単位に変換する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/math/index10.html

# 実装

以下のファイルを作成しました。
“`JSample10_1.java
class JSample10_1{
public static void main(String[] args){
double angdeg = 30;

System.out.println(Math.PI / (180 / angdeg));
System.out.println(Math.toRadians(angdeg));

double angrad = Math.toRadians(angdeg);

System.out.println(180 * angrad / Math.PI);
System.out.println(Math.toDegrees(angrad));
}
}
“`

以下のコマンドを実

元記事を表示

[リサーチ・メモ] Object Mapperの使い方

## 背景
社内でパラメータテストを行う際にObject Mapperが使用されていた為、使い方をメモとして残す

## Object Mapperとは
JavaのObjectとJson間の変換を簡単に行えるようにするJacksonライブラリーの一部

## 使い方
“`
ObjectMapper objectMapper = new ObjectMapper(); //インスタンスの生成

// JSONデータのシリアライズ(java→json)
MyObject myObject = new MyObject();
String jsonString = objectMapper.writeValueAsString(myObject);

// JSONデータのデシリアライズ(json→java)
String jsonString = “{\”name\”:\”John\”, \”age\”:30}”;
MyObject myObject = objectMapper.readValue(jsonString, MyObject.class);

“`

元記事を表示

OTHERカテゴリの最新記事