サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
srbrnote.work
高速なSSDに大きな仮想メモリを設定したら、意外と実用的な速度が出て、物理メモリの代わりになりました。 その時のお話です。 仮想メモリとは、『ページファイル』とか『ページングファイル』とか呼ばれている、あのメモリです。 自作のプログラムを動かすために、巨大なメモリが必要になったので、試しに使ってみました。 結論から言いますと、『物理メモリ48GB』と『仮想メモリ112GB(SSD)』で確保した『合計160GBのメモリ』は、実用的に使えました。 比率で言うと、物理メモリの2.3倍くらいの仮想メモリを設定した感じですね。 112 GB ÷ 48 GB ⇒ 約 2.3 倍 もし、たくさんのメモリが必要で、『物理メモリの代わりにSSDの仮想メモリが使えないか?』と思ったなら、試す価値はあると思いました。 たしかに、仮想メモリが支配的になるほど遅くなりました。ですが、HDDの仮想メモリよりはずっとマ
日本語の全文検索ぜんぶんけんさく (full-text search, FTS) を、高速に実行する Python コード例です。 Python の標準モジュール sqlite3 を使用しました。 sqlite3 から、SQLiteエスキューライト の全文検索 (FTSエフティーエス) を使ってみました。 試したのは、FTS4エフティーエスフォー と FTS5エフティーエスファイブ の2種類です。 ところで、SQLite の読み方は色々ありました。YouTube では、エスキューライト、エスキューエライト、スィクライト、スィクエライト、などの発音を聞きました。 全文検索の使い方(FTS の使い方)ですが、テキストを N-Gram にして、FTS4 か FTS5 の仮想テーブルに INSERT するだけでした。 (2022年2月5日 追記)MeCab の使い方も書きました。 MeCab で
HTML から『本文だけ』をキレイにスクレイピングする簡単な Python コード例を書きました。 ※ 通常のテキスト取得方法はこちらに書きました。 【Python】HTML からテキストを抽出するコード例【lxml.html】 種々雑多しゅじゅざったな HTML から、本文だけをねらって抽出する、汎用的はんようてきなコード例です。 for 文と while 文を使用して、『見出しタグと同じ階層にあるタグ』を取得していくアプローチになります。 『見出しタグ』と『見出しタグに属するテキスト』を対応づけて抽出していきます。 このアプローチで本文抽出を行った結果、本文以外のノイズを含まない、キレイなテキストを取得することができました。 サイドバーやフッターなど、本文とは関係ないテキストを、キレイに除去することができました。 本文に『見出しタグ (h1-h6)』を使用している普通の HTML であ
ログ出力のフォーマッター logging.Formatter(fmt) で指定可能な、10種類以上のフォーマットの出力例です。 『どのようなログ表示が出来るのか?』を確認したくて、コードを書いて試しました。 フォーマットの種類は、Python マニュアルの『LogRecord 属性』に載っていたものを試しました。 (Python) LogRecord 属性(ログレコード属性) 日付、時刻、関数名などのほかに、行番号やプロセス ID まで、自動でログに付加することができました。 それらの出力例(実行結果)を紹介します。 (2024年4月14日追記)logging.basicConfig() でロギング設定をするコード例は、以下のページに書きました(普通のシングルプロセス処理とマルチスレッド処理とマルチプロセス処理でログを記録するコード例です)。 ⇒ logging.basicConfig()
組み込み例外 UnicodeDecodeError(ユニコード デコード エラー) や ValueError(バリュー エラー) といった、『組み込み例外』をキャッチした時のエラーメッセージ取得例です。 (Python) 組み込み例外 (UnicodeDecodeError, ValueError など) 『エラーメッセージ全体』を取得 Python マニュアルによると、例外が発生したときに画面にたくさん表示された『エラーメッセージ全体』は、『スタックトレース』と呼ばれるもののようでした。 これらの文字列は、標準の traceback(トレースバック) モジュールで取得することができました。 フォーマット エクセ traceback.format_exc() を使用します。 (Python) traceback.format_exc(limit=None, chain=True) Unic
(2022年12月12日追記) Arelle が公式に Python ライブラリをリリースしたとのことです。 「arelle-release」という名前のライブラリでした。 pip コマンドでインストールできるようです。 (pypi.org) arelle-release PyPI (インストール方法) (arelle.org) Arelle released on PyPI! (公式のブログ記事) なので、まずは上記ライブラリの使用を検討してみるのが良いと思います。(追記終わり) 以下はもう古い内容になるかもしれませんが、一応残しておきます。 XBRL からデータを取得して決算分析をするときは、Arelleアレル という Python モジュールが便利でした。 公式サイト (Arelle) の説明を読んだところ、Arelle とは、『XBRL ファイルの正しさをチェックするためのソフト(
WinMerge(ウィンマージ) を『バッチファイル』で起動する方法を書きました。 バッチファイルでフォルダを指定しておいて、『ダブルクリック一発』で比較できるようにしました。 毎回ファイルやフォルダを指定する手間が省けて、とても快適になりました。 (追記)WinMerge の履歴を削除する方法も書きました。 WinMerge の履歴を削除する方法【最近使用したファイル】 WinMerge のマニュアル WinMerge(ウィンマージ) を呼び出すときに使用した引数(ひきすう)のマニュアルです。 さて、自分がバッチファイルでやりたいことです。 2つのフォルダを、両方とも読み取り専用で開く。 サブフォルダの中も再帰的に比較する。 あとは、WinMerge のヘルプを見て、目的に合った引数を選んでいきました。 (manual.winmerge.org) コマンドライン – WinMerge ヘ
Python でファイルとフォルダのタイムスタンプを変更するコード例です。 Windows 用です。 win32_setctime.setctime() と os.utime() を使用して、ファイルとフォルダの作成日時・更新日時・アクセス日時を変更します。 win32_setctime は、作成日時を変更するための外部ライブラリです。 (pypi.org) win32-setctime · PyPI (GitHub) Delgan/win32-setctime (2020年10月18日 追記)『win32-setctime 1.0.3』から、フォルダの作成日時変更にも対応したとのことでした。とてもありがたいです。 (GitHub) Support for changing ctime for directories · Issue #3 · Delgan/win32-setctime 以
Pythonパイソン で『半角文字』と『全角文字』を変換するときに、おすすめのライブラリです。 jaconv(ジャパニーズコンバーター) mojimoji(モジモジ) str.maketrans() と str.translate()(メイクトランス と トランスレート) 自分はこの3つを使ってきましたが、どれもおすすめです。 あと、もっと広い範囲の文字について正規化せいきか (normalizeノーマライズ) するときは、unicodedata.normalize() (ユニコードデータ ドット ノーマライズ)が便利でした。 まず、『unicodedata.normalize()』を適用してから、『jaconv.z2h() や jaconv.h2z()』を適用する、といった処理も、自分はよく使ってきました。 jaconv(ジャパニーズコンバーター) 一番使っているのは jaconv です
zip ファイルを解凍せずに直接読み込む Python コード例を書きました。 EDINET も TDnet も EDGAR も、XBRL は『zip ファイル』で公開されていました。 zip ファイルの中身を読み込むときは、いったん HDD か SSD に解凍(展開)するのが一般的ですが、zip から直接読み込むこともできました。 やり方ですが、『標準の zipfile モジュール』を使用したらできました。 zip の中身を SSD とかに解凍しなくていいので、大量の XBRL を読み込むときに、省スペースで済みました。 とても便利です。 もちろん、XBRL 限らず、『普通の zip ファイル』から『普通のファイル』を狙って読み込むこともできました。 標準の zipfile モジュールを使う Python で zip ファイルを読み込むときは、Python 標準の zipfile モジュ
マークダウンにHTMLコードを書きます(結論) 以上です。 いきなり結論ですが、マークダウンの中にHTMLタグをそのまま書けばOKでした。 HUGOは、マークダウンの中に書いたHTMLコードをそのまま出力してくれました。 ※ 『HUGO v0.60.0』以降は、goldmarkの設定(config.toml)で『unsafe: true』を設定すると、従来通りマークダウン中のHTMLが出せました。 (gohugo.io) Goldmark unsafe: true (config.yaml, toml, json) マークダウンファイル(.md) の中に書くHTMLコードは、Raw HTML とか Inline HTML と呼ばれていました。 検索で『markdown raw html』とか『markdown inline html』で検索したら、『マークダウンはインラインHTMLをサポー
Selenium(セレニウム) の SendKeys は遅かったです。 webdriver でテキスト入力するときは、SendKeys で入力するのが簡単でしたが、どうしても速さに限界がありました。 そこで、テキストボックスに長い文字列を入力するときは、『executeScript(エクセキュート スクリプト)』で入力するのがおすすめです。 executeScript を使用したら、テキストエリアの value に、直接テキストを入力することができました。 Python の場合は .execute_script() というメソッドを使用します。 入力したい文字列を直接代入できたので、長いテキストも、一瞬で入力できるようになりました。 Selenium の高速化が必要なときに便利でした。 テキストボックスに文字列を入力するコード 入力フォームのテキストボックス・テキストエリア・インプットボッ
このページを最初にブックマークしてみませんか?
『srbrnote.work』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く