2021-01-01から1年間の記事一覧

Elasticsearchのindex templateを試す

index templateを使うと、インデックスの各種設定値をあらかじめ決めておくことができます。 https://www.elastic.co/guide/en/elasticsearch/reference/current/index-templates.html index templateは、複数のcomposed templateを含めることができます。co…

Elasticsearchのクラスタ構成を試す

クラスタを組んでみます。 ノードは3つで、それぞれをmaster-eligable、data、Ingestの役割を割り当ててみます。 Node | Elasticsearch Guide [7.16] | Elastic 環境はdocker-composeを使いました。 $ docker-compose --version docker-compose version 1.29…

Qodanaを試す

JetBrains製の静的解析ツールが出ていたので、試してみました。 今の所、以下の言語に対応しているみたいです。Java以外はEAPなんですね。 Java PHP (EAP) Python (EAP) JavaScript (EAP) 今回はJavaで試します。 Qodana for JVM Qodana for JVM はサーバー…

maven-resources-pluginのエンコーディングの警告に対処する

プロジェクトをビルドしていたらふと気になったので。 こんな警告が出ていました。 [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ direct-core --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resourc…

MavenのArchetypesについて

MavenのArchetypesについて書いたつもりで書いていなかったので、書きます この手の内容はよく忘れるので腰を据えてブログに書かないと覚えられない... ドキュメントはこちら Introduction to Archetypes Maven Archetype Plugin Goals archetype:generate …

ServletContextの初期化を捉える

ServletContext 公式の説明 https://jakarta.ee/specifications/servlet/5.0/jakarta-servlet-spec-5.0.html#servlet-context 簡単にまとめてみると サーブレットから、ウェブアプリケーション全体へのアクセス手段を提供するインターフェイス 例えば、リソ…

Ubuntu でキーマップを変更する

普段使用しているUbuntuのキーボードの設定を変えようと思いまして、その記録です やりたいことは、JIS配列キーボードのスペースキー左右にある「英語」、「かな」キーを押して、ローマ字入力、日本語入力を切り替えるようにすること 手元のキーボードだと「…

Jakarta Servlet 5.0 のFilterを使ってみる

フィルターについて調べてみます。 公式のドキュメントはこれ https://jakarta.ee/specifications/servlet/5.0/jakarta-servlet-spec-5.0.html#filtering ざっくりとフィルターとは何かというと Servlet にリクエストが到達する、またはレスポンスがクライア…

Jakarta Servlet 5.0 リクエスト処理時の例外

Servlet がリクエストを処理中に例外をスローするとどうなるのか? 仕様ではこちらで言及されている模様 https://jakarta.ee/specifications/servlet/5.0/jakarta-servlet-spec-5.0.html#exceptions-during-request-handling 内容としては Servlet はリクエ…

Jakarta Servlet 5.0 初期化時の例外

Jakarta Servlet 5 のライフサイクル中における例外について 例外の種類はぱっと見 ServletException と UnavailableException の2つがある ServletException を継承しているのが UnavailableException ServletException ▲ │ │ │ │ UnavailableException ま…

Jakarta Servlet 5.0 の Servlet Life Cycle

Jakarta Servlet 5 の Servlet Life Cycle に関して読んだのでその内容を軽くまとめる https://jakarta.ee/specifications/servlet/5.0/jakarta-servlet-spec-5.0.html#servlet-life-cycle Servlet にはライフサイクルがある ロードされインスタンス化される…

Jakarta Servlet 5.0 を web.xml なしで動かす

Jakarta Servlet を web.xml なしで動かしたい 何故かうまく行かず5時間くらい苦戦したが、動かせたのでとりあえずメモを 環境 $ java -version openjdk version "11.0.11" 2021-04-20 OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)…

Jakarta Servlet 5.0 をとりあえず動かす

Jakarta Servlet 5.0 Jakarta Servlet 5.0 をとりあえず動かしたい Spec https://jakarta.ee/specifications/servlet/5.0/ Maven プロジェクトの作成 Maven Archetype Pluginで雛形を作る Maven Archetype Plugin https://maven.apache.org/archetype/maven-…

Eclipse Jetty を起動させてみた

Eclipse Jetty Jakarta Servlet 5 を動かしたいので構築する ガイド https://www.eclipse.org/jetty/documentation/jetty-11/operations-guide/index.html Getting Started を順に読んで実施する 最終的に Jakarta Servlet 5 が動かせる環境が出来上がるのを…

【メモ】OAuth 2.0 におけるアクセストークンの種類

アクセストークンは次の2種類に分類できる reference token 認可サーバーでしか検証できないトークン(ランダムな文字列など) リソースサーバーはトークンを受け取るたびに毎回認可サーバーにトークンの検証をリクエストしなければいけない サービスをスケ…

【作業記録】mavenプラグインを作ってみる

2019年ごろに kawashima さんの発表で maven プラグインを作るのはとても簡単だし、やってみましょうという発表があったのでやってみる たしか生で発表をみていたはず Mavenの真実とウソ from Yoshitaka Kawashima 公式サイトの以下のページにプラグインの g…

【メモ】Mavenの依存関係について

Mavenの依存関係は2つある Direct Dependency と Transitive Dependency (実際にこういった名前があるわけではない。2種類存在するということ) Direct Dependency = pomから直接指定されたモジュール Transitive Dependency = 推移的に依存しているモジュー…

【作業記録】paraを単体で使ってみた

paraを使ってみた件 前回はscooldとparaを組み合わせてQAサイトをローカルに構築しました 今回はpara単体で使ってみようと思います 環境とかバージョンとか諸々は次のとおりです(前回と同じ) $ cat /etc/os-release NAME="Ubuntu" VERSION="20.04.2 LTS (F…

【作業記録】scoold と para を使ってQAサイトをローカルに構築

scoold と para を使ってQAサイトをローカルに構築してみました scoold とは オープンソースのQAプラットフォーム https://scoold.com/ ナレッジベースやカスタマーサポートとして利用できる イメージとしては StackOverflow ライセンスはApache2.0 https://…

【作業記録】環境変数が子プロセスに引き継がれるか確認してみた件

環境変数が子プロセスに引き継がれるか実際に確認してみました 確認してみたことは次の2つ fork() 前に設定していた環境変数は親、子プロセスで見えるか? fork() 後に親で環境変数を追加すると子プロセスで見えるか? 作ったプログラムはこちら #include <stdio.h> </stdio.h>…

【作業記録】シグナル

シグナルについて調査してみた件 プロセスをシェルから起動し、端末から Ctrl - c でSIGINTを送る プロセスは2つにforkする プロセスは親子関係を持つが、シグナルはどうなるのか? 書いてみたプログラム #include <stdlib.h> #include <stdio.h> #include <signal.h> #include <sys/types.h> #include <sys/wait.h></sys/wait.h></sys/types.h></signal.h></stdio.h></stdlib.h>…

【作業記録】mkdir -p の模倣プログラムを作ってみた

mkdir -p の機能を模倣するプログラムをC言語で書いたので、その作業記録です。 作ったものの全量です。 #include <stdio.h> #include <stdlib.h> #include <sys/stat.h> #include <sys/types.h> int main(int argc, char *argv[]) { if (argc != 2) { fprintf(stderr, "Usage: mkdir <PATH>"); exit(EXIT_FAILU</path></sys/types.h></sys/stat.h></stdlib.h></stdio.h>…

Spring Security で OAuth2 のリソースサーバーへリクエストを送信してみる

Spring Security OAuth2 を使ってクライアントからリソースサーバーにアクセスを行ってみたいと思います。 クライアントがリソースサーバーに対して保護対象リソースを要求するにはアクセストークンを何らかの形で渡す必要があります。おそらくですが、アク…

Spring Security OAuth2 Client でKeycloakからアクセストークンを取得してみる

前回はJavaScriptを用いてSPAでアクセストークンを取得してみましたが、今回はSpring Securityを用いてサーバーによるアクセストークン取得をやってみたいと思います。 といいましても、Spring Securityが細かい実装の部分をサポートしてくれているので、や…

OAuth 2.0 のJavaScriptクライアントを作ってみる

OAuth 2.0 とか OpenID Connect の全体のフローを作ってみたいと思ったので、とりあえずOAuth 2.0で動くJavaScriptクライアントをSingle Page Applicationとして作ってみたいと思います。 OAuth 2.0 を利用する上で推奨されるセキュリティ上の対策がいくつか…

Spring Security の認証をテストしてみる

前回は認可をテストしてみたので、認可についてもテストしてみようかと思います。 認可については認証から切り離してテストすることができましたが、認証は認可と切り離さずテストする感じですね。というのも、このやり方は AuthenticationFilter ごと実行さ…

Spring Security の認可処理をテストしてみる

Spring Security のテストってどうやるのか調査してみました。 Spring Security ではテストもサポートされていて、Spring Security に関係するコードをJUnitなどで簡単にテストできるようになっています。今回は認可に関係する部分を探っていきたいなと思い…

Spring Security のリソースサーバーでJWTから Granted Authorities を作る

ちょっとタイトルが分かりづらいですが、Spring Security で作ったリソースサーバーがJWTから Granted Authorities を作る件についての話です。 Spring Security が JWT から Authentication を作る仕組み 公式リファレンスにわかりやすい図とともに載ってま…

Spring Security と Keycloak を使ってリソースサーバーを作ってみた

リソースサーバーを作ってみようかと思い立ちまして。 全体のイメージはこんな感じで考えています。 クライアントはcurlコマンドを使ってリソースオーナーパスワードクレデンシャルフローでアクセストークンを取得します。リソースオーナーパスワードクレデ…

SpringSecurityでGlobalMethodSecurityを使ってみた

SpringSecurityにはエンドポイントに対して認証認可のコントロールをすることができますが、メソッド単位でもこれらはできるようなのでやってみました。このメソッド単位で呼び出しの許可・拒否をコントロールする機能はGlobalMethodSecurityと呼ばれるよう…