При первом логине в новый ИБ мне показали ссылку на старую версию, теперь её не найти.
Из того, что я заметил: в новом ИБ дата моего рождения указана неверно (отличается на один день). Можно ли получить ссылку на старый ИБ и сравнить? Если они там разные, то буду репортить вам баг.
Помнится, году в 2012-м мы пытались портировать Silverlight-приложение на Moonlight, закопались в проблемах и багах. В итоге нашли такой печальный твит: twitter.com/migueldeicaza/status/263816476551700481
и официально отказались от поддержки мунлайта.
С тех пор что-то изменилось?
UI-related свойства у ViewModel автоматически дают нам следующие «преимущества»:
* ViewModel получается платформозависимая (без хаков не получится шарить её между SL, WP8, W8 и WP7
* Обламываемся с нормальным запуском юнит-тестов.
Я в рамках популяризации rx на работе переписал один сервис с TPL на Rx. Код получается компактный, красиво всё пайплайнится, всё читабельно, с небольшии примесями TPL получилась приличная параллелизация. Но итоговая скорость работы меня очень расстроила. Раза в полтора медленнее оригинального кода.
Потратил ещё несколько вечеров на профилирование и оптимизацию, а потом так этот форк и забросил.
Может я их готовить не умею нормально, но для performance critical приложений я бы Rx не рекомендовал.
Хотя, вот, Netflix свои сервера на Rx-Java пишут, и вроде довольны.
Узнавать людей — это хороший бонус. Я так откликался на вакансию в другой стране только лишь из-за того, что в компании работал человек, которого я по SO знаю. На скорость с ним отвечали :)
Бытро появляются ответы на базовые вопросы типа «как прочитать файл на c++?».
Если же вы специалист по какой-нибудь теме, то отвечать на вопросы не напряжно. Тем более, что это позволяет ещё больше прокачаться в данной области.
На простые вопросы отвечать не очень интересно, но начинающий разработчик может поучиться изясняться на иностранном языке. Это как с блогами и статьями или преподаванием: учишься сам, объясняя другим.
Общий ресурс — это уже другая проблема. Для наблюдаемого объекта нет опасности получить NRE и ObjectDisposedException. А это именно та проблема, которая описывается в статье.
Так у вас всё та же подписка на события, коллбэки и прочее. Это ни чем концептуально не отличается от механизма event-ов, о которых говорится в статье. А выше предлагают другой механизм, без коллбэков. Где push-модель заменяется на pull (подписчик сам берёт сообщение из очереди, если оно ему нужно). Получается, что у наблюдаемого объекта нет коллекции колбэков, а это значит, что никто обработчик события не вызовет, если наблюдатель этого уже не хочет.
Так вот в случае fire-and-forget мы выкинули сообщение и не знаем про подписчиков. Т.е. для нас отправка сообщения атомарна. Мы просто кладём его в очередь.
Дальше, со стороны подписчиков получение события тоже безопасно: если сообщение есть, то запрашиваем копию и обрабатываем его.
Ну, почему же? Если рассматривать событие, как «сообщение», то асинхронная отправка сообщения через некую шину проблему решает. Если кто-то отписался, значит сообщение не дойдёт к такому подписчику.
Эх, в C# так просто объект из интерфейса не создать.
В общем, мне ваш вариант понравился, хотя это некоторый оверкилл для демонстрации моей идеи. Но свою пользу и информацию к размышлению я получил, спасибо! Буду копать дальше.
Ох, надеюсь вы не всерьёз критикуете максимально упрощённый демо-код? :) Замечания-то правильные, продакшн-код был бы другой.
Что касается MVVM, то использовал разные: как самописные, так и стандартные (MVVMLight и надстройки над старым форком CalibrumMicro). Связку из Xamarin и MvvmCross использовал дома, а потом кончился триал.
Rx под Xamarin работают нормально. GitHub своё Android приложение пилит на Xamarin и там активно используют Rx и Rx-UI.
Из того, что я заметил: в новом ИБ дата моего рождения указана неверно (отличается на один день). Можно ли получить ссылку на старый ИБ и сравнить? Если они там разные, то буду репортить вам баг.
twitter.com/migueldeicaza/status/263816476551700481
и официально отказались от поддержки мунлайта.
С тех пор что-то изменилось?
UI-related свойства у ViewModel автоматически дают нам следующие «преимущества»:
* ViewModel получается платформозависимая (без хаков не получится шарить её между SL, WP8, W8 и WP7
* Обламываемся с нормальным запуском юнит-тестов.
Потратил ещё несколько вечеров на профилирование и оптимизацию, а потом так этот форк и забросил.
Может я их готовить не умею нормально, но для performance critical приложений я бы Rx не рекомендовал.
Хотя, вот, Netflix свои сервера на Rx-Java пишут, и вроде довольны.
* хороший интернет
* дешевая мобильная связь
Если же вы специалист по какой-нибудь теме, то отвечать на вопросы не напряжно. Тем более, что это позволяет ещё больше прокачаться в данной области.
На простые вопросы отвечать не очень интересно, но начинающий разработчик может поучиться изясняться на иностранном языке. Это как с блогами и статьями или преподаванием: учишься сам, объясняя другим.
Дальше, со стороны подписчиков получение события тоже безопасно: если сообщение есть, то запрашиваем копию и обрабатываем его.
.WithCacheполучился даже generic и не зависящий отICache. Пожалуй так даже и лучше.И его использование:
.WithCache(() => Cache.GetCachedItem(userName), model => Cache.Put(model))В общем, мне ваш вариант понравился, хотя это некоторый оверкилл для демонстрации моей идеи. Но свою пользу и информацию к размышлению я получил, спасибо! Буду копать дальше.
Не очень только понял в чём выгода с отдельным кэшем для каждого конкретного ключа?
Что касается MVVM, то использовал разные: как самописные, так и стандартные (MVVMLight и надстройки над старым форком CalibrumMicro). Связку из Xamarin и MvvmCross использовал дома, а потом кончился триал.
Rx под Xamarin работают нормально. GitHub своё Android приложение пилит на Xamarin и там активно используют Rx и Rx-UI.