yanom blog

様々な技術について書きます

アプリ終了時のログが出力されない [log4j2]

仕事でlog4j2を使ってログ出力していたときの話ですが、アプリを終了した際にログが出力されずに困っていました。 具体的には以下のような感じです。 //終了時に実行される log.info("end app..."); //これは出力される //色々終了処理 log.info("finish..."…

MockServerClientでAPIサーバをモックする

自分用メモです。 javaでhttpをテストする時、以下のようにモックを使います。 //import import org.mockserver.client.server.MockServerClient; import org.mockserver.junit.MockServerRule; import org.mockserver.model.Header; import org.mockserver.…

AkkaのCancellableインターフェースについて

スケジューラーのキャンセルについて、自分用のメモです。 参考 The Cancellable interface Cancellable can = getContext().getSystem() .scheduler() .scheduleOnce(Duration.ofSeconds(timeout), hogeActor, "cancel", getContext().getDispatcher(), get…

vscodeでフロー図

最近会社でフロー図を書いてたんですが、古の方法(Excel)に嫌気がさしたので他に良いツールがないか探してました。 色々あるんですが、ここではvscodeでフロー図を書いてみます。 準備 まず、vscodeでPlantUMLをインストールします。 (Javaがないと動かない…

JavaでHTTPするときのRetryができるクライアントまとめ

個人用メモとして記事にしておきます。 httpのリクエストが500系エラーなどになった場合に、リトライ処理についてまとめます。 google http client Exponential Backoff ExponentialBackOff backoff = new ExponentialBackOff.Builder() .setInitialInterval…

AkkaでGraceful Shutdownのやり方

自分用にメモを残しておきます。 参考 coordinated shutdown シャットダウン時に処理を行う CoordinatedShutdown.get(system) .addTask( CoordinatedShutdown.PhaseBeforeServiceUnbind(), "someTaskName", () -> { return akka.pattern.Patterns.ask(someAc…

AkkaでDebugログを出力する

最近仕事でAkka使ってます。 Akkaのことをよく知らないという方は以下を見てください。 Introduction to Akka 特に初めて触るようなライブラリだと、ドキュメントを読んだり、実際に動かしながら試行錯誤してプログラミングを勧めていくと思うんですが、そこ…

Redisの永続化について

最近、Redisについて調べているのでその結果を自分用にまとめておきます。 Redisの永続化方法については大きく以下2つがある。 RDB方式 AOF方式 それぞれのメリットデメリットは以下である。 RDB方式 特定の間隔毎にスナップショットを作成する方式。 メリッ…

docker上でgradleを動かす際の権限でハマった

docker上でgradleのJavaアプリビルドを実行する際に少しハマったので記事にしておきます。 エラー内容 $./gradlew build Downloading https://services.gradle.org/distributions/gradle-5.1.1-bin.zip ...................................................…

log4j2を使うときにハマった

はじめに 最近Javaのアプリを作っています。 そのアプリ内でログ出力部分を作っていて、log4j2のライブラリを使おうとした際に少しハマったので、記事にしておきます。 エラー内容 gradleで依存関係を追加し、アプリを実行した際以下のようなエラーが発生し…

BraveでChromeの拡張機能を使う方法

Braveとは 公式サイトより Why use a browser that treats you like one? Enjoy private, secure and fast browsing with Brave. 書いてあるとおり、安全かつ動作が軽いがウリな ブラウザ です。 また、Basic Attention Tokenと呼ばれるブロックチェーン技術…

syslogにアプリログをlog4jを使って送信する

syslogにJavaのlog4jでログを送信するためのメモです。 環境 $ cat /etc/os-release NAME="Ubuntu" VERSION="16.04.4 LTS (Xenial Xerus)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 16.04.4 LTS" VERSION_ID="16.04" HOME_URL="http://www.ubuntu.com/…

dockerでJavaの動作確認

仕事でJavaを使うことになったので、dockerで環境構築していきます。 手順は以下です。 docker イメージをpullする 簡単な動作確認 簡単なプログラムを作成し、動作確認 dockerイメージをpullする 今回はopenjdkを使用します。 Oracle版は以下を参考にしたら…

2019年に達成すべき12のこと

今年の抱負を書くやつです。 健康第一 Go言語を使い倒す docker/k8sを使い倒す(特にk8s) 今まで経験のない言語を2つ学ぶ できるだけアニメをみる できるだけ家族と過ごす 今年こそ旅行にいく たくさん写真をとる 勉強会に参加する 週1ブログを継続する 新し…

vscodeで個人的に一番気に入ってるIcebergを紹介する

はじめに 皆さんvscode使っていますか? 私は最近gvimとvscodeを半々くらいで使っています。 もともとgvimを一年くらい使っていたんですが、とある事によりvscodeいいなってなりつつあります。 きっかけ 最近windowsでsamba経由でExcelファイルやパワポの資…

VS codeのキーバインドをVimにした時の日本語/半角英数入力切り替えについて

はじめに VS codeでVimしたい場合vscodevim使いますよね。 私もいつもお世話になっています。 vscodevimで大体問題ないのですが、1つだけ気になっていることがあるので書きます。 日本語入力切り替え 私は普段はgvimでコードを書いたりテキスト書いたりして…

go-manというツールを作っている話

この記事はGo3 Advent Calendar 2018の17日目の記事です。 はじめに 今年のAdvent Calendarで何を書くか色々迷ったんですが、直前に出張が入ったりあまり時間がとれなかったので、 作りかけのgo-manというツールについて書きます!(言い訳) 動機と目的 最近…

現実と理想の狭間

焦りだす30代。その先に何が見えるのか 最近会社でよく、自分の持っている強み技術を今の会社のビジネスにどう活かすのかを考えろと言われます。 そもそも強み技術ってなんだよってところから始まって、今までの経歴を振り返ってみて主にバックエンドのWebサ…

mongodbのindexについて

db

備忘録です。 mongodbのindexについては以下のマニュアルに記載があります。 (indexの種類やオプションなど) Indexes 全体の概要や気をつけることは以下が分かりやすいです。 月間10億pvを支えるmongo db

Go言語のインターフェース

個人的に思ったことをメモしておきます。 構造体はできることをまとめたもの。 インターフェースはどんなことができるかをまとめたもの。 イメージとしては、構造体は縦でインターフェースは横串で機能をまとめたもの。 使うときはインターフェースを利用す…

Goでdocker SDKを試してみる 1

参考 Develop with Docker Engine SDKs and API go docs 試してみる 基本的には、Develop with Docker Engine SDKs and API を参考に進めれば良いです。 今回は以下のようなコードを作成しました。 package main import ( "context" "fmt" "github.com/docke…

設計のための、問題の捉え方

というタイトルの良スライドを読んだので、個人用にまとめておきます。 参考 設計のための、問題の捉え方 やっていき コードには How テストコードには What コミットログには Why コードコメントには Why not コメントのwhy notというのは、「なぜ別のやり…

Go言語の並行処理(orチャネル)について

はじめに 最近、オライリーから出ているGo言語による並行処理の本を読んでます。 Go言語の並行処理について様々なことが書かれているので、並行処理について詳しく知りたい方にはおすすめです。 その中で、個人的に知らなかったことをpostします。 orチャネ…

Windows8.1/10の右メニューに任意のアプリケーションを割り当てる

参考 Windows7で右クリックメニューに好きな項目を追加する方法 手順 右メニューに任意のコマンドを追加する レジストリを開く windows + q regeditと入力しenter 参考記事からキーの追加を行う ポイントは、追加したキーの配下に「command」というキーを追…

docker alpine 3.8でTZを設定する方法

dockerを使っていてコンテナ内でcronを使いたいことってありますよね。 またcron専用コンテナを作る場合、dockerイメージはなるべく小さくしたいのでalpineを使いたい。 あと、コンテナ内でcronを使う際に忘れがちなのがタイムゾーン設定。 というこで、alpi…

docker buildkitをsudo権限で試す

tl;dr 環境変数には気をつけましょう。 きっかけ DockerCon参加報告 (docker buildが30倍以上速くなる話など) この記事を読みまして、docker buildに対する不満がわかりみすぎたので、buildkitを試したくなりました。 基本的には参考サイトと同じようにすれ…

MongoDB TTL(time to live)の設定方法

db

よく忘れるので備忘を兼ねて残しておきます。 MongoDB version 3.4.10 tl;dr TTLに指定するキーは時刻型 データ登録 今回テスト用のデータは以下です。 {host:"test",time:{"$date":"2018-06-09T10:20:05.000Z"}} TTLで設定するデータ型は時刻型でないといけ…

docker-composeで同じサービスの別名コンテナを作る方法

tl;dr docker-compose.ymlに修正を入れず、同じサービスの別名コンテナを作りたい docker-compose up -d frontend_demo みたいな感じ 構成 以下のような一般的な構成をdocker composeで作っています。 フロントエンド バックエンド DB 理由 例えばデモ向けと…

Program Files配下を有効に使う(Windows 8.1)

会社のいろんな都合によりPCにいくつかの種類のファイルが置けなくなりました。 但し、Program Files配下はOKなので、そこにgvimやらの設定ファイルを置きました。 しかし、普通に使うと読み取り専用となっているため、vimで持ってきたプラグインファイル等…

godocがproxyに阻まれていい感じに使えない

最近仕事でWeb APIをGo言語で開発していました。 せっかくなのでドキュメントをgodocで残そうかと考え試行錯誤していたのでここの書き残します。 結論から言うといい方法がまだ見つかっていません。proxy滅びろ~。 やりたいこと docker-compose up したとき…