Skip to content

Instantly share code, notes, and snippets.

@fortune
fortune / Introduction_to_APPLIED_LINEAR ALGEBRA_9.ipynb
Last active July 17, 2023 04:44
スタンフォード ベクトル・行列からはじめる最適化数学の第9章
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

MSYS2/MinGW-w64(64bit/32bit) の環境設定

MSYS2 とは

MSYS2 とは、Windows 上で POSIX シェル環境を実現するものだ。

32bit Windows 用と 64bit Windows 用の2つがあり、64bit の Windows には両方ともインストールし、実行することができるが、そうする意味はあまりなく、 64bit の MSYS2 だけインストールすればいい。32bit Windows 自体がもう時代遅れなので、MSYS2 でも 32bit バージョンはもう提供されていないようだ。MSYS2 の 64bit は 通常、C:\msys64 にインストールされる。

@fortune
fortune / README.md
Last active July 13, 2022 13:54
Kubernetes クラスタ上のサービスディスカバリ

Kubernetes クラスタ上のサービスディスカバリ

Kubernetes クラスタ上にデプロイしたアプリケーションを利用する場合、最終的には、Pod 内のコンテナが Listen するポートに対してリクエストすることになる。つまり、IP アドレスで Pod を指定し、ポート番号で Pod 内のコンテナを指定するわけだが、これらを直接指定するのでは管理しにくいし、スケールもしにくくなる。

そこで、Kubernetes では Service リソースオブジェクトによって、この問題、すなわちサービスディスカバリの問題を解決する。

ここでは、O'Reilly 『入門 Kubernetes』 の7章の内容を試してみる。

Deployment リソースオブジェクトの作成

@fortune
fortune / README.md
Last active February 12, 2024 12:12
Kubernetes クラスタ上でのヘルスチェック

Kubernetes クラスタ上でのヘルスチェック

Kubernetes クラスタ上で稼働中のコンテナアプリケーションのヘルスチェックにはいくつかの方法がある。

  • コンテナのメインプロセスの死活監視
  • Liveness Probe
  • Readiness Probe

コンテナのメインプロセスの死活監視 では、K8S クラスタのシステムが各 Pod 中の各コンテナのメインプロセスの死活監視を実施し、プロセスが終了してコンテナが終了し、破棄されたら、コンテナを再作成して起動する。これは、Pod の restartPolicy の設定にもよるが、いずれにしろ Pod はそのままであり、再作成はされない。これは、設定なしで勝手に K8S がやってくれるのだが、プロセスがデッドロックを起こしたりして、終了してはいないけれども、仕事をすることができない事態には対処できない。

@fortune
fortune / README.md
Last active February 13, 2024 07:52
Kubernetes の Pod でローカルな Volume を利用する

Kubernetes の Pod でローカルな Volume を利用する

Pod 内のコンテナから、ボリュームをマウントするには次の4つの方法がある。

  1. hostPath で、Pod が作成されたノード上の特定のパスをボリュームとする。
  2. emptyDir で、Pod が作成されたノード上に、Pod と同じ寿命の空のボリュームをつくる。
  3. クラウドプロバイダ(AWS, Azure, GCE 等)が提供する作成済みのストレージをボリュームとする。
  4. PersistentVolume, PersistentVolumeClaim, StorageClass を使った永続ボリュームを利用する。

https://kubernetes.io/ja/docs/concepts/storage/volumes/

@fortune
fortune / README.md
Last active March 4, 2022 17:53
Docker for Mac で Docker ホストに入る方法

Docker for Mac で Docker ホストに入る方法

Mac OS X での Docker for Mac では、Hyperkit により Linx VM を作成し、それを Docker ホストとして使っている。そのため、ボリューム等を確認しようとしても Mac 上には存在しない。そういうものを確認するには、次のように特殊なコンテナを特権付きで実行する。

$ docker run -it --rm --privileged --pid=host justincormack/nsenter1
/ # 
/ # 
/ # 
/ # cd /var/lib/docker

「ハノイの塔」を解く

Python の ctypes モジュールに関するメモ

ctypes モジュールを利用して C 言語のライブラリをロードし、そこで定義されている C の関数を 呼び出すことができる。

https://docs.python.org/ja/3/library/ctypes.html

簡単なチュートリアル

@fortune
fortune / README.md
Last active July 26, 2021 03:56
A sample code of Python's select module

Python の select モジュールを使ったコードサンプル

クライアントからの時間のかかるタスク処理要求を受け付けるサーバを、select モジュールによる入出力の多重化を利用して実装してみた。子プロセスの終了監視のために signal モジュールも利用している。

最初の実装にはバグがあったので、それは failed_task_server.py というファイル名で残した。select モジュールの poll で書き込みを監視している子プロセスが終了した場合、パイプに書き込んで正常終了したときでも、たまに poll が書き込みを検出して戻る前にシグナルハンドラで割り込まれてしまうことがあるのが問題だった。修正したものをあらためて task_server.py とした。

シグナルハンドラは、コード中のどこでも呼び出される可能性があるので、例外を raise する場合には注意しなければならないことの確認のためにテスト用のスクリプト sig_handler_test.py を作った。

@fortune
fortune / pyinstaller.md
Created April 24, 2020 10:22
PyInstaller による Executable ファイル生成

PyInstaller による Executable ファイル生成

インストールと環境構築

pyinstaller によって Executable ファイルを生成すると、必要なモジュールやライブラリ以外にも生成物に含めてしまい、サイズが大きくなる傾向がある。そこで、仮想環境をつくって、そこで Executable 化対象となるスクリプトやアプリケーショを作成し、pyinstaller をインストールするのがよい。

$ python -m venv VENV
$ . VENV/bin/activate
(VENV) $ pip install pyinstaller