Archive

Archive for August, 2008

Отпуск.

August 22nd, 2008

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

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

August 14th, 2008

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

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

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

August 13th, 2008

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

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

Read more…

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

August 5th, 2008

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

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

Detours.

August 4th, 2008
Comments Off

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

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

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

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

, ,

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

August 3rd, 2008

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