- 1. 【Project Euler】Problem 9: 特別なピタゴラス数
- 2. Python: FastAPI: @app.middleware(“http”) を複数書くとどうなる?
- 3. 【Project Euler】Problem 8: 数列の中の最大積
- 4. 【Project Euler】Problem 7: 10001番目の素数
- 5. 備忘録 2022年1月6日
- 6. Raspi OSにopencv-pythonインストールできなかった件
- 7. Detectron2:入門 TACOのデータセット
- 8. Blenderで隣り合う面に異なる色を割当(四色問題)
- 9. djangoでmigrateをしたらtableがないと言われた件
- 10. [Python]Fast APIでTodoリストに認証機能をつけてみた
- 11. tensorflow_cloudを動かそうとしてgoogle cloudの権限にはまったので自己メモ
- 12. Google ColaboratoryでファイルアップローダとURLローダ両方に対応した画像読み込みフォームを作る。
- 13. 「ディープラーニングの数学」9章補足 3値分類モデルの決定境界の表示
- 14. Azure Functionsを用いたサーバーレスなTwitter botを開発してみた(その3、ローカル開発環境でツィートする)
- 15. モーションセンサの可視化に使えるリアルタイムチャートをDjango ChannelsとWebGL-Plotでつくってみた
- 16. 整数に整数を掛けて整数を伝える方法を考えた
- 17. 市区町村コードの一覧をjson化するpythonスクリプトを書いた
- 18. 【Django】備忘録-01 ローカルサーバ立ち上げエラー
- 19. Pythonのキューは3種類ある
- 20. Streamlit Sharingでシークレット情報を扱う
【Project Euler】Problem 9: 特別なピタゴラス数
* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。
### 問題 9. ピタゴラス数
原文 [Problem 9: Special Pythagorean triplet](https://projecteuler.net/problem=9)
**問題の要約:ピタゴラス数の3つの数の和が1000となるもの3つの積を求めよ**
ピタゴラス数はProject Eulerではよく出てくるので、今後のために基本ピタゴラス数を無限に発生させる関数**pyth**を作ります。
“`python
import itertools, math
def pyth():
for m in itertools.count(2):
for n in range(1,m):
if (m%2)==(n%2): continue
if math.gcd(m,n)
Python: FastAPI: @app.middleware(“http”) を複数書くとどうなる?
“`python
…
@app.middleware(“http”)
async def f1(req: Request, call_next):
print(f”⭐️{sys._getframe().f_code.co_name}”)
return await call_next(req)@app.middleware(“http”)
async def f2(req: Request, call_next):
print(f”⭐️{sys._getframe().f_code.co_name}”)
return await call_next(req)@app.middleware(“http”)
async def f3(req: Request, call_next):
print(f”⭐️{sys._getframe().f_code.co_name}”)
return await call_next(req)
…
“`↓
“`
⭐️f3
⭐️f2
⭐️f1
“`
逆順にコールされた。
【Project Euler】Problem 8: 数列の中の最大積
* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。
### 問題 8. 数列の中の最大積
原文 [Problem 8: Largest product in a series](https://projecteuler.net/problem=8)
**問題の要約:1000桁の数列の中の13桁の各桁の積の最大値を求めよ**
Pythonのように文字列の長さに制限がないとかなり簡単に書けますね。文字列$s$は長いので下の方に載せました。
“`python
import numpy as np
L = 13
mprod = [0,0,0]
for i in range(len(s)-L):
s1 = s[i:i+L] # cut sub-string
p1 = np.array(list(map(int,
【Project Euler】Problem 7: 10001番目の素数
* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。
### 問題 7: 10001番目の素数
原文 [Problem 7: 10001st prime](https://projecteuler.net/problem=7)
まずは自力で奇数を順番に生成した素数で割って行って求めてみます。実行時間約16秒。
“`python
import itertools
pn=[2]
for n in itertools.count(3,2):
for p in pn:
divd = (n%p == 0)
if divd: break
if not divd: pn.append(n)
if len(pn) >= 10001: break
print(f”Answer : {pn[-1]}”)
“`安易ですが、前にも使ったsymp
備忘録 2022年1月6日
## コマンドプロンプト
> [ディレクトリ構造をツリー形式で表示(TREE)](https://www.javadrive.jp/command/file/index2.html)
– ディレクトリに含まれるファイル名も表示する `tree /f`
## pythonでパッケージの格納先を特定する
> [pythonのパッケージの保存場所](https://qiita.com/ophhdn/items/4d3ecc6354d92b7ac0ba)
`sys.path`で、importの際にパッケージを探しにいくディレクトリを調べることができる。
“`python
[‘C:\\Users\\hoge\\Documents\\Programming\\python\\PyAutoGUI’,
‘C:\\Users\\hoge\\anaconda3\\envs\\LP\\python310.zip’,
‘C:\\Users\\hoge\\anaconda3\\envs\\LP\\DLLs’,
‘C:\\Users\\hoge\\anaconda3\\envs\\LP\\l
Raspi OSにopencv-pythonインストールできなかった件
## 動作環境
【環境】
・HW: RasberryPi 4
・OS: 2021-10-30-raspios-bullseye-armhf-full イメージ
・Python バージョン 3.9.2:::note info
ls /dev/video0
でカメラが認識されているのを確認しておいてください。
:::## コマンド実行してみる
“`某メーカサイトの手順
sudo apt-get install python-opencv
“`
・・・Unable ですね。(この時はコマンドが違う事に気が付かず)## いろいろ先生で調べてみる
・ビルドしてみたーーー>どうもpythonとの紐づけができない模様。
・急ぎだったので、今一度opencv-pythonについて調べた
→piwheels のサイトでダウンロードするといいらしい。## ●piwheels でopencv-pythonの適用可能なものを見つける
https://www.piwheels.org/project/opencv-python/#install:::note warn
一覧をみると対応す
Detectron2:入門 TACOのデータセット
Detectron2とはMeta(Facebooks)が開発した物体を抽出するAIモデルです。
参考 [facebookresearch/detectron2](https://github.com/facebookresearch/detectron2)自分でFBよりいいモデルを作れる人が少ないでしょうね。FBの人材の結果を無料に使用できることがいいですね。この記事には、Detectron2の基本を説明し、TACOのゴミの画像のデータセットを利用して、物体を検出するモデルを作成します。すべてのコードはGitHubにアップして、GoogleColabを使える環境を使用しています。そして、Colabで使いたい方の場合は、ノートブックの設定は「CPU」に変更することを覚えてく
Blenderで隣り合う面に異なる色を割当(四色問題)
## 隣り合う面に異なる色を割当
実用性は不明ですが、Blenderで面を色で区別する方法を紹介します。
平面で行う場合、四色問題と言われますが、この記事では順番に割り当てるだけなので、厳密に四色問題を解いてはいません。また、平面ではないので五色まで使うことにします。
## 完成図
スザンヌを例にして実行した画面です。オブジェクトはメッシュであれば何でも良いです。見た感じ四色までしか使ってませんね。
## 手順
– 適当にオブジェクト(例:スザンヌ)を作成します。
– 編集モードに入ります。
– マテリアルのスロットを5つ用意します。
– 5つのマテリアルスロットに`Principled BSDF`を作成し、`Base Color`を変えます。
– 面ごとに隣り合う面と異なるように、色を若番から割り当てます。
djangoでmigrateをしたらtableがないと言われた件
# 目的
djangoでmigrateを行い、models.pyの変更を反映させようとしていたが、“`django.db.utils.OperationalError: table “テーブル名” already exists“`と言われてエラーが出てしまったため、何とかしたい。# 結論
マイグレーションを最初の状態に戻し、マイグレーションファイルも削除し、もう一度マイグレーションをし直すことで解決した。
# 実施環境
### ハードウェア環境
| 項目 | 情報 |
|:-:|:-:|
| OS |macOS Catalina(10.15.7) |
|ハードウェア | MacBook Air (11-inch, Early 2015) |
|プロセッサ | 1.6 GHz デュアルコアIntel Core i5|
|メモリ | 4 GB 1600 MHz DDR3 |
|グラフィックス | intel HD Graphics 6000 1536 MB |
### ソフトウェア環境
| 項目 | 情報 |
|:-:|:-:|
| homebre
[Python]Fast APIでTodoリストに認証機能をつけてみた
## 概要
Zennに投稿した下記記事で作ったTodoリストのアプリに認証機能をつけてみました(具体的には新規登録・ログイン)
[[Python]Fast APIでTodoリストをつくってみた](https://zenn.dev/naoya_kuma/articles/788e83666a4034)https://github.com/momonoki1990/fastapi-todo-list-api
※上記記事ではフロントエンドも作成しましたが、本対応に追従していません?
## 方法
FastAPI公式チュートリアルの[Security](https://fastapi.tiangolo.com/tutorial/security/)という章を参考にしました。
※日本語訳で参照すると、Securityの章で参照できるページが5→2に減ってしまうので、英語でご覧いただく方がオススメです。### OAuth2PasswordBearer
参考: [FastAPI’s OAuth2PasswordBearer](https://fastapi.tiangolo.com
tensorflow_cloudを動かそうとしてgoogle cloudの権限にはまったので自己メモ
# 対処
serviceAccountに次のコマンドでroleを設定
※[ ]鍵カッコ内は自分の環境に合わせて打ち換えてください。“`
# for windows command promptgcloud projects add-iam-policy-binding ^
[Your project ID] ^
–member=”serviceAccount:[your service account]” ^
–role=”roles/ml.serviceAgent”gcloud projects add-iam-policy-binding ^
[Your project ID] ^
–member=”serviceAccount:[your service account]” ^
–role=”roles/cloudbuild.serviceAgent”
“`google cloud platform から Cloud Build API を検索して有効化
Google ColaboratoryでファイルアップローダとURLローダ両方に対応した画像読み込みフォームを作る。
# ノートブック
>ファイルアップローダとURLローダ両方に対応した画像読み込みフォームhttps://colab.research.google.com/drive/1zeEw4b8-eX_7wYOwKWoN-fvCkwRTLz0u
# 使い方
jpgとpngのみ。TARGETに画像URLを入れてセルを実行すると、画像URLから画像を読み込みコードセルへ出力(一枚)。
>![スクリーンショット_2022-01-05_23-43-0112.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2459843/e0e3ac5e-b0b2-cb78-dbd6-840fea57b949.jpeg)
TARGETを空にしたまま実行すると、アップロードフォームを表示させローカルから読み込み、コードセルへ出力(複数可)。
>![スクリーンショット_2022-01-05_23-43-011.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws
「ディープラーニングの数学」9章補足 3値分類モデルの決定境界の表示
# はじめに
書籍「最短コースでわかるディープラーニングの数学」の著者です。
書籍のリンクは[こちら](https://www.amazon.co.jp/dp/4296102508)
読者から9章の多値分類モデルに関して、決定境界表示はできないのかとの質問があり、試しに実装した結果を公開します。Notebook全体のリンクは、[こちら](https://github.com/makaishi2/math_dl_book_info/blob/master/notebooks/ch09-multi-classify-dec.ipynb)です。
# 考え方
決定境界とは、2つの確率値が等しくなる点の集まりです。つまり、 softmax関数の入力の時点で考えると、「*2つの1次関数の計算結果が等しい場所*」ということになります。
これを、NumPyの重み行列の言葉でいいかえると、重み行列を一列ずらした行列と元の行列の差をとり、その結果の行列と(1, x, y)の内積の結果がゼロになる場所です。
※ この考え方が成り立つのは正確にいうと例題で扱っている3値分類の場合に限定されます。4値以上
Azure Functionsを用いたサーバーレスなTwitter botを開発してみた(その3、ローカル開発環境でツィートする)
# これまでのお話
Azure FunctionsのTimerTriggerの実行・開発環境を作りました。いよいよコードを書きます。
https://qiita.com/ataraken/items/58ead74b62d30aceb854
# どんなTwitter botを作るのか
開発する場合、まずは全体を設計してから詳細の設計をし、次いで実装するものですが、今回は技術調査もかねて作りながら考えていこうと思います。当方はAzure初心者ですし。Azureのことを理解しつつ全体像を考えることにします。
# まずはツィートしてみる
まずはツィートしてみましょう。そのほうが楽しいでしょうし。
## 認証のための情報を保存する
Twitter APIを使用するための認証情報を保存します。保存する場所はAzure Functionsが提供してくれます。
### デバッグ実行の場合
`local.settings.json`にTwitter APIへの認証情報を保存しましょう。`json`のキーは当方で適当に決めています。
“`json
{
“IsEncrypted
モーションセンサの可視化に使えるリアルタイムチャートをDjango ChannelsとWebGL-Plotでつくってみた
# はじめに
「[リアルタイムチャートをDjango ChannelsとEpoch.jsでつくってみた](https://qiita.com/yakiimo121/items/b008398dfc36e19125f2)」の続編です。前回はDjango ChannelsとEpoch.jsを用いて、モーションセンサのリアルタイム可視化に挑戦しました。Django ChannelsとEpoch.jsでセンサデータをリアルタイムに表示するチャート作ってみました。Django Channelsを使用することで、HTTPと同じくらい簡単にWebsocketを実装出来ました。Epoch.jsも学習コストが低く使いやすかったです。 pic.twitter.com/oflpVucoVk
— yakiimo121 (@yakiimo121) 整数に整数を掛けて整数を伝える方法を考えた
# 問題
Twitterで以下の問題を発見しました。
AさんとBさんとCさんがゲームをします
最初に、 C さんはある正整数 X, Y をAさんに渡します
A さんは X に好きな整数を掛けて B さんに渡します
このとき、 B さんが Y を知る方法を考えてください
なお、 A さんと B さんは事前に話し合って方法を共有することができます— まぐふらい (@magrofly) January 5, 2022
そこで、この問題の条件で、AさんがBさんにYを伝える方法を考えてみました。
# 他の皆さんの方法
## 効率が悪い方法
皆さんの答案を見ると、素因数分解をしたり、Y乗したり、
Y桁の数やY番目の〇〇を用いたり市区町村コードの一覧をjson化するpythonスクリプトを書いた
# 日本全国の市区町村コードのjson探している方向け
[ここ](https://github.com/inchoxd/getAreaCode/blob/main/areaId.json)に市区町村コードをまとめたjsonがあります。# 背景
日本全国の市区町村コードがjsonで配布されていないかなんてことを思ったが、存在していない。
そして、内閣府にいい感じのapiがあるけど登録がめんどくさい。(APIキーは即日発行された。)
国土交通省のAPIの中に市区町村コードが取得できるものがあったのでそれを使うことによってサクっと日本全国の市区町村コード一覧を取得することにした。# 本題
コードはこちらの[Github](https://github.com/inchoxd/getAreaCode/blob/main/getAreaCode.py)から。## コードの仕組み
自動化の一環でこのコード書いたのに、都道府県名はコードは**手入力**しました。本末転倒です()
というのも、今回使用したAPIのレスポンスには都道府県名が含まれていないため、補完する必要がありました。なので
【Django】備忘録-01 ローカルサーバ立ち上げエラー
pyhton manage.py runserver
Exception ignored in thread started by:~~
↓
pyhton3 manage.py runserver
で解決した。
Pythonのキューは3種類ある
# Pythonのキュー
Pythonにはキューを実現する方法が3種類あります。備忘のために整理します。
– list
– collections.deque
– queue.Queue## list
listで実現する場合は、`append()`と`pop(0)`を利用します。“`python
def test_queue_list():
q = []
q.append(1)
q.append(2)
q.append(3)
v = q.pop(0)
assert v == 1
“`ただし、Pythonのlistは内部的にはCの配列で実装されているため、この方法はおそいです(ちょっと正確な表現ではないかも)。`append()`は $O(1)$ で実現できますが、`pop(0)`は $O(N)$ 。ドキュメンテーションの案内はこんな感じ。
https://docs.python.org/ja/3/tutorial/datastructures.html#using-lists-as-queues
> リストをキュー
Streamlit Sharingでシークレット情報を扱う
StreamlitでAppを作成する際、DBのパスワードやAPI Keyなどのシークレット情報がアクセスに必要になることが多々あります。
今回、AzureのAPIキーをStreamlit Sharingで使いたかったので、StreamlitのSecrets管理機能を試してみました。## Secretsの設定
Streamlit Sharingにてホストしたサイトの設定から`Settings`を選択し、`Secrets`の設定を行います。
シークレット情報はTOML形式で記述します。![20220105133416.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/484840/c86206ad-138d-7873-b89b-15319e53f597.png)
![20220105133405.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/484840/8bdd1580-7770-992c-1e8b-3dbdf