пятница, 28 августа 2009 г.

Code Contracts - декларативное описание параметров вызова для методов .Net

"Contracts allow you to express preconditions, postconditions and object invariants in your code for runtime
checking, static analysis, and documentation. This document covers how to author them in your code, and
contains guidelines for using them e ectively with the provided tools.
All of the contract methods are static methods de ned in the Contract class which appears in the
System.Diagnostics .Contracts namespace."
Кажется, это уже было в Smalltalk. Теперь вот возвращается :-)


http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx

http://research.microsoft.com/en-us/projects/contracts/userdoc.pdf

Code Contracts обещают встроить в C# 4.0 и MSVS 2010. Сейчас доступен в виде библиотеки

AutoPatch .Net - how it works

Выложил на RSDN небольшой рассказ о том, как работает AutoPatch .Net

http://rsdn.ru/forum/dotnet/3518828.1.aspx

понедельник, 17 августа 2009 г.

Встречаем: AutoPatchNet with nice UI

.Net port of Tactiknowledge AutoPatch.

Доработал и выложил на Google Code исходники и инсталлятор пре-пре-альфа версии 0.0.1 .Net-овского порта AutoPatch. Авторы начали портирование, но забросили его в лохматом году.

Я довел порт до состояния, когда он уверенно патчит SQLServer-ные базы и добавил к нему консольный и WinForm-овские front-end-ы.

Кроме того, я попробовал использовать AutoPatch как довесок к юнит-тестам, который отвечает за то, чтобы перед стартом тестов приводить базу данных в некоторое известное изначально состояние.

В планах - ввести пакеты для обновления БД (архив, содержащий манифест+каталоги с патчами), сделать чтобы AutoPatch UI открывал такие пакеты в один клик.

Ссылка на страницу проекта: http://code.google.com/p/autopatchnet

См также

вторник, 11 августа 2009 г.

Будущее опять наступило - самодельные спутники

http://lenta.ru/news/2009/08/03/minisats/

Это то есть обычный человек может потратить большие, но уже вполне реальные деньги, купить конструктор, запрограммировать себе спутник и отправить его почти что DHL-ом на орбиту.


Последний раз я так удивлялся, когда гугель сделал Googlr Earth :)


воскресенье, 9 августа 2009 г.

Идеальный package manager - 2

Удивительное дело, нормального opensource менеджера обновлений для БД в мире .Net похоже не существует.

Есть несколько библиотек, предоставляющих Ruby-style migrations, но это не совсем то, что мне нужно. Ближе всего к ожиданиям из готового сейчас RedGate SQLPackager, но он во-первых платный, во-вторых хочется поддержки именно жизненного цикла в духе AutoPatch.

По опыту, идеальный процесс должен выглядеть так

  • программисты работают с локальной или dev базой напрямую
  • перед началом тестирования при помощи инструмента типа SQLCompare строится дифференциальный sql скрипт между дев-базой и stage. При этом скрипт должен быть в "родном" для БД формате, чтобы не упереться случайно в недостатки фреймворка
  • этот скрипт фиксируется в репозитории и затем на основе всех скриптов обновления строится пакет для обновления БД
  • этот пакет разворачивается на требуемой базе, причем package manager должен предоставлять либо режим с ручным контролем (для боевой базы, чтобы не страшно было), либо автоматический режим (для всевозможного continious integration

Ссылки по теме

Как прочитать файл .properties из .Net

Сейчас занимаюсь доведением до ума библиотеки AutoPatch под .Net - авторы начали ее портировать, но похоже так и не довели дело до конца. Потребовалось прочитать .property файл, который записан в java формате.

Нашел для этого класс JavaProperties. Автор утверждает, что он портировал функциональность java-парсера, так что проблем с совместимостью быть не должно. С удовольствием даю ссылку:

http://www.kajabity.com/index.php/2009/06/loading-java-properties-files-in-csharp/