らくがきちょう

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

Python

Python3 で scapy を用いてパケットを送信するサンプルスクリプト

Python3 で scapy を用いてパケットを送信するサンプルをメモしておきます。

Python3 で連続したアルファベットを出力するサンプルスクリプト

Python3 で「連続したアルファベットを出力するサンプルスクリプト」をメモしておきます。

Ubuntu 20.10 で scapy の「No such file or directory: b'liblibc.a'」を解消する

Ubuntu 20.10 で scapy を利用とすると、以下のエラーが出ました。 # python sample.py Traceback (most recent call last): ・ ・ ・ FileNotFoundError: [Errno 2] No such file or directory: b'liblibc.a' これは以下のように実行することで回避出来まし…

Ubuntu 20.10 で固定アドレスを設定する簡易スクリプト

Ubuntu 20.10 用に、簡単な固定アドレス設定スクリプトを作成したのでメモしておきます。 作り込みの要素は多々あると思います。

Ubuntu 20.10 に pyenv で Python 3.9.1 をインストールする

以前に CentOS7 に pyenv で Python 3.7.x 系をインストールする というメモを書きました。 今回は Ubuntu 20.10 に pyenv で Python 3.9.1 をインストールする手順をメモしておきます。

Cisco ACI のイベントをリアルタイムで検知する Python サンプルスクリプト

以前に Cisco ACI のイベントをリアルタイムで検知する Node.js サンプルスクリプト というメモを書きました。 このメモの Python バージョンを作ったので、改めてメモしておきます。

VIRL 2 Client Library で CML を Python から操作する

VIRL 2 Client Library を使うと Python から CML を操作することが出来ます。 簡単な Python スクリプトを書いて CML 上にラボを作成する手順をメモしておきます。

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 …

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

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

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

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

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

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

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

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

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

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

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 の基本的な使い方をメモしておきます。

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 へ関数をアップロードすることが出…

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 の操作を行うサンプルというメモを書きました。 今回はアップロード / ダウンロードサンプルをメモしておきます。

Python + responder + gunicorn + systemd + Nginx で Web アプリを起動する

以前に Python + falcon + gunicorn + systemd でシンプルな Web アプリを起動する というメモを書きました。 最近は responder が流行りらしいので、Python + responder + gunicorn + systemd + nginx 構成で「responder アプリケーションをデーモン化する…

CentOS 8.1911 のシステム全体へ pyenv をインストールする

pyenv は「特定ユーザにインストールする」方法と「システム全体にインストールする」方法があり、各々以下のような特徴があると思います。 特定ユーザにインストールする ユーザ権限だけでランタイムやパッケージの 追加・削除が可能 別ユーザから参照出来…

Python の responder を使った AJAX サンプル

responder は Python の Web フレームワークです。 responder でシンプルな AJAX を書いたのでメモしておきます。 サンプルは以下の 2 つです。 テキストを入力してボタンを押すとタイトルを書き換えるサンプル テキストを入力するとタイトルが書き換わるサ…

AWS S3 にアップロードされたファイルをコピー/移動する Lambda 関数

AWS S3 でファイルがアップロードされた際に、自動的にコピー (または移動) する Lambda 関数をメモしておきます。 尚、権限は適切に設定されているものとします。