らくがきちょう

なんとなく ~所属組織/団体とは無関係であり、個人の見解です~

Python の FastAPI Web アプリで pydantic を使わずに POST メソッドを処理する

Python で FastAPI を使ったアプリケーションを Web アプリケーションを作成する際、POST メソッドで渡されるリクエストの処理は公式サイトの Request Body 説明ページ によると pydantic を使ったクラスで処理するサンプルが掲載されています。 しかし、例…

Python で「ハイフンを含んだデータ名」の JSON を pydantic で受け取る場合の処理

Python で「JSON でデータを受け取る」ようなケースを考えた場合、データを pydantic でクラス化するケースがあると思います。 例えば FastAPI で POST された JSON を受け取る Web アプリケーションを開発する場合などです。 こういった場合、「JSON 内のデ…

AWS API Gateway + Lambda + mangum + FastAPI な Python アプリケーションに POST された JSON を処理する

以前に mangum + FastAPI で ASGI な Python アプリケーションを AWS Lambda + API Gateway 上で動かすというメモを書きました。 mangum と mangum-cli を使うと FastAPI を使った Web アプリケーションを AWS の Lambda と API Gateway を使って簡単に公開…

pyenv 自身をバージョンアップする

pyenv 自身をアップデートしたい場合、以下のように pyenv のインストールディレクトリで git pull するだけで可能です。 cd ${PYENV_ROOT} git pull プラグインを利用したい場合は pyenv-update を ${PYENV_ROOT}/plugins/ 配下にコピーします。 git clone …

Ubuntu18 に docker / docker-compose をインストールする

Ubuntu18 に docker / docker-compose をインストールする手順は公式サイトで丁寧に説明されています。 今回はコマンドだけ、メモしておきます。

AWS Lambda における S3 Put イベントのサンプル

先日、AWS Lambda で CloudWatch Event からトリガーした場合の event サンプルというメモを書きました。 Lambda のテスト用イベントとして予め用意されている Amazon S3 Put の内容を自分用にメモしておきます。

CentOS8 に axel をインストールして大きなファイルを分割ダウンロードする

以前に axel で CLI 上から分割ダウンロードするというメモを書きました。 CentOS8 では標準リポジトリや EPEL では axel が提供されていません。 getpagespeed というリポジトリでは axel が提供されているのですが、getpagespeed リポジトリを使うには登録…

指定された URL の英単語数を数える

「海外メーカー製品は、ドキュメントを英語で読むのが大変」という会話を耳にしたので、実際に「海外メーカー = シスコのドキュメントの英単語数」を計測してみました。 「英語の勉強をしてみよう」と思い立つのですが、単語を覚えるにしても「とりあえず人…

Python で XX 時から YY 時まで ZZ 分間隔で表示する

Python では時間の計算を行う際、timedelta を利用することが出来ます。 timedelta を使うと、例えば「XX 時から YY 時まで ZZ 分間隔で表示する」といったことも簡単に実現出来ます。

なぜインターネットの MTU は 1,500 バイトになったのか

Ben Cox の Blog は興味深い記事が多く掲載されています。 その中でも How 1500 bytes became the MTU of the internet という記事が面白かったので、Ben さんに許可頂き、日本語に翻訳してみました。 英語が苦手なので、ところどころ「どう、ニュアンスを訳…

Python で営業日を取得出来るライブラリ「jpbizday」を公開

日本の祝日情報を取得する Python ライブラリは幾つかありますが、動作は以下に大別出来ると思います。 オンラインで動作するもの (「Google カレンダー」や「公共機関が出しているカレンダー」からネットワーク経由で情報取得するもの) オフラインで動作す…

Twitter API の利用申請を行い、tweepy を使った Python アプリケーションを作る

Twitter API を利用する為には Twitter アカウントとは別に、API の利用申請を行う必要があるそうです。 Twitter API の利用申請を行ったので、申請方法をメモしておきます。 また、申請が完了したら Twitter API を利用した Python アプリケーションを作っ…

WSL でマウントしたファイルシステムでもパーミッションを扱えるようにする

WSL は一般的には「VolFs」と「DrvFs」の、ふたつのファイルシステムを併せて運用することになると思います。 VolFs (WSL 内部を管理する。 WSL 上にインストールされたディストリビューションを管理するファイルシステム) DrvFs (WSL 外部を管理する。 WSL …

isort で Python の import 順序を PEP8 準拠に修正する

Python で import するライブラリの順序は PEP8 で決められています。 import文 は次の順番でグループ化すべきです: 標準ライブラリ サードパーティに関連するもの ローカルな アプリケーション/ライブラリ に特有のもの isort を使うと Python で import す…

venv で Python 仮想環境を作成する

PEP 405 -- Python Virtual Environments に Python の仮想環境について書かれています。 Python 3.3 からは venv が標準ツールとなり (但し、推奨は pyvenv)、Python 3.5 からは venv が推奨ツールになりました。 venv の基本的な使い方をメモしておきます。

Windows に Hyper をインストールして WSL を使う

Windows 環境で WSL を快適に使える環境を模索すべく、Electron 製のターミナルである Hyper をインストールしてみました。

ディレクトリ配下のパーミッション/オーナーを一括変更する

現在のディレクトリ配下のパーミッションを再帰的に変更するには、例えば下記のように実行します。 find . -type d -exec chmod 755 {} \; find . -type f -exec chmod 644 {} \; find . -name "*.sh" -exec chmod 755 {} \; オーナーも変更したい場合は以下…

AWS CLI v2 をインストールし、ページャを無効化する

AWS CLI v2 is now generally available でアナウンスされましたが AWS CLI v2 が正式リリースされました。 従来は pip 経由でインストールしていましたが、v2 からは .zip ファイルをダウンロードし、インストーラを使ったインストール手順に変わっています…

Cisco UCS サーバの CIMC で HTTP 経由で .iso イメージをマウントする

Cisco UCS で CIMC へ SSH し、Web サーバ上の .iso イメージを vMedia としてマウントするには下記のように実行します。 scope vmedia map-www vmedia-1 http://10.0.0.1/dir/ image.iso vMedia のマウント状況は show mappings で確認することが出来ます。…

Windows で fileutil を使って指定サイズのダミーファイルを作成する

Windows 10対応:巨大サイズのファイルを簡単に作る(fsutilコマンド編)に書かれている通り、Windows では fsutil file createnew [FILENAME] [SIZE] を使うことで指定サイズでダミーファイルを作成することが出来ます。 区切りの良いサイズごとのコマンド…

curl で Cisco SD-WAN に Data Prefix を作成 / 取得 / 更新 / 削除する

以前に curl で Cisco SD-WAN の REST API を試してみる というメモを書きました。 このメモでは GET の例しか記載していなかったので改めて GET, POST, PUT, DELETE する例もメモしておきます。 API の調べ方は前述のメモを参考にしてください。

mangum + FastAPI で ASGI な Python アプリケーションを AWS Lambda + API Gateway 上で動かす

mangum を使うと FastAPI や responder といった ASGI アプリケーションを AWS Lambda + API Gateway 上へ簡単にデプロイすることが出来ます。 今回は FastAPI で書いた ASGI アプリケーションを mangum を使って AWS 上でデプロイする手順をメモしておきま…

AWS Lambda で CloudWatch Event からトリガーした場合の event サンプル

AWS Lambda を cron 式で指定時間にトリガーする場合、トリガーには Cloud Watch Event を指定します。 この場合、Lambda のイベントハンドラへ渡される event (JSON オブジェクト) のサンプルは Event Patterns in CloudWatch Events に掲載されています。 …

python-lambda-local と lambda-uploader を使ってローカル環境で Lambda 開発を行う

AWS の Lambda で開発を行う際、Web 管理コンソール上で開発 / デバッグするのは大変です。 python-lambda-local を使うとローカル環境で Lambda を実行出来、更に lambda-uploader を使うとローカル環境から簡単に Lambda へ関数をアップロードすることが出…

GCP 上で Route53 DNS 認証を使い lego で Let's Encrypt のワイルドカード証明書を取得する

lego を利用して Let's Encrypt の証明書を取得する手順については以前に下記のメモを書きました。 Cisco ASA 9.1 に Let's Encrypt なワイルドカード証明書を SSL-VPN 用にインポートする AmazonLinux2 で lego を使い Route53 認証でサーバ証明書を取得す…

PySnooper を使って Python スクリプトをデバッグする

PySnooper を使うと print() や pdb を使わずにデバッグを行うことが出来ます。 PySnooper のページには PySnooper is a poor man's debugger. と書かれていました。 PySnooper の使い方をメモしておきます。 尚、ソースコードは cool-RR / PySnooper にあり…

Python が実行出来るシェル「xonsh」をインストールする

xonsh は Python の機能が使えるシェルです。 xonsh のインストール手順をメモしておきます。

Azure Storage Container へアクセスする Python スクリプトサンプル

azure-storage-blob ライブラリを使うと Python スクリプトから Azure Storage Container へアクセスすることが出来ます。 簡単なサンプルを書いたのでメモしておきます。 今回は Python 3.8.1 を使いました。 但し、このページよりも GitHub の Azure / azu…

Lambda 用の .zip ファイルを作成する場合は「zip -r .」を使う方がベター

AWS Lambda で (標準パッケージ以外の) 外部パッケージを利用したい場合は、Python のソースコードと依存するパッケージを .zip アーカイブにして、Lambda へアップロードする必要があります。 詳しくは AWS Lambda Deployment Package in Python に記載され…

Python の boto3 で S3 とダウンロード/アップロードする

以前に Python の boto3 で S3 の操作を行うサンプルというメモを書きました。 今回はアップロード / ダウンロードサンプルをメモしておきます。