Архив Сентябрь 6, Понедельник, 2010
Сентябрь 6, Понедельник, 2010
Это отрывки из бесплатной главы из бумажной книги «The Old New Thing». Они ничему не пытаются научить; это просто короткие забавные эпизоды из будней борцов за совместимость новых версий Windows со старыми приложениями.
Изменяем номер версии Windows
Изменить номер версии, который Windows сообщает программам, не просто, как кажется. Например, некоторые программы проверяют номер версии так:
UINT Ver = GetVersion();
UINT MajorVersion = LOBYTE(uVer);
UINT MinorVersion = HIBYTE(uVer);
if (MajorVersion < 3 || MinorVersion < 10) {
Error("This program requires Windows 3.1");
}
Представьте себе, как этот код отработает на Windows 95, у которой номер версии 4.0. Вторая проверка срабатывает из-за того, что 0 меньше 10.
И ладно бы программа просто выводила сообщение об ошибке и завершалась. Многие рушились: очевидно было, что их поведение на «неподдерживаемых» версиях Windows никогда не тестировалось.
Таких программ оказалось настолько много, что мы перестали исправлять их по одной, и просто изменили возвращаемый номер версии с 4.0 на 3.95.
Программы для MS-DOS тоже не все гладко реагировали на изменение версии ОС. Это удивительно потому, что к тому времени у MS-DOS уже были десятки выпущенных версий и под-версий, и разработчикам пора было бы уже научиться проверять номер версии. Но например, один пакет программ использовал номер версии DOS как индекс в таблице функций: по собственной функции для каждой вышедшей версии. В таблице было пять функций: от MS-DOS 1.x до 5.x. Когда программа запускалась под MS-DOS 6.0, она вызывала адрес за пределами таблицы, и рушилась.
Изменить номер версии, который Windows сообщает программам, — необходимый, но очень тяжёлый шаг. Пара нажатых клавиш, и падают сотни приложений, отлично работавших до сих пор; теперь отделу совместимости придётся потратить на вылавливание чужих багов лишнюю тысячу человеко-часов.
Сентябрь 6, Понедельник, 2010
Если вы используете ReSharper, то вы, наверняка, знакомы с его подсветкой «Possible ‘NullReferenceException’». В этой статье я кратко расскажу об анализаторе, который выводит предупреждения такого рода, и о том, как ему помочь делать это лучше.
Сразу рассмотрим пример:
public string Bar(bool condition)
{
string iAmNullSometimes = condition ? "Not null value" : null;
return iAmNullSometimes.ToUpper();
}
* This source code was highlighted with Source Code Highlighter.
ReSharper справедливо подсветит iAmNullSometimes во второй строке метода с таким предупреждением. Теперь выделим метод:
public string Bar(bool condition)
{
string iAmNullSometimes = GetNullWhenFalse(condition);
return iAmNullSometimes.ToUpper();
}
public string GetNullWhenFalse(bool condition)
{
return condition ? "Not null value" : null;
}
* This source code was highlighted with Source Code Highlighter.
После этой операции предупреждение пропадает. Почему так происходит?
Сентябрь 6, Понедельник, 2010
Как и ожидалось после новости о портировании проекта на Nokia n900, появились порты на Android.
PSFreedom — порт
На данный момент подтверждена работа на следующих устройствах:
— HTC Desire
— Google Nexus One
— HTC Dream (G1)
Сентябрь 6, Понедельник, 2010

Javascript в работе использует уже чуть ли не каждый веб-разработчик. Но пока только мексиканцу Оскару Толедо удалось упихнуть в один килобайт кода на Javascript самый настоящий шахматный алгоритм.
По ссылке можно сразиться с компьютером прямо в окошке браузера, а также ознакомиться с мозгодробильным весьма заковыристым кодом скрипта.
Сентябрь 6, Понедельник, 2010
Наша команда обратила внимание, что в настоящее время предложение и функционал бесплатного и платного DNS-хостинга в России находятся на достаточно низком уровне. Поэтому мы, опираясь на опыт своих специалистов в доменной индустрии, решили предложить вам сервис, разработанный с учетом максимального количества пожеланий и требования клиентов к данной услуге. Ключевые функции и преимущества:
Сентябрь 6, Понедельник, 2010
Интернет является молодой технологией, если считать возраст с момента создания службы WWW в 1989 году, то ему всего 21 год. Как и всякая технология, созданная человеком, глобальная сеть, помимо ее предназначения(официально это быстрый обмен информацией) может быть использована во вред. Речь идет вовсе не о вирусах, ломающих компьютер и не о предложениях увеличить МПХ. Интернет является настолько удобной вещью, что все больше и больше сливается с реальной жизнью и в общем-то уже нельзя сказать, что он является «виртуальностью». Это в фантастике погружаешься в виртуальную реальность, где свой независимый от реальности мир, а тут все иначе, Интернет это просто система по передаче информации. Но почему-то большинство людей так не считает и им кажется, что то, что происходит в Интернете никак не повлияет на их жизнь. А ведь за последние 20 лет мир стал другим, сегодня из России попасть в Америку можно за 27 часов, при этом цена билета не является чем-то недоступным. Хорошо об этом сказал Louis CK в этом видео.
Сентябрь 6, Понедельник, 2010
Сегодня мы напишем сервис для Android’а, который будет работать в фоне, срабатывать через определенный интервал времени и автоматически перезапускаться после перезагрузки телефона. Казалось бы ничего сложного в этом нет, но очень много людей сталкиваются с проблемами, когда пытаются разобраться с этими самыми пресловутыми Services.
Сентябрь 6, Понедельник, 2010
Хрестоматийный вариант настройки авторизации по SSH с использованием ключей знают все: открытый ключ записывается в ~/.ssh/authorized_keys. В случае, если применяется шифрование домашней папки, то система не сможет прочесть данный файл. Следовательно, необходимо разместить эти данные за пределами зашифрованной домашней папки.
Сентябрь 6, Понедельник, 2010
Задумал я как-то раз где-нибудь в своей системе приютить бинарные часы в целях расширения кругозора. Готовые варианты мне не подошли, захотелось что-то настраиваемое.
Вот то, что мне понадобилось: расширение для Chrome «Create Your Own» и готовый скрипт на js, найденный на Stackoverflow.
Можно получить такие часы:
Сентябрь 6, Понедельник, 2010
На выставке IFA2010 в Берлине Toshiba представила свой первый планшетный компьютер на базе Android —
мультимедийный планшет FOLIO 100. Устройство с диагональю экрана 25,7 см (10,1 дюйма) предназначено для людей, которые желают иметь все любимые файлы и интернет под рукой. FOLIO 100 поступит в продажу в регионе EMEA в 4-м квартале 2010 г.
