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

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

Java Silver 1章 Javaの基礎

#コンパイルと実行

“`
// ソースに複数のクラスがあれば複数のクラスファイルが作製される
class Foo {}

// JavaではPublicクラスはファイルと同名
public class Main{
public static void main(String[] args){
System.out.println(“Hi!!”);
}
}

// ソースファイル→クラスファイル(コンパイル)→実行(JVM:Java Virtual Machine上で実行)
// この学習ではWindowsOSにあるJVM.ver11を VScode Editerで参照してターミナル(PowerShell)で実行している。
“`
インタプリタ言語のPHP、JSと違いソースファイルをコンパイラして各クラスファイルを作製
実行環境の差をJVM(Java Virtual Machine)が埋めてくれる。

##1億回ループさせた時の実行時間の差
“`
public class Loop {
public static void main(String[] arg

元記事を表示

SpringBootのWebアプリケーションをHTTPS化する

# はじめに

[IntelliJでJava SpringBootのWebページを作成](https://qiita.com/ykdevs/items/788ceeb0972c48bd1e74)で作成したWebアプリケーションをHTTPS化していきます。

# 手順

## 鍵ファイルの作成

以下のコマンドを実行して、local.keystoreという鍵ファイルを作成します。

“`bash
$ keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore local.keystore -validity 3650
キーストアのパスワードを入力してください:
新規パスワードを再入力してください:
姓名は何ですか。
[Unknown]: localhost
組織単位名は何ですか。
[Unknown]:
組織名は何ですか。
[Unknown]: ykdevs
都市名または地域名は何ですか。
[Unknown]: Yokohama
都道府県名または州名

元記事を表示

IntelliJでJava SpringBootのWebページを作成

# はじめに

[IntelliJでJava SpringBootのプロジェクトを作成](https://qiita.com/ykdevs/items/77e3903ec0bb2aec8845)で作成したアプリケーションにTymeleafを使ってWebページの作成を行います。

# 手順

## build.gradleの編集

spring-boot-starter-thymeleafを追加します。

“`gradle:build.gradle
dependencies {
// SpringBoot
implementation “org.springframework.boot:spring-boot-starter-web”
testImplementation “org.springframework.boot:spring-boot-starter-test”
implementation “org.springframework.boot:spring-boot-starter-thymeleaf”
“`

## Controllerを

元記事を表示

Java Silver SE11 学習記録

Javasilverの学習記録を付けます。
![スクリーンショット 2021-09-04 230143.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/601137/d04d75a1-df00-259d-1d76-049bd39cbe2c.gif)

記述方法が細かくルールも多いため他の言語に比べ難しいと聞きます。
オブジェクト指向を学ぶ上で有用と思い受験することにしました。
【学習環境】
OS:Windows, エディター:VScode, JDK-11

元記事を表示

【備忘録】JavaのOptionalについて

#はじめに
Optionalについて自分なりの理解を備忘録として執筆します。

#Optionalとは
値をラップしてその値がnullである可能性を表現するクラス。
NullPointerExceptionを防ぐことができる。

#Optionalを使う理由
nullである可能性のあるメソッドを呼ぶ場合、事前にnullかどうかのチェックを実装する必要がある。
しかし、実装を忘れてしまう可能性がある。
実装を忘れることを防止するためにOptionalが利用される。

#ソースコードで確認
ofNullableメソッドを利用して、Optionalが型のオブジェクトを作成する。
If文の中でisPresent関数を利用して、値が存在しているときのみlengthメソッドを実行している。
この時、変数strの中身はnullであるため実行してもコンソール上にはなにも表示されない。

“`java:java
String str=null;
OptionalstrOpt=Optional.ofNullable(str);

if(strOpt.isPresent())

元記事を表示

2年目の目標

## 趣旨
エンジニアにジョブチェンジして1年と3か月が経過しました。
今勤めている会社が9月末決算で、10月から年度が変わるので、
このタイミングでエンジニア2年目の目標とやることを整理しようと思います。

## 2年目の方針

設計・開発・テスト・調査・改修と、一通りの業務にこの一年間で携わることができ、
なんとなくエンジニアの業務の全体像のようなものがつかめてきたと感じています。

スキル面では、JAVA、SQL(postgresql)、JavaScriptを用いたプログラミングが主な業務でしたので、
『こう書けば動く』という基礎的な部分は定着してきましたが、標準搭載のAPIを使用して
独自モジュールを極力増やさないプログラミングや、オブジェクト指向・アスペクト指向を実践するなど、
保守性・品質を高めるための取り組みがおざなりだったなと感じます。

また、フレームワークやミドルウェア、OSなどについては
ほとんど触れる機会がなくほとんどからっきしの状態です。

この一年は、
『業務で必要なことを調べる』⇒『それらしい解決策を見つける』⇒『必要なところだけ理解して応用する』
という

元記事を表示

無限の猿定理をWebアプリ化した

#はじめに

皆さんは『無限の猿定理』というものをご存知だろうか。
>無限の猿定理(むげんのさるていり、英語: infinite monkey theorem)とは、十分長い時間をかけてランダムに文字列を作り続ければ、どんな文字列もほとんど確実にできあがるという定理である。比喩的に「猿がタイプライターの鍵盤をいつまでもランダムに叩きつづければ、ウィリアム・シェイクスピアの作品を打ち出す」などと表現されるため、この名がある。

[Wikipedia](https://ja.wikipedia.org/wiki/%E7%84%A1%E9%99%90%E3%81%AE%E7%8C%BF%E5%AE%9A%E7%90%86)より

要するに”無限”というものの凄さの例えである。
この定理に着想を得て、以前「[頭文字を打つだけで文章ができていくアプリケーション](https://qiita.com/ck_qiita/items/76fc79e0323a7485a966)」というものを作成した。
このプログラムはコンソール上だけでの動作だったので,Webアプリに移植して,公開することにした。
UR

元記事を表示

Spring Boot + Thymeleaf+JPA+PostgreSQLでCRUDサンプルの改良・開発(Spring Boot ver 2.2以降)

記事を作成するにあたり@ozaki25さんの以下のサンプルを参考にさせていただきました。
【参考記事のタイトル】
SpringBoot + JPA + Thymeleafで簡単なCRUDを作る②~画面と機能作成まで~
URL:https://qiita.com/ozaki25/items/3b348874b6db5ab4f04f

#開発環境
Windows10
Eclipse
PostgreSQL

#各種フレームワーク
Spring Boot バージョン:2.5.0
Bootstrap バージョン:5.1.0

#Spring Boot ver2.2以降での開発の際に変更になった点
HttpHiddenMethodFilterがデフォルトで無効化(disabled)されました。
それによってHttpメソッドの中のPutメソッド(リソースの更新、作成を担う処理)とDeleteメソッド(リソースの削除を担う処理)の設定がデフォルトの状態のままでは実行できません。
なので、設定ファイル(application.propertiesまたはapplication.yml)の中でHttpHid

元記事を表示

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

#はじめに
この記事は「Springで作成したアプリをAWSとRDSとElastic Beanstalkを用いてデプロイする方法①」
の続きです。
前回までは、RDSからDBを作成しました。
今回はMySQLの設定とElasticBeanstalkの設定について執筆していきます。

#MySQLの設定
MySQLの設定は下記のような作業を行います。

##事前にRDSのDBのエンドポイントをコピーしておく。
理由は後程、MySQLに接続する際に利用するためです。
![スクリーンショット 2021-09-03 16.20.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912583/ea49cea1-1d5f-224c-5b7b-1cef5b5dae2e.png)

##MySQLWorkbenchのインストール
公式サイトのダウンロードページよりインストールする。(2021年9月3日現在の最新バージョンは8.0.26)

https://dev.mysql.com/downloads/work

元記事を表示

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

元記事を表示

OTHERカテゴリの最新記事