В статье ранее я писал как сделать автоматическую реализацию 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.
Читать далее…
Кажется, я нашел идеальный вариант организации наемной работы. Вот текст объявления:
Таиланд — море, солнце, счастливые лица вокруг. Теперь и у Вас есть возможность попасть туда, причем бесплатно и Вам еще за это доплатят 
Вакансия: разработчик Ruby on Rails
Читать далее…
Вчера в Москве проходил Google Developer Day. На который я не попал, поскольку не знал об этом мероприятии. Так и не нашел способа узнавать о таких событиях своевременно. А вы знаете такой способ?
Не секрет, что любой современный пользователь покупает массу программ. И каждая из них требует серийного номера. Обычно эти номера приходят по почте. Но с этими длинными последовательностями есть масса проблем – не все пользователи умеют пользоваться операциями copy и paste. Не все догадываются куда надо вводить номер и т.п. На прошлой неделе я увидел в программе Springy изящнейнее решение этих проблем.
Читать далее…
У меня возникла задача создать простенький веб-сайт с функциональностью доступа пользователей сайта к некоторой закрытой информации. При этом регистрация пользователей происходит третьим способом, но через сайт пользователи могут поменять свой пароль. Закрытая часть сайта содержит простенький интерактив по работе с закрытой информацией (создать, изменить, удалить), а также функционал по управлению пользователями – для админов.
Для такого проекта я решил попробовать Spring Roo.
Читать далее…
Свежие комментарии