bottle で簡単な HTML アプリを作る時のテンプレートのコードです。
Python で簡単なデーモンアプリを作る時などに使う、ロガーをコードで作る時のコードのメモです。
Web で Slack 開くと
Mac で、ディレクトリ名を出力しようとした時に、濁点が独立した1文字になってしまう場合があります。Unicode の NFC と NFD の正規化の違いによるものです。 unicodedata.normalize で直せます。
Django の django-oauth-toolkit に含まれるアプリ oauth2_provider のマイグレーションが 0004 で失敗した。FKを外し、int->bigint に手で直し、FKを貼り直すことで復旧する。
Djangoのログ設定。ファイルに出力せず、コンソールに出力する。
Django で 生SQL を発行する際、特定の SQL で 2027 Malformed packet が発生する場合の解決ヒント。ダブルクオーテーションを使わないようにすると良い。
Docker で Nginx を起動し、単純な静的ファイルをホストするだけのシンプルな設定
Docker で Re:dash を起動している際、6 から 7 にバージョンアップする時にマイグレーションが必要になります。マイグレーション方法を記載します。
Analog とか Webalizer の代わりに、GoAccess を Docker で動かして Apache のアクセスログを解析する方法の紹介
pipenv install で、 python3.10 環境を作ろうとして RuntimeError: location not created nor specified が出た場合、python3.9 環境の pipenv を使っている場合があるので、python3.10 環境に pipenv をインストールすると良いです。
今まで、Alpine Linux + uWSGI で Django のイメージを作ることが多かったのですが、Alpine Linux で Python を実行すると遅い問題があります。Docker のイメージの構成を、Alpine -> Debian、HTTPサーバを uWSGI -> Daphne + WhiteNoise に変更したメモです。
Kubernetes で、 Nginx Ingress Controller を使っていて、Pod 内のアプリケーションサーバーに Uwsgi を使っているケースで、レスポンスの遅いサービスがある場合に、タイムアウトさせないために設定を確認するポイントです。 これらの設定を伸ばしておかないと、 502 エラー もしくは 504 エラーとなります。
Pipenv 等のバージョンロックシステムを使い、Alpine Linux の Docker イメージで Python 環境を構築しようとすると、インストールがうまくいかず躓く場合が多くあります。 Rust で cryptography をインストールする方法がうまくいかない(もしくは、遅いので避けたい) 場合、pipenv で cryptography はインストールせず、apk でインストールするとうまくいきます。
tinyMCE のバージョンが 4 の場合、tinyMCE.init の setup オプションで、onChange イベントを追加できます。
curses を使わずに、矢印キーで操作できるターミナルメニューを作る場合の情報。 不明点が多かったので、他のサイトを参考にしながら書きました。感謝。
Postfix のログから送信に失敗した(ハードバウンスした) メールアドレスを抽出するワンライナー。 ハードバウンスしたメールアドレスにはメール送信を停止しないといけない。
Kubernetes の Igress を通した HTTP リクエストから、接続元のグローバルIPアドレスを取得しようとしたが、Kubernetes のローカルネットワークの IPアドレスが取得できてしまい、うまくいかなかった。 Kubernetes を MicroK8s にして、組み込みのイングレスコントローラーを使ってみたところ、グローバルのリモートIPアドレスが取得できたのでメモする。
サーバで、 MicroK8s を使っている場合、サーバ内の docker のイメージリポジトリとは別に、ctr 用のイメージリポジトリが作られ、MicroK8s ではその ctr を使うため、docker load したイメージは使えない。microk8s ctr image import する必要がある。
最新版 (1.25ぐらい? ) の Kubernetes では、 apiVersion: extensions/v1beta1 は使えなくなっている。 Ingress をextensions/v1beta1 で書いている場合、kubectl apply の時 error: unable to recognize "ingress.yml": no matches for kind "Ingress" in version "extensions/v1beta1" が表示され適用できないので、apiVersion: networking.k8s.io/v1 に更新する必要がある。