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

JAVA関連のことを調べてみた2022年10月17日
目次

Azure FunctionsからMySQLに接続する~Java編~

# 対象者

– Azure FunctionsからAzure Database for MySQLに接続してみたい方
– Javaで開発したい方
– コマンドベースで操作したい方

# 概要

この記事では以下の内容について扱っています。
基本的にコマンドベースで進めていきます。

– Azure Database for MySQLフレキシブル サーバー のリソース作成
– Azure FunctionsからMySQLに接続
– 【おまけ】Azure FunctionsでAPIキーを使用する

## 前提

前回投稿した記事「[Azure FunctionsでAPIを作る~Java編~](https://qiita.com/fsdg-nagumo/items/5eec1e9b66d33e3f4687)」の続きとなります。
Azure Functionsの開発環境構築、デプロイ方法については記事をご参照ください。

<前回のあらすじ>

1. Azure Functionsのローカル開発環境構築(Java)
2. 適当なダミーJSONデータを返すAPIを

元記事を表示

【Java】拡張for文を入れ子的に2度使用する際の挙動を調べました。

 paizaラーニングで2、3日前からJava入門編を始めた完全初心者が書いておりますゆえ、お手柔らかにお願いします。

なぜ書こうと思ったか

 Java入門編:5の2次元配列を学習していたところ、いきなり拡張for文を2回使う手法がさらっと出てきてびっくりしたからです。

コード内でやること

①teamsと名付けた二次元配列に、それぞれ{a,b,c}、{d,e,f}、{g,h,i}を入れ、

②拡張for文を使って、それらの中身を全部printlnにて出力するということをします。

③その際に、拡張for文の中で、配列がどこからどれだけ取り出され、どう動くのかを出力結果を解釈して、知ろうと思います。

~~~Java:拡張for文
public class Main {
public static void main(String[] args) {

//2次元配列に中身を入れる
String[][] teams = {{“a”,”b”,”c”},{“d”,”e”,”f”},{“

元記事を表示

固定文字列を返すAPIをDockerでデプロイする

前回仮想マシンを作ったので、今回は固定文字列を返すAPIを作り、AppServiceにデプロイします。色々と設定や制約があるかもしれないのでDockerをデプロイする形が一番ハマる要素がないかと思っています。

## APIを作る
SpringBootの公式に手順があったのでVisualStudioCodeで作る

https://spring.io/guides/gs/spring-boot-docker/

“`java:Application.java
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestControl

元記事を表示

Bランクレベルアップメニュー 文字列の重複カウント 解答

# STEP: 30 文字列の長さ

## 問題
https://paiza.jp/works/mondai/prob60/count_string_0

## 解答
“`java:step.java
import java.util.*;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();

// 文字数を取得
int length = line.length();
System.out.println(length);

sc.close();
}
}
“`
## 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2918186/60

元記事を表示

Lombokでgetterのプレフィクスを削除する方法!(maven)

## やりたいこと

↓ このようなクラスがあった場合…
“`java:Boo.java
@AllArgsConstructor
@Getter
public Boo {
private int id;
}
“`
↓ 以下コードでIDが取得可能ですよね!
“`java
new Boo(1).getId(); // 1
“`
↓ それをこうじゃ!
“`java
new Boo(1).id(); // 1
// ↑ getプレフィクスがない! 出力は上のコードと一緒
“`

## やり方

src > main > java下にlombok.configを作成し、下記1文を追加するのみです!

“`config:lombok.config
lombok.accessors.fluent = true
“`

## 注意

また、上記を行うとsetterもプレフィクスがなくなることにご注意ください!

“`java:Boo.java
@AllArgsConstructor
@Getter
@Setter
public Boo {

元記事を表示

【初心者専用】Java8のStreamについて

## 0. 最初に
開発経験のない新入社員が、Javaを研修で学んだはずなのに見たこともない関数インターフェースに悩まされ、さらには上司の開発陣はもれなくムキムキで泣いているので、自己研鑽と同郷のために記事を投稿する

## 0.5 APIとは
そもそも、APIは言葉はよく聞きますが、意味をしっかり理解している新人はいますか?私もそこまでしていなかったので、調べました。
「API」とは、「Application Programming Interface」の頭文字です。
アプリケーションをプログラムするうえでのインターフェースと言われれば、多少ピンとくるかもしれませんが、
わかりやすくいうと、ソフトウェアやアプリケーションなどの一部を外部に向けて公開することにより、第三者が開発したソフトウェアと機能を共有できるようにしてくれるもので、外部とのやり取りを行い、よりシステム構築を簡易的に汎用的にしているみたいです。
要するに我々の味方です。

ですから、ここから先に説明するStreamもコードの可読性を上昇させたりと、いいことしかないというわけです

## 1. Stream API
St

元記事を表示

ラムダ式とStreamAPI

# ラムダ式とは
ラムダ式とはjava8から使用できるようになったコーディングの文法のことである。
関数型インターフェイスを実装したクラスのインスタンスを短い記述で作成することが可能になっている。

# 関数型インターフェイスとは

関数型インターフェイスとは抽象メソッドを1つだけ持つインターフェイスのことである。
抽象メソッドを1つだけ持つという特徴がラムダ式での記述を可能にしている。(型推論)

関数型インターフェイスは標準APIでいくつか用意されているが自作することもできる。
詳しくは後半で記載する。

# ラムダ式の構文

まずはラムダ式で書いたコードと書いていないコードを見て、どのような構文か確認していく。

“` ラムダじゃないよ.java

public interface InterfaceSample {
public String method(String str);
}

public class Sample {
public static void main(String[] args) {
InterfaceSample ifs = n

元記事を表示

Re:ゼロから始める開発環境構築①

ふと、個人の開発環境を作りたいと思ったので備忘録として載せます。

# 背景
普段仕事開発してるけど、「そういえば自分で開発環境作ったことなくね?」と思い、異動とか転職したときに何もできなくなりそうな予感がしたので「ゼロから環境構築ができる」人になりたいと思った。

# やりたいこと
①GitHubのアカウント作成(リモートリポジトリ作成まで)
②IntelliJとのGitHub連携
=============とりあえずここまで===============
③諸々の設定
④ビルドサーバ構築
⑤コンテナ環境構築

※多分④⑤はAWS使う

# ①GitHubのアカウント作成
1. [GitHub](https://github.co.jp/)にアクセス
![スクリーンショット 2022-10-16 12.24.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2448259/a2a93092-a7d7-7e71-d14b-5e3f712e04ed.png)

2. 必要情報の入力![スクリーンショット

元記事を表示

【Thymeleaf】共通部品内でフィールド名をもとに値を扱う

# 結論

共通部品で「フィールド名」と「値」を必要とした場合、呼び出し元でその2つを渡せば機能するが、共通部品内でフィールド名をもとに値を扱うようにすれば引数は1つですむ。
※場合によっては工夫が必要なことがある

“`html

“`

“`html

“`

# 経緯

[Thymeleaf](https://www.thymeleaf.org/index.html)を使った画面実装において、入力項目や表示項目についてデザインが共通している部分を共通部品にしたくなった。
例えばテキストボックスをThymeleafの記法を気にせず実装するとこう

元記事を表示

Bランクレベルアップメニュー 文字の重複カウント 解答

# STEP: 25 文字列の長さ

## 問題

https://paiza.jp/works/mondai/prob60/string_count_0

## 解答

“`java:step25.java
import java.util.*;

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

Scanner sc = new Scanner(System.in);
String line = sc.nextLine();

// 文字数を取得
int length = line.length();

System.out.println(length);

sc.close();
}
}

“`

## 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.

元記事を表示

ABC273A~Eの解答[Java]

## はじめに
今回もA~Dはコンテスト中、Eはコンテスト後に解いたものを載せようと思います。

では、見ていきましょう。

## A – A Recursive Function
問題文は[こちら](https://atcoder.jp/contests/abc273/tasks/abc273_a)

定義通り再帰しても良いですが、これは1~Nの総乗なのでfor文で回してやれば良いです。
“`A.java
class Main{

static Library System = new Library(java.lang.System.in,java.lang.System.out);

public static void main(String[] args){

//Nの受け取り
int N = System.in.nextInt();

//初期解
int answer = 1;
//f(0)=1、f(1)=1なので2から
for(int i=2;i<=N;i++) answer *= i; //答えの出力 System.ou

元記事を表示

Bランクレベルアップメニュー 指定範囲だけ大文字 解答

# STEP: 18 文字列の分割

## 問題

https://paiza.jp/works/mondai/prob60/substring_upper_0

## 解答

“`java:step18.java
import java.util.*;

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

Scanner sc = new Scanner(System.in);
doAStringBreak(sc);
sc.close();
}

/**
* 文字列改行をする関数
*
* @param sc 標準入力
*/
public static void doAStringBreak(Scanner sc){

while(sc.hasNext()){
System.out.println(sc.

元記事を表示

Java: Spring APIのバリデーション実装について

## はじめに
– とあるプロジェクトでJava × SpringでAPIを製造したのですが、その際にバリデーションについて調査したので、備忘録として内容をまとめてみました
– Java × Spring でAPIを作成した際にリクエスト段階でバリデーションチェックをしたいときに有効

## 環境
– Java 11
– Spring Boot 2系
– Lombok

## 前提
– Java × Spring でWeb APIを実装
– APIリクエスト時に、RequestDTOを用いて**送信されるJSONリクエストをRequestDTOにマッピングする想定**

## Spring / APIのバリデーション実装
– Springは、Java標準であるJSR-303のBean Validationをサポートしています。Spring MVCでの開発においては、Bean Validationを利用してバリデーションをする方法が推奨されています。

※ **JSR-303:Bean Validation**は「**JavaBeansのプロパティが取り得る値や条件を、制約のアノテーショ

元記事を表示

Javaの隠された (しかも、ちょっと面白い) 文法 3選

# この記事は?
この記事は**知名度がかなり低そうなJavaの文法**を、独断で3つ選んで紹介するものです。

動作確認したJavaのバージョンは OpenJDK19 ですが、Java8 の時にはこれらの文法が既にありました。

では、早速行ってみましょう。

# 1. ラベル
https://docs.oracle.com/javase/specs/jls/se19/html/jls-14.html#jls-14.7

文(といっても専らforやwhile文)には、 **ラベル** をつけることができます。
for文の中のbreakやcontinueで参照することで、ラベルがついたループを抜けたり、もう一回やり直すことができます。

“`java
var list = new ArrayList>();

// マス目を x + y で埋めていくが、 x + y が6以上になった時点でやめる
label:
for(int x=0; x<5; x++){ list.add(new ArrayList());
fo

元記事を表示

PostgreSQLのJDBCドライバーで、timestampとtimestamp with time zoneのjava.sql.Typesでのデータ型が同じになってしまうという話

# What’s?

PostgreSQLをJDBCで扱っていて、`timestamp with time zone`型を使った時にちょっと困ったことになりまして。

調べてみました。

結論から言うと、JDBCのメタデータで見た時に`timestamp`と`timestamp with time zone`型を区別することができません。

# PostgreSQLのJDBCドライバーとDate and Time API(JSR-310)

PostgreSQLのJDBCドライバーのオフィシャルサイトはこちら。

https://jdbc.postgresql.org/

ドキュメント内に、Date and Time API(JSR-310)との関係が書かれています。

[Issuing a Query and Processing the Result / Using Java 8 Date and Time classes](https://jdbc.postgresql.org/documentation/query/#using-java-8-date-and-time-cla

元記事を表示

JavaプロジェクトからSQSにキューを送信してlambdaをキックする

# 前提
業務でこんな処理を実装する気がするので、簡単に予習してみます。
今回は動くか検証のみなので、ローカルで起動したJavaアプリケーション(Spring Boot)からSQSにメッセージを送信してみます。

本当はlambdaからrdsへ登録・更新する処理を実装したかったのですが、それはまた別の機会に。(なのでSQSやlambdaの名前がmergeXXXXみたいになってます。)

![lambda-sqs.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2433961/3a229f2f-f2b9-d425-1c1e-6ec78dd46b8e.png)

# 環境
– macOS: 12.6
– IntelliJ IDEA: 2022.2.3 (Community Edition)
– Gradle: 7.5
– Java: temurin 17.0.3

# 手順

## プロジェクトの作成

#### spring initializrでプロジェクト作成
[https://start

元記事を表示

Oracle Java Silver SE 11 に合格する方法とおすすめ書籍

# はじめに
こんにちは,来海くるみ(@walnut-pro)です.
Oracle Java Silverの試験に無事合格したので,報告とともに,合格するために行ったことを記事にしようと思います.

# 前回の記事
https://qiita.com/walnut-pro/items/d97e6293bc9964d0da45

# 背景
自分はこれまでにPythonでの深層学習やJavaScriptでのWeb開発をしていた経験がありましたが,Javaに関しては(ほぼ)知識ゼロでした.これからバックエンドの開発もしていきたいな〜,Javaを使っていきたいな〜と思っていたところ,会社の先輩から「Oracle Java Silverの資格をとってみよう」とアドバイスをいただきました.

# Oracle Java Silverとは
参考資料
Java SE 11 Programmer I (1Z0-815-JPN) 試験

https://www.oracle.com/jp/education/certification/jse11-5570635-

元記事を表示

AWS SDKをv1→v2にアップデートする

## 経緯

現在携わっているPJでAWS SDKを使用してるのですが、処理実行時に`java.lang.NoSuchFieldError: CLIENT_ENDPOINT`が発生するようになり、調べたところ、サービスによってライブラリバージョンv1とv2が混在していることが原因だったため、全てv2に揃える対応を行いました。
(cf. [Github issue](https://github.com/aws/aws-sdk-java/issues/2582))

## 前提

* ビルドツールはMavenを使用
* 利用サービスは以下
* Cognito
* S3
* SES
* SQS

## 概要・基本方針

v1とv2の基本的な違いは公式ドキュメント [AWS SDK for Java 1.x と 2.x の相違点](https://docs.aws.amazon.com/ja_jp/sdk-for-java/latest/developer-guide/migration-whats-different.html)に記載されているのと、各サービ

元記事を表示

「プロになるJava」でJava入門したい人へ

# 概要
「プロになるJava」を読んだ感想と内容、おすすめできる人などを書いていきたいと思います。
かなり良い本だと思うので是非読んでいただきたいです。

# 前提
私はJavaの開発歴が1年ちょっとあるエンジニアです。すでにJavaに関してはProgateや「スッキリわかるJava入門」、その他教材、研修などで入門済みです。業務でもJavaを使っているのでこれらの視点から「プロになるJava」について書きたいと思います。

# 「プロになるJava」の概要
「プロになるJava」の構成ですが以下のようになっています。
+ Javaを始める準備
+ Javaの基本
+ Javaの文法
+ 高度なプログラミング
+ ツールと開発技法
+ Webアプリケーション開発

各章の章立てだけ見れば最後のSpring bootを用いての実践的な開発以外は”基本⇒文法⇒ツールの使い方”という一般的な流れですが、それぞれの章の中身の構成を見るとかなり他の技術書とは異なっています。

他の技術書ではJavaの基本を大まかに説明した後はコンソール表示、計算、条件分岐、繰り返し処理、メソッド、継承などの文

元記事を表示

【IntelliJ IDEA】jarファイル実行でエラーが出て、死にそうになった話。

多分、ビルドシステムとか統合開発環境に詳しい人には、何て事ない話なのでしょうが、解決に死ぬ程、苦労したので、備忘録として記載します。環境は、Mac M1です。

IntelliJで、jarファイルを作成して、そのjarファイルを実行すると下記のエラーが発生。

“`
UserX@UserX-mac HelloWorld_jar % jar -tf HelloWorld.jar
Error: Invalid or corrupt jarfile HelloWorld.jar
“`

IntelliJ上で、runすると、「プロセスは終了コード 0 で終了しました」と正常終了しているので、コード自体は間違ってないが、jarファイルが実行できていないと言う状況です。
![1015.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1665829/ef570b30-57bb-858c-144b-050c5e992018.png)

Jarファイルの中身を見ると、こんな感じ。
“`
UserX@UserX-ma

元記事を表示

OTHERカテゴリの最新記事