Искусство программирования для Unix
Шрифт:
15.8.3. Emacs и контроль версий
15.8.4. Emacs и профилирование
15.8.5. Лучше, чем IDE
16 Повторное использование кода: не изобретая колесо
16.1. История случайного новичка
16.2. Прозрачность — ключ к повторному использованию кода
16.3. От повторного использования к открытому исходному коду
16.4. Оценка проектов с открытым исходным кодом
16.5. Поиск открытого исходного кода
16.6. Вопросы использования программ с открытым
16.7. Вопросы лицензирования
16.7.1. Что определяется как открытый исходный код
16.7.2. Стандартные лицензии на открытый исходный код
16.7.3. Когда потребуется адвокат
Часть IV Сообщество
17 Переносимость: переносимость программ и соблюдение стандартов
17.1. Эволюция С
17.1.1. Ранняя история С
17.1.2. Стандарты С
17.2. Стандарты Unix
17.2.1. Стандарты и Unix-войны
17.2.2. Влияние новых Unix-систем
17.2.3. Стандарты Unix в мире открытого исходного кода
17.3. IETF и процесс RFC-стандартизации
17.4. Спецификации — ДНК, код — РНК
17.5. Программирование, обеспечивающее переносимость
17.5.1. Переносимость и выбор языка
17.5.1.1. Переносимость С
17.5.1.2. Переносимость С++
17.5.1.3. Переносимость shell
17.5.1.4. Переносимость Perl
17.5.1.5. Переносимость Python
17.5.1.6. Переносимость Tel
17.5.1.7. Переносимость Java
17.5.1.8. Переносимость Emacs Lisp
17.5.2. Обход системных зависимостей
17.5.3. Инструменты, обеспечивающие переносимость
17.6. Интернационализация
17.7. Переносимость, открытые стандарты и открытый исходный код
18 Документация: объяснение кода в Web-сообществе
18.1. Концепции документации
18.2. Стиль Unix
18.2.1. Склонность к большим документам
18.2.2. Культурный стиль
18.3. Многообразие форматов документации в Unix
18.3.1. troff и инструментарий Documenter's Workbench
18.3.2. TeX
18.3.3. Texinfo
18.3.4. POD
18.3.5. HTML
18.3.6. DocBook
18.4. Современный хаос и возможный выход из положения
18.5. DocBook
18.5.1. Определения типов документов
18.5.2. Другие DTD-определения
18.5.3. Инструментальная связка DocBook
18.5.4. Средства преобразования
18.5.5. Инструменты редактирования
18.5.6. Связанные стандарты и практические приемы
18.5.7. SGML
18.5.8. Справочные ресурсы по XML-DocBook
18.6. Лучшие практические приемы написания Unix-документации
19 Открытый исходный код: программирование в новом Unix-сообществе
19.1. Unix и открытый исходный код
19.2.
19.2.1. Хорошая практика обмена исправлениями
19.2.1.1. Отправляйте заплаты, а не целые архивы или файлы
19.2.1.2. Отправляйте исправления к текущей версии кода
19.2.1.3. Не следует включать заплаты для генерируемых файлов
19.2.1.4. Не отправляйте заплат, которые только убирают $-идентификаторы систем RCS или SCCS
19.2.1.5. Используйте вместо формата по умолчанию (-е) форматы -с или -и
19.2.1.6. Сопровождайте заплаты документацией
19.2.1.7. Сопровождайте заплату пояснениями
19.2.1.7. Включайте в код полезные комментарии
19.2.1.9. Не огорчайтесь, если заплата отклонена
19.2.2. Хорошая практика наименования проектов и архивов
19.2.2.1. Используйте GNU-стиль названий с именной частью и номерами (основной.второстепенный.заплата)
19.2.2.2. По возможности необходимо придерживаться локальных соглашений
19.2.2.3. Упорно ищите уникальный префикс имени, который легко вводить
19.2.3. Хорошая практика разработки
19.2.3.1. Не полагайтесь на частный код
19.2.3.2. Используйте автоинструменты GNU
19.2.3.3. Тестируйте код перед выпуском версии
19.2.3.4. Выполняйте контроль ошибок в коде перед выпуском версии
19.2.3.5. Проверяйте орфографию в документации и README-файлах перед выпуском версии
19.2.3.6. Рекомендованные практические приемы переносимости кода С/С++
19.2.4. Хорошая практика создания дистрибутивов
19.2.4.1. Убедитесь, что архивы всегда распаковываются в один новый каталог
19.2.4.2. Включайте в дистрибутив README-файл
19.2.4.3. Придерживайтесь стандартной практики именования файлов
19.2.4.4. Проектирование с учетом обновлений
19.2.4.5. В Linux создавайте RPM-пакеты
19.2.4.6. Предоставляйте контрольные суммы пакетов
19.2.5. Практические приемы хорошей коммуникации
19.2.5.1. Публикация на сайте Freshmeat
19.2.5.2. Публикация в соответствующих группах новостей
19.2.5.3. Создайте Web-сайт
19.2.5.4. Поддерживайте списки рассылки проекта
19.2.5.5. Публикуйте проект в главных архивах
19.3. Логика лицензирования: как выбрать лицензию
19.4. Почему следует использовать стандартную лицензию
19.5. Многообразие лицензий на открытый исходный код
19.5.1. Лицензия MIT или Консорциума X
19.5.2. Классическая BSD-лицензия
19.5.3. Артистическая лицензия