Python関連のことを調べてみた

Python関連のことを調べてみた
目次

Pythonで並列処理するコードの雛形(進捗表示つき)

Pythonで並列処理するときのコードの雛形です。タスクを何件処理したかの進捗も表示します。自身の備忘録用に投稿しておきます

“`python
import dataclasses
import logging
import random
import sys
import threading
import time
from concurrent.futures import ThreadPoolExecutor
from typing import List

# ログ設定
logger = logging.getLogger()
logger.setLevel(logging.INFO)
log_format = logging.Formatter(“%(asctime)s [%(levelname)8s] %(message)s”)
# 標準出力へのハンドラ
stdout_handler = logging.StreamHandler(sys.stdout)
stdout_handler.setFormatter(log_format)
logger.addHandler(

元記事を表示

Pythonを使えるようにする手順@Mac

## Python3を使えるようにするために
Macには標準でPythonが入っていますが、バージョンが2と古く、そのまま使うのは非推奨です。古いプロジェクトであれば2を使いますが、世の中の多くは3をベースに動いていますので、3に合わせましょう。

:::note info
本稿は環境によって差異が出る内容となっています。
コマンドを安易にコピペせず、よく確認の上作業をお願いします。(責任は負いかねます)

誤りがありましたら、コメントでのご指摘をお願いします。
:::

## Homebrewを入れる
まずはともあれ、Homebrewを入れましょう。
これはパッケージ管理アプリケーションという類のもので、パッケージ(今回でいうとPython3がこれにあたります)の管理をいい感じにやってくれます。
“`sh:homebrewのインストール
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`

きちんと入ったことを確認するために、vers

元記事を表示

【OWASP ZAP】認証設定 (1) Form認証、ベーシック認証のわかりづらいところ

# はじめに
OWASP ZAPを使用し、いくつかのログインの必要なサイトに対して診断を実施しました。
公式のドキュメントを見ても、どのように設定したらいいのか、実際の挙動がどうなるのか、わかりづらい部分が結構ありました。そうしたところを記事にまとめてみようと思います。
今回はZAPの認証設定「Form-Based Authentication」「JSON-Based Authentication」「HTTP/NTLM Authentication」について書きます。

次回以降、ユーザーが作成したスクリプトを使用できる「Script-Based Authentication」やユーザー名・パスワード以外設定不要な「Auto-Detect Authentication」について書く予定です。
また、Automation Frameworkやクロールしにくいサイトに対するSpider, Ajax Spider等を工夫して行う方法もまとめていきたいと考えています。

記事内で触れていない、インストールから設定、スパイダー、診断の基本的な方法は下記ページがわかりやすかったです。

[はじめ

元記事を表示

【AWS,Python】Lambdaを使ってJSONファイルをS3に保存する

# LambdaからS3に保存

![Screenshot 2024-09-05 114344.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722467/c852df12-86b9-0367-b3ea-6a5c5730e440.png)

以前作ったlambdaの関数↑から、取得したJSONファイルをS3へ保存させるようにしました。

https://qiita.com/otaruit/items/44b487e45e5bb6247376

## S3への保存にはboto3が必要

以前作成したコードに
boto3
のインポートを追加します。

“`python
import json
import boto3 //ここを追加
from datetime import datetime
import requests
from bs4 import BeautifulSoup
import urllib3
“`
## boto3からS3オブジェクトを呼び出す
boto3.resource(‘s3

元記事を表示

【典型90問】 成長記録 #002

# [典型90問 002 – Encyclopedia of Parentheses(★3)](https://atcoder.jp/contests/typical90/tasks/typical90_b)
概要としては長さN列のカッコ列を出力する問題。
方針だけ解説で見たところbit全探索のアルゴリズムを用いて解くっぽい。

## bit全探索とは
〇×のような、それぞれ二つの選択肢がある問題に対して、すべての組み合わせを1~nとすると、二進数に変換したときに1と0ですべての組み合わせを表すことができる。このようなアルゴリズムをbit全探索という。
一般的に全探索するため要素数がn≦20程度の場合に用いる。
基本的なbit全探索の型は以下のサイトを参考にして学んだ。

[Python bit全探索を簡単にやるコツ](https://qlitre-weblog.com/python-bit-all-search-easy-trick#google_vignette)

### 脳筋コード
“`python
n = int(input())
k = []  #生成した配列を格納す

元記事を表示

Amazon NeptuneでグラフDBを体験してみる② Gremlinを用いた超単純なデータの操作

こんにちは、Kaneyasuです。

本記事はAmazon NeptuneでグラフDBを体験してみるシリーズの2回目です。
本シリーズの他の記事は記事の最後にリンクをつけています。

# 本シリーズ記事の目標

– グラフDBの意味と用途を理解する
– プログラムからAmazon Neptuneにアクセスする方法を習得する
– Amazon Neptuneのセキュリティの確保方法を習得する
– Amazon Neptuneのスケーリングを習得する
– Amazon Neptuneのバックアップ、リカバリ方法を習得する

# 本シリーズ記事執筆における前提条件

– グラフDBはAmazon Neptuneを使用
– モデルはプロパティグラフ、クエリ言語はGremlinを使用
– クエリ言語の実行はPythonのgremlinpythonで行う
– PythonはJupyter Notebookで実行
– Jupyter NotebookはAmazon SageMakerのNotebookインスタンスで実行

# 第2回目の目標

– Amazon Neptune上のプロパティグラフに対

元記事を表示

Leetcode Day1

**今日からLeetcodeをやっていく!**

今日から毎日Leetcodeをやろうと思う。
1問目はLinked List cycle
https://leetcode.com/problems/linked-list-cycle/submissions/1379361223/

目次
—————–

* [LinkedList](#linkedlist)
* [LinkedListとArrayListの違い](#difference-between-linked-list-and-array-list)
* [Linked List Cycle](#linked-list-cycle)

## LinkedList
### とは何か?

まずは、LinkedListが何かを知らなかったので調べた。

“`python
class LinkedList:

class Node:

def _

元記事を表示

ロバスト主成分分析(RPCA)

# はじめに
本稿は[こちらの参考書](https://faculty.washington.edu/sbrunton/DataBookV2.pdf)の3.7節、Robust Principal Component Analysis (RPCA) の備忘。

# 概要
$\ell_2$-最適化や最小二乗法は外れ値や破損、ノイズに影響されやすいことが知られている。主成分分析も同様に外れ値に関して脆くなってしまう。この敏感さを改善するために、CandesらはロバストなPCAを開発した。ここではその具体的な手法について紹介およびデモコードを作成してみる。

# Principal Component Analysis
先ず、通常のPCAについて再喝しておく。
PCA(Principal Component Analysis)は、データ行列$\boldsymbol{X}\in\mathbb{R}^{m\times n}$を低次元の空間に射影することで、データの主な構造を捉える手法である。次のようにデータ行列を近似する低ランク行列$\boldsymbol{L}$を求める。

“`math
\b

元記事を表示

低ランクのニューラルネットワーク(LowRankNN)。重み行列 W を A×B に分解。

#### TensorFlow.jsを使用してシンプルなニューラルネットワーク(SimpleNN)と低ランクのニューラルネットワーク(LowRankNN)をトレーニングし、損失の変化を比較するためのコードです。

![スクリーンショット 2024-09-05 063122.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/5fdb7888-5ecf-aafd-e5ef-285a57dae30a.png)

低ランク分解の例
低ランク分解の具体的な計算例を挙げると、重み行列 W を A×B に分解する方法は次のようになります:

“`python
import numpy as np

# 元の重み行列
W = np.random.randn(100, 10)

# 低ランク分解
rank = 5
A = np.random.randn(100, rank)
B = np.random.randn(rank, 10)

# 低ランク近似
W_approx = np.dot(A, B)

元記事を表示

プールは楽しいな。スーパーウオータスライダーゲーム。

## スーパーウオータスライダーゲーム。
チューブを進む体験ができます。
![スクリーンショット 2024-09-05 042541.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/048841e2-e14d-f613-5595-49395a9aedb5.png)

![スクリーンショット 2024-09-05 042513.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/fddf25a3-6c89-3cb3-0759-d931d9f0b9b9.png)

![スクリーンショット 2024-09-05 042453.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/af76acd3-b115-7e77-f4ec-639cf59ddbd6.png)

“`html

元記事を表示

ABC369G 解法メモ

# はじめに
突然書きたくなったので書きます。例によって正当性とかそういうのは放置です。

# 問題リンク

https://atcoder.jp/contests/abc369/tasks/abc369_g

# 提出コード

https://atcoder.jp/contests/abc369/submissions/57324615

# 考察プロセス

まず高橋君が通る経路は、選ばれた頂点と根までのパスで通る頂点によって構成される部分木をDFSで通る経路になります。こうすることで、必要な辺を2回だけ通ることですべての頂点を回ることができます。(これ自体が典型?)すなわち、通る必要がある辺の合計長×2が答えになります。従い、最後に求める答えを2倍する形で、いったん合計長だけを考えましょう。(以降の画像による例示は合計長のみですので注意してください。)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2522928/a820111c-0321-9494-6940-8e423cb395

元記事を表示

プロンプトインジェクションを起こす輩を懲らしめる

この記事はQiitaを読まれる方々には釈迦に説法かもしれないですね。
ネタぐらいに思ってください。

## 生成AIを用いるリスク
生成AIを用いるリスクは様々なものが存在します。
ハルシネーションなどもその一つです
ただ、ハルシネーションはユーザーが意図的にもたらすリスクではなく、生成AIの情報を鵜呑みにする場合のリスクです。

今回は、生成AIを用いるにあたって避けては通れない

**プロンプトインジェクション**
に関するリスクに対して、悪い輩をどう懲らしめるかを考えた結果、自分の中の現状の答えが感情に訴えるしかなかったため、ここに供養します。

## そもそもプロンプトインジェクションとは?
プロンプトインジェクションとは、本来の利用目的から外れ、
・情報漏洩
・不適切な利用
・詐欺への流用
等を引き起こしかねないものであり、システム側で定義したプロンプトを無視させるような命令を書いたり、人情(AIに人情っていうのも変だけど)に訴えかけたり、論点をずらしたりすることで、本来意図していない使われ方をされたり、悪用されたりする可能性のある攻撃手法のことです。

#### 例

元記事を表示

【最速検証記事!?】Azure OpenAIで実現するStructured Outputsの力: 具体例と実装ガイド🚀【構造化出力】

掲題の記事を以下に書きました。

構造化出力はとても便利です。

https://zenn.dev/chips0711/articles/feb8663ebc54ad

元記事を表示

Python3認定データ分析試験<数学>マンハッタン距離計算方法

# 前置き

Python認定データ分析試験の範囲で数学のカテゴリにマンハッタン距離の計算があります。

備忘録として計算方法を残します。

# 問題
A = (1,2,3) B = (4,5,6)の2つの座標がある。
座標AB間のマンハッタン距離を求めてください。

# 解き方

各座標に対応する要素の差分における絶対値を求めて足し合わせればOKです。

座標A = (1, 2, 3) および座標B = (4, 5, 6) の場合、マンハッタン距離は以下のように計算できます。

“`
x軸の差を計算:|1 – 4| = 3

y軸の差を計算:|2 – 5| = 3

z軸の差を計算:|3 – 6| = 3

これらの差を合計します:

マンハッタン距離 = 3 + 3 + 3 = 9
“`

したがって、座標Aと座標Bの間のマンハッタン距離は**9**になります。

以上です。お疲れ様でした。
学習の参考にして頂ければ幸いです。

元記事を表示

辞書内の値に応じて値を集計【Python】

## 説明

1. `sum()` 関数を使って、`data` リスト内の各辞書から `type` に基づいて `time` の値を取得し、それらを合計します。
“`python
data = [
{“time”: 60, “type”: “1”},
{“time”: 80, “type”: “1”},
{“time”: 120, “type”: “2”},
{“time”: 180, “type”: “2”},
]

total_time = sum(
entry[“time”] if entry[“type”] == “1” else 0
for entry in data
)

print(total_time) # 140
“`

元記事を表示

最小の開始日と最大の終了日の期間の日数を計算する【Python】

## 説明

1. リスト内包表記を使って、`date_list`内の全ての`start_date`と`end_date`の値を`datetime`オブジェクトに変換し、`datetimes`リストに格納します。
2. `min()`と`max()`関数を使って、`datetimes`リストから最小の日付(最も早い開始日)と最大の日付(最も遅い終了日)を取得します。
3. `max_date`と`min_date`の差を計算することで、二つの日付の間の日数を取得します。`days`属性を使うことで、その差が日数で表現されます。
+1は、開始日と終了日を含めるために加算されています。
“`python
from datetime import datetime

date_list = [
{‘start_date’: ‘2024/04/01’, ‘end_date’: ‘2024/04/30’},
{‘start_date’: ‘2024/05/01’, ‘end_date’: ‘2024/05/31’},
{‘start_date’: ‘2024/06/01’, ‘en

元記事を表示

カメラキャリブレーションを簡単に!自分用の手順まとめ

# はじめに
カメラキャリブレーション毎回準備するのに手間がかかるから、自分用に手順をまとめる。このブログの通り実行すれば、値得られるというところまでやる。

https://github.com/keigo1110/camera_calibration

GitHubだけじゃわからない人用に以下GPTによる解説。

## 準備

### Python環境構築
まずはPython環境を整えましょう。Pythonがインストールされていない場合は、[Python公式サイト](https://www.python.org/)から最新版をインストールしてください。

### 必要なものをインストール
次に、キャリブレーションに必要なライブラリをインストールします。以下のコマンドで必要なライブラリをインストールします。

“`bash
pip install -r requirements.txt
“`

これで、カメラキャリブレーションに必要な環境の準備が完了です。

### チェスボードの準備
キャリブレーションにはチェスボードパターンが必要です。`checkerboard.png`とい

元記事を表示

Python シーケンスまとめ①

Python シーケンスまとめ①

シーケンスとは?

データの集合を扱う際に要素に番号を振って順番に並べるような構造のこと をpythonではシーケンスと呼ぶ. その例として, 「リスト」「タプル」「文字列(string)」があげられる.

シーケンスの初期化

空リストは [ ] で表し, n個の要素数を確保したければ [0]*n とすると0がn個入ったリストが得られる. この場合要素は0だが, 具体的な値の入っていないリストを作るには None を用いる. 例えば, [None]*nとすると0がn個入ったリストが得られる.

リスト

要素の削除

リストから要素を削除するにはdel文を用いる.

“`
$ friends = [‘John’, ‘Mary’, ‘Hiroshi’, ‘Brown’]
$ del friends

元記事を表示

ウェブスクレイピングの効率化: マルチスレッドとイテレータで実現する最適なデータ収集

## 目次
1. はじめに
2. マルチスレッドとイテレータの基礎
3. 並行処理の実装: FastAPIサーバーとスクレイピング
4. コード解説
5. パフォーマンス分析
6. 注意点と最適化のヒント
7. 発展的なトピック
8. まとめ

## 1. はじめに

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/02926b05-3b16-bb82-54d9-4df7520f3a1f.png)

データ処理の最適化に取り組む開発者の皆さま、こんにちは。本記事では、並行データ処理の実装テクニック、特にマルチスレッドとイテレータを組み合わせる方法について詳しく解説します。

大規模データの処理やウェブスクレイピングなどのタスクでは、効率的な処理が鍵となります。本記事で紹介する手法は、処理速度の向上とメモリ使用の最適化を同時に達成する可能性を秘めています。

理論的な解説に加え、FastAPIを使用した実践的なウェブスクレイピングの例を通じて、この手法の有効性を検証します。中

元記事を表示

【crontab】EC2のcrontab -> Pythonスクリプト実行 -> RDSのストプロ -> Slackへ通知、という流れを構築する

# 概要
EC2の`crontab` -> Pythonスクリプト実行 -> RDSのストプロ -> Slackへ通知、という流れを構築しました。

具体的には、
「毎日9時に、プロシージャで実施した結果を、指定のSlackチャンネルに通知する」
という流れがゴールです。

今回は、AWSのEC2サーバでクーロンを利用してPythonスクリプトを定期的に実行させる方法になります。Pythonスクリプトの実行はRDSのストプロを呼び出し、SQL結果を特定のSlackチャンネルに通知します。

構築手順と注意点を解説します。

# 手順
まず、EC2サーバに今回のツール用のディレクトリを作成します。
ここでは、とあるDBテーブルからレコード数をカウントするツールを例にしますので、ディレクトリ名は`count-number-tool`とします。

その下に、以下の3つを作成していきます。

“`
count-number-tool
├── venv
├── number-counter.py
└── run_script.sh
“`

### `venv`の作成
まずは仮想環境を作成しま

元記事を表示

OTHERカテゴリの最新記事