以下で書いたJVMのメモリ設定をアプリケーションのjarファイルから自動で計算してくれるツールです。 progret.hatenadiary.com v0.0.2をリリースしました。 リリースされた機能は以下の一つです。 [experimental] ラムダ式をクラスファイル数にカウントする …
これはGradle 5.0, 5.1, 5.2, 6.1.1で再現しています。 間のバージョンでは再現しないかもしれません。 BOMによって依存関係のバージョンを管理してる際に enforcedPlatformを使ってないのにも関わらず、プロジェクトで個別に依存関係の上書きができる場合と…
これは出落ち感があるんですが 既にmaking/memory-calculator-cnbというものがあり UberJarやディレクトリに入ってるクラスファイルを再帰的に、cloudfoundry/java-buildpack-memory-calculatorを使ってJVMオプションを吐いてくれます。 というわけで、今回…
Go言語でつくるインタプリタを読んで 実際に動くインタプリタを書いたので記事として残しておく。 感想 ここ1週間半程度、この本を読んでいた。 気分転換に楽しい本でも読もうと思って Go言語でつくるインタプリタを開いた。 写経しながら読んだが、良い本…
latestタグや書き換えるためのタグ(develop, stagingなど)を使って、本番で運用するのはやめましょう。 コンテナイメージのキャッシュ状況やリリースフローによっては予期しない形で 予期しないバージョンが本番で起動する可能性があります。 本記事では、…
今回使った実装を使えば、どういうテストで実行された処理なのかが明確に分かるようになります。 使い方です。 class MdcExtensionTest { @Test public void test() { assertThat(MDC.get("test.displayName")).isNotNull(); assertThat(MDC.get("test.id"))…
QuarkusにはQuteというテンプレートエンジンが入っています。 今回は、これをQuarkusじゃないプロジェクトで使ってみます。 使ったバージョンは1.1.1.Final です。 quarkus.io 今回のコードは以下のリポジトリにおいてあります。 github.com quarkus-sandbox…
いつから実装されたのか分からないが ファイルに出力する方法があったので書いておく。 やり方としては以下のパラメータを渡すだけ -Djdk.proxy.ProxyGenerator.saveGeneratedFiles=true を引数で渡すだけ(※) 実際に動作確認をしたのは以下のJava。 他の環…
Node.jsのサーバーでアクセスログ出してますか? morganを使って吐きましょう。 今回紹介するのはNuxt.jsで使う場合のものですが expressとかでも似たようなコードで対応できるはずです。 morganの書き込み先を自前のロガーに書き換える 毎回morganの関数を…
こうします。 const winston = require("winston") const logger = winston.createLogger({ level: "info", format: winston.format.combine( winston.format.timestamp(), winston.format.splat(), winston.format.json() ), defaultMeta: { service: "my-a…
Node.jsのアプリケーションのログをJSONログに変えたいが、全部自分で置き換えるのは面倒なので console.logからロガーを使ったコードに書き換えてくれるeslint-pluginを書きました。www.npmjs.com 以下のようなコードを自動で置き換えます。 // エラーとし…
DatadogのAutoDiscovery機能があるのを知ったので試してみたよ、という記事です。 今回は簡単に設定を試すために docker-composeを使って試してみました。 2022/09/29追記: 本記事の内容は少し古くなっています。 本記事では、Prometheusのインテグレーショ…
本番でのご使用はご注意ください。 あとJDBCドライバ固定のコードになっているので注意してください。 タイトル通りなんですがコネクションのIDを割り振ってMDCにputするコードを書いたので ここに書いておきます。 なぜこんな物を書いたかというと コネクシ…
MyBatis経由で実行される全てのSQLに対して SQLコメントを追加したい気持ちになったので 簡単にどうやるのかを書いておく。 stackoverflowにも質問を書いたけど ググってたら思いついてしまった。(ほぼコピペだけど) ちなみにリフレクションでこじ開けるの…
調べたのでメモしておく。 結論: 環境変数から取ってきている。 node での使用例を見ると 以下のような形で利用できる模様 // これでAWSの呼び出しがX-Rayに記録される var AWS = AWSXRay.captureAWS(require('aws-sdk')); これをソースコードから追ってみる…
CIでフォーマッタ掛けてフォーマットのチェックしてますか? プロジェクトでフォーマットがある程度統一されていると落ち着きませんか? コードフォーマッタで悩んでいる、という人にオススメのツールとして Spotless というツールを紹介します。 記事の構成…
以下のリンク先にuberのgoのコーディングスタイルのガイドがあるのですが そこにあるルールに基づいたエラーを吐くLinterを書いてみました。 github.com よく見ると元のルールとは微妙に違うような気がします。 "foo"という文字列を渡してるけど、Goodではそ…
「そーだい本」こと、曽根壮大さんが書かれた「失敗から学ぶRDBの正しい歩き方」を読みました。 読み終えたので感想を書いてみます。 gihyo.jp 感想 感想を書く前に、まずは書籍紹介を引用してみます。 「データベースがよく落ちる」「前任者が残したテーブ…
9月末で無職になりました。 正社員として地方からフルリモートで働ける・雇っていただける会社を探しています。 直近のお仕事では、Java/Spring Bootを使ったAWS ECS上で動くアプリケーションの開発や TerraformやAnsibleを使った運用に関わってきました。ま…
アラート起因で調べるベースの運用とログの話を書いておく。 状況確認 状況確認は大事。ひとまず初動で原因が分かると嬉しいので ざっくり状況確認。 ログを読む エラーログを読む なにも出てなかったらWARNを読む メトリクスを見る 5xxエラーを見る どのサ…
今回はBCC(BPF Compiler Collection)のツールを使って Pythonのメソッド実行のトレースをやってみます。 今回の記事の流れは以下のとおりです。 Amazon Linux 2を立ててBCCのインストールをする 検証のためのコードを準備する 実際にメソッドの呼び出しを…
Lambdaを使ってAPIをホストしたい時、何使いますか? AWS CDK、おすすめです。 実際のコード Lambda Functionを中心として、Lambda Functionに関連付けを紐付けるだけで API Gatewayなりのリソースが作成される。 #!/usr/bin/env node import 'source-map-su…
これはどういう結果になるか、分かりますか? package main import ( "fmt" "bytes" ) func Buffer() *bytes.Buffer { return nil } func main() { b := Buffer() fmt.Printf("%T %v", b, b) } こうなります。 型無しnilになって欲しい気持ちだった。 結局、…
apt update && apt install -y tcpdump dnsutils tcpdump -X -n -vv dst port 53 or src port 53 & # dig すればなんか出るはず dig yahoo.co.jp tcpdumpで真面目に見たのは初めてなので ↓を見ながら調べた。 tcpdumpチートシート - Qoosky 28バイトはヘッダ…
KCLv2の話 移行はこの辺読んで。Kinesis Client Library 1.x から 2.x への移行 - Amazon Kinesis Data Streams localstackではKinesis Client Library v2はテスト出来ない 内部で使っているkinesaliteでは、新しいAPIがサポートされていない Kinesis Client…
今回は、Armeriaを使って、DNSのSRV Recordを使ったクライアントサイドロードバランシングをやってみました。 ソースコードはこのリポジトリにおいています。 クライアントサイドロードバランシングの必要性については以下の記事を読むと良いかもしれません…
JUnit5 でどこが変わったのか、今いるチームの開発メンバや、JUnit5ざっくり知りたい人向けに書いておきます。 この記事では以下の内容について書いていきます。 なぜ移行するか どこが変わったか まとめ なぜ移行するのか なぜ移行するかを簡単に説明してお…
この記事では、JUnit5への移行を行うと共に どういう書き換えをしたかを書いておきます。 以下の内容で書いていきます。 今回移行したプロジェクトの前提 どういう方法で移行するか PMDのアップデート junit 4系の依存を完全に外す junit-jupiterの依存とテ…
以下のリリースノートにこんな記述がありました。 checkstyle.org ClassFanOutComplexity: count complexity base annotations/extends/implements/methods params. Author: kazachka #4092 annotation, extends, implementsで使われているクラスもClassFanO…
今、Java並行処理プログラミング読んでいて ThreadPoolExecutorというかAbstractExecutorServiceのnewTaskForというメソッドを知ったので 使ってみます。 今回の記事では、ThreadPoolExecutorを拡張して MDC、Mapped Diagnostic Contextを引き渡しながら、タ…