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

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

Build a network tunnel using Python and the LAMP(PHP) stack.

## Getting Started
Hosting services based on the LAMP stack (Linux + Apache + MySQL + PHP), commonly known as shared hosting, can be obtained at an affordable price in any country. If you are lucky, you can get the infrastructure for one-hundredth the cost of acquiring a virtual server.

I was interested in creating a proxy (also known as a VPN) using shared hosting, and I recently succeeded. I considered an implementation similar to [Shadowsocks](https://shadowsocks.org/) as the most ideal and

元記事を表示

djangoの仮装環境でDBが作成できない時の対処法

##### はじめに

みなさん、こんにちは。ゆうたです。

今回はタイトルにも記載した、djangoでDBが作成できない事象に遭遇したので記事にしたいと思います。
※初学者なので認識相違があればご指摘頂けますと幸いです。

##### 環境
“`
Python 3.12.0
Django 5.0.6
“`

##### 結論
コンテナにログインしてDB作成コマンドを実行すればdjangoのDBを作成をできる

##### やろうとしたこと
DBコンテナとWebコンテナを作成しdocker-compose upでコンテナを作成、起動してアプリを立ち上げたい。

##### 事象について
WebとDBコンテナは正常に立ち上がるものの、djangoの仮装環境からDBを作成するコマンドを実行しても以下のエラーが出力されてdjango内にDBが作成されませんでした。

実行コマンド
`(venv)% python3 manage.py migrate`

エラーメッセージ
`Pdjango.db.utils.OperationalError: could not translate hos

元記事を表示

コマンドのバックグラウンド実行とログ管理

# サーバー上でのコマンド実行とログ管理

みなさん、サーバー上でバックグラウンドで実行するコマンドのログ管理や、何日の何時に何のコマンドを打ったかのログを取るのに困っていませんか?

例えば、長時間実行される解析ツールやバイオインフォマティクスツールを実行する場合、その実行状況を確認したり、エラーログを後で確認する必要があることがあります。そんなときに便利なのが、nohupコマンドを使ってコマンドをバックグラウンドで実行し、ログを自動的に保存する方法です。

## 実行スクリプトの説明

以下に示すシェルスクリプトは、指定されたコマンドをバックグラウンドで実行し、そのログをタイムスタンプ付きのファイルに保存する方法です。このスクリプトを使うことで、コマンドの実行結果やエラーメッセージを後で確認することができます。

### シェルスクリプトの内容

“`bash
nohup sh -c ”
LOG_FILE=”/path/to/log/\$(date ‘+%Y%m%d_%H%M%S’)_${TAG}.txt”
echo “Executed command: ${CMD}” > \

元記事を表示

複数のpdfファイルをpythonで一括黒塗りする方法のメモ

## 背景、用途
画像認識(生成AI利用)の案件を受けた際に、個人情報を消してから画像認識に回してくれとの要件があった。普段はadobe acrobatで1枚ずつ編集していたが、量が多すぎたためほかの方法を探した。練習の意味も含め、pythonを使ってみた。
## PDFファイル一括黒塗りの幾つかの方法及び長短
### 方法1:adobe acrobatの墨消しツールを利用
長所:
1わかりやすい。消したい文字を入力し、検索+適用して墨消しすればOK。
2複数ファイルに適用でき、精度もまぁまぁいい。
3コンピュータが判断しているので、条件が良ければ消し漏れが少ない
短所:
1「画像と消したい文字列が認識可能+消したい文字列が決まっている」時だけしか使えない。
2塗りの広さは調節できない
3消したくないものも消してしまう可能性がある
4パソコンの性能?にもよるが墨消しした後に保存するときめっちゃ重くなり、時間がかかる
### 方法2 pythonを使う
長所:
1黒塗りの個所、範囲を自分で指定できる
2画像が文字として認識できなくても行える
3塗る場所が同じであれば、複数ファイルに使える

元記事を表示

【Python】Herokuでseleniumを動かしてスクレイピングをする

## はじめに
Herokuでスクレイピングを行う際、これまでは2つのビルドパックが必要とされていました。

https://codelabsjp.net/heroku-selenium/

https://zenn.dev/eito_blog/articles/7b9c489ebe75c8#%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0%EF%BC%88selenium%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%EF%BC%89%E7%94%A8%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4

しかし、この方法は現在非推奨となっており、警告が表示されるようになっています。

この変更の背景については、Herokuの公式ブログで詳しく説明されています。

https://blog.heroku.com/improved-browser-testing-on-heroku-with-chrome

そこで今回は、最新のスクレイピング手法

元記事を表示

Django Sumの集計結果がNoneだった場合に0にする

# DjangoでSumの集計結果がNoneだった場合に0にするやり方

以下のコードを書いてたときにpointがNoneになるとその後の計算が出来なくなる

“`
point = ThanksCard.objects.filter(f_delete=False, thankseval_id=thankseval_id,from_staff_id=select_user_id).aggregate(Sum(‘point’))
“`

なのでCoalesceを使えとのこと

“`
point = ThanksCard.objects.filter(f_delete=False, thankseval_id=thankseval_id,from_staff_id=select_user_id).aggregate(Coalesce(Sum(‘point’),0))
“`

無事0になりました。

元記事を表示

OMRON SENTECカメラをPythonとOpenCVで制御する方法(5)

前回記事の続きです。

https://qiita.com/kotai2003/items/fd3fdc983cd312290818

### 詳細な解説: メイン実行ブロックとスレッドの使用

この部分のコードは、カメラからの画像取得と設定の管理を行うメインの実行ブロックです。また、スレッドを使用して自動設定機能を別のスレッドで実行しています。以下に各ステップを詳細に解説します。

#### メイン実行ブロック

“`python
if __name__ == “__main__”:
my_callback = CMyCallback()
cb_func = my_callback.datastream_callback
try:
# Initialize StApi before using.
st.initialize()

# Create a system object for device scan and connection.
st_system = st.create_syste

元記事を表示

OMRON SENTECカメラをPythonとOpenCVで制御する方法(4)

前回記事の続きです。
https://qiita.com/kotai2003/items/13001140c96809ea79c2

### 詳細な解説: カメラ設定編集関数

以下では、カメラ設定を編集するための関数について詳しく解説します。これらの関数は、カメラの各種設定(列挙型設定および数値型設定)をユーザーが対話的に変更できるようにするためのものです。

#### `edit_enumeration` 関数

この関数は、列挙型ノードの値を表示し、ユーザーが変更できるようにします。

“`python
def edit_enumeration(nodemap, enum_name):
“””
Display and allow user to modify the enumeration value.

:param nodemap: node map.
:param enum_name: name of the enumeration node.
“””
node = nodemap.get_node(enum_name)

元記事を表示

OMRON SENTECカメラをPythonとOpenCVで制御する方法(3)

前回記事の続きです。

https://qiita.com/kotai2003/items/e64087031a2aa6357be4

### `CMyCallback` クラスの詳細解説

`CMyCallback` クラスは、カメラから取得した画像データを処理し、スレッドセーフな方法で画像データを保持するために設計されています。このクラスは、データストリームからのコールバックを処理するためのコールバック関数を含んでいます。

#### クラスの構造

“`python
class CMyCallback:
“””
Class that contains a callback function.
“””
“`

このクラスは、コールバック関数を含むクラスであることを示しています。

#### 初期化 (`__init__`)

“`python
def __init__(self):
self._image = None
self._lock = threading.Lock()
“`

– `self._im

元記事を表示

OMRON SENTECカメラをPythonとOpenCVで制御する方法(2)

#### はじめに

このチュートリアルでは、OMRON SENTECカメラをStApiライブラリ(`stapipy`)を使用して制御するPythonスクリプトを紹介します。初期化、カメラの接続、自動ホワイトバランス(AWB)、自動ゲイン制御(AGC)、および自動露出(AE)の設定方法を説明します。さらに、取得した画像をOpenCVを使用して処理し表示します。
これはSDKのauto_functions_opencv.pyの解説記事です。

![line-sensor.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208980/04b0dcce-1c32-2c18-f0fc-60359c1e8ca9.jpeg)

#### 前提条件

以下のPythonパッケージがインストールされていることを確認してください。

“`sh
pip install numpy
pip install opencv-python
pip install stapipy #オムロンセンテック社のHPでwheelをダウンロ

元記事を表示

OpenSSL aes-256-cbcで暗号化したファイルをPython pycryptoで復号する話

# OpenSSL aes-256-cbcで暗号化したファイルをPython pycryptoで復号する
PyCryptoで復号する際、SALTの指定が必要。だが、OpenSSLで暗号化する際にはSALTを指定した記憶が無い。
どうやってSALTを抽出すればいいのか悩んだ結果を記載しておく。

## OpenSSLで暗号化と復号化テスト
`openssl`であればたいていのシステムには入っているので、コマンドラインでの暗号/復号をする際はこれが便利だと思う。
“`shell-session
# openssl enc -aes-256-cbc -a -pbkdf2 -in ./plain.txt -out ./crypted.enc -pass pass:’mypassword’
# ls
crypted.enc plain.txt
# cat crypted.enc
U2FsdGVkX19s4t3BtVIv30+1d5rbOvSwTKMP0cap7NJxuVCKvbRKgk6cDYH4oixt
“`
もちろん`openssl enc -d`で解凍も可能。
ちなみに、`-iter

元記事を表示

ASCII×マイクロソフトの生成AIコンテスト AI Challenge Dayに参戦

## はじめに

こんにちは、(株) 日立製作所 [Lumada Data Science Lab.](https://www.hitachi.co.jp/products/it/lumada/about/ai/ldsl/index.html) の植田碩瞭(うえだ みちあき)です。
2024年4月18,19日にASCII×Microsoft主催の「AI Challenge Day」という生成AIに寄せられた質問に対してどう答えるべきかを競うイベントが開催されました。

私はこのイベントに日立製作所Lumada Data Science Lab.のメンバ6人(1人はDay1のみ)で参加してきました。
このような社外イベントは初参戦でとても緊張しましたが、チームで協力して検討や実装を進め、**グランプリを受賞**しました!

この記事では、
– [私たちが検討したソリューションのアーキテクチャ](#ソリューションのアーキテクチャ)
– [生成AIの回答精度向上に向けた工夫(本記事では数ある工夫のうち2

元記事を表示

OMRON SENTECカメラをPythonとOpenCVで制御する方法(1)

## 初めに

以下のPythonコードは、StApiライブラリを使用してカメラから画像をキャプチャし、OpenCVを使って表示する方法を示しています。オムロンセンテックが提供しているSDKのコードですが、この場を借りて説明を追加します。各部分の説明を含め、できる限りわかりやすく解説します。また、OMRONセンテック GigEカメラ専用です。

![line-sensor.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208980/c014dd50-d8e3-c282-2a2b-bc4e21dd329b.jpeg)
https://sentech.co.jp/products/GigE/line-sensor.html#cnt2nd

“`python
import stapipy as st
import numpy as np
import cv2

# キャプチャする画像の枚数
number_of_images_to_grab = 20

# OpenCVで表示する際の画像のスケール
DISP

元記事を表示

【Python】VSCodeからDocker上のFastAPIをデバッグできるようにする

## はじめに
VSCodeを使って、FastAPIのデバッグができる方法を調査しました。
本記事では、デバッグ環境構築の方法をご紹介します。

## 動作イメージ
下記のGifのようにVSCodeのブレークポイントでコードを止めることができます。また、ホバーした変数の値を参照したり、書き換えることができます。

![debugpy_mp動作の様子.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/349189/78e92dd2-8272-12f2-2ea6-8fb5f3e31525.gif)

![debugpy_マウスホバー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/349189/a9c9eb5c-65ee-22b4-1544-894b8069942c.png)

## 環境設定の概要

環境構築手順の要点は下記の通りです。
1. 対象となるFastAPIプロジェクトのrequirements.txtに`debug

元記事を表示

面接官「0.1 + 0.2 == 0.3 が成立しない理由を説明せよ」

## 面接官「0.1 + 0.2 == 0.3 が成立しない理由を説明せよ」

という質問がきたらどう答えるだろうか。

## 0.3にはならない

### Javascript
適当なブラウザから以下のようなJavascript実行した。結果「0.1+0.2==0.3」は「false」となった。

“`js
0.1+0.2==0.3
//false
0.1+0.2===0.3
//false
“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552182/e0a4c538-1729-487b-503c-e1f632b2a7c6.png)

ちなみに以下のような先頭に0をつけなくても、小数点として解釈される。
“`js
.1+.2==.3
//false
“`

### Python
バージョン3.10.11で検証する。同様に「0.1+0.2==0.3」は「false」となった。

“`py
>>> 0.1+0.2==0.3
False
“`

## なぜか

これは

元記事を表示

PythonでPDFの表を抽出して配列形式に変換する

# はじめに
今年から新NISA制度が始まり、投資の話題が職場でもよく飛び交うようになりました。
私も大学卒業を機に株の投資を始め、株の銘柄選びや売買のタイミングを勉強をしています。
そのおかげか「この数字は今どうなってるんだろう?」と思うことが増えてきました。

私は楽天証券のISPEEDで取引をしていますが、これがなかなか便利で大抵の数字はISPEEDで確認できます。しかし、中には載ってない数字・指標もあり、気になったらググって調べてはいますが、これが結構大変だなーと感じてました。

ということで、自動化しました。

私が欲しい情報自体は、日本証券取引所のサイトにアップロードされているPDFに載っているため、これをDL,データ抽出すれば事足ります。
今回はこの作業を自動化し、ゆくゆくはFirebaseのCloud FunctionsにデプロイしてFireStoreにデータをストックし、適当なWebアプリをホストしていつでもどこでも検索できるようにしたいなーと考えてます。

# ざっくり要件
– 以下サイトで毎週火曜に更新される最新のPDFを使用する

https://www.jpx

元記事を表示

PNG⇛JPEG変換メモ(Python)

### やりたかったこと

PNG⇛JPEGをする。
今回問題となったのは、PNG画像の拡張子をJPEGに変えてるだけで、内部情報はPNGのままで怒られてしまった。
そのため、JPEGにしっかり変換する(新卒並感)

### 解決
以下OpencvでJPEG変換するコード。今回エラーとなっていたのは、imwriteする時に保存先をしている第一引数を変数でhogehoge.pngを指定し、無限ループが起きていた。(for文で第四引数のクオリティを下げて画像サイズを小さくしていた。)

第一引数の拡張子は.jpgにしよう(戒め)

“`
# 該当PNG画像
image = cv2.imread(‘hoge.png’)

# JPG画像として保存する
cv2.imwrite(‘hoge.jpg’, image, [int(cv2.IMWRITE_JPEG_QUALITY), 95])
“`

しかし、これでちゃんと中身までJPEGに変換されているかは確認できない。怪しいし、動作確認でのエビデンスはどうしよう・・・・

というわけで下記サイトに出会った。どうやらバイナリの先頭部分(

元記事を表示

データ分析で3Dプロットを第三角法で使う

中学校の技術で立体で何か設計する時にキャビネット図や等角図など色々やりましたが、その中でデータサイエンスにも昇華できると思うのが三角投影図です。
今は三角投影図ではなく第三角法と言われているそうですが(自分が中学校の時は三角投影図と習いましたゆとり世代です)。

# 第三角法
第三角法では立体図形を右上に置いて左上に上から見た図、左下に横(左)から見た図、右下に正面から見た図を作ります。
イメージ↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2782889/90b5408c-7d34-a6e7-df82-7890f6c6e9e2.png)
これを基に、3Dでのプロットで三次元でのプロットだけでは分からない詳細な部分を他の三面図で表します。

# 関数
“`Python3
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
def factor_plot3D(x, y, z, c=None,

元記事を表示

数理最適化で、つぼを積んでみよう

## 問題

特大、大、中、小のつぼが3つずつ、合計12本あります。
それぞれの高さは100cm、80cm、60cm、40cmです。
つぼを縦に重ねると上のつぼが下のつぼに20cmだけ入って低くなります。
たとえば、小の上に大を重ねると`40 + 80 – 20`で100cmになります。
ただし、下のつぼが大きいときは、上のつぼがほぼ入りますが、10cmだけ入り切りません。
たとえば、大の上に小を重ねると`80 + 10`で90cmになります。
3つのつぼをおける場所があります。つぼを重ねて高さを130cmに収めるにはどうすればよいでしょうか?

## 考え方

各つぼを頂点とし、重ねることを辺とすると、[運搬経路(配送最適化)問題](https://qiita.com/SaitoTsutomu/items/1126e1493ff601a858c9)(VRP)として解くことができます。

デポを1つ用意し、デポからすべてのつぼに距離0でつなげます。つぼ間は、重ねたことで高くなる分が距離になります。

## Pythonで解いてみる

VRPを解くためのPyVRPを使って解いてみましょう

元記事を表示

【Flet】WEBレイアウトをClassで作成

今回の記事は[以前の記事](https://qiita.com/oriefield/items/c832e28c92720acafaef)をFletのバージョン0.21.X以降で`UserControl`が非推奨となったことを契機に焼き直しを図ることを目的としています。
まずはFletのバージョン更新に伴うClass形式の記述方法の変更点について紹介し、その後以前作成したコードを更新していきます。

本記事を作成するにあたって以下を参照しました。

* [Flet FastAPI and async API improvements](https://flet.dev/blog/flet-fastapi-and-async-api-improvements)
* [【Flet】Fletで簡単なWEBアプリケーションのレイアウトを作成(Class ver.)](https://qiita.com/oriefield/items/c832e28c92720acafaef)

# 1. FletにおけるClass形式の記述方法

> Flet makes writing dynamic, r

元記事を表示

OTHERカテゴリの最新記事