CLOVER🍀

That was when it all began.

Node.jsアプリケーションのログ出力に、winstonを使ってみる

これは、なにをしたくて書いたもの? Node.jsでアプリケーションを書く時のロギングライブラリは、どういうものがあるのかちょっと気になりまして。 調べた感じ、以下のようなものがありそうです。 GitHub - winstonjs/winston: A logger for just about eve…

QuarkusのInfinispan Client(Hot Rod) Extensionを試す

これは、なにをしたくて書いたもの? QuarkusにInfinispan向けのExtensionがあるというので、ちょっと試してみようかと。 Infinispan Client Guide Infinispan Client Extension Infinispan Client Extensionということで、Embedded Modeではなく、いわゆるC…

TerraformでNode.js+PostgreSQLなアプリケーションをHerokuにデプロイする

これは、なにをしたくて書いたもの? Terraformの勉強にと、Herokuを使って、アプリケーションとデータベースをデプロイする超簡単な例を作って試してみようと。 お題 Herokuのフリープランで利用可能なPostgreSQLを使い、以下のサンプルとほぼ同等なアプリ…

QuarkusのConfigurationを試す

これは、なにをしたくて書いたもの? Quarkusを使った場合に、アプリケーションの設定をどう扱うのかをちょっと見てみようと。 結論から言うと、Configuration for MicroProfileを使用します。Quarkus上でConfiguration for MicroProfileを使う場合には、ど…

TerraformでアプリケーションをHerokuにデプロイしてみる

これは、なにをしたくて書いたもの? Terraformの勉強がてら、どこか適当にリソースをデプロイ可能なProviderはないかな?と思っていたところ、HerokuのProviderが あったので、こちらで少し遊んでみようと。 Provider: Heroku - Terraform by HashiCorp お…

PythonでEcho Server/Clientを書いてみる

これは、なにをしたくて書いたもの? ちょっとしたPythonの勉強がてらに、TCPのEcho Server/Clientを書いてみようと。 Pythonでの、ネットワークプログラミングの基礎を覚えてみる感じで。 お題 文字通り、PythonでTCPでEcho Server/Clientを書くわけです…

Prometheusのストレージのドキュメントをさらっと読んでみて、retentionの設定もしてみる

これは、なにをしたくて書いたもの? Prometheusのストレージまわりの、お勉強に、と。 Prometheusのデータ(TSDB)のSnapshotを取得して、リストアまで - CLOVER こちらの続きで、今度はストレージのドキュメントを読み、オプションについて見ていこうと思…

RESTEasy(JAX-RS)+ArC(CDI)の利用に見る、Quarkusアプリケーションのビルド結果の中身

これは、なにをしたくて書いたもの? Quarkusは、GraalVMを使ってアプリケーションをネイティブイメージにビルドできることを売りのひとつにしています。 ところで、GraalVMを使ってネイティブイメージを作ろうとするとけっこうな制限があって、アプリケーシ…

はじめてのQuarkus

これは、なにをしたくて書いたもの? Quarkusという、Red Hat開発しているフレームワークを、ちょっと試してみようと。 Javaフレームワーク「Quarkus」登場。Javaコードからネイティブバイナリを生成し瞬時にJavaアプリが起動、コンテナへの最適化を実現。Re…

Prometheusのデータ(TSDB)のSnapshotを取得して、リストアまで

これは、なにをしたくて書いたもの? Prometheusのストレージまわりがちょっと気になって、いくつか見ていくことにしました。 最初に、Snapshotについて見ていきたいと思います。 Snapshot? TSDB Admin APIに、Snapshotを取得できるAPIが登場します。 TSDB …

負荷テストツールVegetaを試す

これは、なにをしたくて書いたもの? Vegetaという、割と個性的な負荷テストツールがあり、コマンドラインで簡単に使えそうなので試してみようかということで。 GitHub - tsenart/vegeta: HTTP load testing tool and library. It's over 9000! Apache Bench…

BusyBoxを使って、単一で実行可能なコマンドのバイナリをDockerコンテナ内に放り込む

これは、なにをしたくて書いたもの? Dockerコンテナ内で解析などの作業をする必要が出た時に、コマンドなどが入っていないDockerイメージが相手の場合は どうすればいい?という時の選択肢のひとつとして、BusyBoxが使えそうな気がしたので。 BusyBox Case …

RESTEasy+Undertowで作ったアプリケーションを、GraalVMでネイティブイメージにしてみる

これは、なにをしたくて書いたもの? 以前に、簡単なJavaアプリケーションをGraalVM(Substrate VM)を使ってネイティブイメージにしてみたのですが、 もう少しライブラリなどを使った複雑な(?)ものをネイティブイメージにしてみようと思いまして。 で、…

PyInstallerを使って、Pythonアプリケーションから単一の実行可能ファイルを作成する

Pythonで、実行可能なバイナリを作成するにはどうしたらいいのかな?と思って調べてみたのですが、PyInstallerというものを 使えばよさそうです。 PyInstaller Quickstart — PyInstaller bundles Python applications GitHub - pyinstaller/pyinstaller: Fre…

AWS Step Functionsをローカルで動かす

これは、なにをしたくて書いたもの? AWS Step Functionsをちょっと試してみたいのですが、どうやらローカルで動かせるみたいなので、ちょっと試してみようと。 AWS Step Functions とは - AWS Step Functions Step Functions Local (ダウンロード可能バージ…

PythonのAWSクライアントライブラリ、Boto 3の接続情報を設定する

これは、なにをしたくて書いたもの? PythonのAWSクライアントライブラリといえば、Boto 3というものだそうです。 AWS SDK for Python | AWS GitHub - boto/boto3: AWS SDK for Python ドキュメントは、こちら。 Boto 3 Documentation — Boto 3 Docs 1.9.134…

LocalStackを使って、AWS Lambdaを試してみる(Python版)

これは、なにをしたくて書いたもの? AWS Lambdaを動かすのに、以前LocalStackを使ってNode.jsで作成した関数を動かしてみました。 LocalStackを使って、AWS Lambdaを試してみる - CLOVER 今回は、ちょっとPythonで作成してみたいと思います。 お題 お題も前…

Ubuntu Linux 18.04 LTSに、OpenJDK 11をインストールする

Ubuntu Linux 18.04 LTSで、やっと本当に(※)OpenJDK 11が使えるようになったみたいなので、インストールしたいと思います。 ※後述 openjdk-lts package : Ubuntu 環境。 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Descripti…

Pythonプログラムのメモリの使用状況をトレースする

これは、なにをしたくて書いたもの? ちょっと、Pythonプログラムで使用しているメモリの状況を追ってみようかなと。 Python標準ライブラリにtracemallocというものがあるので、こちらを利用できます。またobjgraphというものを使えば、 オブジェクトの参照…

実行中のDockerコンテナの情報を確認する

Dockerコンテナの情報を確認するにはどうしたらいいのかな?ということで、ちょっと調べてみました。 Docker標準のコマンドと、ctopというものが有用そうです。 確認用に、2つのコンテナを用意します。 ひとつは、nginx。 $ docker container run -it --rm -…

uWSGIで複数プロセスを使ってアプリケーションを起動した時に、複数のCPUを使えているかどうか確認する

これは、なにをしたくて書いたもの? uWSGIやGunicornなど、WSGIサーバーは起動時に複数プロセスを利用させるように設定できるのですが、それで複数のCPUコアを 使ってくれるのかを試してみようかなと。 今回は、uWSGIを使って試すことにします。 環境 環境…

WSGIアプリケーションとプロセス数、スレッド数の関係を見る

これは、なにをしたくて書いたもの? 先日、WSGIサーバーとして、GunicornやuWSGIを動かしてみました。 uWSGIを試してみる - CLOVER Gunicornを試してみる - CLOVER この時に、これらのサーバーには起動時にプロセス数やスレッド数を与えることができるとわ…

Gunicornを試してみる

これは、なにをしたくて書いたもの? 前に、uWSGIについてエントリを書きました。 uWSGIを試してみる - CLOVER 今回は、同じくWSGIサーバーであるGunicornを試してみたいと思います。 Gunicorn - Python WSGI HTTP Server for UNIX Gunicorn Gunicornは、UNI…

uWSGIを試してみる

これは、なにをしたくて書いたもの? PythonでWebアプリケーションを書くためのインターフェースとして、WSGIというものがあるそうです。 Web Server Gateway Interface - Wikipedia PEP 3333: Python Web Server Gateway Interface v1.0.1 — knzm.readthedo…

はじめてのDjango

ちょっと、PythonでWebアプリケーションを書いてみようと思いまして。 Djangoというのが割とメジャーなようなので、少し試してみたいと思います。 Django? Pythonで書かれた、フルスタックなWebアプリケーションフレームワークだそうです。 The Web framewo…

Python Call Graph(PyCallGraph)でPythonの関数呼び出しのコールグラフと実行時間を見る

これは、なにをしたくて書いたもの? Python Call Graph(PyCallGraph)という、Pythonのプログラム内での関数呼び出しの様子を可視化してくれるツールが あるようです。合わせて、関数の実行時間や呼び出し回数も見れる模様。 GitHub - gak/pycallgraph: py…

line_profilerで、Pythonのプログラムを行単位でプロファイリングする

これは、なにをしたくて書いたもの? Pythonのプログラムを関数の行単位でプロファイリングしてくれるモジュール、line_profilerというものがあるらしいので、 試してみようかなと。 GitHub - rkern/line_profiler: Line-by-line profiling for Python 環境 …

Python標準のcProfile、profileを使ってプロファイリングを試す

これは、なにをしたくて書いたもの? Pythonには標準で、cProfileとprofileというプロファイリングツールがあるようです。 27.4. Python プロファイラ — Python 3.6.8 ドキュメント こちらを、ちょっと試してみようと思いまして。 環境 今回の環境は、こちら…

Pythonのスレッドは、ネイティブスレッドなのか?

Pythonでのスレッドといえば、GIL(Global Interpreter Lock)があるので同時にはひとつのスレッドしか実行できない という話らしいです。 スレッド状態 (thread state) とグローバルインタプリタロック (global interpreter lock) 動的言語総まとめ : Pytho…

シングルノードで動かすことに特化したKubernetesである、MicroK8sを試す

Ubuntu Linuxにリモートログインした時に、こんな表示が出るようになっていたのが前々から気になっていまして。 Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-47-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://land…