- 0.1. FastAPI入門 〜環境構築からMySQL連携まで〜
- 0.2. pycodestyleを使ってPEP8に平伏する
- 0.3. Clear Linuxで画像認識
- 0.4. Python: インターネットからjsonを取ってきてDictにする
- 0.5. Python: インターネットからHTMLソースを取ってきての中身だけを抜く(レスポンスがHTMLのURLの場合)
- 0.6. python3小技
- 0.7. ジェネレータ メモ
- 0.8. FastAPIで異なるセンサーからデータをGETする
- 0.9. はじめてのGoogle AIY Voice Kit⑦【音声認識編】
- 0.10. 資格試験勉強に対してやる気がでない自分がPython認定基礎試験を勉強したわけ
- 0.11. お答えしましょう–> 今さらだけど「Jupyter Notebook」って何?
- 0.12. Django Custom User Model の作成
- 0.13. [DecoratorPattern]wikiのサンプルコードをpython3実装
- 0.14. AtCoder Beginners Selection
- 0.15. CORS の使い方
- 1. Cross Origin
FastAPI入門 〜環境構築からMySQL連携まで〜
#FastAPIとは
FastAPIとはAPI作成に特化したPythonのフレームワークです。
Python3.6以上で動作し、簡単にRESTfulなAPIを作成することができます。
また自動で生成されるswaggerUIドキュメントからAPIのテストなども行えます。
#目次
[環境構築](#1-環境構築)
[HelloWorld](#2-helloworld)
[MySQL連携とCRUD操作](#3-データベース連携)#自身の環境
Ubuntu 20.04 LTS
Python 3.8.10
MySQL 8.0.28
SQLAlchemy 1.4.28#1. 環境構築
環境構築といってもFastAPIは非常に手軽で、pipでインストールするだけで簡単に使用することが出来ます。##install
“`
pip install fastapi uvicorn
“`
インストール出来ましたか?
今回はfastapi_sampleディレクトリを作成し、そちらにプログラムを置くことにします。“`
mkdir fastapi_sample
touch main.py
“
pycodestyleを使ってPEP8に平伏する
こんにちは、夜ご飯は納豆です。
納豆単体でも料理として成立しているのに、キムチやオクラなんかと一緒に食べるとさらにおいしいのでつい連日食べてしまうんですよね。
しかも三パックとかでしか売ってないので続けて食べさせようとしているんじゃないかとか疑ってしまいます。
さて、、納豆を食べ続けていくよりも、Qiitaにまとめていくのを続けていきたいです。
今日は、コーディング規約を守りながら書いていく際に自分的に怒られがちなものを書き連ねていきたいと思います。
※備忘録として書くので詳しいことは実際にコーディング規約を見るのが早いと思います。# コーディング規約について
* コーディング規約は、必ずしも順守しなくてはいけない(守らなかったら罰金!とかではなく)ものではないが守ることでより読みやすく、一貫性のあるコードを書くためのものです。
* 各プログラミング言語のコーディング規約
どの言語にもコーディング規約なるものが存在します。[^1]
* Pythonでは通称PEP8(ペップエイト)と呼ばれる[ドキュメント](https://www.python.org/dev/peps/p
Clear Linuxで画像認識
#やりたいこと
今回のやりたいことは、AIを使った画像認識をClearLinuxでやらせる。CLの一つの特徴は数値計算のパフォーマンスが高いということが歌われていますが、それじゃあAI画像認識処理を定番データセットと言われているImageNETを使ってやらせてみようと思いました。画像は例の別邸で定点観測を続けている映像です。参考にしたリンク:
https://creepfablic.site/2020/09/30/python-image-recognition-ai/
https://creepfablic.site/2019/10/25/python-virtualenv/
https://clearlinux.org/software/bundle/python3-basic##バンドルをインストール
“`
clear~ $ sudo swupd update
パスワード:
Update started
Version on server (35810) is not newer than system version (35810)
Update complete
Python: インターネットからjsonを取ってきてDictにする
“`python
USER_AGENT_DUMMY = “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36”
HEADERS = {“User-Agent”: USER_AGENT_DUMMY}r = requests.get(“https://hogehoge.com/fuga.json”, headers=HEADERS)
print(r.json())
# {‘hoge’: ‘fuga’}
“`
Python: インターネットからHTMLソースを取ってきての中身だけを抜く(レスポンスがHTMLのURLの場合)
“`python
import urllib.request
from bs4 import BeautifulSoupUSER_AGENT_DUMMY = “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36”
HEADERS = {“User-Agent”: USER_AGENT_DUMMY}def request(url: str, headers: Dict[str, any] = HEADERS) -> str:
req = urllib.request.Request(url, headers=headers)
with urllib.request.urlopen(req) as res:
html = res.read()
soup = BeautifulSoup(html, “html.parser”)
r
python3小技
##フォルダの作成
cv2.imwriteなど、フォルダが存在しないファイルを作成してくれない。
以下により、フォルダが無い場合だけ作成する。“`
import os
os.makedirs( path, exist_ok=True)
“`
ジェネレータ メモ
“`python
def test():
yield [1,2,34] # ここで一時停止
print(‘aaaa’) # 2回目のnext実行中に出力されるdef test2():
gen = test()
print(next(gen)) # [1,2,34]
print(next(gen)) # ‘aaaa’
“`
“`
[1, 2, 34]
aaaa
StopIteration
“`—-
FastAPIで異なるセンサーからデータをGETする
# FastAPIの動作確認
公式チュートリアルを見ながらmain.pyを作成し、ライブサーバーを実行する
https://fastapi.tiangolo.com/ja/tutorial/first-steps/
同一ネットワーク下で以下のようにGETすると、jsonが吐き出されます
“`
curl http://127.0.0.1:8000→{“message”:”Hello World”}
“`例えば、複数のセンサーがつながったラズパイを用意して、FastAPI経由で特定のセンサーデータを取得したい場合は以下のようなmain.pyを作成すれば良い
“`
from fastapi import FastAPIapp = FastAPI()
@app.get(“/sensorA”)
async def root():
return {“time”: “yyyy:mm:dd”,”temp”:”25degree”}@app.get(“/sensorB”)
async def root():
return {“time”: “yyyy:
はじめてのGoogle AIY Voice Kit⑦【音声認識編】
# はじめに
前回のサンプルコード実行編の記事は[こちら](https://qiita.com/yuzuki6v6/items/2dedb4c19f86805b4e5a)から:information_desk_person:
今回はGoogleの「Cloud Speech-to-Text API」というAPI(音声をテキストに変換する)を使用し、音声認識の機能を試してみたいと思います。**※「Speech-to-Text」を使用するためには、事前にGoogle Cloud PlatformでAPIを有効化し、秘密鍵(JSON)をホームディレクトリに配置しておく必要があります**
##Google Cloud Platformにログイン
①Googleアカウントを用意します。
②[Google Cloud Platform](https://console.cloud.google.com)にログインします。
以下の画像が表示された場合、[無料で使ってみる]を選択し、その後画面に表示される手順に沿って登録します。![image.png](https://qiita-image-
資格試験勉強に対してやる気がでない自分がPython認定基礎試験を勉強したわけ
# 1.はじめに
* この記事について
* 合格体験記というよりも「資格試験」に対して今回向き合えた自分の心情や、背景などを整理したものになります。初心大事にしたい派です。
* あくまで資格試験に対しての個人の感想になるので観点を広げる、動機付けの文言化を進めるという意味で読んでいただけると幸いです。* 勉強した(している)試験
* Python 3 基礎認定試験 – 合格しました!
* Python 3 エンジニア認定データ分析 – 試験勉強中です!* 簡単な自己紹介
* 新卒エンジニア二年目
* 未経験でスタート
* Pythonを触り始めて3ヶ月目です。# 2.資格試験勉強に”やる気”が生まれなかった自分の言い分
* 自分なりの言い分として、「使うことだけ調べて実装できればいいじゃん!」って感じでした(笑)>Google先生に聞けば大抵のこと教えてくれるし、(のせてくれている皆さんありがとうございます)
>自分でプログラミングの試験うけるのって「試験を受けることが目的になって
お答えしましょう–> 今さらだけど「Jupyter Notebook」って何?
いまさら jupyter notebook はありえません。絶滅種です。
jupyter lab が後継種です
更に,JupyterLab Desktop が出現しました(Mac, Windows とも)
しかも,2021/09/22 には,すでに!!!https://blog.jupyter.org/jupyterlab-desktop-app-now-available-b8b661b17e9a
時代に乗り遅れてはいけません。
Django Custom User Model の作成
## 環境
Windows 11 Home
Python 3.10.2
Django 4.0.2
venv利用あり
## 背景
Djangoにおいてユーザモデルはカスタムユーザモデルを作成するのがセオリーらしいので記事にした。
本ページでは触れないが、後々、初回ログイン時にパスワードを強制変更させるためのカラムを用意しておく。## 状態
`python startproject mysite`でプロジェクトを構築したばかりの状態。
カスタムユーザモデルを作成し、EmailとPasswordの認証に変更する。## 手順:mysite/settings.py
以下コマンドで`users`Appを作成する。
`python manage.py startapp users`続いて`settings.py`に先ほど作成した`users`を認識させるのと`AUTH_USER_MODEL`を定義する。
“`python:mysite\settings.py
INSTALLED_APPS = [
‘django.contrib.admin’,
‘django.con
[DecoratorPattern]wikiのサンプルコードをpython3実装
wikiのdecoratorのサンプルコードをpython3.xで実装したコードです。(環境python3.9)
[Decorator パターン](https://ja.wikipedia.org/wiki/Decorator_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3 “Decorator パターン”):::note warn
元がjavaのため、@propertyは使わず、そのままゲッターで実装しています。
:::“`python:decorator_pattern.py
“””UML
<< Component >>
operation() < ----------------- | | | Concrete Component Decorator(Component) :use Component operat
AtCoder Beginners Selection
#紹介
本記事はAtCoder Beginners Selectionの演習ノートである。https://atcoder.jp/contests/abs
#問題演習
##PracticeA – Welcome to AtCoder
“`py
a=int(input())
b,c=map(int,input().split())
s=input()
print(a+b+c,s)
“`##ABC086A – Product
“`py
a,b=map(int,input().split())
if a*b%2==0:
print(“Even”)
else:
print(“Odd”)
“`##ABC081A – Placing Marbles
“`py
S=input()
print(S.count(“1”))
“`
CORS の使い方
CORS(Cross-Origin Resource Sharing) の例です。
index.html が置かれているサーバー https://example_main.com
JSON が置かれているサーバー https://example.com
とします。#静的なJSONの例#
Web サーバーで Header を加えます。
クライアント
“`html:index.html
Cross Origin
Cross Origin
outarea_aaoutarea_bb
[Python / PyTorch] RuntimeError: “nll_loss_forward_reduce_cuda_kernel_2d_index” not implemented for ‘Double’ の原因
# 概要
PyTorchを使っていたら、
`RuntimeError: “nll_loss_forward_reduce_cuda_kernel_2d_index” not implemented for ‘Double’`
というエラーが発生して困った。stackoverflowで[こんな記事](https://stackoverflow.com/questions/69742930/runtimeerror-nll-loss-forward-reduce-cuda-kernel-2d-index-not-implemented-for)を見つけたが、いまいち何言ってるかよくわからない…(;゚Д゚)
という状況下で、原因を特定できたので共有しておこうという記事。
(日本語の記事がなかった)# 原因
## 言葉で説明
pytorchのデータセットに渡す、目的変数が、「本来は整数値じゃないといけないのに、浮動小数点数になっていた」場合に発生している模様。
## コードで該当箇所を説明
私の場合は、他クラス分類タスクに対するモデルを実装していた。
そして、原因になっ
単一ニューロンによる学習の実装
#数式による説明
###順伝播
単一ニューロンにおいて、順伝播は次の式で表される。
$x$は入力、$y$は出力、$w$は重み、$b$はバイアスである。
入力$x$と重み$w$の積にバイアス$b$を加えたものを$u$とし、$u$を活性化関数$f$に渡す。“`math
u = wx + b \\
y = f(x)
“`
ここではシグモイド関数を活性化関数として使用するため、出力$y$は次の式で表される。“`math
y = \frac{1}{1+exp(-(wx+b))}
“`
###誤差
ここでは回帰を扱うため、誤差関数として次の二乗和誤差$E$を使う。
$t$は正解、$y$は出力を表す。“`math
E = \frac{1}{2} \sum_{j=1}^m (y_j – t_j)^2
“`
単一ニューロンは出力が1つのみなので、順伝播1回当たりの二乗和誤差$E$は次の式で表される。“`math
E = \frac{1}{2} (y-t)^2
“`
###最急降下法
ここでは、次の式で表される最急降下法を使用して重みとバイアスを更新する。“`math
Selenium で 2ch に投稿
“`python
import selenium
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common import keys
import chromedriver_binary, timedriver = webdriver.Chrome()
driver.get(” スレのURL “)
driver.get_cookies()comment = ‘書き込み内容’
driver.find_element_by_name(“MESSAGE”).send_keys(comment)
driver.find_element_by_name(“submit”).click() # 書き込み画面送信time.sleep(1)
driver.find_element_by_name(“submit”).click() # 確認画面送信driver.close()
driver.quit()“
【機械学習】学習の終了時間を予測してSlackに通知する
# はじめに
機械学習には多くの時間がかかります。
その際にログをひたすら見つめるのもひとつの楽しみ方ですが、もし終了時間を予測することができれば、学習を見にいく時間を減らせそうです。
そこで学習の終了時間を予測して、Slackに通知するプログラムを作成してみます。# 前提
### SlackAPIキーを取得している
SlackAPIのキー取得方法などについて分かりやすく説明されている記事がありますので、そちらを参照してください。
[Incoming Webhooksのエンドポイントを取得する](https://qiita.com/ik-fib/items/b4a502d173a22b3947a0#incoming-webhooks%E3%81%AE%E3%82%A8%E3%83%B3%E3%83%89%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B)### 環境
– Ubuntu 20.04
– Python 3.8
– slackweb 1.0.5これらの
kivyMDチュートリアル其の肆什漆 Behaviors – Ripple篇
余寒の候、いかがお過ごしでしょうか。
本格的な寒さが身にしみる頃、風邪をひいていませんか。[引用元]
はい、ということで時候の挨拶も踏まえながら、今週もKivyMDのお時間がやって
参りました。余寒って今の季節にぴったりな熟語ですよね。投稿者はまんまと風邪
にやられていますが、どうかみなさんは体調管理のほどを。健康第一。まぁちょっとくらい風邪ひいたところで、この投稿は止めません。続けてくれ!とは
言われないですがw ほぼ自己満足の世界観です。というどうでも話もありますが、今週
はというと、タイトルの通りRipple篇となります。もうあと3回。。いや投稿も止めま
せんし、なんかEffects章なんかもいつの間にか出来ているしで、やることだらけです。まぁその話は再来週くらいにしてもよかとですね。では、今週も元気にレッツラゴ。
## Ripple
冒頭にはこのような一文が記載されています。
> Classes implements