- 1. Python勉強開始① 2022/06/13
- 2. python の標準出力を tee で 表示/保存 できなかった件
- 3. Seleniumで利用するDriverの自動更新方法(Python)
- 4. Redis requires a monkey patched socket library to work with geventと表示される
- 5. ctf4b 2022 CoughingFox Write up
- 6. Pythonによる因果推論~層別解析~
- 7. 【一発ネタ】Qiitaのトップページにいる人とアルコアンドピースの平子さんがどれだけ似ているか判別してみた【OpenCV】
- 8. 2022年版pyproject.tomlを使ったPythonパッケージの作り方
- 9. streamlitの仕組み調査
- 10. 機械学習を使ってWearistaになるための条件を探る!
- 11. Heroku無料枠運用のDiscord読み上げbotに辞書機能を付ける
- 12. pythonなのか、python3なのか。
- 13. 「ナース・スケジューリング: 問題把握とモデリング」 を文系初心者にも分かるように図やイラストを追加する_2
- 14. @Chompie1337のSMBGhost_RCE_PoCの使用方法 (Windows不正アクセスPoC)
- 15. Tensorflowで”DeprecationWarning: NEAREST is deprecated and will be removed in Pillow 10 (2023-07-01).”が表示された時の回避策
- 16. 「AssertionError: Torch not compiled with CUDA enabled」とpytorchが認識しない時
- 17. Wetな研究者のための、PythonによるSwarm plot(+箱ヒゲ図)の簡単な作成
- 18. AlpineLinux 3.10.3 Python3 NLTKを実行する
- 19. ロリポップ!に置いたPythonのCGIでLINE Messaging APIのWebhookを受ける
- 20. 【Docker】Pythonのモジュールimg2pdfがdocker build時にエラーとなる
Python勉強開始① 2022/06/13
「アルゴリズム×数学」が基礎からしっかり身につく本を読み始めました。
わからないコードが出てくるたびに記事を作って頭を整理しようと思います。
ちなみにコードの説明はnote.nkmk.me を参考にさせて頂いています。問題ID002に出てきたmap()の使い方を勉強しました。
map()は、第一引数に適用する関数、第二引数にリストなどのイテラブルオブジェクトを指定する。
ちなみに「イテラブルオブジェクト」とは、for文などで要素を1つずつ取り出して処理できるような(通常、複数の要素からなる)オブジェクトを指す用語である。 例えばリスト、辞書、タプルなど。
中身はそのままでは出力されないのでリスト表記にする必要がある。
“`
import math
l = [4, 16, 25]#このままでは中身は出力されない
print(map(math.sqrt, l))#リスト表記にするとプリントされる
print(list(map(math.sqrt, l)))
>>[2.0, 4.0, 5.0]
“`lambda式を利用して任意の処理を適用したい場合は以下のようにな
python の標準出力を tee で 表示/保存 できなかった件
開発中に大量のエラーを吐き出していたので
エラー表示を見ながらファイルにも保存したかったのに、`tee` を仲介させた途端何も出力しなくなった標準出力がバッファリングされるのが原因らしい
“`
python3 hoge.py | tee log
“`を
“`
python3 -u hoge.py | tee log
“`と、`-u` オプション追加で、解決した。
Seleniumで利用するDriverの自動更新方法(Python)
社内ツールでseleniumを使って色々やろうとしたのだが、Chromeが頻繁に更新されるので、手動更新がめんどくさくなった。
自動更新の仕方を調べ、実際にコーディングし、意図する結果になっているので、整理しておく。**※多少雑だが個人的備忘なのでご了承ください。**
そしてそのツールは現状日の目を見ていないが、法改正をキャッチするために日次でチェックするツール(スクレイピング)にでもしようかと思ったり。
**また、筆者はpythonはゴミレベルなので間違いとかあれば指摘歓迎です。**なおJavaの記事は以下で記載しているので参考まで。(私はJavaで飯を食っているエンジニア)
https://qiita.com/soepy/items/6c6fb877737b43c2ffcd
# 環境情報
– python3
– Windows 10
– VsCode※なお対象のdriverはchromedriver
# 実装
– まずseleniumがない場合はinstall
“`sh
> pip install selenium
“`– 適当なフォルダにpy
Redis requires a monkey patched socket library to work with geventと表示される
“`app.py
from gevent import monkey
monkey.patch_all()
“`をapp.py (`flask run`などで使用しているファイル) の先頭に追加して解決。
https://github.com/miguelgrinberg/Flask-SocketIO/issues/1084
https://www.gevent.org/api/gevent.monkey.html
> Make the standard library cooperative.
>
> The primary purpose of this module is to carefully patch, in place, portions of the standard library with gevent-friendly functions that behave in the same way as the original (at least as closely as possible).
>
> The primary interface
ctf4b 2022 CoughingFox Write up
# SECCON ctf4b 2022
## 22 CoughingFox Write up
クソ雑魚ナメクジエンジニアによる CoughingFox の解法を…## 問題
“`python
from random import shuffleflag = b”ctf4b{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}”
cipher = []
for i in range(len(flag)):
f = flag[i]
c = (f + i)**2 + i
cipher.append(c)shuffle(cipher)
print(“cipher =”, cipher)
“`“`txt
cipher = [ 12147, 20481, 7073, 10408, 26615, 19066, 19363, 10852, 11705, 17445, 3028, 10640, 10623, 13243, 5789, 17436, 12348, 10818, 15891, 2818, 13690, 1
Pythonによる因果推論~層別解析~
# はじめに
層別解析による因果推論について、Pythonによる実装を交えてまとめました。内容について誤り等ございましたら、コメントにてご指摘いただけますと幸いです。# 層別解析の概要
層別解析とは、**交絡因子で解析対象を層に分けて、処置変数がどれだけ被説明変数に影響を与えているかを推定する**統計解析手法です。交絡因子が存在していると、被説明変数が変化した際に、
– **処置変数による効果**なのか
– **交絡変数が処置変数や被説明変数の両方に影響を与えた結果**なのかが判別できません。そこで、交絡因子を層別に分けることで、擬似的に交絡因子の値を固定されているような状態を作り、処置変数の効果を特定してあげようというイメージです。
:::note warn
#### 用語の確認(処置変数)
意図的にとある変数を操作(介入)して効果検証を行うという文脈では**介入変数**と呼ぶことが一般的ですが、必ずしも介入操作が行われていなくても構わないため、便宜上定義した造語です。因果推論のテキストでは「処置変数は**原因変数**、被説明変数は**結果変数**」と呼称されていること
【一発ネタ】Qiitaのトップページにいる人とアルコアンドピースの平子さんがどれだけ似ているか判別してみた【OpenCV】
# 怒られたら消します
消します!!!!!!!!
# Qiitaのトップページにいる人
左から2番め

# アルコアンドピースの平子さん

# いろんな角度の平子さんとその他参考のおじさん
# 背景
仕事で複数のリポジトリにわたる開発をしていますが、一部リポジトリはパッケージにしたほうが使いやすいなと思うことが多々ありました。
パッケージの作り方についてはたくさん記事がありますが、setup.py、setup.cfg、 pyproject.toml などのファイルをどう使い分けるのか、初心者にはわかりにくいです。
また近年は pyproject.toml に諸々の設定が集約され始めているため、 pyproject.toml で完結できると嬉しいですね。今回、pyproject.toml だけで設定できるパッケージのサンプルを作ったので紹介します。
# 説明しないこと
wheelとか
モジュールのインポートの細かい話
pypiへの登録# flat-layout の場合
リポジトリ直下にインストールするパッケージデ
streamlitの仕組み調査
pythonで手軽にWebアプリケーションを作れるフレームワークstreamlitの仕組みについて調べてみました。(誤解がありましたら、どうぞご指摘ください。)
周辺の業務で使うことが結構増えて来たため、何か性能で問題になった場合や拡張が必要な場合にも対応出来るようにと調べてまとめました。#### 対象読者
データサイエンティストではなく、ゴリゴリのエンジニア向けの記事になります。githubのコードと公式のドキュメントを参考に調査しています。
https://github.com/streamlit/streamlit### アーキテクチャ
streamlit は Python(tornade)+React(typescript)で実装されています。
streamlitでは、次の2つのパートがあります。1. web server : streamlitのpythonアプリケーションコードをブラウザに表示するためのフロントエンドのHTML+jsをインスタンス化して通信するために使用します。例えば、アプリケーションでcsvのデータを読み込んで、ブラウザには折れ線グラフのH
機械学習を使ってWearistaになるための条件を探る!
# 概要
WEAR公認ユーザーのWEARISTAにはどうしたらなれるのかについて調べました。(男性のみ)調査の流れ
1.仮説の作成
2.データの特徴量の分布の確認・仮説との比較
3.新しい特徴量を作成する
4.モデルの学習とテスト
5.WEARISTAになるための条件についての考察# WEARとは?
ファション通販サイトZOZOTOWNで有名な株式会社スタートトゥデイが運営するファッションコーディネートサイト(https://wear.jp/first/) のことである。このサイトでは他のユーザーが投稿したコーディネートを見ることができる。# WEARISTAとは?
WEARISTAとは一言で言うと、WEARから公認されたユーザーである。現在、WEARISTAは**672**名いる。WEARのユーザーは**5,936,964**人いるので全体の**0.01**%ほどしかいないことになる。
今回の調査ではプロフィールに記載されている情報だけからWEARISTAかどうかを判断するモデルを作成する。# スクレイピングした情報
**項目**
に投稿した過去の記事です。
投稿日: 2019/12/19
:::Python の自然言語処理ライブラリである NLTK を AlpineLinux 環境で実行する方法をまとめました。
## 検証環境
– Docker Toolbox 18.09.3
– VirtualBox 5.2.20
– Python 3.7.5
– NLTK 3.4.5[ソースコード](https://github.com/krabben16/sandbox-nltk)
## ディレクトリ構造
“`
/
– docker
– Dockerfile
– src
– test.py
– docker-compose-yml
“`Dcokerfile
“`docker
FROM python:3.7.5-alpine# https://www.nltk.org/data.html
# > The downloader will sea
ロリポップ!に置いたPythonのCGIでLINE Messaging APIのWebhookを受ける
## 何故こんなことをしたのか?
個人的な諸事情で素早くデモンストレーション用のLINE Botを作りたかったのですが、Lineのメッセージデータを送るWebhookを手軽に設置したかったので、Pythonが動くというロリポップ!を試験的に使ってみました。LINE公式のPython用サンプルがFlaskを使うものだったのですが、それよりももっと手軽にやりたかったので古のCGIでやっています。時間に余裕があったり、ちゃんとやりたい方はぜひ公式のサンプルを参考にしてください。
https://github.com/line/line-bot-sdk-python## 手順
### 前準備
アカウント開設系のお話なのですでに準備できている方は飛ばしてしまって大丈夫です??♂️1. Line Developersのアカウントを開設
– Lineのアカウントを持っていれば、すぐに開設できます。
– https://developers.line.biz/ja/
2. Line Developers内でプロバイダーを作成→チャンネルを作成
– チャンネ
【Docker】Pythonのモジュールimg2pdfがdocker build時にエラーとなる
# 概要
Python内でHTMLを生成し、Chromiumにキャプチャを行い、キャプチャ(JPEG)をPDFに出力する処理を作成した際に以下のエラーが発生した。
その時の対応メモと今後調査をするため備忘録として残しておく。# エラー内容
docker build時にエラー
“`
Successfully built img2pdf
Failed to build pikepdf
ERROR: Could not build wheels for pikepdf, which is required to install pyproject.toml-based projects
“`
img2pdf内のpikepdfというモジュールのインストールでエラーとなった。# 対応
チームメンバー内でエラーとならなかった人がいたので環境の比較を行った。
– エラーなし
SOCがintel
– エラーあり
SOCがAppleシリコンSOCの差や使用しているPythonのバージョンが異なる…などあったのですが結局調査中にimg2pdfを使用しない方針となったの