Я же написал, когда. Прямым текстом, куда яснее?)
«could you tell me» — тут не о разрешении просят.
«may I ask — употребляют, когда хотят показать неодобрение. «What, may I ask, was the point of repeating the tests?»»
— ну вот ты в голове когда это подумал, то представил, будто это говорят неодобрительно. На деле ничего такого нет, как представишь — так и будет.
Не перекручивай слова и не додумывай.
"Can I ask...", "Could I know..." — неправильно употреблять can, спрашивая разрешения. Can означает физическую возможность, и если вы не парализованый глухослепонемой, то наверняка можете сделать то, о чем спросили.
Правильно употреблять may.
Имхо, есть неиллюзорная вероятность того, что рантайм и интерпретаторы тех языков в Топ10 написаны на С.
Какой-то односторонний отзыв. Создает впечатление, что С почти ничего не стоит, или он легко заменим.
;)
Ну, поздравляю, Вы переизобрели такую банальную вещь, как Undo-Redo, отлично реализованную в QUndoStack (наверняка есть биндинги Qt под Java): )
А если серьезно, то под каждый проект надо самому это допиливать и определять, что делает каждое действие — от полного сохранения всего состояния модели данных в сериализованном виде (что проще, легче и зачастую — лучший вариант), до выполнения действий над текущим состоянием модели (что сложнее, т.к. требует детерминированного результата этих самых действий, возможности создания обратных операций, и при достаточно большом цикле Undo-Redo может в итоге изменить данные — привет float, double & co!).
Из-за этого undo-redo функционал в каждом фреймворке должен быть минимальным и простым, чтобы в него было легко вставить свою логику.
Тут уже есть какое-то переусложнение с этим вашим (с) interface UndoWatcher.
Это какбы намекает на то, что действия в undo-стэке отличаются от тех, которые выполняет сам пользователь, и больше похоже на тот вариант, где данные тупо сериализируются. Во 1х это подойдет не всем, а во 2х — если это не так, то остальная часть программы без undo-redo функционала не должна знать о нем и для нее любое undo-redo действие должно быть таким же, как и остальные действия пользователя.
Более информативных статей на подобную тематику уже и так было очень много за последнее время.
P.S.: Вы так говорите, будто я ее дочитал. Ну а если серьезно, то Вы что, специально сегодня зарегистрировались чтобы написать этот единственный комментарий? Информация в профиле говорит правду, Катерина.
Интересные подходы. Изначально, глядя на превью, подумал, что тени это искаженные в зависимости от положения источника света прямоугольники, на которые наложена черная размытая текстура обьекта, что-то вроде карты теней, а затененность самих обьектов достигалась за счет дополнительной текстуры с нормалями.
Создать машину которая решит эту проблему для произвольной программы — невозможно
Но для произвольной программы создать конкретную машину, которая только для нее сможет решить проблему остановки — да пожалуйста
«could you tell me» — тут не о разрешении просят.
«may I ask — употребляют, когда хотят показать неодобрение. «What, may I ask, was the point of repeating the tests?»»
— ну вот ты в голове когда это подумал, то представил, будто это говорят неодобрительно. На деле ничего такого нет, как представишь — так и будет.
Не перекручивай слова и не додумывай.
"Can I ask...", "Could I know..." — неправильно употреблять can, спрашивая разрешения. Can означает физическую возможность, и если вы не парализованый глухослепонемой, то наверняка можете сделать то, о чем спросили.
Правильно употреблять may.
Имхо, есть неиллюзорная вероятность того, что рантайм и интерпретаторы тех языков в Топ10 написаны на С.
Какой-то односторонний отзыв. Создает впечатление, что С почти ничего не стоит, или он легко заменим.
;)
А если серьезно, то под каждый проект надо самому это допиливать и определять, что делает каждое действие — от полного сохранения всего состояния модели данных в сериализованном виде (что проще, легче и зачастую — лучший вариант), до выполнения действий над текущим состоянием модели (что сложнее, т.к. требует детерминированного результата этих самых действий, возможности создания обратных операций, и при достаточно большом цикле Undo-Redo может в итоге изменить данные — привет float, double & co!).
Из-за этого undo-redo функционал в каждом фреймворке должен быть минимальным и простым, чтобы в него было легко вставить свою логику.
Тут уже есть какое-то переусложнение с этим вашим (с) interface UndoWatcher.
Это какбы намекает на то, что действия в undo-стэке отличаются от тех, которые выполняет сам пользователь, и больше похоже на тот вариант, где данные тупо сериализируются. Во 1х это подойдет не всем, а во 2х — если это не так, то остальная часть программы без undo-redo функционала не должна знать о нем и для нее любое undo-redo действие должно быть таким же, как и остальные действия пользователя.
https://youtube.com/watch?v=9kBMscW_dVg
Нинтендо, ты опять раздаешь лицензии на всякую хрень?
www.youtube.com/watch?v=rpwx-8s1M38
Более информативных статей на подобную тематику уже и так было очень много за последнее время.
P.S.: Вы так говорите, будто я ее дочитал. Ну а если серьезно, то Вы что, специально сегодня зарегистрировались чтобы написать этот единственный комментарий? Информация в профиле говорит правду, Катерина.
Хватит, такие статьи несут отрицательную умственную нагрузку.