SIerだけど技術やりたいブログ

5年目のSIerのブログです

Javaアプリケーションのログ出力

Javaアプリケーションで考慮すべきログはだいたい3パターンに分類できると思う。 標準ロガー系 Commons Logging や SLF4J などのファサードでなんとかなるやつ 独自ロガー系 Apache Tomcat の JULI などの独自のルールに従わないといけないやつ 標準出力/標…

Javaのビルドの基礎知識

Javaのビルド関連の知識については、Java学習初期にこんなコード書いて終わり、あとは便利なビルドツール(mavenやらgradle)に任せようって感じで知識が薄かった。 $ cat Sample.java public class Sample { public static void main(String[] args) { System…

Vuej.sでSPAを実現するときは注意してsetIntervalを使おう

setIntervalとは 一定の遅延間隔を置いて関数を繰り返し実行したいときに利用する。例えばポーリング。 developer.mozilla.org1秒ごとにコンソール出力する例。 <html lang="ja"> <script> window.setInterval(function(){ console.log("polling"); }, 1000); </script> <body> </body> </html> setIntervalの生存…

Spring 抽象クラスに定義したアノテーションは引き継がれるのか

以下のコードの実行結果からわかるように、引き継がれる。はい終わり! @EnableAsync //非同期処理を有効化する @SpringBootApplication public class InheritApplication { public static void main(String[] args) { new SpringApplicationBuilder(Inherit…

Spring 非同期タスクの同時実行数を制限する方法

Springには非同期処理を実行するための@Asyncアノテーションがある。 34. Task Execution and Scheduling kimulla.hatenablog.com この非同期タスクの同時実行数を絞るための方法をメモる。デフォルトだと非同期処理の実行にSimpleAsyncTaskExecutorが使われ…

「mvn clean test」みたいに実行するコマンドと「mvn checkstyle:checkstyle」みたいに実行するコマンドとの差を理解したい

「:」なしで実行できるコマンドと、 mvn clean test 「:」でつないで実行するコマンドとの差を理解するのが目的です。 mvn checkstyle:checkstyle 動作確認環境 mvn -v Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T20:57:3…

Vuejsでdataプロパティに値を動的に追加する方法(といいつつJSの基本を理解してなかったという話)

Vuejsのバージョン この記事はVuejs v2.3.3 で動作確認をしました。 ... "dependencies": { "vue": "^2.3.3", "vue-router": "^2.6.0" }, ... Vuejsのdataプロパティ Vuejsはdataオブジェクトのプロパティをリアクティブな値として扱う。つまり、dataオブジ…

Jenkinsジョブ(ビルド~テスト)をDockerコンテナ上で実行する ~Docker Pipeline Pluginを使ってみる~

ビルドやテストなどの一連の作業をJenkinsで自動実行することを考える。 通常これらのジョブはJenkinsのmasterやslaveで実行されることになり、ビルドに必要な環境構築(例えばjavaのインストールやmavenのインストール)はJenkinsのmasterやslaveに対して、…

PostgreSQLのDockerイメージの使い方

ホスト環境を汚さずにいろいろなバージョンのミドルウェアを構築するために、Dockerは非常に有効な手段だと思います。 この記事は、PostgreSQLのDockerイメージを使うために試行錯誤したときのメモです。 動作確認環境 PostgreSQLの起動 PostgreSQLへの接続(…

SpringのContextHolderいろいろ

Springには、…ContextHolderというクラスがある。スレッドローカルに値を保存しておくことで、情報をいろんなところから参照できるようにする。スレッドローカルは…まあスレッド固有の値ですよね。(あたりまえ)TomcatなどのAPサーバはリクエストごとにwork…

jenkinsのpipeline入門(jenkinsfile)

本記事について、Jenkinsのpipelineが最近(2017/2/20時点で)DSLがごっそり入れ替わった(declarative pipeline)っぽいので内容が古いです。以下はscripted pipelineの書き方です。 Jenkins2では、Groovy DSLを用いたpipelineの記述ができるようになったらしい…

makeのshell関数の実行タイミングは直感と異なる

makeのshell関数の実行タイミングは直感と異なる Makefile作成時にshell関数の実行タイミングが直感と異なっていてハマったのでメモ。 やりたかったこと これ。 www.rhoboro.comsphinxドキュメントをビルドするときに、なるべくビルド環境を汚さず、CIツール…

ブロッキングとかノンブロッキングを理解したい

Spring Framework5では「Reactive」対応が目玉だと言われているが、そもそもその前段のブロッキングやノンブロッキングというのが何なのか、いまいちしっくりこなかったので基本から調べた。(今回は特にネットワーク部分に絞って調べた)また、tomcatの実装で…

Springの@RequestScopeや@SessionScopeは結局どこに保存されるのか?我々は真相に迫った

ある日の出来事 我々は真相に迫った まずはデバッグ Javadocを読んでみる 結論 追加 ある日の出来事 SpringのBeanのスコープ、便利ですよね。ライフサイクル管理を任せられるのはDIコンテナを利用するメリットの大きなところだと思います。いつもは何も考え…

Springの@Asyncで非同期処理をする

この記事の内容 DataSourceTransactionManagerはスレッドごとにTx管理するので、@Async使うときはトランザクションが分かれることに注意しよう。 この記事の内容 @Asyncアノテーション サンプルコード スレッド生成ルールのカスタマイズ WEBシステムで使うと…

Spring Framework で同一アプリ内でのイベントを扱う(ApplicationEvent、EventPublisher)

なぜイベントを使うのか デフォルトで提供されているイベント Listenerの実装方法 ApplicationListenerを実装する方法(~spring4.1) @Eventlistenerアノテーションを使う方法(spring4.2~) カスタムイベントの実装方法 サンプルアプリの題材説明 Application…

Spring管理外のクラスでSpringのBeanを使う

Spring管理外のクラスでSpringのBeanを使う Spring管理外のクラスでSpringのBeanを使いたい場面がある。 そもそも自分でnewすればいいだけでは?という場面もあるけど、@ProfileでどんなBeanが来るのか実行時までわからない、とか複雑な初期化あるとかいう前…

Spring REST Docs でAPIドキュメントを作成する

この記事の内容 Spring REST Docsを利用すれば、テストコードから以下のようなAPIドキュメントを作成できるようになる。 この記事の内容 Spring REST Docs とは サンプル 使い方 mavenのpom.xmlにversionを指定する Asciidoctorでasciidocからhtmlを生成する…

SpringBoot @Valueで任意の型にセットする CustomPropertyEditorの作成

はじめに Springには外部定義から値を読み込んで、Javaのフィールドにセットする機能がある。application.propertiesにメッセージを記述し、 message=helloJavaクラスで利用すると、 @Service public MessageServiceImpl implements MessageService { @Value…

SpringMVC 複数のフォームを送信する方法

よくやり方忘れるのでメモ。 こんな画面をSpringMVCで作りたい familyNameとgivenNameが1つのFormで、それを複数繰り返す。 実装方法(サーバ側) Controllerクラスの引数に受け取るFormを用意する 本筋と外れるけど、入力値チェックも設定する。 @Data @AllAr…

SpringSecurity 権限に基づいて認可処理をする

この記事の内容 SpringSecurityを理解すればこんな感じの、権限に基づいた制御を簡単に実現できる。 概要 SpringSecurityのサンプルでは、ROLEに基づいて認可してることが多い。 @Override protected void configure(HttpSecurity httpSecurity) throws Exce…

SpringのAOP @Pointcutの使いどころ

SpringのAOP @Pointcutの使いどころ SpringのAOPのアノテーションで、@Pointcutだけ使い方がよくわからなかったのでメモ。 SpringのAOPってなに? 具体的な処理と関係のない処理(ロギングとか)が混じっていると、煩雑になって保守性が下がる。なので、具体的…

SpringSecurityでEL式を拡張してカスタムルールを作るときのメモ

SpringSecurityでカスタムルールを作る SpringSecurityで提供されているEL式(hasRole()とか)で足りなくなった場合に、独自のEL式を作成する方法のメモ。前の記事で作成してたプロジェクトからちょっとカスタマイズして作成。 kimulla.hatenablog.com カスタ…

SpringCloudBusで簡単にConfigの更新をアプリにブロードキャストする

以下のエントリの続き。 kimulla.hatenablog.com SpringCloudBusとは? メッセージングサービス(AMQP)を利用して、アプリケーション内に色々な情報をブロードキャストするためのプロダクト。 具体例 SpringCloudConfigを利用しているときを例にとって説明する…

簡単 Spring SessionでKVSを用いたセッションストア

そもそもセッションってなに? Spring Sessionってなに? どんな動き? 実装方法 Redisの準備 アプリケーションコード HttpSessionを利用する側 動作確認する サンプル まとめ 参考にしたサイト そもそもセッションってなに? セッションはAPサーバ固有のデータ…

HttpServletRequest を拡張して独自HttpSessionを登録する

SpringSessionのリファレンスを見てると、「SpringSessionはHttpServletRequestを拡張して実現していますよ」的なことが記載されていた。Spring Session Fortunately both HttpSession and HttpServletRequest (the API for obtaining an HttpSession) are b…

Spring Cloud Configのリファレンス読んだ

Spring Cloud Configとは 何がいいの? サンプル書いた 実装方法 Configサーバ Configクライアント クライアントから見たときのファイル名とアプリの関連性は? 設定変更の反映 でも全部のConfigクライアントに/refreshなんてしたくない 参考にしたサイト Spr…

ブログにコマンド実行結果をgifで貼り付けるためのメモ

linuxコマンドの実行結果のgifが技術ブログによく貼り付けられてる。(イメージは以下)これを作成する方法のメモ。 対象OS ubuntu ツール byzanz-record (位置指定してgifを作るコマンド) アニメーションをGIFファイルとして録画(Ubuntu) - TIM Labs xwinfo (…

dockerコマンドのジョークコマンドをgo言語で作った

dockerのチュートリアルをやってると、こんなタイプミスをした。 $ ducker run hello-world コマンド 'ducker' は見つかりませんでした。もしかして: ... duckerコマンドないなら作ればいいか。と思い、go言語の勉強がてらにdockerのジョークコマンドを作っ…

jQueryのajaxメソッドでHTTPリダイレクト(ステータスコード302)を受け取った時は、リダイレクト先の結果しかdone(),fail()メソッドに渡せない

springsecurity使うときにこの挙動がわかってなくて困ったのでメモ。タイトル長っ。 どんな内容? jQueryのajax関数内でリスエストを送った結果がHTTPリダイレクト(ステータスコード 302) だった場合、jQueryのdone(),fail()メソッドがコールされる前にブラウ…