メモ
Xserver-VPSでVPSパネルで接続許可ポートが自由に設定できるようになった。 今までは、あらかじめ決められた設定(SSH、Web、mailなど)のon/off、もしくは全部開ける設定しかなかったので、別途ufwとかで設定する必要があったけど、パネル側で簡単に指定ポー…
XserverVPSでは、「VPS管理」というコントールパネルから、OSやアプリケーションを再インストールができる。試しにDjangoでやってみた。 手順1: VPS管理からVPSパネルを開いてOS再インストールを選択 「電源操作」というところで、シャットダウンしないと「O…
Anacondaで仮想環境を切り替える際、「conda activate 仮想環境名」とコマンド実行するが「conda activate 仮想環境のPATH(/home/*****/myenv1)」としても切り替えられた。当然だが、推奨される方法ではないらしい(環境変数とかシステム設定で不具合が出るか…
Ubuntu22.04 Serverをインストールした直後の状況(メモリ使用量とか)を知りたかったので(検索すれば情報はたくさん出てくるけど)、手元で試してみた。 環境: Windows 11 HomeVirtual Box 7.0.6Ubuntu22.04 LTS Server 手順: Ubuntu22.04 LTS serverのイメー…
y-cruncherという有名な円周率計算ソフトがあります。Windows版以外に、Linux版もあるので、試しにUbuntu22で動かしてみました。pythonで出来るだけ高速に大きな桁の円周率を求める方法を調べていたのですが、y-cruncherを実行して出力をそのまま利用するの…
Flaskアプリで、Mysqlと接続して情報を表示するという単純な処理で、DB接続のエラーハンドリングが失敗する。 mysql.connectorではなく、pymysqlライブラリを利用するようにしたら解消した。。。mysql.connectorとpymysqlを一緒に使うとダメなのかな。 mysql…
Pythonプロジェクトでソースコード群だけからrequirements.txtを生成する前準備のメモです。 githubなどからソースコードだけは取得できる状況で、手元には真っ新なPython環境しかなくて(出先で借りたパソコンで google colabとか)、requirements.txt なども…
JupyterNotebookで処理時間が長いコードを実行する際、完了までどのくらいかかるか、どのくらい進行したかをリアルタイムでプログレスバーで表示したい場合、tqdmというライブラリを利用することができます。 pip install tqdm コード例: サンプルとして、My…
Flaskで構築したWebアプリに、DBから指定した範囲のデータをjson形式でダウンロードさせる処理を追加する際のメモ。 サンプルの仕様: id(連番)、prime_list(素列を格納)というカラムがあるDB(DB名はnuminfo、table名はrime_num)から、idないしprime_listの範…
Flaskアプリを開発していて、app.pyがだんだん肥大化して見通しが悪くなることがあります。ルート(エンドポイント)定義をapp.py以外に切り出してコードをスッキリさせることができます。 一般的な方法は、FlaskのBlueprintを使用することです。Blueprintは…
Flaskで構築したWebアプリに、Webページなどに表示させているデータをjson形式でダウンロードさせるための機能の追加についてのメモ。超簡単。 サンプルコード: from flask import Flask, Response, json app = Flask(__name__) @app.route('/json/') def do…
ipywidgetsライブラリを利用してJupyter notebook上でWebFormを直接実行するアプリが作れます。できるだけJupyter notebook(あるいはJupyter lab)から出ずに作業を続けたい場合などに便利です。データを可視化したグラフのパラメーターをリアルタイムに可変…
データを表示するFlaskアプリを作っていたところ、数万件程度のレコードであれば一瞬で終わるので問題ないのですが、レコード数が数百万件程度になってくると、Webページの最初の表示が4秒ぐらいかかるようになります。 数百万件レコードに対するsqlクエリー…
VM上のUbuntuでJupyter labを立ち上げてから、ホストOS(WIndows11)側のブラウザでJupyter labを開くと、pythonコード&テキスト編集とターミナル操作がブラウザで完結するので楽なのですが、Flaskアプリ(Jupyter notebookでは表示できない処理とか)も同時に…
Pythonに限った話ではありませんが、コンピューターで小数点の計算をさせると誤差が生じるため、期待通りの計算結果が得られないことがあります。 例えば、0.1+0.2 は 0.3 ではなく、0.30000000000000004 となります。 10進数小数を正確に計算するためにdeci…
Flaskを用いたWebアプリとかで、Flask-Cachingというパッケージを使ってキャッシュを有効することで高速化できます。 @cache~デコレータをつけるだけという、とてもシンプルな方法。以下メモ。 準備: Flask-Cachingをpipでインストール pip install Flask-C…
手元でデータ前処理とかで使う場合は、面倒なのでコード中にDB接続情報を書いてしまったりするけど、外部に出すアプリなどのコードではあまりに怖いので、接続情報は外部化して安全にしておきたいですよね。 コンフィグファイルを使用する: テキストファイル…
大量のファイル操作を伴う処理は、ストレージの性能にもよりますが、大抵は遅い処理になります。 そこで、メモリ内で完結するようにファイル操作を行うと、どのくらい高速化されるか、実際に確認してみました。 tmpfsというLinuxにあるメモリ内の一時領域を…
MySQLのver 8系をUbuntu 22にインストールする際のメモ。 環境: ホストOS : Windows 11 Home VM : Virtaul Box 7.0.6 ゲストOS : Ubutnu 22.04.2 LTS 手順 : 古いMySQLが不要な場合は、以下のようにアンインストール。 sudo apt-get remove --purge mysql-se…
MySQLの操作コマンドのメモ。Ubuntu22、MySQL 8 基本 ログインする sudo mysql -u root データベースの情報を確認する SHOW databases; データベースを作成する。 CREATE DATABASE データベース名; 利用するテーブルへ移動する USE テーブル名; テーブルの情…
pythonでround関数で小数点以下の数値を 四捨五入しようとすると、正確に計算されないケースがあります。 Round関数で四捨五入がうまくいかないケースを実際に試してみた結果: 下記の結果は、たしかに2.68ではなく、2.67になります。 f = 2.675 print(round(…
ふと気になったので、正規表現の処理速度を簡単にベンチマークしてみました。 正規表現パターンr'\d{3}-\d{3}-\d{3}-\d{3}-\d{3}-\d{3}'と文字列'123-456-789-123-456-789'のマッチングを1000万回おこなって、その実行時間を計測して表示してます。 以下がコ…
パスワードなどの重要な情報をHash化して扱うのは、オープン系システム構築時の基本の一つですが、最近推奨されているハッシュ化として、saltとstretchingという方法があります。 salt は ハッシュ化する文字列に、さらに別の文字列を加えて処理することで解…
自明なことですが、大きなサイズのSQLiteを扱う際、処理時間の大半はデータベースファイルの読み込みになるので、データベースファイルを先に読み込ませてインメモリのDBに対してSQL文を実行すれば、高速に処理されます。 もしくは、RAMディスクにデータベー…
手元マシンのVM上のUbuntuに10GBのメモリを割り当てた環境での話ですが、2GB超のcsvファイルをpandasで読み込ませて、そこから更にSQLiteにも展開とかしていたらメモリ不足で落ちてしまったので、できるだけメモリを節約しながらSQLiteに読み込ませるコード…
ちょっとしたtipsというか盲点というか、pandasを使ってpipのlistを奇麗に表示する方法。Jupyter notebookとかで使うと便利。 コード out = !pip list import pandas as pd # データフレーム表示オプション設定 pd.set_option('display.max_rows', None) # …
pandasで特に何も考えずにデータを入れて展開していると、結構なメモリを消費します。 pandasのデータサイズと必要なメモリ容量ですが、pandasのデータフレームのサイズは、行数と列数によって決まり、データフレームの各列(カラム)のデータ型によって必要な…
日本の住所表記がヤバすぎる、という記事から 「日本の住所のヤバさ」知れ渡る 正規化・名寄せ問題、Twitterトレンドに - ITmedia NEWS こちらの記事も見ていて 日本の住所の正規化に本気で取り組んでみたら大変すぎて鼻血が出た。 - Qiita ちょっと興味がわ…
Open AIのAPIが面白くて、ついつい、いろいろ試して遊んでしまいますが、割とすぐに無料枠を使い切ってしまいがちです。 OpenAIのAPIの無料枠は、2023年3月からは、3か月間有効な5ドル分の無料クレジットが付与されるそうです。以前は確か15ドルでした。 無…
csvからデータをpandasに読み込む csvの一行目にカラム名を定義していない場合、別途、カラム名を定義したcsvを用意する。 import pandas as pd # カラム定義用のCSVファイルパス column_definition_file = "column_definition.csv" # カラム定義のCSVファイ…