「Undo」をどう設計する?
Togetter - 「「Undo」をどう設計する?」 http://togetter.com/li/161523 いろいろ考え出すとキリがない。毎回スナップショットを取るのが一番か。
2011-07-14 23:45:11むー。悩ましいところ。 RT @programming_j: Togetter - 「「Undo」をどう設計する?」 http://t.co/BoxRyqH #programming
2011-07-15 00:54:31もしかして夕方 「Undoってどういう設計?」 → 「mementoパターン?」 → 「mementoパターン中身知らない」 → 「知らないけどUndoとかできる奴じゃ?」 という円環の理に導かれてたんじゃろか?
2011-07-14 23:54:54UNDOとREDOを実現するのにmementoではなくて 通常の操作と逆の操作を一つのコマンドとして隠蔽した コマンドのプッシュとポップで実装とか 懐かしい… オレにヒープをよこせ!
2011-07-15 01:20:58@miyabiarts 頂点データの量がヤバくなりそうだったからメモリ上で圧縮して管理っていうw
2011-07-15 01:12:51@fukushima1981 圧縮・展開を上手くしないと、また面倒臭そうな問題が起こりそうですが、あまりに多くなりそうならば、そうすることも考えないといけないですね。
2011-07-15 01:14:06@miyabiarts GPUだとメモリIOよりも演算の方が速くない?というかそんなデータ量のundo管理したくないw
2011-07-15 01:17:11@fukushima1981 ドローツールや3DモデリングツールのUndoだと仕方がないですね。編集対象とした要素を全て保持しておかないと戻れないので、保持せざるを得ないのです。
2011-07-15 01:18:23@miyabiarts 実験環境のパラメータと結果を保持しておくクラス作って管理するだけでもめんどくさいのに...w
2011-07-15 01:24:49@fukushima1981 ちなみにですが、3Dのポリゴンデータはかなり熱くて、例えば2つの面がそれぞれ頂点番号1,2,3と4,5,6でできていて、1つ目の面を削除すると、頂点1,2,3が使われなくなるので、効率化のために適当なタイミングで4,5,6->1,2,3と振り直すとか
2011-07-15 01:28:37@fukushima1981 さらに、その操作を戻すためには1,2,3->4,5,6としたあとに、配列の最初に1,2,3を復元してから面を復活させるというような地道な操作を延々としないといけないのです。
2011-07-15 01:29:24扱うデータが小さければスナップショットでいいけど、画像や3Dモデルは難しいよなあ。"Togetter - 「「Undo」をどう設計する?」" http://goo.gl/eFasx
2011-07-15 08:06:14仕事で書いたUndoは操作履歴程度なので、大体Commandだったなぁ / Togetter - 「「Undo」をどう設計する?」 http://htn.to/sDVG1F
2011-07-15 07:26:37