Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

python

Python3の標準ライブラリのみでCGI その2:多少の並行処理ができるようにする

前回の例ではhttp.serverの仕様上、リクエストを一個しか処理できません そこで、複数処理ができるようにthreadingを使って逃げてみます ……pythonで並列処理ってあまりいい思い出が無いですけどね(白目 実際のところ import http.server import socketserve…

Python3の標準ライブラリのみでCGI その1:とりあえず簡単なモノ

業態上、作るシステムは小型なのが多いです。 大規模アクセスはそもそも仕様外なのでCGIでも十分なケースは少なくありません。 CGIというとPHPのイメージがあるのですが、仕組み上はPythonだろうがLispだろうが実行はできるおのこと。 実際のところ とりあえ…

Python3でUNIXソケットを経由して受信する

UNIXソケットはシステム内のプロセス間で完結する通信であれば、早くて安全です。 要はローカルファイルの読み書きなので 実際のところ UNIXソケット"/tmp/my_socket"を受信し、 パケットのバリデーション(今回は12ケタで英小文字と数値)を実施するスク…

"command data1 data2"なテキストを判定する単純な話

I2C等等、単純な文字列でくるパケットのソートのお話 今まではgrepで処理やってました が、これスペース区切りである事が前提であれば、区切り文字で配列に突っ込むだけで良い 実際のところ def send_response(str): # 本来は何か素敵な出力をしてくれます p…

試験用にランダムなメールアドレスを生成してみる

実際のところ import random import string # ドメインの設定 DOMAIN = "example.com" # 英単語のリスト (必要に応じて追加・変更してください) WORDS = ["apple", "banana", "cherry", "date", "elderberry", "fig", "grape", "honeydew"] def generate_ema…

4-5次ルンゲ=クッタ法とオイラー法の比較

ロボットアーム制御の勉強をしていたところ、ルンゲ=クッタ法なる言葉がでてきました。 将来位置・速度の予想という事でオイラー法は何となく知ってましたが……ルンゲ=クッタ法は言葉も思い出せず(実際やっていないかもしれない)。 というわけで、どうも一…

OpenCV for pythonでMJPEG用のテスト画像をつくる

import cv2 class MyVideoCapture(): def createTestImage(self,count): # 画像の解像度 image = np.zeros((480, 640, 3), dtype=np.uint8) # テキストのフォントとスケール font = cv2.FONT_HERSHEY_SIMPLEX font_scale = 2.0 # テキストの色(白) text_co…

BottleでUSBカメラの動画を配信する簡易サイトをつくる その2:MotionJPEGにOpenCVで細工する

shuzo-kino.hateblo.jp から発展して、OpenCVで加工して出力するようにします 実際のところ 参考もと

tkinterで指定秒ごとに実行する処理

実際のところ import tkinter as tk def say_hello(): print("Hello, world!") root = tk.Tk() root.after(2000, say_hello) # 2秒後にsay_hello関数を呼び出す root.mainloop()

tkinterでメッセージボックスの確認まで処理を待つ挙動を実装する

実際のところ import tkinter as tk import tkinter.messagebox def preprocess(): #ここに前処理めいたの print("preprocess") def mainprocess(): #ここに本処理 print("main process") def button_click(): print("Button clicked") preprocess() result …

Azure Functionsをつかう その3:Azure IoT Hubと連動する

実際のところ Azure from azure.iot.device import IoTHubDeviceClient, Message import json import time import random import os # Read the config file with open('config.json', 'r') as f: config = json.load(f) CONNECTION_STRING = config['CONNEC…

Raspberry Pi Pico Python SDK その3:I2Cマスター

実際のところ from machine import Pin, I2C import utime slaveAddress = 0x42 registerAddress = 0x06 writeData = b'123' i2c = I2C(0, scl=Pin(9), sda=Pin(8), freq=100000) #接続先を調べる i2c.scan() #slaveAddressに対し書き込み i2c.writeto(slave…

Raspberry Pi Pico Python SDK その2:アナログ入力

実際のところ from machine from utime adc = machine.ADC(26) #26番pinを割り当て white True: value = adc.read_u16 #16bitな値で読み取り print(value) utime.sleep(1) 4だと内部温度計を使える模様 参考もと PythonSDK公式資料 GitHub - raspberrypi/pic…

Raspberry Pi Pico Python SDK その1:デジタル入出力

実際のところ 出力 from machine import Pin led = Pin("LED", Pin.OUT) #出力として設定 led.value(1) #High led.value(0) #LOW 入力 from machine import Pin pin16 = Pin(16, Pin,IN, Pin,PULL_UP) #16番ピンをプルアップで入力待ち pin16.irq(lambda pin…

AzureのIoT系をつかう その10:データを取得してstreamlitで出す

実際のところ config.json { "IOT_HUB_CONNECTION_STRING": "Your IoT Hub Connection String", "DEVICE_ID": "Your IoT Device ID", "INTERVAL": 10 } streamlit_azure.py import streamlit as st import time import json from azure.iot.hub import IoTHu…

Raspberry Pi 3B+とRaspberry Pi Picoを連動させる その1:下準備

実際のところ Raspberry Pi Picoの開発環境 本来の性能を活かすのであればC/C++なのですが……今回はmicroPython MicroUSBコネクタ近くについてるBOOTSEL ボタンを押下したままの状態でUSBをPCに接続。「RPI-RP2」みたいな外部ストレージとして認識されるので…

AzureのIoT系をつかう その10:RasPi用Grove拡張基盤と連動した動きをつくる

これまでの総決算としてRasPi用Grove拡張基盤を経由したサンプルを作ります。 実際のところ 装置まわり これまでと同様、機体はRaspberry Pi 3B+にRaspberryOS 64bitを使用。これに、SeeedStudioのGroveBaseHATを追加します。SeeedStudio Grove Base HAT for…

AzureのIoT系をつかう その8:実物RasPiで指令データをうける

実際のところ config.json { "connectionString": "Your Primary Connection String Here", "interval": 2000 } index.js(node.js版) 新しいライブラリとしてonoffを導入します $ npm install onoffこの状態で const fs = require('fs'); const device = req…

AzureのIoT系をつかう その7:実物RasPiからデータを送る

実際のところ shuzo-kino.hateblo.jp でデバイス登録とRasPiにIoT Hub用のnodeJs環境が構築されている状態を想定します。 config.json { "connectionString": "Your Primary Connection String Here", "interval": 2000 } index.js(node.js版) const fs = re…

python-fuで画像を弄る その2:画像の自動生成

実際のところ from gimpfu import * def create_image_with_text(filename, text): # Create a new image image = gimp.Image(320, 320, RGB) # Create a new layer layer = gimp.Layer(image, "Background", 320, 320, RGB_IMAGE, 100, NORMAL_MODE) # Add …

python-fuで画像を弄る その1:とりあえず使ってみる

実際のところ Gimpを開いて「フィルター」 =>「 Python-fu」 手元環境では何故かPython2.7系と古い上に、メソッド中で空白を入れるとインデント不正で怒られる……。 試す 外付けストレージ"D"の特定パターンの画像に赤い丸を from gimpfu import * import glo…

Jupyter Notebookを本体ごととめる

実際のところ pythonのプロセスを(一時的にでも)とめる 起動したプロセスをpsで調べても 6836 ? Ssl 0:02 /usr/bin/python3 -m ipykernel_launcher -f /home/shuzo/.local/share/jupyter/runtime/kernel-89930c09-2f34-421e-bd36-1956961c76ee.jsonという…

データサイエンスに向いたPython用可視化ツールstreamlit その5:表示をカラム分けする

実際のところ import streamlit as st import sqlite3 import pandas as pd import plotly.express as px from datetime import datetime, timedelta # Connect to SQLite database con = sqlite3.connect("logging_data.db") # Get data from loggingData t…

データサイエンスに向いたPython用可視化ツールstreamlit その4:SQLite3と組み合わせる

多分、意図通りの使い方の一つであろう、DBとの組み合わせ……ということでSQLite3と組み合わせた例を 実際のところ グラフはplotlyとの連動で生成します。 steamlitはplotlyとの組み合わせ用メソッドを標準で持っているため、グラフ部分は完全に任せてしまっ…

データサイエンスに向いたPython用可視化ツールstreamlit その3:ロボットアームxArmと連動したサンプル

実際のところ { "xarm_ip": "192.168.1.100", "max_value_x": 500, "min_value_x": -500, "max_value_y": 500, "min_value_y": -500, "max_value_z": 500, "min_value_z": -500, "speed": 100 } import json import streamlit as st from xarm import versio…

データサイエンスに向いたPython用可視化ツールstreamlit その2:画像を読み込んで判定するスクリプト

実際のところ import streamlit as st from skimage import io, color, feature, draw from skimage.transform import hough_circle, hough_circle_peaks import numpy as np def find_circles(image, min_radius, max_radius): gray_image = color.rgb2gray…

データサイエンスに向いたPython用可視化ツールstreamlit その1:環境構築

データの可視化で簡単に使える例としてNode-Redのdashboardを使っていました。 が、時系列データの表示には必ずしも向いていなかった事もあり難儀していたところ……知人からsteamlitを勧められたので、使ってみました。 実際のところ いわゆるデータサイエン…

Github copilotをつかう その3:自動出力をもう少し遊ぶ

実際のところ コメントから内容を推測 # return random 30 charactors string def make_random_string(): return ''.join([chr(random.randint(0, 255)) for i in range(30)]) 少し突っ込んで、以下のような感じで返り値に細工をした状態で # return raudom …

Github copilotをつかう その2:VSCodeにいれる

実際のところ GitHub Copilot の概要 - GitHub Docsを元にやります。VSCode ポップアップが表示され、Visual Studio Code を開くように求められます。 [Open Visual Studio Code] をクリックします。 Visual Studio Code の [Extension: GitHub Copilot] タ…

psutilライブラリで実行中プロセスを停止させる

実際のところ 導入 $ pip3 install psutil 使い方 import psutil # 対象プロセス名 process_name = "YOURDUTY" # 対象プロセスを探す for proc in psutil.process_iter(): if proc.name() == process_name: # プロセスを終了する(タスクによっては管理者権…