Archive
Поддержка транзакций в ядре Vista.
Как-то неожиданно для себя наткнулся на функцию RegCreateKeyTransacted. Начал копать дальше и обнаружил, что в ядро Vista встроен менеджер транзакций (Kernel Transaction Manager, KTM), поддерживающий локальные и распределенные транзакции. Реестр и NTFS теперь тоже поддерживают транзакции. Перечень файловых операций и функций для работы с реестром был расширен функциями, имена которых завершаются на «Transacted». RegCreateKeyTransacted – одна из них. Кроме того, разработчики вольны добавлять свои менеджеры ресурсов (resource manager), реализующие поддержку транзакций для произвольных хранилищ данных.
Trac.
На мой взгляд, Trac – одна из лучших, если не самая лучшая, bug tracking система для малых и средних по размеру проектов. Особая прелесть Trac состоит в том, что она органично объединяет вики, интеграцию с Subversion и ведение списка задач/ошибок. Именно то, что нужно команде для ведения проекта. Более того, стандартная функциональность позволяет организовать рецензирование кода, не смотря на то, что никакой специальной поддержки рецензирования в Trac нет.
Рецензирование кода (code review).
Рецензирование кода (перевод подсмотрел у Лебедева) – это на мой взгляд одна из полезнейших и при этом наиболее легко внедряемых практик разработки надёжного кода. Основная идея рецензирования заключается в систематической (пере)проверке кода с целью найти ошибки, допущенные при его написании. И поскольку рецензирование кода относится к ранним этапам разработки, найденные ошибки «ценнее», чем, скажем, ошибки, найденные при формальном тестировании.
Я не буду останавливаться на подробном описании процедуры рецензирования. В Интернете можно найти массу материалов по теме. Вот, например, страница из Википедии. Я же просто хочу поделиться своими наблюдениями.
GUI имеет значение.
На этой неделе попробовал поработать в Ubuntu – дистрибутиве Linux, который отпочковался от Debian. До этого на «машине для опытов» стояла Fedora Core (в девичестве – Red Hat Linux). Надо сказать, что впечатления от этого эксперимента довольно забавные. Фактически, Ubuntu и Fedora Core – это одна и та же система. Они используют практически идентичный набор программ – с точки зрения неискушенного пользователя, конечно. Понятно, что на Fedora Core можно поставить KDE вместо Gnome, да и менеджер пакетов у них разный. Всё равно это практически одна и та же система.
Дети – это наше всё!
Вчера, укачивая дочку, пришла в голову светлая мысль, что искать баг в программе и успокаивать ребенка – одинаковое шаманство. Посудите сами, в обоих случаях индикация проблемы налицо: ребенок плачет, программа не работает. Однако никаких намеков на то, что именно не так не даётся. Ну и начинаешь пробовать по очереди все известные примочки: подгузник там поменять, взять последнюю версию исходников из репозитория, покачать на руках, подправить конфигурационный файл и т.д. Прямо хоть бубен (погремушку) доставай!
О разработке безопасных программ…
Когда я пришёл в Microsoft, команда, ответственная за ядро Dynamics AX (тогда ещё Axapta), куда я собственно и попал, как раз работала над повышением безопасности ядра. Сразу после старта мне «повезло» окунуться в этот процесс с головой. Как выяснилось, этот процесс совсем непрост, как могло показаться со стороны. Оказалось, что он отнимает массу времени, сил и вообще может надолго отбить желание писать надёжные программы. Я так думаю, что если бы мне пришлось участвовать в дискуссии про то «как Microsoft выпускает дырявые программы» в тот период, я бы не удержался в рамках приличия.
Recent Comments