Архив Сентябрь 6, Понедельник, 2010

The Old New Thing / [Перевод] Байки о несовместимых приложениях

Нет комментариев »

Это отрывки из бесплатной главы из бумажной книги «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 сообщает программам, — необходимый, но очень тяжёлый шаг. Пара нажатых клавиш, и падают сотни приложений, отлично работавших до сих пор; теперь отделу совместимости придётся потратить на вылавливание чужих багов лишнюю тысячу человеко-часов.



.NET / ReSharper: Анализ на NullReferenceException и контракты для него

Нет комментариев »

Если вы используете 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.



После этой операции предупреждение пропадает. Почему так происходит?



Android / Проект PSFreedom портирован на Android

Нет комментариев »

Как и ожидалось после новости о портировании проекта на Nokia n900, появились порты на Android.

PSFreedom — порт

На данный момент подтверждена работа на следующих устройствах:

— HTC Desire

— Google Nexus One

— HTC Dream (G1)


Web-разработка / Javascript играет в шахматы — размер скрипта 1 KB!

Нет комментариев »





Javascript в работе использует уже чуть ли не каждый веб-разработчик. Но пока только мексиканцу Оскару Толедо удалось упихнуть в один килобайт кода на Javascript самый настоящий шахматный алгоритм.



По ссылке можно сразиться с компьютером прямо в окошке браузера, а также ознакомиться с мозгодробильным весьма заковыристым кодом скрипта.


Я пиарюсь / Бесплатный DNS-хостинг

Нет комментариев »

image Наша команда обратила внимание, что в настоящее время предложение и функционал бесплатного и платного DNS-хостинга в России находятся на достаточно низком уровне. Поэтому мы, опираясь на опыт своих специалистов в доменной индустрии, решили предложить вам сервис, разработанный с учетом максимального количества пожеланий и требования клиентов к данной услуге. Ключевые функции и преимущества:



Я пиарюсь / Бета-тестирование Kebrum VPN, анонимность доступная каждому

Нет комментариев »

Интернет является молодой технологией, если считать возраст с момента создания службы WWW в 1989 году, то ему всего 21 год. Как и всякая технология, созданная человеком, глобальная сеть, помимо ее предназначения(официально это быстрый обмен информацией) может быть использована во вред. Речь идет вовсе не о вирусах, ломающих компьютер и не о предложениях увеличить МПХ. Интернет является настолько удобной вещью, что все больше и больше сливается с реальной жизнью и в общем-то уже нельзя сказать, что он является «виртуальностью». Это в фантастике погружаешься в виртуальную реальность, где свой независимый от реальности мир, а тут все иначе, Интернет это просто система по передаче информации. Но почему-то большинство людей так не считает и им кажется, что то, что происходит в Интернете никак не повлияет на их жизнь. А ведь за последние 20 лет мир стал другим, сегодня из России попасть в Америку можно за 27 часов, при этом цена билета не является чем-то недоступным. Хорошо об этом сказал Louis CK в этом видео.


Android / Сервисы — это просто

Нет комментариев »

Сегодня мы напишем сервис для Android’а, который будет работать в фоне, срабатывать через определенный интервал времени и автоматически перезапускаться после перезагрузки телефона. Казалось бы ничего сложного в этом нет, но очень много людей сталкиваются с проблемами, когда пытаются разобраться с этими самыми пресловутыми Services.


Linux для всех / Авторизация по SSH с использованием ключей в условиях шифрования домашней директории

Нет комментариев »

Хрестоматийный вариант настройки авторизации по SSH с использованием ключей знают все: открытый ключ записывается в ~/.ssh/authorized_keys. В случае, если применяется шифрование домашней папки, то система не сможет прочесть данный файл. Следовательно, необходимо разместить эти данные за пределами зашифрованной домашней папки.


Google Chrome / Бинарные часы в Chrome с помощью Create Your Own

Нет комментариев »

Задумал я как-то раз где-нибудь в своей системе приютить бинарные часы в целях расширения кругозора. Готовые варианты мне не подошли, захотелось что-то настраиваемое.

Вот то, что мне понадобилось: расширение для Chrome «Create Your Own» и готовый скрипт на js, найденный на Stackoverflow.



Можно получить такие часы:





Блог компании Toshiba / Мультимедийный планшет Toshiba FOLIO 100

Нет комментариев »

На выставке IFA2010 в Берлине Toshiba представила свой первый планшетный компьютер на базе Android —

мультимедийный планшет FOLIO 100. Устройство с диагональю экрана 25,7 см (10,1 дюйма) предназначено для людей, которые желают иметь все любимые файлы и интернет под рукой. FOLIO 100 поступит в продажу в регионе EMEA в 4-м квартале 2010 г.

image