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

JAVA関連のことを調べてみた2021年09月04日
目次

LocalDateTimeの相互変換 決定版

#はじめに
タイムゾーンがある場合に迷ったりしたので、LocalDateTimeを使用した日付の処理についてまとめました。

#目次
[1. now()で日時を取得する](#1-nowで日時を取得する)
[2. format(LocalDateTimeから文字列への変換)](#2-formatlocaldatetimeから文字列への変換)
[3. parse(文字列からLocalDateTimeに変換)](#3-parse文字列からlocaldatetimeに変換)
[4. LocalDateTime同士の比較について](#4-localdatetime同士の比較について)
[5. UNIX時間(エポック秒)の変換](#5-unix時間エポック秒の変換)
[6. Use case](#6-use-case)

##公式ドキュメント
[ZonedDateTime (Java Platform SE 8 )](https://docs.oracle.com/javase/jp/8/docs/api/java/time/ZonedDateTime.html)
[DateTimeFormatt

元記事を表示

Springで作成したアプリをAWSとRDSとElastic Beanstalkを用いてデプロイする方法①

#はじめに
デプロイ経験がない筆者でもSpringで作成したアプリケーションをAWSのElasticBeanstalkとRDSを用いて無事にデプロイすることができましため、共有及び備忘録として執筆します。
①では、RDSでのDB作成を執筆します。
②では、MySQLの設定とElasticBeanstalkの設定について執筆します。

#作成期間と作業
作成期間は約3週間ほどです。

作成するにあたって行った作業は下記の通りです。

①Udemyの「AWS:ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得」を受講してEC2やRDSについての知識をつける。
②デプロイ方法について日本語サイトを見てもうまくいかなかったため、Udemyの「Deploy Java Spring Apps Online to Amazon Cloud (AWS)」を受講してデプロイ方法について学ぶ。
※こちらの講座は英語字幕付きのため、聞き取れなくてもなんとか理解できます。
③Springの公式ドキュメントも参考にしながら、実際に自分が作成したアプリケーションをデプロイ

元記事を表示

【Hibernate】POST時に作成日時カラムにNULLが入る

Spring bootを使用して、簡易的な掲示板アプリを作成していた時に起きたエラーで、なんとなく気になり原因を聞いてみたりしたので、記録として残しておく。

# 起こった現象
掲示板に書き込みできる機能を実装後、動作確認してみたら、create_at(作成日時カラム)にNULLが入ろうとしてます。入れようとしてもNOT NULLなのでダメですよ。というエラーが発生しました。

【該当テーブルのカラム】
id(AUTO_INCREMENT)
content(投稿内容)
created_at(作成日時)

【エラー文】
“create_at”カラムのnull値が非null制約に違反しています。

確かにテーブルでNOT NULL制約を設けているが、デフォルトでCURRENT_TIMESTAMPが入るようにしており、理由がわからないので調べてみました。

# 原因

結論、entityにフィールドを定義しているかしていないかが関係していた。

“`java:entity
@Column
private Timestamp created_at;
“`

上記のようにフィールドを

元記事を表示

Spring ValidationとModelAttributeメモ

#はじめに
Springbootでバリデーションを表示させようとしたのですが、原因がわからず詰まったため
解決方法を備忘録として記載します。

#環境
OS:macOS Big Sur 11.5.2
使用ブラウザ:GoogleChrome
Spring:2.5.4
Java:OpenJDK 11.0.2
DB:MySQL(AWSのRDS上で起動中)

#やりたいこと
更新フォームにおいて、バリデーションを出力する。
※入力フォームではバリデーションの出力はできていた。

“`java:InquiryContoroller.java
@GetMapping(“/{id}”)
public String showUpdate(
InquiryForm inquiryForm,
@PathVariable int id,
Model model){
//省略
model.addAttribute(“inquiryForm”, inquiryForm);
List list = inqui

元記事を表示

プログラミング初学者のすゝめ

#プログラミング初学者へのすゝめ
初めまして!都内でシステムエンジニアとして働き始めて1年半が経過したmartinです。
投稿日は2021年9月2日ですが、この時点で涼しくなったり暑かったりとで体調崩し気味です。
基本は、WFHなのですがもうそろそろ外に出て遊んだりしたいですよね….

今回は初投稿ということもあり、エンジニアとして働き始めて1年半が経過した今だからこそ言える「プログラミング初学者へのすゝめ」を題材にしたいと思います。(まだまだエンジニアとしては経験不足ですがお許しください。)
また、いきなり文章を書くのは苦手なので投稿内容をスライド形式で掲載したいと思います。
見づらかったらすみません!!

##目次
– 第1章 作成するソースコードについて
– 作成するソースコードはどんなものが良いのか?
– ソースコードの品質について
– 第2章 利用するツールの特性
– IDEとエディターの違い
– ツールを理解するということ
– 第3章 言語習得には座学よりもまず話す事!
– そもそもプログラミング言語って何?
– 第4章 まとめ

元記事を表示

【書籍「はじめてのSpringBoot[改訂版]」使用者必見】意外と引っかかった書籍の落とし穴

##某プログラミングスクール卒業生の備忘録

初めまして!

最近やっと就職が決まったプログラミングスクール卒業生です。

今回は、随時更新型の記事を書こうかなと思います!

現在SpringBootを学習するために使用している書籍【はじめてのSpringBoot】の

意外な落とし穴(私の理解不足も込みで)を書いていきます!

では早速いきましょう!

書籍はこちら
https://www.kohgakusha.co.jp/books/detail/978-4-7775-1969-9

##①54ページ 「データの永続化の設定」

「src/main/resources/application.properties」の設定方法ですね。

ここでまず沼にハマりました。

「H2データベース」の設定ファイルに記述するのですが、本では以下のようになります。

“`springboot:本のソースコード
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:file:./target/

元記事を表示

Openapi Code Generatorで日本語表記のenum値を採用する場合

## これはなんですか

Java でOpenapi specを使ってコントローラーのインターフェースやクライアントを書いている人たちで、enumの値を日本語にしたいときどうしたらいいかというお話。

## ほうほう
例えばこんなかんじで、stringなvalueをenumとして扱う場合

“`
PetType:
type: string
enum:
– 猫
– 犬
“`

そのままだ下記のようなとエラーになります。

“`
[ERROR] Request.java:[77,5] リリース9から’_’はキーワードなので識別子として使用することはできません
“`

生成されるソースコード

“`
public enum PetTypeEnum {
_(“猫”),

_(“犬”);
“`

## じゃあどうしようか

こうしましょう

これが

“`
PetType:
type: string
enum:
– 猫
– 犬
x-enum-varnames:

元記事を表示

[Java基礎④] while処理/繰り返し回数もランダムにする Math.random

初めに

Java学習開始4日目です。
今回はwhile処理を学習しました。

While処理の基本形

“`java:コード
public class Main {
public static void main(String[] args) {
int i = 0; // カウンタ変数の初期化
while (i <= 5) { System.out.println(i); // 繰り返し処理 i += 1; // カウンタ変数の更新 } } } ```

繰り返しの回数をランダムにする

“`java
public class Main {
public static void main(String[] args) {
int hp = 30;
int hit; // カウンタ変数の初期化
while (hp > 0) {

元記事を表示

Passing object as parameter into function

Please read following code.

“`Java
public class Test {

public static void main(String[] args) {
// Integer reference called “clz”
Integer clz = new Integer(1);
changeValue(clz);
System.out.println(“After called changeValue(): ” + clz.toString());
}

public static void changeValue(Integer input) {
System.out.println(“Start changeValue(): ” + input);
input = new Integer(2);
System.out.println(“Finish changeValue(): ” + input);
}

}
“`

The output is

“`
Start changeValue():

元記事を表示

JSTL の使用手順を易しく解説

# 自主学習エンジニアがJSTLを使用するにあたって
Eclipseとかもそうですが
パソコンに疎い人間にはインストール方法でさえ、英語多いし何かとめんどくさいことが多いと感じました…
今回、JSTLを導入するにあたって少し手間取ってしまいました。
#####図を用いた解説し、わかりやすい記載となるよう心掛けてますので、参考になれば幸いです。

## JSTLとは
JSTLは「JSP Standard Tag Library」の略で、JSP内でよく使われる機能をタグライブラリとしてまとめたもの

## インストール手順
JSTLをインストールするには、2つの異なるJARをダウンロードします。
・Maven RepositoryのJSTL-APIダウンロード先
https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl-api/1.2
![pic2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556334/9914e709-5045

元記事を表示

JAVAでのUDP通信(オンラインチャット実装)

# 目標

顧客があるサービスのオンラインヘルプに問い合わせすると想定し、チャット機能をjavaで実装する。
機能だけ実装し、UI部分は無し。

# TODO整理

目標を実現するのに必要なのは以下が考えられます。

* UDP通信

UDP通信特徴
①リアリティ性が求められない
②かつクライアントとサーバーか、クライアントとクライアントとの通信にこだわらない

今回の実装にUDP通信を使います。

* スレッド

メッセージ受け取るにも送るのにも同時に行う必要があるのため、スレッドを実装すると考えらる。

# 実装

* メッセージ送信処理

UDP通信はクラス[DatagramSocket](https://www.techscore.com/tech/Java/JavaSE/Network/4-2/)を使う

“`SendThread.java
package com.maekawa.onlineChat;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStrea

元記事を表示

よくやるNullPointerExceptionまとめ

基本的すぎることですがよくやるのでメモ

# 定数.equals(変数)で変数がnull
“`java:
final String nullStr = null;

// ぬるぽにならない
System.out.println(“a”.equals(nullStr));
// ぬるぽになる
System.out.println(nullStr.equals(“a”));
“`

# if文がnull
“`java:
final String nullStr = null;
// ぬるぽ
if (nullStr) {}
“`

元記事を表示

【STS初学者必見】STS(Spring Tool Suite)とH2(簡単に使えるDBMS)を使用してSQL文を発行したかった際に起きた、しょうもない記録

##某プログラミングスクール卒業生の備忘録(今回は本気の備忘録)

お久しぶりです!本日は、ほんとにただの備忘録なので、参考程度にだけ覚えておいてください。

※内容がしょうもなさすぎて(笑)

##使用環境

__・Mac OS__
__・Java 11__
__・STS(SpringToolSuite) 2.5.4__

##参考書籍

__はじめてのSpring Boot[改訂版]__

##STSでSQLファイルを作成する際、MySQLWorkBenchが開く

ということで。

JDBCを使用してSQL文でデータを引っ張ってこようっていう、本の演習をしていたんですけど、

springプロジェクト内の「src/main/resources」の配下に

__・schema.sql__
__・data.sql__

の二つを作成しようとしたんですよね。

作成した瞬間、別のテキストでダウンロードした、MySQLの操作ツール「MySQL WorkBench」ってやつが起動したんです。

これは違うと思い、ひたすらSQLファイルの作成方法

今回使用するH2データベースの接続方法を

元記事を表示

暗号化スイート(AES-GCM)でTLSの安全性を強化する方法

TLS1.2で暗号化スイートを利用して安全性を強化する方法について、紹介させていただきます。

## 1.暗号化スイートとは
SSL/TLS にてデータを暗号化して通信を行うには、自分自身と通信相手の両方が利用可能なアルゴリズムを使う必要があります。
不特定の相手と両者が利用可能なアルゴリズムを確認しあうために使われるのが 暗号スイート(cipher suite) となります。

## 2.Tomcatで暗号化スイートの設定について
### 2.1との暗号化スイートを使います?
JAVAで指定できる暗号化スイートは以下のサイトを参照してください
https://docs.oracle.com/en/java/javase/11/docs/specs/security/standard-names.html
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234182/3c6d16e1-d03a-7099-0703-727d507a3a07.png)

例えば、AES-GCMを利用する場

元記事を表示

Java Word文書でハイパーリンクの挿入・読み取り

ハイパーリンクを挿入することで、ワード内の文字列や図形に別の場所の情報をリンクさせることができます。今回は、Spire.Doc for Javaという使いやすいライブラリを活用して、Word文書にハイパーリンクを挿入、そしてWord文書内のハイパーリンクを読み取る方法を紹介していきます。

1.E-iceblueの公式サイトからFree Spire.doc for Java無料版をダウンロードしてください。

f:id:lendoris:20210901151710p:plain

元記事を表示

java エンコーディングMS932にマップできません エラー解消しよう (記録)

##Java日本語のコンパイルエラー解消
以下のコードをコンパイルしようとしてエラーが発生

“`MyApp.java
import java.io.*;

class MyApp{
public static void main(String[] args) throws IOException
{
System.out.println(“文字を入力してください”);

BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
System.out.println(str + “が入力されました。”);

}
}

“`
↓コンパイル実行

“` terminal
javac MyApp.java
“`

↓エラー発生

“`
MyApp.java:11: エラー: この文字は、エンコーディングMS932にマップできません

元記事を表示

【対処法】protocol is disabled or cipher suites are inappropriate エラーが出た

#目次
[現象の説明](#現象の説明)
[解決手順](#解決手順)
[参考](#参考)

# 現象の説明
docker-compose up でコンテナを起動します。
その後、ローカル環境でアプリケーションにアクセスしようとしたら以下のエラーが出ました。

“`
com.microsoft.sqlserver.jdbc.SQLServerException:
The driver could not establish a secure connection to the server.
Reason: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
“`

# 解決手順
ポイント:java.security ファイルを修正するだけ

* docker-compose up した後、まずコンテナに入ります。
`docker exec -it [コンテナ名] /bin/bash`

* java.security ファイルのあるディレクトリまで移動します

元記事を表示

[Java基礎③]データの変換(キャストする)整数→実数 文字列→整数

初めに

Java学習3日目です。今回は、データ型の変換について学びました。

データ型の変換をデータのキャストと言うそうです。

小数点あり→整数型

double型の3.14と定義した値を3と表示します。

“`java:コード
public class Main {
public static void main(String[] args) {
double number1 = 3.14;
System.out.println((int)number1);
}
}
“`

整数を小数点ありに変換

“`java:コード
public class Main {
public static void main(String[] args) {
double number1 = 3;
System.out.println((double)number1);
}
}
“`

文字列を数値に変換

“`java:コード
public class M

元記事を表示

== operator for String object in Java

First please read [this](https://qiita.com/saladlam/items/c867416f9b0db83b5e1d) if you don’t sure how to use == operator for object.

# Example from The Java® Language Specification

Got from [here](https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.5).

“`Java
package testPackage;
class Test {
public static void main(String[] args) {
String hello = “Hello”, lo = “lo”;
System.out.print((hello == “Hello”) + ” “); // (1)
System.out.print((Other.hell

元記事を表示

消費税

TAX_RATE =0.8;

元記事を表示

OTHERカテゴリの最新記事