Microsoft Visual C++ и MFC. Программирование для Windows.
Microsoft Visual C++ Microsoft Visual C++ Версия 4.0. Следующие Версии Microsoft Visual C++ Поддержка Сети Internet. Язык Моделирования Виртуальной Реальности. Игровое Sdk. Набор Ocx Объектов. Как Связаться С Авторами. Благодарности. 1. Немного О C++ Ввод/Вывод. Константы. Ссылки. Распределение Памяти. Операторы New И Delete. Перегрузка Имен Функций. Задание Параметров Функции По Умолчанию. Встраивание. Классы. Ключевое Слово This. Разграничение Доступа К Элементам Класса. Методы, Входящие В Класс. Конструкторы …И Деструкторы Класса. Методы, Не Изменяющие Объекты Класса. Статические Методы. Общие Члены Объектов Класса. Дружественные Функции И Дружественные Классы. Дружественные Функции. Дружественные Классы. Наследование. Единичное Наследование. Множественное Наследование. Разграничение Доступа К Элементам Базового Класса. Переопределение Методов Базового Класса. Виртуальные Методы. Абстрактные Классы. Структуры. Шаблоны. Шаблоны В Mfc. Перегрузка Операторов. Обработка Исключительных Ситуаций. Операторы Try, Throw И Catch. Листинг 1.1. Файл Exception.Cpp. Универсальный Обработчик Исключений. Тип Исключения. 2. Введение В Mfc. Классы Библиотеки Mfc. Самый Базовый Класс Mfc (Класс Cobject). Основа Структуры Приложения (Класс Ccmdtarget). Подзадачи Приложения (Классы Cwinthread И Cwinapp). Документ Приложения (Класс Cdocument). Шаблон Документов (Классы Cdoctemplate, Csingledoctemplate И Cmultidoctemplate). Окна (Класс Cwnd). Исключения (Класс Cexception). Массивы, Списки И Словари. Файловая Система (Класс Cfile). Контекст Отображения (Класс CDC). Объекты Графического Интерфейса (Класс Cgdiobject). Меню (Класс Cmenu). Базы Данных (Классы Для Работы С Базами Данных). Синхронизация Задач Приложения (Класс Csyncobject). Сокеты (Классы Casyncsocket И Csocket). Классы, Не Имеющие Базового Класса. Простые Классы. Архивный Класс (Класс Carchive). Информация О Классе Объекта (Структура Cruntimeclass). Отладка Приложения (Классы Cdumpcontext, Cmemorystate). Печать Документа (Класс Cprintinfo). Первое Приложение Mfc. Окно Project Workspace. Листинг 2.1. Файл Mfhello.Cpp. Средства Classview. Добавление К Классу Нового Метода. Добавление К Классу Нового Элемента Данных. Просмотр Дерева Наследования Классов. Редактирование Методов Класса. Редактирование Элементов Данных Класса. Приложение С Единственным Окном. Листинг 2.2. Файл Mfstart.Cpp. Листинг 2.3. Файл Mfstartapp.H. Листинг 2.4. Файл Mfstartapp.Cpp. Листинг 2.5. Файл Mfstartwindow.H. Листинг 2.6. Файл Mfstartwindow.Cpp. Обработка Сообщений. Оконные Сообщения. Сообщения От Органов Управления. Командные Сообщения. Таблица Сообщений. Макрокоманда On_Wm_<Name> Макрокоманда On_Registered_Message. Макрокоманда On_Message. Макрокоманда On_Command. Макрокоманда On_Command_Range. Макрокоманда On_Update_Command_Ui. Макрокоманда On_Update_Command_Ui_Range. Макрокоманда On_Name> Макрокоманда On_Control_Range. Забегая Вперед. Приложение Mfmenu. Листинг 2.7. Файл Mfmenu.Cpp. Ресурсы Приложения. Создание Меню Для Приложения Mfmenu. Листинг 2.8. Файл Mfmenures.H. Листинг 2.9. Файл Mfmenures.Rc. Долгий Путь Сообщения. Листинг 2.10. Файл Mfmessage.Cpp. Листинг 2.11. Фрагмент Файла Mfmessage.Rc. Листинг 2.12. Файл Resource.H. Диалоговая Панель. Приложение С Модальной Диалоговой Панелью. Листинг 2.13. Файл Mfdialog.Cpp. Листинг 2.14. Фрагмент Файла Mfdlgres.Rc. Листинг 2.15. Файл Resource.H. Главный Класс Приложения. Класс Диалоговой Панели. Обмен Данными. Приложение С Немодальной Диалоговой Панелью. 3. Некоторые Классы Mfc. Класс Cobject – Основной Класс Mfc. Конструкторы Класса. Оператор Присваивания. Диагностика. Проверка Целостности Объектов Класса. Получение Дампа Объекта Класса. Сохранение И Восстановление Состояния Объекта. Метод Isserializable. Виртуальный Метод Serialize. Информация О Классе. Виртуальный Метод Getruntimeclass. Метод Iskindof. Класс Cpoint – Точка На Плоскости. Класс Csize – Относительные Координаты. Класс Cstring – Текстовые Строки. Конструктор Класса. Коллекции. Массивы – Шаблон Carray. Списки – Шаблон Clist. Словари – Шаблон Cmap. Класс Ctime – Дата И Время. Файловая Система – Класс Cfile. Открытие И Создание Файлов. Идентификатор Открытого Файла. Закрытие Файлов. Чтение И Запись Файлов. Метод Flush. Операции С Файлами. Блокировка. Позиционирование. Характеристики Открытого Файла. Файловая Система – Классы Cmemfile И Cstdiofile. Модификация Класса Cmemfile. Файловая Система – Класс Cstdiofile. Приложение Testfile. Листинг 3.1. Файл Testfile.Cpp. Листинг 3.2. Файл Fsystem.Dat. Исключения – Класс Cexception. Класс Cexception. Класс Cmemoryexception. Класс Cfileexception. Приложение Except. Листинг 3.3. Файл Except.Cpp. Класс Carchiveexception. Класс Cnotsupportedexception. Класс Cresourceexception. Класс Cuserexception. Запись И Восстановление Объектов. Запись В Архивный Файл. Чтение Из Архивного Файла. Многозадачные Приложения. 4. Приложение С Главной Диалоговой Панелью. Создание Приложения Средствами Mfc Appwizard. Приложение Dialog. Имена, Используемые Mfc. Ресурсы Приложения. Диалоговые Панели Приложения Dialog. Пиктограмма. Таблица Текстовых Строк. Версия. Исходные Тексты Приложения. Главный Класс Приложения Dialog. Листинг 4.1. Файл Dialog.H. Листинг 4.2. Файл Dialog.Cpp. Таблица Сообщений Класса Cdialogapp. Главный Объект Приложения. Метод Initinstance. Класс Главной Диалоговой Панели Приложения. Листинг 4.3. Файл Dialogdlg.H. Листинг 4.4. Файл Dialogdlg.Cpp. Таблица Сообщений Класса Cdialogdlg. Конструктор Класса Cdialogdlg. Метод Dodataexchange. Метод Oninitdialog. Метод Onsyscommand (Системное Меню). Метод Onpaint (Отображение Пиктограммы Приложения). Метод Onquerydragicon. Файлы Stdafx.Cpp И Stdafx.H. Листинг 4.5. Файл Stdafx.Cpp. Листинг 4.6. Файл Stdafx.H. Средства Classwizard. Создание Нового Класса. Листинг 4.7. Файл Newclass.H. Листинг 4.8. Файл Newclass.Cpp. Включение В Класс Новых Методов. Включение В Класс Новых Элементов Данных. Просмотр Характеристик Класса. 5. Однооконный Интерфейс. Модель “Документ – Окно Просмотра ”. Процедура Создания Однооконного Приложения. Приложение Single. Ресурсы Приложения. Шаблон Меню. Панель Управления Toolbar. Пиктограмма. Таблица Текстовых Строк. Диалоговая Панель. Таблица Акселераторов. Версия. Общие Замечания О Ресурсах Приложения. Классы Приложения. Класс Csingleapp. Таблица Сообщений Класса Csingleapp. Главный Объект Приложения. Конструктор Класса Csingleapp. Метод Initinstance. Метод Onappabout. Класс Csingledoc. Таблица Сообщений Класса Csingledoc. Конструктор И Деструктор Класса Csingledoc. Методы Onnewdocument И Serialize. Методы Assertvalid И Dump. Класс Csingleview. Таблица Сообщений Класса Csingleview. Конструктор И Деструктор Класса Csingleview. Метод Getdocument. Метод Precreatewindow. Метод Ondraw. Методы Onprepareprinting, Onbeginprinting И Onendprinting. Методы Assertvalid И Dump. Класс Cmainframe. Таблица Сообщений Класса Cmainframe. Конструктор И Деструктор Класса Cmainframe. Метод Oncreate. Панель Управления И Панель Состояния. Панель Управления. Панель Состояния. Метод Precreatewindow. Методы Assertvalid И Dump. Обработка Командных Сообщений. Порядок Обработки Сообщений. Главное Окно Однооконного Приложения. Окно Просмотра. Документ. Диалоговая Панель. Командные Сообщения И Приложение Single. Изменение Порядка Обработки Сообщений. Стандартные Команд Ные Сообщения. Командные Сообщения С Идентификаторами ID_File_ Командные Сообщения С Идентификаторами ID_Edit_ Командные Сообщения С Идентификаторами ID_Window_ Командные Сообщения С Идентификаторами ID_App_ Командные Сообщения С Идентификаторами ID_Help_ Командные Сообщения С Идентификаторами ID_View_ Простейший Графический Редактор. Создание Нового Документа. Сохранение И Восстановление Документа На Диске. Для Забывчивых Пользователей. Простейший Текстовый Редактор. Заключение. Литература.
Linux и UNIX: программирование в shell. Руководство разработчика.
Интерпретатор Bourne Shell. Переносимость Интерпретатора Shell. Структура Книги. Интерпретатор Shell. Фильтрация Текста. Регистрация В Системе. Основы Shell–Программирования. Совершенствование Навыков По Написанию Сценариев. Что Нужно Знать. Часть 1. Глава 1. 1.1. Информация О Файлах. 1.2. Типы Файлов. 1.3. Права Доступа К Файлам. 1.4. Изменение Прав Доступа К Файлу. 1.4.1. Символьный Режим. 1.4.2. Примеры Использования Команды Chmod. 1.4.3. Абсолютный Режим. 1.4.4. Дополнительные Примеры Использования Команды …Chmod. 1.5. Каталоги. 1.6. Биты Смены Идентификаторов (Suid И Sgid). 1.6.1. Для Чего Нужны Биты Suid И Sgid? 1.6.2. Установка Битов Suid И Sgid. 1.7. Команды Chown И Chgrp. 1.7.1. Пример Использования Команды Chown. 1.7.2. Пример Использования Команды Chgrp. 1.7.3. Определение Групп, В Состав Которых Вы Входите. 1.7.4. Определение Групп, В Состав Которых Входят Другие Пользователи. 1.8. Команда Umask. 1.8.1. Обработка Значений Umask. 1.8.2. Примеры Установки Значений Umask. 1.9. Символические Ссылки. 1.9.1. Применение Символических Ссылок. 1.9.2. Примеры Создания Символических Ссылок. 1.10. Заключение. Глава 2. 2.1. Опции Команды Find. 2.1.1. Опция -Name. 2.1.2. Опция -Perm. 2.1.3. Опция -Prune. 2.1.4. Опции -User И -Nouser. 2.1.5. Опции -Group И -Nogroup. 2.1.6. Опция -Mtime. 2.1.7. Опция -Newer. 2.1.8. Опция -Type. 2.1.9. Опция -Size. 2.1.10. Опция -Depth. 2.1.11. Опция -Mount. 2.1.12. Поиск Файлов С Последующей Архивацией Командой Cpio. 2.1.13. Опции -Exec И -Ok. 2.1.14. Дополнительные Примеры Использования Команды Find. 2.2. Команде Xargs. 2.3. Заключение. Глава 3. 3.1. Планировщик Cron И Команда Crontab. 3.1.1. Структура Crontab–Файла. 3.1.2. Примеры Записей В Crontab–Файле. 3.1.3. Опции Команды Crontab. 3.1.4. Создание Crontab–Файла. 3.1.5. Вывод На Экран Содержимого Crontab–Файла. 3.1.6. Редактирование Crontab–Файла. 3.1.7. Удаление Crontab–Файла. 3.1.8. Восстановление Утерянного Crontab–Файла. 3.2. Команда At. 3.2.1. Запуск Команд И Сценариев С Помощью Команды At. 3.2.2. Просмотр Списка Запланированных Заданий. 3.2.3. Удаление Запланированного Задания. 3.3. Оператор & 3.3.1. Запуск Команды В Фоновом Режиме. 3.3.3. Уничтожение Фонового Задания. 3.4. Команда Nohup. 3.4.1. Запуск Задания С Помощью Команды Nohup. 3.4.2. Одновременный Запуск Нескольких Заданий. 3.5. Заключение. Глава 4. 4.1. Применение Метасимвола '*' 4.2. Применение Метасимвола '?' 4.3. Применение Метасимволов […] И [!…]. 4.4. Заключение. Глава 5. 5.1. Команда Echo. 5.2. Команда Read. 5.3. Команда Cat. 5.4. Каналы. 5.5. Команда Tee. 5.6. Стандартные Потоки Ввода, Вывода И Ошибок. 5.6.1. Стандартный Поток Ввода. 5.6.2. Стандартный Поток Вывода. 5.6.3. Стандартный Поток Ошибок. 5.7. Файловый Ввод–Вывод. 5.7.1. Переадресация Стандартного Потока Вывода. 5.7.2. Переадресация Стандартного Потока Ввода. 5.7.3. Переадресация Стандартного Потока Ошибок. 5.7.5. Объединение Выходных Потоков В Файле. 5.8. Команда Exec. 5.9. Применение Дескрипторов Файлов. 5.10. Заключение. Глава 6. 6.1. Оператор && 6.2. Оператор || 6.3. Группирование Команд С Помощью Скобок. 6.4. Заключение. Часть 2. Глава 7. 7.1. Поиск Одиночных Символов С Помощью Метасимвола '.' 7.2. Поиск Выражений В Начале Строки С Помощью Метасимвола '^' 7.3. Поиск Выражений В Конце Строки С Помощью Метасимвола '$' 7.4. Поиск Символов, Встречающихся Неопределенное Число Раз, С Помощью Метасимвола '*' 7.5. Поиск Специальных Символов С Помощью Метасимвола '\' 7.6. Поиск Символов, Входящих В Заданный Набор Или. 7.7. Поиск Символов, Встречающихся Заданное Число Раз. 7.8. Примеры. 7.9. Заключение. Глава 8. 8.1. Команда Grep. 8.1.1. Употребление Кавычек. 8.1.2. Параметры Команды Grep. 8.1.3. Поиск Среди Нескольких Файлов. 8.1 4. Определение Числа Строк, В Которых Найдено Совпадение. 8.1.5. Вывод Номеров Строк. 8.1.6. Поиск Строк, Не Соответствующих Шаблону. 8.1.7. Поиск Символов На Границе Слов. 8.1.8. Игнорирование Регистра Символов. 8.2. Команда Grep И Регулярные Выражения. 8.2.1. Выбор Символов Из Списка. 8.2.2. Инверсия Шаблона С Помощью Метасимвола "". 8.2.3. Шаблон, Соответствующий Любому Символу. 8.2.4. Поиск По Дате. 8.2.5. Комбинированные Диапазоны. 8.2.6. Поиск Повторяющихся Последовательностей. 8.2.7. Выбор Из Нескольких Шаблонов. 8.2.8. Поиск Пустых Строк. 8.2.9. Поиск Специальных Символов. 8.2.10. Поиск Имен Файлов, Соответствующих Заданному Формату. 8.2.11. Поиск Ip–Адресов. 8.2.12. Поиск Строк С Использованием Подстановочных Знаков. 8.3. Классы Символов. 8.4. Дополнительные Примеры Использования Команды Grep. 8.4.1. Фильтрация Списка Файлов. 8.4.2. Подавление Вывода Сообщений Об Ошибках. 8.4.3. Фильтрация Списка Процессов. 8.5. Команда Egrep. 8.6. Заключение. Глава 9. 9.1. Вызов Awk. 9.2. Сценарии. 9.2.2. Работа С Полями И Записями. 9.2.3. Регулярные Выражения. 9.2.4. Метасимволы. 9.2.5. Операторы. 9.2.6. Операторы Сравнения. 9.2.7. Логические Операторы. 9.2.8. Операторы Присваивания И Арифметические Операторы. 9.2.9. Встроенные Переменные. 9.2.10. Встроенные Функции Работы Со Строками. 9.2.11. Escape–Последовательности. 9.2.12. Команда Printf. 9.2.13. Передача Переменных Утилите Awk. 9.2.14. Файлы Сценариев. 9.2.15. Массивы. 9.3. Заключение. Глава 10. 10.1. Чтение И Обработка Данных В Sed. 10.2. Вызов Редактора Sed. 10.2.1. Сохранение Выходных Данных. 10.2.2. Синтаксис Команд. 10.2.3. Основные Команды Редактирования. 10.3. Регулярные Выражения. 10.4. Вывод Строк (Команда P). 10.4.1. Отображение Строки По Номеру. 10.4.2. Отображение Строк Из Заданного Диапазона. 10.4.3. Поиск Строк, Соответствующих Шаблону. 10.4.4. Поиск По Шаблону И Номеру Строки. 10.4.5. Поиск Специальных Символов. 10.4.6. Поиск Первой Строки. 10.4.7. Поиск Последней Строки. 10.4.8. Отображение Всего Файла. 10.5. Вывод Номеров Строк (Команда =). 10.6. Добавление Текста (Команда А). 10.7. Создание Файла Сценария. 10.8. Вставка Текста (Команда I). 10.9. Изменение Текста (Команда С). 10.10. Удаление Текста (Команда D). 10.11. Замена Подстроки (Команда S). 10.12. Вывод Строк В Файл (Команда W). 10.13. Чтение Строк На Файла (Команда R). 10.14. Досрочное Завершение Работы (Команда Q). 10.15. Отображение Управляющих Символов (Команда L). 10.16. Дополнительные Примеры Использования Редактора Sed. 10.16.1. Обработка Управляющих Символов. 10.16.2. Обработка Отчетов. 10.16.3. Добавление Текста. 10.16.4. Удаление Начальной Косой Черты В Путевом Имени. 10.17. Заключение. Глава 11. 11.1. Сортировка Файлов С Помощью Команды Sort. 11.1.1. Опции Команды Sort. 11.1.2. Сохранение Результатов Сортировки. 11.1.3. Тестовый Файл. 11.1.4. Индексация Полей. 11.1.5. Проверка Факта Сортировки Файла. 11.1.6. Простейшая Сортировка. 11.1.7. Сортировка А Обратном Порядке. 11.1.8. Сортировка По Заданному Полю. 11.1.9. Сортировка По Числовому Полю. 11.1.10. Сортировка С Отбрасыванием Повторяющихся Строк. 11.1.11. Задание Ключа Сортировки С Помощью Опции -K. 11.1.12. Несколько Ключей Сортировки. 11.1.13. Указание Позиции, С Которой Начинается Сортировка. 11.1.14. Обработка Результатов Сортировки С Помощью Команд Head И Tail. 11.1.15. Передача Результатов Сортировки Утилите Awk. 11.1.16. Объединение Двух Отсортированных Файлов. 11.1.17. Дополнительные Примеры Команды Sort. 11.2. Удаление Повторяющихся Строк С Помощью Команды Uniq. 11.2.1. Синтаксис. 11.2.2. Определение Количества Повторений. 11.2.3. Отображение Только Повторяющихся Строк. 11.2.4. Проверка Уникальности Отдельных Полей. 11.3. Объединение Файлов С Помощью Команды Join. 11.3.1. Объединение Двух Файлов. 11.3.2. Включение Несовпадающих Строк. 11.3.3. Задание Формата Вывода. 11.3.4. Выбор Ключевого Поля. 11.4. Вырезание Текста С Помощью Команды Cut. 11.4.1. Задание Разделителя Полей. 11.4.2. Вырезание Отдельных Символов. 11.5. Вставка Текста С Помощью Команды Paste. 11.5.1. Определение Порядка Вставки Столбцов. 11.5.2. Выбор Разделителя Полей. 11.5.3. Слияние Строк. 11.5.4. Чтение Данных И» Стандартного Входного Потока. 11.6. Разделение Файла На Части С Помощью Команды Split. 11.7. Заключение. Глава 12 Утилита Tr. 12.1. Применение Утилиты Tr. 12.1.1. Диапазоны Символов. 12.1.2. Сохранение Выходного Результата. 12.1.3. Устранение Повторяющихся Символов. 12.1.4. Удаление Пустых Строк. 12.1.5. Преобразование Прописных Букв В Строчные. 12.1.6. Преобразование Строчных Букв В Прописные. 12.1.7. Удаление Определенных Символов. 12.1.8. Преобразование Управляющих Символов. 12.1.9. Быстрые Преобразования. 12.1.10. Сравнение С Несколькими Символами. 12.2. Заключение. Часть 3. Глава 13. 13.1. Файл /Etc/Profile. 13.2. Пользовательский Файл $Номе/.Profile. 13.4. Создание Файла .Logout. 13.5. Заключение. Глава 14. 14.1. Понятие О Переменных Интерпретатора Shell. 14.2. Локальные Переменные. 14.2.1. Отображение Значения Переменной. 14.2.2. Удаление Значения Переменной. 14.2.3. Отображение Значений Всех Переменных Интерпретатора Shell. 14.2.4. Объединение Значений Переменных. 14.2.5. Проверка На Наличие Значения Переменной (Подстановка). 14.2.6. Применение Переменных, Содержащих Аргументы Системных Команд. 14.2.7. Как Сделать Переменную Доступной Только Для Чтения. 14.3. Переменные Среды. 14.3.1. Присваивание Значений Переменным Среды. 14.3.2. Отображение Значений Переменных Среды. 14.3.3. Удаление Значений Переменных Среды. 14.3.4. Встроенные Переменные Интерпретатора Shell. 14.3.5. Другие Переменные Среды. 14.3.6. Применение Команды Set. 14.3.7. Экспорт Переменных В Дочерние Процессы. 14.4. Позиционные Параметры Командной Строки. 14.4.1. Применение В Сценариях Позиционных Параметров. 14.4.2. Передача Параметров В Системные Команды. 14.4.3. Специальные Параметры. 14.4.4. Код Завершения Последней Команды. 14.5. Заключение. Глава 15. 15.1. Правила Применения Кавычек. 15.3. Одинарные Кавычки. 15.4. Обратные Кавычки. 15.5. Обратная Косая Черта. 15.6. Заключение. Часть 4. Глава 16. 16.1. Зачем Создаются Shell–Сценарии. 16.1.1. Не Отказывайтесь От Новых Идей. 16.2. Структура Сценария. 16.3. Выполнение Сценария. 16.4. Заключение. Глава 17. 17.1. Проверка Прав Доступа К Файлу. 17.2. Применение Логических Операторов При Осуществлении Проверки. 17.3. Проверка Строк. 17.4. Проверка Чисел. 17.5. Применение Команды Expr. 17.5.1. Приращение Переменной Цикла. 17.5.2. Проверка Численных Значений. 17.5.3. Поиск По Шаблону. 17.6. Заключение. Глава 18. 18.1. Коды Завершения. 18.2. Управляющие Конструкции. 18.2.1. Операторы, Изменяющие Ход Выполнения Сценария. 18.2.2. Циклические Операторы. 18.3. Операторы If Then Else. 18.3.1. Простые Операторы If. 18.3.2. Проверка Значений Переменных. 18.3.3. Проверка Вывода Команды Grep. 18.3.4. Проверка Вывода Команды Grep С Помощью Переменной. 18.3.5. Проверка Результата Копирования Файла. 18.3.6. Проверка Текущего Каталога. 18.3.7. Проверка Прав Доступа К Файлу. 18.3.8. Проверка Параметров, Передаваемых Сценарию. 18.3.9. Определение Интерактивного Режима Выполнения Сценария. 18.3.10. Простые Операторы If Else. 18.3.11. Проверка Установок Переменных. 18.3.12. Проверка Пользователя, Выполняющего Сценарий. 18.3.13. Передача Параметров Сценария Системной Команде. 18.3.14. Применение Команды Null. 18.3.15. Проверка На Предмет Создания Каталога. 18.3.16. Другие Возможности Копирования. 18.3.17. Применение Нескольких Операторов If. 18.3.18. Проверка И Установка Переменных Среды. 18.3.19. Проверка Кода Завершения Последней Команды. 18.3.20. Добавление И Проверка Целых Значений. 18.3.21. Простой Сценарий, Обеспечивающий Безопасность При Регистрации. 18.3.22. Применение Elif. 18.3.23. Несколько Проверок, Реализуемых С Помощью Elif. 18.4. Оператор Case. 18.4.1. Простой Оператор Case. 18.4.2. Применение Символа | При Поиске По Шаблону. 18.4.3. Приглашение Для Ввода Y Или N. 18.4.4. Оператор Case И Передача Командных Параметров. 18.4.5. Прием Потока Ввода Без Применения Шаблонных Команд. 18.4.6. Значения Переменных, Заданные По Умолчанию. 18.5. Цикл For. 18.5.1. Простой Цикл For. 18.5.2. Вывод На Экран Строки Списка. 18.5.3. Использование Команды Ls Совместно С Циклом For. 18.5.4. Применение Параметров Вместе С Циклом For. 18.5.5. Посылка Сигналов Серверам С Помощью Цикла For. 18.5.6. Создание Резервных Копий Файлов С Помощью Цикла For. 18.5.7. Массовое Преобразование. 18.5.8. Удаления, Выполняемые С Помощью Редактора Sed. 18.5.9. Подсчет С Помощью Циклов. 18.5.10. Циклы For Для Обработки Документов. 18.5.11. Вложенные Циклы For. 18.6. Цикл Until. 18.6.1. Простой Цикл Until. 18.6.2. Контроль Наличия Файла. 18.6.3. Мониторинг Дисковой Памяти. 18.7. Цикл While. 18.7.1. Простой Цикл While. 18.7.2. Применение Цикла While При Вводе С Клавиатуры. 18.7.3. Применения Цикла While Для Считывания Данных Из Файлов. 18.7.4. Считывание Данных Из Файлов С Помощью Ifs. 18.7.5. Обработка Файла С Помощью Проверок Условий. 18.7.6. Выполнение Суммирования. 18.7.7. Одновременный Просмотр Двух Записей. 18.7.8. Игнорирование Символа # 18.7.9. Работа С Форматированными Отчетами. 18.7.10. Цикл While И Дескрипторы Файлов. 18.8. Управление Ходом Выполнения Циклов С Помощью Команд Break И Continue. 18.8.1. Команда Break. 18.8.2. Прекращение Выполнения Оператора Case. 18.8.3. Команда Continue. 18.8.4. Пропуск Строк В Файлах. 18.9. Меню. 18.10. Заключение. Глава 19. 19.1. Объявление Функций В Сценарии. 19.2. Использование Функций В Сценарии. 19.3. Передача Параметров Функции. 19.4. Возврат Значения Функции. 19.5. Проверка Значений, Возвращаемых Функцией. 19.6. Файл Функций. 19.7. Создание Файла Функций. 19.8. Подключение Файла Функций. 19.9. Проверка Загруженных Функций. 19.10. Вызов Функций Интерпретатора Shell. 19.10.1. Удаление Shell–Функций. 19.10.2. Редактирование Shell–Функций. 19.10.3. Примеры Функций. 19.10.4. Подведение Итогов. 19.11. Вызов Функций. 19.11.1. Вызов Функций, Размещенных В Сценариях. 19.11.2. Вызов Функций Из Файла Функций. 19.12. Загрузка Файлов, Которые Состоят Не Только Из Функций. 19.13. Заключение. Глава 20. 20.1. Команда Shift. 20.1.1. Простой Способ Использования Команды Shift. 20.1.2. Последний Параметр Командной Строки. 20.1.3. Преобразования Файла С Помощью Команды Shift. 20.2. Команда Getopts. 20.2.1. Пример Сценария, Использующего Команду Getopts. 20.2.2. Принцип Работы Команды Getopts. 20.2.3. Указание Значений Опций С Помощью Команды Getopts. 20.2.4. Доступ К Значениям. 20.2.5. Использование Команды Getopts Для Преобразования Файлов. 20.3. Заключение. Глава 21. 21.1. Применение Команды Tput. 21.1.1. Строчный Поток Вывода Данных. 21.1.2. Числовой Вывод. 21.1.3. Поток Вывода Булевых Данных. 21.2. Работа С Командой Tput. 21.2.1. Присвоение Имен Командам Tput. 21.2.2. Применение Булевого Потока Вывода. 21.2.3. Использование Команды Tput В Сценариях. 21.2.4. Генерирование Escape–Последовательностей. 21.2.5. Изменение Положения Курсора. 21.2.6. Центрирование Отображаемого Текста. 21.2.7. Определение Атрибутов Терминала. 21.2.8. Применение Функциональных Клавиш При Работе Со Сценариями. 21.2.9. Применение Различных Цветов. 21.2.10. Генерирование Цветов. 21.2.11. Улучшение Внешнего Вида Меню. 21.3. Заключение. Глава 22. 22.1. Добавление Записей. 22.2. Удаление Записей. 22.3. Обновление Записей. 22.4. Просмотр Записей. 22.5. Заключение. Глава 23. 23.1. Наиболее Распространенные Ошибки. 23.1.1. Ошибки, Связанные С Циклом. 23.1.2. Как Обычно Пропускают Кавычки. 23.1.3. Проверка На Наличие Ошибки. 23.1.4. Регистр Символов. 23.1.5. Циклы For. 23.1.6. Команда Echo. 23.2. Команда Set. 23.3. Заключение. Глава 24. 24.1. Полный Список Команд, Встроенных В Интерпретатор Shell. 24.1.1. Команда Pwd. 24.1.2. Команда Set. 24.1.3. Команда Times. 24.1.4. Команда Type. 24.1.5. Команда Ulimit. 24.1.6. Команда Wait. 24.2. Заключение. Часть 5. Глава 25. 25.1 Быстрый Метод Формирования Файла. 25.2. Скоростной Способ Вывода Документа На Печать. 25.3. Автоматизация Меню. 25.4. Автоматизация Передачи Файлов По Протоколу Ftp. 25.5. Организация Доступа К Базам Данных. Глава 26. 26.1. Создание Регистрационных Файлов. 26.1.1. Применение Команды Date Для Создания Журнальных Файлов. 26.1.2. Создание Уникальных Временных Файлов. 26.2. Сигналы. 26.2.1. Уничтожение Процесса. 26.2.2. Обнаружение Сигнала. 26.3. Команда Trap. 26.3.1. Перехват Сигналов И Выполнение Действий. 26.3.2. Захват Сигнала И Выполнение Действий. 26.3.3. Блокировка Терминала. 26.3.4. Игнорирование Сигналов. 26.4. Команда Eval. 26.4.1. Выполнение Команд, Находящихся В Строке. 26.4.2. Присвоение Значения Имени Переменной. 26.5. Команда Logger. 26.5.1. Использование Команды Logger. 26.5.2. Использование Команды Logger В Сценариях. 26.6. Заключение. Глава 27. 27.1. Сценарий Pingall. 27.2. Сценарий Backup_Gen. 27.3. Сценарий Del.Lines. 27.4. Сценарий Access.Deny. 27.5. Сценарий Logroll. 27.6. Сценарий Nfsdown. 27.7. Заключение. Глава 28. 28.1. Определение Наличия Каталогов Уровня Выполнения. 28.2. Уточнение Текущего Уровня Выполнения. 28.3. Ускорение Работы С Помощью Файла Inittab. 28.4. Переходим К Уровням Выполнения. 28.4.1. Различные Уровни Выполнения. 28.4.2. Формат Сценария Уровня Выполнения. 28.4.3. Инсталляция Сценария Уровня Выполнения. 28.5. Использование Файла Inittab Для Запуска Приложений. 28.6. Другие Методы, Применяемые Для Запуска И Останова Служб. 28.7. Заключение. Глава 29. 29.1. Определение Web–Страницы. 29.2. Протокол Cgi. 29.3. Подключение К Web–Серверу. 29.4. Сценарии Cgi И Htm. 29.4.1. Базовый Сценарий Cgi. 29.4.2. Отображение Вывода Команды Интерпретатора Shell. 29.4.3. Использование Ssi. 29.4.4. Счетчик Количества Посещений. 29.4.5. Вывод На Печать Текущих Настроек Web–Среды С Помощью Ссылки. 29.4.6. Другие Общие Переменные Среды. 29.5. Введение В Методы Get И Post. 29.5.1. Метод Get. 29.5.2. Метод Post. 29.5.3. Заполнение Списка. 29.5.4. Автоматическое Обновление Web–Страницы. 29.6. Заключение. Приложение А Коды Ascii. Приложение Б. Basename. Cat. Compress. Cp. Diff. Dircmp. Dirname. Du. File. Fuser. Head. Mkdir. More. Nl. Printf. Pwd. Rm. Rmdir. Script. Shutdown. Sleep. Strings. Touch. Tty. Uname. Uncompress. Wait. Wc. Whereis. Who.
Параллельное и распределенное программирование на С++
Этапы Большого Пути. Подход. Почему Именно С++ Библиотеки Для Параллельного И Распределенного Программирования. Новый Единый Стандарт Спецификаций Unix. Для Кого Написана Эта Книга. Среды Разработки. Дополнительный Материал. Диаграммы Uml. Профили Программы. Параграфы. Тестирование Кода И Его Надежность. Ждем Ваших Отзывов! Благодарности. Преимущества Параллельного Программирования. Что Такое Параллелизм. Два Основных Подхода К Достижению Параллельности. Преимущества Параллельного Программирования. Простейшая …Модель Параллельного Программирования (Pram). Простейшая Классификация Схем Параллелизма. Преимущества Распределенного Программирования. Простейшие Модели Распределенного Программирования. Мультиагентные Распределенные Системы. Минимальные Требования. Декомпозиция. Связь. Синхронизация. Базовые Уровни Программного Параллелизма. Параллелизм На Уровне Инструкций. Параллелизм На Уровне Подпрограмм. Параллелизм На Уровне Объектов. Параллелизм На Уровне Приложений. Отсутствие Языковой Поддержки Параллелизма В С++ Варианты Реализации Параллелизма С Помощью С++ Стандарт Mpi. Pvm: Стандарт Для Кластерного Программирования. Стандарт Corba. Реализации Библиотек На Основе Стандартов. Среды Для Параллельного И Распределенного Программирования. Резюме. Проблемы Параллельного И Распределенного Программирования. Кардинальное Изменение Парадигмы. Проблемы Координации. Проблема № 1 : «Гонка» Данных. Проблема № 2: Бесконечная Отсрочка. Проблема №3: Взаимоблокировка. Проблема №4: Трудности Организации Связи. Отказы Оборудования И Поведение По. Негативные Последствия Излишнего Параллелизма И Распределения. Выбор Архитектуры. Различные Методы Тестирования И Отладки. Связь Между Параллельным И Распределенным Проектами. Резюме. Разбиение С++ Программ На Множество Задач. Определение Процесса. Два Вида Процессов. Блок Управления Процессами. Анатомия Процесса. Состояния Процессов. Планирование Процессов. Стратегия Планирования. Использование Утилиты Ps. Установка И Получение Приоритета Процесса. Переключение Контекста. Создание Процесса. Отношения Между Родительскими И Сыновними Процессами. Утилита Pstree. Использование Системной Функции Fork(). Использование Семейства Системных Функций Exec. Функции Execl (). Функции Execv (). Определение Ограничений Для Функций Exec (). Чтение И Установка Переменных Среды. Использование Posix-Функций Для Порождения Процессов. Идентификация Родительских И Сыновних Процессов С Помощью Функций Управления Процессами. Завершение Процесса. Функции Exit (), Kill () И Abort (). Ресурсы Процессов. Типы Ресурсов. Posix-Функции Для Установки Ограничений Доступа К Ресурсам. Асинхронные И Синхронные Процессы. Создание Синхронных И Асинхронных Процессов С Помощью Функций Fork (), Exec (), System () И Posix_Spawn(). Функция Wait (). Разбиение Программы На Задачи. Линии Видимого Контура. Резюме. Разбиение C++ Программ На Множество Потоков. Определение Потока. Контекстные Требования Потока. Сравнение Потоков И Процессов. Различия Между Потоками И Процессами. Потоки, Управляющие Другими Потоками. Преимущества Использования Потоков. Переключение Контекста При Низкой (Ограниченной) Доступности Процессора. Возможности Повышения Производительности Приложения. Простая Схема Взаимодействия Между Параллельно Выполняющимися Потоками. Упрощение Структуры Программы. Недостатки Использования Потоков. Потоки Могут Легко Разрушить Адресное Пространство Процесса. Один Поток Может Ликвидировать Целую Программу. Потоки Не Могут Многократно Использоваться Другими Программами. Анатомия Потока. Атрибуты Потока. Планирование Потоков. Состояния Потоков. Планирование Потоков И Область Конкуренции. Стратегия Планирования И Приоритет. Изменение Приоритета Потоков. Ресурсы Потоков. Модели Создания И Функционирования Потоков. Модель Делегирования. Модель С Равноправными Узлами. Модель Конвейера. Модель «Изготовитель-Потребитель». Модели Spmd И Мрмd Для Потоков. Введение В Библиотеку Pthread. Анатомия Простой Многопоточной Программы. Компиляция И Компоновка Многопоточных Программ. Создание Потоков. Получение Идентификатора Потока. Присоединение Потоков. Создание Открепленных Потоков. Использование Объекта Атрибутов. Создание Открепленных Потоков С Помощью Объекта Атрибутов. Управление Потоками. Завершение Потоков. Точки Аннулирования Потоков. Очистка Перед Завершением. Управление Стеком Потока. Установка Атрибутов Планирования И Свойств Потоков. Установка Области Конкуренции Потока. Использование Функции Sysconf (). Управление Критическими Разделами. Безопасность Использования Потоков И Библиотек. Разбиение Программы На Несколько Потоков. Использование Модели Делегирования. Использование Модели Сети С Равноправными Узлами. Использование Модели Конвейера. Использование Модели «Изготовитель-Потребитель». Создание Многопоточных Объектов. Резюме. Синхронизация Параллельно Выполняемых Задач. Координация Порядка Выполнения Потоков. Взаимоотношения Между Синхронизируемыми Задачами. Отношения Типа Старт-Старт (CC). Отношения Типа Финиш-Старт (Фс). Отношения Типа Старт-Финиш (Сф). Отношения Типа Финиш-Финиш (Фф). Синхронизация Доступа К Данным. Модель Ррам. Параллельный И Исключающий Доступ К Памяти. Что Такое Семафоры. Операции По Управлению Семафором. Мьютексные Семафоры. Использование Мьютексного Атрибутного Объекта. Использование Мьютексных Семафоров Для Управления Критическими Разделами. Блокировки Для Чтения И Записи. Использование Блокировок Чтения-Записи Для Реализации Стратегии Доступа. Условные Переменные. Использование Условных Переменных Для Управления Отношениями Синхронизации. Объектно-Ориентированный Подход К Синхронизации. Резюме. Объединение Возможностей Параллельного Программирования И C++ Средств На Основе Pvm. Классические Модели Параллелизма, Поддерживаемые Системой Pvm. Библиотека Pvm Для Языка С++ Компиляция И Компоновка C++/Pvm-Nрограмм. Выполнение Pvm-Программы В Виде Двоичного Файла. Запуск Pvm-Программ C Помощью Pvm-Консоли. Запуск Pvm-Программ C Помощью Xpvm. Требования К Pvm-Программам. Объединение Динамической С++-Библиотеки C Библиотекой Pvm. Методы Использования Pvm-Задач. Реализация Модели Spmd (Simd) C Помощью Pvm-И С++-Средств. Реализация Модели Mpmd (MIMD) С Помощью Pvm-И С++-Средств. Базовые Механизмы Pvm. Функции Управления Процессами. Упаковка И Отправка Сообщений. Доступ К Стандартному Входному Потоку (Stdin) И Стандартному Выходному Потоку (Stdout) Со Стороны Pvm-Задач. Получение Доступа К Стандартному Выходному Потоку (Cout) Из Сыновней Задачи. Резюме. Обработка Ошибок, Исключительных Ситуаций И Надежность Программного Обеспечения. Надежность Программного Обеспечения. Отказы В Программных И Аппаратных Компонентах. Определение Дефектов В Зависимости От Спецификаций По. Обработка Ошибок Или Обработка Исключительных Ситуаций? Надежность По: Простой План. План А: Модель Возобновления, План Б: Модель Завершения. Использование Объектов Отображения Для Обработки Ошибок. Механизмы Обработки Исключительных Ситуаций В С++ Классы Исключений. Классы Runtime__Error. Классы Logic_Error. Выведение Новых Классов Исключений. Защита Классов Исключений От Исключительныхситуаций. Диаграммы Событий, Логические Выражения И Логические Схемы. Резюме. Распределенное Объектно-Ориентированное Программирование. Декомпозиция Задачи И Инкапсуляция Ее Решения. Взаимодействие Между Распределенными Объектами. Синхронизация Взаимодействия Локальных И Удаленных Объектов. Обработка Ошибок И Исключений В Распределенной Среде. Доступ К Объектам Из Других Адресных Пространств. . Ior-Доступ К Удаленным Объектам. Брокеры Объектных Запросов (Orb). Язык Описания Интерфейсов (IDL):Более «Пристальный» Взгляд На Corba-Объекты. Анатомия Базовой Corba-Программы Потребителя. Анатомия Базовой Corba-Программы Изготовителя. Базовый Nроект Corba-Приложения. IDL-Компилятор. Получение Ior-Ссылки Для Удаленных Объектов. Служба Имен. Использование Службы Имен И Создание Именных Контекстов. Служба Имен «Потребитель-Клиент». Подробнее Об Объектных Адаптерах. Хранилища Реализаций И Интерфейсов. Простые Расnределенные Web-Службы, Использующие Corba-Спецификацию. Маклерская Служба. Парадигма «Клиент-Сервер». Резюме. Реализация Моделей Spmd И Mpmd С Помощью Шаблонов И Mpi-Программирования. Декомпозиция Работ Для Mpi-Интерфейса. Дифференциация Задач По Рангу. Группирование Задач По Коммуникаторам. Анатомия Mpi-Задачи. Использование Шаблонных Функций Для Представления Mpi-Задач. Реализация Шаблонов И Модельбрмо (Типы Данных). Использование Полиморфизмадля Реализации Mpmd-Модели. Введение Mpmd-Модели C Помощью Функций -Объектов. Как Упростить Взаимодействие Между Mpi-Задачами. Перегрузка Операторов «<<» И «>>» Для Организации Взаимодействия Между Mpi-Задачами. Резюме. Визуализация Проектов Параллельных И Распределенных Систем. Визуализация Структур. Классы И Объекты. Отображение Информации Об Атрибутах И Операциях Класса. Организация Атрибутов И Операций. Шаблонные Классы. Отношения Между Классами И Объектами. Интерфейсные Классы. Организация Интерактивных Объектов. Отображение Параллельного Поведения. Сотрудничество Объектов. Процессы И Потоки. Отображение Нескольких Потоков Выполнения И Взаимодействия Между Ними. Последовательность Передачи Сообщений Между Объектами. Деятельность Объектов. Конечные Автоматы. Параллельные Подсостояния. Распределенные Объекты. Визуализация Всей Системы. Визуализация Развертывания Систем. Архитектура Системы. Резюме. Проектирование Компонентов Для Поддержки Параллелизма. Как Воспользоваться Преимуществами Интерфейсных Классов. Подробнее Об Объектно-Ориентированном Взаимном Исключении И Интерфейсных Классах. «Полуширокие» Интерфейсы. Поддержка Потокового Представления. Перегрузка Операторов "«" И "»" Для Pvm-Потоков Данных. Пользовательские Классы, Создаваемые Для Обработки Pvm-Потоков Данных. Объектно-Ориентированные Каналы И Fifo-Очереди Как Базовые Элементы Низкого Уровня. Связь Каналов C Iostream-Объектами С Помощью Дескрипторов Файлов. Доступ К Анонимным Каналам C Использованием Итератора Ostream_Iterator. Fifo-Очереди (Именованные Каналы), Интерфейсные Fifo-Классы. Каркасные Классы. Резюме. Реализация Агентно-Ориентированных Архитектур. Что Такое Агенты. Агенты: Исходное Определение. Типы Агентов. В Чем Состоит Разница Между Объектами И Агентами. Понятие Об Агентно-Ориентированном Программировании. Роль Агентов В Распределенном Программировании. Агенты И Параллельное Программирование. Базовые Компоненты Агентов. Когнитивные Структуры Данных. Методы Рассуждений. Реализация Агентов В С++ Типы Данных Предположений И Структуры Убеждений. Класс Агента. Цикл Активизации Агента. Простая Автономность. 12.6. Резюме. Реализация Технологии «Классной Доски» С Использованием Pvm-Средств, Потоков И Компонентов. Модель «Классной Доски». Методы Структурирования «Классной Доски». Анатомия Источника Знаний. Стратегии Управления Для «Классной Доски». Реализация Модели «Классной Доски» С Помощью Corba-Объектов. Пример Использования Corba-Объекта «Классной Доски». Реализация Интерфейсного Класса Black_Board. Порождение Источников Знаний В Конструкторе «Классной Доски». Порождение Источников Знаний С Помощью Pvm-Задач. Связь «Классной Доски» И Источников Знаний. Активизация Источников Знаний С Помощью Posix-Функции Spawn(). Реализация Модели «Классной Доски» С Помощью Глобальных Объектов. Активизация Источников Знаний С Помощью Потоков. Резюме. Приложение A. Диаграммы Классов И Объектов. Диаграммы Взаимодейс Т Вия. Диаграммы Сотрудничества. Диаграммы Последовательностей. A.2.3. Диаграммы Видов Деятельности. A.3. Диаграммы Состояний. A.4. Диаграммы Пакетов. Приложение Б [26]. Posix_Spawn, Posix_Spawnp. Posix_Spawn_File_Actions_Addclose, Posix_Spawn_File_Actions_Addopen. Posix_Spawn_File_Actions_Adddup2. Posix_Spawn_File_Actions_Destroy, Posix_Spawn_File_Actions_Init. Posix_Spawnattr_Destroy, Posix_Spawnattr_Init. Posix_Spawnattr_Getflags, Posix_Spawnattr_Setflags. Posix_Spawnattr_Getpgroup, Posix_Spawnattr_Setpgroup. Posix_Spawnattr_Getschedparam, Posix_Spawnattr_Setschedparam. Posix_Spawnattr_Getschedpolicy, Posix_Spawnattr_Setschedpolicy. Posix_Spawnattr_Getsigdefault, Posix_Spawnattr_Setsigdefault. Posix_Spawnattr_Getsigmask, Posix_Spawnattr_Setsigmask. Pthread_Attr_Destroy, Pthread_Attr_Init. Pthread_Attr_Getdetachstate, Pthread_Attr__Setdetachstate. Pthread_Attr_Getguardsize, Pthread_Attr_Setguardsize. Pthread_Attr_Getinheritsched, Pthread_Attr_Setinheritsched. Pthread_Attr_Getschedparam, Pthread_Attr_Setschedparam. Pthread_Attr_Getschedpolicy, Pthread_Attr_Setschedpolicy. Pthread_Cancel. Pthread_Cleanup_Pop, Pthread_Cleanup_Push. Pthread_Cond_Broadcast(),Pthread_Cond_Signal(). Pthread_Cond_Destroy, Pthread_Cond_Init. Pthread_Cond_Timedwait, Pthread_Cond_Wait. Pthread_Condattr_Destroy, Pthread_Condattr_Init. Pthread_Condattr_Getpshared, Pthread_Condattr_Setpshared. Pthread_Create. Pthread_Detach. Pthread_Exit. Pthread_Getconcurrency, Pthread_Setconcurrency. Pthread_Getschedparam, Pthread_Setschedparam. Pthread_Join. Pthread_Mutex_Destroy, Pthread_Mutex_Init. Pthread_Mutex_Getprioceiling, Pthread_Mutex_Setprioceiling. Pthread_Mutex_Lock, Pthread_Mutex_Trylock, Pthread_Mutex_Unlock. Pthread_Mutex_Timedlock. Pthread_Mutexattr_Destroy. Pthread_Mutexattr_Getprioceiling, Pthread_Mutexattr_Setprioceiling. Pthread_Mutexattr_Setprotocol, Pthread_Mutexattr_Getprotocol. Pthread_Mutexattr_Getpshared, Pthread_Mutexattr_Setpshared. Pthread_Mutexattr_Gettype, Pthread_Mutexattr_Settype. Pthread_Once. Pthread_Rwlock_Destroy, Pthread_Rwlock_Init. Pthread_Rwlock_Rdlock, Pthread_Rwlock_Tryrdlock. Pthread_Rwlock_Timedrdlock. Pthread_Rwlock_Timedwrlock. Pthread_Rwlock_Trywrlock, Pthread_Rwlock_Wrlock. Pthread_Rwlock_Unlock. Pthread_Rwlockattr_Destroy, Pthread_Rwlockattr_Init. Pthread_Rwlockattr_Getpshared, Pthread_Rwlockattr_Setpshared. Pthread_Self. Pthread_Setcancelstate, Pthread_Setcanceltype, Pthread_Testcancel. Pthread_Setschedprio.
Параллельное программирование на С++ в действии. Практика разработки многопоточных программ.
Глава 1. Здравствуй, Параллельный Мир! В Этой Главе: 1.1. Что Такое Параллелизм? 1.1.1. Параллелизм В Вычислительных Системах. 1.1.2. Подходы К Организации Параллелизма. Параллелизм За Счет Нескольких Процессов. Параллелизм За Счет Нескольких Потоков. 1.2. Зачем Нужен Параллелизм? 1.2.1. Применение Параллелизма Для Разделения Обязанностей. 1.2.2. Применение Параллелизма Для Повышения Производительности. 1.2.3. Когда Параллелизм Вреден? 1.3. Параллелизм И Многопоточность В С++ 1.3.1. История Многопоточности В …С++ 1.3.2. Поддержка Параллелизма В Новом Стандарте. 1.3.3. Эффективность Библиотеки Многопоточности Для С++ 1.3.4. Платформенно-Зависимые Средства. 1.4. В Начале Пути. 1.4.1. Здравствуй, Параллельный Мир. 1.5. Резюме. Глава 2. Управление Потоками. В Этой Главе: 2.1. Базовые Операции Управления Потоками. 2.1.1. Запуск Потока. 2.1.2. Ожидание Завершения Потока. 2.1.3. Ожидание В Случае Исключения. 2.1.4. Запуск Потоков В Фоновом Режиме. 2.2. Передача Аргументов Функции Потока. 2.3. Передача Владения Потоком. 2.4. Задание Количества Потоков Во Время Выполнения. 2.5. Идентификация Потоков. 2.6. Резюме. Глава 3. Разделение Данных Между Потоками. В Этой Главе: 3.1. Проблемы Разделения Данных Между Потоками. 3.1.1. Гонки. 3.1.2. Устранение Проблематичных Состояний Гонки. 3.2. Защита Разделяемых Данных С Помощью Мьютексов. 3.2.1. Использование Мьютексов В С++ 3.2.2. Структурирование Кода Для Защиты Разделяемых Данных. 3.2.3. Выявление Состояний Гонки, Внутренне Присущих Интерфейсам. Вариант 1: Передавать Ссылку. Вариант 2: Потребовать Наличия Копирующего Конструктора, Не Возбуждающего Исключений, Или Перемещающего Конструктора. Вариант 3: Возвращать Указатель На Вытолкнутый Элемент. Вариант 4: Реализовать Одновременно Вариант 1 И Один Из Вариантов 2 Или 3. 3.2.4. Взаимоблокировка: Проблема И Решение. 3.2.5. Дополнительные Рекомендации, Как Избежать Взаимоблокировок. Избегайте Вложенных Блокировок. Старайтесь Не Вызывать Пользовательский Код, Когда Удерживаете Мьютекс. Захватывайте Мьютексы В Фиксированном Порядке. Пользуйтесь Иерархией Блокировок. Применение Данных Рекомендаций Не Ограничивается Блокировками. 3.2.6. Гибкая Блокировка С Помощью Std::Unique_Lock. 3.2.7. Передача Владения Мьютексом Между Контекстами. 3.2.8. Выбор Правильной Гранулярности Блокировки. 3.3. Другие Средства Защиты Разделяемых Данных. 3.3.1. Защита Разделяемых Данных Во Время Инициализации. 3.3.2. Защита Редко Обновляемых Структур Данных. 3.3.3. Рекурсивная Блокировка. 3.4. Резюме. Глава 4. Синхронизация Параллельных Операций. В Этой Главе: 4.1. Ожидание События Или Иного Условия. 4.1.1. Ожидание Условия С Помощью Условных Переменных. 4.1.2. Потокобезопасная Очередь На Базе Условных Переменных. 4.2. Ожидание Одноразовых Событий С Помощью Механизма Будущих Результатов. 4.2.1. Возврат Значения Из Фоновой Задачи. 4.2.2. Ассоциирование Задачи С Будущим Результатом. Передача Задач Между Потоками. 4.2.3. Использование Std::Promise. 4.2.4. Сохранение Исключения В Будущем Результате. 4.2.5. Ожидание В Нескольких Потоках. 4.3. Ожидание С Ограничением По Времени. 4.3.1. Часы. 4.3.2. Временные Интервалы. 4.3.3. Моменты Времени. 4.3.4. Функции, Принимающие Таймаут. 4.4. Применение Синхронизации Операций Для Упрощения Кода. 4.4.1. Функциональное Программирование С Применением Будущих Результатов. Быстрая Сортировка В Духе Фп. Параллельная Реализация Quicksort В Духе Фп. 4.4.2. Синхронизация Операций С Помощью Передачи Сообщений. 4.5. Резюме. Глава 5. Модель Памяти С++ И Атомарные Операции. В Этой Главе: 5.1. Основы Модели Памяти. 5.1.1. Объекты И Ячейки Памяти. 5.1.2. Объекты, Ячейки Памяти И Параллелизм. 5.1.3. Порядок Модификации. 5.2. Атомарные Операции И Типы В С++ 5.2.1. Стандартные Атомарные Типы. 5.2.2. Операции Над Std::Atomic_Flag. 5.2.3. Операции Над Std::Atomic<Bool> Сохранение (Или Несохранение) Нового Значения В Зависимости От Текущего. 5.2.4. Операции Над Std::Atomic<T*>: Арифметика Указателей. 5.2.5. Операции Над Стандартными Атомарными Целочисленными Типами. 5.2.6. Основной Шаблон Класса Std::Atomic<> 5.2.7. Свободные Функции Для Атомарных Операций. 5.3. Синхронизация Операций И Принудительное Упорядочение. 5.3.1. Отношение Синхронизируется-С. 5.3.2. Отношение Происходит-Раньше. 5.3.3. Упорядочение Доступа К Памяти Для Атомарных Операций. Последовательно Согласованное Упорядочение. Не Последовательно Согласованное Упорядочение Доступа К Памяти. Ослабленное Упорядочение. Механизм Ослабленного Упорядочения. Упорядочение Захват-Освобождение. Транзитивная Синхронизация С Помощью Упорядочения Захват-Освобождение. Зависимости По Данным, Упорядочение Захват-Освобождение И Семантика Memory_Order_Consume. 5.3.4. Последовательности Освобождений И Отношение Синхронизируется-С. 5.3.5. Барьеры. 5.3.6. Упорядочение Неатомарных Операций С Помощью Атомарных. 5.4. Резюме. Глава 6. Проектирование Параллельных Структур Данных С Блокировками. В Этой Главе: 6.1. Что Понимается Под Проектированием Структур Данных, Рассчитанных На Параллельный Доступ? 6.1.1. Рекомендации По Проектированию Структур Данных Для Параллельного Доступа. 6.2. Параллельные Структуры Данных С Блокировками. 6.2.1. Потокобезопасный Стек С Блокировками. 6.2.2. Потокобезопасная Очередь С Блокировками И Условными Переменными. 6.2.3. Потокобезопасная Очередь С Мелкогранулярными Блокировками И Условными Переменными. Обеспечение Параллелизма За Счет Отделения Данных. Ожидание Поступления Элемента. 6.3. Проектирование Более Сложных Структур Данных С Блокировками. 6.3.1. Разработка Потокобезопасной Справочной Таблицы С Блокировками. Проектирование Структуры Данных Для Справочной Таблицы С Мелкогранулярными Блокировками. 6.3.2. Потокобезопасный Список С Блокировками. 6.4. Резюме. Глава 7. Проектирование Параллельных Структур Данных Без Блокировок. В Этой Главе: 7.1. Определения И Следствия Из Них. 7.1.1. Типы Неблокирующих Структур Данных. 7.1.2. Структуры Данных, Свободные От Блокировок. 7.1.3. Структуры Данных, Свободные От Ожидания. 7.1.4. Плюсы И Минусы Структур Данных, Свободных От Блокировок. 7.2. Примеры Структур Данных, Свободных От Блокировок. 7.2.1. Потокобезопасный Стек Без Блокировок. 7.2.2. Устранение Утечек: Управление Памятью В Структурах Данных Без Блокировок. 7.2.3. Обнаружение Узлов, Не Подлежащих Освобождению, С Помощью Указателей Опасности. Более Быстрые Стратегии Освобождения С Применением Указателей Опасности. 7.2.4. Нахождение Используемых Узлов С Помощью Подсчета Ссылок. 7.2.5. Применение Модели Памяти К Свободному От Блокировок Стеку. 7.2.6. Потокобезопасная Очередь Без Блокировок. Решение Проблемы Нескольких Потоков В Push(). Освобождение От Блокировок Одного Потока С Помощью Другого. 7.3. Рекомендации По Написанию Структур Данных Без Блокировок. 7.3.1. Используйте Std::Memory_Order_Seq_Cst Для Создания Прототипа. 7.3.2. Используйте Подходящую Схему Освобождения Памяти. 7.3.3. Помните О Проблеме Aba. 7.3.4. Выявляйте Циклы Активного Ожидания И Помогайте Другим Потокам. Глава 8. Проектирование Параллельных Программ. В Этой Главе: 8.1. Методы Распределения Работы Между Потоками. 8.1.1. Распределение Данных Между Потоками До Начала Обработки. 8.1.2. Рекурсивное Распределение Данных. 8.1.3. Распределение Работы По Типам Задач. Распределение Работы По Типам Задач С Целью Разделения Обязанностей. Распределение Последовательности Задач Между Потоками. 8.2. Факторы, Влияющие На Производительность Параллельного Кода. 8.2.1. Сколько Процессоров? 8.2.2. Конкуренция За Данные И Перебрасывание Кэша. 8.2.3. Ложное Разделение. 8.2.4. Насколько Близки Ваши Данные? 8.2.5. Превышение Лимита И Чрезмерное Контекстное Переключение. 8.3. Проектирование Структур Данных Для Повышения Производительности Многопоточной Программы. 8.3.1. Распределение Элементов Массива Для Сложных Операций. 8.3.2. Порядок Доступа К Другим Структурам Данных. 8.4. Дополнительные Соображения При Проектировании Параллельных Программ. 8.4.1. Безопасность Относительно Исключений В Параллельных Алгоритмах. Делаем Код Безопасным Относительно Исключений. Обеспечение Безопасности Относительно Исключений При Работе С Std::Async(). 8.4.2. Масштабируемость И Закон Амдала. 8.4.3. Сокрытие Латентности С Помощью Нескольких Потоков. 8.4.4. Повышение Быстроты Реакции За Счет Распараллеливания. 8.5. Проектирование Параллельного Кода На Практике. 8.5.1. Параллельная Реализация Std::For_Each. 8.5.2. Параллельная Реализация Std::Find. 8.5.3. Параллельная Реализация Std::Partial_Sum. Реализация Прогрессивно-Попарного Алгоритма Вычисления Частичных Сумм. 8.6. Резюме. Глава 9. Продвинутое Управление Потоками. В Этой Главе: 9.1. Пулы Потоков. 9.1.1. Простейший Пул Потоков. 9.1.2. Ожидание Задачи, Переданной Пулу Потоков. 9.1.3. Задачи, Ожидающие Других Задач. 9.1.4. Предотвращение Конкуренции За Очередь Работ. 9.1.5. Занимание Работ. 9.2. Прерывание Потоков. 9.2.1. Запуск И Прерывание Другого Потока. 9.2.2. Обнаружение Факта Прерывания Потока. 9.2.3. Прерывание Ожидания Условной Переменной. 9.2.4. Прерывание Ожидания Std::Condition_Variable_Any. 9.2.5. Прерывание Других Блокирующих Вызовов. 9.2.6. Обработка Прерываний. 9.2.7. Прерывание Фоновых Потоков При Выходе Из Приложения. 9.3. Резюме. Глава 10. Тестирование И Отладка Многопоточных Приложений. В Этой Главе: 10.1. Типы Ошибок, Связанных С Параллелизмом. 10.1.1. Нежелательное Блокирование. 10.1.2. Состояния Гонки. 10.2. Методы Поиска Ошибок, Связанных С Параллелизмом. 10.2.1. Анализ Кода На Предмет Выявления Потенциальных Ошибок. Над Какими Вопросами Следует Задуматься При Анализе Многопоточного Кода. 10.2.2. Поиск Связанных С Параллелизмом Ошибок Путем Тестирования. 10.2.3. Проектирование С Учетом Тестопригодности. 10.2.4. Приемы Тестирования Многопоточного Кода. Тестирование Грубой Силой. Комбинаторное Имитационное Тестирование. Обнаружение Возникающих Во Время Тестирования Проблем С Помощью Специальной Библиотеки. 10.2.5. Структурирование Многопоточного Тестового Кода. 10.2.6. Тестирование Производительности Многопоточного Кода. 10.3. Резюме. Приложение А. Краткий Справочник По Некоторым Конструкциям Языка С++ А.1. Ссылки На R-Значения. A.1.1. Семантика Перемещения. А.1.2. Ссылки На R-Значения И Шаблоны Функций. А.2. Удаленные Функции. А.3. Умалчиваемые Функции. А.4. Constexpr-Функции. А.4.1. Constexpr И Определенные Пользователем Типы. А.4.2. Constexpr-Объекты. A.4.3. Требования К Constexpr-Функциям. А.4.4. Constexpr И Шаблоны. А.5. Лямбда-Функции. A.5.1. Лямбда-Функции, Ссылающиеся На Локальные Переменные. А.6. Шаблоны С Переменным Числом Параметров. A.6.1. Расширение Пакета Параметров. А.7. Автоматическое Выведение Типа Переменной. А.8. Поточно-Локальные Переменные. А.9. Резюме. Приложение В. Краткое Сравнение Библиотек Для Написания Параллельных Программ. Приложение С. Каркас Передачи Сообщений И Полный Пример Программы Банкомата. Приложение D. Справочник По Библиотеке С++ Thread Library. D.1. Заголовок <Chrono> D.1.1. Шаблон Класса Std::Chrono::Duration. D.1.2. Шаблон Класса Std::Chrono::Time_Point. D.1.3. Класс Std::Chrono::System_Clock. D.1.4. Класс Std::Chrono::Steady_Clock. D.1.5. Псевдоним Типа Std::Chrono::High_Resolution_Clock. D.2. Заголовок <Condition_Variable> D.2.1. Класс Std::Condition_Variable. D.2.2. Класс Std::Condition_Variable_Any. D.3. Заголовок <Atomic> D.3.1. Std::Atomic_XXX, Псевдонимы Типов. D.3.2. Atomic_XXX_Lock_Free, Макросы. D.3.3. Atomic_Var_Init, Макрос. D.3.4. Std::Memory_Order, Перечисление. D.3.5. Std::Atomic_Thread_Fence, Функция. D.3.6. Std::Atomic_Signal_Fence, Функция. D.3.7. Std::Atomic_Flag, Класс. D.3.8. Шаблон Класса Std::Atomic. D.3.9. Специализации Шаблона Std::Atomic. D.3.10. Специализации Std::Atomic<Integral-Type> D.4. Заголовок <Future> D.4.1. Шаблон Класса Std::Future. D.4.2. Шаблон Класса Std::Shared_Future. D.4.3. Шаблон Класса Std::Packaged_Task. D.4.4. Шаблон Класса Std::Promise. D.4.5. Шаблон Функции Std::Async. D.5. Заголовок <Mutex> D.5.1. Класс Std::Mutex. D.5.2. Класс Std::Recursive_Mutex. D.5.3. Класс Std::Timed_Mutex. D.5.4. Класс Std::Recursive_Timed_Mutex. D.5.5. Шаблон Класса Std::Lock_Guard. D.5.6. Шаблон Класса Std::Unique_Lock. D.5.7. Шаблон Функции Std::Lock. D.5.8. Шаблон Функции Std::Try_Lock. D.5.9. Класс Std::Once_Flag. D.5.10. Шаблон Функции Std::Call_Once. D.6. Заголовок <Ratio> D.6.1. Шаблон Класса Std::Ratio. D.6.2. Псевдоним Шаблона Std::Ratio_Add. D.6.3. Псевдоним Шаблона Std::Ratio_Subtract. D.6.4. Псевдоним Шаблона Std::Ratio_Multiply. D.6.5. Псевдоним Шаблона Std::Ratio_Divide. D.6.6. Шаблон Класса Std::Ratio_Equal. D.6.7. Шаблон Класса Std::Ratio_Not_Equal. D.6.8. Шаблон Класса Std::Ratio_Less. D.6.9. Шаблон Класса Std::Ratio_Greater. D.6.10. Шаблон Класса Std::Ratio_Less_Equal. D.6.11. Шаблон Класса Std::Ratio_Greater_Equal. D.7. Заголовок <Thread> D.7.1. Класс Std::Thread. D.7.2. Пространство Имен This_Thread. Ресурсы. Печатные Ресурсы. Сетевые Ресурсы. Благодарности. Об Этой Книге. Структура Книги. На Кого Рассчитана Эта Книга. Как Пользоваться Этой Книгой. Графические Выделения И Загрузка Исходного Кода. Требования К Программному Обеспечению. Автор В Сети.
Программирование — вторая грамотность.
Мир Эвм. Мир Программ. Общая Задача Обучения Программированию. Эвм В Школе. Заключение. Вернемся Снова К Отправной Точке Раскрытия Нашей Метафоры, Книгопечатанию, Более Точно, К Ее Продукту — Книге. Я Позволю Себе Сделать Небольшую Выдержку Из Энциклопедического Словаря, Поскольку Лаконичность Их Текстов Придает Им Особую Выразительность: Книга, Печатное Произведение (В Старое Время Также И Рукопись) В Форме Сброшюрованных И Переплетенных Вместе Печатных Листов... В Средние Века Книги Переписывались В Монастырях …Монахами И Имели, Главным Образом, Религиозный Характер. С Развитием Городов Сменившие Монахов Городские Писцы Переписывали И Светские Книги. Настоящий Поворот В Книжном Деле Произведен Книгопечатанием, Изобретенным В Середине 15-Го Века... Отливка Шрифтов, Изобретение Скоропечатающей Машины, Стереотипы, Применение Наборной И Ротационной Машин Превратили Книгу В Могучее Средство Распространения Знаний И Подъема Культуры
Программирование для карманных компьютеров.
Необходимое По. Глава 1. Pocket Pc С Разных Точек Зрения. Внутреннее Устройство Pocket Pc. Pocket Pc С Точки Зрения Программиста. Инструменты Программирования Для Pocket Pc. Глава 2. Общие Вопросы Программирования Для Pocket Pc. Эмулятор. Activesync. Cabwiz И Создание Установочного Комплекта. Mobile Developer Power Toys. Общие Вопросы Создания Интерфейса Пользователя. Глава 3. Разработка Программ Для Pocket Pc С Помощью Microsoft Embedded Visual Basic 3.0. Среда Разработки Embedded Visual Basic 3.0. Управление …Проектами. Файлы Проекта. Компиляция И Запуск Программы. Использование Встроенных Компонентов Evb. Использование Компонентов Activex. Поставка Приложений Evb. Создание Приложения Без Формы. Отладка Приложений В Evb. Глава 4. Разработка Программ Для Pocket Pc С Помощью Microsoft Embedded Visual C++ 3.0. Введение В Язык Или Первая Программа. Краткие Сведения О Языке C++ Среда Разработки Embedded Visual C++ 3.0. Дополнительные Сведения О Языке C++ Поставка Приложений. Глава 5. Разработка Программ Для Pocket Pc С Помощью Microsoft Embedded Visual С++ 4.0. Объектно-Ориентированное Программирование. Создание Проектов Mfc. Глава 6. Net Compact Framework И Разработка Программ Для Pocket Pc В Microsoft Visual Studio.Net 2003. Net И Compact Framework. Реализации. Net. Области Применения. Net. Три Класса Приложений. Net. Базовые Программные Элементы. Net. Compact Framework. Vb.Net: Основные Возможности И Отличия От Vb 6. Отличия Evb И Visual Basic Для. Net. Vb.Net Для Compact Framework. Глава 7. Инструменты И Библиотеки Сторонних Производителей. Среды И Языки Программирования Для Pocket Pc. Инструменты Для On-Board Программирования. Языки И Среды Работы С Java. Заключение.
Программирование КПК и смартфонов на .NET Compact Framework.
Мобильные Устройства. Общие Сведения. Развитие .Net Compact Framework. Что Нового В .Net Compact Framework 2.0. Что Нового В Visual Studio .Net 2005. Глава 2. Первое Приложение Для .Net Compact Framework. Первые Шаги. Примечание. Листинг 2.1. Кнопки Минимизации И Закрытия Формы. Размеры И Позиция Формы. Меню. Листинг 2.2. Панель Ввода Sip. Стилус Вместо Мыши. Глава 3. Элементы Управления. Сходство И Различия. Урезанная Функциональность Элементов Управления. Элемент Form. Свойство Formborderstyle. Свойство Controlbox.… Свойства Minimizebox И Maximizebox. Свойство Windowsstate. Размеры И Расположение Формы. Элементы Управления. Элемент Button. Листинг 3.1. Элемент Textbox. Листинг 3.2. Примечание. Элемент Label. Элемент Radiobutton. Листинг 3.3. Элемент Panel. Элемент Checkbox. Элемент Combobox. Листинг 3.4. Листинг 3.5. Внимание. Элемент Listbox. Листинг 3.6. Элемент Numericupdown. Листинг 3.7. Элемент Domainupdown. Листинг 3.8. Элемент Progressbar. Листинг 3.9. Элемент Statusbar. Листинг 3.10. Элемент Trackbar. Листинг 3.11. Элемент Toolbar. Листинг 3.12. Элемент Mainmenu. Листинг 3.13. Элемент Contextmenu. Внимание. Примечание. Элемент Timer. Элементы Openfiledialog И Savefiledialog. Листинг 3.14. Элементы Hscrollbar И Vscrollbar. Листинг 3.15. Список Рисунков (Imagelist). Листинг 3.16. Листинг 3.17. Элемент Picturebox. Листинг 3.18. Листинг 3.19. Листинг 3.20. Элемент Listview. Листинг 3.21. Элемент Tabcontrol. Листинг 3.22. Элемент Treeview. Элемент Inputpanel. Листинг 3.23. Листинг 3.24. Элемент Управления Datagrid. Листинг 3.25. Элемент Splitter. Элемент Monthcalendar. Листинг 3.26. Элемент Datetimepicker. Листинг 3.27. Элемент Documentlist. Листинг 3.28. Листинг 3.29. Элемент Notification. Листинг 3.30. Примечание. Элемент Hardwarebutton. Листинг 3.31. Примечание. Глава 4. Улучшаем Элементы Управления. Текстовые Поля. Листинг 4.1. Управление Полосой Прокрутки. Листинг 4.2. Многострочный Текст В Кнопке. Листинг 4.3. Внимание. Увеличение Ширины Выпадающего Списка Combobox. Листинг 4.4. Listbox. Листинг 4.5. Листинг 4.6. Listview. Листинг 4.7. Создание Кнопки, Содержащей Изображение. Список С Расширенными Возможностями. Текстовое Поле Для Ввода Чисел. Сортировка Элементов Listview. Использование Элемента Datetimepicker. Глава 5. Мышь И Клавиатура. Мышь И Стилус. Курсоры. Песочные Часы. Листинг 5.1. Обработка События Tap-And-Hold. Листинг 5.2. Клавиатура. Клавиши Навигации. Листинг 5.3. Выключение Устройства. Листинг 5.4. Дополнительные Материалы. Глава 6. Графика. Классы Для Программирования Графики. Класс Pen. Листинг 6.1. Класс Brush. Класс Solidbrush. Листинг 6.2. Класс Texturebrush. Листинг 6.3. Внимание. Класс Color. Листинг 6.4. Класс Font. Листинг 6.5. Класс Icon. Листинг 6.6. Класс Bitmap. Листинг 6.7. Структура Point. Структура Rectangle. Листинг 6.8. Графические Методы. Листинг 6.9. Листинг 6.10. Листинг 6.11. Листинг 6.12. Листинг 6.13. Листинг 6.14. Создание Собственных Методов Drawpie И Fillpie. Листинг 6.15. Создание Фонового Рисунка Для Формы. Листинг 6.16. Копирование Рисунка. Листинг 6.17. Поддержка Прозрачности. Примечание. Листинг 6.18. Внимание. Округленные Прямоугольники. Листинг 6.19. Создание Экранных Снимков. Листинг 6.20. Внимание. Метод Lockbits. Листинг 6.21. Графический Редактор. Листинг 6.22. Дополнительные Материалы. Глава 7. Разработка Приложений. Активация И Деактивация Формы. Листинг 7.1. Закрыть Или Свернуть Окно. Листинг 7.2. Пиктограмма Приложения. Создание Собственных Диалоговых Окон. Внимание. Листинг 7.3. Листинг 7.4. Листинг 7.5. Создание Заставки Splash Screen. Листинг 7.6. Листинг 7.7. Поворот Экрана. Листинг 7.8. Рекомендации По Дизайну Форм. Готовые Приложения. Файловый Менеджер Для Смартфона. Зачем Нужен Файловый Менеджер. Графический Интерфейс Программы. Код Программы. Листинг 7.9. Листинг 7.10. Листинг 7.11. Листинг 7.12. Листинг 7.13. Листинг 7.14. Листинг 7.15. Листинг 7.16. Листинг 7.17. Листинг 7.18. Листинг 7.19. Листинг 7.20. Листинг 7.21. Листинг 7.22. Листинг 7.23. Диспетчер Задач. Графический Интерфейс Программы. Код Программы. Листинг 7.24. Листинг 7.25. Активация И Закрытие Приложения. Листинг 7.26. Перечисление Процессов. Листинг 7.27. Листинг 7.28. Закрытие Процесса. Листинг 7.29. Маленький Блокнот. Первые Шаги. Листинг 7.30. Листинг 7.31. Стандартные Операции С Текстом. Листинг 7.32. Листинг 7.33. Листинг 7.34. Листинг 7.35. Листинг 7.36. Распространение Приложений. Создание Cab-Файла. Создание Проекта. Дополнительные Материалы. Глава 8. Эмулятор И Другие Утилиты. Программы Для Отладки Приложений. Эмулятор. Запуск Эмулятора. Примечание. Примечание. Настройка Эмулятора. Эмуляция Карточки Памяти. Изменение Ориентации Экрана. Выход В Интернет Через Эмулятор. Изменение Внешнего Вида Эмуляторов. Эмулятор Как Отдельный Продукт. Новая Версия Эмулятора. Набор Утилит Visual Studio Remote Tools. Remote Zoom-In. Remote File Viewer. Remote Registry Editor. Глава 9. Программирование Для Смартфонов. Особенности Программирования Для Смартфонов. Примечание. Создание Приложения Для Смартфона. Примечание. Создание Меню. Листинг 9.1. Элементы Управления. Режимы Ввода. Листинг 9.2. Примечание. Листинг 9.3 Управление Режимами Ввода С Помощью Управляемого Кода. Переопределение Клавиш Soft Key. Листинг 9.4. Прокручивание Формы. Листинг 9.5. Листинг 9.6. Глава 10. Windows Mobile 5.0. Первый Взгляд. Улучшенная Продуктивность. Поддержка Мультимедиа. Поддержка Управляемого Кода. Windows Mobile 5.0 Api. Взаимодействие С Activesync. Новые Возможности Системы. Подготовка К Работе. Microsoft.Windowsmobile.Pocketoutlook. Встречи (Appointment). Листинг 10.1. Работа С Адресной Книгой. Листинг 10.2. Листинг 10.3. Листинг 10.4. Листинг 10.5. Листинг 10.6. Электронная Почта. Листинг 10.7. Листинг 10.8. Sms-Сообщения. Листинг 10.9. Примечание. Листинг 10.10. Прием И Обработка Sms-Сообщений. Листинг 10.11. Внимание. Телефония. Листинг 10.12. State And Notifications Broker. Листинг 10.13. Листинг 10.14. Листинг 10.15. Мультимедиа. Выбор Изображения. Листинг 10.16. Работа С Фотокамерой. Листинг 10.17. Листинг 10.18. Повторение Пройденного. Встречи. Листинг 10.19. Листинг 10.20. Отсылка Письма. Листинг 10.21. Листинг 10.22. Листинг 10.23. Листинг 10.24. Мелочь, А Приятно. Метод Directory.Exists. Метод Bitmap.Save(). Глава 11. Создание Игр. Игры На Мобильных Устройствах. Продуктовая Аркада. Примечание. Начало Работы. Добавление Изображения В Программу. Использование Встроенных Ресурсов. Листинг 11.1. Листинг 11.2. Вывод Картинки На Экран. Листинг 11.3. Создание Анимации. Листинг 11.4. Листинг 11.5. Листинг 11.6. Листинг 11.7. Отражения. Листинг 11.8. Управление Скоростью Движения Объекта. Листинг 11.9. Листинг 11.10. Листинг 11.11. Добавляем Новый Объект. Листинг 11.12. Устранение Мерцания. Листинг 11.13. Листинг 11.14. Хлеб — Всему Голова. Листинг 11.15. Листинг 11.16. Обнаружение Столкновений. Листинг 11.17. Листинг 11.18. Листинг 11.19. Листинг 11.20. Листинг 11.21. Столкновения Батона И Мяча. Листинг 11.22. Новые Объекты. Листинг 11.23. Листинг 11.24. Размещение Помидоров. Листинг 11.25. Листинг 11.26. Листинг 11.27. Листинг 11.28. Листинг 11.29. Уничтожение Томатов. Листинг 11.30. Счет Игры. Листинг 11.31. Листинг 11.32. Листинг 11.33. Листинг 11.34. Ведение Счета. Листинг 11.35. Звуковые Эффекты. Листинг 11.36. Листинг 11.37. Листинг 11.38. Листинг 11.39. Листинг 11.40. Листинг 11.41. Листинг 11.42. Листинг 11.43. Дальнейшие Улучшения. Листинг 11.44. Листинг 11.45. Листинг 11.46. Листинг 11.47. Листинг 11.48. Тестирование. Листинг 11.49 Тестирование Программы В Автоматическом Режиме. И Опять Добавляем Новые Объекты. Листинг 11.50. Листинг 11.51. Листинг 11.52. Листинг 11.53. Управление Таблицей Результатов. Переключение Между Формами. Листинг 11.54. Листинг 11.55. Листинг 11.56. Листинг 11.57. Отображение Дочернего Окна. Листинг 11.58. Листинг 11.59. Получение Имени Игрока. Листинг 11.60. Листинг 11.61. Хранение Лучших Результатов. Листинг 11.62. Листинг 11.63. Листинг 11.64. Улучшение Графики. Листинг 11.65. Листинг 11.66. Листинг 11.67. Спрайты. Другие Игры. Глава 12. Связь. Инфракрасное Соединение. История И Теория. Класс Irdaclient. Создание Программы Для Работы С Ик-Связью. Листинг 12.1. Листинг 12.2. Листинг 12.3. Обнаружение Устройств. Листинг 12.4. Передача Данных. Листинг 12.5. Технология Bluetooth. Листинг 12.6. Несколько Слов О Связи. Глава 13. Использование Неуправляемого Кода. Вызов Функций Windows Api. Определение Платформы. Листинг 13.1. Пароли. Листинг 13.2. Внимание. Перезагрузка Кпк. Листинг 13.3. Еще Раз О Перезагрузке. Листинг 13.4. Поворот Экрана. Листинг 13.5. Прячем Кнопку Start. Листинг 13.6. Панель Задач. Листинг 13.7. Запуск Других Приложений. Листинг 13.8. Названия Специальных Файлов. Листинг 13.9. Использование Звуковых Файлов. Листинг 13.10. Листинг 13.11. Листинг 13.12. Системные Звуки. Листинг 13.13. Системное Время. Листинг 13.14. Создание Ярлыка. Листинг 13.15. Количество Строк В Текстовом Поле. Листинг 13.16. Реестр. Листинг 13.17. Наличие Внешней Клавиатуры. Листинг 13.18. Листинг 13.19. Листинг 13.20. Внимание. Информация О Пользователе. Листинг 13.21. Наличие Дополнительной Клавиатуры. Листинг 13.22. Виброзвонок. Листинг 13.23. Внимание. Глава 14. Кирпичики .Net Compact Framework. Узнать Версию .Net Compact Framework. Листинг 14.1. Узнать Версию Операционной Системы. Листинг 14.2. Путь К Запущенному Приложению. Листинг 14.3. Специальные Папки. Листинг 14.4. Узнать Имя Устройства. Листинг 14.5. Узнать Ориентацию Экрана. Листинг 14.6. Открытие Файлов По Умолчанию. Листинг 14.7. Внимание. Создание И Отправка Письма. Листинг 14.8. Кнопки Навигации. Листинг 14.9. Послесловие. Что Дальше? Полезные Ресурсы. .Net Compact Framework 2.0 Redistributable. Microsoft Activesync 4.1. Русская Версия Эмулятора Для Windows Mobile 5.0 Smartphone. Русская Версия Эмулятора Для Кпк Под Управлением Windows Mobile 5.0 Pocket Pc. Сайт Роба Майлза. Сайт Кристиана Форсберга. Opennetcf.Org. Google.
Экстремальное программирование. Разработка через тестирование.
Храбрость. Благодарности. Часть I. На Примере Денег. 1. Мультивалютные Деньги. 2. Вырождающиеся Объекты. 3. Равенство Для Всех. 4. Данные Должны Быть Закрытыми. 5. Поговорим О Франках. 6. Равенство Для Всех, Вторая Серия. 7. Яблоки И Апельсины. 8. Создание Объектов. 9. Потребность В Валюте. 10. Избавление От Двух Разных Версий Times(). 11. Корень Всего Зла. 12. Сложение, Наконец-То. 13. Делаем Реализацию Реальной. 14. Обмен Валюты. 15. Смешение Валют. 16. Абстракция, Наконец-То! 17. Ретроспектива Денежного Примера.… Что Дальше? Метафора. Использование Junit. Метрики Кода. Процесс. Качество Тестов. Последний Взгляд Назад. Часть II. На Примере Xunit. 18. Первые Шаги На Пути К Xunit. 19. Сервируем Стол (Метод Setup). 20. Убираем Со Стола (Метод Teardown). 21. Учет И Контроль. 22. Обработка Неудачного Теста. 23. Оформляем Тесты В Набор. 24. Ретроспектива Xunit. Часть III. Шаблоны Разработки Через Тестирование. 25. Шаблоны Разработки Через Тестирование. Тест. Изолированный Тест (Isolated Test). Список Тестов (Test List). Сначала Тест (Test First). Сначала Оператор Assert (Assert First). Тестовые Данные (Test Data). Понятные Данные (Evident Data). 26. Шаблоны Красной Полосы. Тест Одного Шага (One Step Test). Начальный Тест (Starter Test). Объясняющий Тест (Explanation Test). Тест Для Изучения (Learning Test)[15]. Еще Один Тест (Another Test). Регрессионный Тест (Regression Test). Перерыв (Break). Начать Сначала (Do Over). Дешевый Стол, Хорошие Кресла (Cheap Desk, Nice Chair). 27. Шаблоны Тестирования. Дочерний Тест (Child Test). Поддельный Объект (Mock Object). Самошунтирование (Self Shunt). Строка-Журнал (Log String). Тестирование Обработки Ошибок (Crush Test Dummy). Сломанный Тест (Broken Test). Чистый Выпускаемый Код (Clean Check-In). 28. Шаблоны Зеленой Полосы. Подделка (Fake It). Триангуляция (Triangulate). Очевидная Реализация (Obvious Implementation). От Одного Ко Многим (One To Many). 29. Шаблоны Xunit. Проверка Утверждений. Фикстура[20] (Fixture). Внешняя Фикстура (External Fixture). Тестовый Метод (Test Method). Тест Исключения (Exception Test). Все Тесты (All Tests). 30. Шаблоны Проектирования. Команда (Command). Объект-Значение (Value Object). Нуль-Объект (Null Object). Шаблонный Метод (Template Method). Встраиваемый Объект (Pluggable Object). Встраиваемый Переключатель (Pluggable Selector)[26]. Фабричный Метод (Factory Method). Самозванец (Imposter). Компоновщик (Composite). Накапливающий Параметр (Collecting Parameter). Одиночка (Singleton). 31. Рефакторинг. Согласование Различий (Reconcile Differences). Изоляция Изменений (Isolate Change). Миграция Данных (Migrate Data). Выделение Метода (Extract Method). Встраивание Метода (Inline Method). Выделение Интерфейса (Extract Interface). Перемещение Метода (Move Method). Метод В Объект (Method Object). Добавление Параметра (Add Parameter). Параметр Метода В Параметр Конструктора (Method Parameter To Constructor Parameter). 32. Развитие Навыков Tdd. Насколько Большими Должны Быть Шаги? Что Не Подлежит Тестированию? Как Определить Качество Тестов? Как Tdd Способствует Созданию Инфраструктур? Сколько Должно Быть Тестов? Когда Следует Удалять Тесты? Как Язык Программирования И Среда Разработки Влияют На Tdd? Можно Ли Использовать Tdd Для Разработки Крупномасштабных Систем? Можно Ли Осуществлять Разработку Через Тестирование На Уровне Приложения? Как Перейти К Использованию Tdd В Середине Работы Над Проектом? Для Кого Предназначена Методика Tdd? Зависит Ли Эффективность Tdd От Начальных Условий? Как Методика Tdd Связана С Шаблонами? Почему Tdd Работает? Что Означает Название? Как Методика Tdd Связана С Практиками Экстремального Программирования? Нерешенные Проблемы Tdd. Приложение I. Диаграммы Взаимовлияния. Обратная Связь. Контроль Над Системой. Приложение II. Фибоначчи. Послесловие. Примечания.
Linux программирование в примерах.
Аудитория. Что Вы Изучите. Небольшой — Значит Красивый: Программы Unix. Стандарты. Возможности И Мощь: Программы Gnu. Обзор Глав. Соглашения Об Обозначениях. Где Получить Исходные Коды Unix И Gnu. Код Unix. Код Gnu. Где Получить Примеры Программ, Использованные В Данной Книге. Об Обложке. Благодарности. Часть 1. Файлы И Пользователи. Глава 1. Введение. 1.1. Модель Файловой Системы Linux/Unix. 1.1.1. Файлы И Права Доступа. 1.1.2. Каталоги И Имена Файлов. 1.1.3. Исполняемые Файлы. 1.1.4. Устройства. 1.2. Модель …Процессов Linux/Unix. 1.2.1. Каналы: Сцепление Процессов. 1.3. Стандартный С Против Оригинального С. 1.4. Почему Программы Gnu Лучше. 1.4.1. Проектирование Программ. 1.4.2. Поведение Программы. 1.4.3. Программирование На С. 1.4.4. Вещи, Которые Делают Программы Gnu Лучше. 1.4.5. Заключительные Соображения По Поводу «Gnu Coding Standards». 1.5. Пересмотренная Переносимость. 1.6. Рекомендуемая Литература. 1.7. Резюме. Упражнения. Глава 2. Аргументы, Опции И Переменные Окружения. 2.1. Соглашения По Опциям И Аргументам. 2.1.1. Соглашения Posix. 2.1.2. Длинные Опции Gnu. 2.2. Базовая Обработка Командной Строки. 2.2.1. Программа Echo V7. 2.3. Разбор Опций: Getopt() И Getopt_Long(). 2.3.1. Опции С Одним Символом. 2.3.2. Gnu Getopt() И Порядок Опций. 2.3.3. Длинные Опции. 2.3.3.1. Таблица Длинных Опций. 2.3.3.2. Длинные Опции В Стиле Posix. 2.3.3 3. Сводка Возвращаемых Значений Getopt_Long(). 2.3.3.4. Gnu Getopt() Или Getopt_Long() В Программах Пользователей. 2.4. Переменные Окружения. 2.4.1. Функции Управления Окружением. 2.4.2. Окружение В Целом: Environ. 2.4.3. Gnu Env. 2.5. Резюме. Упражнения. Глава 3. Управление Памятью На Уровне Пользователя. 3.1. Адресное Пространство Linux/Unix. 3.2. Выделение Памяти. 3.2.1. Библиотечные Вызовы: Malloc(), Calloc(), Realloc(), Free(). 3.2.1.1. Исследование Подробностей На Языке С. 3.2.1.2. Начальное Выделение Памяти: Malloc(). 3.2.1.3. Освобождение Памяти: Free(). 3.2.1.4. Изменение Размера: Realloc(). 3.2.1.5. Выделение С Инициализацией Нулями: Calloc(). 3.2.1.6. Подведение Итогов Из Gnu Coding Standards. 3.2.1.7. Использование Персональных Программ Распределения. 3.2.1.8. Пример: Чтение Строк Произвольной Длины. 3.2.1.9. Только Glibc: Чтение Целых Строк: Getline() И Getdelim(). 3.2.2. Копирование Строк: Strdup(). 3.2.3. Системные Вызовы: Brk() И Sbrk(). 3.2.4. Вызовы Ленивых Программистов: Alloca(). 3.2.5. Исследование Адресного Пространства. 3.3. Резюме. Упражнения. Глава 4. Файлы И Файловый Ввод/Вывод. 4.1. Введение В Модель Ввода/Вывода Linux/Unix. 4.2. Представление Базовой Структуры Программы. 4.3. Определение Ошибок. 4.3.1. Значения Errno. 4.3.2. Стиль Сообщения Об Ошибках. 4.4. Ввод И Вывод. 4.4.1. Понятие О Дескрипторах Файлов. Очевидные Символические Константы. Оксюморон? 4.4.2. Открытие И Закрытие Файлов. 4.4.2.1. Отображение Переменных File* На Дескрипторы Файлов. 4.4.2.2. Закрытие Всех Открытых Файлов. 4.4.3. Чтение И Запись. 4.4.4. Пример: Unix Cat. 4.5. Произвольный Доступ: Перемещения Внутри Файла. 4.6. Создание Файлов. 4.6.1. Определение Начальных Прав Доступа К Файлу. 4.6.2. Создание Файлов С Помощью Creat(). 4.6.3. Возвращаясь К Open(). 4.7. Форсирование Записи Данных На Диск. 4.8. Установка Длины Файла. 4.9. Резюме. Упражнения. Глава 5. Каталоги И Служебные Данные Файлов. 5.1. Просмотр Содержимого Каталога. 5.1.1. Определения. 5.1.2. Содержимое Каталога. 5.1.3. Прямые Ссылки. 5.1.3.1. Программа Gnu Link. 5.1.3.2. Точка И Точка-Точка. 5.1.4. Переименование Файлов. 5.1.5. Удаление Файла. 5.1.5.1. Удаление Открытых Файлов. 5.1.5.2. Использование Iso С: Remove(). 5.1.6. Символические Ссылки. 5.2. Создание И Удаление Каталогов. 5.3. Чтение Каталогов. 5.3.1. Базовое Чтение Каталогов. 5.3.1.1. Анализ Переносимости. Косвенные Системные Вызовы. 5.3.1.2. Элементы Каталогов Linux И Bsd. 5.3.2. Функции Размещения Каталогов Bsd. 5.4. Получение Информации О Файлах. 5.4.1. Типы Файлов Linux. 5.4.2. Получение Информации О Файле. 5.4.3. Только Linux: Указание Файлового Времени Повышенной Точности. 5.4.4. Определение Типа Файла. 5.4.4.1. Сведения Об Устройстве. 5.4.4.2. Возвращаясь К V7 Cat. 5.4.5. Работа С Символическими Ссылками. 5.5. Смена Владельца, Прав Доступа И Времени Изменения. 5.5.1. Смена Владельца Файла: Chown(), Fchown() И Lchown(). 5.5.2. Изменение Прав Доступа: Chmod() И Fchmod(). 5.5.3. Изменение Временных Отметок: Utime(). 5.5.3.1. Подделка Utime(File, Null). 5.5.4. Использование Fchown() И Fchmod() Для Обеспечения Безопасности. 5.6. Резюме. Упражнения. Глава 6. Общие Библиотечные Интерфейсы — Часть 1. 6.1. Времена И Даты. 6.1.1. Получение Текущего Времени: Time() И Difftime(). 6.1.2. Разложение Времени: Gmtime() И Localtime(). 6.1.3. Форматирование Даты И Времени. 6.1.3.1. Простое Форматирование Времени: Asctime() И Ctime(). 6.1.3.2. Сложное Форматирование Времени: Strftime(). 6.1.4. Преобразование Разложенного Времени В Time_T. 6.1.5. Получение Сведений О Часовом Поясе. 6.1.5.1. Системы Bsd: Timezone(), Не Timezone. Локальное Время: Откуда Оно Известно? 6.2. Функции Сортировки И Поиска. 6.2.1. Сортировка: Qsort(). 6.2.1.1. Пример: Сортировка Сотрудников. 6.2.1.2. Пример: Сортировка Содержимого Каталога. 6.2.2. Бинарный Поиск: Bsearch(). 6.3. Имена Пользователей И Групп. 6.3.1. База Данных Пользователей. 6.3.2. База Данных Групп. 6.4. Терминалы: Isatty(). 6.5. Рекомендуемая Литература. 6.6. Резюме. Упражнения. Глава 7. Соединяя Все Вместе: Ls. 7.1. Опции V7 Ls. 7.2. Код V7 Ls. 7.3. Резюме. Упражнения. Глава 8. Файловые Системы И Обходы Каталогов. 8.1. Монтирование И Демонтирование Файловых Систем. 8.1.1. Обзор Основ. Номера Индексов Корневого Каталога. 8.1.2. Обзор Различных Типов Файловых Систем. 8.1.3. Монтирование Файловых Систем: Mount. 8.1.4. Демонтирование Файловых Систем: Umount. 8.2. Файлы Для Администрирования Файловой Системы. 8.2.1. Использование Опций Монтирования. 8.2.2. Работа Со Смонтированными Файловыми Системами: Getmntent(). 8.3. Получение Сведений О Файловой Системе. 8.3.1. Стиль Posix: Statvfs() И Fstatvfs(). Битовые Флаги. 8.3.2. Стиль Linux: Statfs() И Fstatfs(). 8.4. Перемещение По Иерархии Файлов. 8.4.1. Смена Каталога: Chdir() И Fchdir(). 8.4.2. Получение Текущего Каталога: Getcwd(). 8.4.3. Перемещение По Иерархии: Nftw(). 8.4.3.1. Интерфейс Nftw(). 8.4.3.2. Функция Обратного Вызова Nftw(). 8.5. Обход Дерева Файлов: Gnu Du. 8.6. Изменение Корневого Каталога: Chroot(). 8.7. Резюме. Упражнения. Часть 2. Процессы, Ipc И Интернационализация. Глава 9. Управление Процессами И Каналы. 9.1. Создание И Управление Процессами. 9.1.1. Создание Процесса: Fork(). 9.1.1.1. После Fork(): Общие И Различные Атрибуты. 9.1.1.2. Разделение Дескрипторов Файлов. 9.1.1.3. Разделение Дескрипторов Файлов И Close(). 9.1.2. Идентификация Процесса: Getpid() И Getppid(). 9.1.3. Установка Приоритетов Процесса: Nice(). 9.1.3.1. Posix Против Действительности. 9.1.4. Запуск Новой Программы: Семейство Exec(). 9.1.4.1. Системный Вызов Execve(). 9.1.4.2. Функции-Оболочки: Execl() И Др. 9.1.4.3. Имена Программ И Argv[0]. 9.1.4.4. Атрибуты, Наследуемые Exec(). 9.1.5. Завершение Процесса. 9.1.5.1. Определение Статуса Завершения Процесса. 9.1.5.2. Возвращение Из Main(). 9.1.5.3. Функции Завершения. 9.1.6. Использование Статуса Завершения Порожденного Процесса. 9.1.6.1. Использование Функций Posix: Wait() И Waitpid(). 9.1.6.2. Использование Функций Bsd: Wait3() И Wait4(). 9.2. Группы Процессов. 9.2.1. Обзор Управления Заданиями. 9.2.2. Идентификация Группы Процессов: Getpgrp() И Getpgid(). 9.2.3. Установка Группы Процесса: Setpgid() И Setpgrp(). 9.3. Базовое Межпроцессное Взаимодействие: Каналы И Очереди Fifo. 9.3.1. Каналы. 9.3.1.1. Создание Каналов. 9.3.1.2. Буферирование Каналов. 9.3.2. Очереди Fifo. 9.4. Управление Дескрипторами Файлов. 9.4.1. Дублирование Открытых Файлов: Dup() И Dup2(). 9.4.2. Создание Нелинейных Конвейеров: /Dev/Fd/XX. 9.4.3. Управление Атрибутами Файла: Fcntl(). 9.4.3.1. Флаг Close-On-Exec. История Борьбы Close-On-Exec От Gawk. 9.4.3.2. Дублирование Дескриптора Файла. 9.4.3.3. Работа С Флагами Статуса Файла И Режимами Доступа. 9.4.3.4. Неблокирующий Ввод/Вывод Для Каналов И Fifo. 9.4.3.5. Сводка Fcntl(). 9.5. Пример: Двусторонние Каналы В Gawk. 9.6. Рекомендуемая Литература. 9.7. Резюме. Упражнения. Глава 10. Сигналы. 10.1. Введение. 10.2. Действия Сигналов. 10.3. Стандартные Сигналы С: Signal() И Raise(). 10.3.1. Функция Signal(). 10.3.2. Программная Отправка Сигналов: Raise(). 10.4. Обработчики Сигналов В Действии. 10.4.1. Традиционные Системы. 10.4.2. Bsd И Gnu/Linux. 10.4.3. Игнорирование Сигналов. 10.4.4. Системные Вызовы, Допускающие Повторный Запуск. 10.4.4.1. Пример: Gnu Coreutils Safe_Read() И Safe_Write(). 10.4.4.2. Только Glibc: Temp_Failure_Retry(). 10.4.5. Состояния Гонок И Sig_Atomic_T (Iso C). 10.4.6. Дополнительные Предостережения. 10.4.7. Наша История До Настоящего Времени, Эпизод 1. 10.5. Api Сигналов System V Release 3: Sigset() И Др. 10.6. Сигналы Posix. 10.6.1. Обнажение Проблемы. 10.6.2. Наборы Сигналов: Sigset_T И Связанные Функции. 10.6.3. Управление Маской Сигналов: Sigprocmask() И Др. 10.6.4. Перехват Сигналов: Sigaction(). 10.6.5. Извлечение Ожидающих Сигналов: Sigpending(). 10.6.6. Создание Возможности Для Прерывания Функций: Siginterrupt(). 10.6.7. Передача Сигналов: Kill() И Killpg(). 10.6.8. Наша История До Настоящего Времени, Эпизод II. 10.7. Сигналы Для Межпроцессного Взаимодействия. 10.8. Важные Сигналы Специального Назначения. 10.8.1. Сигнальные Часы: Sleep(), Alarm() И Sigalarm. 10.8.1.1. Труднее, Но С Большим Контролем: Alarm() И Sigalarm. 10.8.1.2. Простой И Легкий: Sleep(). 10.8.2. Сигналы, Управляющие Заданиями. 10.8.3. Родительский Надзор: Три Различные Стратегии. 10.8.3.1. Плохие Родители: Полное Игнорирование Потомков. 10.8.3.2. Снисходительные Родители: Минимальный Надзор. 10.8.3.3. Строгий Родительский Контроль. 10.9. Сигналы, Передающиеся Через Fork() И Exec(). 10.10. Резюме. Упражнения. Глава 11. Права Доступа И ID Пользователей И Групп. 11.1. Проверка Прав Доступа. 11.1.1. Действительные И Эффективные ID. 11.1.2. Биты Setuid И Setgid. 11.2. Получение ID Пользователя И Группы. 11.3. Проверка Для Действительного Пользователя: Access(). 11.4. Проверка Для Эффективного Пользователя: Euidaccess() (Glibc). 11.5. Установка Дополнительных Битов Доступа Для Каталогов. 11.5.1. Группа По Умолчанию Для Новых Файлов И Каталогов. 11.5.2. Каталоги И «Липкий» Бит. 11.6. Установка Действительных И Эффективных ID. 11.6.1. Изменение Набора Групп. 11.6.2. Изменение Действительного И Эффективного ID. 11.6.3. Использование Битов Setuid И Setgid. 11.7. Работа Со Всеми Тремя ID: Getresuid() И Setresuid() (Linux). 11.8. Пересечение Минного Поля Безопасности: Setuid Root. 11.9. Рекомендуемая Литература. 11.10. Резюме. Упражнения. Глава 12 Общие Библиотечные Интерфейсы — Часть 2. 12.1. Операторы Проверки: Assert(). 12.2. Низкоуровневая Память: Функции Memxxx(). 12.2.1. Заполнение Памяти: Memset(). 12.2.2. Копирование Памяти: Memcpy(), Memmove() И Memccpy(). 12.2.3. Сравнение Блоков Памяти: Memcmp(). 12.2.4. Поиск Байта С Данным Значением: Memchr(). 12.3. Временные Файлы. 12.3.1. Создание Временных Имен Файлов (Плохо). 12.3.2. Создание И Открывание Временных Файлов (Хорошо). 12.3.3. Использование Переменной Окружения Tmpdir. 12.4. Совершение Самоубийства: Abort(). 12.5. Нелокальные Переходы. 12.5.1. Использование Стандартных Функций: Setjmp() И Longjmp(). 12.5.2. Обработка Масок Сигналов: Sigsetjmp() И Siglongjmp(). 12.5.3. Важные Предостережения. 12.6. Псевдослучайные Числа. 12.6.1. Стандартный С: Rand() И Srand(). 12.6.2. Функции Posix: Random() И Srandom(). 12.6.3. Особые Файлы /Dev/Random И /Dev/Urandom. 12.7. Расширения Метасимволов. 12.7.1. Простое Сопоставление С Шаблоном: Fnmatch(). 12.7.2. Раскрытие Имени Файла: Glob() И Globfree(). Универсализация Имен? Что Это? 12.7.3. Разворачивание Слов Оболочкой: Wordexp() И Wordfree(). 12.8. Регулярные Выражения. 12.9. Рекомендуемая Литература. 12.10. Резюме. Упражнения. Глава 13. Интернационализация И Локализация. 13.1. Введение. 13.2. Локали И Библиотека С. 13.2.1. Категории Локалей И Переменные Окружения. 13.2.2. Установка Локали: Setlocale(). 13.2.3. Сравнение Строк: Strcoll() И Strxfrm(). 13.2.4. Числовое И Денежное Низкоуровневое Форматирование: Localeconv(). 13.2.5. Высокоуровневое Числовое И Денежное Форматирование: Strfmon() И Printf(). 13.2.6. Пример: Форматирование Числовых Значений В Gawk. 13.2.7. Форматирование Значений Даты И Времени: Ctime() И Strftime(). 13.2.8. Другие Данные Локали: Nl_Langinfo(). 13.3. Динамический Перевод Сообщений Программ. 13.3.1. Установка Текстового Домена: Textdomain(). 13.3.2. Перевод Сообщений: Gettext(). 13.3.3. Работа С Множественными Числами: Ngettext(). 13.3.4. Упрощение Использования Gettext(). 13.3.4.1. Переносимые Программы: "Gettext.H". 13.3.4.2. Только Glibc: <Libintl.H> 13.3.5. Перестановка Порядка Слов С Помощью Printf(). 13.3.6. Тестирование Переводов В Персональном Каталоге. 13.3.7. Подготовка Интернационализированных Программ. 13.3.8. Создание Переводов. 13.4. Не Могли Бы Вы Произнести Это Для Меня По Буквам? 13.4.1. Широкие Символы. 13.4.2. Представления Многобайтных Символов. 13.4.3. Языки. 13.4.4. Заключение. 13.5. Рекомендуемая Литература. 13.6. Резюме. Упражнения. Глава 14. Расширенные Интерфейсы. 14.1. Выделение Выровненной Памяти: Posix_Memalign() И Memalign(). 14.2. Блокировка Файлов. 14.2.1. Концепции Блокировки Файлов. 14.2.2. Блокировка Posix: Fcntl() И Lockf(). 14.2.2.1. Описание Блокировки. 14.2.2.2. Установка И Снятие Блокировок. 14.2.2.3. Предостережения По Поводу Блокировок. 14.2.3. Блокирование Bsd: Flock(). 14.2.4. Обязательная Блокировка. 14.3. Более Точное Время. 14.3.1. Время В Микросекундах: Gettimeofday(). 14.3.2. Файловое Время В Микросекундах: Utimes(). 14.3.3. Интервальные Таймеры: Setitimer() И Getitimer(). 14.3.4. Более Точные Паузы: Nanosleep(). 14.4. Расширенный Поиск С Помощью Двоичных Деревьев. 14.4.1. Введение В Двоичные Деревья. 14.4.2. Функции Управления Деревьями. 14.4.3. Ввод Элемента В Дерево: Tsearch(). 14.4.4. Поиск По Дереву И Использование Возвращенного Указателя: Tfind() И Tsearch(). 14.4.5. Обход Дерева: Twalk(). 14.4.6. Удаление Вершины Дерева И Удаление Дерева: Tdelete() И Tdestroy(). 14.5. Резюме. Упражнения. Часть 3. Отладка И Заключительный Проект. Глава 15. Отладка. 15.1. Сначала Главное. 15.2. Компиляция Для Отладки. 15.3. Основы Gdb. 15.3.1. Запуск Gdb. 15.3.2. Установка Контрольных Точек, Пошаговое Выполнение И Отслеживаемые Точки. 15.4. Программирование Для Отладки. 15.4.1. Код Отладки Времени Компилирования. 15.4.1.1. Использование Отладочных Макросов. 15.4.1.2. По Возможности Избегайте Макросов С Выражениями. 15.4.1.3. При Необходимости Переставляйте Код. 15.4.1.4. Используйте Вспомогательные Функции Отладки. 15.4.1.5. По Возможности Избегайте Объединений. 15.4.2. Отлаживаемый Код Времени Исполнения. 15.4.2.1. Добавляйте Отладочные Опции И Переменные. 15.4.2.2. Используйте Специальные Переменные Окружения. 15.4.2.3. Добавьте Код Журналирования. 15.4.2.4. Файлы Отладки Времени Исполнения. 15.4.2.5. Добавьте Специальные Ловушки Для Контрольных Точек. 15.5. Отладочные Инструменты. 15.5.1. Библиотека Dbug — Усовершенствованный Printf(). 15.5.2. Отладчики Выделения Памяти. 15.5.2.1. Gnu/Linux Mtrace. 15.5.2.2. Electric Fence. 15.5.2.3. Отладка Malloc: Dmalloc. 15.5.2.4. Valgrind: Многосторонний Инструмент. 15.5.2.5. Другие Отладчики Malloc. 15.5.3. Современная Lint. 15.6. Тестирование Программ. 15.7. Правила Отладки. 15.8. Рекомендуемая Литература. 15.9. Резюме. Упражнения. Глава 16. Проект, Связывающий Все Воедино. 16.1. Описание Проекта. 16.2. Рекомендуемая Литература. Часть 4. Приложения. Приложение А. Научитесь Программированию За Десять Лет. Почему Каждый В Такой Спешке? Научитесь Программированию За Десять Лет. Ссылки. Ответы. Сноски. Приложение В. Лицензия Caldera Для Старой Unix[194]. Приложение С. Общедоступная Лицензия Gnu[195]. Преамбула. Права И Обязанности При Копировании, Распространении И Модификации. Отказ От Гарантий. Конец Описания Прав И Обязанностей. Как Применить Эти Условия Договора К Своим Новым Программам. Пример Использования. Примечания.
UNIX — универсальная среда программирования.
Предисловия. Глава 1. Unix Для Начинающих. 1.1 Итак, Приступаем. Некоторые Предварительные Замечания О Терминалах И Вводе Символов. Сеанс Работы С Unix. Вход В Систему. Ввод Команд. Странное Поведение Терминала. Упражнение 1.1. Упражнение 1.2. Опережающий Ввод. Остановка Программы. Выход Из Системы. Почта. Служба Новостей. Справочное Руководство. Автоматизированный Справочник. Игры. 1.2 Повседневная Работа: Файлы И Основные Команды. Создание Файлов. Редактор. Что За Файлы Здесь? Печать Файлов. Команды Cat И …Pr. Пересылка, Копирование И Удаление Файлов. Команды MV, Cp, Rm. Чем Может Быть Имя Файла? Группа Полезных Команд. Сводка Команд Файловой Системы. 1.3 Продолжаем Изучать Файлы: Каталоги. Упражнение 1.3. Смена Каталога. Команда CD. 1.4 Интерпретатор Shell. Сокращенное Имя Файла. Упражнение 1.4. Переключение Ввода-Вывода. Упражнение 1.5. Упражнение 1.6. Программные Каналы. Упражнение 1.7. Процессы. Создание Среды. 1.5 Другие Средства Unix. Историческая И Библиографическая Справка. Глава 2. Файловая Система. 2.1 Основные Сведения О Файлах. Упражнение 2.1. 2.2 Что Хранится В Файле? 2.3. Каталоги И Имена Файлов. Упражнение 2.2. Упражнение 2.3. Упражнение 2.4. 2.4. Права Доступа. Упражнение 2.5. 2.5 Индексные Дескрипторы. Упражнение 2.6. Упражнение 2.7. Упражнение 2.8. 2.6 Иерархия Каталогов. 2.7 Файлы Устройств. Упражнение 2.9. Упражнение 2.10. Упражнение 2.11. Упражнение 2.12. Упражнение 2.13. Историческая И Библиографическая Справка. Глава 3. Возможности Интерпретатора Shell. 3.1 Структура Командной Строки. Упражнение 3.1. 3.2 Метасимволы. Упражнение 3.2. Некоторые Дополнительные Сведения О Команде Echo. Unix И Эхо. Упражнение 3.3. Упражнение 3.4. Упражнение 3.5. Упражнение 3.6. Упражнение 3.7. Упражнение 3.8. 3.3 Создание Новых Команд. Упражнение 3.9. 3.4 Аргументы И Параметры Команд. 3.5 Результат Выполнения Программы В Качестве Аргумента. Упражнение 3.10. Упражнение 3.11. Упражнение 3.12. 3.6 Переменные Языка Shell. Упражнение 3.13. 3.7 Еще Раз О Переключении Ввода-Вывода. Упражнение 3.14. 3.8 Циклы В Shell-Программах. Упражнение 3.15. Упражнение 3.16. 3.9 Программа Bundle: Соберем Все Воедино. Упражнение 3.17. Упражнение 3.18. 3.10 Для Чего Нужно Программировать На Языке Shell! Историческая И Библиографическая Справка. Глава 4. Фильтры. 4.1 Семейство Программ Grep. Упражнение 4.1. Упражнение 4.2. 4.2 Другие Фильтры. Упражнение 4.3. Упражнение 4.4. 4.3 Потоковый Редактор Sed. Упражнение 4.5. Упражнение 4.6. 4.4 Язык Awk Поиска И Обработки Шаблонов. Печать. Шаблоны. Упражнение 4.7. Шаблоны Begin И End. Арифметика И Переменные. Упражнение 4.8. Управление. Массивы. Ассоциативные Массивы. Упражнение 4.9. Строки. Упражнение 4.10. Взаимодействие С Интерпретатором. Служебная Программа-Календарь На Языке Awk. Упражнение 4.11. Упражнение 4.12. Упражнение 4.13. Упражнение 4.14. Дополнительная Информация. 4.5 Хорошие Файлы И Хорошие Фильтры. Упражнение 4.15. Историческая И Библиографическая Справка. Глава 5. Программирование На Языке Shell. 5.1 Совершенствование Команды Cal. Упражнение 5.1. Упражнение 5.2. Упражнение 5.3. 5.2 Что Представляет Собой Команда Which? Упражнение 5.4. Упражнение 5.5. Упражнение 5.6. Упражнение 5.7. Упражнение 5.8. 5.3 Циклы While И Until: Контроль Входа В Систему. Упражнение 5.9. Упражнение 5.10. Упражнение 5.11. Упражнение 5.12. Упражнение 5.13. 5.4 Команда Trap: Обработка Прерываний. Упражнение 5.14. Упражнение 5.15. Упражнение 5.16. 5.5 Команда Overwrite: Замена Файла. Упражнение 5.17. Упражнение 5.18. Упражнение 5.19. Упражнение 5.20. Упражнение 5.21. Упражнение 5.22. 5.6 Команда Zap: Уничтожение Процесса По Имени. Упражнение 5.23. 5.7 Команда Pick: Пробелы Или Аргументы. Упражнение 5.24. Упражнение 5.25. Упражнение 5.26. 5.8 Команда News: Служба Информации Пользователей. Упражнение 5.27. Упражнение 5.28. 5.9 Команды Get И Put: Контроль Изменении Файла. Упражнение 5.29. Упражнение 5.30. Упражнение 5.31. 5.10 Заключение. Историческая И Библиографическая Справка. Глава 6. Программирование С Помощью Стандартных Функций Ввода-Вывода. 6.1 Стандартные Входной И Выходной Потоки: Программа Vis. Упражнение 6.1. Упражнение 6.2. 6.2 Аргументы Программы: Vis Версия 2. Упражнение 6.3. Упражнение 6.4. 6.3 Доступ К Файлам: Vis Версия 3. Упражнение 6.5. 6.4 Вывод На Экран Порциями: Программа P. Упражнение 6.6. Упражнение 6.7. Упражнение 6.8. Упражнение 6.9. 6.5 Пример: Pick. Упражнение 6.10. 6.6 Об Ошибках И Отладке. 6.7 Пример: Zap. Упражнение 6.11. Упражнение 6.12. 6.8 Диалоговая Программа Сравнения Файлов: Idiff. Упражнение 6.13. Упражнение 6.14. Упражнение 6.15. Упражнение 6.16. 6.9 Доступ К Среде. Упражнение 6.17. Историческая И Библиографическая Справка. Глава 7. Системные Вызовы В Unix. 7.1 Ввод-Вывод Низкого Уровня. Дескрипторы Файлов. Файловый Ввод-Вывод: Read И Write. Упражнение 7.1. Упражнение 7.2. Создание Файла: Open, Creat, Close, Unlink. Обработка Ошибок: Errno. Произвольный Доступ: Lseek. Упражнение 7.3. Упражнение 7.4. 7.2 Файловая Система: Каталоги. Упражнение 7.5. Упражнение: 7.6. Упражнение 7.7. Упражнение 7.8. Упражнение 7.9. 7.3 Файловая Система: Индексные Дескрипторы. Sv: Иллюстрация Обработки Ошибок. Упражнение 7.10. Упражнение 7.11. Упражнение 7.12. Упражнение 7.13. Упражнение 7.14. Упражнение 7.15. Упражнение 7.16. 7.4 Процессы. Создание Процесса Низкого Уровня: Execlp И Execvp. Упражнение 7.17. Управление Процессами: Fork И Wait. 7.5 Сигналы И Прерывания. Будильники. Упражнение 7.18. Историческая И Библиографическая Справка. Глава 8. Разработка Программ. 8.1 Этап 1: Калькулятор С Четырьмя Действиями. Грамматика. Программа Yacc. Использование Программ На Этапе 1. Упражнение 8.1. Внесение Изменений — Унарный Минус. Упражнение 8.2. Некоторые Замечания Относительно Make. 8.2 Этап 2: Переменные И Восстановление После Ошибки. Упражнение 8.3. Упражнение 8.4. 8.3 Этап 3: Переменные С Произвольными Именами; Встроенные Функции. Упражнение 8.5. Упражнение: 8.6. Упражнение 8.7. Упражнение 8.8. Еще Одно Замечание Относительно Make. Несколько Замечаний Относительно Lex. Упражнение 8.9. 8.4 Этап 4: Компиляция На Машину. И Снова О Make. Упражнение 8.10. Упражнение 8.11. 8.5 Этап 5: Структуры Управления И Операции Отношений. Упражнение 8.12. Упражнение 8.13. Упражнение 8.14. Упражнение 8.15. Упражнение 8.16. Упражнение 8.17. 8.6 Этап 6: Функции И Процедуры; Ввод-Вывод. Упражнение 8.18. Упражнение 8.19. Упражнение 8.20. Упражнение 8.21. 8.7 Оценка Времени Выполнения. Упражнение 8.22. 8.8 Заключение. Историческая И Библиографическая Справка. Глава 9. Подготовка Документации. 9.1 Пакет Макроопределений Ms. Hoc — Диалоговый Язык Для Арифметики С Плавающей Точкой. 1. Выражения. Отображения. Смена Шрифта. Смешанные Команды. Пакет Макроопределений MM. Упражнение 9.1. 9.2 Уровень Troff. Имена Символов. Смена Шрифта И Размера Символов Текста. Основные Команды Troff. Определение Макрокоманд. 9.3 Препроцессоры Tbl И Eqn. Таблицы. Таблица 1: Операции По Порядку Уменьшения Приоритета. Математические Выражения. Таблица 3: Встроенные Константы. Получение Выходного Потока. Упражнение 9.2. Упражнение 9.3. Упражнение 9.4. Упражнение 9.5. Упражнение 9.6. Упражнение 9.7. 9.4 Справочник. Hoc(1) Hoc(1). Synopsys. Description. "See Also". Bugs. Упражнение 9.8. 9.5 Дополнительные Средства Для Подготовки Документации. Историческая И Библиографическая Справка. Глава 10. Эпилог. Приложение 1. Краткое Описание Редактора. Основные Сведения. Временная Передача Управления Shell С Помощью '!' Печать. Образцы. Добавление, Замена, Исключение, Вставка. Подстановка, Аннулирование. Метасимволы И Регулярные Выражения. Глобальные Команды. Перемещение И Копирование Строк. Метки И Номера Строк. Объединение, Расщепление И Реорганизация Строк. Команды, Работающие С Файлами. Шифрование. Сводка Команд. Упражнение. Приложение 2. Справочное Руководство По Hoc. Резюме. Выражения. Операторы И Поток Управления. Ввод И Вывод: Read И Print. Функции И Процедуры. Примеры. Приложение 3. Исходные Тексты Калькулятора Hoc. 3.1 Hoc1. 3.1.1 Makefile. 3.1.2 Hoc.Y. 3.1.3 Hoc1.Y, Версия 1.5. 3.2 Hoc2. 3.2.1 Hoc.Y. 3.2.2 Makefile. 3.3 Hoc3. 3.3.1 Makefile. 3.3.2 Hoc.H. 3.3.3 Hoc.Y. 3.3.4 Init.C. 3.3.5 Math.C. 3.3.6 Symbol.C. 3.4 Hoc3 С Lex. 3.4.1. Hoc.H. 3.4.2 Hoc.Y. 3.4.3 Init.C. 3.4.4. Lex.L. 3.4.5 Makefile. 3.4.6 Math.C. 3.4.7 Symbol.C. 3.5 Hoc4. 3.5.1 Code.C. 3.5.2 Hoc.H. 3.5.3 Hoc.Y. 3.5.4 Init.C. 3.5.5. Makefile. 3.5.6. Math.C. 3.5.7 Symbol.C. 3.6 Hoc5. 3.6.1 Code.C. 3.6.2 Fib. 3.6.3 Fib2. 3.6.4 Hoc.H. 3.6.5 Hoc.Y. 3.6.6 Init.C. 3.6.7 Makefile. 3.6.8 Math.C. 3.6.9 Symbol.C. 3.7 Hoc6. 3.7.1 Ack. 3.7.2 Ack1. 3.7.3 Code.C. 3.7.4 Double. 3.7.5 Fac. 3.7.6 Fac1. 3.7.7 Fac2. 3.7.8 Fib. 3.7.9 Fib2. 3.7.10 Fibsum. 3.7.11 Fibtest. 3.7.12 Hoc.H. 3.7.13 Hoc.Ms. 3.7.14 Hoc.Y. 3.7.15 Init.C. 3.7.16 Makeapp. 3.7.17 Makefile. 3.7.18 Math.C. 3.7.19 Mbox. 3.7.20 Symbol.C. 3.8 Всякая Всячина. 3.8.1 Addup1. 3.8.2. Addup2. 3.8.3 Backup. 3.8.4 Backwards. 3.8.5 Badpick.C. 3.8.6 Bundle. 3.8.7 Cal. 3.8.8 Calendar1. 3.8.9 Calendar2. 3.8.10 Calendar3. 3.8.11 Cat0.C. 3.8.12 Checkmail.C. 3.8.13 Checkmail.Sh. 3.8.14 Cp.C. 3.8.15 Doctype. 3.8.16 Double. 3.8.17 Efopen.C. 3.8.18 Error.C. 3.8.19 Field1. 3.8.20 Field2. 3.8.21 Fold. 3.8.22 Frequent. 3.8.23 Frequent2. 3.8.24 Get. 3.8.25 Get.С. 3.8.26 Getname. 3.8.27 Idiff.C. 3.8.28 Makefile. 3.8.29 Newer. 3.8.30 News1. 3.8.31 News2. 3.8.32 News3. 3.8.33 Nohup. 3.8.34 Older. 3.8.35 Overwrite1. 3.8.36 Overwrite2. 3.8.37 Overwrite3. 3.8.38 P1.C. 3.8.39 P2.C. 3.8.40 P3.C. 3.8.41 P4.C. 3.8.42 Pick1. 3.8.43 Pick.C. 3.8.44 Prpages. 3.8.45 Put. 3.8.46 Readslow.C. 3.8.47 Replace. 3.8.48 Signaltest.C. 3.8.49 Spname.C. 3.8.50 Strindex.C. 3.8.51 Sv.C. 3.8.52 System1.C. 3.8.53 System.C. 3.8.54 Timeout.C. 3.8.55 Toolong. 3.8.56 Ttyin1.C. 3.8.57 Ttyin2.C. 3.5.58 Vis1.C. 3.5.59 Vis2.C. 3.8.60 Vis3.C. 3.8.61 Waitfile.C. 3.8.62 Watchfor. 3.8.63 Watchwho. 3.8.64 Which1. 3.8.65 Which1.H. 3.8.66 Which2. 3.8.67 Wordfreq. 3.8.68 Zap1. 3.8.69 Zap2. 3.8.70 Zap.C. Примечания.