Jaybanuan's Blog

どうせまた調べるハメになることをメモしていくブログ

APIサーバでのデータの送信方式の整理

はじめに 送りたいデータ: なし 送りたいデータ: JSON 送りたいデータ: YAML 送りたいデータ: Key-Value (1) Content-Type: application/x-www-form-urlencodedを利用 (2) Content-Type: multipart/form-dataを利用 送りたいデータ: ファイル (1) Content-Ty…

YAMLのMedia Type (application/yaml)

APIを設計していて、YAMLのMedia Type (application/yaml)って見たことないけどあったっけ?と思って調べてみた。 2022年8月時点では、YAMLはまだIETFのMedia Typeの一覧に載っていない。 https://www.iana.org/assignments/media-types/media-types.xhtml …

Nginx Unitのコンテナのdocker-entrypoint.sh

Nginx Unitをベースとしたコンテナイメージを作る際に、/docker-entrypoint.dというドロップインディレクトリにNginx Unitの設定ファイルを配置する。 unit.nginx.org ただ、詳細な説明がないので、挙動の確認はドキュメント読むよりもコード読んだほうが早…

ContentType: application/x-www-form-urlencodedの使い道

curlでPOSTのbodyを送るときに、オプションの付与の仕方が何種類かあって、その中でURLエンコードってなんだっけとなって悩んだ。 はるか昔に調べて納得した記憶はあるが、詳細は忘れてしまった。 ズバリの回答が以下にある。 teratail.com 当該部分を引用し…

URIにおけるQueryとSearchは同じもの(だと思う)

ちょっとだけJavaScriptを勉強中。 URIのクエリ(query)とは、URIの文字列中で?の後に続くキーバリューの値で、RFC 3986では以下のように説明されている。 The following are two example URIs and their component parts: foo://example.com:8042/over/there…

Visual Studio CodeにPythonのコードのパスを認識させる

はじめに 諸般の事情で、Gitのリポジトリの少し奥の方にあるPythonのコードを開発することになった。 例えば、以下のような感じ。 python-path-on-vscode `-- calc |-- src | `-- calc.py `-- tests `-- test_calc.py Visual Studio Codeで開発するのだが、P…

pymongoでのコネクションプールについて

PythonのWebアプリ(Flask)からMongoDBを利用する際に、コネクションプールはどう扱ったらいいんだろうと思って調べた。 すると、MongoDBに接続するドライバpymongoそのものに、コネクションプールの機能があることが分かった。 以下のpymongoのFAQを参照。 p…

GitHub ActionsでのWorkflowの再利用とComposite Actionの再利用の比較

次の記事が分かりやすく纏まっている。 chris48s.github.io

GitHub Actionsでワークフローと同じリポジトリにあるComposite Actionを利用する

はじめに usesの記載方法 参考 アクションの配置場所 はじめに GitHub Actionのワークフローの一部を再利用したくて、いくつかのステップをComposite Actionとして利用できるように切り出した。 その際に、usesの指定方法を見つけるのに苦労したので、メモし…

PHPのデバッグ

PHPは殆ど触れたことがないが、諸事情でデバッグすることになった。 PHPに標準的なログ出力の機能があるのかどうか(そして当該Webアプリで使っているのかどうか)は、よく分からない。 とにかく、エラーが発生したコンテキストが分かればいい。 デバッグ対象…

Docker Composeの仕様

Docker Composeの仕様は、Compose Specとして以下の場所で標準化されている。 github.com Compose Specの実装はDocker Compose、Kompose、Nerdctlなど幾つかあり、その中でもDocker ComposeはReference Implementation (参照実装) という位置づけのようだ。 …

コンテナで簡易NFSサーバを構築

はじめに 環境 利用したコンテナイメージ NFSサーバの構築 (1) ディレクトリの準備 (2) docker-compose.ymlの作成 (3) NFSサーバの起動 動作確認 (1) ホストからマウント (2) コンテナからマウント 参考 ドキュメントどおりでは動かなかった部分 NFSのバージ…

複数のGitのユーザを使い分ける

はじめに ユーザをグローバルに設定しない Bashのプロンプトにユーザ名を表示する 複数のユーザを管理できるCredential Helperを使う 参考 はじめに 複数のGitサーバ/サービスを利用する場合、Gitのユーザの切り替えが必要になる。 適切に切り替えを行わない…

Minikubeを構築して、ローカルのコンテナイメージをデプロイする

はじめに 環境 手順 (1) Minikubeのインストール (2) kubectlのインストール (3) Minikubeの起動 (4) ダッシュボードで動作確認 (5) テスト用のWebサーバのイメージを作成 (6) Minikubeにデプロイ (7) 動作確認 はじめに コンテナの開発環境を構築する際のメ…

Keycloak 16 + OAuth2 ProxyをDocker Composeでお試し環境を構築

はじめに 環境 今回の構成 docker-compose.ymlの作成 Makefileの作成 Keycloakでレルムを設定 (1) Keycloakを立ち上げる (2) WebブラウザでKeycloakにログインする (3) レルムを作成する (4) issuerのURLを確認する (5) クライアントを作成する (6) クライア…

Ubuntu 20.04LTSでウィンドウのスクリーンショットをとったら周辺に透明な領域があって邪魔だった

はじめに ウィンドウのスクリーンショットを取ると、何故かウィンドウの周辺に透明な領域(drop shadow ?)がある。 邪魔なので消そうと思った。 環境 $ cat /etc/os-release | grep PRETTY_NAME PRETTY_NAME="Ubuntu 20.04.4 LTS" やったこと ウィンドウのエ…

Flaskアプリのデバッグではloggerを使う

Flaskでアプリを作成している時に、デバッグ情報をprintで出力しようとしたが、出力されなかった。 調べてみると、出力がバッファリングされるようなので、以下のような感じでloggerを使うのがよいとのこと。 from flask import Flask import logging app = …

PythonにおけるMixin

PythonにおけるMixinについて、以下のブログの説明が分かりやすかった。 www.thedigitalcatonline.com Mixinの説明を以下に引用する。 Python doesn't provide support for mixins with any dedicated language feature, so we use multiple inheritance to …

authlib - PythonのOAuth2/OpenID Connectのライブラリ

authlibがよさげ。 Webサイト docs.authlib.org GitHub github.com ドキュメント docs.authlib.org メモ デフォルトだと認証/認可の情報はSQLAlchemy + SQLite、すなわちRDBで取り扱うようだが、世の中の認証ミドルとの連携方法が分からなかった。 まだ試し…

Makefileを配置しているディレクトリ名を取得する

Makefileを配置しているディレクトリ名をビルドで使いたかったが、ディレクトリ名の取得がなかなか大変だった。 Makefileの例は以下。 # parent directory PARENT_DIR_NAME := $(shell basename $(dir $(realpath $(firstword $(MAKEFILE_LIST))))) # echo p…

CentOS 8のコンテナイメージの乗り換え先

以下の記事が、UBIも含めて比較していて分かりやすい。 pythonspeed.com

CentOS Streamとは

以下のブログに詳しく書いてある。 blog.centos.org 特に、以下の図が分かりやすい。

Google Chromeで10080番ポートが利用禁止

chromestatus.com 他のブラウザも多分同じ対処をしている。

Pythonにおけるsiteとは

localとほぼ同義のよう。 英語ネイティブの人でも分かりにくいのか。 stackoverflow.com

GoogleでUSロケールで検索

以下のクエリ文字列をつけてGoogleにアクセスして検索する。 https://www.google.com/?gl=us&hl=en&gws_rd=cr&pws=0

Pythonのよく使うコードスニペット

はじめに 配列 配列の定義 要素の追加 要素のインデックスの取得 繰り返し 繰り返し(インデックスあり) ディクショナリ ディクショナリの定義 キーでソート 繰り返し (キー) 繰り返し (値) 繰り返し (キーと値) クラス クラス定義の雛形 継承 ヒアドキュメン…

RHEL系のパッケージ管理でよく使うコマンド

はじめに 指定したファイルが含まれるパッケージを調べる はじめに RHEL系のパッケージ管理でよく使うコマンドをまとめておく。 指定したファイルが含まれるパッケージを調べる 以下は/bin/bashがどのパッケージに含まれているかを調べる例。 $ rpm -q --wha…

CentOS8のベースイメージでNFSサーバを構築しようとして諦めた

はじめに NFSサーバの検証 (1周目) コンテナの起動 マウントの試行 (自コンテナから) …… 失敗 NFSサーバの検証 (2周目) コンテナの起動 マウントの試行 (自コンテナから) …… 成功 マウントの試行 (他コンテナから) …… 成功 マウントの試行 (ホスト側から) ………

WindowsのSystem Internalなツール

Process Explorer等をダウンロードできるサイト。 残念ながらSpy++はなかった。 docs.microsoft.com

pyyamlでのYAMLの読み込みと書き込み

はじめに PythonのYAMLパーサのpyyamlを利用して、YAMLのデシリアライズとシリアライズするコードスニペットと、その説明をメモしておく。 コード例 import yaml with open('input.yml') as file: data = yaml.load(file, Loader=yaml.CLoader) with open('o…