среда, 17 марта 2010 г.

Трюки с битовой арифметикой

Нашел в интернете отличную ссылку с подборкой различных трюков с битовой арифметикой на С++.
http://graphics.stanford.edu/~seander/bithacks.html
Вещь просто незаменимая (:

понедельник, 15 марта 2010 г.

воскресенье, 14 марта 2010 г.

Status Of C++ 0x Language Features in Compilers

Нашел в сети интересную таблицу, в которой отображены все нововведения С++0х (с ссылками на соответствующие доки), а так же степень их поддержки в популярных компиляторах (GCC, MSVC, Intel C++ и другие).
Ссылка на таблицу
К слову, наибольшее количество фич, на данный момент, поддерживает GCC.

понедельник, 1 марта 2010 г.

Книга о Visual Studio 2010 в электронном виде

В сети стала доступной новая книжка о Visual Studio 2010 на русском языке, под редакцией Алексея Фролова (он является техническим специалистом российского представительства Microsoft). Вот краткое содержимое книги:
  • Microsoft Visual Studio 2010. Коротко об основных новинках
  • Новые издания Visual Studio 2010
  • Дополнительные продукты семейства Visual Studio 2010
  • Новые уровни подписки MSDN
  • Visual Studio 2010. Полезные ссылки
Прямая ссылка на скачивание: http://download.microsoft.com/documents/rus/visualstudio/partner/V10.pdf

вторник, 9 февраля 2010 г.

Visual Studio 2010 Release Candidate

Для подписчиков MSDN стала доступной обновленная VS2010, уже Release Candidate. Скачать можно здесь. Остальным новая студия будет доступна после 10 числа.

воскресенье, 7 февраля 2010 г.

Composite WPF

Сегодня набрел на интересную статью в MSDN Magazine. В ней описывается вариант модульной архитектуры приложения, который я давно хотел реализовать, но все как то не получалось. По подобному принципу работает Minranda IM. Если вкратце, то система имеет следующий вид: существует набор, независимых между собой, модулей, которые реализовывают функционал программы. Для связки модулей между собой есть исполняемый файл, который представляет из себя плагинное ядро, базовые api для взаимодействия модулей, а также код, отвечающий за подгрузку модулей при запуске. Такая архитектура имеет кучу преимуществ: легкость развитие системы, возможность независимо развивать модули, легко заменять, тестировать и т.п. Короче все подробности по адресу http://msdn.microsoft.com/uk-ua/magazine/cc785479.aspx

пятница, 5 февраля 2010 г.

SubSonic ORM и немного магии.

Мне довольно много приходилось писать приложения, которые тем или иным образом взаимодействуют с базами данных. Доводилось применять компоненты ADO.NET, потом я испробовал LINQ2SQL и LINQ2Entities, но все они в некотором роде смущали телодвижения. Неудобства возникали самые разные, начиная от привязки к конкретное базе данных, до отсутствия нужной гибкости,  из за которой нужно было придумывать различные извращения (Например как здесь). Поэтому для работы над новым проектом я решил найти что то более гибкое, простое в использовании, назависимое от конкретной базы данных и т.п.

На SubSonic я обратил внимание случайным образом, но был действительно удивлен, на сколько он может упростить жизнь разработчику. SubSonic представляет собой "A Super High-fidelity Batman Utility Belt that works up your Data Access (using Linq in 3.0), throws in some much-needed utility functions, and generally speeds along your dev cycle." или же попросту говоря мощный и в тоже время простой в применении ORM Framework. Поддерживается SQLServer, MySQL, SQLlite и в разработке Oracle (исчезает проблема переносимости). SubSonic содержит много вкусностей, о которых я попытаюсь рассказать.

Итак, SubSonic реализовывает 2 сценария работы, SimpleRepository и ActiveRecord.

  • ActiveRecord - похоже на то, что происходило в LINQ2SQL и LINQ2Entities. Существует база данных и мы с помощью специального шаблона генерируем нужные нам классы C#. Далее их используем.
  • SimpleRepository - более простой и в тоже время элегантный сценарий. Вы определяете строку подключения к пустой базе данных, определяете класс с свойствами, которые нужно хранить в базе и ... все!. Все готово для работы.
В данном посте хочу рассказать про второй подход, поскольку именно он меня поразил меня элегантностью, хоть и имеются некоторые минусы.
Приведу сразу пример:
Все что нужно для работы с базой. SubSonic самостоятельно генерирует таблицу и добавляет в нее запись.

Но магия на этом не заканчивается. Допустим в процессе разработки нужно добавить новые поля в нашу структуру... И все что нам нужно сделать ...  - это просто добавить свойство в наш класс.


При этом SubSonic автоматически добавит нужные поля в таблицу и добавит запись (при этом старые записи остаются в полной сохранности). Данная возможность обеспечивается благодаря использованию С# Reflection. На данный момент я заметил только один недостаток при работе с этим сценарием - это невозможность определить зависимости между таблицами. В этом случае приходится использовать ActiveRecord (о нем я рассказу позднее).

Более подробно о работе с SimpleRepository можно узнать в примерах на сайте проекта.

Несколько полезных ссылок:
http://www.codeproject.com/KB/database/SubSonic.aspx