- 1. corepack prepare npm@latest–activateができないのでpython3でスクリプト書いて対処。
- 2. LinuxとPython3でsubprocess.Popenを使って”OSError: [Errno 12] Cannot allocate memory”が出たとき
- 3. Github ActionsでPostgreSQLを使ったテストをする
- 4. PIPインストールでよくあるエラーと対策
- 5. PyMC3を用いた混合ガウスモデルのパラメータ推定
- 6. Python マルチな処理で悩んだときにみる スレッド?プロセス?
- 7. バッチファイルと同じ場所のPythonスクリプトファイルを呼び出す
- 8. Python3 csv.DictReaderをforすると見出しだけ列挙される
- 9. Python3 CSVファイルをタプルやリストに読み込む
- 10. dataclass で独自の初期化をする
- 11. PythonでAPIを爆速で構築してみた
- 12. 与謝野晶子はなぜPythonのデコレータを使わなかったのか
- 13. python 正規表現 忌々しい日付のゼロを取り除く
- 14. AOJトライに関する知識知見の記録共有:DSL_1_A
- 15. 【2022年3月受験版】G検定チートシート
- 16. Django 一定期間パスワードを変更していないユーザにパスワード変更を強制する
- 17. Django 初回ログイン時にパスワード変更を強制する
- 18. pythonで作成したファイルを実行ファイルに変更する
- 19. kivyMDチュートリアル其の肆什捌 Behaviors – ToggleButton篇
- 20. wikiのFacadePatternをpython3.xで実装(python3.9)
corepack prepare npm@latest–activateができないのでpython3でスクリプト書いて対処。
## 動機
Nodejs 16.9.0以上で標準搭載されたらしいcorepackでpnpm、yarn、npmを実行していたのですが、corepackのパッケージマネージャーを指定するコマンドで最新バージョンを簡単に指定できないようなので簡易的にPython3でスクリプトを書きました。
– なお、この件につきましたはこのようなissueが上がっています。 –latestオプションの検討
https://github.com/nodejs/corepack/issues/72
近いうちにlatestオプションが追加されるかもしれません。それまでのつなぎとして…
「なんでjsじゃないんだ…?Nodejsなのだからjsで書こうよ…(´・ω・`)」という声が聞こえてきそうですが、遺憾ながらこのスクリプトは私のdotfilesを構築している時に書いた別目的の既存コードを改変した副産物なのでご了承ください…
jsで書くには「引数処理を標準モジュールでできるか?」が不明のためちょっとやる気がでない現状です。
## ちょっとした解説
やってることはただnpm search `<マネー
LinuxとPython3でsubprocess.Popenを使って”OSError: [Errno 12] Cannot allocate memory”が出たとき
# 原因
* 単純にメモリーが足りない
* subprocess.Popenを実行するプロセスのメモリが元々多い# 本当の原因
subprocess.Popenを実行するプロセスのメモリが元々多いとは?
subprocess.Popenはシステムコールのsys_cloneが使われていて、メモリがコピーされて使用量もコピーされるようです・・・
そんなの知らないよ・・・:sob:
tensorflowで大き目のモデルを読み込んだプロセスとかだと大き目になりがち。
その状態でsubprocess.Popenを使って非同期実行するとメモリがコピーされるのか?メモリ空間がコピーされるのかよくわからないがsubprocess.Popenコール時点の容量が消費されるみたいです。単純にメモリーが足りないパターンの場合はどうしようもない。:frowning2:
# 対策
キュー化するとか??大げさになっちゃうなぁ~~:thermometer_face:。今回は、REST APIを作って小さいプロセスからsubprocess.Popenで非同期実行してみた。
Github ActionsでPostgreSQLを使ったテストをする
# 背景
PythonからPostgreSQLにアクセスする処理のテストをpytestで記述した。これをGithub ActionsのCIに組み込みたい。
# 環境
– Python 3.8
ディレクトリ構成は以下。
“`
my-repository
├── app
│ ├── my_module.py
│ └── tests
│ └── test_my_module.py
└── .github
└── workflows
└── psql-ci.yml
“`# 実装
早速だが実装例。
## テストコード
[pytest](https://docs.pytest.org/en/7.0.x/)を使った以下のようなテストがあることを想定する。
pytestの詳細な説明は他に譲るとしてざっくりと何をやっているかを書いておく。
– `setup_and_teardown_psql`
– `yield`より前: データの準備。テーブルの作成と`data/init_data.csv`ファイルに記述された初期データのins
PIPインストールでよくあるエラーと対策
PIPインストールでよくあるエラーと対策をまとめてみた。
#インターネット接続が制限されている(社内ネットワークなど)
▶ 下記のようにプロキシサーバーを通過できるようにする
※プロキシサーバーのURLが「http://proxy.会社名.co.jp」、ポート番号が 「8080」 の場合“`
C:¥Users¥username> set HTTPS_PROXY=http://proxy.会社名.co.jp:8080
C:¥Users¥username> py -m pip install ライブラリ名
“`もしくは
“`
C:¥Users¥username> set HTTPS_PROXY=http://ユーザ名:パスワード@proxy.会社名.co.jp:8080
C:¥Users¥username> py -m pip install ライブラリ名
“`#ファイル書込みの権限がない
▶ 管理者権限でコマンドプロンプトを起動
「コマンドプロンプト」を右クリックして「管理者として実行」
▶ 「–user」オプションをつけて、pip installを実行(use
PyMC3を用いた混合ガウスモデルのパラメータ推定
# はじめに
この記事は、note 「[パソコンが3時間掛けてノイズを作った](https://note.com/quark_gabber/n/nb9212a3f7af6)」の詳細を解説した記事です。
ざっくりな形です。細かく書くとただ既存の本の内容を書き写すだけになるので、もっと細かくな方は[参考](#参考)をご覧いただければと思います。# 動作環境
– WSL2 (Ubuntu 20.04)
– Python3.7.12
– ライブラリについては[Docker Hubにて共有しているイメージ](https://hub.docker.com/r/quark925/pymc3_on_jupyter)の環境で行っています。# MCMC(マルコフ連鎖モンテカルロ法)
– モンテカルロ法は乱数を用いた手法の総称
– 乱数の発生にマルコフ連鎖を用いるこれが**MCMC**
## マルコフ連鎖
取りうる状態の全てを$S$、時点を$t = 1,2,…$とし、過去に起こった状態の履歴が与えられた下での条件付確率として表現すると、$t$において状態が$i(i \in
Python マルチな処理で悩んだときにみる スレッド?プロセス?
# 結論
CPUリソースを最大限に使って君のために命かけるん!
→**マルチプロセス**
大雑把に書けて楽。リソース管理も不要
—-
CPUリソースを食われるのだけは嫌!だって、そんなに大事なことじゃないだもん!だけど、マルチな処理がさせたいん!
→**マルチスレッド**
リソース管理が面倒。けど、うまくやればハッピーになれるかも。
# Python
JavaやCなどの一部の言語は、タスクを複数のCPUに同時に自動的に送信します。
しかし、Pythonでは、
**各プロセスはシングルコアで実行されるため、同じプロセスの複数のスレッドが同じコアで実行される**
`これPythonでマルチな処理を行う上で最も重要なので覚える`
# プログラムの粒度
タスク <= プロセス < マルチスレッド < マルチプロセス の順で大きくなる # プロセス 例) ブラウザ、ワード、VSCodeなどのプログラム全体のこと # マルチプロセス(並列処理) 複数のCPUコアを使って複数のプロセスを実行すること **並列回路をイメージする** → イメ
バッチファイルと同じ場所のPythonスクリプトファイルを呼び出す
# 本文
Pythonスクリプトファイルの関連付けがPython以外でファイルをドロップできない場合など、バッチファイルからスクリプトを呼び出したいことがあります。このときはバッチファイルのスクリプトファイル名の前に`%~dp0`を付けます。“`batch:test.bat(test.pyを呼び出す)
python.exe %~dp0test.py %*
“``%~dp0`はバッチファイルの親ディレクトリのパス+「\」を指すバッチパラメーターです。省略した場合、ドラッグ&ドロップによりカレントディレクトリの場所が変わり、ファイルが見つからない、間違ったファイルを呼び出すといった想定外の動作につながります。
# 蛇足:ストアアプリ版PowerShell 7による関連付け消失時
PowerShell 7をインストーラー版からストアアプリ版に切り替えた場合、ps1ファイルの関連付けが消えることがあります。この場合はインストーラー版PowerShell 7に戻すことで関連付けとドラッグ&ドロップが復活します。ストアアプリ版の場所を探して手動で関連付ける方法でも可能かもしれません
Python3 csv.DictReaderをforすると見出しだけ列挙される
# 本文
`csv.DictReader`を`for`すると見出しだけ列挙されます。これは一度辞書として受け取ることで解決できます。原因は`csv.DictReader`の`iter`結果が`dict`であること、`dict`の`for`がキーを返すことです。アンパックしたくなりますが、`dict`の場合は遠回りが近道です。
“`py:dictのキーだけ列挙されるコード
dd = ({“A”:1, “B”:2, “C”:3},
{“A”:4, “B”:5, “C”:6})
for a, b, c in dd:
print((a, b, c))
#(‘A’, ‘B’, ‘C’)
#(‘A’, ‘B’, ‘C’)
“`“`py:dictを取得できるコード
dd = ({“A”:1, “B”:2, “C”:3},
{“A”:4, “B”:5, “C”:6})
for d in dd:
print(d)
#{‘A’: 1, ‘B’: 2, ‘C’: 3}
#{‘A’: 4, ‘B’: 5, ‘C’: 6}
“`“`py:csv.Di
Python3 CSVファイルをタプルやリストに読み込む
# CSVファイルをタプルやリストに読み込む
`csv.DictReader`クラスは`tuple()`、`list()`で直にタプルやリストに変換できます。空のリストと`for`は不要です。“`py
tuple(csv.DictReader(…)) # タプルへ変換
list(csv.DictReader(…)) # リストへ変換
“`CSVをタプルへ変換する具体例は次の通りです。1コードへまとめるためにCSVは文字列から作成しています。
“`py:CSV➞タプル変換
import csv
from pprint import ppcsv_raw = “A, B, C\n1,2,3\n4,5,6\n7,8,9”.split(“\n”)
csv_rows = tuple(csv.DictReader(csv_raw))pp(csv_rows)
#({‘A’: ‘1’, ‘ B’: ‘2’, ‘ C’: ‘3’},
# {‘A’: ‘4’, ‘ B’: ‘5’, ‘ C’: ‘6’},
# {‘A’: ‘7’, ‘ B’: ‘8’, ‘ C’: ‘9’
dataclass で独自の初期化をする
# 環境
python3.10# web api のレスポンスを dataclass にマッピングしたい
web api のレスポンスがこんな感じだった場合“`py
response = {
‘user_id’: ‘xxxx@example.com’,
‘purchase_histories’: [
{
‘name’: ‘鉛筆’,
‘price’: 120
},
{
‘name’: ‘消しゴム’,
‘price’: 150
}
]
}
“`次のような dataclass を2つ用意する。
“`py
from dataclasses import dataclass@dataclass
class PurchaseHistory:
name: str
price: int@dataclass
class Person:
user_id: str
PythonでAPIを爆速で構築してみた
#目次
[1.はじめに](#1-はじめに)
[2.コーディング](#2-コーディング)
[3.コンテナ化](#3-コンテナ化)#1. はじめに
友人に「PythonでAPIをサクッと作ってよ」と言われたのでシンプルなREST APIを作ってみた。
作ったものを渡すだけでなく作り方も教えて欲しいとのことなので、ここに記事として掲載する。少し手順書のような記載なため、初学者向けかもしれない。
Pythonと聞いて「Djangoでも使うか?」と思いつつも、より*サクッと*感のあるフレームワークを探してみたところ
FastAPIなるものがあり、今回はこれを採用してみた。*[公式](https://fastapi.tiangolo.com/ja/ “FastAPI”)より引用*
>FastAPI は、Pythonの標準である型ヒントに基づいてPython 3.6 以降でAPI を構築するための、モダンで、高速(高パフォーマンス)な、Web フレームワークです。
>FastAPI には Swagger UI と ReDoc の両スタイルのドキュメントを自動で生成してくれる機能があり
与謝野晶子はなぜPythonのデコレータを使わなかったのか
## 著者紹介など
初めまして!
とうきょー大学工学部3年生sai-haiと申します.よろしくお願いします!この記事では,Pythonのデコレータについて調べたことをまとめつつ,それを踏まえて与謝野晶子がPythonのデコレータを使わなかった理由について考察しました.はじめての記事で至らない点が多いかと思います.間違っている点はコメントなどで指摘していただけると嬉しいです.
## 実行環境
Python3.8.2## デコレータとの出会い
Pythonのクラスのインターフェースを明確にしてテスト容易性を向上させるために,Pythonではpropertyを使えると知りました.そこで,propertyを使用したコードを調べて書いてみました.~~~python
class Akiko():
def __init__(self):
self.__secondname = “Hou”@property
def name(self):
pass@name.setter
def name(sel
python 正規表現 忌々しい日付のゼロを取り除く
月と日のあたまにあるゼロをとって、ついでに、日付を世界標準形式のハイフンに変換します。
“`python
import retext = ‘2022年01月01日’
pattern = r'([12]\d{3})[\.\-年](0?)([1-9]|1[0-2])[\.\-月](0?)([1-9]|[1-2][0-9]|3[0-1])日?$’
if re.match(pattern, text):
print(re.sub(pattern, r’\1-\3-\5′, text))
else:
print(‘no match’)
“`
“`
‘2022-1-1’
“`
AOJトライに関する知識知見の記録共有:DSL_1_A
# タスク概要
Disjoint Set: Union Find Tree
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=DSL_1_A
# コード実装例
TIPS1. 例外処理含む評価パターンを追加
“`Python
import pprint, sys, timedef core(args, adv=False):
ret = []
grps = “”.join([str(i) for i in range(args[0])])
for cmd, idx1, idx2 in args[1]:
r = []
if cmd == 0:
if adv:
grps = grps.replace(grps[idx1], grps[idx2])
else:
tmp = “”
for i in range(l
【2022年3月受験版】G検定チートシート
#白本まとめ
タイトルは赤本に対応?#1.1 人工知能の定義
##人工知能とは何か
コンピュータを使って、学習・推論・判断など人間の知能のはたらきを人工的に実現したもの。##AI効果
人工知能で何か新しいことが実現され、その原理が分かってしまうと、「それは単純な自動化であって知能とは関係ない」と結論付ける人間の心理的な効果##人工知能とロボットの違い
ロボット:あらかじめプログラムされた動作を正確に行う。自己判断で進めることはできない。
人間で例えると「体」
人工知能:自立して発展していく。自ら学習して精度を高めることができる仕組み。
人間で例えると「脳」##エージェント
事前に定義された目標を達成するためのコードまたはメカニズム
「チャットボット」「ソフトウェア」など##古典的な人工知能
将棋のプログラムや掃除ロボット、あるいは質問に答える人工知能
入力と出力を関係づける方法が洗練されており、入力と出力の組み合わせの数が極端に多いもの##機械学習
経験からの学習により自動で改善するコンピューターアルゴリズムもしくはその研究領域##ディープラーニング
ディー
Django 一定期間パスワードを変更していないユーザにパスワード変更を強制する
## 環境
Windows 11 Home
Python 3.10.2
Django 4.0.2
venv利用あり
(PyPI)
APScheduler==3.8.1## 関連記事
Django 第1回:[Django Custom User Model の作成](https://qiita.com/startours777/items/706d38e712b0c737a16a)
Django 第2回:[Django 初回ログイン時にパスワード変更を強制する](https://qiita.com/startours777/items/28db625a9bb81a36d4ad)
Django 第3回:[Django 一定期間パスワードを変更していないユーザにパスワード変更を強制する](https://qiita.com/startours777/items/d550ca9b67cea4408a44) 今回## 背景
一定期間、たとえば90日経過したらパスワード変更を促したい場合がある。
これに関してはセキュリティ的に意味があるかの[議論](https://www.soumu.go
Django 初回ログイン時にパスワード変更を強制する
## 環境
Windows 11 Home
Python 3.10.2
Django 4.0.2
venv利用あり## 関連記事
Django 第1回:[Django Custom User Model の作成](https://qiita.com/startours777/items/706d38e712b0c737a16a)
Django 第2回:[Django 初回ログイン時にパスワード変更を強制する](https://qiita.com/startours777/items/28db625a9bb81a36d4ad) 今回
Django 第3回:[Django 一定期間パスワードを変更していないユーザにパスワード変更を強制する](https://qiita.com/startours777/items/d550ca9b67cea4408a44)## 背景
Django利用時、パスワードをメール送信するがそのままそれを利用されたくないケースが存在する。
(セキュリティ的に、とか)
そういったケースでユーザの初回ログイン時にパスワードを強制変更させる機能を実装する。[前
pythonで作成したファイルを実行ファイルに変更する
## 仮想環境を構築
“`
python -m venv exe
exe\Scripts\activate
“`
## ライブラリインストール
“`
pip install pyinstaller
“`
## サンプルスクリプトを用意
以下内容のファイルsample.pyを用意しました。
“`
print(‘sample’)
“`
## 実行ファイルを作成
“`
pyinstaller sample.py
“`
上記コマンドで作成したときは以下ファイルが作成されます。
– pycache
– build
– dist
– sample.spec### 一つのファイルでまとめたいとき
dist内の複数ファイルを纏めて一つのファイルとして扱うときは、
–onefileを付与します。
“`
pyinstaller sample.py –onefile
“`### コンソール画面を非表示
コンソール画面を表示しない場合は、–noconsoleを付与します。
“`
pyinstaller sample.py –noconsole
“`### ライブラリ
kivyMDチュートリアル其の肆什捌 Behaviors – ToggleButton篇
ハロー、Qiita!いかがお過ごしでしょうか。
本当に余寒(先週の続き)という言葉を生み出した人は凄いなぁとしみじみしつつ、
ブルブル震えながらこの投稿記事を書いております。体調などは崩してはないで
しょうか。関東は豪雪だからチュウイセヨ!と警戒情報が出ていましたが、ちょっと積もっただけで
何が警戒なんだろうと思うばかりでしたね。みなさんの区域は結構積もったので
しょうか。全然関係ない地域の人はすみませんが、腹筋でもなさって頂ければと
思います。はい、ということで無事でなによりで、無事でなければこうしてのうのうと記事を
書くこともできません。ひとまず安心ということで、今週も元気にKivyMDのことを
やっていきたいと思います。今週はタイトルの通りで、ToggleButtonとなります。では、レッツラゴ。
## ToggleButton
冒頭にいきなり説明文がありますね。見てみましょう。
> This behavior must always be inherited after the button’s Widget class
> since it works
wikiのFacadePatternをpython3.xで実装(python3.9)
“`python:facade_wiki.py
“””UML
————–> ModuleB
| / |
Facade –> ModuleA |
| \ |
————–> ModuleC
“””# Module B
class Car:def __init__(self):
self.__speed = 0
self.__distance = 0@property
def speed(self) -> int:
return self.__speed@speed.setter
def speed(self, speed: int):
self.__speed = speed@property
def distance(self) -> int:
return self.__d