この記事を作った動機
2025/12/4 から、2025/12/11 に至るまでの間で OneNote 代替に関して、実装をするなど研究を進めているうちにわかったことなどを簡易的に記録する。
動作の様子
特に大きな変更はないので今回はなし。
TODOs
2025/12/4 になる間やる項目たち。やりきれなかった分は次に持ち越し。 内部構造を説明する図とかドキュメントを作る OverlayWindow において、リサイズやサイズ制限をオプションで付ける。デフォルトでは無効にして、とりあえず selector においてそれが機能するようにする。 全体的な未保存、保存、バッファーの管理について考える pageType などは現状のままで、増やさず、free と markdown に専念する tasks -> jobs で定期的に実行されるバックエンドの関数群において、pageCleaner.py を実装する。各ノートにある、参照が消され、deleted.json に記録されていて、一定期間たったページを時期が来たら本当にファイルシステム上から削除する実装をする。コード自体は、tasks.py の設定に依存し、現状では10秒ごとに消す時が来ていないかポーリングする簡易的な実装である。 再接続機能が正しく機能しない場合を検証するTODOs
メイン(持ち越し、新規混合)
useDatabaseStoreをuseNetworkStoreに名前を変更する。send関数をuseDatabaseStore(useNetworkStore)内にあるものに置き換え、旧来のsend関数の実装を廃止する。createPage.tsxの実装で、ページタイプを取得するとネットワーク周りがバグってリクエストした履歴が消えない結果、未接続の状態として判定されてしまうというバグを何とかする。
propertiesとは独立して、commonsの一部として実装する。padStartcommonsが正しく色を更新できないバグを何とかする。
updatePageの割り込みがあった時に、どのページがセーブされたかIDをUUIDをデータとして含めるupdatePageがあったら差分を扱えるように、先にセーブされたデータをバッファーにためるようにして、diffをマージできるようにするupdatePageコマンドのUUID検証ロジックについて正しく機能しているか調べる。
前回からの持ち越し
持ち越し分
except asyncio.CancelledError が mainLoop 内で機能していない可能性について調べる。opening handshake failed
Traceback (most recent call last):
File "C:\Users\username\AppData\Roaming\Python\Python312\site-packages\websockets\http11.py", line 138, in parse
request_line = yield from parse_line(read_line)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\username\AppData\Roaming\Python\Python312\site-packages\websockets\http11.py", line 309, in parse_line
line = yield from read_line(MAX_LINE_LENGTH)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\username\AppData\Roaming\Python\Python312\site-packages\websockets\streams.py", line 46, in read_line
raise EOFError(f"stream ends after {p} bytes, before end of line")
EOFError: stream ends after 0 bytes, before end of line
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\username\AppData\Roaming\Python\Python312\site-packages\websockets\server.py", line 545, in parse
request = yield from Request.parse(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\username\AppData\Roaming\Python\Python312\site-packages\websockets\http11.py", line 140, in parse
raise EOFError("connection closed while reading HTTP request line") from exc
EOFError: connection closed while reading HTTP request line
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\username\AppData\Roaming\Python\Python312\site-packages\websockets\asyncio\server.py", line 356, in conn_handler
await connection.handshake(
File "C:\Users\username\AppData\Roaming\Python\Python312\site-packages\websockets\asyncio\server.py", line 207, in handshake
raise self.protocol.handshake_exc
websockets.exceptions.InvalidMessage: did not receive a valid HTTP request
他の事項
やったことの詳細
卒論を進めた
- 結果の章について具体的に書くことを見当をつけた。実際の
ページを保存するなどの動作を中心に、フロントエンドやバックエンド、データややり取りがどのように変遷するか、具体的な動作を記録することにした。 - X11やMinecraftのサーバクライアントモデルと研究が関係あることについて書いた
- フロントエンドの説明について、具体的な内部の動作を軽く書いた
- フロントエンドの図解ついて、論文の文中にいったん載せた
- フロントエンドについても、詳細にどのような動作をするかさらに具体的な起動から基本的な操作や表示の流れを記述する必要性が出てきた。
参考にしたサイトとか
- Welcome to the Minecraft Official Site | Minecraft
https://www.minecraft.net/en-us (2025年12月14日) - Minecraft Client-Side and Server-Side Explained
https://cybrancee.com/blog/minecraft-client-side-and-server-side-explained/ (2025年12月14日) - Server/Client Communication | Technical Minecraft Wikia | Fandom
https://technical-minecraft.fandom.com/wiki/Server/Client_Communication (2025年12月14日) - X/Architecture - Ubuntu Wiki
https://wiki.ubuntu.com/X/Architecture (2025年12月14日) - 第 1 章 Solaris X サーバーの概要 (Solaris X Window System 開発ガイド)
https://docs.oracle.com/cd/E19455-01/806-2735/6jbubqoec/index.html (2025年12月14日) - What Is X11? | Baeldung on Linux
https://www.baeldung.com/linux/x11 (2025年12月14日) - Xming X Server for Windows - Official Website
http://www.straightrunning.com/XmingNotes/ (2025年12月14日)