- 1. すべてのモニターのスクリーンショットを1つのファイルに保存したい
- 2. Javaの開発環境を構築
- 3. SDKMANのJDKをSystem JDKとしてmacOSに誤認させる
- 4. 特定のFeignClientに専用のErrorDecoderを利用させる
- 5. Spring Security(認可設定)の備忘録
- 6. Spring Boot 3 x Spring Security 6 でログイン画面を複数作成する際のSecurityFilterChainの書き方
- 7. Spring Modulithでモジュラモノリスライクな依存関係のコントロールを試してみた
- 8. 【Spring Boot入門】#3 バリデーション(入力チェック)
- 9. 【Spring Boot入門】#2 登録機能を作成する
- 10. WireMockでさまざまな障害パターンをシミュレーションする
- 11. JavalinとThymeleafでWebアプリケーションを構築する方法
- 12. StringをCharにしたら処理速度が倍になった
- 13. 【Java】【TIPS】クラス名をもとにオブジェクトを生成する
- 14. KeyCloak と LDAPを統合する自動化の備忘録
- 15. TreeSetとHashSetの比較整理およびアルゴリズムの問題を解く
- 16. JavalinをTomcatで動かす方法(2024/10時点)
- 17. 【Spring Boot入門】#1 Spring Boot + Thymeleafで新規登録画面を作成する
- 18. 【Spring Boot入門】#0 事前準備
- 19. 開発経験ゼロからの挑戦!AzureFunctionsを使った処理効率化方法と成功するまでの道のり
- 20. JSPとServletについて
すべてのモニターのスクリーンショットを1つのファイルに保存したい
マルチモニター環境で、すべてのモニターのスクリーンショットを取得し、1つのファイルscreenshot.pngに保存するサンプルです。
“`java
public void screenShot() throws AWTException, IOException {
Rectangle rectangle = new Rectangle();
for (GraphicsDevice graphicsDevice : GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()) {
for (GraphicsConfiguration graphicsConfiguration : graphicsDevice.getConfigurations()) {
rectangle = rectangle.union(graphicsConfiguration.getBounds());
}
}Robot rob
Javaの開発環境を構築
Javaの学習を始めたのでアウトプット目的で書き記していきます。
使用するフレームワークはSpring Boot、
開発環境はIntekkiJ Ideaを使用します。## Spring Bootについての説明から。
一言でいうならば、**設定が難しいSpringをもっと手軽に使えるようにしたもの**です。Springとは、 Webアプリケーションを作るためのフレームワークで広く使われています。
しかし、細かい設定が必要だったり、ウェブサーバーの準備をしたりなど自由度が高い反面、初心者には難しいです。対して、Spring Bootは雛形があり、初期設定を自動生成してくれたり、データベースやウェサーバーの設定が揃っていたりと初心者でも簡単に開発を始めることができます。
以上にをまとめると、
Spring Bootは初心者や小規模プロジェクト向け
Springha高度なカスタマイズが必要な大規模プロジェクト向けSpring BootはSpringの利点を継承しつつ、初心者でも簡単に開発を始められるが、自由度はSpringには劣る。
ということになります。
## In
SDKMANのJDKをSystem JDKとしてmacOSに誤認させる
# なぜ誤認させたい?
– SDKMANをセットアップすると`JAVA_HOME`をSDKMANがよしなにしてくれるようなる
– `/usr/bin/java`, `/usr/libexec/java_home`などが変わらずSystem JDKの場所である`/Library/Java/JavaVirtualMachines`配下のJDKを参照する
– XcodeのScriptPhaseなど**JAVA_HOMEを見ず、強制的にSystem JDKを参照する**ライブラリやプラグイン類がいる
– どうにかしてPCにinstallするJDKをSDKMANだけに寄せたいのでSDKMANでinstallしたJDKをSystem JDKに誤認させたい# SDKMAN以外のJDKはどうなっているか
– システムのJDKは`/Library/Java/JavaVirtualMachines`にinstallもしくはsymbolic linkを貼ったものであるパターンが多い
– [jdk.java.net](https://jdk.java.net/)からinstallする場合、tarフ
特定のFeignClientに専用のErrorDecoderを利用させる
# 背景
SpringBootでAPIを使用しようと思ったらRestTemplateを使うと思いますが、RestTemplateはメンテナンスモードに入ってしまい、他のClientに変えざるおえない人も多数だと思います。私もあるプロジェクトで変える必要発生し、FeignClientに変更しました。
ここで特定のエラー時はFeignExceptionを返すのではなく、自作例外を返却したい時がありました。
# 環境
Java:17
Gradle:8.5
SpringBoot:3.1.6
spring-cloud-starter-openfeign:4.0.4# 最初にやってみたこと
ErrorDecoderを自作しそれをBean化させて特定のFeignClientに装着させれば可能です。
※基本的なFeignClientの使い方は割愛します
“`Java:CustomDecoder.java
@RequiredArgsConstructor
public class CustomDecoder implements ErrorDecoder {
private fin
Spring Security(認可設定)の備忘録
# はじめに
解体新書という書籍にて11章のSpring セキュリティの内容について学習中に
画面表示の認可(権限による画面表示の切り替え)が実現不能でした。
一般ユーザでも管理者限定にしているボタンが出現。。
ソースとしてはHTMLに記載を追加するのみでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1041138/6aa665e6-1aad-288a-cdca-3336cff82dfb.png)# ■menu.html
“`java
Spring Boot 3 x Spring Security 6 でログイン画面を複数作成する際のSecurityFilterChainの書き方
## 概要
ユーザー向け画面と管理画面の2つを作成したいケースがあると思います。
その際に、SecurityFilterChainの書き方で迷ったので備忘します。
SpringBoot3(SpringSecurity6)の記事が少なかった点と、
SpringBoot2の時と比べて差異があったため、記事にしました。## まとめ
* `SecurityFilterChain` で `securityMatcher` を利用する
* `Order` の優先順位に注意する。## サンプルコード
ユーザー向け画面のSecurityFilterChain。
“`java
public class UserSecurityConfig {@Bean
@Order(1)
public SecurityFilterChain userSecurityFilterChain(HttpSecurity http) throws Exception {// URL認可
http.securityMatcher(“/user/
Spring Modulithでモジュラモノリスライクな依存関係のコントロールを試してみた
# Spring Modulithとは
> Spring Modulith は、Spring Boot を使用してドメイン駆動型のモジュール型アプリケーションを構築するための独自のツールキットです。Spring Boot がアプリケーションの技術的な配置について独自の見解を持っているのと同じように、Spring Modulith は、アプリを関数に構造化する方法について独自の見解を実装し、個々の論理部分が相互にやり取りできるようにします。その結果、Spring Modulith を使用すると、開発者は更新が容易なアプリケーションを構築して、時間の経過とともに変化するビジネス要件に対応できるようになります。https://spring.pleiades.io/spring-modulith/reference/
# 本記事の内容
Spring Modulith の依存関係をコントロールする機能を試してみた記録です。
先日参加したJJUG CCC 2024 Fallで紹介されていて興味が湧き試してみました◎https://www.docswell.com/s/Simplex/ZJ
【Spring Boot入門】#3 バリデーション(入力チェック)
## はじめに
自身の知識のアウトプットも兼ねて、新人研修用に作成した記事となります。Spring Bootを学び始めた方を対象とした内容になっています。登録画面の表示~登録機能の作成については、前回の記事を参照ください。
https://qiita.com/ioaio/items/ba78d173bdc0e283a34f
## 概要
前回、ユーザーが入力した情報をデータベースに登録するところまで確認しました。しかし、今のままではフォームから送られてくるデータが適正なものかのチェックが行われていないません。
例えば、従業員数に数字以外の値を登録しようとした場合を見てみましょう。DB上は従業員数を数値型で管理している為、この状態で登録しようとすると例外がスローされます。(`java.lang.NumberFormatException` はアプリケーションが文字列を数値型に変換しようとしたとき、文字列の形式が正しくない場合にスローされます。)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw
【Spring Boot入門】#2 登録機能を作成する
## はじめに
自身の知識のアウトプットも兼ねて、新人研修用に作成した記事となります。Spring Bootを学び始めた方を対象とした内容になっています。新規登録画面の作成と表示については、前回の記事を参照ください。
https://qiita.com/ioaio/items/b60055f5b334e8e313de
## 概要
企業情報の登録機能を作成していきます。
クライアントから渡ってきた企業情報をDBに追加し、最後に登録完了画面を返す機能を作成します。#### 完成イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3917178/f199291d-ebd7-3c46-8e95-28ca693a0d3c.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3917178/aae161e8-f06c-27da-8c45-fe7edea0d97a.png)
![
WireMockでさまざまな障害パターンをシミュレーションする
# はじめに
どうも、来年から社会人エンジニアになるNMSです。
モックするAPIの障害が起因の例外を正しく処理できるかテストしたいときに、WireMockを使えば簡単に実現できたので、自分用のメモとして記録しておきたいと思います。
以下は、WireMockをstandalone JARで実行し、スタブをHTTP経由で設定する場合のJSONで例を示しています。
スタブの設定方法自体は記載しないので、そこも知りたい方は[公式ドキュメント](https://wiremock.org/docs/stubbing/)、または他の方の記事をご覧ください。# 障害パターン
## レスポンスの遅延・タイムアウト
`fixedDelayMilliseconds`に遅延させたいミリ秒数を設定するだけ。
“`json
{
“request”: {
“method”: “GET”,
“url”: “/timeout”
},
“response”: {
“status”: 200,
“fixedDelay
JavalinとThymeleafでWebアプリケーションを構築する方法
# 概要
この記事では、JavalinとThymeleafを使用して簡単なWebアプリケーションを構築する方法について解説します。Javalinはシンプルで軽量なJava用Webフレームワークで、ThymeleafはJavaベースのテンプレートエンジンとして、HTMLファイル内で変数をレンダリングするのに役立ちます。
# 必要なファイルと設定
以下の4つのファイルを使用します:
– `pom.xml`: Mavenのプロジェクト設定ファイル
– `App.java`: Javalinアプリケーションのエントリーポイント
– `ThymeleafRenderer.java`: JavalinでThymeleafを設定するためのレンダラー
– `index.html`: レンダリングするHTMLテンプレート## 1. `pom.xml`の設定
まず、プロジェクトの依存関係を定義するために`pom.xml`ファイルを設定します。Thymeleaf、Javalin、その他の必要なライブラリを追加します。
“`xml
StringをCharにしたら処理速度が倍になった Stringを甘く見ていてめっちゃハマってしまったので戒めに残しておく
この問題 https://atcoder.jp/contests/abc375/tasks/abc375_c## 解答コード
“` diff_kotlin
fun main(){
val n = readln().toInt()
– var pre: MutableList> = mutableListOf()
– var next: Array> = Array(n){Array(n){“”}}
+ var pre: MutableList> = mutableListOf()
+ var next: Array> = Array(n){Array(n){‘.’}}
repeat(n) {
pre.add(
– (readln().map { it.toString() })
+ (readln().toLi
【Java】【TIPS】クラス名をもとにオブジェクトを生成する
# 例
“`java:クラス名を元にオブジェクトを生成する例
Example example = (Example) (Class.forName(className).newInstance();
“`
# ポイント
1. `Class`クラスの`forName()`メソッドを用いて**クラスオブジェクト**を生成する
1. `String`型の変数`className`では、完全修飾クラス名を指定する
1. 生成したクラスオブジェクトの`newInstance()`メソッドを実行して、指定したクラス名のオブジェクトを得る
1. 戻り値は`Object`型なので、キャストする
1. `InstantiationException`、`IllegalAccessException`又は`ClassNotFoundException`の例外を発生する可能性があるので、例外処理をすること
KeyCloak と LDAPを統合する自動化の備忘録
# はじめに
KeyCloakのユーザーレポジトリとしてLDAPを構成するスクリプトを作成するのに苦労したことを備忘録として残します。
以下のページの構成を拡張するような内容となります。
https://qiita.com/keniooi/items/050b5ae0d8f50bf63c84
https://qiita.com/keniooi/items/cfe2b8ef692b23500a15
https://qiita.com/keniooi/items/724cd8cc191096d6da23
# KeyCloakの管理コンソールからLDAPを構成
http://localhost:8080/admin にログインして pdprof の Realm(左上)を選択し、User federation (左下) をクリック、ここで Add Ldap providers をクリックしてLDAPを構成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262366/3fd
TreeSetとHashSetの比較整理およびアルゴリズムの問題を解く
### HashSetとTreeSetの検索速度比較
– **HashSet**
`HashSet`は内部で**ハッシュ化**によってデータを保存します。各要素の位置は**ハッシュ関数**で計算され、データの順序は保証されませんが、平均**O(1)**の時間で素早く検索できるため、特定の要素が存在するかどうかを確認する場合に非常に効率的です。– **TreeSet**
`TreeSet`は**二分木構造**(実際には**赤黒木構造**)でデータを**整列された状態**で保存します。このため、要素を追加または削除する際には**O(log n)**の時間がかかり、検索も同様に**O(log n)**の時間が必要です。このような特性から、整列が必要な場合や範囲検索をする場合には適していますが、単純な存在確認では`HashSet`よりも遅くなります。#### HashSet vs TreeSetの選択理由
– このアルゴリズムでは**整列は必要なく**、**特定の数が存在するかだけを確認**すればよいため、`HashSet`が最も適しています。
– 要素を自動的に整
JavalinをTomcatで動かす方法(2024/10時点)
通常、JavalinはJettyサーバーと密接に統合されているため、Tomcatで直接動作させるのが難しいとされています。しかし、Javalinのサーブレット機能を活用することで、Tomcatコンテナ上でもJavalinを動作させることが可能です。この方法を使って、Tomcat上でJavalinアプリケーションを実行する手順をまとめました。
## 必要な環境と前提条件
– Java 17
– Apache Tomcat 10.1
– Maven# プロジェクト設定
まず、`pom.xml`でJavalinと必要な依存関係を定義します。重要な点として、`Javalin`から`Jetty`の依存を排除し、TomcatでサポートされているサーブレットAPIを使用します。
## `pom.xml`
“`xml
【Spring Boot入門】#1 Spring Boot + Thymeleafで新規登録画面を作成する ## はじめに
自身の知識のアウトプットも兼ねて、新人研修用に作成した記事となります。Spring Bootを学び始めた方を対象とした内容になっています。開発環境や依存関係については、前回の記事を参照ください。
https://qiita.com/ioaio/items/10af72b06252541ca1a7
## 概要
企業情報登録画面を作成します。
クライアントからのリクエスト(URL)を元に画面を表示する為のControllerの作成と、遷移先である画面をThymeleafで作成していきます。#### 完成イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3917178/a4da3148-81be-3bd1-f667-14b2b29fde1e.png)## パッケージ構成
赤枠で囲ったパッケージ、クラス、HTMLファイルを今回作成していきます。![image.png](https://qiita-image-store.s3.ap-northeast-1
【Spring Boot入門】#0 事前準備
## はじめに
自身の知識のアウトプットも兼ねて、新人研修用に作成した記事となります。Spring Bootを学び始めた方を対象とした内容になっています。## 環境要件
“`none:環境要件
OS:Windows 10 Pro
Java:17.0.2
Spring Boot:3.3.4
DB:XAMPP(MySQL 10.4.21-MariaDB)
IDE:Spring Tool Suite 4(STS)
“`## 依存関係
新規プロジェクト作成時に、依存関係(機能)を追加します。
今回追加した依存関係は以下の通りです。#### Lombok
Javaプログラミングにおける便利なライブラリで、コードの冗長性を減らし、開発効率を向上させます。アノテーションを用いることで、getterやsetter、toStringメソッドなどのボイラープレートコードを自動生成し、手動での記述を不要にします。#### MySQL Driver
Spring BootアプリケーションがMySQLデータベースへ接続するために使用されるJDBCドライバです。MySQL Connector/
開発経験ゼロからの挑戦!AzureFunctionsを使った処理効率化方法と成功するまでの道のり
## はじめに
こんにちは!AgVenture Labの荒井です。Azure Functions、皆さんはご存知ですか?Azure FunctionsはMicrosoftのクラウドサービスで、サーバレス環境でコードを実行できる便利な仕組みです。
実は、私はシステムエンジニアの経験はあるものの、アプリ開発についてはほぼ初心者。
それでもAzure Functionsを使って既存のプロダクトの処理効率化に挑戦してみました。この記事では、そんな初心者がAzure Functionsを使いこなそうと奮闘した体験談をお届け
します。
これを読んでいただければ、初めての方でも自信を持って一歩を踏み出せるはずです!:::note info
本記事のポイント
・Functionsを用いたサーバ(Java)の処理効率化(非同期化)
・JavaCVでのffmpeg機能実行
・Azure Queue Storageの活用
:::## 目次
1. [Azure Functionsの利用方法](#azure-functionsの利用方法)
2. [なぜAzureFunctionsを選んだの
JSPとServletについて
# JSPとServletについて
## 概要
JSP(JavaServer Pages)とServletは、JavaでWebアプリケーションを開発するための主要な技術です。Javaをバックエンドとして使い、サーバーサイドで動的にコンテンツを生成することで、クライアントに情報を提供します。JSPはHTMLにJavaコードを埋め込むためのテンプレートエンジンで、ユーザーインターフェースの設計に使われることが多く、Servletはサーバーサイドロジックを記述するためのJavaプログラムです。
## JSPとは
JSP(JavaServer Pages)は、HTMLページ内にJavaコードを埋め込むことで、動的なWebページを生成するテンプレート技術です。JSPは、Javaコードを直接埋め込んで処理するため、ユーザーのリクエストに応じた動的コンテンツ生成に適しています。
### JSPの特徴
– **HTMLとJavaの混在**: JSPはHTMLコードにJavaコードを埋め込んで使用します。
– **サーバーサイドでの処理**: JSPはサーバー側でコンパイル・実行され、クライ