OSPF: оптимизм

Протокол Open Shortest Path First (OSPF) позволяет IP-маршрутизаторам автоматически определять топологию сети и генерировать оптимальные таблицы маршрутизации. Публикуемые элементы топологии снабжаются меткой возраста и порядковым номером. Тем самым даже «застрявшие» записи будут выброшены из базы со временем. Метка возраста – 16-и битное число, интерпретируется как время в секундах с момента публикации элемента. Максимальное значение метки может быть ограничено константой MaxAge, практическое минимальное значение которой составляет порядка минут. Когда возраст записи достигает MaxAge, опубликованный элемент обновляется увеличением порядкового номера на единицу. Read On →

Список состояний конечного автомата

Подсмотрел у коллеги простой и довольно удобный способ держать список состояний/событий конечного автомата в одном месте. А то обычно они норовят расползтись по разным углам: enum, объявляющий соответствующие константы, массив имен состояний для отладки, большой switch, выбирающий что делать, в зависимости от состояния…

Read On →

DV 2012: Epic fail

А ведь еще сто лет назад говорили умные люди, что написать хороший генератор случайных чисел не такая простая задача, как кажется. :-) Хуже всего конечно тем, кто на радостях успел наделать непоправимых глупостей: напиться в драбадан, показать палец шефу, забить на зависший EBGC процесс в самый критический момент, продать квартиру… Ну а всем остальным приятно, что удастся сыграть два раза за один год. IMPORTANT NOTICE REGARDING THE 2012 DIVERSITY LOTTERY PROGRAM We regret to inform you that, due to a computer programming problem, the results of the 2012 Diversity Lottery that were previously posted on this website have been voided. Read On →

Вы, конечно, будете смеяться, …

… но я понятия не имел, что вложенные структуры в C/C++ можно инициализировать плоским списком значений. Есть, например, вот такая структура: struct foo { int value; }; struct bar { int value; }; struct foobar { foo value1; bar value2; int value3; }; Её можно инициализировать вот так: foobar data = { { 1 }, { 2 }, 3 }; А можно и так: foobar data = { 1, 2, 3 }; Компилятор съест оба варианта кода и не поморщится. Read On →

Впечатления от поездки и конференции

Впечатления от поездки.

Пыльно, грязновато. Дороги и тротуары по обыкновению разбиты, однако заметно, что если выровнять тротуары и бордюры, разбить газоны, починить заборы, поддерживать это все в чистоте (и не делать более ничего другого), то запросто получается почти западная Европа.

Read On →

РИТ++ 2011: Сетевая подсистема Windows глазами разработчика

Слайды моего доклада на РИТ++ 2011: Сетевая подсистема Windows глазами разработчика. Спасибо за внимание. ;-) MD5: 9d095bbc517f564758ec98ca779fadd4 SHA1: 46bebb8991f5b977ffcf978f277eb82b3cc08140 PDF версия: Сетевая подсистема Windows глазами разработчика. MD5: 74676d09b0fdf5fc87182eb814b9d997 SHA1: 8bd1aa1f3db39ac5fab1ede4bbb4b43a9a91e11e

Crater Lake

Вид на Crater Lake с высоты 10 километров: Случайно обратил внимание, когда возвращался из Калифорнии месяц назад. Снимал, понятное дело, телефоном. Качество - сами понимаете.

Тезисы моего доклада на РИТ++ 2011

Цель доклада – познакомить разработчиков с принципами работы стека TCP/IP в Windows, его основными компонентами и связями между ними; объяснить, что именно происходит с данными на пути к приложению и от него, и как работа сетевого стека сказывается на приложениях. В докладе описываются NDIS, существующие возможности аппаратного ускорения, работа с прерываниями и асинхронным вводом-выводом, возможности настройки сетевых адаптеров и протокола TCP/IP, перечисляются программные интерфейсы, описывается Windows Filtering Platform и её связь с IPsec, антивирусными сканнерами и фаерволами. Read On →

Inception

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

windbg.exe kd.exe -k com:port=com1,baud=115200

…и замечаю, что что-то не так. А именно - опять сломался наш корпоративный прокси. А я как раз хотел посмотреть в… ну скажем MSDN. Попробовал и так и сяк. Не работает, вылетает по таймауту. Ну хорошо, но тут начитают происходить еще более мистические вещи. Outlook вдруг перестает реагировать мышь и клавиатуру; IE вообще не запускается – процесс стартует, но окно не показывается. Несколько подозрительно для проблем с прокси.

Read On →

РИТ++, секция «RootConf»

Меня пригласили выступить на конференции РИТ++ 2011, которая пройдет в Москве в конце апреля. Предварительная тема доклада: «Сетевая подсистема Windows глазами разработчика. Краткий, неполный и, в основном, неверный обзор. :-)» Я собираюсь рассказать о том, как работает ядерная часть сетевой подсистемы, как данные попадают в user mode и что с ними происходит по пути. Заходите на огонёк.