Python

メモ_Pythonでテキストを音声合成して再生させる方法

Pythonでテキストを音声で読み上げる方法のメモです。 Webアプリなどで音声による案内を行いたい場合などに便利です。 gTTS(Google Text-to-Speech)ライブラリというものがあります。 インストールはいつものpipです。利用に際してはgcloud にログインして認…

メモ_意図しないdb.drop_all() がテストコードに混在してテスト環境DBの一部を破壊

ChatGPTとかCo-pilotなどでブログラム作成支援を活用しまくっているわけですが、寝ぼけて適当なプロンプトを入れてしまい出てきたコードにしれっと db.drop_all() # テスト後にテスト用のデータベースを削除するため というコードが混在していて、そのまま実…

メモ_Pythonで複数のモニター画面のスクリーンショットを一枚の画像として取得するコード

Pythonで複数のモニター画面のスクリーンショットを一枚の画像として取得する方法のメモです。Pillowという便利なライブラリがあり、それを使います。 以下がサンプルコードです。実行してから5秒後に撮影されます。 コード: from PIL import ImageGrab impo…

メモ_構築済みのFlask_Webアプリに後付けでログイン認証を追加する

構築済みのFlask_Webアプリに後付けでログイン認証を追加する際のメモです。 Flask-Loginという便利なものがあるので、それを使います。 まずはFlask-Loginのインストールから。pip install flask-login とかで。 追加する方法は簡単で、既存のWebページ(例 …

メモ_Webアプリで取得したGPSデータを地図にプロットしてルートと総距離を表示する

Webアプリで取得したGPSデータを地図にプロットして総距離も表示する方法です。 時系列で地図上にプロットし、ルートを表示するために folium ライブラリを使うのが簡単なようです。 また、距離の計算にはPythonのgeopyライブラリを使うと簡単に計算できます…

メモ_失念したパスワードを効率的に総当たり探索して暗号化zipを救出するPythonコード

大事なファイルを暗号化zipにして保存しておいたけど、肝心の解凍パスワードを失念してしまった。パスワードの長さ、含まれている文字列の一部だけ覚えているといったた場合に効率的に探索して、暗号化zipを解析するというpythonスクリプト。 方針: 失念して…

メモ_pytestでjava script動作を含むWebページをテストする

pytestでWebアプリでjava script動作を含むWebページをテストする際のメモ。 formでpostして結果を取得する場合とは作法が違う。 ポイント: seleniumが必要になる。「pip install selenium pytest 」でインストール。 ChromeDriverとかも必要。パスは「which…

メモ_Flaskアプリでの簡単なCORS対策

Flaskアプリ側に用意したAPIに Java scriptのfetchでうまくpostできないバグに遭遇して、CORS(Cross-Origin Resource Sharing)というのが原因のようで、以下のような簡単な方法で解決した。 方法: 以下のようにflask_corsを有効にするだけ。もちろん事前に…

メモ_JavaScriptのGeolocation APIとPython_Flaskで位置情報を取得するWebアプリを作る

JavaScriptのGeolocation APIとPython_Flaskで位置情報を取得するWebアプリを作ってみました。 スマホでGPSを利用したアプリを作りたくなり、そのための手始めとして単純に位置情報だけを取得して地図を表示するところまでです。 ネイティブアプリではなくWe…

メモ_軽量LLMなCraw4AIをUbuntu Serverにインストールして実行するまで

何かの記事で見つけた、軽量LLMなCraw4AIとやらを、Virtual Box 上のUbuntu Serverにインストールして実行してみました。 GPUないと動かないかなーとか、メモリがすごく必要になるかなーとか思っていたのですが、 CPUだけの以下のような環境で動きました。 …

メモ_LLMでWebスクレイピングを効率化する

日々進化しまくっているLLM界隈。Crew4AI という便利なものがある。 ↓参考記事 ️ Crawl4AIでWebクローリングを爆速自動化しよう!|-D- 初歩的なWebスクレイピングならBeautifulSoupなどを利用して簡易に書ける。 以下、yahoo newsの指定したURLのtitleタグ…

メモ_Pythonで苗字シェアの簡易変動シミュレーター(お遊び)を作ってみた

選択的夫婦別姓の議論で、500年後は「佐藤さん」だけ? という記事が再度脚光を浴びていて、そんなわけあるか!という反論も数多くネットには出ていて、下記の記事が検索してすぐ出てきたので参考に読んでいたのですが、 500年後に日本人が佐藤だけになる」…

メモ_PEP8をちゃんと参考に。import文で()を使って奇麗に書く。

Pythonのスタイルガイド(コーディング規約)であるPEP8、つい面倒臭くなって準拠していないことが多い(反省)。先人の知恵には素直に従おう。 基本中の基本であるimport 文についてのメモ。自作モジュールからのインポートが大量に連なってきてタイポでバグ…

メモ_Webページを対象にしたテストの内容を記述する際、出力されるhtmlコードをそのままテストに使う

pytestなどでWebアプリの出力内容をテストする際、正しい結果の判定がhtmlコードを含む複雑な文字列だった場合、出力されるhtmlコードをそのままテストコード内で使うと管理が楽になります。 htmlコードは改行やインデントのスペースが大量に含まれているの…

メモ_JuliaとPythonでの行列積の速度比較

ライブラリに依存しない単純な処理、例えばforループをjuliaとpythonで比較すると明確に速度差が現われる(pythonのforループの遅さはお約束ですが) 内容と結果: 2重のforループ1000回で、i*jの値を加算して結果を得る。 python 5.64秒 python(JIT) 0.069秒 J…

メモ_Juliaとpythonで素数探索の速度比較

Julia というプログラミング言語を試してみました。Windows環境にインストールして、Jupyter Lab で実行できるようにセットアップして、素数に関する探索処理をpythonと比較して実行させてみまます。 処理内容: 1000万までの自然数に含まれる双子素数、エマ…

メモ_Flask-Cachingと簡易静的サイト配信の比較

FlaskにはWebサイト・アプリ全体に適用できるキャッシュ機構としてFlask-Cachingがありますが、最近よく見かけるAstroなどの静的サイト生成みたいに、最初から静的HTMLを生成しておいてFlask側で読み込むだけにした場合、Flask-Cachingを有効にしたWebアプリ…

メモ_Pythonでの良さげな負荷テストツール「Locust」

Python環境で使える良さげなWeb負荷テストツール「Locust」を試してみました。 テスト実行側(Locustを実行する方)環境: Ubuntu 22.04 LTS Python 3.12.0 vCPUS : 3 Mem : 4GB テスト対象側環境: Ubuntu 22.04 LTS Python 3.10.12 Webアプリ : Flask 3.0.0、W…

メモ_開発途上のWebアプリ(Flask)に後から自動テスト(pytest)を追加する

大規模なプロジェクトであればCI/CDがすでに整備されているかと思いますのでルールに従っていれば良いのですが、趣味の個人開発(ないし開発者が一人だけのプロジェクトとか)では、テストを考慮せず開発をスタートさせてしまうことはあると思います(推奨はさ…

メモ_MySQL 8で特定のテーブルだけをインメモリにして処理を高速化

趣味で開発しているWebアプリで、MySQLがだんだんと肥大化して処理が重くなってきたので、既存コードへの変更をできるだけ少なく手軽に高速化できる方法を考えていたところ、MySQL 8系でもMEMORYストレージエンジンによる高速化手法が使えたので、その際のメ…

メモ_Flask-Adminで管理画面内に簡単に検索機能を追加

Flask-Adminで構築した管理画面内に、とても簡単に検索機能が追加できたので、メモ。 やり方はとてもシンプルで、Flask-AdminのModelViewには標準で検索機能が組み込まれているため、column_searchable_list属性を使用して特定のカラムに対して検索を有効に…

メモ_Flask-AdminとFlask-LoginでWebアプリ用の管理画面を構築

趣味で作成しているWebアプリ(Python+Flask+waitress)に管理画面をつけたので手順メモ。 管理画面で行いたいことは、データベース(MySQL)への新規データ追加、既存レコード編集、削除だけとシンプルなので、Flask-AdminとFlask-Loginでささっと構築。 慣れて…

メモ_Pandasより速いpolars

Pythonでデータ処理を行う際の標準的なライブラリともいわれるPandasですが、最近、より高速なライブラリとして「polars」というのが、よく利用されているそうです。 使い方は簡単。試しにやってみました。 インストール おなじみのpipで。最初は実験用の仮…

メモ_XserverVPSでPython-WebアプリをFlask+waitressで実行するまでの手順

XserverVPSでPythonで書いたWebアプリをFlask+waitressで実行するまでの手順のメモです。 手順は以下の通りです。OSセットアップ直後の環境でスタートします。OSは Ubuntu 22にしています。 手順 sshでログイン。apt-get update を実行 apt install python3.…

こじつけ算を求めるPythonコード

吉凶数に続いて、任意の西暦年月日の数字の組み合わせで、縁起の良い数字あるいは悪い数字との関係性を探索するコード。単なるこじつけなので「こじつけ算」とでも呼ぼう。 コード: from itertools import itertools def decompose_number(number): return […

吉凶数(西暦年月日の各桁数を合計した数字)を計算するpythonコード

西暦年月日の各桁数を合計した数字を吉凶数というらしいです。完全にオカルトですが、そうはいっても、縁起の悪い数字は避けたかったり、逆に何か大事な数字を決める際は、一応、良いとされる数字にしてみたかったり。 ということで、暇つぶしに吉凶数を計算…

メモ_XserverVPSでOSやアプリケーションを再インストール_試しにDjangoでログインするまで

XserverVPSでは、「VPS管理」というコントールパネルから、OSやアプリケーションを再インストールができる。試しにDjangoでやってみた。 手順1: VPS管理からVPSパネルを開いてOS再インストールを選択 「電源操作」というところで、シャットダウンしないと「O…

メモ_Pythonでグラフ構造のダミーデータを生成しjsonで保存して関係図を描画する

Pythonでグラフ構造のダミーデータを生成しjsonで保存して関係図を描画するまでの一連のメモです。コード例も。 ダミーデータ生成: 以下のような仕様でダミーデータを生成します。 ノード : User_idエッジ : relative、friend、acquaintanceプロパティ : 氏…

メモ_Flaskでmysql.connectorとpymysqlだとエラーハンドリングが失敗する

Flaskアプリで、Mysqlと接続して情報を表示するという単純な処理で、DB接続のエラーハンドリングが失敗する。 mysql.connectorではなく、pymysqlライブラリを利用するようにしたら解消した。。。mysql.connectorとpymysqlを一緒に使うとダメなのかな。 mysql…

メモ_Pythonプロジェクトでソースコード群だけからrequirements.txtを生成する前準備

Pythonプロジェクトでソースコード群だけからrequirements.txtを生成する前準備のメモです。 githubなどからソースコードだけは取得できる状況で、手元には真っ新なPython環境しかなくて(出先で借りたパソコンで google colabとか)、requirements.txt なども…