工作と競馬2

電子工作、プログラミング、木工といった工作の記録記事、競馬に関する考察記事を掲載するブログ

技術メモ#Python

USB仮想シリアルポートデバイスの挿抜を監視するソースコードの自分用メモ

概要 USB仮想シリアルポートデバイスの挿抜を監視するためのPythonソースコードを自分用にメモしておく。 実装 必要パッケージ pip install PySerial pip install pywin32 ソースコード import threading import time import logging import win32api import…

ラズパイオーディオの筐体の製作(3) ~ 操作プログラムの製作、完成 ~

概要 ラズパイオーディオ筐体の操作プログラムを作成し、完成させた。 概要 背景と目的 詳細 0. 準備 1. volume操作部 2. 再生/停止、トラック操作部 3. スクリプト全体 4. systemdサービス化 5. 完成 まとめと今後の課題 背景と目的 前回、筐体の組み立てを…

ローカルLLMでRAG

概要 ローカルPC上で、LLMを動かし、かつ、RAGを実装するための自分用メモ。 概要 背景と目的 詳細 0. 環境 1. ローカルLLM実行環境(Ollama) 2. LLMモデル 3. RAGの実装 3.1 embedding modelのインストール 3.2 実装 3.2.1 全体構成 3.2.2 ベクトル化 3.2.3 …

Flask+React+pywebview+PyInstallerでデスクトップアプリを作成する

概要 Flask+React+pywebview+PyInstallerでデスクトップアプリを作成し、動作を確認した。 概要 背景と目的 詳細 0. 環境 1. 作成するもの、実現手段 2. 必要なライブラリのインストール 2.1 Python 2.2 node 3. Flask部 backend.py 4. React部 frontend/src…

seleniumで、指定した要素をスクロールして、要素内すべてのスクリーンショットを撮るためのメモ

概要 seleniumで、指定した要素をスクロールしてスクリーンショットを撮るためのメモ。 概要 背景と目的 詳細 0. 環境 1. スクリーンショットの対象サンプル 2. seleniumコード 2.0 キャプチャ対象要素を選択 2.1 対象要素をスクロール 2.2 指定した子要素が…

Pythonの時刻周りの処理 システム時刻の変更による影響のメモ

概要 Pythonで、時刻周りの処理を行っている最中に、システム時刻の変更があるとどんな挙動になるのか気になったので調べてメモしておく。 0. 環境 Linux搭載組み込み機器 Python3.5(事情により古いがまあ、どれも変わらないだろう) 時刻同期 time.sleep 影…

OpenSearchでREST APIを使ってCSVファイルのデータを書き込むまでのメモ

概要 ローカルPC上のOpenSearchにREST APIでアクセスしてCSVファイルのデータを書き込んだ。 背景と目的 以前、ローカルPC上nにOpenSearchを立ち上げた。ちょっとした動作確認のため、使っていこうとしたがちょうどいいデータがないので、手元にあるCSVファ…

SageMaker Python SDKで、 "ClientError: An error occurred (ValidationException) when calling the CreateModel operation: RoleArn: Cross-account pass role is not allowed." となるとき

背景 SageMaker Python SDKを使用 ローカルのJupyter Notebookを使用 SageMaker組み込みアルゴリズム randomcutforestを使用 学習済みモデルアーティファクトはS3に格納済み モデルイメージのリージョンとモデルアーティファクトの格納先リージョンは同じ 上…

pythonがインストール済みなのに、コマンドプロンプトでpythonと打つと、Microsoft Storeが立ち上がってしまう場合

ユーザー環境変数Pathのインストール済みのPythonのフォルダをがWindowsAppsフォルダより上に来るように、上へボタンで移動する。

Windows PCのWSL2上のJupyterNotebook環境で、SageMaker ローカルモードのトレーニングを実行してみる

概要 Windows PCのWSL2上のJupyterNotebook環境で、SageMaker ローカルモードのトレーニングを実行しすることができた。 背景と目的 最近、SageMakerの勉強をしている。ちょっとコーディングを試したいが、AWS上のインスタンスを立ち上げずに軽く勉強したい…

requestsおよびboto3のプロキシ設定

requests requestsでは、以下の環境変数を設定することで、プロキシ設定を与えられる。 export HTTP_PROXY=... export HTTPS_PROXY=... また、各リクエスト個別で適用する方法もある。 proxies = { 'http' : 'http://user:pass@host:port', 'https' : 'http:…

Lambda レイヤーのソースコードをアップデートするPythonスクリプト

概要 layerのコードをアップデートするPythonスクリプトを作成した。 背景と目的 Lambda レイヤーのコードをデバッグしていて、手動でアップロードするのが面倒になってきたので、スクリプト化した。 詳細 zipの構造の確認 手動でアップロードする場合、.zip…

boto3を使ってDynamoDBへのクエリを投げるときに、DynamoDBの予約語や特別な文字を含むせいではまったので解決法を調べた

概要 boto3を使ってDynamoDBへのクエリを投げるときに、DynamoDBの予約語や特別な文字を含むせいでうまくいかず色々調べて解決したのでメモする。 背景と目的 boto3でDynamoDBにクエリを投げるとき、 table = boto3.resource("dynamodb").Table(テーブル名) …

ElasticsearchをLambdaから読み書きする

概要 Elasticsearchを、Lambdaから読み書きする方法をメモした。 背景と目的 都合により、Elasticsearchを使用する必要が出た。Lambdaから読み書きしたいので、作業内容をメモしておく。 詳細 1. Elasticsearch 1.1 Elasticsearch ドメインの作成 まず、Elas…

numpy自分用覚書

自分用numpyメモ。 スライス keepdims reshapeの引数に-1を指定 アダマール積 dot inner outer matmul pad repeat random np.random.permutation np.random.choice np.random.randn np.random.random_sample empty zeros_like ワンホットベクトル - カテゴリ…

Pythonのjsonschemaを試しに使う

Pythonのjsonschemaパッケージを使ってみた。 環境 Python 3.7.7 インストール pip install jsonschema 試用 汎用的に使える基底クラスを作ってみた。 import json import jsonschema import typing class DefinedJson: _SCHEMA = {} def __init__(self): se…

AWS IoT Device SDK v2でpublishするときのackCallbackとpacket idについて

概要 AWS IoT Device SDK v2でのpublishで、ackCallbackとpacket idについて旧版との違いがわかったのでメモした。 概要 背景と目的 詳細 0. 参考URL 1. インストール 2. 動かして気づいたことをメモ 2.1 旧版のMQTTのClientオブジェクトに相当するもの 2.2 …

システムシャットダウンの際、Pythonアプリのデーモンを安全に終了する

概要 Pythonアプリのデーモンをシャットダウン時に安全に終了するためのメモ。 背景と目的 Pythonアプリのデーモンを、システムシャットダウン時に安全に終了するための基本的な実装方法を確認する。 詳細 0. 環境 Python3.7 Linux(Debian) 1. 実装 Python標…

Pythonでコーディングしてクラウドシステムの構成図が描けるDiagramsを試した

概要 Pythonでコーディングしてクラウドシステムの構成図が描けるDiagramsを試してみた。 背景と目的 半年前ぐらいに、Pythonでコーディングしてクラウドシステムの構成図が描けるDiagramsというものがあるのを知った。 dev.classmethod.jp しかし、なかなか…

boto3でLambda関数を呼び出すinvokeメソッドの引数ClientContextを使い方を確認

概要 boto3でLambda.client.invokeの引数ClientContextを使い方を確認してメモした。 ランキング参加中DIY 概要 背景と目的 詳細 呼び出し側 呼び出される側 まとめと今後の課題 背景と目的 boto3でLambdaを呼び出す際、呼び出し先関数へ渡すペイロードの仕…

ApacheでFlask Appをデーモンで動かすためのメモ

ApacheでFlask Appをデーモンで動かすときにつまずいたのでメモしておく。 そもそも、なぜデーモンで動かしたいかというと、 デーモンにしない場合、セッション毎(というかアクセス元IPアドレス?何で判断しているのかよくわからないが)に、アプリが別プロ…

Python ログ出力用コードスニペット

概要 Pythonでログを画面出力したり、ファイル出力したりするときのコードスニペットをメモ。とりあえず、自分がすぐに使いそうなもの。 詳細 import logging import logging.handlers as handlers # TimedRotatingFileHandler # ログのフォーマット logForm…

evdevとthreadingでスイッチ操作イベントを非同期で読み取り

概要 evdevとthreadingでスイッチ操作イベントをメインスレッドとは非同期で読み取って処理する簡単な方法を調べたときのメモ。 背景と目的 evdevを使って、スイッチ操作イベントをメインスレッドとは非同期で読み取る必要が出たため方法を調べたところ、asy…

決定木分析 自分用メモ

参考 pythondatascience.plavox.info qiita.com 必要パッケージインストール pip install scikit-learn pip install dtreeviz dtreevizにはGraphvizが必要なので https://graphviz.gitlab.io/_pages/Download/Download_windows.html ユーザー環境変数PATHに…

bluepyでアクティブスキャンをするには

公式ドキュメントに書いてないけど、ソースコードを読む限り、 scanner = Scanner() scanner.scan(passive=False) passive=Falseを引数に与えればよいらしい。公式ドキュメントは、全然メンテナンスされていないらしい。。。

bluepyでiBeaconを探す

bluepyのサンプルコードを参考に、 scanner = Scanner() devices = scanner.scan(10.0) for dev in devices: for (adtype, desc, value) in dev.getScanData(): print " %s = %s" % (desc, value) とすると、 desc = "Manufacturer" value[0:8] = "4c000215"…

ESP32向けmicropythonで、FFTをする自作モジュールを作る

概要 ESP32用のMicroPythonで、FFTをする自作モジュールを作る。 背景と目的 前回、ESP32用のMicroPythonで、C実装の自作モジュールを作る環境が整った。今回は、この環境を使ってFFTをする自作モジュールを作る。なお、PythonでそのままFFTの計算をコーディ…

ESP32向けのmicropythonで、Cで実装した自作モジュールをESP32上で動かす【修正版】

概要 ESP32向けのmicropythonで、Cで実装した自作モジュールを作成した。 背景と目的 かつて、micropythonをESP32で動かして遊んでみたのだが、それ以来ほとんど触っていなかった。しかし、最近とある事情でESP32向けのmicropythonで、Cで実装した自作モジュ…

FlaskアプリをApache2で動かしたときの挙動を確認(スクリプト内(.py)のモジュールレベル変数について)

概要 FlaskアプリをApache2で動かしたとき、Flaskアプリスクリプト内モジュールレベル変数は、ずっと保持されることを確認できた。 背景と目的 FlaskアプリをFlaskの開発用サーバ(localhost:5000)で動かしたときは、Flaskアプリを構成しているPythonスクリプ…

bluepyのインストール時に、glib.h、glibconfig.hがないと言われてうまくいかなかったので対処

概要 bluepyのインストールで、glib.h、glibconfig.hがないといわれたが、対処し無事インストールできた。 ランキング参加中DIY 背景と目的 あるLinuxのシステムで、pipでbluepyをインストールしようとしたところ、glib.h、glibconfig.hがないと言われてうま…