Искусство программирования для Unix
Шрифт:
5.1.1. Учебный пример: формат файлов паролей в Unix
5.1.2. Учебный пример: формат файлов .newsrc
5.1.3. Учебный пример: PNG — формат графических файлов
5.2. Метаформаты файлов данных
5.2.1. DSV-стиль
5.2.2. Формат RFC 822
5.2.3. Формат Cookie-Jar
5.2.4. Формат record-jar
5.2.5. XML
5.2.6. Формат Windows INI
5.2.7. Unix-соглашения по текстовым файловым форматам
5.2.8. Аргументы "за" и "против" сжатия
5.3. Проектирование протоколов прикладного уровня
5.3.1. Учебный пример: SMTP, простой протокол передачи почты
5.3.2. Учебный пример: РОРЗ, почтовый протокол 3-й версии
5.3.3. Учебный пример: IMAP, протокол доступа к почтовым сообщениям
5.4. Метаформаты протоколов прикладного уровня
5.4.1. Классический метапротокол прикладного уровня в Internet
5.4.2. HTTP как универсальный протокол прикладного уровня
5.4.2.1. Учебный пример: база данных CDDB/freedb.org
5.4.2.2. Учебный пример: протокол IPP
5.4.3. ВЕЕР: Blocks Extensible Exchange Protocol
5.4.4. XML-RPC, SOAP и Jabber
6 Прозрачность: да будет свет
6.1. Учебные примеры
6.1.1. Учебный пример: audacity
6.1.2. Учебный пример: параметр -v программы fetchmail
6.1.3. Учебный пример: GCC
6.1.4 Учебный пример: kmwail
6.1.5. Учебный пример: SNG
6.1.6. Учебный пример: база данных Terminfo
6.1.7. Учебный пример: файлы данных Freeciv
6.2. Проектирование, обеспечивающее прозрачность и воспринимаемость
6.2.1. Дзэн прозрачности
6.2.2. Программирование, обеспечивающее прозрачность и воспринимаемость
6.2.3. Прозрачность и предотвращение избыточной защищенности
6.2.4. Прозрачность и редактируемые формы представления
6.2.5. Прозрачность, диагностика и восстановление после сбоев
6.3. Проектирование, обеспечивающее удобство сопровождения
7 Мультипрограммирование: разделение процессов для разделения функций
7.1. Отделение контроля сложности от настройки производительности
7.2. Классификация IPC-методов в Unix
7.2.1. Передача задач специализированным программам
7.2.1.1. Учебный пример: пользовательский почтовый агент mutt
7.2.2. Каналы, перенаправление и фильтры
7.2.2.1. Учебный пример: создание канала к пейджеру
7.2.2.2. Учебный пример: создание списков слов
7.2.2.3. Учебный пример: pic2graph
7.2.2.4. Учебный пример: утилиты bc(1) и dc(1)
7.2.2.5. Контрпример: почему программа fetchmail не выполнена в виде конвейера
7.2.3. Упаковщики
7.3.2.1. Учебный пример: сценарии резервного копирования
7.2.4. Оболочки безопасности
7.2.5. Подчиненные процессы
7.2.5.1. Учебный пример: scp и ssh
7.2.6. Равноправный межпроцессный обмен данными
7.2.6.1. Временные файлы
7.2.6.2. Сигналы
7.2.6.3. Системные демоны и традиционные сигналы
7.2.6.4. Учебный пример: использование сигналов в программе fetchmail
7.2.6.5. Сокеты
7.2.6.5.1. Учебный пример: PostgreSQL
7.2.6.5.2. Учебный пример: Freeciv
7.2.6.6. Общая память
7.3. Проблемы и методы, которых следует избегать
7.3.1. Устаревшие IPC-методы в Unix
7.3.1.1. System V IPC
7.3.1.2. Потоки
7.3.2. Методы удаленного вызова процедур
7.3.3. Опасны ли параллельные процессы?
7.4. Разделение процессов на уровне проектирования
8 Мини-языки: поиск выразительной нотации
8.1. Классификация языков
8.2. Применение мини-языков
8.2.1. Учебный пример: sng
8.2.2. Учебный пример: регулярные выражения
8.2.3. Учебный пример: Glade
8.2.4. Учебный пример: т4
8.2.5. Учебный пример: XSLT
8.2.6. Учебный пример: инструментарий Documenter's Workbench
8.2.7. Учебный пример: синтаксис конфигурационного файла fetchmail
8.2.8. Учебный пример: awk
8.2.9. Учебный пример: PostScript
8.2.10. Учебный пример: утилиты bc и dc
8.2.11. Учебный пример: Emacs Lisp
8.2.12 Учебный пример: JavaScript
8.3. Проектирование мини-языков
8.3.1. Определение соответствующего уровня сложности
8.3.2. Расширение и встраивание языков
8.3.3. Написание специальной грамматики
8.3.4. Проблемы макросов
8.3.5. Язык или протокол прикладного уровня
9 Генерация кода: повышение уровня спецификации
9.1 Создание программ, управляемых данными
9.1.1. Учебный лример: ascii
9.1.2. Учебный пример: статистическая фильтрация спама
9.1.3. Учебный пример: программирование метаклассов в fetchmail
9.2. Генерация специального кода
9.2.1. Учебный пример: генерация кода для ascii-дисплеев
9.2.2. Учебный пример: генерация HTML-кода для табличного списка
10 Конфигурация: правильное начало
10.1. Конфигурируемые параметры
10.2. Месторасположение конфигурационной информации
10.3. Файлы конфигурации
10.3.1. Учебный пример: файл .netrc
10.3.2. Переносимость на другие операционные системы
10.4. Переменные окружения
10.4.1. Системные переменные окружения