New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
自動バックアップ機能の実装 #214
Comments
でっかいテキストファイルとかって、最初にコピーつくったりするとオーバーヘッドが大きいので、 |
そそ、いかに自動バックアップの負荷を感じさせないかが要になると思います |
よくあるのは、アンドウ情報を持っておいて、最後に反映させるって感じですが、修正が多い場合には、 |
クラッシュからの復元対策、欲しいです。 https://github.com/sakura-editor/sakura-editor.github.io/blob/master/help/HLP000145.html 既にあるバックアップ機能は、定時保存でファイルがたくさんできていきます。 |
これって「定時保存」でしたっけ? |
自動バックアップの実現方法については、方式を独自にあみだすことは考えていなくて、 まずは既存プロダクトの手法を調べる→真似できそうなものが見つかれば真似する→見つからなければその時点から独自方式を検討する、ということを考えています。車輪の再発明は避けたいので。 |
自動じゃなかったんですね。 使える機能の活用には賛成です。 |
>くわしくは具体的な再利用候補が見つかった時に話すのがいいと思っています。 ですねー。 |
Atom Macのテキストエディット(TextEdit.app)も単に数秒おきに別フォルダに保存してるみたい。。。 秀丸君は細かい指定が出来そうですが結局単にファイル保存してるもよう。 オートセーブ( Mac の自動保存機能)での復元方法 テキストエディタ界隈では、VMwareのような差分情報を作っておいて最後にマージなんてリッチなことは流行ってないのかな。。。 |
最近のSSDの書き込みは100MB/sぐらいはいきますからね。差分取るより書き込んじゃった方が早そう。 Node.jsやストアアプリなどでは非同期IOが基本なので、Atomとかはそうしてるでしょう。非同期関数の前に await fs.writeFile("filename.txt","data"); |
サクラエディタ本体のコード量が多く、どういうケースで異常終了するかカバーしきれないと考えていて、別途ファイル保存専用エージェントみたいなコンパクトなサービスプロセス(コンパクトなのでバグも混入しにくい)を用意して、そのサービスに対して保存要求を投げるようにすると非同期保存が可能になるし、サクラエディタ本体が落ちてもエージェント側が生き残って復旧可能性高められそうかなーとか考えています。 先々の対応なので今の時点では単なる妄想なんですけど。時期が来たらもう少し真面目に考えます。 |
管理プロセス(CControlProcess)に要求を投げつけて、 「○○専用エージェント」という概念は既にサクラエディタ内に多数含まれている認識なので、 いま時点ではexeを増やしたり、レジストリにサービスを登録したり、ってのにはやや抵抗ありです。 await、いいですねぇ・・・ |
プロセスとクラスの構造ってどっかにあるんでしたっけ? 新規な人には俯瞰なクラス図ってあったほうがわかりやすいかなっと。 根本的な構造って、初代の竹さんから変わってないのかな。 |
visioで書かれたクラス図を昔見かけたことがある気がします。
軽く雑談issueの様相を呈してまいりました・・・。 |
Doxygen生成のドキュメントは無くも無いですが |
sakura.exe 自体が肥大化しすぎているので異常終了の条件潰しはカバーしきれない → キャッシュ&保存エージェントとして信頼度を高めた別プロセスがあると良いのでは、というのが自分の提案です。 ここでいうエージェントとかサービスとかいう言葉は広義の意味で用いたに過ぎず、今ある既存の C*Agent クラスみたいなものとは全く別レイヤーの概念です。レジストリはたぶん使わない方式になります。 |
何度か言及してますが、まだ自分的には真面目に考えてない段階です。なのでこの深掘りも雑談の範疇なのは想定内。 図はあると嬉しいですけど、誰が初版を描けるのか、またその後、図のメンテナンスをうまく続けていけるのか、ということを考えると足が重くなりますねぇ |
確かに、継続したメンテを考えるとつらいですね。 お金を払う版のDelphiだとソースからUML逆生成出来たりするんですが、ソースレベルからリバースすると細かすぎて、もうソース読んだ方が早いってなったりして、、、 て探してみると、 Doxygen+Graphvizでクラス図を自動生成する C++ リバースプラグイン こんなのもあるんですね。 |
これは以下みたいな感じで既に実現されているという認識です。(常時更新ではなく、少し前に誰かが更新してくれたやつみたいですが) |
クラス数が少なければ見る気持ちになりますが……これは……w |
俯瞰で見るには全く役に立たなさそうですが、ソースと連動してるので、 |
そういうのもあったんですねぇ。 |
プロセス→メインウインドウは単純なんですけど、 自動生成のクラス図は往々にしてレイアウト調整はしてくれないので、 あと、microsoft系ツールの吐くxmlはバージョンによる差異が激しい傾向にあるので、 |
なるほど結局project内に居ないのは意図してかどうかは別にしてそういう背景もありそうですね。 |
明示的な「保存」操作を行わなくても定期的(数秒~数十秒おき)に自動バックアップを行う。
異常終了を検出したら、次回起動時に復元の確認ダイアログを表示し、バックアップからの復元を促す。
異常終了は本来起こって欲しくはないが、万が一のための救済策が欲しい。
ちなみにさっき Google Docs 編集中に Chrome が落ちましたが自動バックアップ機能によりほとんど情報失わなくて助かりました……(´Д`;)
簡単な実装にはならないと思うので、対応は次回リリースの後に回しても良いが、いつかは実装したい。
The text was updated successfully, but these errors were encountered: