- 1. JavaSilver勉強法「実務未経験」
- 2. xampp Tomcat 動ているよな。
- 3. 724. Find Pivot Index -LeetCode 解答メモ
- 4. Java CLIアプリケーションからAzure ADB2Cにアクセスして認証する
- 5. 【ハマったので備忘録】Eclipse2022にTomcat10をインストールする手順
- 6. Java21で正式リリースの Virtual Thread を使ってみた(その2)
- 7. AWS Cognitoで認証したJWT(トークン)の有効性チェック
- 8. 【java+spring boot】ローカルでファイル添付処理を実装してみた:読み解き(1)
- 9. 【java + spring boot】ローカルでファイル添付処理を実装してみた
- 10. Java21で正式リリースの Virtual Thread を使ってみた(その1)
- 11. 【2024年版】try catch finally を C++ で実現する
- 12. Open Libertyをオフライン環境でもZIPファイルから起動する
- 13. Java ラムダ式
- 14. [Google Sheets API] Javaでスプレットシートの情報を取得する
- 15. 【初めてのJava】コードリーディングしてみた(スレッド / タイマー)
- 16. 自分でインストールしたJavaバージョンをSDKMANで管理する方法
- 17. java static イニシャライザとstaticフィールド
- 18. 自動ミュート機能の実装:Discordボット開発【その④】
- 19. Eclipseセットアップ(お勧めプラン)
- 20. eclipse Intellij 開発のショートカット
JavaSilver勉強法「実務未経験」
Java Silver SE11に合格したので、勉強法の忘備録
# 勉強期間と勉強時間
2か月
100時間くらい(土日はやってない)# プログラミング歴
java 半年# 勉強法
黒本をひたすら解き続ける(**特に12章、13章**)
わからない問題はすぐ答えをみる
多次元配列の問題はコードを書いてデバックする
コンパイルエラー、例外発生の問題は自分でコードを書いて
直してみる例外の種類を全部覚える(検査例外と非検査例外)
interface,継承,ポリモフィズム,static修飾へのアクセスは
コードを書いて理解する(**超超超頻出問題**)# 使った参考書等
黒本
すっきりわかるJava(文法の確認くらいでしか使っていない)
Udemiy 【Java-基礎】完全未経験からの基礎入門講座(丁寧解説/豊富な図解/ハンズオン/Java Silver試験対応)
https://www.udemy.com/course/uz-java-kiso/
黒本で弱点の部分をすっきりわかるJavaやUdemyの動画教材で勉強した
# まとめ
xampp Tomcat 動ているよな。
ちょっと苦労したけど、ランニングだけは、行います。
![2024-02-05 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3625232/1cc6eb13-6ac4-f75c-2456-d928417d5052.png)tomcat の場合javaからすべての権限を自分の物にしなければなりませんが。
ただし、使うことを知りません。
724. Find Pivot Index -LeetCode 解答メモ
## Find Pivot Index
### 問題文
整数 num の配列を指定して、この配列のピボット インデックスを計算します。ピボット インデックスは、インデックスの厳密に左側にあるすべての数値の合計が、インデックスの厳密に右側にあるすべての数値の合計と等しいインデックスです。
インデックスが配列の左端にある場合、左側には要素がないため、左側の合計は 0 になります。これは配列の右端にも当てはまります。
一番左のピボットインデックスを返します。そのようなインデックスが存在しない場合は、-1 を返します。
### コード
“`java
class Solution {
public int pivotIndex(int[] nums) {
//①
int leftSum =0, rightSum=0;
for (int n : nums){
rightSum += n;
}
//②
int i=-1;
//③
Java CLIアプリケーションからAzure ADB2Cにアクセスして認証する
Java CLIアプリケーション(not Webアプリケーション)からADB2Cにアクセスして認証する方法 3つ。
実装には[MSAL for Java](https://github.com/AzureAD/microsoft-authentication-library-for-java/)を使う。
[MSAL for .NET](https://github.com/AzureAD/microsoft-authentication-library-for-dotnet) を使えば.NETアプリやUnityからも同様に認証できるはず。
—-
## 1. インタラクティブなトークン取得
認証には「OAuth 2.0 認可コード フロー + PKCE」が使用される。
MSAL4JがローカルホストでWebサーバーを動かして、それがADB2Cが連携することで、ブラウザーベースの認証が行われる。
認証するときにブラウザーが開かれ、ADB2Cのログイン画面が表示される。
ユーザーIDとパスワードを入力すると、ローカルホストのWebサーバーに認可コードが渡されるので、MSAL
【ハマったので備忘録】Eclipse2022にTomcat10をインストールする手順
Eclipse2022にTomcat10が入っていなかったので、インストールする手順をまとめました。
いろいろ手こずったので、備忘録として残します。# ローカル環境
OS:Windows11
Eclipse 2022# EclipseにTomcat10.0.x系を入れておかないと、以降のバージョン10.1.x系がインストールできない
2024年2月4日時点では、Tomcat10のバージョンは、10.1.x系になっています。
私のローカル環境には。Tomcat9までしか入っておらず、最新バージョンのTomcatであるver10.1.xを入れようとするとエラーになりました💦![10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/cb97446b-85ee-3945-a367-b35554c4d393.jpeg)
エラーの理由は、Tomcatのバージョン10.0.x系をEclipseに入れていないからですね。
![11.jpg](https://qiita-ima
Java21で正式リリースの Virtual Thread を使ってみた(その2)
Java19でプレビュー、Java21で正式リリースとなった Virtual Thread(仮想スレッド)を使ってみた。続編。
JNIに追加された関数を使ってみた。“`java: ThreadExecutor.java
package pkg;public class ThreadExecutor {
/*
* JNI C言語ライブラリのロード
*/
static {
System.loadLibrary(“JNIVThread”);
}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.isV
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 を使ってみた(その1)
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 + /