Python関連のことを調べてみた2022年06月14日

Python関連のことを調べてみた2022年06月14日
目次

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 shuffle

flag = 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番め

![Qiitaのトップページにいる人](https://cdn.qiita.com/assets/public/home/banner-qiita-conference-2022_desktop-eb45a7146e2dbb984a62ce975449c010.png)

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

![target.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339688/8817e90e-6f2e-db7c-dfbc-30acfdcc85b8.jpeg)

# いろんな角度の平子さんとその他参考のおじさん

![スクリーンショット 2022-06-13 23.55.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339688/7ed2afef-1491-329c-a8a8-94cbe934fde

元記事を表示

2022年版pyproject.tomlを使ったPythonパッケージの作り方

pyproject.toml のみを使った python パッケージの書き方について説明します。

setup.py や setup.cfg は不要です。
また poetry なども使いません。
(業務レベルでは使うほうが便利だと思います。)

# 背景

仕事で複数のリポジトリにわたる開発をしていますが、一部リポジトリはパッケージにしたほうが使いやすいなと思うことが多々ありました。

パッケージの作り方についてはたくさん記事がありますが、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かどうかを判断するモデルを作成する。

# スクレイピングした情報
**項目**
![スクリーンショット 2

元記事を表示

Heroku無料枠運用のDiscord読み上げbotに辞書機能を付ける

大手のDiscord読み上げbotでは辞書機能というのがあります。
音声合成エンジンがうまく読み上げられない単語のよみがなを登録する機能です。
例:numpy→ナムパイ

Herokuの無料枠で運用しているDiscord読み上げbotでは
そのような辞書機能の実装は不可能だと思っていました。

## なぜHerokuでの辞書機能の実装は不可能だと思ったのか?

理由としては、データの保存先が無いからです。
Herokuで書き込みが許可されているのは/tmpディレクトリのみなのですが、
/tmpディレクトリの内容は定期的に削除されてしまうのです。
つまり、登録した辞書データが定期的に消失してしまうということです。

## どうやってHerokuでの辞書機能を実装したのか?

しばらくして、HerokuではPostgreSQLというシステムが無料で使えることに気がつきました。
PostgreSQLというのは、文字や数字データを保管するためのデータベースの一種です。
文字が保存できるのであれば辞書機能が実装できるのでは?と思いました。

当然、無料枠のPostgresSQLでは色々な制限があ

元記事を表示

pythonなのか、python3なのか。

## トラブル
python3系をネットからインストールしたはずにも関わらず、ターミナルでバージョンを確認すると「Python 2.7.16」と表示される。(「Python 3.10.5」と表示されて欲しい)

“`console
$ python –version
Python 2.7.16
“`

## 原因
バージョン確認のコマンドが間違っていた。
コンピューターによってはpython2系とpython3系の両方がインストールされていることがあり、その場合はコマンドを以下のように使い分ける必要があるらしい。
 
 python2系:python
 pythom3系:python3

自分のコンピューターにはpython2系がデフォルトでインストールされていたため、pythonコマンドを打つと「Python 2.7.16」と出力されるということだった。
python3系のバージョンを確認したければpython3コマンドを打つと「Python 3.10.5」と出力される。

“`console
$ python –version
Python 2.7.16
$ python

元記事を表示

「ナース・スケジューリング: 問題把握とモデリング」 を文系初心者にも分かるように図やイラストを追加する_2

# この記事は
:::note warn
この記事は
「ナース・スケジューリング: 問題把握とモデリング」 を文系初心者にも分かるように図やイラストを追加する_1 の続きとなる記事です。
:::

https://qiita.com/ookamikujira/items/096a868f8f3f58043c66

# 3章 組み合わせ最適化問題としての定式化
## 3-3 各ナースの各日程の勤務内容を組み合わせる定式化(p.40)
### シフト制約条件
>各日各シフトの各グループからの勤務人数の下限と上限を考慮する制約式は、$グループ_r∈R,日_j∈N,シフト_k∈W,下限a_{rjk},上限b_{rjk}$について、
>“`math
>a_{rjk}\leqq\sum_{i∈G_r}x_{ijk}\leqq b_{rjk}
>“`
>と表せる。

1日目においてグループAの日勤の勤務人数に下限が$1$と上限が$2$と設定されていた場合
ナース1、ナース2がグループA、ナース3がグループBとしたとき
赤色の部分の合計が下限($a_{グループA,1,日勤}=1$)以上、上限($

元記事を表示

@Chompie1337のSMBGhost_RCE_PoCの使用方法 (Windows不正アクセスPoC)

## はじめに
CVE-2020-0796はWindows10バージョン1903で発生したRCE(リモートコード実行)です。別名SMBGhostと呼ばれるTCPポート445への攻撃です。@chompie1337氏よりそのPoC(概念検証)がhttps://github.com/chompie1337/SMBGhost_RCE_PoC に公開されています。このスクリプトを使ってWindows10に侵入するための手順をまとめました。本記事にオリジナリティはありません。
## 条件
PoCを1台のWindowsマシンの中の仮想環境で実現します。***VirtualBoxではうまく動作しません***。VMPlayerを使ってください。VMPlayerで2つの仮想マシンを生成し、1台に攻撃側のKaliLinux、他方にWindows10(1903)をインストールします。isoの取得方法やインストール方法は省略します。
KaliLinuxマシンには2つのインタフェースを装備します。ひとつめeth0をNATとしてホストに接続します。IPアドレスはDHCPで取得します。他方のインタフェースeth1は内

元記事を表示

Tensorflowで”DeprecationWarning: NEAREST is deprecated and will be removed in Pillow 10 (2023-07-01).”が表示された時の回避策

フレームワークを作っているのですが、ちょっと前から以下の警告文が出るようになりました。

“` bash
\lib\site-packages\flatbuffers\compat.py:19: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module’s documentation for alternative uses
import imp
\lib\site-packages\keras\utils\image_utils.py:36: DeprecationWarning: NEAREST is deprecated and will be removed in Pillow 10 (2023-07-01). Use Resampling.NEAREST or Dither.NONE instead.
‘nearest’: pil_image.NEAREST,
\lib\site-packages\keras\utils\image_utils.p

元記事を表示

「AssertionError: Torch not compiled with CUDA enabled」とpytorchが認識しない時

# Pytorchでcudaが使えない時どうするか?

 Pytorchをconda環境で使っているときに、
“`
AssertionError: Torch not compiled with CUDA enabled
“`

エラーに出会うことがあります。
そんな時は、
“`
conda install -c pytorch pytorch
“`
とすると解決します。

# 詳細な原因
 詳細な原因と解決策は以下の通りです。

## エラーの詳細

**エラー文**

“`
>>> import torch
>>> torch.cuda.current_device()
Traceback (most recent call last):
File ““, line 1, in
File “/home/hogehoge/yes/envs/gpu_test/lib/python3.7/site-packages/torch/cuda/__init__.py”, line 479, in current_device
_lazy

元記事を表示

Wetな研究者のための、PythonによるSwarm plot(+箱ヒゲ図)の簡単な作成

本稿では下の図のような「Swarmplot」をPythonを用いて作成する方法を解説する。
Swarmplot.png
# Swarmplotとは
エクセルを用いたグラフの作成は最も手軽な手法のひとつであるが、棒グラフ + ドットプロットを作成しようとして、このような図になった経験はないだろうか?
図1_2.png
このような図でも悪くはないのだが、ドットプロットの点同士が重なってしまっており、サンプル数および値の分布を把握しにくい。対して

元記事を表示

AlpineLinux 3.10.3 Python3 NLTKを実行する

:::note warn
クローズ予定の[技術ブログ](https://www.yurikago-blog.com/)に投稿した過去の記事です。
投稿日: 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を使用しない方針となったの

元記事を表示

OTHERカテゴリの最新記事