Not a kernel guy

… in the Windows kernel team

Friday, August 22, 2008

Отпуск.

Я, кстати, в отпуске с середины этой недели и до 16-ого сентября. С ограниченным доступом к e-mail. Так, что если чьё-то письмо осталось не отвеченным - извиняйте. Впечатления от родных мест опишу познее.

Posted at 11:15 pm •

Thursday, August 14, 2008

Не дам хохлам заработать!

Супруга рассказала забавное. В Редмонде есть «русский» магазин. Стандартный такой: гречка, селедка, халва, хлеб и все такое. Зашла она туда за творогом и чем-нибудь еще по мелочи. За ней в магазин заходит ещё одна покупательница и начинает что-то там себе выбирать. Доходит до гречки, внимательно рассматривает, а потом спрашивает хозяйку: «А у вас украинские товары есть?» «Да, есть украинские, есть из России, есть из Болгарии» - отвечает хозяйка. Пауза. «А сама ты откуда?» - спрашивает. «Из Хмельника (небольшой город в Винницкой области на Украине)» - отвечает хозяйка. Покупательница окончательно меняется в лице, бросает гречку на пол, говорит: «Не дам хохлам заработать!» и уходит. Немая сцена. Жена переглядывается с хозяйкой, обе пожимают плечами…

Update: Ошибочка вышла. Хмельник - это Винницкая облась.

Posted at 9:00 pm •

Wednesday, August 13, 2008

Унификация стиля кодирования в команде - тупичок с граблями.

Тема жёванная-пережёванная, так что я не буду подробно останавливаться на том, зачем нужен единый стиль кодирования в команде (или проекте). Основные тезисы:

  • Унифицированный стиль кодирования упрощает сопровождение кода. Это, кажется, единственная причина, зачем он вообще нужен. Все остальное, включая меньшее количество мигреней в минуту на одного эталонного разработчика, - побочные эффекты, направленные опять же на упрощение (читай - повышение эффективности) сопровождения кода.
  • Кажется, нет никакой разницы между разными стилями с точки зрения легкости понимания и написания кода. Любой выбранный стиль, будучи принят в команде упрощает сопровождение кода, при условии, что он один и используется.
  • Единственный способ выработать единый стиль – диктатура в том или ином виде. Можно месяцами спорить о том, где правильно ставить скобки, какие отступы должны быть, можно ли использовать две пустые строки в качестве разделителя и т.д. и т.п. В один прекрасный момент терпение лопается и волевым решением назначается «правильный» стиль.

(more…)

Posted at 10:51 pm •

Tuesday, August 5, 2008

Хозяйке на заметку.

Чтобы войти на машину с благозвучным названием “6XSD29G-052-18XS_32” под локальным пользователем, не нужно набивать полное имя пользователя как “6XSD29G-052-18XS_32\vasya”, проклиная при этом злого гения, запретившего Copy-Paste в поле ввода имени, и его коллегу, давшему компьютеру такое замечательное имя. Достаточно просто сказать “.\vasya” и все получится.

PS. Знал бы об этом пять лет назад – день жизни сэкономил бы уже наверное. Хотя мог бы и сам догадаться… :-)

Posted at 8:54 pm •

Monday, August 4, 2008

Detours.

Сижу, разбираюсь как Detours перехватывает функции Win32 API. Сама идея известна. В начало функции пишется безусловный JMP на функцию перехватчик. Для того, чтобы вызвать оригинальную функции, её код, на место которого помещается JMP, копируется в буфер и дополняется безусловным JMP на первую нетронутую инструкцию.

Интересно, однако, не это, а сколько дополнительных проверок делается, чтобы повысить надежность этого метода:

  1. Поверяется, не указывает ли указатель на перехватываемую функцию, не на саму функцию, а на элемент таблицы импорта. Если так, то в качестве указателя берется imm32 из JMP;
  2. Проверяется длина функции, причем считается, что функция может завершаться RET, JMP (разные варианты) или INT3. Последние два варианта не очень очевидны, хотя при взгляде на код становится ясно, что к чему;
  3. После JMP, завершающего скопированный из функции код, пишется INT3. То же, на всякий случай;
  4. Код установки перехватчиков завернут в транзакцию. Устанавливаются (или снимаются) либо все перехватчики, либо транзакция откатывается. Впрочем, 100% гарантии это все равно не дает;
  5. Ну и плюс ко всему поддерживается статическая установка перехватчиков, как раз чтобы избежать проблем с динамическим перехватом.

В этом списке не хватает только поддержки hotpatching. Код, скомпилированный с поддержкой hotpatching можно править прямо на ходу, не останавливая потоки в процессе.

Posted at 10:11 pm •

Sunday, August 3, 2008

Обновился до WordPress 2.6.

Обновился до WordPress 2.6. Вроде ничего не потерял по дороге. Если что-то все-таки отвалилось – пишите.

Tags:
Posted at 11:50 am •

Powered by WordPress