В статье ранее я писал как сделать автоматическую реализацию INotifyPropertyChanged на основе расширений библиотеки NInject. К сожалению, моя жизнь с этой библиотекой не сложилась, NInject был заменен на Spring.NET. При этом схему автореализации надо было как-то перенести без особенных изменений прикладного кода. Объясню, что именно я сделал.
Читать далее…
Около полугода я следил на развитием проекта Titanium Desktop. Идея продукта состоит в том, что можно создавать полноценные desktop приложения на HTML+JS. Я подумывал использовать этот фреймворк в одном из своих проектов. Но сегодня, проверяя новости, обнаружил нерадостное – проект снимают с финансирования AppCelerator и передают сообществу разработчиков. Официальный пресс-релиз можно прочитать здесь.
Все это означает, что проект может приостановиться на неопределенный срок. А значит надо будет взвесить все «за» и «против» прежде чем использовать.
В качестве альтернативы предлагается chromiumembedded, который тоже находится в непонятном состоянии. По этому проекту даже с документацией есть проблемы, вся поддержка – через полуживой форум.
Таким образом, многоплатформенных технологий для создания desktop приложений на HTML+JS в доступности не видно. Разве что Adobe AIR, но он пугает чем, что Adobe.
При разработке для платформы .NET часто приходится делать так раздражающие всех реализации интерфейса INotifyPropertyChanged на классах-моделях. Типичный пример выглядит так:
class StatisticsRecord: INotifyPropertyChanged
{
private string name;
public string Name { get { return name; } set { name = value; NotifyPropertyChanged("Name"); } }
private void NotifyPropertyChanged(string name)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
public event PropertyChangedEventHandler PropertyChanged;
}
На мой взгляд, с этим кодом есть 2 проблемы:
- Очень много повторений и кода вызванного необходимостью вызвать
NotifyPropertyChanged. Увеличивается количество «тупой» работы.
- Использование строковой константы Name в качестве аргумента. Рефакторинг может привести к разрушению биндинга к такому свойству.
Читать далее…
В начале создания авто-тестов в одном проекте на C# начал возникать System.BadImageFormatException при попытке запуска тестов из ReSharper. Выяснение показало, что проблема была в том, что сборка с тестами имела Any CPU. А тестируемые классы были в EXE, который был собран в x86. При этом Windows используется 64х битный, следовательно Any CPU = x64.
Решение просто – указать в тестовой сборке целевую платформу x86. Это делается в закладке Build свойств проекта тестовой сборки.
После установки ReSharper на Visual Studio 2010 (всем разработчикам на C# рекоммендую, кста) наиболее активно разражает подсвечивание названий методов, который автоматически генерируются Visual Designer для обработки событий, поскольку название типа «Form1_Load» никак не соответствует идеям начинать название с глагола и не использовать «_». Но это можно исправить.
Читать далее…
Я считаю, без каких-то новых знаний жить не особо интересно. Поэтому стараюсь учиться. А тут Стэнфорд предлагает уникальную возможность бесплатно поучиться computer science.
Читать далее…
Сегодня начала работу конференция Software People, на которой я, к счастью, присутствую. Изложу свои мысли на счет мероприятий, на которых был сам. Сильно вдаваться в подробности не буду, приведу личные впечатления.
Читать далее…
Кажется, я нашел идеальный вариант организации наемной работы. Вот текст объявления:
Таиланд — море, солнце, счастливые лица вокруг. Теперь и у Вас есть возможность попасть туда, причем бесплатно и Вам еще за это доплатят 
Вакансия: разработчик Ruby on Rails
Читать далее…
На меня зарегистрирован некоторый домен для будущих проектов. Его название не имеет значения, тут речь пойдет о регистраторе. Когда-то давно один мой друг посоветовал мне обратиться в сервис https://2domains.ru, поскольку цены несколько ниже чем по рынку. Что я и сделал год назад. Сейчас подошло время продлять регистрацию домена. И тут началось.
Читать далее…
Вчера в Москве проходил Google Developer Day. На который я не попал, поскольку не знал об этом мероприятии. Так и не нашел способа узнавать о таких событиях своевременно. А вы знаете такой способ?
Свежие комментарии