- 1. データ分析
- 2. selenium から Twitter にログインして投稿
- 3. 【Python Flask & SQLAlchemy】初心者プログラマーのWebアプリ#5 DB登録/取得/編集/削除【CRUD】
- 4. investypyで日ごとの株価をグラフ化する。
- 5. [Python]テンプレフォルダ構成について考えてみる(フォルダ構成編)
- 6. 【Python Flask】初心者プログラマーのWebアプリ#4 フォーム POST/GET送信・受け取り
- 7. Python3.11の新機能 (まとめ)
- 8. 【Python】itertools.groupbyで作ったオブジェクトを後で使おうとすると中身がない
- 9. FastAPIでBearerトークンを抽出する
- 10. 【Python3】@propertyで変数を疑似的にプライベート変数化して隠ぺいする
- 11. [Python]循環importになるケースでも型アノテーションができるケースがある、という話
- 12. pythonでクロージャを書いてみた
- 13. 【Python Flask】初心者プログラマーのWebアプリ#3 【Javascript導入】【画像表示】【CSS適用】
- 14. Python3エンジニア認定基礎試験
- 15. Pythonのsubprocessでkillが効かないときの対処法
- 16. 【Python3】プライベートなインスタンス変数にクラス外からアクセスできてしまう
- 17. Python + TypeScriptのmonorepoでpre-commitの設定
- 18. 秋月のI2C接続有機ELディスプレイをラズパイ4に接続する
- 19. 【必見】django_restframworkでリレーションモデルをJSON形式で展開する方法
- 20. Using Docker-outside-of-Docker and Flask to use easily Docker inside the containers
データ分析
#1準備
##1-1下準備
“`
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.metrics import accuracy_score
“`
##1-2データ準備
“`
train = pd.read_csv(“train.csv”)
test = pd.read_csv(“test.csv”)print(‘訓練データの大きさ’, train.shape)
print(‘テストデータの大きさ’, test.shape)
“`
#2変数決定
#2-1相関係数
“`
#Correlation matrix
corr = train.corr()
plt.figure(figsize=(10,10))
sns.heatmap(corr, annot=True)
“`#3機会学習のアルゴリズム
#4評価
selenium から Twitter にログインして投稿
TwitterにPythonからログインして投稿する方法のメモ。
AlmaLinux, Chrom 最新版で確認。##起動
“`python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
import chromedriver_binary
import time# seleniumを起動
options=Options()
options.add_argument(‘–headless’)
options.add_argument(‘–no-sandbox’)
options.add_argument(‘–disable-dev-shm-usage’)
driver=webdriver.Chrome(chrome_options = options)
“`##Twitterログイン
HTMLがよく変わるから注意。
アカウントとパスワードの入力画
【Python Flask & SQLAlchemy】初心者プログラマーのWebアプリ#5 DB登録/取得/編集/削除【CRUD】
前回Flaskのフォームからデータを送信する方法を扱いました。ただ、WEBアプリを作るならデータベース(以後DB)を使わないと便利なアプリ、サービスを作ることができません。
Python(Flask)ではSQLを書いて実行することもできなくはないですが、`SQLAlchemy`と言うORマッパーを使うのが一般的かと思います。
![リレーション.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260345/5a15ca72-67c9-8518-bf1f-4475f0147060.png)
同じPythonのフレームワークDjnagoには独自のORマッパーが標準でついているのでそれを使えばいいですが、Flaskなどの軽量フレームワークにはORマッパーがついていないので`SQLAlchemy`を導入するところから始めます。
:::note
ORマッパーはSQLを書かずにPythonなどの言語を書くだけでSQLを作成してDBのデータを取り扱えるものです。
最近のWEBアプリ開発ではORマッパーを使った
investypyで日ごとの株価をグラフ化する。
#環境
Python version:3.9.7
OS: windows 10.0
Anaconda:conda 4.11.0#実装したかったこと
・日ごとのデータをグラフ化したかった。#code
investpyについての説明は、一番下のリンクを参照してください。
data_get.pyでは、form date,to date までの日ごとの株価変動を取得しています。codeについては、上場している会社のコードを入力します。
結果をcsvファイルとして出力します。実際使ってみて改良していきます。“`python:data_get.py
import pandas as pd
import investpy
import datetime
import osnow = datetime.datetime.now()
today = now.strftime(“%d/%m/%Y”)#変数定義
code = ‘6724’
company = ‘seiko_epson’
performance = ‘term_price’#フォルダ作成
os
[Python]テンプレフォルダ構成について考えてみる(フォルダ構成編)
# 目的
他人から「ソースコード読むの大変」という ~~~職務放棄~~~ お困りごと相談をされることが増えた。
一因として、私のCommitしているコードが我流であることもある気がしているので、業界標準というやつを調べ・考えてみようという記事です。
(意訳:「テメエの努力不足だボケェ」と胸張って言い返すための記事)
(なお、「お前も勉強不足だ」というコメントは大歓迎です)# ディレクトリ構成(2021/12)
Readmeとかは割愛するが、以下のような形。
結論としては、ほぼPytestのベストプラクティス通りとなった。“`
.
├──
├── pyproject.toml
├── setup.cfg
├── setup.py
├── src
│ └─│ ├── __init__.py
│ └── *.py
└── tests
└─
├── __init__.py
└── test_*.py
“`# CI/CD
説明
【Python Flask】初心者プログラマーのWebアプリ#4 フォーム POST/GET送信・受け取り
第4回目はform入力ページから情報を入力してもらい、Flask(サーバー)に送ってデータ処理を行う方法を扱います。
![form.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260345/9562ac96-6f89-46e8-da18-0fd2594af105.png)
フォームを使って情報を柔軟に受け取れるようになると、一般的なWEBアプリはもちろん、AI、画像認識機械学習、自然言語系の機械学習などなど、入力されたフォームの情報を使って役に立つWebアプリで使えるようになると思います。
Pythonを使っているならぜひ身につけておきたいところですね。
# :pushpin: Pythonで作るFlaskアプリ記事一覧
| | 内容|
|:—-:|:—-:|
|**part1**|[簡単なページ作成](https://qiita.com/Bashi50/items/30065e8f54f7e8038323)|
|**part2**|[HTMLテンプレート表示](https://q
Python3.11の新機能 (まとめ)
## はじめに
Python 3.5から What’s Newの内容をまとめる記事を投稿してきました。
* [Python3.5の新機能](http://qiita.com/ksato9700/items/9a0aef07d90d00e67525)
* [Python3.6の新機能](https://qiita.com/ksato9700/items/ed839a6db6a671fd31e6)
* [Python3.7の新機能](https://qiita.com/ksato9700/items/35a0bdc04693b3b09757)
* [Python3.8の新機能(まとめ)](https://qiita.com/ksato9700/items/3846e8db573a07c71c33)
* [Python3.9の新機能(まとめ)](https://qiita.com/ksato9700/items/d5df9d36147796c86c77)
* [Python3.10の新機能(まとめ)](https://qiita.com/ksato9700/items/2cd85bec2
【Python】itertools.groupbyで作ったオブジェクトを後で使おうとすると中身がない
PythonでJoblibというライブラリを使って**itertools.groupby**(以下**groupby**)でグループ化したデータを並列実行処理したときに、なぜか上手く動かないことがありました。
解決後に判ったことをふまえて、原因を説明したいと思います。# 起きたこと(再現)
JoblibというライブラリのParallelに**groupby**を使ったジェネレータを渡して、並列処理を実装しました。
“`python:
from joblib import Parallel, delayed
from itertools import groupby# タグごとのメンバーを表示する
def view_members(tag, members):
print(f”Tag:{tag}”)
for member in members:
print(f”Name:{member[‘name’]} Birthday:{member[‘birthday’]}”)# メンバーのデータ
props = [
{“name”: “Al
FastAPIでBearerトークンを抽出する
小ネタ。
FastAPIで`Authorization: Bearer {token}`のようにヘッダで送られてくるトークンを使って認証したい場合に、トークン取得処理の自前実装が不要になる。
# コード
`Depends`を使ってDIチックに処理できるので嬉しい
“`python:dependencies.py
from fastapi import Request, Depends
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentialsasync def get_bearer_token(
request: Request,
bearer: HTTPAuthorizationCredentials = Depends(HTTPBearer)
) -> str:
credentials = await bearer(request)
token = credentials.credentials
return token
“``await b
【Python3】@propertyで変数を疑似的にプライベート変数化して隠ぺいする
Pythonには変数をプライベート化(外部から参照・代入できなくする)する機能がありません。
ただしpropertyデコレータを利用するとそれっぽいものを実装することはできます。## 環境
Ubuntu20.04
Python3.8.10## propertyとは
Pythonの組み込みクラスで、オブジェクトの属性を操作する関数を実装しています。
#### 定義
“` property(fget=None, fset=None, fdel=None, doc=None) “`– fget: 属性の値を取得する関数
– fset: 属性の値を設定する関数
– fdel: 属性の値を削除する関数
– doc : 属性のdocstringを作成する基本的な使用方法は下記の通りです。(Pythonの公式ドキュメントから丸写し)
“`python
class C:
def __init__(self):
self._x = Nonedef getx(self):
return self._xdef s
[Python]循環importになるケースでも型アノテーションができるケースがある、という話
# TL;DR
Pythonで2つのモジュール間でお互いにimportしており、且つその中でのクラスなどの型アノテーションをエラーにならずに対応できるケースがあるよ、という話です。
# 使う環境
– OS: Debian GNU/Linux 10
– Python 3.6※個人で趣味で作っているPythonライブラリの最低バージョンの3.6に合わせているので新しいPythonバージョンではもしかしたら話が変わってくるかもしれません(そろそろPython 3.6のサポートを切っても良いかもですしね・・・)。
# 悩ましいPythonの循環importのエラーの話
他の静的型付け言語だと特に気になったりしないのですが、Pythonだと2つのモジュールでお互いにimportしあう形になっているとImportErrorになったりすることがあります。例えば以下のように`sample_A.py`というモジュールと`sample_B.py`というモジュールがあるとして、お互いに各モジュール内のクラスを型アノテーションなどでimportしている・・・といったケースです。
“`py:s
pythonでクロージャを書いてみた
## 概要
決まりきった正規表現は何回もコンパイルする必要がないので、メモ化したいが、グローバル変数は使いたくないので、初めてクロージャを使って実装してみた
まだまだpython初心者なので、あんまりpythonらしいコードが書けてるかは自信がない## 実装
“`python
import re
from typing import Callable, Patterndef create_email_regexp_generate_func() -> Callable[[], Pattern]:
reg = Nonedef _email_regexp() -> Pattern:
# regへの参照を可能にする
nonlocal reg
if reg is None:
reg = re.compile(r”(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)”)
return regreturn _emai
【Python Flask】初心者プログラマーのWebアプリ#3 【Javascript導入】【画像表示】【CSS適用】
# 今回のPython Flaskフレームワークで作るもの
今回はFlaskで静的ファイルを使用する方法について書きます。
前回はHTMLテンプレートを使って表示を作りました。簡単なデータ埋め込みです、表示を動的に作成していました。
今日扱うのは、「静的ファイル」を使ってページ作成です。静的ファイルは– 画像ファイル
– CSS
– JavaScriptこんなものがあります。WEBページを作るときには必須の要素ですがファイルそのものを配置して、Flaskではとくに処理しないで表示するだけという、中身のデータが変化しないでそのまま使うようなものを静的ファイルって言います。
![html,js,css.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260345/4890a8f2-c20c-f9db-49e1-7ee6a89a84f7.png)
# :pushpin: Pythonで作るFlaskアプリ記事一覧
| | 内容|
|:—-:|:—-:|
|**part1**|[簡単なペー
Python3エンジニア認定基礎試験
#意図
受験して合格できましたので、これから受験される方への一助になればと思い雑記を残します。
###私のバックグラウンド
・受験前からPythonの経験は多少あり
・ただ使う場面が偏っていたので、一度体系的に勉強してみたかったので受験を決意
・他言語の経験も多少あり
・職業プログラマではない
・飯を食っているのはインフラエンジニアとして
・仕事があるので、勉強に避けるのは土日メイン
#受験当日:メモ用紙等は配布されません
コードを追ったり、リストや文字列を数えたりするのにメモ用紙等があれば便利ですが、試験時にはそのようなものは配布されませんでしたし、持ち込みも不可でした。よって、問題はすべて目で追い、脳内ワーキングメモリで処理せねばなりません。勉強時に問題を解くときもメモ用紙等を使わずに回答できるようにしておきましょう。
#模擬テストと本番の違い
おそらく多くの方は、[DIVE INTO CODE](https://diver.diveintocode.jp/dive_into_exam/lp)様と、[PRIME STUDY](https://study.prime-strategy
Pythonのsubprocessでkillが効かないときの対処法
# はじめに
Pythonの`subprocess.Popen`を使って,サブプロセスを起動・終了させようとしたが終了だけうまくいかなかった.
原因と対処法をメモしておく.# 結論
この現象は,`subprocess.Popen`で`shell=True`を指定していた場合に発生する.対処法は,`exec`コマンドを先頭にくっつけること.
“`python
subprocess.Popen(‘exec 実行するコマンド’, shell=True)
“`# 再現手順
以下のように,`起動する側(run.py)`と`起動される側(wait.py)`の2つのスクリプトを書くと簡単に再現できた.“`python:run.py
from subprocess import Popen
import timep = Popen(‘python3 wait.py’, shell=True)
time.sleep(5)
p.kill()
“`“`python:wait.py
import timefor i in range(1000):
print(i
【Python3】プライベートなインスタンス変数にクラス外からアクセスできてしまう
Pythonのカプセル化について備忘録としてまとめます。
## 環境
* Ubuntu20.04
* Python 3.8.10## 筆者の認識
– インスタンス変数の頭にアンダーバーを2つ着けるとプライベート変数として扱われ、クラスの外部から参照・再代入できなくなる。
“`python:Hoge.py
Class Hoge(object):
def __init__(self, hoge: str):
# 外部からアクセスできなくする
self__hoge = hogehoge = Hoge(“fuga”)
# エラーになるはず
hoge.__hoge = “foo”
# エラーになるはず
print(hoge.__hoge)
“`## 実際の挙動
“`python:Hoge.py
class Hoge(object):
def __init__(self, hoge: str):
self__hoge = hogehoge = Hoge(“fuga”)
hoge.__hoge = “foo”
print(ho
Python + TypeScriptのmonorepoでpre-commitの設定
## はじめに
やろうとした時に他にやっている人がいないくて、
色々調べてもなかったので備忘録として。## よくあるやつ
* `TypeScript`[Run a TypeScript type check in your pre-commit hook using lint-staged + husky](https://dev.to/samueldjones/run-a-typescript-type-check-in-your-pre-commit-hook-using-lint-staged-husky-30id) にあるように `husky` と `lint-staged` の組み合わせを使う
“`json
{
“scripts”: {
“prepare”: “husky install”
},
“lint-staged”: {
“**/*.{ts,tsx}”: [
“prettier –config .prettierrc –parser typescript –write”,
“git add”
秋月のI2C接続有機ELディスプレイをラズパイ4に接続する
秋月で売ってる[有機ELキャラクタディスプレイモジュール 20字x2行](https://akizukidenshi.com/catalog/g/gP-08279/)をRaspberry Pi4に取り付けて制御したメモ。
先人の記事のプログラム(参考文献)をもとに色々改良してみる。
# 組み立て
16文字版も20文字版もピンの形は違う(16文字は1列、20文字は2列)
が機能は一緒。接続は次のとおりとした。|I2C側|ラズパイ側|備考|
|:–|:–|:–|
|1 VSS|7 GND|1−3で短絡|
|2 VDD|1 3.3V|2−4で短絡|
|3 /CS|7 GND|1−3で短絡|
|4 SA0|1 3.3V|今回はSアドレスは1に設定。|
|7 SCL|5 SCL| |
|8 SDAin|3 SDA|8−9で短絡|
|9 SDAout|3 SDA|8−9で短絡|将来的な拡張(ディスプレイ2枚差し)と短絡(分岐)のやりやすさを考え、ラズパイからユニバーサル基板を経由してI2Cのディスプレイに接続するようにした。
![イメージ図](https://qiita-ima
【必見】django_restframworkでリレーションモデルをJSON形式で展開する方法
# 目的
DjangoRestframeworkでAPIを作成していて、“`
{
“id”: “9510f7c1-a364-4e44-96ae-2fdd7fbc957d”,
“gender”: “M”,
“username”: “Shun”,
“age”: 25,
“introduction”: “よろしく”,
“job”:1
}
“`
このようなJSONをResponseとして返していたが、
このコードでは“`job: 1“`となっていてかなり扱いづらいJSONとなっているためなんとかしなければならないと思った。# 解決方法
親モデルの利用するシリアライザの中に“`
外部キー名 = 外部キーのテーブルのシリアライザ名()
“`
と記述するだけで外部キーのテーブルを展開できた。# 具体例
django_restframeworkでModelViewSetを利用している。
Membersモデルの中にjobの外部キーがあり、Jobsモデルを参照している状態だ。
これに
Using Docker-outside-of-Docker and Flask to use easily Docker inside the containers
## Disclaimer
Note that the approach presented in this article is **only meant to be used within a trusted network!**:
1. [Command injection](https://owasp.org/www-community/attacks/Command_Injection) codes are contained (as pointed out by my colleague and supervisor [E. Torii](https://qiita.com/eitaro-torii-dtws)).
1. Exposing `/var/run/docker.sock` gives the container root privileges of host (as pointed out by my colleague and supervisor [E. Torii](https://qiita.com/eitaro-torii-dtws)).Aga