- 1. Spring Boot 3 x Spring Security 6 でログイン画面を複数作成する際のSecurityFilterChainの書き方
- 2. Spring Modulithでモジュラモノリスライクな依存関係のコントロールを試してみた
- 3. 【Spring Boot入門】#3 バリデーション(入力チェック)
- 4. 【Spring Boot入門】#2 登録機能を作成する
- 5. WireMockでさまざまな障害パターンをシミュレーションする
- 6. JavalinとThymeleafでWebアプリケーションを構築する方法
- 7. StringをCharにしたら処理速度が倍になった
- 8. 【Java】【TIPS】クラス名をもとにオブジェクトを生成する
- 9. KeyCloak と LDAPを統合する自動化の備忘録
- 10. TreeSetとHashSetの比較整理およびアルゴリズムの問題を解く
- 11. JavalinをTomcatで動かす方法(2024/10時点)
- 12. 【Spring Boot入門】#1 Spring Boot + Thymeleafで新規登録画面を作成する
- 13. 【Spring Boot入門】#0 事前準備
- 14. 開発経験ゼロからの挑戦!AzureFunctionsを使った処理効率化方法と成功するまでの道のり
- 15. JSPとServletについて
- 16. Spring Bootプロジェクトのリファクタリング
- 17. Spring Boot アノテーション一覧
- 18. Dependency Injection
- 19. Java Jsp サーブレット フォームの値取得(POST)。出力。
- 20. Mustacheテンプレートを使用したソース自動生成
- 21. 韓国語の形態素解析を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はサーバー側でコンパイル・実行され、クライ
Spring Bootプロジェクトのリファクタリング
## はじめに
進行中のプロジェクトでリファクタリングを担当しています。使用しているフレームワークはVue.jsとSpring Bootで、クライアントとサーバーはREST API(JSONフォーマット)で通信しています。
リファクタリングの経験がないため、どのような手順で進めればよいかを調査しながら、成果と学びを記録に残していきたいと考えています。## リファクタリングの目的
リファクタリングの必要性を明確にし、以下の目的を目指します。**1. コードの可読性向上:** コードを整理し、後から変更や追加がしやすい構造にする。
**2. 保守性向上:** メンテナンスが容易で、エラーやバグが発生しにくい構造を目指す。
**3. パフォーマンスの最適化:** 不必要な計算や処理を取り除き、効率的に動作させる。## リファクタリングの進行手順
### 1. 現状と課題の分析 ###
**・コードレビュー:** 画面のバックエンド側のソースコードに対してコードレビューを実施し、改善が必要な箇所を洗い出す。
**・課題リストの作成と優先度の決定:** リファクタリング対象箇所をリス
Spring Boot アノテーション一覧
Spring Bootのアノテーションの一覧です。
間違い等あればご指摘ください。@SpringBoot
メインメソッドを含んだクラスに付与すると「SpringBootアプリケーション」と認識される
@Controller
SpringMVCで、アプリケーション層のコントローラーに付与
Javaクラスに付与すると、このクラスはコントローラーと認識してくれる。
thymeleafを使用したHTMLをレスポンスするときに使用@RestController
jsonやxmlをレスポンスするときに使用
RestAPI、もしくはRestfulAPIを呼び出す時はReact.jsなどのFEから呼び出す必要があるDependency Injection
@Autowired
依存性の注入
インスタンス生成するクラスに付与@Component
@Controller・@Service・@Repogitory・@RestContro
Java Jsp サーブレット フォームの値取得(POST)。出力。
### ■完成画面
・Eclipse使用
1:入力画面(insert.jsp)
![スクリーンショット (106).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/e80c779a-4ce2-bdda-5cdf-b60ff572e7da.png)
2:処理(ShainInsertComplete.java)
![スクリーンショット (107).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/76ddeafe-ac07-650a-8b3b-d53b80e2cb96.png)### ■ソースコード
・insert.jsp
“`jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
Mustacheテンプレートを使用したソース自動生成
# はじめに
何十年も前からプログラムソース自動生成は行われてきました。今でこそ、生成AIが自動生成してくれますが、昔はルールベースで、テンプレートエンジンと呼ばれるライブラリがその役割を担っていました。**Apache Velocity**等はHTMLを生成するJSP等の代わりに使用するエンジンとして使用されるケースも多かったですが、私が携わっていたプロジェクトではソース自動生成ツールのテンプレートとして使用していました。また、多くのOSSでもテンプレートエンジンは使用されており、例えば**OpenAPI Generator**は内部に**Mustache**を使用しています。
今回、私もMustacheを使用してソース自動生成を作ってみたのですが、多少ハマったため、Mustacheについてご紹介いたします。尚、今回はソース自動生成を目的としたMustacheの利用になりますが、Mustacheは**Velocity**や**Thymeleaf**等と同様に動的HTMLを生成することもでき、**SpringBoot**でもサポートしてます。ただ、今回はあくまでプログラムソース
韓国語の形態素解析をJavaで行う
# 概要
韓国語の形態素解析器はいくつか存在するようですが、「open-korean-text」がよさそうでした。
https://github.com/open-korean-text/open-korean-text?tab=readme-ov-file
# maven
“`xml
org.openkoreantext
open-korean-text
2.1.0
“`# サンプルコード
“`java
package hello;import java.util.List;
import org.openkoreantext.processor.KoreanTokenJava;
import org.openkoreantext.processor.OpenKoreanTextProcessorJava;
import org.open