- 1. lambda 関数作るとき【完全自分用メモ】
- 2. DeepLやーる(Windows 10、Python3.6)
- 3. 【Django】IIS 利用時に python を all users でインストールしなかった場合の対処
- 4. Blockly Python Code Generator(2)
- 5. データ解析のための統計モデリング入門 7章 教科書中の図をPythonで再現してみた
- 6. 「エントロピーと秩序」のプログラムをpythonで書く~エントロピー
- 7. dataclasses-json:データクラスのフィールドの型に`list`などを使うと、`TypeError: ‘type’ object is not subscriptable`エラーが発生する
- 8. APIドキュメントから生成したFastApiスタブをPysenに怒られないようにするまで
- 9. FastAPIでかんたんFirebaseAuthorization+かんたんにテスト
- 10. PydanticのモデルがPythonの予約語と被った時の対処
- 11. 【Project Euler】Problem 56: べき乗の数字和
- 12. Python3でUUIDを生成する
- 13. dataclasses-json:`from __future__ import annotations`がある状態で`.schema().dump()`を実行すると、UserWarningが発生する
- 14. pythonでtiktokのデータ取得
- 15. 自分のためだけの新着お笑いライブ通知Botを作りました
- 16. エンドポイントで認証チェックする方法
- 17. Python、MySQLのDATETIME(マイクロ秒付き)の扱い
- 18. Pythonで2つのウィンドウを前面表示しアクティブにしたい
- 19. コウメ太夫氏のネタの面白さを分析してみた【自然言語処理】
- 20. 【Python】乱数の生成方法
lambda 関数作るとき【完全自分用メモ】
### 1. 概要
lambda関数作成するとき、忘れてググるやるまとめる
### 2. 目次
– [1. 概要](#1-概要)
– [2. 目次](#2-目次)
– [2.1. layer の追加](#21-layer-の追加)
– [3. 参考](#3-参考)#### 2.1. layer の追加
1. `pip install -t {dir_name} {package_name}` でパッケージをdir_nameにインストールする
* dir_name を python にする事で、lambda関数内でパスを指定する必要がなくなる
2. `zip -r9 layer.zip python` で zip化する
3. AWS コンソールからレイヤーの作成→zipをアップロードする
4. arn を取得し、レイヤーの追加でarnを指定する### 3. 参考
* [Lambda レイヤーの作成と共有](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-layers.htm
DeepLやーる(Windows 10、Python3.6)
# はじめに
DeepLやーる# 開発環境
– Windows 10 PC
– Python3.6# 実装
1.無料版に登録https://www.deepl.com/ja/pro-api?cta=header-pro-api/
2.認証キーをコピーする
https://www.deepl.com/ja/pro-account/summary
3.下記プログラムを実行
~~~test.py
import requestsauth_key = “
”
text = “Hello, world”
target_lang = “JA”
url = f”https://api-free.deepl.com/v2/translate?auth_key={auth_key}&text={text}&target_lang={target_lang}”
headers = {“Content-Type”: “application/x-www-form-urlencoded”}
response = requests.post(url,
【Django】IIS 利用時に python を all users でインストールしなかった場合の対処
#はじめに
IIS に Django をデプロイして 画面を一回もお目見えすることなく 500 エラーが出た場合、タイトルの通り python のインストール設定が原因で起きている可能性があります先に結論を記述しますが、その場合の対処策として 2パターン 方法があります
パターン①:python をアンインストールしてから再度、適切な設定でインストールし直す
パターン②:適切な権限を付与して対処する (アンインストールしない)アンインストールして再度インストールしてもいいですが、環境パスが変わるなど、すでにローカルで動かしているシステムに影響があるかないか調べるのもメンドクサイですよね…
今回は パターン② 適切な権限を付与して対処する方法を共有したいと思います
####下記の環境を想定しています
“`
– Windows 10
– Python 3.9.7
– Django 3.2.10
“`#もくじ
– 原因となったインストール手順
– 権限不足時のエラー画面
– 対処方法#原因となったインストール手順
ここで「Install Now」を押してしまって
Blockly Python Code Generator(2)
# Blockly Python Code Generator(2)
前回([Blockly Python Code Generator](https://qiita.com/tkhr68000/items/16532813de01b6242b05))では、Pythonコードを表示するのみでしたが、今回はそれにファイルに保存する機能を追加します。## File API
File APIはHTML5で追加された機能です。
[ウェブアプリケーションからのファイルの使用](https://developer.mozilla.org/ja/docs/Web/API/File/Using_files_from_web_applications)
作成したオブジェクトをファイルとしてダウンロードするためのURLを作成することができます。
`const objectURL = window.URL.createObjectURL(fileObj);`上記で取得したURLは下記関数で開放します。
`URL.revokeObjectURL(objectURL);`## Blob
JavaS
データ解析のための統計モデリング入門 7章 教科書中の図をPythonで再現してみた
# はじめに
個体差などを考慮してデータをモデリングするためには、一般化線形モデルを拡張して、**一般化線形混合モデル(Generalized Linear Mixed Model, 以降GLMMと略します)**などを使う必要性が生じます。
GLMMは、例えば[データ解析のための統計モデリング入門](https://www.amazon.co.jp/%E3%83%87%E3%83%BC%E3%82%BF%E8%A7%A3%E6%9E%90%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E7%B5%B1%E8%A8%88%E3%83%A2%E3%83%87%E3%83%AA%E3%83%B3%E3%82%B0%E5%85%A5%E9%96%80%E2%80%95%E2%80%95%E4%B8%80%E8%88%AC%E5%8C%96%E7%B7%9A%E5%BD%A2%E3%83%A2%E3%83%87%E3%83%AB%E3%83%BB%E9%9A%8E%E5%B1%A4%E3%83%99%E3%82%A4%E3%82%BA%E3%83%A2%E3%83%8
「エントロピーと秩序」のプログラムをpythonで書く~エントロピー
「エントロピーと秩序」のプログラムをpythonで書く第3弾。
「エントロピー」というタイトルがついているbasicのプログラムをpythonで書き直します。[前回](https://qiita.com/pyjackal/items/0eef5c557f2a1566ac4f)100個の原子から成り立っている物質1(n1)と1500個の原子からなりたっている物質2(n2)にランダムに元気な原子を配置した時の、n1とn2の温度の揺らぎ可視化するプログラムをpython化しました。
今回のプログラムは、n1に配置されている100個の元気な原子がn2のほうへ一個ずつ移っていった時のエントロピーの変化を可視化するプログラムになっています。(モデル世界ということで、k=1で計算されています)
本家のプログラムにはグラフを表示する/しないを選択できる処理が入っていたのですが、グラフがないと面白みがないので省略しました。あと、各値をprintする処理も入っていたのですが、全体のエントロピーが最大となったポイントの値だけをグラフに表示するよう変更しています。“`python
import
dataclasses-json:データクラスのフィールドの型に`list`などを使うと、`TypeError: ‘type’ object is not subscriptable`エラーが発生する
# 実行環境
* Python3.8.6
* dataclasses-json 0.4.5# やりたいこと
[dataclasses-json](https://github.com/lidatong/dataclasses-json)を使って、dictからデータクラスに変換したいです。# エラー発生
以下のコードを実行すると、`TypeError: ‘type’ object is not subscriptable`が発生しました。
“`python:foo.py
from __future__ import annotations
from dataclasses import dataclass
from dataclasses_json import dataclass_json@dataclass_json
@dataclass
class Person:
name: str
club: list[str]d = {“name”: “Alice”, “club”: [“tennis”, “soccer”]}
person = Per
APIドキュメントから生成したFastApiスタブをPysenに怒られないようにするまで
以前はFlaskを使ってゆるい型もないゆるゆるフワフワしたAPIを作って居たものです。
しかしながら、最近は型の概念がいかに素晴らしいかというのをTypeScriptやらGolangやらで体感したので、たとえPythonであっても、しっかりした型でいい感じのコードを書きたくなりました。## 開発環境
– Poetry+Pysen
– これが今どきの最新っぽい雰囲気でおすすめされてたので使います
– openapi-generator-cli
– 別に何で生成してもいいと思いますが、以前から何度か使っていて慣れているので使う
– Stoplight
– 初めからStoplight使って居るので、無いとやってられない、もはや手書きでは書けない## 1 ドキュメントを作る
Stoplightでガリガリ書きます## 2 Python-templeteを使い PysenとPoetry入ったプロジェクトを生成
https://github.com/shuntaka9576/python-project-template
で作ったあと、`git clone` してくる。
FastAPIでかんたんFirebaseAuthorization+かんたんにテスト
これまで他の言語で作っていたAPIを書き直しています。以前のAPIはFirebaseAuthorizationで認証していたので、FastAPIでもFirebaseAuthorizationでユーザー認証したい。さて、どうするか。
## 公式ライブラリでなんとかする
https://qiita.com/DeliciousBar/items/d6845d329e37f21a6d4fhttps://kazuki-hayakawa.hatenablog.com/entry/2019/04/09/213725
セキュリティ的にこれが無難だと思う。しかし、`account_key.json` のような認証鍵をファイルとして渡す必要があり、Dockerコンテナ化する場合はボリュームのマウントがめんどくさくなってしまう。環境変数に全部乗せることができないだろうか?
## サードパーティライブラリでなんとかする
https://github.com/tokusumi/fastapi-cloudauth実は、本当にFirebase Authorizationの認証だけがしたいならProje
PydanticのモデルがPythonの予約語と被った時の対処
みんな大好き、“`openapi-generator-cli“`で、python-fastapiジェネレータを使い、予約語と被るフィールドがあるモデルを生成した際、変な出力が出されたので、その修正策を考えました。
## 作ろうとしたAPIレスポンス
まず、今回作ろうとしているAPIはこのような型のデータを返します。あれ、defってなんとかできるんだっけ?と初めから不安でしたが、とりあえず生成。 (残念ながら自分で定義した仕様でないので従わざるを得ない..)“`json:レスポンス型
{
“query”: “rating”,
“name”: “#RATING_MIN”,
“def”: 0,
“min”: 0,
“max”: 50,
“step”: 1,
“display”: “number”
}
“`## 実際のAPIのスキーマ
この型を返すAPIのスキーマを適当に定義してみます。
バリデーションに最低値が0以上と指定しておきましょう。
(すみませんめんどくさくなってしまったので、各自で定義してみてください…)## 生成コマンド
そし
【Project Euler】Problem 56: べき乗の数字和
* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。
### 問題 56. べき乗の数字和
原文 [Problem 56: Powerful digit sum](https://projecteuler.net/problem=56)
**問題の要約:自然数$a, b < 100$で$a^b$**の数字和の最大値を求めよ 数字和は「[Problem 16: 2のべき乗の数字和](https://qiita.com/masa0599/items/9ffe4d027df4b51ed906)」で作った**digitsum**を使いました。 ```python from itertools import product print(f"Answer: {max([digitsum(a**b) for (a,b) in product(range(1,100), repeat=2)])
Python3でUUIDを生成する
##はじめに
PythonでUUIDを生成する方法です。
本記事はPython3.8を使用しています。uuidというモジュールを使ってUUIDを生成するのですが、
Python3では標準ライブラリとしてバンドルされているので、
importしてすぐに使用できます。https://qiita.com/shimajiri/items/464275c5027ab09bc330
##UUIDとは
UUID(Universally Unique Identifier)とは、世界で同じ値を持つことがない一意な識別子です。##バージョン1
“`python
uuid.uuid1(node=None, clock_seq=None)
“`バージョン1は、時刻とMACアドレスを利用したUUIDで、
uuid1はホストID、シーケンス番号、現在時刻からUUIDを生成します。“`python
uuid.uuid1()
“`引数なしでも利用可能です。
nodeがなければuuid.getnode()で、ハードウェアアドレスを取得しそれが適用されます。clock_seq
dataclasses-json:`from __future__ import annotations`がある状態で`.schema().dump()`を実行すると、UserWarningが発生する
# 実行環境
* Python3.8.6
* dataclasses-json 0.4.5# やりたいこと
[dataclasses-json](https://github.com/lidatong/dataclasses-json)を使って、データクラスからdictに変換したいです。# 何が起きたのか
`.schema().dump(…)`を使って、データクラス`Person`のlistを、dictのlistに変換します。https://github.com/lidatong/dataclasses-json#encode-or-decode-into-python-listsdictionaries-rather-than-json
`foo.py`では、型ヒントに`list`や`dict`などを使うため、ファイルの先頭で`from __future__ import annotations`を記載しました。python3.7以降で型ヒントに`list`や`dict`を使う場合は、先頭に`from __future__ import annotations`を
pythonでtiktokのデータ取得
#1. 前提
| 項目 | 名前 |
|:—————–|——————|
| OS | mac os |
| python | python3 |#2. ライブラリを導入
TikTokApiとplaywrightを入れる“`console
pip install TikTokApi
python3 -m playwright install
“`
#3. s_v_web_idを取得
[TikTok](https://www.tiktok.com/)のページで検証を開いて、
applicationsタブ→cookies→s_v_web_idの値を取得する。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2509814/939c3e51-fd49-d323-8484-cc218dcf085a.png)#3. ハッシュタグ
自分のためだけの新着お笑いライブ通知Botを作りました
### つくったもの
**推し芸人info(仮名)**
お気に入りの芸人を登録すると、その芸人さんの新着ライブを毎日LINEで教えてくれます。
前々からこういうのあったらいいなと思っていたものの、各サイトがなかなか機能追加してくれないので自分で作りました。
![推し芸人info_3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119757/e4607586-7397-623e-c657-51bc1789f43a.gif)プロダクト名は`推し芸人info`(仮名)です。
infoというのは芸人のファンが有志で運営しているTwitterアカウントの通称で、その芸人のライブ・メディア出演情報をまとめてくれるものです。
たとえば[マヂカルラブリーinfo](https://twitter.com/madilove_info)さんは非常に熱量が高く、infoさんご自身にファンがついているほどです。今は完全に自分用なので、需要があればWebサービス化しようかなと思ってます。Web上でお気に入り芸人を登録
エンドポイントで認証チェックする方法
RestAPIを提供する際にHTTPリクエストにカスタムヘッダーを付けてもらって、チェック処理を入れたい場合、脳死状態で書くと下記のようになると思います。
このようにならないイケてる方は以降を見なくても大丈夫ですよ:wink:
“`py
from bottle import route, run, request, HTTPResponse
import json@route(‘/version’)
def version():
“””バージョン情報を返戻します。”””
api_key = request.get_header(‘X-Api-Key’)
# ここでAPIキーのチェック
if api_key == ‘XXXXXXXX’:
resp = HTTPResponse(status=200, body=json.dumps({‘version’: ‘1.0.0’}))
resp.set_header(‘Content-Type’, ‘application/json’)
return res
Python、MySQLのDATETIME(マイクロ秒付き)の扱い
[mysql]:https://dev.mysql.com/doc/refman/5.6/ja/fractional-seconds.html
[strftime]:https://docs.python.org/ja/3/library/datetime.html#strftime-strptime-behavior# やりたいこと
`2022-01-20 12:34:56.123456`というマイクロ秒まで含んだ形式で時刻を表し、MySQLに格納したりPythonで扱ったりしたい。## 本記事では説明しないこと
PythonでMySQLからデータを引っ張ってくる部分。
[pymysql](https://github.com/PyMySQL/PyMySQL)等のリファレンスをご参照ください。# MySQL側
“`sql:MySQLでDATETIME(6)を扱う
CREATE TABLE tbl (dt DATETIME(6));
INSERT INTO tbl VALUES(‘2022-01-20 00:16:07.123456’);
“`# Python側
`
Pythonで2つのウィンドウを前面表示しアクティブにしたい
# やりたいこと
Windows10でPythonを使って、2つのウィンドウを一度アクティブ化し、
`Alt+Tab`で2つのウィンドウを行き来して、コピペ等の作業を自動化したい。# 環境
* Windows10
* Python 3.9.7
* pywin32やpyautoguiはインストール済とする# 案1(win32gui.SetWindowPos)
以下を参考にhttps://blog.goo.ne.jp/masaki_goo_2006/e/6ddf4977ba01dd11d6be256c17cc2ccf
https://office54.net/python/app/windows-foreground-active
“`python:forground.py
import win32gui
import win32conhwnd = win32gui.FindWindow(None, ‘(無題)1 – sakura 2.3.2.0 ‘)
win32gui.SetWindowPos(hwnd, win32con.HWND_TOPMOST, 0, 0,
コウメ太夫氏のネタの面白さを分析してみた【自然言語処理】
##やること
![321116.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1940763/fe1c2fcb-0cd0-8ca0-7076-fc56230807b5.jpeg)
一世を風靡したお笑い芸人、コウメ太夫氏のネタは、白塗りメイクと派手な着物に身を包み、甲高い裏声で「Xかと思ったら、Yでした〜!」と歌ってから「チクショー!」と叫ぶというものです。その面白さを言葉で説明するのは極めて難しいですが、「Xかと思った」という前振りの文Aと、「Yでした」というオチの文Bの接続の突拍子もなさが可笑しみを生み出しているというのは間違いないでしょう。しかし、ただ脈略のない二文を繋げればよいというわけではなく、理解不能ではあるけれどまるで無関連というわけではない、その飛躍具合の妙でネタの出来が決まると考えられます。
そこで、今回はコウメ太夫氏のネタを構成する二つの文の飛躍の程度を定量化し、ネタの面白さにどのような関係があるかを分析します。
文の意味を捉えるために、自然言語処理モデルであるB
【Python】乱数の生成方法
Pythonにおける乱数の生成方法をメモしておく。
#乱数の生成方法
まず、乱数を生成させるためにはPython標準ライブラリの“`random“`モジュールの関数を使用する。そのため、“`random“`モジュールをインポートする必要がある。“`python
import random
“`
乱数を生成する関数のいくつかをメモしておく。## random.random()
**0.0以上1.0未満**の浮動小数点数(float)の乱数を生成する。“`python
print(random.random()) # 0.06542510540207569
“`## random.uniform(a, b)
引数で与えられた任意の範囲で浮動小数点数(float)の乱数を生成する。“`python
print(random.uniform(10, 50)) # 11.769189644114281
“`## random.randint(a, b)
引数で与えられた任意の範囲で整数(int)の乱数を生成する。(a,bの値も含む)`