Bye Bye Moore

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

python

chromium+selenium+RasPiで動いていたパーサーをAWS LightSailに載せ替える

shuzo-kino.hateblo.jp のシリーズの実質的続編。これまではseleniumで動くパーサーをRasPi4Bに載せて運用していました。 RasPi4BはARMコアなので少し環境づくりが面倒だったこと、それ以上にずっと繋いでないと動かない仕様もどうかと思い、載せ替えを検討…

【読書メモ】プログラミングROS ―Pythonによるロボットアプリケーション開発 (オライリー・ジャパン)

プログラミングROS ―Pythonによるロボットアプリケーション開発 (オライリー・ジャパン)作者:Morgan Quigley,Brian Gerkey,William D. SmartオライリージャパンAmazonとある案件でお客先が読んでいたので、参照ついでに手に取ってみました。 rospyを使ってRO…

シェルコマンドを実行するsubprocessで結果を格納するアレコレ

shuzo-kino.hateblo.jp の一年半越しの続き。subprocessでシェルコマンドを実行するのはいいけど、その結果を格納する方法について 実際のところ import subprocess res = subprocess.run(["pwd"]) #>> /home/shuzo res #>> CompletedProcess(args=['pwd'], …

OpenPIVをWSL2上をためす その4:動画もイケる

PIVの元データを作る場合、その形式はハイスピードカメラから吐き出される動画である可能性が高いです。 それの切り出しは手動で切り出しなのかなと思ってましたが……ちゃんと動画のままやる方法が公式チュートリアルにありました。 実際のところ 元データを…

OpenPIVをWSL2上をためす その3:matplotlibで表示を工夫する

OpenPIVのデフォでは、ベクトル矢印で表示されますが、これをMatplotlibをつかって別の表現方法で試してみます。 実際のところ まずmatplotlibとは何者か 公式から説明を引用すると…… Matplotlib is a comprehensive library for creating static, animated,…

ngrokで自社ネット運用のRaspiを外に開放したりwebhookを受け取ったりする

Raspiでローカル用Web鯖立てれば、スマホをタッチディスプレイ代わりに出来たり、同一ネット内の装置と通信できたりで便利です。 ……が、どうして人間、欲がでるもの。 外のシステムとの通信……例えばwebhookの受け口が欲しかったり、一々ネットワーク再接続が…

Python3でファイルを削除したい場合removeかunlink

Python3でファイルを削除したい場合、標準のOSモジュールにあるremoveメソッドかunlinkメソッドをつかいます。 後者はいままで全く知らず、ファイルポインタの解放くらいの意味で読み飛ばしてたので少し積みました(隙自語) 実際のところ "/your/file/path"…

Ubuntu 20.10 on Raspberry Pi 4B にSeleniumの環境を構築してスクレイピング その4:healessでもクリックしてダウンロードする

shuzo-kino.hateblo.jp の続き。前はブラウザ表示してからやるパターンですが、今回はヘッドレスモードの時。 実際のところ #!/usr/bin/env python3 # -*- coding: utf-8 -*- import time from selenium import webdriver from selenium.webdriver.chrome.op…

selenium + pythonな状態でスクショをとる

動作状態を確認したり、なにがしか通知に活かすためスクショが欲しい事ありますよね。 幸い、seleniumにはスクショ機能が備わっています。 実際のところ SSH接続のリモートデバイスから、特定のサイトにログインしてスクショを撮るだけのサンプルは以下の通…

動いてたseleniumのプロセスが「selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service」いうて動かなくなったら……再起動するかchromeのプロセスを確認する

Raspberry Pi 4B上に組んでいたselemiumのテストをしていたところ、 途中から「selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service」というエラーを吐いて動かなくなりました テスト中というのがミソで、正体はちゃん…

【読書メモ】スクレイピング・ハッキング・ラボ Pythonで自動化する未来型生活 (技術の泉シリーズ(NextPublishing))

スクレイピング・ハッキング・ラボ Pythonで自動化する未来型生活 (技術の泉シリーズ(NextPublishing))作者:齊藤 貴義発売日: 2020/09/04メディア: オンデマンド (ペーパーバック)

Ubuntu 20.10 on Raspberry Pi 4B にSeleniumの環境を構築してスクレイピング その2:ログインしてページ遷移

shuzo-kino.hateblo.jp の続き。 今度は、よくあるログインページを経由してトップページに遷移する方法について。 実際のところ 実行環境 Raspberry PI 4B 8Gbyte Ubuntu 20.10 python3.8 Chromium 88.0.4324.150 snap ChromeDriver 88.0.4324.150 スクリプ…

RaspberryPi 4B上に組んだSlenium環境にSSHで繋いだらリモートデバッグ扱いになるので適正なオプションをつける

RaspberryPi 4B上に組んだSlemium環境にSSHで繋いだところ、”DevToolsActivePort file doesn't exist”とエラーに。 調べてみたところ、SSH越しではChromeのリモートデバッグという扱いになるようで、Selemiumにも適正なオプションをつけないといけないらしい…

Ubuntu 20.10 on Raspberry Pi 4B にSeleniumの環境を構築してスクレイピング その1:環境構築とお試し

一日に一度、特定のサイトからファイルをダウンロードして別のサーバーにアップロードするという、実にクリエイティブな仕事が発生しました。しかも遠くにある機体の内部でやれと……。一瞬、そいつ用のラックトップPCに環境構築して送り付けようかと思いまし…

Python3.6から導入されたフォーマット済み文字列リテラル

sprintfみたいなノリで、フォーマットの差し込みができるリテラルが3.6からついた様子。 実際のところ 10進数を文字列として埋め込む value = 999 f"Value : {str(value)}\r\n" #>>>'Value : 999\r\n' print(f"Value : {str(value)}\r\n") #>> Value : 999 …

subprocessでホームディレクトリの省略記法'~'を使うときはshellオプションをTrueにする

Pythonでshellを使えるsubprocessは何かと便利ですが 実際のところ 単にホームディレクトリを見るだけの場合、チルダを使って楽したいところですが……素のsubprocessだとエラーになります。 subprocess.run(["ls", '~/']) #>> ls: cannot access '~/': No suc…

【読書メモ】Pythonをおぼえた人がGUIアプリケーション開発をするためのtkinter速習入門: 標準ライブラリでGUI作成

Pythonをおぼえた人がGUIアプリケーション開発をするためのtkinter速習入門: 標準ライブラリでGUI作成作者:辛島信芳発売日: 2019/02/01メディア: Kindle版仕事上の必要でGUI作る羽目になり、手っ取り早いということでtkのpython移植版であるtkinterを使いま…

ルートユーザー状態で、他ユーザー扱いでコマンドを実行する

pipの依存パッケージの関係で、ルートユーザーでは入れてないけど特定ユーザーでは入ってるパッケージがあったとします。 実際のところ $ sudo /usr/bin/python3.7 Python 3.7.3 (default, Dec 20 2019, 18:57:59) [GCC 8.3.0] on linux Type "help", "copyr…

Boto3でAWSにアクセスする その2:S3にアップロードする

ではおまちかね、ファイルをぶっこんでいきます。 実際のところ 本当にぶん投げるだけなら、そのまんまメソッドよむだけ。便利。 import boto3 s3 = boto3.resource('s3') bucket = s3.Bucket('YOUR_BUCKET') bucket.upload_file('./image000.jpg', 'image00…

Boto3でAWSにアクセスする その1:接続情報の設定とS3の接続

AWSのPython用SDKとしてBoto3というのがあります。 こいつを使って、RasPiのファイルをS3にあげる動きを実装してみます。 実際のところ AWSのIAMアカウントを生成 AWSマネジメントコンソールから、IAM IAMコンソールのダッシュボード ユーザー 「既存のポリ…

PowerShellのPython3で文字列をおくりたいけど文字コードがcp932になっていて面倒なとき

最近は客先のWindowsで作業する事がおおくなりました。 PowerShellがソコソコ使えるので何とかなってますが、時折妙なクセがあったりしますね。 今回はそんな変なクセの一つ、Pythonの標準文字コードがなぜかSJISになってることと、その対処について。 実際…

RasPi 3B+ とOpenCVによる色範囲の抽出 その1:HSV色空間のフィルタツールをやってみる

Raspberry Pi 3B+ とWaveshare社OV5648USBカメラをつかって、 MaixBit + MaixPyでやっていた事を再現するという目標。 shuzo-kino.hateblo.jp 実際のところ 公式の閾値サンプルをもとに、一枚の画像の閾値を弄るサンプルとして改編。 import cv2 as cv max_v…

【地獄のバッドノウハウ】シリアル通信でコマンド送るタイプの装置が急制動するような場合、「tail -f」で監視し続けると動くことがある

shuzo-kino.hateblo.jp でやった事ですが、今日周辺で似たことがあったので。シリアル通信でコマンド送るタイプの装置……たとえばシリアルサーボなんかがあります。 それまでArduino IDEやminicomではちゃんと動いてくれたのに、 echoで単発のコマンド叩いた…

Python組み込みのprint関数には末尾の指定オプションがある

nt関数には末尾の指定オプションがあります。 実際のところ print関数の引数"end"に空文字を指定すると b="\x01\x02" print(b, end="") $ python3 sample.py | xxd -ps 0102 このendにはhex値を渡すこともok。 例えば、パケットの先頭としてよく使われる"0x7…

高機能なGPSモジュールZED F9Pをつかう その3:RasPiでつかうときはボーレートを自力で変更する

RaspberryPiで使用する場合、i2cのボーレートを上げないといけません qwiic.QwiicUbloxGps().address ============================================================================ NOTE: For and of the ublox gps units to work on the Raspberry Pi, I…

高機能なGPSモジュールZED F9Pをつかう その2:NMEAフォーマットを扱う

以前の記事でも紹介した通り、GPS信号はNMEAフォーマットというのできます。 これが最高に使いづらく、一々使い捨てパーサーを書くのもなんか負けた気がします。環境がPythonの場合は、パーサーライブラリがあります。 ユーザーが多い環境は便利だなぁ(白目…

高機能なGPSモジュールZED F9Pをつかう その1:Qwiicコネクタ

ZED F9Pはublock社の出している高機能なGPSモジュールです。 いわゆるフィールドロボティクスでも活用されてる github.com 参考もと www.sparkfun.com learn.sparkfun.com Qwiic HAT for Raspberry Pi Hookup Guide - learn.sparkfun.com www.sparkfun.com

【読書メモ】実践GAN ~敵対的生成ネットワークによる深層学習~

実践GAN ~敵対的生成ネットワークによる深層学習~ (Compass Booksシリーズ)作者:Jakub Langr,Vladimir Bok発売日: 2020/02/28メディア: 単行本(ソフトカバー)機械学習はまるで分野外だったのですが、勉強会でめっちゃ凄い本が紹介されたので衝動買い。お堅…

Sipeed Maix Bitで遊ぶ その4:特定の色を検知したときにフラグ

前回はカラーピッカーをやりました。 では、特定の色を検知した場合、何らかのフラグを立てるには……? 実際のところ import sensor, image, lcd, time lcd.init() sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) se…

Sipeed Maix Bitで遊ぶ その3:カラーピッカー

実際のところ import sensor, image, lcd, time sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.run(1) sensor.skip_frames(30) sensor.set_auto_gain(False) # must be turned off for color tracking sens…