В предыдущей части мы написали парочку своих аттрибутов, с помощью которых описали маппинг C# класса на таблицу базы данных. Дальше возьмем Reflection и Generic механизмы .NET и напишем класс, который будет являться CRUD контроллером наших сущностей. Для того чтобы класс работал побыстрее, парсинг метаданных вынесен в конструктор, и заглушкой в этой реализации является один метод - ResolveConnection(). Его можно сконфигурировать как в NHibernate классом-конфигуратором, либо впрыскиванием зависимости DbProviderFactory и строки подключения, но это вопросы лишь архитектуры, и я думаю у мало-мальски толкового разработчика будет много идей на этот счет.
Read more…
.NET development
Как известно, программисты с давних пор пытаются упростить слой работы с базами данных и используют различные ORM. ORM имеют как достоинства так и недостатки, но цель статьи не описать их, а написать простенький ORM с описанием основных подходов в этом деле. Мир .NET пестрит разными реализациями, список доступных ORM для .NET можно посмотреть например здесь: .NET ORM List. Что будет уметь наш маппер? Работать с различными БД (первоначально тестирован на MS SQL и MS Access), использовать как простые так и составные первичные ключи, обеспечивать оптимистическую блокировку при многопользовательской работе, получать значения автоинкрементных полей и счетчиков автоматически. Ну и может являться платформой для собственных изысканий
Что НЕ реализовано: маппинг полиморфных моделей (ни в одном из 3-х подходов), оптимистические блокировки timestamp, маппинг связанных сущностей, поздняя загрузка и т д.
Read more…
.NET development
Давно пользуюсь таким продуктом как subclipse (плагин к Eclipse для системы контроля версий SVN), да и вобще, люблю когда всякие Perforce, Vault, SVN, и т д “сидят” прямо в IDE. Однако где-то с пол-года назад, когда я установил новую версию TurtoiseSVN 1.6.*, а subclipse стоял 1.4, увы, они не подружились. Пришлось удалять 1.6 ставить 1.4.
Сегодня заглянул на http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA, и понял что я отстал от жизни: Links for 1.6.x Release
PS: Для тех кто никогда не инсталлировал - инструкция в картинках по ссылке выше.
Flex, Air
Случайно получилось отдохнуть
10 дней - море, отдых, все включено и никаких проблем. Под катом немного фотографий.
Read more…
Ни туда ни сюда
Хороший класс TextArea, и API у него неплохой, можно проскроллировать вниз, например так:
textArea.verticalScrollPosition = textArea.maxVerticalScrollPosition;
А что если надо позицию установить таким образом, чтобы был виден определенный текст ? Найти позицию текста поможет indexOf(), а вот со скроллированием уже хуже. Под катом класс который немного расширяет стандартный TextArea и позволяет это сделать.
Read more…
Flex, Air
Flex разработчики часто используют SWFLoader для загрузки изображений и swf роликов, а заказчики в свою очередь часто хотят чтобы пользователь видел прогресс загрузки содержимого. Нельзя с ними не согласиться, если грузить толстую анимацию по 4-5 метров без всяких признаков жизни приложения и надежды на завершение
Кому лень писать, можно воспользоваться классом ProgressSWFLoader который отображает загруженные проценты и рисует красивый прогресс-бар.
Дальше код
Flex, Air
Есть еще одна наклейка как на картинке. Любителю технологии Flex будет выдана безвозмездно в городе Днепропетровске для применения по целевому назначению

Ни туда ни сюда
Как известно, компания Adobe для сборки Flex продуктов предлагает пользоваться Ant. Если пользоваться плагином к Eclipse - проблем нет, а вот в Flex Builder он напрочь отсутствует.
Вот здесь (http://blog.jodybrewster.net/2008/04/09/installing-ant-in-flex-builder-3/) описанно как это сделать.
Read more…
Flex, Air
“Есть такие пирамидки… когда в голову ничего не лезет, посмотришь на нее - и сразу нужные мысли находятся!” - м/с Смешарики, Крош.
Так вот, к чему это я: есть такие пользователи, которым все равно какой разделитель целой и дробной части используется в текущей культуре, им понимаешь ли хочеться и точка и запятая одновременно. А желание пользователя очень часто превращается в закон для разработчика после безуспешных попыток переубедить его.
Многострадальным контролом которому выпало имплементировать это требование, оказался представитель Windows.Forms - NumericUpDown.
Read more…
.NET development