工作と競馬2

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

Python

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

概要 boto3でLambda.client.invokeの引数ClientContextを使い方を確認してメモした。 概要 背景と目的 詳細 呼び出し側 呼び出される側 まとめと今後の課題 背景と目的 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がないといわれたが、対処し無事インストールできた。 背景と目的 あるLinuxのシステムで、pipでbluepyをインストールしようとしたところ、glib.h、glibconfig.hがないと言われてうまくいかなかったので対…

PythonアプリからブラウザアプリへMQTTで送信

概要 PythonアプリからブラウザアプリへMQTTでメッセージ送信するための簡単なテストプログラムを作成し、動作確認した。 背景と目的 Raspberry Pi上のPythonアプリ側から、そのUI系として用いているクライアントサイドWebアプリ(以下、ブラウザアプリ)に対…

scikit-learnのインストール

概要 Raspberry Piに、scikit-learnをインストールしようとして、 pip3 install scikit-learn とやったが、うまくいかなかったのでやり方を変えてうまくいったときのメモ。 実施条件 Raspberry Pi 4 Model B 2020-02-05-raspbian-buster-full.img Python3.5…

2020-02-05-raspbian-buster-fullで、Python3.5.3をインストールする

概要 2020-02-05-raspbian-buster-fullで、Python3.5.3を無事インストールできた。 背景と目的 とある事情で、2020-02-05-raspbian-buster-fullで、Python3.5.3をインストールする必要が出たので、方法をメモる。 詳細 0.条件 Raspberry Pi 4 Model B 2020-0…

pandas自分用覚書

pandasでよく忘れるので自分用覚書。 基本 ドキュメント https://pandas.pydata.org/pandas-docs/stable/ インポート import pandas as pd CSVの読み取り DataFrame型で返ってくる df = pd.read_csv(ファイルパス) 列名がないときに自分で与える df = pd.rea…

Raspberry Pi 4 で機械学習系のパッケージを入れる(numpy, scipy, pandas, sklearn, matplotlib, tensorflow, keras)

概要 Raspberry Pi 4 で機械学習系のパッケージをインストールしたときのメモ。 背景と目的 Raspberry Pi 4 で機械学習系のパッケージを入れたので手順をメモしておく。 詳細 1. 実施条件 Raspberry Pi 4 Model B 2020-02-05-raspbian-buster-full.imgを焼い…

signalを受信する

概要 Pythonで、シグナル)を受信する方法を調べ、実装して動くか試した。 背景と目的 Pythonで、シグナル)を受信する必要が出たので、方法を調べ、実装して動くか試す。 詳細 1.Pythonの標準モジュール signal Pythonには、はじめからシグナルを扱うためのモ…

とにかくCSVを可視化する

# coding: utf-8 """ とにかくCSVを可視化する """ import json import codecs import numpy import datetime import os from matplotlib import pyplot as plt import pandas as pd MYDIR = os.path.dirname(__file__) def visualize(df, options={}): """ …

pigpioで任意波形の出力

概要 pigpioで任意波形の出力を試した。 背景と目的 先日、pigpioのHardwarePWM機能を使ってパルス出力をしたのだが、時間精度のよい任意波形の出力が必要になった。そこで、pigpioのwave_*****関数群を使って、任意波形を出力するコードを書いて動作を試す…

pigpio(のPythonモジュール)を使ってPWM波形を出力する

概要 pigpioを使って、Pythonから簡単にPWM波形が出力できた。 背景と目的 Pythonを使って、PWM波形の出力を試す。 詳細 0.参考 abyz.me.uk 1.インストール 以下を実行すれば、インストール完了。 sudo apt-get update sudo apt-get install pigpio python-p…

pigpioのCライブラリを使ったC/C++プログラムをPythonから利用する

概要 pigpioのCライブラリを使ったC/C++プログラムをPythonから利用する方法をまとめた。 背景と目的 Raspberry Pi用のGPIO制御ライブラリであるpigpioは、C言語用とPython用のライブラリが用意されているが、都合によりC言語用のpigpioライブラリを使って作…

Python2と3での違いでハマったところをメモ

概要 最近、Python2から3に乗り換えた。多少の違いがあるとのことだったが、多少ではなく結構違いがあってハマったのでメモしておく。必要があれば今後も追記。 詳細 base64.b64encode bytes, str, unicodeの扱いが変わったことによる差だろうからじっくり考…

ラズパイオーディオにシャットダウン/起動用ハードボタンをつける

概要 ラズパイオーディオにシャットダウン/起動用ハードボタンをつけた。 背景と目的 ラズパイオーディオで、Webブラウザアプリからいろいろいじくっていると、ときどき操作ができなくなって しまう時があったりする。そういうときに再起動したいのだが、SSH…

Boostnoteで下書きしたMarkdown文書をはてなブログに簡単に投稿するスクリプトを作成

概要 Boostnoteで下書きしたMarkdown文書をはてなブログに簡単に投稿するためのスクリプトを作成した。 背景と目的 私は、最近Boostnoteというノートアプリがお気に入りでよく使っている。 このアプリはMarkdown記法で書けるので便利なのだが、唯一ブログへ…