- 1. S3 オブジェクトをプレフィックス・サフィックス両方で検索する
- 2. 家電の動作情報をRaspberryPiで一括取得
- 3. 【Python / Gmail API / AWS Lambda】Gmailの未読メッセージを監視してSlackに通知する
- 4. raspberryの初期設定とpybluez/bluezによる送受信実装
- 5. 完全版)初心者向け Pythonanywhereを使ってみよう
- 6. pythonで”grep -f”的な文字列の抽出。のメモ
- 7. こんな言い回しをしている記事は,うんざりだ
- 8. [jismesh-raster]地域メッシュデータをかんたんに可視化しよう
- 9. kivyMDチュートリアル其の参什弍 Components – Toolbar篇
- 10. LINE Messaging APIを利用してグループメンバーの誕生日を祝うbotを作成してみた
- 11. Socket通信でAndroidのバッテリー残量を確認してみた
- 12. CNN-LSTMモデルを用いた株式相場予想
- 13. OWON VDS3104 をpythonで制御 (その2)
- 14. pythonのライブラリにある関数の説明を日本語で見る
- 15. VoTTv2から出力したアノテーションをYOLOv5学習用に変換するスクリプト
- 16. Prophetでコロナ陽性者予測をしよう
- 17. ABC215 A~D問題解説 python 灰色~茶色コーダー向け
- 18. RabbitMQ に cerelyから接続する際のguest アカウントでの接続エラー
- 19. [Python]Seleniumで取得したスクリーンショットの比較(差分確認)方法 メモ
- 20. [Python]FastAPIとPandasを用いたコロナウイルス情報取得API作成方法 メモ
S3 オブジェクトをプレフィックス・サフィックス両方で検索する
s3 でプレフィックス、サフィックス両方を使ってオブジェクトを取得したいとき、
boto3のメソッドはプレフィックスのみでしか検索できなくて少し不便だったので自作の関数を用意して実装しました。引数`suffix`に正規表現で検索文字を入れると、ヒットするオブジェクトが配列で返ってくる
“`python
import boto3
import re
def get_s3_objects(bucket, prefix, suffix):
suffix += “$” # 末尾文字を付与
s3 = boto3.client(“s3”)
obj_list = s3.list_objects_v2(Bucket=bucket, Prefix=prefix)[“Contents”]
obj_list = list(filter(lambda x: re.compile(suffix).search(x[“Key”]), obj_list))
return obj_list
“`
家電の動作情報をRaspberryPiで一括取得
# はじめに
IoTという言葉がブームとなって久しいですが、家電に関してもこのブームに乗り、**APIで情報取得できる機種**が増えています。
そこで今回、**家電の中でも特に使用頻度の高い**、**・テレビ**
**・エアコン**
**・照明**
**・コンセント**(スマートプラグ)の**動作情報を、RaspberryPiで一括取得するシステム**を構築してみました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/3edd832f-ac98-ef3d-e490-725f78fec615.png)# 使用した機器
情報取得対象の家電、および情報取得に使用した機器を紹介します## 情報取得対象の家電
以下の家電の情報を取得しました|種類|メーカー|名称|情報取得対象|備考|
|—|—|—|—|—|
|テレビ|Panasonic|VIERA TH-49GX850|OnOff情報|専用APIあり|
|照明(LED電球)|TPLink|KL1
【Python / Gmail API / AWS Lambda】Gmailの未読メッセージを監視してSlackに通知する
![Untitled Diagram(22).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688854/3a75999b-9547-83c5-e83f-9c4e8405cc6b.png)
## 背景
普段の業務において、どのコミュニケーションツールを使っているかは人それぞれだと思います。
私の場合、基本的はSlackがメインではあるのですが、そうは言ってもやはり一部においてGoogleのGmailなどに頼らざるを得ない事などがあります。(他社の人たちとのやりとり時などは特にそう)
ただ、頻度としてはそこまで高くはないため、必然的にSlackと比べてチェックの回数が少なくなり、レスポンスが大幅に遅れてしまうなんて事もしばしば…。
そこで、Googleが公開しているGmail APIを使って定期的に未読メッセージを取得し、Slackへ通知する事ができればその問題も解消できるかなと考えました。
## 完成イメージ
![スクリーンショット 2021-08-28 20.47.13_censor
raspberryの初期設定とpybluez/bluezによる送受信実装
#はじめに
bluetoothデバイスとデータをやり取りするにあたり、raspberrypiのOSインストールとbluezの設定をまとめました。記事の寄せ集めですが、今からraspberrybluez環境を立ち上げる方の参考になれば幸いです。#初期設定
* raspberrypiのOSインストール
[本家ページ](https://www.raspberrypi.org/software/)にアクセスし、dmgファイルをダウンロードし誘導通りにインストールする。ただし、自分の環境ではssh設定関連が足りなかった。また、python3環境が必要であるため、3.7環境に切り替えた
(参考ページ)[Zumi Blog](https://www.zumid.net/entry/raspberrypi-smarthome-os-install/)
(参考ページ)[Raspberry Pi Zero(W, WH)のセットアップ](https://qiita.com/hishi/items/8bdfd9d72fa8fe2e7573):sshの設定関連
(参考ページ)[「SSHホ
完全版)初心者向け Pythonanywhereを使ってみよう
###初心者向け Pythonanywhereを使ってみようで書き忘れてたこと
先に投稿したPythonanywhereの使い方で、「Database」の設定方法について書くのを忘れてたので、追加します。先にこちらをどうぞ。今回はこいつに対する追加です。
初心者向け Pythonanywhereを使ってみよう###データベースはMySQL
PythonanywhereではMySQLが無料で提供されます。PostgrSQLは別途有料です。HerokuではPostgreSQLイチ推しっぽかったけど、こちらはMySQL推しみたいです。
では設定画面を見てみましょう。
![Screenshot 2021-08-29 at 04-33-51 Database Settings PythonAnywhere.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1739706/
pythonで”grep -f”的な文字列の抽出。のメモ
#そもそも…
例えば、`list_1.txt`の中から`list_2.txt`にある文字列を含む行を抽出したいとします。“`tex:list_1.txt
0001, aaa, AAA
0002, bbb, BBB
0003, ccc, CCC
0004, ddd, DDD
0005, eee, EEE
“`“`tex:list_2.txt
0002
0004
“`シェルスクリプトなら**『grep -f `文字列` `検索対象`”』**と簡単に書けるので次のようになるわけです。
“`sh
$ grep -f list_2.txt list_1.txt0002, bbb, BBB
0004, ddd, DDD
“`#あえてpythonで書く
大人しくシェルスクリプトでやればいいのですが、ここでは敢えてpythonで書いてく。
内包表記で抽出を行う。`for`の二重ループは**[** `式` `外側のforループ` `内側のループ` **]**で書くので、、、“`py:
# それぞれのlist_.txtをリストに格納
list1 = [line1
こんな言い回しをしている記事は,うんざりだ
技術書とまでは言わないが,ちゃんとした文書を書こうと思うなら,それなりの心構えがあってしかるべし
社内文書でもこんな文章を書いているんだろうか
引数(括弧の中)にはインストールしたいパッケージがGitHub上のどこに保存されているかを示す文字列を入れてあげます。→入れます
すでに既出ではありますが → 既出ではありますが
本記事においては、~~筆者に厳密な議論をするだけ数学力が無いので~~種々の厳密さを抜きにして → 見えケシは本音?だったら消さない。
シミュレーションに落とし込めば良さそう → シミュレーションすれば良さそう
順に~~釈明~~説明していきたいと思います。 → 見えケシは意味ない
プログラムは下記になります。 → プログラムは以下です。
来週からは気温も落ち着かれることを祈るばかりです → 気温も落ち着くことを
まだ残りまくっていますよね。はい、飛ばしまくったらいつの間にか1週目は残りわずかとなりました。 → 仲間内での会話体は止めよう
大事な大事なコンポーネントとなります。→ コンポーネントです。(~となりますって,へんな言い回しですね)
今
[jismesh-raster]地域メッシュデータをかんたんに可視化しよう
## TL;DR
https://github.com/Kanahiro/jismesh-raster
– 地域メッシュデータのCSVからかんたんに位置情報つきTIFを作れるツールをつくったよ
– `pip install jismesh-raster`でインストールできるよ## サンプル
– CSVは[全国の人流オープンデータ](https://www.geospatial.jp/ckan/dataset/mlit-1km-fromto)のデータ(2019年1月休日昼間)を全国分結合して作成した(234571レコード)
– https://github.com/Kanahiro/mesh1km-pop/blob/master/csv2geojson.py これを使って得られる`mesh_population_df`をCSVで書き出し
– QGISで等量10区分により色分け
– 背景はOSM(©️OpenStreetMap Contributors)
– ファイルサイズ25.6MB, 解像度2485×2578
– 処理時間は30秒程度だった(MBP16inch 2019)
kivyMDチュートリアル其の参什弍 Components – Toolbar篇
はろー、Qiita(そろそろこの挨拶ネタ切れ)。いかがお過ごしでしょうか。
今週は特に暑かったですね。夏が終わらないのではという思いもありましたが、来週
からは気温も落ち着かれることを祈るばかりです。まぁ、こればっかりは自然のこと
なのでどうすることもできないというのはありますが。コンポーネンツ章も残りわずか2回となりました。と言いたいのですが、まだ残りまく
っていますよね。はい、飛ばしまくったらいつの間にか1週目は残りわずかとなりま
した。今日はToolbar篇となりますが、来週のTooltipが終わったときには念願の
バージョンアップを図ろうと思います。どんな機能が改善されたかわくわくしますね。ということで、今週もというか今日も暑いですが、元気にやっていきましょうー。
えいえい、えいーーー。## Toolbar
暑いので、マテリアルデザインのリンクは飛ばします・・
すみません、嘘ですw飛ばすのは恒例行事でしたね。失礼しました。
まぁ、今回ようやく触れ込むことが出来たという次第になります。これまでも何回か
出てきましたね。アプリの顔とも呼べるコンポーネントと言って
LINE Messaging APIを利用してグループメンバーの誕生日を祝うbotを作成してみた
# 概要
LINEグループで友達の誕生日を祝うとき、たまに誕生日だったの忘れてた…って場面が何度かあり、その問題を解消するためbotが知らせてくれるようにしてみました。
(LINEは友達に誕生日を公開する設定にしていればホームに表示されますが、僕はほとんど見ないんですよね…)結論からいうと下記画像のようにピッカーで誕生日を登録しておくと、誕生日当日の正午に知らせてくれるようにしました。
|登録ピッカー |誕生日通知 |
|—|—|
| | |
Socket通信でAndroidのバッテリー残量を確認してみた
こんにちは。
Socket通信をちょっとだけ勉強したので何か作りたく、Socket通信でAndroidのバッテリーをTermux:APIを使用して確認してみました。
それだけじゃつまらないので、なんちゃって認証 (笑) も追加してますよ~## サーバー側
### バッテリーの情報を取得する
まずはTermux:APIを使用してバッテリー残量を取得します。
[ここ](https://wiki.termux.com/wiki/Termux:API)に使い方が書いてあります。
バッテリーに関するAPIの使い方は[これ](https://wiki.termux.com/wiki/Termux-battery-status)です。“`bash
termux-battery-status
“`これを叩くと
“`json
{
“health”: “GOOD”,
“percentage”: 66,
“plugged”: “UNPLUGGED”,
“status”: “DISCHARGING”,
“temperature”: 31.0,
“current
CNN-LSTMモデルを用いた株式相場予想
# はじめに
深層強化学習モデルIMPALAを開発する前段階として、CNN-LSTMモデルの実装を行なった。
ソースコードはこちら
https://github.com/sugiyama404/forecast_sp500/blob/main/cnn_lstm.ipynb
## 使用データについて
トレンド傾向の掴みやすさから、yahoo financeからGSPCの日足を使用した。
訓練データの期間:2015/1/1 – 2017/6/30
テストデータの期間:2017/7/1 – 2021/1/1以下ソースコード
https://github.com/sugiyama404/ReinfoceLearningForTrading/blob/main/get_csv.ipynb
# 時系列におけるCNN
## 一般的なCNN
CNN(Convolutional Neural Networks)は、畳み込み層を含んだニューラルネットワークで、画像データから意味のあるデータを抽出し、画像認識などを行えるようにする。
![cnn_info.png](https:
OWON VDS3104 をpythonで制御 (その2)
[前回](https://qiita.com/nachtele/items/291604601179cf376895)に引き続き、OWON の USBオシロスコープ VDS3104(LAN無しモデル) をpythonで制御してみます。
#環境
OS : Windows 10
対象機器 : VDS3104
アプリ : OWON VDS 2.0.19.4
言語 : python 3.7#SCPIコマンド
[OWONのexample](http://files.owon.com.cn//software/Application/VDS_Series_SCPI_example_folder.zip)に ‘VDS Series SCPI Protocol V1.6.pdf’が同梱されています。これに記載されている各SCPIコマンドの動作を確認してみました。
当初、少し古いバージョンのアプリ(OWON VDS 2.0.17)を使っていたところ、いくつかのコマンドがレスポンス b’CAN NOT ANALYSE THE ORDER’ を返して動かないということが分かりました。
そこで、[最新版
pythonのライブラリにある関数の説明を日本語で見る
#pythonのライブラリにある関数の説明を日本語で見る
pythonのライブラリにある関数の説明を日本語で見れるようにするための関数を作ってみました。手順としては次の3段階です。
1. ライブラリの関数が入っているpythonコードにアクセス。
2. 関数の説明部分だけ引っ張り出す。
3. google翻訳を使って翻訳ライブラリとしては、sysとgoogle翻訳を使うためにgoogletransを使います。
ライブラリの関数が入っている場所はpythonのフォルダのあるところなので、そこはsys.pathで確認できます。
google翻訳のライブラリは、普通にpip install googletransとやっても実行時にエラーが出ることがでるので、下記リンクを参考に
pip install googletrans==4.0.0-rc1
でインストールしました。
https://qiita.com/_yushuu/items/83c51e29771530646659
プログラムは下記になります。
たとえば、numpyで逆行列を計算するnumpy.linalg.in
VoTTv2から出力したアノテーションをYOLOv5学習用に変換するスクリプト
遅れ馳せながら`YOLOv5`の転移学習をオリジナルのデータを使って実施してみたのですが、あまりの手軽さに驚きました。こんなに簡単に物体検出のAIモデルをカスタマイズして、気軽に利用できるような時代なのですね・・・
ネット上には`YOLOv5`の転移学習に関する優れた事例や紹介記事が多数ありますので、ここではその内容については触れませんが、私のようにAIに関する知識が無い人でも、手順通りに実施すればオリジナルのAIモデルが作れてしまいます。すごい。
殆どの作業が自動化されているので、特に問題となるような事は少ないのですが、私がそれらの事例をトレースした際に「ちょっと面倒だな」と感じたデータセットの変換処理に関して、より作業を簡略化できるように`python`スクリプトを作成しました。
私はアノテーションツールとして[`VoTT v2.2.0`](https://github.com/Microsoft/VoTT/releases)を使用したのですが、出力されるデータセットのファイル形式が`YOLOv5`用のファイル形式に対応していないため、別途変換する必要があります。
変換
Prophetでコロナ陽性者予測をしよう
# はじめに
「Pythonで儲かるAIをつくる」の著者です。社内で、この本を題材にした勉強会を主催しているのですが、5.3節の「時系列予測」用に作った、宿題の題材が結構面白いものだったので、qiitaでも共有することにします。
なお、ここで紹介するコードは、[Github](https://github.com/makaishi2/profitable_ai_book_info/blob/master/notebooks/%E3%82%B3%E3%83%AD%E3%83%8A%E4%BA%88%E6%B8%AC.ipynb)にアップしてあります。# 時系列予測とは
そもそも、「時系列予測」とはなんでしょうか。冒頭で紹介した私の書籍の中では、「分類」「回帰」と並んで学習方式「教師あり学習」の1パターンであると定義しています。
予測目的が「数値」という点は「回帰」と同じなのですが、予測の入力となる説明変数が「日付データのみ」(厳密にいうと例外もある)というのが一番の違いです。曜日、年などの周期性を持った数値データを予測するのに向いているモデルです。
ただ、 scikit-l
ABC215 A~D問題解説 python 灰色~茶色コーダー向け
ABC215(AtCoder Beginner Contest 215) A~D問題の解説記事です。
灰色~茶色コーダーの方向けに解説しています。##A – Your First Judge
https://atcoder.jp/contests/abc215/tasks/abc215_a
入力を受け取り、”Hello,World!”と一致するかをif文で判定すればよいです。
pythonでは等しいという条件について「=」ではなく「==」と2つイコールを書くことに注意してください。入力の受け取り、出力がわからない方は以下の記事を参考にしてください。
https://qiita.com/sano192/items/eb2c9cbee6ec4dc79aaf
**【提出】**
“`python:
# 入力の受け取り
S=input()# Hello,World!に等しいなら
if S==”Hello,World!”:
# ACを出力
print(“AC”)
# そうでないならば
else:
# WAを出力
print(“WA”)
“`
RabbitMQ に cerelyから接続する際のguest アカウントでの接続エラー
# 問題
以下のpython スクリプトで rabbitMQに接続しようとしたが、
“`
# tasks.pyimport celery
import time
import randomapp = celery.Celery(‘tasks’, broker=’amqp://quest@localhost’,
backend=’amqp://quest@localhost’) # AMQP advanced message queuing protocol@app.task
def build_server():
print(“wait 10sec”)
time.sleep(10)
server_id = random.randint(1, 100)
return server_id
“`下記のエラーで返された。
“`
$ celery -A tasks worker –loglevel=infoamqp.exceptions.AccessRefused: (0, 0): (
[Python]Seleniumで取得したスクリーンショットの比較(差分確認)方法 メモ
* 画面テストで期待値画像と取得したスクリーンショット画像を比較する方法を調べたため、その内容をメモしておく。
* それぞれのハッシュ値を比較し、差分があるかを確認する。## 構成
“`
root_dir – screenshot_compare.py
|_ image_comparison – actual_img.png
|_ expected_img.png
“`## コード`screenshot_compare.py`
1. `image_comparison`ディレクトリに期待値画像`expected_img.png`を保存
2. Seleniumで対象ページ(標準入力でURL指定)にアクセスし、スクリーンショット取得`actual_img.png`
3. 期待値画像とスクリーンショットのハッシュ値を比較し、差分があるかを確認
“`python
import sys
from selenium import webdriver
from selenium.webdriver.support.ui import Web
[Python]FastAPIとPandasを用いたコロナウイルス情報取得API作成方法 メモ
* Web API構築用フレームワークFastAPIとデータ処理用ライブラリPandasを用いたコロナウィルス情報を取得するAPIの作成方法についてメモする。
* 都道府県名を指定し、月別の感染者数とワクチン接種(2回)数を取得する## 事前準備
* `ndjson`インストール※ワクチン接種情報がNDJSON形式で提供されているため。
“`shell
pip install ndjson
“`* その他、pandas,FastAPI周りも必要に応じインストールすること。
## コード
* 都道府県名を指定し、月別の感染者数とワクチン接種(2回)数を取得する2つのAPIを作成する。
* `main.py`
“`python
from fastapi import FastAPI
from pydantic import BaseModel
import pandas as pd
import requests
from urllib.request import Request, urlopen
import ndjsonapp