- 1. AWS Cognitoで認証したJWT(トークン)の有効性チェック
- 2. 【java+spring boot】ローカルでファイル添付処理を実装してみた:読み解き(1)
- 3. 【java + spring boot】ローカルでファイル添付処理を実装してみた
- 4. Java21で正式リリースの Virtual Thread を使ってみた
- 5. 【2024年版】try catch finally を C++ で実現する
- 6. Open Libertyをオフライン環境でもZIPファイルから起動する
- 7. Java ラムダ式
- 8. [Google Sheets API] Javaでスプレットシートの情報を取得する
- 9. 【初めてのJava】コードリーディングしてみた(スレッド / タイマー)
- 10. 自分でインストールしたJavaバージョンをSDKMANで管理する方法
- 11. java static イニシャライザとstaticフィールド
- 12. 自動ミュート機能の実装:Discordボット開発【その④】
- 13. Eclipseセットアップ(お勧めプラン)
- 14. eclipse Intellij 開発のショートカット
- 15. 検証、BindingResult、BeanValidation
- 16. java.lang.IllegalStateException: Unbound values in registryエラーで悩まされた
- 17. ブラックジャック実装
- 18. 【Java Gold】(1Z0-816-JPN) 合格体験記
- 19. NullPointerException vs IllegalArgumentException
- 20. Float型の標準出力の有効数字のデフォルトはなぜ6桁なのか
AWS Cognitoで認証したJWT(トークン)の有効性チェック
クライアントサイドで認証したトークンをサーバーサイドでもチェックする場合のチェック処理です。
# 初歩的なチェック処理。
“`java:ValidationUtil.Java
package com.yksc.lambda.util;import java.net.URL;
import java.security.interfaces.RSAPublicKey;import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.nimbusds.jose.jwk.JWK;
import com.nimbusds.jose.jwk.JWKSet;public class ValidationUtil {
public static void main( String[] args ) throws Exception {
String region = “us-east-1”;
St
【java+spring boot】ローカルでファイル添付処理を実装してみた:読み解き(1)
## こちらの続き
[【java+spring boot】ローカルでファイル添付処理を実装してみた](https://qiita.com/macha_7/items/4f9d613e913b6bd95a30)### 【読み解き】実装を調べてみた
主には参考にしたページで解説されているがちょっと難しい。
実装みながら自分なりにまとめてみる。## 実装箇所の概要
#### メイン
– Controller
– StorageService(interface)
– FileSystemStorageService (implements StorageService)
– StorageProperties
– MainApplication#### 例外
– StorageException extends RuntimeException
– StorageFileNotFoundException extends StorageException#### その他
– html(template)
– application.properties→ それぞれの役割
【java + spring boot】ローカルでファイル添付処理を実装してみた
## 開発環境
– java 17
– springboot
– thymeleaf## やりたいこと
– ファイル添付を実装(しながら仕組みを学ぶ)
– ファイル保管場所:ローカル### 手順
1. バックグラウンド側の各ファイル操作処理を実装
1. フロント側に添付ファイルのインターフェースになるフォームを実装**こちら参考に実装:[ファイルのアップロード](https://spring.pleiades.io/guides/gs/uploading-files/)**
※私は適当なjavaアプリがあったため、**「アプリケーションクラスを作成する」** から部分的に移植する形で実装。Exceptionなど大体の追加ファイルはとりあえずcommonディレクトリにぶちこみ。
#### そのまま実装するとエラーになったので補足
ビルドは通るが実行すると失敗
“`
***************************
APPLICATION FAILED TO START
***************************Description:
Param
Java21で正式リリースの Virtual Thread を使ってみた
Java19でプレビュー、Java21で正式リリースとなった Virtual Thread(仮想スレッド)を使ってみた。ラムダ式とやらは使ったことないので、理解の複雑化回避のためあえて使わずに。
“`java: ThreadExecutor.java
package pkg;public class ThreadExecutor {
public static void main(String[] args) throws InterruptedException {
MyRunnable runnable = new MyRunnable();
// プラットフォームスレッドとして実行する場合(従来からのスレッド)
Thread pthread = Thread.ofPlatform().start(runnable);
System.out.println(“pthread is Virtual ? : ” + pthread.isVirtual());
// なんとなく、スレッドが終了するまで待つ
pthread.join();
【2024年版】try catch finally を C++ で実現する
C++ には Java や C# のような try catch finally がありません(VC++の独自拡張は除く)。
いたってマジメに作りました。
今回使用しているヘッダ(on_scope_exit.h および try_finally.h)は文末に載せておきます。
品質の確保ができましたので、on_scope_exit.h および try_finally.h を v1.0.0 として公開します。
どんどん使ってください。
これらの機能を使うために、Boost とか入れなくてもいいです。2023/04/16 12:40 の版を v1.0.0 としました。
## 解法1 クラスインスタンスがスコープ外になるときに呼ばれるデストラクタを使う
“`cpp:test01.cpp
#include “on_scope_exit.h”
#include
#includeint main()
{
std::cout << "start" << std::endl; FILE *f = fopen("file.t
Open Libertyをオフライン環境でもZIPファイルから起動する
Open Libertyをオフライン環境で動作させたい場合に、ZIPファイルから起動する方法を記載します。
ただし毎回ZIPファイルを手動で展開したりアプリケーションをデプロイするのは面倒です。Liberty Maven pluginを活用しながらZIPファイル起動を試みます。
## 本記事で使用するコンポーネント
|コンポーネント名|バージョン|
|:–|:–|
|JDK|OpenJDK 17.0.9 (IBM Semeru Runtime Open Edition)|
|Open Liberty|24.0.0.1|
|Apache Maven|3.9.6|
|Liberty Maven plugin|3.10|“`shell
$ java -version
openjdk version “17.0.9” 2023-10-17
IBM Semeru Runtime Open Edition 17.0.9.0 (build 17.0.9+9)
Eclipse OpenJ9 VM 17.0.9.0 (build openj9-0.41.0, JRE 17 Mac OS
Java ラムダ式
とりあえず、分かりやすかったサイトをブックマークだけさせていただく。
https://www.sejuku.net/blog/22337
[Google Sheets API] Javaでスプレットシートの情報を取得する
Google Sheets API v4(Java)を使用して、スプレットシートの情報を取得する方法
についてご紹介します。セルの値を含め、スプレットシートが持つさまざまな情報を取得する方法について
説明したいと思います。スプレットシートの情報を取得する際には、取得したい情報を指定します。
この指定がない場合、必要でない情報(例えば全セルのサイズ等)も取得してしまうため、
レスポンスが膨大なデータになってしまいます。
そのため、リクエストに対する応答も遅くなってしまいます。***スプレットシートから特定の情報を取得したいけど、
どのような情報があるかわからない とか
ドキュメントは探してみたけど英語しかない とか
取得したい情報の指定がわからない など
の方が参考できるようにこの記事を書きました。
プログラムの実装方法を参考にするというよりは、
辞書としての意味合いで記事を参照していただけたら幸いです。***## 0. プログラムの実行
プログラム自体はすごくシンプルです。#### googleライブラリの読み込み
Google Sheets APIを使用する
【初めてのJava】コードリーディングしてみた(スレッド / タイマー)
## はじめに
Java習得の修行の一環として、Javaのタイマー機能(util.Timer)のソースコードを読み、シーケンス図にしてみました。https://github.com/openjdk-mirror/jdk7u-jdk/blob/master/src/share/classes/java/util/Timer.java
なお、例外フローと思われるものは反映させていません
また、シーケンス図として正確ではない箇所もあるかと思います。## シーケンス図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3669288/55c322c3-946d-ecb5-1420-c5161332d47e.png)## 感想
タイマーの使い方もそうですが、排他制御やスレッドの書き方など 色々と勉強になりました。JavaのTimer機能は使ったことがありません。
そこであえて使い方を調べずに、またソース中のコメントもあまり読まずに
ソースコードだけで何をしようとしているのかをつかも
自分でインストールしたJavaバージョンをSDKMANで管理する方法
# 概要
普段sdkmanでJavaを管理しているが、`sdk list java` で検索した中に自分の入れたいバージョンがない場合の対処方法の記事です。
# やり方
適当に必要なJDKをインストールします。どんなやり方でもいいです。
ここでは、OpenJDKのサイトから取ってきます。
以下のサイトから、ダウンロードします。 利用したいバージョンを環境に合わせて取得すれば良いです。自分はシリコンMacなので、`Mac/AArch64`を使います。
https://jdk.java.net/archive/今回は、19.0.1を使います。取得したtargzを解凍し、適当な場所に置きます。
“`shell
$ sudo mv ~/Downloads/jdk-19.0.1.jdk /Library/Java/JavaVirtualMachines/
“`次は、インストールしたsdkをSDKMANに認識させます。これだけです。ポイントは、`19.0.1-openjdk` のようにバージョンを先に書くことです。
“`shell
$ sdk install java
java static イニシャライザとstaticフィールド
## java static イニシャライザ
静的初期化ブロックは、括弧{}で囲まれ、前にキーワードstaticが付いているコードブロックです。
static イニシャライザは、クラスロードされる際に、実行されるブロックです。
## staticフィールド
staticフィールドはプログラムが実行される時に生成され、すべてのインスタンスが共有します。
## 実装
“`java
public class StaticTest {
public static void main(String[] args) {
System.out.println(AAA.m);
}
}class AAA {
static {
m = 300;
}
static int m = 100;
}
“`
## 実装結果
“`
100Process finished with exit code 0
“`
自動ミュート機能の実装:Discordボット開発【その④】
こんにちは。この記事は[**音声認識機能の導入:Discordボット開発【その③】**](https://qiita.com/blue_islands/items/5015b9d980dca22808ef)の続きの記事になります。
# 1. Discord Botの音声再生管理:自動ミュート機能の実装
Discordサーバーで音楽を再生する際、背景音楽としてのみ使用したい場合があります。そんな時、音楽再生中にユーザーが話すことを防ぐため、ボイスチャンネル内のメンバーを自動的にミュートし、再生が終了したらミュートを解除する機能が役立ちます。本記事では、Javaを使用してDiscord Botにこの機能を実装する方法を紹介します。
# 2. 使用技術
– **Java**: 実装言語
– **JDA (Java Discord API)**: Discord Bot開発用のライブラリ
– **LavaPlayer**: Java用の高機能なオーディオライブラリ# 3. クラスの概要
`TrackScheduler`クラスは、`AudioEventAdapter`を継承しており
Eclipseセットアップ(お勧めプラン)
個人的にJavaで eclipse 使いなと思ったときのメモ。
やっぱり本格的にJavaやるなら VSCode で Java より断然いいよね。
1. **eclipse 本体のダウンロード(eclipse本家から)**
https://www.eclipse.org/downloads/
Javaファイル編集の場合(おすすめ)
→ [Eclipse IDE for Java Developers]をダウンロード
サーブレットも作る場合
→ [Eclipse IDE for Enterprise Java and Web Developers]をダウンロード:::note info
Eclipse IDE for Enterprise Java and Web Developersを入れると、プロジェクトの新規作成で、動的ウェブアプリケーションを選んで、Servlet APIを別途用意しなくてもコーディングができたりする。
:::
2. **eclipse 日本語化**
Pleiadesプラグインをダウンロード
https:
eclipse Intellij 開発のショートカット
#### 元の場所に戻る・進む
– Eclipse
Alt + ← または →
– Intellij
Alt + ← または →
#### 選択した行を上/下に移動
– Eclipse
[Alt] + [↑/↓]
– Intellij
Alt + Shift + ↑/↓
Ctrl + Shift + ↑/↓
#### 選択した行をコピー
– Eclipse
Ctrl + Alt + ↑ or ↓
– Intellij
Ctrl + D
#### 選択した行を消去
– Eclipse
[Ctrl] + [D]
– Intellij
Ctrl + Y
#### ファイル検索
– Eclipse
Ctrl + Shift + R
– Intellij
Shift 2回連打
#### 型の検索ボックス表示
– Eclipse
Ctrl + Shift + T
– Intellij
Shift 2回連打
#### 行のコメントアウト
– Eclipse
Ctrl + /
– Intellij
Ctrl + /
#### 複数行のコメントアウト
– Eclipse
Ctrl + Shift + /
検証、BindingResult、BeanValidation
> – ウェブサービスはフォーム入力時にエラーが発生すると、最初からフォームを再入力するようにしてはならず、顧客が入力したデータを維持した状態でどんなエラーが発生したのか親切に知らせなければならない。
> – これに関してスプリングでは、Binding ResultとBean Validationを提供し、便利に検証処理を行うようにする。検証の種類は3つがある。
| 検証の種類 | 説明 |
| — | — |
| 1.タイプ検証|タイプによる検証
ex.数字入力をすべきところに文字を入力していないか |
| 2. フィールド検証 | フィールドによる検証
ex.商品名:必須、空白X
価格:1000以上100万以下
数量: 最大 9999 |
| 3.特定フィールドの囲を超える検証|複合的な条件を考慮して検証
ex.価格*数量の合計が10,000ウォン以上なのか|# BindingResult
– 検証する@ModelAttribute のすぐ後ろに記す。
– Binding Resultを使用すると、1.タイプ検証でエ
java.lang.IllegalStateException: Unbound values in registryエラーで悩まされた
# エラー内容
:::note alert
java.lang.IllegalStateException: Unbound values in registry ResourceKey …
:::
というエラーの対処に悩まされた。# 本文だよ
ごたくはいいからはよ解決方法見せろよって方は
[解決チャプター](#解決)まで飛んでください[TurtyWurty様](https://www.youtube.com/@TurtyWurty)の動画([1.20 Minecraft Forge Modding Tutorial – Ore Generation](https://www.youtube.com/watch?v=aOAavvVzHI8))を参考にして
鉱石生成のコードを書いたのだが
先程の[エラー内容](#エラー内容)に記述した通りエラーが出た。
周りを見渡しても英語情報だし…
しょうがないのでTurtyWurty様のGithubを見てみた。
configured_feature…placed_feature。
アヤシイところはなかった。
軽くggって出てきたs
ブラックジャック実装
ブラックジャックをやったことがないから、そもそもルールをしらない…
掛け金の上限は設定してなくて、プレイヤー側が負けても損失はでない
優しいブラックジャックにしました。“`java
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println(“賭けますか? yes:y or no:n”);
String select = scan.next();int bet =0;
if(“y”.equals(select)) {
System.out.println(“賭け額を入力してください:”);
int betNum = scan.nextInt();
bet = betNum;}
System.out.println(“ゲームスタート”);
List
deck = new ArrayList<>(52); shuffleDeck(deck);
【Java Gold】(1Z0-816-JPN) 合格体験記
## はじめに
Java Goldに合格したので、合格までの過程を記載します。
(取得してから約3か月経ちましたが…)Oracle社が提供しているJava Gold以外のJava資格の合格の記事も書いています。↓
https://qiita.com/tt8811/items/2c01165cb885967bccb8
https://qiita.com/tt8811/items/141858ab7acfe88baa8d
## スペック
* Java Gold合格の約2か月前にJava Silverを取得
* Java開発経験なし## 使用参考書
* 徹底攻略Java SE 11 Gold問題集[1Z0-816]対応(今回も黒本メイン)
→Goldは出題範囲が広いため、黒本だけでは少し物足りない感じだった
NullPointerException vs IllegalArgumentException
# 引数の値が null だったときに、投げる例外はどちらが正しいのか?
:::note
まとめ
結論 -> どちらでも問題ない
JavaDocに記載されているとおり、どちらの状況も当てはまるから
> **IllegalArgumentException**
> 不正な引数、または不適切な引数をメソッドに渡したことを示すためにスローされます。> **NullPointerException**
> オブジェクトが必要な場合に、アプリケーションがnullを使おうとするとスローされます。
:::## よく見かけるコードたちの例
“`java
public void setterMethod(Object par) {
if(par == null) {
throw new NullPointerException(“par is null”);
}
// do something…
}
“`
“`java
public void setterMethod(Object par) {
if(par == null) {
Float型の標準出力の有効数字のデフォルトはなぜ6桁なのか
—
Float型の標準出力の有効数字のデフォルトはなぜ6桁なのか
—**風船ガム**
イチゴ味の風船ガムを食べてました。
くちゃくちゃ味わい、ふくらます。
口に広がる甘酢っぱさ。
フルーティーが鼻をつつく。何回かそれを繰り返していると ふと
どれくらい大きくなるのだろうと
思いました。おもいっきり息を吐き
風船ガムをふくらませました。ドンドン大きくなるガム。
破けることなく大きくなり
ついに私は空を飛びました。ああ、でも残念なことに
私はずっと上を向いたまま。下に広がる素敵な景色は見れません。
「私はどこまで浮かびつづけるのでしょうか」
浮かびながら空に聞くのでした。
**目次**
[1. そもそもFloat型って何?](#1-そもそもfloat型って何)
[2. Float型の標準出力の例](#2-float型の標準出力の例)
[3. なぜデフォルトは6桁なのか](#3-なぜデフォルトは6桁なのか)
[4. おわりに](#4-おわり