JAVA関連のことを調べてみた

JAVA関連のことを調べてみた

Java CSV 比較ツール2

1. まず、JListの代わりにJTableを使用して、カラムの選択と順序の変更を可能にします。
2. カラムの順序変更のために、JTableをドラッグ&ドロップ可能にします。
3. 選択されたカラムとその順序を取得するメソッドを追加します。
4. SQLクエリの生成部分を修正して、選択されたカラムと順序を反映させます。

以下に、修正したコードの主要な部分を示します:

“`java
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.datatransfer.*;
import java.util.*;
import java.util.List;

public class CsvToSQLiteApp extends JFrame {
// … 他のフィールド …
private JTable columnTable;
private DefaultTableModel columnTableModel;

public

元記事を表示

Java JDBC

Java 11 Gold 取得に向けた学習記録
# Java JDBC
Javaプログラムから
– データベースへの接続
– SQLクエリの実行
– 結果操作

を行うためのAPIを**JDBC**(Java Database Connectivity)と言う。

データベースには、

– Oracle Database
– SQL Server
– PostgreSQL
– MySQL

など各社から開発された複数の製品があるが、JDBCは特定の製品に依存しない作りになっている。そのため利用時に特定の製品を意識する必要がない。

具体的にはインターフェース、例外クラスが`java.sql`パッケージ、`javax.sql`パッケージから提供される。これらはどちらも`java.sql`モジュールに属している。

https://docs.oracle.com/javase/jp/11/docs/api/java.sql/java/sql/package-summary.html

https://docs.oracle.com/javase/jp/11/docs/api/java.sq

元記事を表示

Javaで「文字列の一部を別の文字や文字列に置換する」の動作を確認してみた

# 概要

Javaで「文字列の一部を別の文字や文字列に置換する」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/string/index16.html

# 実装

以下のファイルを作成しました。
“`JSample16_1.java
class JSample16_1{
public static void main(String[] args){
String str1 = “Herro Java”;
System.out.println(str1);
System.out.println(str1.replace(‘r’, ‘l’));

String str2= “東京都港区”;
System.out.println(str2);
System.out.println(str2.replace(“港区”, “中央区”));
}
}
“`

以下のコマンドを実行しました。
“`
$ javac JSample16_1.java
$ java

元記事を表示

モナド則のテスト

モナド則を満足するコードをJavaで書こうとしています。
実行出来るコードが出来たが、自信が無いので、chatGPTに検証を求めました。
chatGPTには大丈夫と言ってもらえたが、検証過程が怪しいので、人のコメントがもらいたいです。
特に実用性は考えてはいないので、クイズ的な演習問題と考えて下さい。
以下にコードとchatGPTとのやりとりを記載します。
長いです。

“`java:モナド則のテストコード
import java.util.function.Function;

class Monad {
private final T value;

private Monad(final T value) {
this.value = value;
}

public T getValue() {
return value;
}

public Monad flatMap(final Function> f) {
return f.appl

SpringFrameworkの主要機能モジュール紹介

## SpringFrameworkの主な機能モジュール
SpringFrameworkは主に四つの大きな機能モジュールに分けられます。

| 機能モジュール | 機能紹介 |
|:-:|:-:|
| Core Container | Spring環境であらゆる機能を使用するには、IOCコンテナに基づいている必要があります |
| AOP&Aspects | アスペクト指向プログラミング |
| TX | 宣言的トランザクション管理 |
| Spring MVC | Webアプリケーション向けの統合機能を提供します。 |

Springの中で最も重要なのはIOC(Inversion of Control)とAOP(Aspect-Oriented Programming)に関連する機能です。次のノートでも重点的に説明します。

##### TIPS:最初にSpringフレームワークを学び始めた頃、英単語の日本語訳にいつも深く掘り下げていました。もしあなたも同じようなら、今、私には一つアドバイスがあります。

:::note warn
それは、英単語の日本語訳を深く掘り下げ

Javaで「文字列の最後に別の文字列を連結する」の動作を確認してみた

# 概要

Javaで「文字列の最後に別の文字列を連結する」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/string/index15.html

# 実装

以下のファイルを作成しました。
“`JSample15_1.java
class JSample15_1{
public static void main(String[] args){
String str = “東京都”;

System.out.println(str.concat(“港区赤坂”));
System.out.println(str + “港区赤坂”);
}
}
“`

以下のコマンドを実行しました。
“`
$ javac JSample15_1.java
$ java JSample15_1
東京都港区赤坂
東京都港区赤坂
“`

# まとめ

何かの役に立てばと。

BASIC言語のインタープレタをJavaで作る話

このweb記事を読んだ。

– [“Easy intro to writing a BASIC interpreter (with ANTLR)” by Matei, Nov_2017](
https://mateiw.github.io/antlr-intro/)

この記事は[BASIC](https://ja.wikipedia.org/wiki/BASIC)言語のインタープレターをJava言語で実装した事例である。BASIC言語の文法を記述したファイルをパーサー・ジェネレータ[ANTLR](https://www.antlr.org/)に与える。ANTLRがパーサを構成するJavaコードを生成する。自動生成されたコードを利用する形でインタープレタをJava言語で実装している。ビルドツールMavenを用いている。

わたしはこの記事が紹介するJavaコードを写経して動かしてみた。そのコードはよくできていてほとんど修正不要だった。それでもいくつか課題にでくわした。

わたしが見つけた解決方法を記述し公開しようと思う。

## 前提条件

わたしは下記の環境で作業した。

Javaで日付をインクリメンタルにフォーマットする方法:IncrementalDateFormatterクラスの使い方

# IncrementalDateFormatterの使い方

この記事では、Javaで日付をインクリメンタルにフォーマットするためのIncrementalDateFormatterクラスの使い方について説明します。このクラスは、指定した初期日付から特定の時間単位ごとに日付をインクリメントし、フォーマットされた日付文字列を生成します。

# クラスの概要
IncrementalDateFormatterクラスは、以下のパラメータを使用して初期化されます。

“`
pattern:日付のフォーマットパターン(例:”yyyyMMdd-HHmmss”)。
initialDate:初期の日付文字列。
calendarUnit:日付をインクリメントするカレンダーの単位(例:Calendar.HOUR_OF_DAY)。
amount:インクリメントする量。
repeat:インクリメントを繰り返す回数。
“`

# 使用例

以下は、IncrementalDateFormatterクラスを使用して日付をインクリメントする方法を示すテストコードです。このテストでは、初期日付を「2024/1/1

Jettyベースで作ったWebアプリケーションを1個のJARにまとめて配布する

# 目的

Java で動作するWebアプリケーションをJARファイル1つにまとめて配布することが目的です。簡単なのかと思いきや意外にコツが必要でした。

# Maven

## ディレクトリ構造

Mavenプロジェクトのディレクトリ構造は以下のようになっているものとします。標準的な構造かと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110265/a14384ca-238a-e7ea-119d-03d95c2631d1.png)

# Main クラス

“`java
package nlp4j.servlet;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.DefaultServlet;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.webapp.WebAppCont

【Spring Boot】メール送信機能と照合

## はじめに
・今回は最近(?)よく見かけるユーザ新規登録時、入力されたメアドにコードを送信する方法とその認証までの記事になります。
・バリデーションなどかけていますが、そこについては説明は省かせていただきます。
[【Spring Boot】Validation(入力チェック)+DB保存までをうまく](https://qiita.com/whats-up-everyone/items/d7907e6bf511b3215eb8)
・DBとの連結方法も省略します。
・今回作成するのは以下のようなもの
↓メアド入力画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3830719/1a0af76f-78c6-4744-758d-f572715dab26.png)

↓認証コードの入力画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3830719/1cff3717-8a12-222b-1a3

【Spring Boot】Validation(入力チェック)+DB保存までをうまく

## はじめに
#### 環境
・`Eclipse(2024)`
・`Spring Boot 3.3.0 (Maven)`
・`MariaDB`
※DBとの連携は済んでいる前提とします。

#### 作成する画面は3種類
↓1.メインとなる入力画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3830719/99c8e86b-1459-e80c-841a-7e0df0c903e6.png)
↓2.入力確認画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3830719/f362927b-ce86-8609-0343-575118973285.png)
↓3.完了画面(一応)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3830719/3ff23d18-778d-564c-23ac-55

Javaで「文字列に含まれる文字を大文字または小文字に変換する」の動作を確認してみた

# 概要

Javaで「文字列に含まれる文字を大文字または小文字に変換する」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/string/index14.html

# 実装

以下のファイルを作成しました。
“`JSample14_1.java
class JSample14_1{
public static void main(String[] args){
String str1 = “TeaCup”;
String str2 = “Mouse”;

System.out.println(str1);
System.out.println(str1.toUpperCase());
System.out.println(str1.toLowerCase());

System.out.println(str2);
System.out.println(str2.toUpperCase());
System.out.println(str2

[Java] 有限差分法で梁のたわみを求める

# はじめに
Javaと材料力学の復習をかねて作成した。

# 原理
## たわみの基礎式の離散化
分布荷重$p(x)$が加わるヤング率$E$,断面二次モーメント$I$の梁のたわみ$y$は以下の式から求まる。
“`math
\frac{d^4y}{dx^4} = \frac{p(x)}{EI}
“`

ここで4階の数値微分を以下の式で計算する。
“`math
\frac{d^4y}{dx^4} \sim \frac{y_{i-2}-4y_{i-1}+6y_{i}-4y_{i+1}+y_{i+2}}{{\Delta x}^4}
“`
よってたわみの基礎式の離散化は以下の式となる。

“`math
\frac{y_{i-2}-4y_{i-1}+6y_{i}-4y_{i+1}+y_{i+2}}{{\Delta x}^4} = \frac{p(x_i)}{EI}
“`

“`math
\frac{1}{{\Delta x}^4}
\begin{bmatrix}
1 & -4 & 6 & -4 & 1\\
\end{bmatrix}
\begin{bmatrix}
y_{i-2}

SpringSecurityの仕組みの初歩と実装例

# この記事に書いてあること
– [プロになるためのSpring入門](https://gihyo.jp/book/2023/978-4-297-13613-0)のSpringSecurityに関する内容を読んだまとめ
– SpringSecurityを使った実装例

# SpringSecurityとは
SpringFrameworkの認証認可を実現するための仕組み。
## 認証とは
アプリケーションを使用するユーザーを特定すること。
## 認可とは
認証したユーザーが行った操作の可否を制御すること。

## 認証認可はなぜ必要か
認証認可の実装がされていないと多くのアプリケーションの機能は成り立たない。
例えばSNSであれば投稿された内容は全てのユーザーが見えるようにしつつ、投稿の編集・削除は投稿したユーザーにしかできないようにする、というような制御が必要になる。

# SpringSecurityを使った実装
## 認証とリクエスト単位での認可
### 概念
認証処理はあらゆるアプリケーションの処理を実行する前に行う必要がある。
SpringSecurityではServletFi

【Java】日付の型変換を楽に一括管理するためのクラスを考えてみた

javaでは日付を扱う型が色々ありややこしいため、統合して管理できるパースクラスのようなものを用意できないか考えてみました。
* java.util.Date
* java.sql.Date
* java.Timestamp
* java.time.LocalDate
* java.time.LocalDateTime

今回はクラスのフィールドに`long time;`のようなミリ秒の情報を保持し、これを経由してそれぞれの型変換を実現してみます。
作成したクラスが以下です。

“`java
import java.sql.Timestamp;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;

public class DateParser {

private ZoneId zoneId;
private final long time;

public DateParser(long time) {
this.time = time;
this.

PHPで.propertiesファイルを使う

## プロパティファイル好きです!

こんばんは!私はとある大手企業で教育関係のお仕事をしています。

最近はJavaの新卒研修に参加して講義をしました。

はじめて3カ月も講義をして何より**自分が1番学んでました!**

## JavaといえばgradleかMaven!

JavaではXMLなMavenと.propertiesファイルのようなものを使うGradleの2択だった気がします。

JavaはYAML使わずにXMLのほかにpropertiesを使うことが多かった気がします。

しかし、PHPではほとんど使いません。

## そもそもPHPを使っている人がいない

みなさんPythonを使っているし私もFlaskやDjangoを使ってきました。

しかし問題があって、**PythonはWebと相性がそこまでよくない**というところがあります。

つまり、われわれがVPSを借りてウェブのサービスを始めようとなったときに

ほぼ100パーセント使うのが**Apache**となっており、PythonもいけるんですがPHPと比べると格段に面倒くさいです。

## Javaの習得は絶

Javaで「文字列の先頭と末尾から空白文字を取り除く」の動作を確認してみた

# 概要

Javaで「文字列の先頭と末尾から空白文字を取り除く」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/string/index8.html

# 実装

以下のファイルを作成しました。
“`JSample8_1.java
class JSample8_1{
public static void main(String[] args){
String msg1 = ” AB CD “;
String msg2 = “\tAB CD\n”;
String msg3 = “ AB CD ”;

System.out.println(“[” + msg1 + “]”);
System.out.println(“[” + msg1.trim() + “]”);
System.out.println(“[” + msg2 + “]”);
System.out.println(“[” + msg2.trim() + “]”);
System.o

Javaの継承とオーバーライドについて

## 背景
Javaの資格勉強をしている際に、なかなか理解できなたったところの備忘録。
きっとJavaを触り始めた人でもなかなか難しいところ(のはず)だと思うので、わかりやすく簡単に書くよ。

以下のキーワードを踏まえたうえで、解説していくよ。
### キーワード
“`
継承:クラスの中身の変数やメソッドをそのまま受け継がせること。
オーバーライド:スーパークラスのメソッドと戻り値の方、メソッド名、シグニチャが同じメソッドを再定義できること。
“`
## 継承とオーバーロード
早速だけど説明するよりコードを見た方がはやいのでサンプルコードを書くよ。
“`java
1. class SuperSample {
2. String val = “Super”;
3. void print() {
4. System.out.print(val);
5. }
6. }
7.
8. class SubSample extends SuperSample {
9. String val = “Sub”;
10. }
“`

これは便利でもう手放せない!Eclipseショートカット集

![24725598_m.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633992/c25dcc3b-5f97-21fa-5006-ac903c1055fa.jpeg)

エスプリフォートでは、業務内でのシステム開発以外でも、日々アンテナを張りながら仲間同士お互いに技術力を磨き合っています。
効率化もその一つで効率を向上させることにより、3M(ムリ・ムダ・ムラ)を無くしていき、顧客のための時間と予算を如何に作っていくのかということを考え、顧客から頼られる存在としてあり続けています。

今回はその効率化の基本となるEclipseのショートカットをご紹介いたします。

# はじめに
Javaを使用したソフトウェア開発では、その開発ツールとしてEclipseがよく使用されます。
Eclipseにはショートカットが標準で用意されており、これを覚えていくことで、プログラミングの効率アップが期待できます。

そこで「これすごく便利!」なEclipseのショートカットを、いくつかご紹介します。[^1]

[^1]

MavenでMyBatis Generatorを使う

# 環境
– JDK 21
– Maven 3.9.7
– MyBatis Generator 1.4.2
– PostgreSQL 15.3
– Spring Boot 3.3.1

# 公式ドキュメント
https://mybatis.org/generator/running/runningWithMaven.html

# pom.xmlの設定
今回はSpring Bootを使っていますが、MyBatisさえ入っていれば大丈夫なはずです。

“`xml:pom.xml