Искусство программирования для Unix
Шрифт:
14 Современные и исторические графики рыночных долей Wcb-еерверов доступны в ежемесячном обзоре "Netcraft Web Server Survey" по адресу chttp: / /www. net craft. com/survey/>.
MacOS фактически состоит из двух частных уровней (перенесенные приложения OpenStep и классические GUI-интерфейсы Macintosh) поверх Unix-основы с открытым исходным кодом (проект Darwin).
15 Для читателей, не имеющих опыта работы в Unix: канал представляет собой способ соединения вывода одной программы с вводом другой. Возможные варианты применения данной идеи для обеспечения взаимодействия программ
16 Периодические прерывания от аппаратного таймера (periodic clock interrupt) необходимы в виде-тактовых импульсов для системы разделения времени. В каждом такте таймер сообщает системе о том, что можно переключиться на другую задачу, определяя длительность кванта времени. В настоящее время Unix-системы настроены на 60 или 100 тактовых импульсов в секунду.
17 Для обозначения этого подхода в настоящее время используется новомодное понятие система безо паашсти па основе ролей (role-based security).
18 Данная проблема весьма серьезно рассматривалась в корпорации Microsoft в ходе перестройки службы Hotmail. См. [7|.
19 Более подробный анализ технических характеристик различных операционных систем приведен на Web-сайтс OSData <http: / /www. osdatа. com/ >.
20 За исключением системы Multics, которая в основном оказывала влияние в период между опубликованием се спецификаций в 1965 году и ее фактической поставкой в 1969 году.
21 1° Возвращаясь к вопросу о части технологии Amiga, IBM предоставила компании Commodore лицензию на свой язык сценариев REXX. Данная сделка описана на страницеos2news/OS2Warp. html.
22 В качестве примера рекомендуются сайты OS Voice <http://www.os2voice.org/> и OS/2 BBS.COM <http: / /www. os2bbs. com/ >.
23 Возможно. Это подтверждает тот факт, что унифицирующей метафорой для всех операционных систем Microsoft является тезис "потребитель должен быть замкнут".
24 http: //security. tombom. со .uk/shatter .html
25 Корпорация Microsoft в марте 2003 года фактически публично признала, что NT-безопасность невозможна. См. Web-страпицуcom/technet/treeview/default .asp?url=/ technet/security/bulletin/MS03 -010.asp.
26 Технология Cygwin в значительной мере согласована с Единым стандартом Unix (Single Unix Specification), однако программы, требующие непосредственного доступа к аппаратным ресурсам, запускаются с ограничениями в ядре поддерживающей их Windows-системы. Так, широко известны проблемы с Ethernet-платами.
http: / /www. cbttape. org/cdrom.htm
27 Результаты Linux-стратегии эмуляции и поглощения заметно отличаются от практики захвата и расширения, характерной для некоторых се конкурентов. Для начинающих: Linux не нарушает совместимости с тем, что эмулирует, и таким образом не привязывает клиентов к "расширенной" версии.
28 Закон Брукса гласит, что подключение к запаздывающему проекту новых программистов еще больше замедляет работу, В более широком смысле рост затрат и количества ошибок можно выразить квадратом числа, соответствующего количеству программистов, которые
29 Согласно модели Хаттона, небольшие различия в максимальном размере элемента кода, который программист может держать в краткосрочной памяти, непосредственно влияют на эффективность работы программиста.
30 В основном труде по рассматриваемой теме, а именно "Refactoring" [21], автор фактически указывает, что принципиальная цель рефакторинга состоит в усилении ортогональности. Однако ввиду недостаточно развитой концепции он может только аппроксимировать данную идею из необходимости устранения дублирования кода и других нежелательных явлений, многие из которых являются следствием нарушения ортогональности.
31 < Типичным примером плохой организации кэширования является директива rehash в csh(1)\ введите man 1 csh для получения более подробных сведений. Другой пример приведен в разделе 12.4.3.
32 Последний пример "переплетения" Unix и Дзэн приведен в приложении Г.
33 Архитектурный выбор порядка интерпретации битов в машинном слове — "обратный" и "прямой" (big-endian и little-endian). Хотя канонический адрес отсутствует, поиск в Web по фразе "On Holy Wan and a Plea for Peace" позволит найти классическую и интересную статью по данной теме.
34 Широко распространенное мнение о том, что автоинкрементная и автодекрементная функции вошли в С, поскольку они представляли машинные команды PDP-11, - это не более чем миф. Согласно воспоминаниям Денниса Ритчи, данные операции были предусмотрены в предшествующем языке В еще до появления PDP-11.
Наличие глобальных переменных также означает, что повторно использовать данный код невозможно, то есть, множество экземпляров в одном процессе, вероятно, препятствуют работе друг друга.
35 Много лет назад я узнал из книги Кернигаиа и Плоджера "The Elements of Programming Style" полезное правило: писать однострочный комментарий немедленно после прототипа функции, причем для вся без исключения функций.
36 Простейший способ сбора данных сведений заключается в анализе тег-файлов, сгенерированных с помощью таких утилит, как etags(1) или ctags( 1).
Пример 5.5. XML-формат
<?xtnl version=" 1.0"?> <kprintf ilter name="imagetops"> <filtercommand
data=11 imagetops %filterargs %filterinput %filteroutput" /> <filterargs>
<filterarg name="center"
description»"Image centering"
format»"-nocenter" type="bool" default»"true"> cvalue name»"true" description="Yes" /> cvalue name»"false" description»"No" /> </filterarg> <filterarg name»"turn"
description»"Image rotation" format»"-%value" type="list" default»"auto"> cvalue name="auto" description="Automatic" /> cvalue name»"noturn" description="None" /> cvalue name="turn" description»"90 deg" /> c/filterarg> cfilterarg name="scale"