- 1. Azure IoT Hub に paho で pub/sub (CA 認証)
- 2. [Python]変数や引数として扱うCallableオブジェクトに対する型アノテーションの書き方
- 3. [python]ライブラリramkanのインストールでエラーになる
- 4. pythonistaでScroll Viewの実装方法1
- 5. pythonでスプレッドシートとSlackを連携させてBOTを作ってみる2/2(python+gspread+slackbot)
- 6. 複数ファイルでのParquet・HDF5でのVaex・Daskなどのパフォーマンス比較
- 7. pythonでextension methodを実装してみる
- 8. AtCoder 緑が Go で解いてみた
- 9. Pygame2 for Multi touch device
- 10. Tk.textでログ表示させるときのハマりポイント
- 11. Azure IoT Hub の SAS トークンの作り方
- 12. 元画像処理エンジニアがサイゼリヤの間違い探しをOpenCVで解いてみた
- 13. 生物トラッキングのDeepLabCut動かしてみた
- 14. pythonからgoogle cloud platformのinstanceを動かすまで
- 15. 写真を読み込んで手書きスケッチ。zoom機能付。作ってみた。
- 16. Synology DSMのタスクスケジューラーでpython実行時に起こるインポートエラーの回避方法
- 17. [Django] Formからの値の取得
- 18. Azure IoT Hub に paho で pub/sub
- 19. Dlibのインストールでエラーが出るときの対処(Ubuntu)
- 20. python3.9には誰も注目していない新機能が・・・
Azure IoT Hub に paho で pub/sub (CA 認証)
こちらのプログラムを SAS トークンから CA 認証に変更しました。
[Azure IoT Hub に paho で pub/sub](https://qiita.com/ekzemplaro/items/5bb6c666d9ddb0127a0f)“次のファイルが必要です。
“`text
/etc/ssl/certs/Baltimore_CyberTrust_Root.pem
devicethird.pem
devicethird.key
“`devicethird.* は openssl で作成します。
“`py:publish_ca.py
#! /usr/bin/python
#
# publish_ca.py
#
# Jan/19/2020
# ——————————————————————
import sys
from paho.mqtt import client as mqtt
import ssl# ————————-
[Python]変数や引数として扱うCallableオブジェクトに対する型アノテーションの書き方
Pythonで関数やメソッドを変数や引数(Callableオブジェクト)として扱う必要が出て来る時があります。
そういった時の型アノテーション周りについて備忘録も兼ねて記事にしておきます。
# 使う環境
– Python 3.8.5
– VS Code
– VS Code拡張機能のPylance(型チェックや補完用)
– ※詳細は以前書いた[[Python]PylanceのVS Code拡張機能をさっそく使ってみた。](https://qiita.com/simonritchie/items/33ca57cdb5cb2a12ae16)などの記事をご確認ください。# まずは型アノテーションの無い状態
とある以下のような関数があり、引数に関数のオブジェクト(`func`)と任意の値(`x`)を受け付けるとします。
“`py
def any_function(func, x):
return func(x)
“`当たり前ですがこれだとVS Code上でマウスオーバーしてみても型などの情報がUnknownとなってしまいます。Pylance(Pyright)など
[python]ライブラリramkanのインストールでエラーになる
[ramkan](https://pypi.org/project/romkan/)はローマ字/仮名変換用のライブラリ。
インストールする際にエラーが起きたので忘備録。## エラー内容
ramkanのインストール
“`
$ pip3 install romkan
“`するとこういうエラーが起きる。
“`
Collecting romkan==0.2.1
Downloading romkan-0.2.1.tar.gz (10 kB)
ERROR: Command errored out with exit status 1:
command: /home/scaruadmin/venv/bin/python3 -c ‘import sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘/tmp/pip-install-8y_m14tz/romkan_f9a5712add8043608044b16dab0fc01c/setup.py'”‘”‘; __file__='”‘”‘/tmp/pip-install-8
pythonistaでScroll Viewの実装方法1
# はじめに
地図をスクロールしながら見ている時の様に、
大きな画像の一部を画面に表示して、スクロールさせる。
これは uiライブラリのscroll View を、使用すれば実装できます。# 環境
ios + pythonista3# 使用ライブラリ
ui ライブラリのviewを使用します。
“`
import ui
“`[pythonista ui ドキュメント](omz-software.com/pythonista/docs/ios/ui.html)
pythonistaのドキュメントは、それなりに丁寧に記載されているので 初心者でもある程度
分かります。
英語が優しいのか、自動翻訳様のお力を全面的にお借りしている身でも なんとか理解できました。# とりあえず実装してみる
“`php:scrollview_image.py
#! python3
#
# 20210118 ver001 scrollviewに大きな画像を見て表示してスクロールを実装。
#import ui #scrllviewやimageviewを表示するライブラリ
cla
pythonでスプレッドシートとSlackを連携させてBOTを作ってみる2/2(python+gspread+slackbot)
##はじめに
[前回の記事](https://qiita.com/KScookie/items/580d000d1eda58bfa8b4)では、Slack上でスプレッドシートにあらかじめ登録されている単語をBOTに送信すると、その意味を返してくれるというところまで実装しました。今回はその続きです。
##やりたいこと
* 単語の登録* 登録されている単語の一覧出力
* 単語の削除
* これら全てSlack上で完結させる
##コードを書いていく
コードを追加するのはmy_mention.pyだけです。
“`python:my_mention.py
@respond_to(‘登録:(.*)’)
def mention_func2(message, entry_word):
entry_list = entry_word.split()
entry_len = len(entry_list)
values_list = worksheet.col_values(1)
if entry_len == 2:
gyou = len(values_list
複数ファイルでのParquet・HDF5でのVaex・Daskなどのパフォーマンス比較
先日[単一のファイルでのCSV・Parquet・HDF5におけるPandas・Dask・Vaexの簡単なパフォーマンス比較](https://qiita.com/simonritchie/items/a1a18a36de3c658cf816)をしました。
ただ、普段の作業では時系列データなどでたくさんのファイルを扱ったりすることが多いため、今回は複数ファイル・且つ普通に扱うとメモリが結構きついくらいの行数も含めてざっとパフォーマンス比較をしていきます。
# TL;DR
– 今回試した時系列想定のデータでは思っていたほどVaex + 未圧縮HDF5とVaex + Snappy圧縮されたParquetで差が出ませんでした。取り回しのしやすさやファイルサイズなどを考えるとSnappy圧縮のParquetは結構良い選択に思えます。
– ※前回の単一ファイルでの比較では、1つのファイルで行数がもっとぐぐっと多い場合にはHDF5の方がParquetよりも速かったので、1つのファイルだけで大量のデータが入っているようなケースだとHDF5が輝いてきそうです。
– PandasやDaskは時系
pythonでextension methodを実装してみる
# extension method(拡張メソッド)とは
– [拡張メソッド (C# プログラミング ガイド)](https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/extension-methods)より
> 拡張メソッドを使用すると、新規の派生型の作成、再コンパイル、または元の型の変更を行うことなく既存の型にメソッドを “追加” できます。
# 実装してみる
C#のような拡張メソッドの実現は困難なので、ここでは拡張用クラスで対象型のインスタンスをラップして、オブジェクト指向的なメソッド実行が可能、もしくは、単なる関数として実行可能であることを目指します(継承ではなく、移譲によるプログラミング)。[公式ドキュメント](https://docs.python.org/3/howto/descriptor.html#functions-and-methods)によると、`__get__`を実装することで、関数として振る舞うか、メソッドとして振る舞うか制御可能な
AtCoder 緑が Go で解いてみた
## Go は AtCoder に向いているのか
最近 Go の標準的な package には max 関数がなかったり、型の縛りがかなりキツかったり、色々厳しい面があるという話を聞いたので、Python3 と比較して実際にどれぐらい厳しいのか試してみた。
## ABC188 を解いてみる
### A
https://atcoder.jp/contests/abc188/tasks/abc188_a
バスケでスリーポイントを決めると逆転する展開かどうかを判定するという問題。入力は宣言した型に対して、`fmt.Scan(&a)` で入れられるらしい。
“`a.go
package mainimport (
“fmt”
“math”
)func main() {
var X, Y int
fmt.Scan(&X, &Y)
if math.Abs(X-Y) < 3 { fmt.Print("Yes") } else { fmt.Print("No") } } ``` これで問題無いだろうと思ったが、どうやら `math.Abs()` は引数に `fl
Pygame2 for Multi touch device
Android で python の pygame 動くんだったら、ボタンつけて操作できるとこまでやってみよと…
調べてると、 kivy というのが UI デザイン言語であって、じゃあこれで pygame で Android 向けに作れる、と思いこんでチュートリアルを一個やってみたら、なんかこれ kivy で全部書かないといけないんじゃない?とわかってきた。
ボタンだけ付け足したいのに、 kivy でコーディングするってことになると pygame は使えないからそこでやめて、 pygame でタッチデバイス用に押したりできる関数ないか調べると、あるけど。
あるけど、というか使い方がドキュメントには書いてないので想像がつかない。
でも、できるんだろうなと悶々と3日くらい、でも、でも、できるはずなんだな、ともやもやもやもやしていたが、サンプルコードをつけて本に書いてくれている人がいるのを見つけて、コードを貼って、少し足してやってみた。
pygame 4000 book
https://pygame.itch.io/pygame-book/devlog/204497/new-
Tk.textでログ表示させるときのハマりポイント
#初めに
職場でメモリリーク問題でトラブった調査してたら予想外の罠が見つかったので投稿します。
ちょっと乱文になると思うのですがご容赦ください。#環境
OS:Windows10“`powershell:Anaconda PowerShell Prompt
(base) PS C:\Users\95315> python -V
Python 3.6.10 :: Anaconda, Inc.
(base) PS C:\Users\95315> conda -V
conda 4.9.2
(base) PS C:\Users\95315>conda list
…
tk 8.6.8 hfa6e2cd_0
…
“`#何がしたかったのか
https://tkdocs.com/tutorial/text.html
上記ページのExample: Logging Windowの節を参考して欲しいのですがロガーの内容を引っ張ってTk.textで表示するプログラムを作ってました。
要は下のコードで
Azure IoT Hub の SAS トークンの作り方
参考ページ
[az iot hub generate-sas-token](https://docs.microsoft.com/en-us/cli/azure/ext/azure-cli-iot-ext/iot/hub?view=azure-cli-latest#ext_azure_cli_iot_ext_az_iot_hub_generate_sas_token)“`bash
az iot hub generate-sas-token -n iot-aa
“`実行結果
“`text
$ az iot hub generate-sas-token -n iot-aa
{
“sas”: “SharedAccessSignature sr=iot-bb.azure-devices.net&sig=dsEOdeubZMhRFMab7KhTcijzc%2BNaiYjlDcig8lqTrpE%3D&se=1610847623&skn=iothubowner”
}
“`Python で作成する場合
“`py:main_sas_token.py
#! /usr/bin
元画像処理エンジニアがサイゼリヤの間違い探しをOpenCVで解いてみた
# はじめに
前職で産業機械に使用する画像処理の設定などを作っていたこともあり、[サイゼリヤの間違い探し](https://qiita.com/h-yanai/items/1e33fd93e5cb1ac98398)のアルゴリズムに気になった部分があったので、手を出してみました。
# 今回のお題
さすがに同じものを使うのは芸がないので、今回は下記の画像で間違い探しを行います。
![body.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395414/5d1fb059-7ba4-a43d-17df-dbf8951caeb3.png)
Copyright Saizeriya Co,. Ltd All rights reserved.ここからは間違い探しの答えの情報が乗っています。
もしネタバレが嫌であれば、[サイゼリヤのホームページ](https://www.saizeriya.co.jp/entertainment/)からチャレンジしてみてください。# 変更点…を実装する前に
## 前提の
生物トラッキングのDeepLabCut動かしてみた
# はじめに
DeepLabCutとは、ディープラーニングと画像処理を使用したマーカーレスの生物トラッキングツールです。
主に、動物の行動観察に使用されています。[DeepLabCut 論文](https://arxiv.org/abs/1605.03170)
[DeepLabCut Github](https://github.com/DeepLabCut/DeepLabCut)今回は、Docker内でローカルで使用できるように環境構築しました。
モデルは、既存のモデルを使用して動作確認をしています。[Google Colabでの実行方法](https://colab.research.google.com/github/AlexEMG/DeepLabCut/blob/master/examples/COLAB_DLC_ModelZoo.ipynb)もあるので、グラウド環境が使用できる方は、そちらを使うほうが簡単です。
# 動作確認環境
Dockerを使用して環境を構築しました。
+ Ubuntu 18.04
+ CUDA 10.0
+ cudnn 7.6.4
+
pythonからgoogle cloud platformのinstanceを動かすまで
最初に認証キー作ってからでないとだめ
[サービス アカウントとして認証する | Google Cloud](https://cloud.google.com/docs/authentication/production)[Python 用の Cloud クライアント ライブラリの使用 | Compute Engine ドキュメント | Google Cloud](https://cloud.google.com/compute/docs/tutorials/python-guide)
> python3 -m pip install –upgrade google-api-python-client
[python-docs-samples/create_instance.py at master · GoogleCloudPlatform/python-docs-samples](https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/compute/api/create
写真を読み込んで手書きスケッチ。zoom機能付。作ってみた。
# はじめに
写真に手書きスケッチを描きこむツールは、いくつか見つかります。
しかし、ズーム機能のついたツールが見つかりませんでした。
標準のフォトやマークアップは拡大率に限界があって 使いにくかった。
だから、今回作ってみました。
uiもスクリプトで作成してみたので、1ファイルで動きます。コードをバンバン書ける方には 怒られそうな程注釈を書き込んでいます。
自分用のメモですが、Python勉強し始めの方には スクリプトの動作が追いやすい
とおもって残しています。
あと、試行錯誤の結果 使っていない関数が少し眠っています。クラスを始めて使って書いてみました。
# 環境
ipad + pythonista3# 要件
・写真を読み込んで、手書きスケッチを書き込める。
・線の色・太さは 数種類づつ用意した。
・undo機能も実装した。
・拡大縮小(zoomin zoomout)機能の実装。zoomは左上を起点にされます。
・拡大機能の実装に合わせてscrollviewを実装。# 苦労した点
・scrollviewの実装方法とスクロールと拡大縮小の連携。
・touchイベン
Synology DSMのタスクスケジューラーでpython実行時に起こるインポートエラーの回避方法
# 起こったエラー
Synology の DS118 内にあるPythonのスクリプトを、DSM のタスクスケジューラーから実行しようとしたところ、モジュールのインポートエラーが起きました。“`:DSMから届いたメールに記載されたエラー
Traceback (most recent call last):
File “hoge.py”, line 1, in
import tweepy
ModuleNotFoundError: No module named ‘tweepy’
“`おかしいぞ?
SSH接続ではできるのに。。しかもこれ、以前`requests`でも同様のエラーに遭ってしまいましたが、その時はそれほどタスクスケジューラーでやる必要性がなかったことから、放置していました。
ですが今回はタスクスケジューラーでやる必要があったので、本腰を入れて対処してみることに。分からないなりに調べると、パスが通ってない感じに思え。
おそらく、SSHで実行するのとタスクスケジューラーで実行するのと、微妙に異なるのでしょう。というわけで、以下の
[Django] Formからの値の取得
#実行環境
実行環境は以下の通りです。
Python3 — Python 3.9.0
Django — 3.1.3#Djangoで、Formからの値の取得について
今回、Djangoでwebアプリを作成していく際にFormからの値の取得方法に困ったので、メモがてらに記述しておきます。
また、Djangoの学習を始めたばかりで非効率的なコードばかりですが、何かあればご指摘いただければ幸いです。##シチュエーション
Formで選択したオブジェクトの値を取得し、そのオブジェクトのチェックボックスをTrueにするというシチュエーションです。具体的には、事前に登録しているスケジュールをFormで選択し、そのスケジュールを「今月のスケジュール」と設定し、表示するという実装を行いました。Scheduleのモデルを以下に示します。
“`models.py
class Schedule(models.Model):
“””スケジュール”””
holdmonth = models.CharField(‘開催年月’, help_text=”○年○月”, unique=Tr
Azure IoT Hub に paho で pub/sub
次にあるプログラムに、.env を使って汎用性を持たせました。
[Azure IoT Hub に paho で publish](https://qiita.com/ekzemplaro/items/8a2f8ac7bae35a9c91d4)
[Azure IoT Hub に paho で subscribe](https://qiita.com/ekzemplaro/items/ceb7e085a9c30b07ae2c)
generate_sas_token.py は変更ありません。“`text:.env
IOTHUB=’iot-aa’
DEVICE=’pansy’
MAIN_KEY=’2eQ2wF5OjZLP7tq6PG123456789RTfAnMJbZ8wtJPu4=’
“`“`py:paho_publish.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# paho_publish.py
#
# Jan/15/2021
# —————————————–
Dlibのインストールでエラーが出るときの対処(Ubuntu)
# 環境
– WSL Ubuntu 18.04
– Python3 3.8.5# エラー
(全文)“`bash
Running setup.py install for dlib … error
ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 -u -c ‘import sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘/tmp/pip-install-3kh7uz0l/dlib/setup.py'”‘”‘; __file__='”‘”‘/tmp/pip-install-3kh7uz0l/dlib/setup.py'”‘”‘;f=getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__);code=f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__,
python3.9には誰も注目していない新機能が・・・
A. ある。
関連記事
https://qiita.com/sh1ma/items/3d9280084c340b4cd775コードみてね
“`python
@lambda f: lambda *args: print(f(*args)) # ←動く!!(3.8まではこれ動かなかった)
def f():
return “hello”f() # -> hello
“`ウケるw