やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

RamDiskでHTMLファイルをオンメモリ編集する

前回のつづき。

開発環境

背景

SQLite3に保存したHTML文字列データをHTMLとして描画し、ディスプレイに表示したい。

リアルタイム編集できるようにしたい。ファイル保存せず、textデータやio.StringIOなどメモリ上の文字列データを渡すとリアルタイムに反映されるようにしたい。

HTMLファイルやURLからなら表示できた。

http://ytyaru.hatenablog.com/entry/2017/07/15/000000

今回

RamDiskでできる。それまでの間に調べたことも書き残す。

HTMLレンダリングエンジン

HTML描画エンジン(HTML Rendering Engine)でどうにかならないか調べてみた。結論から言うとダメだった。URIを引数にとるだけで、textデータやストリームは引数に取れない。

参考にさせていただいた。感謝。

pywebkitgtkとPILでWebページのサムネイル作成 - ラシウラ

HTML描画エンジンの一つであるWebkitを使っている。

...
webview = webkit.WebView()
...
webview.open(url)

API Referenceをみてみる。

WebKitGTK+ Reference Manual: WebKitGTK+ Reference Manual
WebKitGTK+ Reference Manual: WebKitWebView

void
webkit_web_view_open (WebKitWebView *web_view,
                      const gchar *uri);

URIが引数になっている。ほかにread()load()というキーワードで検索したが、見つからなかった。

HTML-Renderer

gui library html renderingで検索。以下がヒット。

GitHub - ArthurHub/HTML-Renderer: Cross framework (WinForms/WPF/PDF/Metro/Mono/etc.), Multipurpose (UI Controls / Image generation / PDF generation / etc.), 100% managed (C#), High performance HTML Rendering library.

HTML4.01というのが残念。

HTML Renderer - Documentation

Windowsでないと動作しないかも?

コードを見てみた。ここがそれっぽい。ここまで追ってみた。

string型のHTMLソースを描画するように見える。

Tkinter

PythonにはtkinterというGUIパッケージが標準実装されているらしい。そのうち、tkhtmlというのがあるらしい。ただ、描画はしないらしい。

python - How do I open a website in a Tkinter window? - Stack Overflow

GUIライブラリ

CUIなどのツールというより、GUI用ライブラリかもしれない。たとえばAzukiみたいに簡単にプログラムに組み込める形式で、そのHTMLビューア版が欲しい。

そもそも存在するのか。どうやって探すのか。

自分で実装するならグラフィクス実装環境から調べることになるか。あまりに無謀すぎて現実的でない。

Ram Disk

LinuxならRam Diskを作成し、そこにHTMLファイルを作成すれば、メモリ上で処理できることになるはず。

マイクラ鯖に持って来い!!、LinuxでRAMディスク!! | 純規の暇人趣味ブログ

sudo mkdir /mnt/ramdisk
sudo mount -t tmpfs -o size=1m tmpfs /mnt/ramdisk

/mnt/ramdiskディレクトリをメモリ上に配置する。容量は1MB。

アプリを起動するたびに実行する。このファイルはメモリ上にのみ存在するので、再起動したら消える。

所感

PC資源を思い通りに利用できる。なんと素晴らしい機能か。WindowsでできないことがLinuxならできる。

問題はGUIか。