- 1. 正時(m=0)の場合
- 2. すべての場合
- 2.1. 40代おっさんFastAPIを勉強する(簡易Web API作成)
- 2.2. [python] ファイルにログを書き込む [日付]
- 2.3. ubuntu18.04 LTSに「Python3.11」をインストール
- 2.4. AirSimを用いた強化学習
- 2.5. 文字列とリストの変換
- 2.6. 『サイバーセキュリティプログラミング第2版』の読書メモ (3)
- 2.7. Pythonで標準入力された場合の処理
- 2.8. Airsimの画像 API
- 2.9. 40代おっさんFastAPIを勉強する②
- 2.10. [Python] PyAutoGUIをimportした時にtkinterの見た目が変わる事
- 2.11. PythonとYouTubeAPIで急上昇の動画のデータを取ってくる
- 2.12. 『サイバーセキュリティプログラミング第2版』の読書メモ (2)
- 2.13. お客様の中に24時間監視体制で調子の悪いwimaxを再起動できるエンジニアの方はいらっしゃいませんか!!!
- 2.14. PythonでSpeechRecognitionを使ってリアルタイム文字起こし【Windows】
- 2.15. 40代おっさんFastAPIを勉強する
たった4行で画像の中の人を数える方法
# どうも
face_recognitionについて調べてて意外と簡単だったので紹介します。## 用意する物
+ face_recognition ←こいつが無いとお話にならない
+ 顔の入った写真 ←顔が隠れてないやつ### 用意した画像
最近寒くなってきたのでこの画像にしました。
![3061076_s.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2915539/14237492-c38f-6cb3-4167-19390d3fbf4a.jpeg)画像は[ここからダウンロードできます](https://www.photo-ac.com/main/detail/3061076)
:::note warn
注意
face_recognitionの学習モデルの関係で赤ちゃんの顔を認識できません。
:::
注意事項の[詳しい説明はこちら](https://github.com/ageitgey/face_recognition/blob/master/README_Japanese.md#%
pipenv/pyenvでPython3.*をインストールするとBUILD FAILEDになる(macOS 11+)
### BUILD FAILED!
macOSで`brew`で入れた`pyenv`で`Python 3.*`をインストールしようとすると失敗する(`pipenv`の環境構築で`pyenv`でインストールしようとしても当然同じエラーが出る).(MacBook Pro 2019, macOS 12.6, Intel Core i7)
“`shell
$ brew install pyenv
…
$ pyenv install 3.7.10python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.7.10.tar.xz…
-> https://www.python.org/ftp/python/3.7.10/Python-3.7.10.tar.xz
Installing Python-3.7.10…
python-build: use readline from homebrew
python-build: use
40代おっさんStreamlitを学ぶ
## 本記事について
この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。## Streamlit
treamlitとは、PythonでWebアプリケーションを作成するためのフレームワークです。
データサイエンティストやAIエンジニア向けに開発されており、バックエンド開発の知識がなくてもPythonのコードを数行書くだけで、気軽にデモ用のアプリを作成することができるのが特徴です。
### Streamlitインストール
“`bash
pip3 install streamlit
“`### 確かめる
“`bash
streamlit hello
“`自分ははじめてだったのでメールアドレス求められました。
サイトにアクセスできれば大丈夫です。
### Text elements
フォルダを作り
`app.py`を作成“`python
import streamlit as st
st.write(‘利樹大好き’)
“`st
【Pytorch】勾配を計算する
# はじめに
NNの学習時で計算する、勾配を計算する方法を調べたのでメモしておきます。
“`math
\theta \leftarrow \theta + \eta \nabla_\theta L(\theta)
“`通常は、これらはoptimizer が良しなに更新してくれるので、自分では learning rate をいじったりはしません。なので、何次元のパラメータかなども意識しません。が、それを見てみよう、というのが今回の趣旨です。
# Modelのgradient vector を計算
ネットワークモデルについては、pytorchのtuotrial に沿って行います。
https://pytorch.org/tutorials/beginner/blitz/neural_networks_tutorial.html
### モデルの定義とパラメータの参照
“`python: net.py
import torch
import torch.nn as nn
import torch.nn.functional as Fclass Net(nn.
【求対案】Python3 で時計算をやってみる
非情報学科生向けのプログラミング講義で、以下のような問題が出題されました。
>時刻を入力したら、時計の短針と長針のなす角の角度aを求めるプログラムを作成しなさい。
>(0°≦a≦180°)
>また、入力される時(h)と分(m)は以下の条件を満たす整数であるとする。
>0≦h<12, 0≦m≦59正時(m=0)の場合
60分進むごとに、短針は30度進むこと、6時丁度のとき180°になることを考慮して、以下のような愚直解を考えた。
“`python
def solution(h, m):
if m == 0:
if 6 > h:
a = 30 * h
elif h == 6:
a = 180
elif h > 6:
a = 360 – (h*30)
return a
“`すべての場合
しかし、以上のような解では、正時以外の場合対応できない。幸い、時と分は整数のみであるから、1.5分のような場合は
40代おっさんFastAPIを勉強する(簡易Web API作成)
## 本記事について
この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。## 簡単なAPIを作って、ローカル環境で試す
main.pyを作成
“`python
from fastapi import FastAPI
from pydantic import BaseModelclass Data(BaseModel):
x: float
y: floatapp = FastAPI()
@app.get(‘/’)
def index():
return {‘message’: ‘Hello Data’}@app.post(‘/’)
def calc(data: Data):
z = data.x*data.y
return {‘result’: int(z)}
“`sample.py作成
“`python
import requests
import jsondef main():
[python] ファイルにログを書き込む [日付]
# 0.初めに
タスクスケジューラ使って透明化してマクロを動かしていると、ごくまれに発生するバグのデバッグができない。
ファイルにログを残す必要を感じた。(バックグラウンド・透明化しないと作業の邪魔)
日付順に分けられたら便利そう。# 1.ファイル名に日付を使ってログを書き込む
以下ソースの解説yyyy-mm-dd.logというファイルがlogフォルダに作られる。logフォルダは手動で作ってください。
“w”は上書きモード
datetime.datetime.now()を書いてからログを書くことで時刻もわかる。“`python:py_log.py
import datetimepy_log = open(“log\\”+str(datetime.date.today())+”.log”, “w”) # 上書きモード
print(str(datetime.datetime.now())+”ログです。”) # コマンドプロンプトにログを残す
print(str(datetime.datetime.now())+”ログです。”, file=py_log) # ファイル
ubuntu18.04 LTSに「Python3.11」をインストール
## はじめに
Python 3.11の安定板が2022年10月25日(日本時間)にリリースされました。
https://docs.python.org/3/whatsnew/3.11.html
早速、Ubuntuにインストールしてみます。
僕の環境は、Windows11/WSL2のUbuntu 18.04 LTSです。
以下の作業はWindowsターミナルでUbuntuのbashを選択してやってます。## PPAリポジトリ追加
Python3.11は公式リポジトリにはありません。
まだの場合は、取得可能なPPAリポジトリ(ppa:deadsnakes/ppa)を追加します。
“`
sudo add-apt-repository ppa:deadsnakes/ppa
“`
実行時の画面イメージです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962789/7cf295f6-5a58-ae1c-94a5-4833a79d7c1c.png)## リポジトリ追加後はupdat
AirSimを用いた強化学習
今回はAirSimを用いた強化学習について自分なりに翻訳しまとめたので記事にしたいと思います。
以下では、AirSim API の周りに OpenAI ジム ラッパーを使用し、標準の RL アルゴリズムの安定したベースライン実装を使用して、AirSim に DQN を実装する方法について説明します。これらの例を実行するには、stable-baselines3 をインストールすることをお勧めします (https://github.com/DLR-RM/stable-baselines3 を参照してください)。
## 免責事項
まだ活発に開発されているため以下で共有するのは、パフォーマンスを向上させるために拡張および微調整できるフレームワークです。## Gym wrapper
AirSim をジム環境として使用するために、AirSim 固有の step、_get_obs、_compute_reward、reset などの基本メソッドと対象のタスクを拡張および再実装します。これらの例で使用されている車とドローンのサンプル環境は、PythonClient/reinforcement_l
文字列とリストの変換
文字列を一文字ずつにリスト化する方法、及び、一文字ずつのリストを文字列に統合する方法を知らなかったので書きました。
# 文字列を一文字ずつのリストにする
“`Python
# 「あいうえお」をリストにする
mojiretsu = ‘あいうえお’
mojilist = list(mojiretsu)
“`# 一文字ずつのリストを文字列に統合する
“`Python
mojiretsu = ”.join(mojilist)
“`
『サイバーセキュリティプログラミング第2版』の読書メモ (3)
ひきつづき『サイバーセキュリティプログラミング第2版』の読書メモです。
https://www.oreilly.co.jp/books/9784873119731/
# 3.4 ICMP のパース より
P63 Scanner クラスの sniff メソッドを抜粋。
“`python
def sniff(self):
hosts_up = set([f'{str(self.host)} *’])
try:
while True:
# パケットの読み込み
raw_buffer = self.socket.recvfrom(65535)[0]
# バッファーの最初の20バイトからIP構造体を作成
ip_header = IP(raw_buffer[0:20])
# ICMPであればそれを処理
if ip_header.proto
Pythonで標準入力された場合の処理
競プロに手を出したばかりで標準入力の処理を最近知ったので、一番基本的なやつの備忘録です。
# 一つのものだけ標準入力された場合“`Python
# 文字列が与えられた場合
a = input()# 数字が与えられた場合
b = int(input())
“`# 横並びで入力が与えられた場合
“`Python
list = input().split()
“`※入力が縦一列の場合は「一つのものだけ標準入力された場合」を行数分繰り返せば良い。
後はこれの応用で、できそうな気がしました。
もう少し詳しくなったら加筆します。
Airsimの画像 API
今回はAirsimの画像APIの記事を翻訳したものを記事にいたしました。C++でも同様なことができますが今回自分はPythonのコードのみを記載しております。C++をお使いの方は元の記事のコードをお使いください。
元のURLはこちらになります。https://microsoft.github.io/AirSim/image_apis/# 画像 API
AirSim API に慣れていない場合は、まず一般的な API ドキュメントをお読みください。# 単一の画像を取得する
「0」という名前のカメラから単一の画像を取得するサンプル コードを次に示します。 戻り値は、png 形式のイメージのバイト数です。 非圧縮形式やその他の形式、利用可能なカメラを取得するには、次のセクションを参照してください。“` :Python
import airsim #pip install airsim# for car use CarClient()
client = airsim.MultirotorClient()png_image = client.simGetImage(“0”
40代おっさんFastAPIを勉強する②
## 本記事について
この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。## postメソッド
Pydantic は、Python の型アノテーションを利用して、実行時における型ヒントを提供したり、データのバリデーション時のエラー設定を簡単に提供してくれるためのライブラリです。
“`python
from typing import Optional
from fastapi import FastAPI
from pydantic import BaseModelclass Item(BaseModel): # BaseModelを継承してItemを作る
# データの構造を定義
name: str
description: Optional[str] = None
price: int
tex: Optional[float] = Noneapp = FastAPI()
@app.post(“/item
[Python] PyAutoGUIをimportした時にtkinterの見た目が変わる事
### 問題
PyAutoGUIをimportした時にtkinterの見た目が変わった。
importすると、しない時と比べてくっきり(小さく)みえるようになる。
### 解決
PyAutoGUIに含まれる
“`Python
try:
ctypes.windll.user32.SetProcessDPIAware()
except AttributeError:
pass
“`
が問題。
逆に、くっきり(小さく)したかったら上記のコードを追加すればよい。
PythonとYouTubeAPIで急上昇の動画のデータを取ってくる
### やること
YouTubeAPIで急上昇動画のURLを取ってくる。まず、GoogleCloudPlatformに行き、プロジェクトを作成して、YouTube Data v3というAPIを有効化します。「認証情報」をクリックして「認証情報」を作成を選び、「APIキー」を選択します。出てきたキーはコピーして取っておきます。
“`Python
import googleapiclient.discoverydef getYouTubeTop10():
API_KEY = “あなたのAPIキー”
youtube = googleapiclient.discovery.build(
“youtube”, “v3″, developerKey=API_KEY)
request = youtube.videos().list(
part=”snippet,contentDetails,statistics”,
chart=”mostPopular”,
maxResults=10, # ここで個数を
『サイバーセキュリティプログラミング第2版』の読書メモ (2)
ひきつづき『サイバーセキュリティプログラミング第2版』の読書メモです。
https://www.oreilly.co.jp/books/9784873119731/
# 3.4 ICMP のパース より
P62 UDP データグラムをサブネット全体に送信する Python コードについてのメモ
udp_sender 関数を抜粋
“`python
import ipaddress# スキャン対象のサブネット
SUBNET = ‘192.168.1.0/24’# ICMP レスポンスのチェック用マジック文字列
MESSAGE = ‘PYTHONRULES’# マジック文字列を含んだ UDP ダイアグラムをサブネット全体に送信
def udp_sender ():
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as sender:
for ip in ipaddress.ip_network(SUBNET).hosts():
sender.sendto(byte
お客様の中に24時間監視体制で調子の悪いwimaxを再起動できるエンジニアの方はいらっしゃいませんか!!!
# 結論
[このリポジトリ](https://github.com/Mkamono/wimax-restart)をcloneして、`.env`ファイルに`WIMAXPASS=あなたのクイック設定webのパスワード`を書いて`docker-compose up`すればできるよ# はじめに
一ヶ月ほど前からうちのwimax home L12 の調子が悪く、どうも困っていました。
症状としては、LEDランプは正常を示しているがインターネットにはつながらない。しかしスマホやPCからは接続しているという表記になっている。「インターネットなし」との文言が出る、といったものです。
恒常的にこんな感じなのであればすぐサポート連絡なりして強く訴えられるんですが、2日に一回程度、再起動すれば治るといった頻度で対応してもらえるのか、そして今後ファームウェアの更新で直るんじゃないかと思い、とりあえずプログラムを書いてみました。このプログラムは問題の対処と同時に原因究明を目的にしているので、データの解析もできるようにしています。(現在データ収集中)# フォルダ構成
“`
.
├─docker-comp
PythonでSpeechRecognitionを使ってリアルタイム文字起こし【Windows】
# 概要
GoogleのSpeechRecognitionというライブラリを使ってリアルタイム文字起こしをしました。
用途としてはリモート会議や授業での音声をリアルタイム文字起こしして、議事録作成やメモの省力化などに使えると思います。## 利用するライブラリ
– リアルタイムで文字起こしするライブラリ:SpeechRecognition
– パソコンからの音声出力をキャッチするライブラリ:PyAudio“`
wave
time
datetime
speech_recognition
pyaudio
“`### ライブラリの入れ方
“`pip install SpeechRecognition“`で入れられます。
注意点は、ライブラリのインストールの時とインポートする時とでスペルの大文字小文字が異なる点です。
– インストールの時:大文字小文字で”_”が不要:“`SpeechRecognition“`
– インポートの時:全部小文字で”_”が必要:“`speech_recognition“`### デバイスから出力される音声を使えるようにするための下
40代おっさんFastAPIを勉強する
## 本記事について
この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。## getでFastAPIを動かす
“`python
from fastapi import FastAPIapp = FastAPI()
@app.get(“/”) # getで / にアクセスがあったら下の関数を実行
async def index(): # asyncで非同期処理を実装できる
return {“message”: “利樹大好き”}
“`サーバー起動(main.py)
“`bash
uvicorn main:app –reload
“`{“message”:”利樹大好き”}
となっていれば成功
local hostに`/docs`をつけると
ドキュメントが見られる。
Swagger UIが使われている。
FastAPIはSwagger UIを自動生成している。local hostに`/redoc`をつけると
redocベースの