Изучаем Python. Программирование игр, визуализация данных, веб-приложения.

Для Кого Написана Эта Книга? Чему Эта Книга Вас Научит? Почему Именно Python? Часть I. Основы. 1. Начало Работы. Подготовка Среды Программирования. Python 2 И Python 3. Выполнение Фрагментов Кода Python. Hello World! Python В Разных Операционных Системах. Python В Системе Linux. Проверка Версии Python. Установка Текстового Редактора. Запуск Программы Hello World. Запуск Python В Терминальном Сеансе. Python В Системе Os X. Проверка Наличия Python. Запуск Python В Терминальном Сеансе. Установка Текстового Редактора. Настройка Sublime Text Для Python 3. Запуск Программы Hello World. Python В Системе Windows. Установка Python. Запуск Терминального Сеанса. Запуск Python В Терминальном Сеансе. Установка Текстового Редактора. Настройка Geany. Запуск Программы Hello World. Решение Проблем С Установкой. Запуск Программ Python В Терминале. В Linux И Os X. В Windows. Итоги. 2. Переменные И Простые Типы Данных. Что Происходит При Запуске Hello_World.Py. Переменные. Выбор Имен И Использование Переменных. Предотвращение Ошибок В Именах При Использовании Переменных. Строки. Изменение Регистра Символов В Строках. Конкатенация. Табуляции И Разрывы Строк. Удаление Пропусков. Предотвращение Синтаксических Ошибок В Строках. Вывод В Python 2. Числа. Целые Числа. Вещественные Числа. Предотвращение Ошибок Типов С Использованием Функции Str(). Целые Числа В Python 2. Комментарии. Как Создаются Комментарии? Какие Комментарии Следует Писать? Философия Python. Итоги. 3. Списки. Что Такое Список? Обращение К Элементам Списка. Индексы Начинаются С 0, А Не С 1. Использование Отдельных Элементов Из Списка. Изменение, Добавление И Удаление Элементов. Изменение Элементов В Списке. Добавление Элементов В Список. Присоединение Элементов В Конец Списка. Вставка Элементов В Список. Удаление Элементов Из Списка. Удаление Элемента С Использованием Команды Del. Удаление Элемента С Использованием Метода Pop(). Извлечение Элементов Из Произвольной Позиции Списка. Удаление Элементов По Значению. Упорядочение Списка. Постоянная Сортировка Списка Методом Sort(). Временная Сортировка Списка Функцией Sorted(). Вывод Списка В Обратном Порядке. Определение Длины Списка. Ошибки Индексирования При Работе Со Списками. Итоги. 4. Работа Со Списками. Перебор Всего Списка. Подробнее О Циклах. Более Сложные Действия В Циклах For. Выполнение Действий После Цикла For. Предотвращение Ошибок С Отступами. Пропущенный Отступ. Пропущенные Отступы В Других Строках. Лишние Отступы. Лишние Отступы После Цикла. Пропущенное Двоеточие. Создание Числовых Списков. Функция Range(). Использование Range() Для Создания Числового Списка. Простая Статистика С Числовыми Списками. Генераторы Списков. Работа С Частью Списка. Создание Среза. Перебор Содержимого Среза. Копирование Списка. Кортежи. Определение Кортежа. Перебор Всех Значений В Кортеже. Замена Кортежа. Стиль Программирования. Рекомендации По Стилю. Отступы. Длина Строк. Пустые Строки. Другие Рекомендации. Итоги. 5. Команды If. Простой Пример. Проверка Условий. Проверка Равенства. Проверка Равенства Без Учета Регистра. Проверка Неравенства. Сравнения Чисел. Проверка Нескольких Условий. Использование And Для Проверки Нескольких Условий. Использование Or Для Проверки Нескольких Условий. Проверка Вхождения Значений В Список. Проверка Отсутствия Значения В Списке. Логические Выражения. Команды If. Простые Команды If. Команды If-Else. Цепочки If-Elif-Else. Серии Блоков Elif. Отсутствие Блока Else. Проверка Нескольких Условий. Использование Команд If Со Списками. Проверка Специальных Значений. Проверка Наличия Элементов В Списке. Множественные Списки. Оформление Команд If. Итоги. 6. Словари. Простой Словарь. Работа Со Словарями. Обращение К Значениям В Словаре. Добавление Новых Пар «Ключ—Значение». Создание Пустого Словаря. Изменение Значений В Словаре. Удаление Пар «Ключ—Значение». Словарь С Однотипными Объектами. Перебор Словаря. Перебор Всех Пар «Ключ—Значение». Перебор Всех Ключей В Словаре. Упорядоченный Перебор Ключей Словаря. Перебор Всех Значений В Словаре. Вложение. Список Словарей. Список В Словаре. Словарь В Словаре. Итоги. 7. Ввод Данных И Циклы While. Как Работает Функция Input(). Содержательные Подсказки. Использование Int() Для Получения Числового Ввода. Оператор Вычисления Остатка. Ввод Данных В Python 2.7. Циклы While. Цикл While В Действии. Пользователь Решает Прервать Работу Программы. Флаги. Команда Break И Выход Из Цикла. Команда Continue И Продолжение Цикла. Предотвращение Зацикливания. Использование Цикла While Со Списками И Словарями. Удаление Всех Вхождений Конкретного Значения Из Списка. Заполнение Словаря Данными, Введенными Пользователем. Итоги. 8. Функции. Определение Функции. Передача Информации Функции. Аргументы И Параметры. Передача Аргументов. Позиционные Аргументы. Многократные Вызовы Функций. О Важности Порядка Позиционных Аргументов. Именованные Аргументы. Значения По Умолчанию. Эквивалентные Вызовы Функций. Предотвращение Ошибок В Аргументах. Возвращаемое Значение. Возвращение Простого Значения. Необязательные Аргументы. Возвращение Словаря. Использование Функции В Цикле While. Передача Списка. Изменение Списка В Функции. Запрет Изменения Списка В Функции. Передача Произвольного Набора Аргументов. Позиционные Аргументы С Произвольными Наборами Аргументов. Использование Произвольного Набора Именованных Аргументов. Хранение Функций В Модулях. Импортирование Всего Модуля. Импортирование Конкретных Функций. Назначение Псевдонима Для Функции. Назначение Псевдонима Для Модуля. Импортирование Всех Функций Модуля. Стилевое Оформление Функций. Итоги. 9. Классы. Создание И Использование Класса. Создание Класса Dog. Метод __Init__(). Создание Классов В Python 2.7. Создание Экземпляра Класса. Обращение К Атрибутам. Вызов Методов. Создание Нескольких Экземпляров. Работа С Классами И Экземплярами. Класс Car. Назначение Атрибуту Значения По Умолчанию. Изменение Значений Атрибутов. Прямое Изменение Значения Атрибута. Изменение Значения Атрибута С Использованием Метода. Изменение Значения Атрибута С Приращением. Наследование. Метод __Init__() Класса-Потомка. Наследование В Python 2.7. Определение Атрибутов И Методов Класса-Потомка. Переопределение Методов Класса-Родителя. Экземпляры Как Атрибуты. Моделирование Объектов Реального Мира. Импортирование Классов. Импортирование Одного Класса. Хранение Нескольких Классов В Модуле. Импортирование Нескольких Классов Из Модуля. Импортирование Всего Модуля. Импортирование Всех Классов Из Модуля. Импортирование Модуля В Модуль. Выработка Рабочего Процесса. Стандартная Библиотека Python. Оформление Классов. Итоги. 10. Файлы И Исключения. Чтение Из Файла. Чтение Всего Файла. Пути К Файлам. Чтение По Строкам. Создание Списка Строк По Содержимому Файла. Работа С Содержимым Файла. Большие Файлы: Миллион Цифр. Проверка Дня Рождения. Запись В Файл. Запись В Пустой Файл. Многострочная Запись. Присоединение Данных К Файлу. Исключения. Обработка Исключения Zerodivisionerror. Блоки Try-Except. Использование Исключений Для Предотвращения Аварийного Завершения Программы. Блок Else. Обработка Исключения Filenotfounderror. Анализ Текста. Работа С Несколькими Файлами. Ошибки Без Уведомления Пользователя. О Каких Ошибках Нужно Сообщать? Сохранение Данных. Функции Json.Dump() И Json.Load(). Сохранение И Чтение Данных, Сгенерированных Пользователем. Рефакторинг. Итоги. 11. Тестирование. Тестирование Функции. Прохождение Теста. Сбой Теста. Реакция На Сбойный Тест. Добавление Новых Тестов. Тестирование Класса. Разные Методы Assert. Класс Для Тестирования. Тестирование Класса Anonymoussurvey. Метод Setup(). Итоги. Часть II. Проекты. Программирование Игры На Языке Python. Визуализация Данных. Веб-Приложения. Проект 1. Инопланетное Вторжение. Планирование Проекта. Установка Pygame. Установка Пакетов Python С Использованием Pip. Проверка Pip В Linux И Os X. Проверка Pip В Windows. Установка Pip. Установка Pip В Linux И Os X. Установка Pip В Windows. Установка Pygame В Linux. Установка Pygame В Os X. Установка Pygame В Windows. Создание Проекта Игры. Создание Окна Pygame И Обработка Ввода. Назначение Цвета Фона. Создание Класса Settings. Добавление Изображения Корабля. Создание Класса Ship. Вывод Корабля На Экран. Рефакторинг: Модуль Game_Functions. Функция Check_Events(). Функция Update_Screen(). Управление Кораблем. Обработка Нажатия Клавиши. Непрерывное Перемещение. Перемещение Влево И Вправо. Регулировка Скорости Корабля. Ограничение Перемещений. Рефакторинг Check_Events(). В Двух Словах. Alien_Invasion.Py. Settings.Py. Game_Functions.Py. Ship.Py. Стрельба. Добавление Настроек. Создание Класса Bullet. Группировка Пуль. Обработка Выстрелов. Удаление Старых Пуль. Ограничение Количества Пуль. Создание Функции Update_Bullets(). Создание Функции Fire_Bullet(). Итоги. 13. Осторожно, Пришельцы! Анализ Проекта. Создание Пришельца. Создание Класса Alien. Создание Экземпляра Alien. Отображение Пришельца На Экране. Построение Флота. Вычисление Количества Пришельцев В Одном Ряду. Создание Ряда. Создание Флота. Рефакторинг Create_Fleet(). Добавление Рядов. Перемещение Флота. Перемещение Вправо. Создание Настроек Для Направления Флота. Проверка Достижения Края. Снижение Флота И Смена Направления. Уничтожение Пришельцев. Выявление Коллизий. Создание Больших Пуль Для Тестирования. Восстановление Флота. Ускорение Пуль. Рефакторинг Update_Bullets(). Завершение Игры. Обнаружение Коллизий С Кораблем. Обработка Столкновений С Кораблем. Достижение Нижнего Края Экрана. Конец Игры. Определение Исполняемых Частей Игры. Итоги. 14. Ведение Счета. Добавление Кнопки Play. Создание Класса Button. Вывод Кнопки На Экран. Запуск Игры. Сброс Игры. Блокировка Кнопки Play. Сокрытие Указателя Мыши. Повышение Сложности. Изменение Настроек Скорости. Сброс Скорости. Подсчет Очков. Вывод Счета. Создание Экземпляра Scoreboard. Обновление Счета При Уничтожении Пришельцев. Начисление Очков За Все Попадания. Увеличение Стоимости Пришельцев. Округление Счета. Рекорды. Вывод Уровня. Вывод Количества Кораблей. Итоги. Проект 2. Визуализация Данных. Установка Matplotlib. В Linux. В Os X. В Windows. Тестирование Matplotlib. Галерея Matplotlib. Построение Простого Графика. Изменение Типа Надписей И Толщины Графика. Корректировка Графика. Нанесение И Оформление Отдельных Точек Функцией Scatter(). Вывод Серии Точек Функцией Scatter(). Автоматическое Вычисление Данных. Удаление Контуров Точек. Определение Пользовательских Цветов. Цветовые Карты. Автоматическое Сохранение Диаграмм. Случайное Блуждание. Создание Класса Randomwalk(). Выбор Направления. Вывод Случайного Блуждания. Генерирование Нескольких Случайных Блужданий. Оформление Случайного Блуждания. Назначение Цветов. Начальные И Конечные Точки. Удаление Осей. Добавление Точек. Изменение Размера Диаграммы Для Заполнения Экрана. Моделирование Бросков Кубиков В Pygal. Установка Pygal. Галерея Pygal. Создание Класса Кубика. Бросок Кубика. Анализ Результатов. Построение Гистограммы. Бросок Двух Кубиков. Броски Кубиков С Разным Числом Граней. Итоги. 16. Загрузка Данных. Формат Csv. Разбор Заголовка Файлов Csv. Печать Заголовков И Их Позиций. Извлечение И Чтение Данных. Нанесение Данных На Диаграмму. Модуль Datetime. Представление Дат На Диаграмме. Расширение Временного Диапазона. Нанесение На Диаграмму Второй Серии Данных. Цветовое Выделение Части Диаграммы. Проверка Ошибок. Формат Json. Загрузка Демографических Данных. Извлечение Необходимых Данных. Преобразование Строк В Числовые Значения. Получение Кодов Стран. Построение Карты Мира. Нанесение Числовых Данных На Карту Мира. Построение Полной Карты Населения. Группировка Стран По Населению. Оформление Карты Мира В Pygal. Осветление Темы. Итоги. 17. Работа С Api. Использование Api Веб-Приложений. Git И Github. Запрос Данных С Использованием Вызовов Api. Установка Пакета Requests. Обработка Ответа Api. Работа Со Словарем Ответа. Сводка Самых Популярных Репозиториев. Проверка Ограничений Частоты Обращений Api. Визуализация Репозиториев С Использованием Pygal. Доработка Диаграмм Pygal. Добавление Подсказок. Нанесение Данных На Диаграмму. Добавление Активных Ссылок На Диаграмму. Api Hacker News. Итоги. Проект 3. Веб-Приложения. Подготовка К Созданию Проекта. Написание Спецификации. Создание Виртуальной Среды. Установка Virtualenv. Активизация Виртуальной Среды. Установка Django. Создание Проекта В Django. Создание Базы Данных. Просмотр Проекта. Начало Работы Над Приложением. Определение Моделей. Активизация Моделей. Административный Сайт Django. Создание Суперпользователя. Регистрация Модели На Административном Сайте. Добавление Тем. Определение Модели Entry. Миграция Модели Entry. Регистрация Entry На Административном Сайте. Интерактивная Оболочка Django. Создание Страниц: Домашняя Страница Learning Log. Сопоставление Url. Написание Представления. Написание Шаблона. Построение Других Страниц. Наследование Шаблонов. Родительский Шаблон. Дочерний Шаблон. Страница Со Списком Тем. Схема Url Для Тем. Представление Topics. Шаблон Topics. Страницы Отдельных Тем. Схема Url Для Отдельных Тем. Представление Отдельной Темы. Шаблон Отдельной Темы. Ссылки На Странице. Итоги. 19. Учетные Записи Пользователей. Редактирование Данных. Добавление Новых Тем. Объект Modelform. Url-Адрес Для New_Topic. Функция Представления New_Topic(). Запросы Get И Post. Шаблон New_Topic. Создание Ссылки На Страницу New_Topic. Добавление Новых Записей. Класс Entryform. Url-Адрес Для New_Entry. Функция Представления New_Entry(). Шаблон New_Entry. Создание Ссылки На Страницу New_Entry. Добавление Записей. Url-Адрес Для Edit_Entry. Функция Представления Edit_Entry(). Шаблон Edit_Entry. Создание Ссылки На Страницу Edit_Entry. Создание Учетных Записей Пользователей. Приложение Users. Добавление Пользователей В Settings.Py. Включение Url-Адресов Из Users. Страница Входа. Шаблон Login. Создание Ссылки На Страницу Входа. Использование Страницы Входа. Выход. Url-Адрес Выхода. Функция Представления Logout_View(). Ссылка На Представление Выхода. Страница Регистрации. Url-Адрес Регистрации. Функция Представления Register(). Шаблон Регистрации. Создание Ссылки На Страницу Регистрации. Редактирование Данных. Ограничение Доступа С Использованием @Login_Required. Ограничение Доступа К Страницам Тем. Ограничение Доступа В Learning Log. Связывание Данных С Конкретными Пользователями. Изменение Модели Topic. Идентификация Существующих Пользователей. Миграция Базы Данных. Ограничение Доступа К Темам. Защита Тем Пользователя. Защита Страницы Edit_Entry. Связывание Новых Тем С Текущим Пользователем. Итоги. 20. Оформление И Развертывание Приложения. Оформление Приложения Learning Log. Приложение Django-Bootstrap3. Использование Bootstrap Для Оформления Learning Log. Изменение Base.Html. Определение Заголовков Html. Определение Навигационной Панели. Определение Основного Раздела Страницы. Модификация Домашней Страницы. Оформление Страницы Входа. Оформление Страницы New_Topic. Оформление Страницы Со Списком Тем. Оформление Записей На Странице Темы. Развертывание Learning Log. Создание Учетной Записи Heroku. Установка Инструментария Heroku Toolbelt. Установка Необходимых Пакетов. Создание Списка Пакетов С Файлом Requirements.Txt. Назначение Исполнительной Среды Python. Изменение Файла Settings.Py Для Heroku. Создание Файла Procfile Для Запуска Процессов. Изменение Файла Wsgi.Py Для Heroku. Создание Каталога Для Статических Файлов. Локальное Использование Сервера Gunicorn. Использование Git Для Управления Файлами Проекта. Установка Git. Настройка Git. Игнорирование Файлов. Закрепление Состояния Проекта. Отправка Проекта. Подготовка Базы Данных В Heroku. Доработка Развернутого Приложения. Создание Суперпользователя В Heroku. Создание Удобного Url-Адреса На Heroku. Безопасность Проекта. Закрепление И Отправка Изменений. Создание Специализированных Страниц Ошибок. Создание Пользовательских Шаблонов. Локальный Просмотр Страниц Ошибок. Отправка Изменений На Heroku. Использование Метода Get_Object_Or_404(). Текущая Разработка. Параметр Secret_Key. Удаление Проекта С Heroku. Итоги. Приложение А. Установка Python. Python В Системе Linux. Определение Установленной Версии. Установка Python 3 В Linux. Python В Os X. Определение Установленной Версии. Использование Homebrew Для Установки Python 3. Установка Homebrew. Установка Python 3. Python В Windows. Установка Python 3 В Windows. Поиск Интерпретатора Python. Включение Python В Переменную Path. Ключевые Слова И Встроенные Функции Python. Ключевые Слова Python. Встроенные Функции Python. Приложение Б. Текстовые Редакторы. Geany. Установка Geany В Linux. Установка Geany В Windows. Запуск Программ Python Из Geany. Настройка Geany. Преобразование Табуляций В Пробелы. Выбор Индикатора Длины Строки. Расстановка И Отмена Отступов В Блоках. Преобразование Блоков В Комментарий. Sublime Text. Установка Sublime Text В Os X. Установка Sublime Text В Linux. Установка Sublime Text В Windows. Запуск Программ Python В Sublime Text. Настройка Sublime Text. Настройка Sublime Text. Преобразование Табуляций В Пробелы. Выбор Индикатора Длины Строки. Расстановка И Отмена Отступов В Блоках. Idle. Установка Idle В Linux. Установка Idle В Os X. Установка Idle В Windows. Настройка Idle. Расстановка И Отмена Отступов В Блоках. Преобразование Блоков В Комментарий. Emacs И Vim. Приложение В. Помощь И Поддержка. Первые Шаги. Попробуйте Заново. Сделайте Перерыв. Обратитесь К Ресурсам Этой Книги. Поиск В Интернете. Stack Overflow. Официальная Документация Python. Официальная Документация Библиотек. R/Learnpython. Сообщения В Блогах. Irc (Internet Relay Chat). Создание Учетной Записи Irc. Выбор Канала. Культура Irc. Приложение Г. Git И Контроль Версий. Установка Git. Установка Git В Linux. Установка Git В Os X. Установка Git В Windows. Настройка Git. Создание Проекта. Игнорирование Файлов. Инициализация Репозитория. Проверка Статуса. Добавление Файлов В Репозиторий. Закрепление. Просмотр Журнала. Второе Закрепление. Отмена Изменений. Извлечение Предыдущих Закреплений. Удаление Репозитория. Послесловие. Об Авторе. О Научном Рецензенте. Благодарности.

Программирование для Linux. Профессиональный подход.

Об Авторах. О Научных Консультантах. Благодарности. Gnu И Linux. Общая Лицензия Gnu. Для Кого Предназначена Эта Книга. Соглашения, Принятые В Книге. Часть I. Сложные Вопросы Программирования В Среде Unix/Linux. Глава 1. Начало. 1.1. Редактор Emacs. Несколько Слов О Emacs. 1.1.1. Открытие Исходного Файла C/C++ 1.1.2. Автоматическое Форматирование. 1.1.3. Синтаксические Выделения. 1.2. Компиляторы Gcc. Листинг 1.1. (Main.C) Исходный Файл На Языке С. Листинг 1.2. (Reciprocal.Cpp) Исходный Файл На Языке C++ Листинг 1.3. (Reciprocal.Hpp) Файл Заголовков. 1.2.1. Компиляция Одного Исходного Файла. 1.2.2. Компоновка Объектных Файлов. 1.3. Автоматизация Процесса С Помощью Gnu-Утилиты Make. 1.4. Gnu-Отладчик Gdb. 1.4.1. Компиляция С Включением Отладочной Информации. 1.4.2. Запуск Отладчика. 1.5. Поиск Дополнительной Информации. 1.5.1. Интерактивная Документация. 1.5.2. Система Info. 1.5.3. Файлы Заголовков. 1.5.4. Исходные Тексты. Глава 2. Написание Качественных Программ Для Среды Gnu/Linux. 2.1. Взаимодействие Со Средой Выполнения. 2.1.1. Список Аргументов. Листинг 2.1. (Arglist.C) Использование Параметров Argc И Argv. 2.1.2. Соглашения По Работе С Командной Строкой В Gnu/Linux. 2.1.3. Функция Getopt_Long(). Листинг 2.2. (Getopt_Long.C) Использование Функции Getopt_Long(). 2.1.4. Стандартный Ввод-Вывод. 2.1.5. Коды Завершения Программы. 2.1.6. Среда Выполнения. Листинг 2.3. (Print-Env.C) Вывод Переменных Среды. Листинг 2.4. (Client.С) Часть Сетевой Клиентской Программы. 2.1.7. Временные Файлы. Функция Mkstemp(). Листинг 2.5. (Temp_File.C) Использование Функции Mkstemp(). Функция Tmpfile(). 2.2. Защита От Ошибок. 2.2.1. Макрос Assert(). 2.2.2. Ошибки Системных Вызовов. 2.2.3. Коды Ошибок Системных Вызовов. 2.2.4. Ошибки Выделения Ресурсов. Листинг 2.6. (Readfile.C) Освобождение Ресурсов При Возникновении Аварийных Ситуаций. 2.3. Создание И Использование Библиотек. 2.3.1. Архивы. Листинг 2.7. (Test.C) Первый Исходный Файл. Листинг 2.8. (App.C) Второй Исходный Файл. 2.3.2. Совместно Используемые Библиотеки. Позиционно-Независимый Код. Переменная LD_Library_Path. 2.3.3. Стандартные Библиотеки. 2.3.4. Зависимости Между Библиотеками. Листинг 2.9. (Tifftest.C) Применение Библиотеки Libtiff. 2.3.5. Преимущества И Недостатки Библиотек. 2.3.6. Динамическая Загрузка И Выгрузка. Глава 3. Процессы. 3.1. Знакомство С Процессами. 3.1.1. Идентификаторы Процессов. Листинг 3.1. (Print-Pid.C) Вывод Идентификатора Процесса. 3.1.2. Получение Списка Активных Процессов. Форматы Вывода Команды Ps. 3.1.3. Уничтожение Процесса. 3.2. Создание Процессов. 3.2.1. Функция System(). Листинг 3.2. (System.C) Использование Функции System(). 3.2.2. Функции Fork() И Exec(). Вызов Функции Fork(). Листинг 3.3. (Fork.C) Ветвление Программы С Помощью Функции Fork(). Семейство Функций Exec(). Совместное Использование Функций Fork() И Exec(). Листинг 3.4. (Fork-Exec.С) Совместное Использование Функций Fork() И Exec(). 3.2.3. Планирование Процессов. 3.3. Сигналы. Листинг 3.5. (Sigusr1.C) Корректное Применение Обработчика Сигнала. 3.4. Завершение Процесса. 3.4.1. Ожидание Завершения Процесса. 3.4.2. Системные Вызовы Wait(). 3.4.3. Процессы-Зомби. Листинг 3.6. (Zombie.C) Создание Процесса-Зомби. 3.4.4. Асинхронное Удаление Дочерних Процессов. Листинг 3.7. (Sigchld.C) Удаление Дочерних Процессов В Обработчике Сигнала Sigchld. Глава 4. Потоки. 4.1. Создание Потока. Листинг 4.1. (Thread-Create.C) Создание Потока. 4.1.1. Передача Данных Потоку. Листинг 4.2. (Thread-Create2.C) Создание Двух Потоков. 4.1.2. Ожидание Завершения Потоков. Листинг 4.3. Исправленная Функция Main() Из Файла Thread-Create.C. 4.1.3. Значения, Возвращаемые Потоками. Листинг 4.4. (Primes.С) Вычисление Простых Чисел В Потоке. 4.1.4. Подробнее Об Идентификаторах Потоков. 4.1.5. Атрибуты Потоков. Листинг 4.5. (Detached.C) Шаблон Программы, Создающей Отсоединенный Поток. 4.2. Отмена Потока. 4.2.1. Синхронные И Асинхронные Потоки. 4.2.2. Неотменяемые Потоки. Листинг 4.6. (Critical_Section.C) Защита Банковской Транзакции С Помощью Критической Секции. 4.2.3. Когда Необходимо Отменять Поток. 4.3. Потоковые Данные. Листинг 4.7. (Tsd.C) Создание Отдельного Журнального Файла Для Каждого Потока С Помощью Области Потоковых Данных. 4.3.1. Обработчики Очистки. Листинг 4.8. (Cleanup.C) Фрагмент Программы, Содержащий Обработчик Очистки Потока. 4.3.2. Очистка Потоковых Данных В C++ Листинг 4.9. (CXX-Exit.Cpp) Безопасное Завершение Потока В C++ 4.4. Синхронизация Потоков И Критические Секции. 4.4.1. Состояние Гонки. Листинг 4.10. (Job-Queue1.C) Потоковая Функция, Работающая С Очередью Заданий. 4.4.2. Исключающие Семафоры. Листинг 4.11. (Job-Queue2.C) Работа С Очередью Заданий, Защищенной Исключающим Семафором. 4.4.3. Взаимоблокировки Исключающих Семафоров. 4.4.4. Неблокирующие Проверки Исключающих Семафоров. 4.4.5. Обычные Потоковые Семафоры. Листинг 4.12. (Job-Queue3.C) Работа С Очередью Заданий С Применением Семафора. 4.4.6. Сигнальные (Условные) Переменные. Листинг 4.15. (Spin-Condvar.C) Простейшая Реализация Сигнальной Переменной. Листинг 4.14. (Condvar.C) Управление Работой Потока С Помощью Сигнальной Переменной. 4.4.7. Взаимоблокировки Двух И Более Потоков. 4.5. Реализация Потоков В Linux. Листинг 4.15. (Thread-Pid.C) Вывод Идентификаторов Потоков. Сообщения Интерпретатора Команд» Касающиеся Управления Заданиями. 4.5.1. Обработка Сигналов. 4.5.2. Системный Вызов Clone(). 4.6. Сравнение Процессов И Потоков. Глава 5. Взаимодействие Процессов. 5.1. Совместно Используемая Память. 5.1.1. Быстрое Локальное Взаимодействие. 5.1.2. Модель Памяти. 5.1.3. Выделение Сегментов Памяти. 5.1.4. Подключение И Отключение Сегментов. 5.1.5. Контроль И Освобождение Совместно Используемой Памяти. 5.1.6. Пример Программы. Листинг 5.1. (Shm.C) Пример Совместного Использования Памяти. 5.1.7. Отладка. 5.1.8. Проблема Выбора. 5.2. Семафоры Для Процессов. 5.2.1. Выделение И Освобождение Семафоров. Листинг 5.2. (Sem_All_Deall.C) Выделение И Освобождение Двоичного Семафора. 5.2.2. Инициализация Семафоров. Листинг 5.3. (Sem_Init.C) Инициализация Двоичного Семафора. 5.2.3. Операции Ожидания И Установки. Листинг 5.4. (Sem_Pv.C) Ожидание И Установка Двоичного Семафора. 5.2.4. Отладка Семафоров. 5.3. Отображение Файлов В Памяти. 5.3.1. Отображение В Памяти Обычного Файла. 5.3.2. Примеры Программ. Листинг 5.5. (Mmap-Write.C) Запись Случайного Числа В Файл, Отображаемый В Памяти. Листинг 5.6. (Mmap-Read.C) Чтение Случайного Числа Из Файла, Отображаемого В Памяти. 5.3.3. Совместный Доступ К Файлу. 5.3.4. Частные Отображаемые Области. 5.3.5. Применения Функции Mmap(). 5.4. Каналы. 5.4.1. Создание Каналов. 5.4.2. Взаимодействие Родительского И Дочернего Процессов. Листинг 5.7. (Pipe.C) Общение С Дочерним Процессом Посредством Канала. 5.4.3. Перенаправление Стандартных Потоков Ввода, Вывода И Ошибок. Листинг 5.8. (Dup2.C) Перенаправление Выходного Потока Канала С Помощью Функции Dup2(). 5.4.4. Функции Popen() И Pclose(). Листинг 5.9. (Popen.C) Использование Функций Popen() И Pclose(). 5.4.5. Каналы Fifo. Создание Fifo-Файла. Доступ К Fifo-Файлу. Отличия От Именованных Каналов В Windows. 5.5. Сокеты. 5.5.1. Концепции Сокетов. 5.5.2. Системные Вызовы. Создание И Уничтожение Сокетов. Вызов Функции Connect(). Передача Данных. 5.5.3. Серверы. 5.5.4. Локальные Сокеты. 5.5.5. Примеры Программ, Работающих С Локальными Сокетами. Листинг 5.10. (Socket-Server.C) Сервер Локального Сокета. Листинг 5.11. (Socket-Client.C) Клиент Локального Сокета. 5.5.6. Internet-Сокеты. Dns-Имена. Листинг 5.12. (Socket-Inet.C) Чтение Страницы С Web-Сервера. Стандартные Номера Портов. 5.5.7. Пары Сокетов. Часть II. Секреты Linux. Глава 6. Устройства. Будьте Осторожны При Доступе К Устройствам! 6.1. Типы Устройств. Опасность Доступа К Блочному Устройству. 6.2. Номера Устройств. 6.3. Файловые Ссылки На Устройства. 6.3.1. Каталог /Dev. 6.3.2. Доступ К Устройству Путем Открытия Файла. 6.4. Аппаратные Устройства. 6.5. Специальные Устройства. 6.5.1. /Dev/Null. 6.5.2. /Dev/Zero. 6.5.3. /Dev/Full. 6.5.4. Устройства Генерирования Случайных Чисел. Листинг 6.1. (Random_Number.C) Генерирование Случайного Числа С Помощью Файла /Dev/Random. 6.5.5. Устройства Обратной Связи. 6.6. Псевдотерминалы. 6.6.1. Пример Работы С Псевдотерминалом. 6.7. Функция Ioctl(). Листинг 6.2. (Cdrom-Eject.C) Извлечение Компакт-Диска Из Дисковода. Глава 7. Файловая Система /Proc. 7.1. Извлечение Информации Из Файловой Системы /Proc. Листинг 7.1. (Clock-Speed.C) Определение Частоты Процессора Путем Анализа Файла /Proc/Cpuinfo. 7.2. Каталоги Процессов. 7.2.1. Файл /Proc/Self. Листинг 7.2. (Get-Pid.C) Получение Идентификатора Процесса Из Файла /Proc/Self. 7.2.2. Список Аргументов Процесса. Листинг 7.3. (Print-Arg-List.C) Отображение Списка Аргументов Указанного Процесса. 7.2.3. Переменные Среды Процесса. Листинг 7.4. (Print-Environment.C) Отображение Переменных Среды Процесса. 7.2.4. Исполняемый Файл Процесса. Листинг 7.5. (Get-Exe-Path.C) Определение Путевого Имени Текущего Исполняемого Файла. 7.2.5. Дескрипторы Файлов Процесса. Листинг 7.6. (Open-And-Spin.C) Открытие Файла Для Чтения. 7.2.6. Статистика Использования Процессом Памяти. 7.2.7. Статистика Процесса. 7.3. Аппаратная Информация. 7.3.1. Центральный Процессор. 7.3.2. Аппаратные Устройства. 7.3.3. Шина Pci. 7.3.4. Последовательные Порты. 7.4. Информация О Ядре. 7.4.1. Версия Ядра. 7.4.2. Имя Компьютера И Домена. 7.4.3. Использование Памяти. 7.5. Дисководы, Точки Монтирования И Файловые Системы. 7.5.1. Файловые Системы. 7.5.2. Диски И Разделы. 7.5.3. Точки Монтирования. 7.5.4. Блокировки. 7.6. Системная Статистика. Листинг 7.7. (Print-Uptime.C) Отображение Времени Работы И Времени Простоя Системы. Глава 8. Системные Вызовы Linux. 8.1. Команда Strace. 8.2. Функция Access(): Проверка Прав Доступа К Файлу. Листинг 8.1. (Check-Access.C) Проверка Прав Доступа К Файлу. 8.3. Функция Fcntl(): Блокировки И Другие Операции Над Файлами. Листинг 8.2. (Lock-File.C) Установка Блокировки Записи С Помощью Функции Fcntl(). 8.4. Функции Fsync() И Fdatasync(): Очистка Дисковых Буферов. Листинг 8.3. (Write_Journal_Entry.C) Запись Строки В Журнальный Файл С Последующей Синхронизацией. 8.5. Функции Getrlimit() И Setrlimit(): Лимиты Ресурсов. Листинг 8.4. (Limit-Cpu.C) Задание Ограничения На Использование Нейтрального Процессора. 8.6. Функция Getrusage(): Статистика Процессов. Листинг 8.5. (Prinf-Cpu-Times.C) Определение Пользовательского И Системного Времени, Затраченного На Выполнение Текущего Процесса. 8.7, Функция Gettimeofday(): Системные Часы. Листинг 8.6. (Print-Time.C) Отображение Даты И Времени. 8.8. Семейство Функций Mlock(): Блокирование Физической Памяти. 8.9. Функция Mprotect(): Задание Прав Доступа К Памяти. Корректное Выделение Памяти. Листинг 8.7. (Mprotect.C) Обнаружение Попыток Доступа К Памяти Благодаря Функции Mprotect(). 8.10. Функция Nanosleep(): Высокоточная Пауза. Листинг 8.8. (Better_Sleep.C) Высокоточная Реализация Функции Sleep(). 8.11. Функция Readlink(): Чтение Символических Ссылок. Листинг 8.9. (Print-Symlink.С) Отображение Адресата Символической Ссылки. 8.12. Функция Sendfile(): Быстрая Передача Данных. Листинг 8.10. (Сору.С) Копирование Файла С Помощью Функции Sendfile(). 8.13. Функция Setitimer(): Задание Интервальных Таймеров. Листинг 8.11. (Itimer.C) Пример Создания Таймера. 8.14. Функция Sysinfo(): Получение Системной Статистики. Листинг 8.12. (Sysinfo.C) Вывод Системной Статистики. 8.15. Функция Uname(). Листинг 8.15. (Print-Uname.C) Вывод Информации О Ядре И Платформе. Глава 9. Встроенный Ассемблерный Код. 9.1. Когда Необходим Ассемблерный Код. 9.2. Простая Ассемблерная Вставка. 9.2.1. Преобразование Функции Asm() В Ассемблерные Инструкции. 9.3. Расширенный Синтаксис Ассемблерных Вставок. 9.3.1. Ассемблерные Инструкции. 9.3.2. Выходные Операнды. 9.3.3. Входные Операнды. 9.3.4. Модифицируемые Регистры. 9.4. Пример. Листинг 9.1. (Bit-Pos-Loop.C) Нахождение Позиции Старшего Значащего Бита В Цикле. Листинг 9.2. (Bit-Pos-Asm.C) Нахождение Позиции Старшего Значащего Бита С Помощью Инструкции Bsrl. 9.5. Вопросы Оптимизации. 9.6. Вопросы Сопровождения И Переносимости. Глава 10. Безопасность. 10.1. Пользователи И Группы. 10.1.1. Суперпользователь. 10.2. Идентификаторы Пользователей И Групп, Закрепленные За Процессами. Листинг 10.1. (Simpleid.C) Отображение Идентификаторов Пользователя И Группы. 10.3. Права Доступа К Файлам. Листинг 10.2. (Stat-Perm.C) Проверка Того, Имеет Ли Владелец Право Записи В Файл. 10.3.1. Проблема Безопасности: Программы Без Права Выполнения. 10.3.2. Sticky-Бит. 10.4. Реальные И Эффективные Идентификаторы. 10.4.1. Программы С Установленным Битом Suid. Листинг 10.3. (Setuid-Test.C) Проверка Идентификаторов. 10.5. Аутентификация Пользователей. Листинг 10.4. (Pam.C) Пример Использования Модулей Рам. 10.6. Дополнительные Проблемы Безопасности. 10.6.1. Переполнение Буфера. 10.6.2. Конкуренция Доступа К Каталогу /Tmp. Листинг 10.5. (Temp-File.C) Безопасное Создание Временного Файла. 10.6.3. Функции System() И Popen(). Листинг 10.6. (Grep-Dictionary.C) Поиск Слова В Словаре. Глава 11. Демонстрационное Linux-Приложение. 11.1. Обзор. 11.1.1. Существующие Ограничения. Протокол Http. 11.2. Реализация. Листинг 11.1. (Server.H) Объявления Функций И Переменных. 11.2.1. Общие Функции. Листинг 11.2. (Common.C) Функции Общего Назначения. 11.2.2. Загрузка Серверных Модулей. Листинг 11.3. (Module.C) Загрузка И Выгрузка Серверных Модулей. 11.2.3. Сервер. Листинг 11.4. (Server.C) Реализация Http-Сервера. 11.2.4. Основная Программа. Листинг 11.5. (Main.C) Главная Серверная Функция, Выполняющая Анализ Аргументов Командной Строки. 11.3. Модули. 11.3.1. Отображение Текущего Времени. Листинг 11.6. (Time.C) Серверный Модуль, Отображающий Текущее Время. 11.3.2. Отображение Версии Linux. Листинг 11.7. (Issue.C) Серверный Модуль, Отображающий Информацию О Дистрибутиве Linux. 11.3.3. Отображение Объема Свободного Дискового Пространства. Листинг 11.8. (Diskfree.C) Серверный Модуль, Отображающий Информацию О Свободном Дисковом Пространстве. 11.3.4. Статистика Выполняющихся Процессов. Листинг 11.9. (Processes.C) Серверный Модуль, Отображающий Таблицу Процессов. 11.4. Работа С Сервером. 11.4.1. Файл Makefile. Листинг 11.10. (Makefile) Файл Конфигурации Сервера. 11.4.2. Создание Сервера. 11.4.3. Запуск Сервера. 11.5. Вместо Эпилога. Часть III. Приложения. Приложение А. Вспомогательные Инструменты Разработки. А.1. Статический Анализ Программы. Листинг А.1. (Hello.C) Простейшая Программа. А.2. Поиск Ошибок В Динамической Памяти. А.2.1. Программа Для Тестирования Динамической Памяти. А.2.2. Проверка Функции Malloc(). А.2.3. Поиск Потерянных Блоков Памяти С Помощью Утилиты Mtrace. А.2.4. Библиотека Ccmalloc. А.2.5. Библиотека Electric Fence. А.2.6. Выбор Средств Отладки. А.2.7. Исходный Текст Программы, Работающей С Динамической Памятью. Листинг А.2. (Malloc-Use.C) Пример Работы С Динамической Памятью. A.3. Профилирование. А.3.1. Простейший Калькулятор. А.3.2. Сбор Профильной Информации. А.3.3. Отображение Профильных Данных. А.3.4. Как Работает Утилита Gprof. А.3.5. Исходные Тексты Программы-Калькулятора. Листинг А.3. (Calculator.C) Основная Часть Программы-Калькулятора. Листинг А.4. (Number.C) Арифметика Унарных Чисел. Листинг А.5. (Stack.C) Стек Унарных Чисел. Листинг А.6. (Definitions.H) Файл Заголовков Для Файлов Number.C И Stack.C. Приложение Б. Низкоуровневый Ввод-Вывод. Б.1. Чтение И Запись Данных. Б.1.1. Открытие Файла. Значения Umask. Листинг Б.1. (Createfile.C) Создание Файла. Б.1.2. Закрытие Файла. Б.1.3. Запись Данных. Листинг Б.2. (Timestamp.C) Запись В Файл Метки Времени. Листинг Б.3. (Write-All.C) Запись Буфера. Б.1.4. Чтение Данных. Чтение Текстовых Файлов Dos/Windows. Листинг Б.4. (Hexdump.C) Отображение Шестнадцатеричного Дампа Файла. Б.1.5. Перемещение По Файлу. Листинг Б.5. (Lseek-Huge.C) Создание Огромных Файлов С Помощью Функции Lseek(). Б.2. Функция Stat(). Листинг Б.6. (Read-File.C) Загрузка Файла В Буфер. Б.3. Векторные Чтение И Запись. Листинг Б.7. (Write-Args.C) Запись Списка Аргументов В Файл С Помощью Функции Writev(). Б.4. Взаимосвязь С Библиотечными Функциями Ввода-Вывода. Б.5. Другие Низкоуровневые Операции. Б.6. Чтение Содержимого Каталога. Листинг Б.8. (Listdir.C) Вывод Содержимого Каталога. Приложение В. Таблица Сигналов. Приложение Г. Internet-Ресурсы. Г.1. Общая Информация. Г.2. Информация О Программном Обеспечении Gnu/Linux. Г.3. Другие Ресурсы. Приложение Д. Лицензия На Публикацию Программ С Открытыми Кодами, Версия 1.0. I. Требования К Модифицированной И Немодифицированной Версиям. II. Авторские Права. III. Область Действия Лицензии. IV. Требования К Модифицированным Материалам. V. Рекомендации. VI. Предусмотренные Ограничения. Дополнение, Касающееся Политики Публикации. Приложение Е. Общая Лицензия Gnu[42]. Преамбула. Условия Копирования, Распространения И Модификации Программных Продуктов. Гарантия Отсутствует. Конец Условий. Как Применить Эти Требования К Новым Программным Продуктам. Примечания.

Интернет для тех, кому за…

Выбор Браузера. Закладки Нужных Страниц И Журнал Просмотров. Как Попасть На Нужный Сайт. Поисковые Системы И Их Особенности. Глава 2. Регистрация Электронной Почты. Выбор Сайта Для Регистрации Электронной Почты. Дополнительные Функции Электронных Ящиков. Глава 3. Защита От Мошенничества. Как И Где Правильно Производить Покупки. Особенности Оплаты В Сети. Глава 4. Все О Паролях. Как Придумать Пароль, Чтобы Он Был Надежным. Способы Запоминания Паролей. Глава 5. Вирусы И Вредоносные Программы. Как Предотвратить Появление Вирусов. Что Делать, Если Все-Таки Вирус Был Пойман. Глава 6. Средства Общения. Особенности Общения Через Интернет. Skype (Скайп). Icq (Айсикью), Qip (Кип), Miranda (Миранда). Qip И Icq Для Возможности Сравнения Их Интерфейса. Глава 7. Блоги. Самые Популярные Сайты Для Ведения Блога. Как Набрать Высокие Рейтинги. Поиск Единомышленников. Глава 8. Социальные Сети. Обзор Популярных Социальных Сетей. Odnoklassniki.Ru – Экспресс-Навигация По Сайту. Facebook.Com – Экспресс-Навигация По Сайту. Глава 9. Возможности Навигационной Системы. Обзор Сайтов, Представляющих Карты. Сервис «Яндекс-Карты». Глава 10. Просмотр Фильмов, Телепередач И Видео. Где И Как Искать Нужный Фильм. Полярные Сайты С Видео. Как И Где Посмотреть Пропущенную Передачу Или Сериал. Глава 11. Поиск Музыки. Поиск Любимых Композиций. Скачивание Музыки. Глава 12. Оплата Коммунальных Платежей. Почему Это Удобно. Как Сделать Это Правильно. Заключение.

Программирование на языке Ruby.

2. Модификация И Создание Пользовательских Классов. Объекты И Классы. Иерархия Классов И Полиморфизм. Создание Класса. Переменные Класса. Методы Класса. 3. Тестирование И Обработка Исклительных Ситуаций. Бесконечный Ввод Данных, Последовательности. Среднее Арифметическое Элементов Последовательности. 4. Стековый Калькулятор И Языки. 4.1 Рекурсивная Реализация Компилятора Правильных Формул. Рекурсивный Компилятор Формул (Recurscompf.Rb). Обработка Ввода Формул (Recurscomp.Rb). Класс Compf. Три Шага К Свободному По. Приложения. A. Язык Программирования Ruby. Базовые Типы. A.2 Термы И Выражения. Литература И Гиперссылки. Предметный Указатель. Примечания.

Программирование на языке Ruby.

Благодарности. Благодарности За Второе Издание. Благодарности За Первое Издание. Об Авторе. О Втором Издании. Как Организована Эта Книга. Об Исходных Текстах, Приведенных В Книге. «Путь Ruby». Глава 1. Обзор Ruby. 1.1. Введение В Объектно-Ориентированное Программирование. 1.1.1. Что Такое Объект. 1.1.2. Наследование. 1.1.3. Полиморфизм. 1.1.4. Еще Немного Терминов. 1.2. Базовый Синтаксис И Семантика Ruby. 1.2.1. Ключевые Слова И Идентификаторы. 1.2.2. Комментарии И Встроенная Документация. 1.2.3. Константы, Переменные И Типы. 1.2.4. Операторы И Приоритеты. 1.2.5. Пример Программы. 1.2.6. Циклы И Ветвление. 1.2.7. Исключения. 1.3. Ооп В Ruby. 1.3.1. Объекты. 1.3.2. Встроенные Классы. 1.3.3. Модули И Классы-Примеси. 1.3.4. Создание Классов. 1.3.5. Методы И Атрибуты. 1.4. Динамические Аспекты Ruby. 1.4.1. Кодирование Во Время Выполнения. 1.4.2. Отражение. 1.4.3. Отсутствующие Методы. 1.4.4 Сборка Мусора. 1.5. Потренируйте Свою Интуицию: Что Следует Запомнить. 1.5.1. Синтаксис. 1.5.2. Перспективы Программирования. 1.5.3. Предложение Case В Ruby. 1.5.4. Рубизмы И Идиомы. 1.5.5. Ориентация На Выражения И Прочие Вопросы. 1.6. Жаргон Ruby. 1.7. Заключение. Глава 2. Строки. 2.1. Представление Обычных Строк. 2.2. Альтернативная Нотация Для Представления Строк. 2.3. Встроенные Документы. 2.4. Получение Длины Строки. 2.5. Построчная Обработка. 2.6. Побайтовая Обработка. 2.7. Специализированное Сравнение Строк. Листинг 2.1. Специализированное Сравнение Строк. 2.8. Разбиение Строки На Лексемы. 2.9. Форматирование Строк. 2.10. Строки В Качестве Объектов Ввода/Вывода. 2.11. Управление Регистром. 2.12. Вычленение И Замена Подстрок. 2.13. Подстановка В Строках. 2.14. Поиск В Строке. 2.15. Преобразование Символов В Коды Ascii И Обратно. 2.16. Явные И Неявные Преобразования. 2.17. Дописывание В Конец Строки. 2.18. Удаление Хвостовых Символов Новой Строки И Прочих. 2.19. Удаление Лишних Пропусков. 2.20. Повтор Строк. 2.21. Включение Выражений В Строку. 2.22. Отложенная Интерполяция. 2.23. Разбор Данных, Разделенных Запятыми. 2.24. Преобразование Строки В Число (Десятичное Или Иное). 2.25. Кодирование И Декодирование Строк В Кодировке Rot13. 2.26. Шифрование Строк. 2.27. Сжатие Строк. 2.28. Подсчет Числа Символов В Строке. 2.29. Обращение Строки. 2.30. Удаление Дубликатов. 2.31. Удаление Заданных Символов. 2.32. Печать Специальных Символов. 2.33. Генерирование Последовательности Строк. 2.34. Вычисление 32-Разрядного Crc. 2.35. Вычисление Мd5-Свертки Строки. 2.36. Вычисление Расстояния Левенштейна Между Двумя Строками. Листинг 2.2. Расстояние Левенштейна. 2.37. Base64-Кодирование И Декодирование. 2.38. Кодирование И Декодирование Строк (Uuencode/Uudecode). 2.39. Замена Символов Табуляции Пробелами И Сворачивание Пробелов В Табуляторы. 2.40. Цитирование Текста. 2.41. Заключение. Глава 3. Регулярные Выражения. 3.1. Синтаксис Регулярных Выражений. 3.2. Компиляция Регулярных Выражений. 3.3. Экранирование Специальных Символов. 3.4. Якоря. 3.5. Кванторы. 3.6. Позитивное И Негативное Заглядывание Вперед. 3.7. Обратные Ссылки. 3.8. Классы Символов. 3.9. Обобщенные Регулярные Выражения. 3.10. Сопоставление Точки Символу Конца Строки. 3.11. Внутренние Модификаторы. 3.12. Внутренние Подвыражения. 3.13. Ruby И Oniguruma. 3.13.1. Проверка Наличия Oniguruma. 3.13.2. Сборка Oniguruma. 3.13.3. Некоторые Новые Возможности Oniguruma. 3.13.4 Позитивное И Негативное Оглядывание Назад. 3.13.5. Еще О Кванторах. 3.13.6. Именованные Соответствия. 3.13.7. Рекурсия В Регулярных Выражениях. 3.14. Примеры Регулярных Выражений. 3.14.1. Сопоставление С Ip-Адресом. 3.14.2. Сопоставление С Парой «Ключ-Значение». 3.14.3. Сопоставление С Числами, Записанными Римскими Цифрами. 3.14.4 Сопоставление С Числовыми Константами. 3.14.5 Сопоставление С Датой И Временем. 3.14.6. Обнаружение Повторяющихся Слов В Тексте. 3.14.7. Поиск Слов, Целиком Набранных Прописными Буквами. 3.14.8. Сопоставление С Номером Версии. 3.14.9. Еще Несколько Образцов. 3.15. Заключение. Глава 4. Интернационализация В Ruby. 4.1. Исторические Сведения И Терминология. 4.2. Кодировки В Пост-Ascii Мире. 4.2.1. Библиотека Jcode И Переменная $Kcode. 4.2.2. Возвращаясь К Строкам И Регулярным Выражениям. 4.2.3. Распознавание Кодировки. 4.2.4. Нормализация Unicode-Строк. 4.2.5. Упорядочение Строк. Листинг 4.1. Упорядочение Строк В Испанском Языке. 4.2.6. Преобразование Из Одной Кодировки В Другую. Листинг 4.2. Перекодирование Web-Страницы В Кодировку Utf-8. 4.3. Справочники Сообщений. 4.3.1 Исторические Сведения И Терминология. 4.3.2. Приступаем К Работе Со Справочниками Сообщений. 4.3.3. Локализация Простого Приложения. Листинг 4.3. Файл Myapp.Ро После Редактирования. 4.3.4. Прочие Замечания. 4.4. Заключение. Глава 5. Численные Методы. 5.1. Представление Чисел В Языке Ruby. 5.2. Основные Операции Над Числами. 5.3. Округление Чисел С Плавающей Точкой. 5.4. Сравнение Чисел С Плавающей Точкой. 5.5. Форматирование Чисел Для Вывода. 5.6. Вставка Разделителей При Форматировании Чисел. 5.7. Работа С Очень Большими Числами. 5.8. Использование Класса Bigdecimal. 5.9. Работа С Рациональными Числами. 5.10. Перемножение Матриц. 5.11. Комплексные Числа. 5.12. Библиотека Mathn. 5.13. Разложение На Простые Множители, Вычисление Нод И Нок. 5.14. Простые Числа. 5.15. Явные И Неявные Преобразования Чисел. 5.16. Приведение Числовых Значений. 5.17. Поразрядные Операции Над Числами. 5.18. Преобразование Системы Счисления. 5.19. Извлечение Кубических Корней, Корней Четвертой Степени И Т.Д. 5.20. Определение Порядка Байтов. 5.21. Численное Вычисление Определенного Интеграла. 5.22. Тригонометрия В Градусах, Радианах И Градах. 5.23. Неэлементарная Тригонометрия. 5.24. Вычисление Логарифмов По Произвольному Основанию. 5.25. Вычисление Среднего, Медианы И Моды Набора Данных. 5.26. Дисперсия И Стандартное Отклонение. 5.27. Вычисление Коэффициента Корреляции. 5.28. Генерирование Случайных Чисел. 5.29. Кэширование Функций С Помощью Метода Memoize. 5.30. Заключение. Глава 6. Символы И Диапазоны. 6.1. Символы. 6.1.1. Символы Как Перечисления. 6.1.2. Символы Как Метазначения. 6.1.3. Символы, Переменные И Методы. 6.1.4. Преобразование Строки В Символ И Обратно. 6.2. Диапазоны. 6.2.1. Открытые И Замкнутые Диапазоны. 6.2.2. Нахождение Границ Диапазона. 6.2.3. Обход Диапазона. 6.2.4. Проверка Принадлежности Диапазону. 6.2.5. Преобразование В Массив. 6.2.6. Обратные Диапазоны. 6.2.7. Оператор Переключения. Листинг 6.1. Класс Transition. 6.2.8. Нестандартные Диапазоны. Листинг 6.2. Класс Для Работы С Римскими Числами. 6.3. Заключение. Глава 7. Дата И Время. 7.1. Определение Текущего Момента Времени. 7.2. Работа С Конкретными Датами (После Точки Отсчета). 7.3. Определение Дня Недели. 7.4. Определение Даты Пасхи. 7.5. Вычисление N-Ого Дня Недели В Месяце. Листинг 7.1. Вычисление N-Ого Дня Недели В Месяце. 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. Взаимные Преобразования Объектов Date, Time И Datetime. Листинг 7.2. Преобразования Между Классами, Представляющими Даты И Время. 7.20. Извлечение Даты И Времени Из Строки. 7.21. Форматирование И Печать Даты И Времени. 7.22. Преобразование Часовых Поясов. 7.23. Определение Числа Дней В Месяце. 7.24. Разбиение Месяца На Недели. 7.25. Заключение. Глава 8. Массивы, Хэши И Другие Перечисляемые Структуры. 8.1. Массивы. 8.1.1. Создание И Инициализация Массива. 8.1.2. Доступ К Элементам Массива И Присваивание Им Значений. 8.1.3. Определение Размера Массива. 8.1.4. Сравнение Массивов. 8.1.5. Сортировка Массива. 8.1.6. Выборка Из Массива По Заданному Критерию. 8.1.7. Специализированные Функции Индексирования. 8.1.8. Реализация Разреженной Матрицы. 8.1.9. Массивы Как Математические Множества. 8.1.10. Рандомизация Массива. 8.1.11. Многомерные Массивы. 8.1.12. Нахождение Элементов, Принадлежащих Одному Массиву И Не Принадлежащих Другому. 8.1.13. Преобразование Или Отображение Массивов. 8.1.14. Удаление Из Массива Элементов Равных Nil. 8.1.15. Удаление Заданных Элементов Из Массива. 8.1.16. Конкатенирование Массивов И Добавление В Конец Массива. 8.1.17. Использование Массива В Качестве Стека Или Очереди. 8.1.18. Обход Массива. 8.1.19. Преобразование Массива В Строку С Разделителями. 8.1.20. Обращение Массива. 8.1.21. Удаление Дубликатов Из Массива. 8.1.22. Чередование Массивов. 8.1.23. Вычисление Частоты Различных Значений В Массиве. 8.1.24. Инвертирование Массива Для Получения Хэша. 8.1.25. Синхронная Сортировка Нескольких Массивов. 8.1.26. Указание Значения По Умолчанию Для Новых Элементов Массива. 8.2. Хэши. 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. Объединение Двух Хэшей. 8.2.12. Создание Хэша Из Массива. 8.2.13. Вычисление Разности И Пересечения Хэшей. 8.2.14. Хэш Как Разреженная Матрица. 8.2.15. Реализация Хэша С Повторяющимися Ключами. Листинг 8.1. Хэш С Повторяющимися Ключами. 8.3. Перечисляемые Структуры В Общем. 8.3.1. Метод Inject. 8.3.2. Кванторы. 8.3.3. Метод Partition. 8.3.4. Обход С Группировкой. 8.3.5. Преобразование В Массив Или Множество. 8.3.6. Энумераторы. 8.3.7. Объекты-Генераторы. 8.4. Заключение. Глава 9. Более Сложные Структуры Данных. 9.1. Множества. 9.1.1. Простые Операции Над Множествами. 9.1.2. Более Сложные Операции Над Множествами. 9.2. Стеки И Очереди. 9.2.1. Более Строгая Реализация Стека. 9.2.2. Обнаружение Несбалансированных Скобок. 9.2.3. Стек И Рекурсия. 9.2.4. Более Строгая Реализация Очереди. 9.3. Деревья. 9.3.1. Реализация Двоичного Дерева. Листинг 9.1. Вставка И Обход Дерева В Ширину. 9.3.2. Сортировка С Помощью Двоичного Дерева. Листинг 9.2. Сортировка С Помощью Двоичного Дерева. 9.3.3. Использование Двоичного Дерева Как Справочной Таблицы. 9.3.4. Преобразование Дерева В Строку Или Массив. 9.4. Графы. 9.4.1. Реализация Графа В Виде Матрицы Смежности. Листинг 9.3. Матрица Смежности. 9.4.2. Является Ли Граф Связным? Листинг 9.4. Выяснение Того, Является Ли Граф Связным. 9.4.3. Есть Ли В Графе Эйлеров Цикл? 9.4.4. Есть Ли В Графе Эйлеров Путь? 9.4.5. Инструменты Для Работы С Графами В Ruby. 9.5. Заключение. Глава 10. Ввод/Вывод И Хранение Данных. 10.1. Файлы И Каталоги. 10.1.1. Открытие И Закрытие Файлов. 10.1.2. Обновление Файла. 10.1.3. Дописывание В Конец Файла. 10.1.4. Прямой Доступ К Файлу. 10.1.5. Работа С Двоичными Файлами. 10.1.6. Блокировка Файлов. 10.1.7. Простой Ввод/Вывод. 10.1.8. Буферизованный И Небуферизованный Ввод/Вывод. 10.1.9. Манипулирование Правами Владения И Разрешениями На Доступ К Файлу. 10.1.10. Получение И Установка Временных Штампов. 10.1.11. Проверка Существования И Получение Размера Файла. 10.1.12. Опрос Специальных Свойств Файла. 10.1.13. Каналы. 10.1.14. Специальные Операции Ввода/Вывода. 10.1.15. Неблокирующий Ввод/Вывод. 10.1.16. Применение Метода Readpartial. 10.1.17. Манипулирование Путевыми Именами. 10.1.18. Класс Pathname. 10.1.19. Манипулирование Файлами На Уровне Команд. 10.1.20. Ввод Символов С Клавиатуры. 10.1.21. Чтение Всего Файла В Память. 10.1.22. Построчное Чтение Из Файла. 10.1.23. Побайтное Чтение Из Файла. 10.1.24. Работа Со Строкой Как С Файлом. 10.1.25. Чтение Данных, Встроенных В Текст Программы. 10.1.26. Чтение Исходного Текста Программы. 10.1.27. Работа С Временными Файлами. 10.1.28. Получение И Изменение Текущего Каталога. 10.1.29. Изменение Текущего Корня. 10.1.30. Обход Каталога. 10.1.31. Получение Содержимого Каталога. 10.1.32. Создание Цепочки Каталогов. 10.1.33. Рекурсивное Удаление Каталога. 10.1.34. Поиск Файлов И Каталогов. 10.2. Доступ К Данным Более Высокого Уровня. 10.2.1. Простой Маршалинг. 10.2.2. Более Сложный Маршалинг. 10.2.3. Ограниченное «Глубокое Копирование» В Ходе Маршалинга. 10.2.4. Обеспечение Устойчивости Объектов С Помощью Библиотеки Pstore. 10.2.5. Работа С Данными В Формате Csv. 10.2.6. Маршалинг В Формате Yaml. 10.2.7. Преобладающие Объекты И Библиотека Madeleine. 10.2.8. Библиотека Dbm. 10.3. Библиотека Kirbybase. 10.4. Подключение К Внешним Базам Данных. 10.4.1. Интерфейс С Sqlite. 10.4.2. Интерфейс С Mysql. 10.4.3. Интерфейс С Postgresql. 10.4.4. Интерфейс С Ldap. 10.4.5. Интерфейс С Oracle. 10.4.6. Обертка Вокруг Dbi. 10.4.7. Объектно-Реляционные Отображения (Orm). 10.5. Заключение. Глава 11. Ооп И Динамические Механизмы В Ruby. 11.1. Рутинные Объектно-Ориентированные Задачи. 11.1.1. Применение Нескольких Конструкторов. Листинг 11.1. Несколько Конструкторов. 11.1.2. Создание Атрибутов Экземпляра. 11.1.3. Более Сложные Конструкторы. Листинг 11.2. «Хитрый» Конструктор. 11.1.4. Создание Атрибутов И Методов Уровня Класса. Листинг 11.3. Переменные И Методы Класса. Листинг 11.4. Данные Класса И Экземпляра. 11.1.5. Наследование Суперклассу. 11.1.6. Опрос Класса Объекта. 11.1.7. Проверка Объектов На Равенство. 11.1.8. Управление Доступом К Методам. Листинг 11.5. Закрытые Методы. 11.1.9. Копирование Объектов. 11.1.10. Метод Initialize_Copy. 11.1.11. Метод Allocate. 11.1.12. Модули. Листинг 11.6. Включение Модуля С Переопределенным Методом Append_Features. Листинг 11.7. Методы Экземпляра Модуля Становятся Методами Класса. 11.1.13. Трансформация Или Преобразование Объектов. 11.1.14. Классы, Содержащие Только Данные (Struct). 11.1.15. Замораживание Объектов. Листинг 11.8. Замораживание Объекта. 11.2. Более Сложные Механизмы. 11.2.1. Отправка Объекту Явного Сообщения. Листинг 11.9. Сортировка По Любому Ключу. 11.2.2. Специализация Отдельного Объекта. Листинг 11.10. Метод Уровня Класса Accessor_String. Листинг 11.11. Использование Метода Extend. 11.2.3. Вложенные Классы И Модули. 11.2.4. Создание Параметрических Классов. Листинг 11.12. Параметрические Классы: Неправильное Решение. Листинг 11.13. Параметрические Классы: Улучшенное Решение. Листинг 11.14. Параметрические Классы: Самое Лучшее Решение. 11.2.5. Использование Продолжений Для Реализации Генератора. Листинг 11.15. Генератор Чисел Фибоначчи. 11.2.6. Хранение Кода В Виде Объекта. 11.2.7. Как Работает Включение Модулей? 11.2.8. Опознание Параметров, Заданных По Умолчанию. 11.2.9. Делегирование Или Перенаправление. 11.2.10. Автоматическое Определение Методов Чтения И Установки На Уровне Класса. 11.2.11. Поддержка Различных Стилей Программирования. 11.3. Динамические Механизмы. 11.3.1. Динамическая Интерпретация Кода. 11.3.2. Метод Const_Get. 11.3.3. Динамическое Создание Экземпляра Класса, Заданного Своим Именем. 11.3.4. Получение И Установка Переменных Экземпляра. 11.3.5. Метод Define_Method. 11.3.6. Метод Const_Missing. 11.3.7. Удаление Определений. Листинг 11.16. Методы Remove_Method И Undef_Method. 11.3.8. Получение Списка Определенных Сущностей. Листинг 11.17. Отражение И Переменные Экземпляра. 11.3.9. Просмотр Стека Вызовов. 11.3.10. Мониторинг Выполнения Программы. 11.3.11. Обход Пространства Объектов. 11.3.12. Обработка Вызовов Несуществующих Методов. 11.3.13. Отслеживание Изменений В Определении Класса Или Объекта. Листинг 11.18. Трассирующий Модуль. 11.3.14. Определение Чистильщиков Для Объектов. 11.4. Заключение. Глава 12. Графические Интерфейсы Для Ruby. 12.1. Ruby/Tk. 12.1.1. Обзор. 12.1.2. Простое Оконное Приложение. 12.1.3. Кнопки. Листинг 12.1. Имитация Термостата. 12.1.4. Текстовые Поля. Листинг 12.2. Имитация Telnet-Клиента. 12.1.5. Прочие Виджеты. Листинг 12.3. Флажки В Tk. Листинг 12.4. Переключатели В Tk. 12.1.6. Дополнительные Замечания. 12.2. Ruby/Gtk2. 12.2.1. Обзор. 12.2.2. Простое Оконное Приложение. 12.2.3. Кнопки. Листинг 12.5. Кнопки В Gtk. 12.2.4. Текстовые Поля. Листинг 12.6. Текстовый Редактор В Gtk. 12.2.5. Прочие Виджеты. Листинг 12.7. Заказ Билета На Самолет. Листинг 12.8. Пример Меню В Gtk. 12.2.6. Дополнительные Замечания. 12.3. Fxruby (Fox). 12.3.1. Обзор. 12.3.2. Простое Оконное Приложение. 12.3.3. Кнопки. Листинг 12.9. Обновление Состояния Интерфейса В Fox. 12.3.4. Текстовые Поля. 12.3.5. Прочие Виджеты. Листинг 12.10. Переключатели В Fox. Листинг 12.11. Переключатели В Fox И Получатели Данных. Листинг 12.12. Виджет Fxlist. Листинг 12.13. Модальные И Немодальные Диалоги. 12.3.6. Дополнительные Замечания. 12.4. Qtruby. 12.4.1. Обзор. 12.4.2. Простое Оконное Приложение. 12.4.3. Кнопки. Листинг 12.14. Кнопки В Qtruby. 12.4.4. Текстовые Поля. Листинг 12.15. Простой Редактор В Qt. 12.4.5. Прочие Виджеты. Листинг 12.16. Прочие Виджеты В Qt. Листинг 12.17. Нестандартный Виджет Timerclock. 12.4.6. Дополнительные Замечания. 12.5. Другие Библиотеки Для Создания Графических Интерфейсов. 12.5.1. Ruby И X. 12.5.2. Ruby И Wxwidgets. 12.5.3. Apollo (Ruby И Delphi). 12.5.4. Ruby И Windows Api. 12.6. Заключение. Глава 13. Потоки В Ruby. 13.1. Создание Потоков И Манипулирование Ими. 13.1.1. Создание Потоков. 13.1.2. Доступ К Локальным Переменным Потока. 13.1.3. Опрос И Изменение Состояния Потока. 13.1.4. Назначение Рандеву (И Получение Возвращенного Значения). 13.1.5. Обработка Исключений. 13.1.6. Группы Потоков. 13.2. Синхронизация Потоков. 13.2.1. Синхронизация С Помощью Критических Секций. 13.2.2. Синхронизация Доступа К Ресурсам (Mutex.Rb). Листинг 13.1. Программа Индексирования С Ошибками (Гонка). Листинг 13.2. Программа Индексирования С Мьютексом. 13.2.3. Предопределенные Классы Синхронизированных Очередей. Листинг 13.3. Задача О Производителе И Потребителе. 13.2.4. Условные Переменные. Листинг 13.4. Три Скрипача. 13.2.5. Другие Способы Синхронизации. Листинг 13.5. Реализация Класса Queue С Помощью Монитора. 13.2.6. Тайм-Аут При Выполнении Операций. Листинг 13.6. Пример Тайм-Аута. 13.2.7. Ожидание События. 13.2.8. Продолжение Обработки Во Время Ввода/Вывода. 13.2.9. Реализация Параллельных Итераторов. Листинг 13.7. Параллельные Итераторы. 13.2.10. Параллельное Рекурсивное Удаление. 13.3. Заключение. Глава 14. Сценарии И Системное Администрирование. 14.1. Запуск Внешних Программ. 14.1.1. Методы System И Exec. 14.1.2. Перехват Вывода Программы. 14.1.3. Манипулирование Процессами. 14.1.4. Стандартный Ввод И Вывод. 14.2. Флаги И Аргументы В Командной Строке. 14.2.1. Разбор Флагов В Командной Строке. Листинг 14.1. Получение Флагов Из Командной Строки. 14.2.2. Константа Argf. 14.2.3. Константа Argv. 14.3. Библиотека Shell. 14.3.1. Использование Библиотеки Shell Для Перенаправления Ввода/Вывода. 14.3.2. Дополнительные Замечания По Поводу Библиотеки Shell.Rb. 14.4. Переменные Окружения. 14.4.1. Чтение И Установка Переменных Окружения. 14.4.2. Хранение Переменных Окружения В Виде Массива Или Хэша. 14.4.3. Импорт Переменных Окружения Как Глобальных Переменных. 14.5. Сценарии На Платформе Microsoft Windows. 14.5.1. Расширение Win32Api. 14.5.2. Расширение Win32Ole. Листинг 14.2. Открытие Диалога Для Ввода Текста В Браузере. Листинг 14.3. Для Вывода В Окно Браузера Требуется Win32Ole. 14.5.3. Использование Activescriptruby. Листинг 14.4. Код На Ruby, Встроенный В Html-Страницу. 14.6. Моментальный Инсталлятор Для Windows. 14.7. Библиотеки, О Которых Полезно Знать. 14.8. Работа С Файлами, Каталогами И Деревьями. 14.8.1. Несколько Слов О Текстовых Фильтрах. 14.8.2. Копирование Дерева Каталогов (С Символическими Ссылками). Листинг 14.5. Копирование Дерева Каталогов. 14.8.3. Удаление Файлов По Времени Модификации И Другим Критериям. 14.8.4. Вычисление Свободного Места На Диске. 14.9. Различные Сценарии. 14.9.1. Ruby В Виде Одного Файла. 14.9.2. Подача Входных Данных Ruby По Конвейеру. Листинг 14.6. Bash-Сценарий, Вызывающий Ruby. 14.9.3. Получение И Установка Кодов Завершения. 14.9.4. Работает Ли Ruby В Интерактивном Режиме? 14.9.5. Определение Текущей Платформы Или Операционной Системы. 14.9.6. Модуль Etc. 14.10. Заключение. Глава 15. Ruby И Форматы Данных. 15.1. Разбор XML И Rexml. Листинг 15.1. Файл Books.XML. 15.1.1. Древовидное Представление. Листинг 15.2. Разбор Документа С Применением Dom. 15.1.2. Потоковый Разбор. Листинг 15.3. Sax-Разбор. Листинг 15.4. Результат Работы Программы Потокового Разбора. 15.1.3. Xpath И Другие Интерфейсы. 15.2. Rss И Atom. 15.2.1. Стандартная Библиотека Rss. Листинг 15.5. Создание Rss-Канала. 15.2.2. Библиотека Feedtools. 15.3. Обработка Изображений При Помощи Rmagick. 15.3.1. Типичные Графические Задачи. Листинг 15.6. Получение Информации Об Изображении. Листинг 15.7. Четыре Способа Масштабирования Изображения. 15.3.2. Специальные Эффекты И Трансформации. Листинг 15.8. Двенадцать Специальных Эффектов И Трансформаций. 15.3.3. Api Рисования. Листинг 15.9. Простая Программа Рисования. 15.4. Создание Документов В Формате Pdf С Помощью Библиотеки Pdf::Writer. 15.4.1. Основные Концепции И Приемы. Листинг 15.10. Метод Quadrant. 15.4.2. Пример Документа. Листинг 15.11. Создание Демонстрационного Документа. 15.5. Заключение. Глава 16. Тестирование И Отладка. 16.1. Библиотека Test::Unit. Листинг 16.1. Подготовка И Разрушение Среды Исполнения. 16.2. Комплект Инструментов Zentest. Листинг 16.2. Класс, Подлежащий Тестированию. Листинг 16.3. Результат Работы Zentest. 16.3. Работа С Отладчиком Ruby. Листинг 16.4. Простая Программа Для Демонстрации Работы Отладчика. Листинг 16.5. Сеанс Отладки Простой Программы. 16.4. Использование Irb В Качестве Отладчика. 16.5. Измерение Покрытия Кода. 16.6. Измерение Производительности. Листинг 16.6. Поиск Анаграмм В Словаре. 16.7. Объекты Печати. 16.8. Заключение. Глава 17. Создание Пакетов И Распространение Программ. 17.1. Программа Rdoc. Листинг 17.1. Простой Исходный Файл. 17.1.1. Простая Разметка. Листинг 17.2. Пример Разметки Для Rdoc. 17.1.2. Более Сложное Форматирование. 17.2. Установка И Подготовка Пакета. 17.2.1. Библиотека Setup.Rb. 17.2.2. Система Rubygems. 17.3. Rubyforge И Raa. 17.4. Заключение. Глава 18. Сетевое Программирование. 18.1. Сетевые Серверы. 18.1.1. Простой Сервер: Время Дня. 18.1.2. Реализация Многопоточного Сервера. 18.1.3. Пример: Сервер Для Игры В Шахматы По Сети. Листинг 18.1. Шахматный Сервер. Листинг 18.2. Шахматный Клиент. Листинг 18.3. Протокол Сеанса Шахматной Игры. 18.2. Сетевые Клиенты. 18.2.1. Получение Истинно Случайных Чисел Из Web. Листинг 18.4. Случайное Бросание Костей. Листинг 18.5. Генератор Случайных Чисел С Буферизацией. 18.2.2. Запрос К Официальному Серверу Времени. 18.2.3. Взаимодействие С Рор-Сервером. 18.2.4. Отправка Почты По Протоколу Smtp. 18.2.5. Взаимодействие С Imap-Сервером. 18.2.6. Кодирование И Декодирование Вложений. 18.2.7. Пример: Шлюз Между Почтой И Конференциями. Листинг 18.6. Перенаправление Почты В Конференцию. Листинг 18.7. Перенаправление Конференции В Почту. 18.2.8. Получение Web-Страницы С Известным Url. 18.2.9. Библиотека Open-Uri. 18.3. Заключение. Глава 19. Ruby И Web-Приложения. 19.1. Программирование Cgi На Ruby. 19.1.1. Введение В Библиотеку Cgi.Rb. 19.1.2. Вывод И Обработка Форм. 19.1.3. Куки. 19.1.4. Сеансы Пользователей. 19.2. Fastcgi. Листинг 19.1. Пример Fastcgi. 19.3. Ruby On Rails. 19.3.1. Принципы И Техника. 19.3.2. Тестирование И Отладка Приложений Rails. 19.3.3. Базовые Расширения. 19.3.4. Дополнительные Инструменты И Библиотеки. 19.4. Разработка Web-Приложений С Помощью Nitro. 19.4.1. Создание Простого Приложения Nitro. 19.4.2. Nitro И Паттерн MVC. 19.4.3. Nitro И Og. 19.4.4. Решение Типичных Для Web-Приложений Задач В Nitro. 19.4.5. Прочие Детали. 19.5. Введение В Wee. 19.5.1. Простой Пример. 19.5.2. Ассоциирование Состояния С Url. 19.6. Разработка Web-Приложений С Помощью Iowa. 19.6.1. Основные Идеи Iowa. 19.6.2. Шаблоны В Iowa. 19.6.3. Передача Управления Компоненту. 19.7. Ruby И Web-Сервер. 19.7.1. Модуль Mod_Ruby. 19.7.2. Использование Erb. 19.7.3. Сервер Webrick. 19.7.4. Сервер Mongrel. 19.8. Заключение. Глава 20. Распределенный Ruby. 20.1. Обзор: Библиотека Drb. 20.2. Пример: Эмуляция Биржевой Ленты. Листинг 20.1. Модуль Drbobservable. Листинг 20.2. Канал Биржевых Котировок (Drb-Сервер). Листинг 20.3. Наблюдатель Биржевых Котировок (Drb-Клиент). 20.3. Rinda: Пространство Кортежей В Ruby. Листинг 20.4. Уведомление В Системе Rinda. Листинг 20.5. Задача О Производителе И Потребителе. 20.4. Обнаружение Сервисов В Распределенном Ruby. 20.5. Заключение. Глава 21. Инструменты Разработки Для Ruby. 21.1. Система Rubygems. 21.2. Программа Rake. 21.3. Оболочка Irb. 21.4. Утилита Ri. 21.5. Поддержка Со Стороны Редакторов. 21.6. Интегрированные Среды Разработки. 21.7. Заключение. Глава 22. Сообщество Пользователей Ruby. 22.1. Ресурсы В Web. 22.2. Новостные Группы И Списки Рассылки. 22.3. Блоги И Онлайновые Журналы. 22.4. Запросы На Изменение Ruby. 22.5. Каналы Irc. 22.6. Конференции По Ruby. 22.7. Локальные Группы Пользователей Ruby. 22.8. Заключение. Примечания.

Простой Python. Современный стиль программирования.

Аудитория. Краткое Описание. Версии Python. Соглашения, Принятые В Этой Книге. Использование Примеров Кода. Глава 1. Python: С Чем Его Едят. Python В Реальном Мире. Python Против Языка Х. Почему Же Python? Когда Не Стоит Использовать Python. Python 2 Против Python 3. Установка Python. Запуск Python. Интерактивный Интерпретатор. Файлы Python. Что Дальше? Момент Просветления. Упражнения. Глава 2. Ингредиенты Python: Числа, Строки И Переменные. Переменные, Имена И Объекты. Числа. Целые Числа. Приоритет Операций. Системы Счисления. Преобразования Типов. Насколько Объемен Тип Int? Числа С Плавающей Точкой. Математические Функции. Строки. Создаем Строки С Помощью Кавычек. Преобразование Типов Данных С Помощью Функции Str(). Создаем Управляющие Символы С Помощью Символа \ Объединяем Строки С Помощью Символа + Размножаем Строки С Помощью Символа * Извлекаем Символ С Помощью Символов []. Извлекаем Подстроки С Помощью Оператора [Start: End: Step]. Получаем Длину Строки С Помощью Функции Len(). Разделяем Строку С Помощью Функции Split(). Объединяем Строки С Помощью Функции Join(). Развлекаемся Со Строками. Регистр И Выравнивание. Заменяем Символы С Помощью Функции Replace(). Больше Действий Со Строками. Упражнения. Глава 3. Наполнение Python: Списки, Кортежи, Словари И Множества. Списки И Кортежи. Списки. Создание Списков С Помощью Оператора [] Или Метода List(). Преобразование Других Типов Данных В Списки С Помощью Функции List(). Получение Элемента С Помощью Конструкции [Смещение]. Списки Списков. Изменение Элемента С Помощью Конструкции [Смещение]. Отрежьте Кусочек — Извлечение Элементов С Помощью Диапазона Смещений. Добавление Элемента В Конец Списка С Помощью Метода Append(). Объединяем Списки С Помощью Метода Extend() Или Оператора += Добавление Элемента С Помощью Функции Insert(). Удаление Заданного Элемента С Помощью Функции Del. Удаление Элемента По Значению С Помощью Функции Remove(). Получение Заданного Элемента И Его Удаление С Помощью Функции Pop(). Определение Смещения Элемента По Значению С Помощью Функции Index(). Проверка На Наличие Элемента В Списке С Помощью Оператора In. Определяем Количество Включений Значения С Помощью Функции Count(). Преобразование Списка В Строку С Помощью Функции Join(). Меняем Порядок Элементов С Помощью Функции Sort(). Получение Длины Списка С Помощью Функции Len(). Присваивание С Помощью Оператора =, Копирование С Помощью Функции Copy(). Кортежи. Создание Кортежей С Помощью Оператора (). Кортежи Против Списков. Словари. Создание Словаря С Помощью {}. Преобразование С Помощью Функции Dict(). Добавление Или Изменение Элемента С Помощью Конструкции [Ключ]. Объединение Словарей С Помощью Функции Update(). Удаление Элементов По Их Ключу С Помощью Del. Удаление Всех Элементов С Помощью Функции Clear(). Проверяем На Наличие Ключа С Помощью In. Получение Элемента Словаря С Помощью Конструкции [Ключ]. Получение Всех Ключей С Помощью Функции Keys(). Получение Всех Значений С Помощью Функции Values(). Получение Всех Пар «Ключ — Значение» С Помощью Функции Items(). Присваиваем Значения С Помощью Оператора =, Копируем Их С Помощью Функции Copy(). Множества. Создание Множества С Помощью Функции Set(). Преобразование Других Типов Данных С Помощью Функции Set(). Проверяем На Наличие Значения С Помощью Ключевого Слова In. Комбинации И Операторы. Сравнение Структур Данных. Создание Крупных Структур Данных. Упражнения. Глава 4. Корочка Python: Структуры Кода. Комментируем С Помощью Символа # Продлеваем Строки С Помощью Символа \ Сравниваем Выражения С Помощью Операторов If, Elif И Else. Повторяем Действия С Помощью While. Прерываем Цикл С Помощью Break. Пропускаем Итерации С Помощью Continue. Проверяем, Завершился Ли Цикл Заранее, С Помощью Else. Выполняем Итерации С Помощью For. Прерываем Цикл С Помощью Break. Пропускаем Итерации С Помощью Continue. Проверяем, Завершился Ли Цикл Заранее, С Помощью Else. Итерирование По Нескольким Последовательностям С Помощью Функции Zip(). Генерирование Числовых Последовательностей С Помощью Функции Range(). Прочие Итераторы. Включения. Включение Списков. Включение Словаря. Включение Множества. Включение Генератора. Функции. Позиционные Аргументы. Аргументы — Ключевые Слова. Указываем Значение Параметра По Умолчанию. Получаем Позиционные Аргументы С Помощью * Получение Аргументов — Ключевых Слов С Помощью ** Строки Документации. Функции — Это Объекты Первого Класса. Внутренние Функции. Замыкания. Анонимные Функции: Функция Lambda(). Генераторы. Декораторы. Пространства Имен И Область Определения. Обработка Ошибок С Помощью Try И Except. Создание Собственных Исключений. Упражнения. Глава 5. Py Boxes: Модули, Пакеты И Программы. Отдельные Программы. Аргументы Командной Строки. Модули И Оператор Import. Импортируем Модуль. Импортируем Модуль С Другим Именем. Импортируем Только Самое Необходимое. Каталоги Поиска Модулей. Пакеты. Стандартная Библиотека Python. Обработка Отсутствующих Ключей С Помощью Функций Setdefault() И Defaultdict(). Подсчитываем Элементы С Помощью Функции Counter(). Упорядочиваем По Ключу С Помощью Ordereddict(). Стек + Очередь == Deque. Итерируем По Структурам Кода С Помощью Itertools. Выводим Данные На Экран Красиво С Помощью Функции Pprint(). Нужно Больше Кода. Упражнения. Глава 6. Ой-Ой-Ой: Объекты И Классы. Что Такое Объекты. Определяем Класс С Помощью Ключевого Слова Class. Наследование. Перегрузка Метода. Добавление Метода. Просим Помощи У Предка С Помощью Ключевого Слова Super. В Защиту Self. Получаем И Устанавливаем Значение Атрибутов С Помощью Свойств. Искажение Имен Для Безопасности. Типы Методов. Утиная Типизация. Особые Методы. Таблица 6.1. Магические Методы Для Сравнения. Таблица 6.3. Другие Магические Методы. Композиция. Когда Лучше Использовать Классы И Объекты, А Когда — Модули. Упражнения. Глава 7. Работаем С Данными Профессионально. Текстовые Строки. Unicode. Строки Формата Unicode В Python 3. Кодирование И Декодирование С Помощью Кодировки Utf-8. Кодирование. Таблица 7.1. Кодировки. Декодирование. Подробная Информация. Формат. Старый Стиль С Символом % Таблица 7.2. Типы Преобразования. Новый Стиль Форматирования С Помощью Символов {} И Функции Format. Совпадение С Регулярными Выражениями. Точное Совпадение С Помощью Функции Match(). Первое Совпадение, Найденное С Помощью Функции Search(). Ищем Все Совпадения С Помощью Функции Findall(). Разбиваем Совпадения С Помощью Функции Split(). Заменяем Совпадения С Помощью Функции Sub(). Шаблоны: Специальные Символы. Таблица 7.3. Специальные Символы. Шаблоны: Использование Спецификаторов. Таблица 7.4. Спецификаторы Шаблонов. Шаблоны: Указываем Способ Вывода Совпадения. Бинарные Данные. Bytes И Bytearray. Преобразуем Бинарные Данные С Помощью Модуля Struct. Таблица 7.5. Спецификаторы Порядка Байтов. Таблица 7.6. Спецификаторы Формата. Другие Инструменты Для Работы С Бинарными Данными. Преобразование Байтов/Строк С Помощью Функции Binascii(). Битовые Операторы. Таблица 7.7. Целочисленные Операции Для Уровня Битов. Упражнения. Глава 8. Данные Должны Куда-То Попадать. Ввод Информации В Файлы И Ее Вывод Из Них. Запись В Текстовый Файл С Помощью Функции Write(). Считываем Данные Из Текстового Файла С Помощью Функций Read(), Readline() И Readlines(). Записываем Данные В Бинарный Файл С Помощью Функции Write(). Читаем Бинарные Файлы С Помощью Функции Read(). Закрываем Файлы Автоматически С Помощью Ключевого Слова With. Меняем Позицию С Помощью Функции Seek(). Структурированные Текстовые Файлы. Csv. XML. Html. Json. Yaml. Безопасность. Конфигурационные Файлы. Другие Форматы Обмена Данными. Сериализация С Помощью Pickle. Структурированные Бинарные Файлы. Электронные Таблицы. Hdf5. Реляционные Базы Данных. Sql. Таблица 8.1. Основные Команды Sql DDL. Таблица 8.2. Основные Команды Sql DML. Db-Api. Sqlite. Mysql. Таблица 8.3. Драйверы Mysql. Postgresql. Таблица 8.4. Драйверы Postgresql. Sqlalchemy. Таблица 8.5. Соединение С Sqlalchemy. Уровень Движка. Язык Выражений Sql. The Object-Relational Mapper. Хранилища Данных Nosql. Семейство Dbm. Memcached. Redis. Строки. Списки. Хеши. Множества. Упорядоченные Множества. Биты. Кэши И Истечение Срока Действия. Прочие Серверы Nosql. Таблица 8.6. Базы Данных Nosql. Full-Text Databases. Таблица 8.7. Полнотекстовые Базы Данных. Упражнения. Глава 9. Распутываем Всемирную Паутину. Веб-Клиенты. Тестируем С Telnet. Стандартные Веб-Библиотеки Python. За Пределами Стандартной Библиотеки: Requests. Веб-Серверы. Простейший Веб-Сервер Python. Web Server Gateway Interface. Фреймворки. Bottle. Flask. Передача Аргумента Как Части Пути Url. Веб-Серверы, Не Использующие Python. Apache. Веб-Сервер Nginx. Другие Фреймворки. Другие Веб-Серверы Python. Веб-Сервисы И Автоматизация. Модуль Webbrowser. Api Для Сети И Representational State Transfer. Json. Поиск И Выборка Данных. Получаем Html-Код С Помощью Beautifulsoup. Упражнения. Глава 10. Системы. Файлы. Создаем Файл С Помощью Функции Open(). Проверяем Существование Файла С Помощью Функции Exists(). Проверяем Тип С Помощью Функции Isfile(). Копируем Файлы С Помощью Функции Copy(). Изменяем Имена Файлов С Помощью Функции Rename(). Создаем Ссылки С Помощью Link() Или Symlink(). Изменяем Разрешения С Помощью Функции Chmod(). Изменение Владельца Файла С Помощью Функции Chown(). Получаем Pathname С Помощью Функции Abspath(). Получаем Символьную Ссылку С Помощью Функции Realpath(). Удаляем Файл С Помощью Функции Remove(). Каталоги. Создаем Каталог С Помощью Функции Mkdir(). Удаляем Каталог С Помощью Функции Rmdir(). Выводим На Экран Содержимое Каталога С Помощью Функции Listdir(). Изменяем Текущий Каталог С Помощью Функции Chdir(). Перечисляем Совпадающие Файлы С Помощью Функции Glob(). Программы И Процессы. Создаем Процесс С Помощью Модуля Subprocess. Создаем Процесс С Помощью Модуля Multiprocessing. Убиваем Процесс С Помощью Функции Terminate(). Календари И Часы. Модуль Datetime. Модуль Time. Читаем И Записываем Дату И Время. Таблица 10.1. Спецификаторы Вывода Для Strftime(). Альтернативные Модули. Упражнения. Глава 11. Конкуренция И Сети. Конкуренция. Очереди. Процессы. Потоки. Зеленые Потоки И Gevent. Twisted. Asyncio. Redis. Помимо Очередей. Сети. Шаблоны. Модель Публикации-Подписки. Redis. Zeromq. Другие Инструменты Для Организации Подхода Публикации-Подписки. Tcp/Ip. Сокеты. Zeromq. Scapy. Интернет-Службы. Доменная Система Имен. Модули Для Работы С Электронной Почтой. Другие Протоколы. Веб-Службы И Api. Удаленная Обработка. Удаленные Вызовы Процедур. Fabric. Salt. Большие Данные И Mapreduce. Работаем В Облаках. Google. Amazon. Openstack. Упражнения. Глава 12. Быть Питонщиком. О Программировании. Ищем Код На Python. Таблица 12.1. Пакеты Для Работы С Генеалогическим Древом, Которые Вы Можете Найти На Сайте Pypi. Установка Пакетов. Используем Pip. Менеджер Пакетов. Установка Из Исходного Кода. Интегрированные Среды Разработки. Idle. Pycharm. Ipython. Именуйте И Документируйте. Тестируем Код. Pylint, Pyflakes И Pep-8. Unittest. Пакет Doctest. Пакет Nose. Другие Фреймворки Для Тестирования. Постоянная Интеграция. Отлаживаем Свой Код. Отлаживаем С Помощью Pdb. Записываем В Журнал Сообщения Об Ошибках. Оптимизируем Код. Измеряем Время. Алгоритмы И Структуры Данных. Cython, Numpy И Расширения C. Pypy. Управление Исходным Кодом. Mercurial. Git. Клонируйте Эту Книгу. Как Узнать Больше. Книги. Сайты. Группы. Конференции. Coming Attractions. Приложение A. Пи-Арт. 2D-Графика. Стандартная Библиотека. Pil И Pillow. Imagemagick. Графические Пользовательские Интерфейсы (Graphical User Interface, Gui). Трехмерная Графика И Анимация. Диаграммы, Графики И Визуализация. Matplotlib. Bokeh. Игры. Аудио И Музыка. Приложение Б. За Работой. The Microsoft Office Suite. Выполняем Бизнес-Задачи. Обработка Бизнес-Данных. Извлечение, Преобразование И Загрузка. Дополнительные Источники Информации. Python В Области Финансов. Безопасность Бизнес-Данных. Карты. Форматы. Нарисуем Карту. Приложения И Данные. Приложение В. Py В Науке. Математика И Статистика В Стандартной Библиотеке. Математические Функции. Работа С Комплексными Числами. Рассчитываем Точное Значение Чисел С Плавающей Точкой С Помощью Decimal. Выполняем Вычисления Для Рациональных Чисел С Помощью Модуля Fractions. Используем Packed Sequences С Помощью Array. Обработка Простой Статистики С Помощью Модуля Statistics. Перемножение Матриц. Python Для Науки. Numpy. Создание Массива С Помощью Функции Array(). Создание Массива С Помощью Функции Arange(). Создание Массива С Помощью Функций Zeros(), Ones() И Random(). Изменяем Форму Массива С Помощью Метода Reshape(). Получаем Элемент С Помощью Конструкции []. Математика Массивов. Линейная Алгебра. Библиотека Scipy. Библиотека Scikit. Библиотека Ipython. Лучший Интерпретатор. Блокноты Ipython. Pandas. Python И Научные Области. Приложение Г. Установка Python 3. Установка Стандартной Версии Python. Mac Os X. Windows. Linux Или Unix. Установка Anaconda. Установка И Использование Pip И Virtualenv. Установка И Использование Conda. Приложение Д. Ответы К Упражнениям. Глава 1. Python: С Чем Его Едят. Глава 2. Ингредиенты Python: Числа, Строки И Переменные. Глава 3. Наполнение Python: Списки, Кортежи, Словари И Множества. Глава 4. Корочка Python: Структуры Кода. Глава 5. Py Boxes: Модули, Пакеты И Программы. Глава 6. Ой-Ой-Ой: Объекты И Классы. Глава 7. Работаем С Данными Профессионально. Глава 8. Данные Должны Куда-То Попадать. Глава 9. Распутываем Всемирную Паутину. Глава 10. Системы. Глава 11. Конкуренция И Сети. Приложение Е. Вспомогательные Таблицы. Приоритет Операторов. Строковые Методы. Изменение Регистра. Поиск. Изменение. Форматирование. Тип Строки. Атрибуты Модуля String. Как С Нами Связаться. Об Авторе. Благодарности. Примечания.

Пять уроков Великого Магистра, или повесть о том, как Петя Бочкин изучал программирование.

Урок Первый. В 96-Й Квартире Происходит Что-То Странное… Загадочные Гости. Незнакомцы Рассказывают О Себе. Дальше Не Надо. Что Это Значит — Существовать? Гости Продолжают Рассказывать О Себе. Петя Соглашается Изучать Алгоритмический Язык. Кристина Превращается В Робота Исполнителя. Петя Составляет Первую Программу. Что Должен Знать Программист Об Исполнителе. Первый Способ Программирования — Последовательное Выполнение Команд. Кристина Превращается В Человека. Урок Второй. Кулинарно-Артиллерийская Установка: Великое Изобретение Великого Магистра. Кристина Опять Превращается В Робота. Еще Одна Конструкция Программирования: Разветвление. Разветвление. Условный Оператор. Сколько Раз Нужно Переписать Программу, Чтобы Накормить Всех Гребцов? Первое Авторское Отступление. Мой Друг Гафур. Урок Третий. Еще Одна Конструкция Программирования — «Цикл». Программа Для Исполнителя «Парикмахер». Новая Программа Для Кулинарно-Артиллерийской Установки. Гимн Магистру. Бунт Экипажа. Урок Четвертый. Давайте Говорить О Чем-Нибудь Духовном. «Это Что? Хайку?». Переменная — Вот Главное Действующее Лицо Любой Программы. Конструкция Присваивания. Оператор Присваивания. Метка. Оператор Перехода. Второе Авторское Отступление. Что Такое Алгоритм? Урок Пятый. Кто Такие Кракелюры? Петя Составляет Программу Прохода Клипера По Минному Полю. Описание Нестандартных Команд. Заключение. Программирование В Медицине. Компьютеры Строят Модели. Для Чего Написана Эта Книга? А Как Изучают Программирование? Примечания.

Стандарты программирования на С++. Правила и рекомендации.

Как Пользоваться Этой Книгой. Стандарты Кодирования И Вы. Об Этой Книге. Вопросы Организации И Стратегии. 0. Не Мелочитесь, Или Что Не Следует Стандартизировать. Резюме. Обсуждение. Примеры. Ссылки. 1. Компилируйте Без Замечаний При Максимальном Уровне Предупреждений. Резюме. Обсуждение. Примеры. Исключения. Ссылки. 2. Используйте Автоматические Системы Сборки Программ. Резюме. Обсуждение. Ссылки. 3. Используйте Систему Контроля Версий. Резюме. Обсуждение. Исключения. Ссылки. 4. Одна Голова Хорошо, А Две — Лучше. Резюме. Обсуждение. Ссылки. Стиль Проектирования. 5. Один Объект — Одна Задача. Резюме. Обсуждение. Примеры. Ссылки. 6. Главное — Корректность, Простота И Ясность. Резюме. Обсуждение. Примеры. Ссылки. 7. Кодирование С Учетом Масштабируемости. Резюме. Обсуждение. Ссылки. 8. Не Оптимизируйте Преждевременно. Резюме. Обсуждение. Примеры. Исключения. Ссылки. 9. Не Пессимизируйте Преждевременно. Резюме. Обсуждение. Ссылки. 10. Минимизируйте Глобальные И Совместно Используемые Данные. Резюме. Обсуждение. Исключения. Ссылки. 11. Сокрытие Информации. Резюме. Обсуждение. Исключения. Ссылки. 12. Кодирование Параллельных Вычислений. Резюме. Обсуждение. Ссылки. 13. Ресурсы Должны Быть Во Владении Объектов. Резюме. Обсуждение. Исключения. Ссылки. Стиль Кодирования. 14. Предпочитайте Ошибки Компиляции И Компоновки Ошибкам Времени Выполнения. Резюме. Обсуждение. Примеры. Исключения. Ссылки. 15. Активно Используйте Const. Резюме. Обсуждение. Примеры. Ссылки. 16. Избегайте Макросов. Резюме. Обсуждение. Примеры. Исключения. Ссылки. 17. Избегайте Магических Чисел. Резюме. Обсуждение. Примеры. Ссылки. 18. Объявляйте Переменные Как Можно Локальнее. Резюме. Обсуждение. Исключения. Ссылки. 19. Всегда Инициализируйте Переменные. Резюме. Обсуждение. Примеры. Исключения. Ссылки. 20. Избегайте Длинных Функций И Глубокой Вложенности. Резюме. Обсуждение. Исключения. Ссылки. 21. Избегайте Зависимостей Инициализаций Между Единицами Компиляции. Резюме. Обсуждение. Ссылки. 22. Минимизируйте Зависимости Определений И Избегайте Циклических Зависимостей. Резюме. Обсуждение. Исключения. Ссылки. 23. Делайте Заголовочные Файлы Самодостаточными. Резюме. Обсуждение. Примеры. Ссылки. 24. Используйте Только Внутреннюю, Но Не Внешнюю Защиту Директивы #Include. Резюме. Обсуждение. Исключения. Ссылки. Функции И Операторы. 25. Передача Параметров По Значению, (Интеллектуальному) Указателю Или Ссылке. Резюме. Обсуждение. Ссылки. 26. Сохраняйте Естественную Семантику Перегруженных Операторов. Резюме. Обсуждение. Исключения. Ссылки. 27. Отдавайте Предпочтение Каноническим Формам Арифметических Операторов И Операторов Присваивания. Резюме. Обсуждение. Примеры. Исключения. Ссылки. 28. Предпочитайте Канонический Вид ++ И --, И Вызов Префиксных Операторов. Резюме. Обсуждение. Исключения. Ссылки. 29. Используйте Перегрузку, Чтобы Избежать Неявного Преобразования Типов. Резюме. Обсуждение. Ссылки. 30. Избегайте Перегрузки &&, || И , (Запятой). Резюме. Обсуждение. Примеры. Исключения. Ссылки. 31. Не Пишите Код, Который Зависит От Порядка Вычислений Аргументов Функции. Резюме. Обсуждение. Ссылки. Проектирование Классов И Наследование. 32. Ясно Представляйте, Какой Вид Класса Вы Создаете. Резюме. Обсуждение. Ссылки. 33. Предпочитайте Минимальные Классы Монолитным. Резюме. Обсуждение. Ссылки. 34. Предпочитайте Композицию Наследованию. Резюме. Обсуждение. Исключения. Ссылки. 35. Избегайте Наследования От Классов, Которые Не Спроектированы Для Этой Цели. Резюме. Обсуждение. Ссылки. 36. Предпочитайте Предоставление Абстрактных Интерфейсов. Резюме. Обсуждение. Примеры. Исключения. Ссылки. 37. Открытое Наследование Означает Заменимость. Наследовать Надо Не Для Повторного Использования, А Чтобы Быть Повторно Использованным. Резюме. Обсуждение. Исключения. Ссылки. 38. Практикуйте Безопасное Перекрытие. Резюме. Обсуждение. Примеры. Ссылки. 39. Виртуальные Функции Стоит Делать Неоткрытыми, А Открытые — Невиртуальными. Резюме. Обсуждение. Исключения. Ссылки. 40. Избегайте Возможностей Неявного Преобразования Типов. Резюме. Обсуждение. Примеры. Исключения. Ссылки. 41. Делайте Данные-Члены Закрытыми (Кроме Случая Агрегатов В Стиле Структур С). Резюме. Обсуждение. Примеры. Исключения. Ссылки. 42. Не Допускайте Вмешательства Во Внутренние Дела. Резюме. Обсуждение. Исключения. Ссылки. 43. Разумно Пользуйтесь Идиомой Pimpl. Резюме. Обсуждение. Исключения. Ссылки. 44. Предпочитайте Функции, Которые Не Являются Ни Членами, Ни Друзьями. Резюме. Обсуждение. Примеры. Ссылки. 45. New И Delete Всегда Должны Разрабатываться Вместе. Резюме. Обсуждение. Исключения. Ссылки. 46. При Наличии Пользовательского New Следует Предоставлять Все Стандартные Типы Этого Оператора. Резюме. Обсуждение. Ссылки. Конструкторы, Деструкторы И Копирование. 47. Определяйте И Инициализируйте Переменные-Члены В Одном Порядке. Резюме. Обсуждение. Ссылки. 48. В Конструкторах Предпочитайте Инициализацию Присваиванию. Резюме. Обсуждение. Исключения. Ссылки. 49. Избегайте Вызовов Виртуальных Функций В Конструкторах И Деструкторах. Резюме. Обсуждение. Примеры. Ссылки. 50. Делайте Деструкторы Базовых Классов Открытыми И Виртуальными Либо Защищенными И Невиртуальными. Резюме. Обсуждение. Примеры. Исключения. Ссылки. 51. Деструкторы, Функции Освобождения Ресурсов И Обмена Не Ошибаются. Резюме. Обсуждение. Ссылки. 52. Копируйте И Ликвидируйте Согласованно. Резюме. Обсуждение. Исключения. Ссылки. 53. Явно Разрешайте Или Запрещайте Копирование. Резюме. Обсуждение. Ссылки. 54. Избегайте Срезки. Подумайте Об Использовании В Базовом Классе Клонирования Вместо Копирования. Резюме. Обсуждение. Исключения. Ссылки. 55. Предпочитайте Канонический Вид Присваивания. Резюме. Обсуждение. Ссылки. 56. Обеспечьте Бессбойную Функцию Обмена. Резюме. Обсуждение. Исключения. Ссылки. Пространства Имен И Модули. 57. Храните Типы И Их Свободный Интерфейс В Одном Пространстве Имен. Резюме. Обсуждение. Примеры. Ссылки. 58. Храните Типы И Функции В Разных Пространствах Имен, Если Только Они Не Предназначены Для Совместной Работы. Резюме. Обсуждение. Ссылки. 59. Не Используйте Using Для Пространств Имен В Заголовочных Файлах Или Перед Директивой #Include. Резюме. Обсуждение. Исключения. Ссылки. 60. Избегайте Выделения И Освобождения Памяти В Разных Модулях. Резюме. Обсуждение. Ссылки. 61. Не Определяйте В Заголовочном Файле Объекты Со Связыванием. Резюме. Обсуждение. Исключения. Ссылки. 62. Не Позволяйте Исключениям Пересекать Границы Модулей. Резюме. Обсуждение. Ссылки. 63. Используйте Достаточно Переносимые Типы В Интерфейсах Модулей. Резюме. Обсуждение. Примеры. Ссылки. Шаблоны И Обобщенность. 64. Разумно Сочетайте Статический И Динамический Полиморфизм. Резюме. Обсуждение. Ссылки. 65. Выполняйте Настройку Явно И Преднамеренно. Резюме. Обсуждение. Ссылки. 66. Не Специализируйте Шаблоны Функций. Резюме. Обсуждение. Ссылки. 67. Пишите Максимально Обобщенный Код. Резюме. Обсуждение. Исключения. Ссылки. Обработка Ошибок И Исключения. 68. Широко Применяйте Assert Для Документирования Внутренних Допущений И Инвариантов. Резюме. Обсуждение. Примеры. Ссылки. 69. Определите Разумную Стратегию Обработки Ошибок И Строго Ей Следуйте. Резюме. Обсуждение. Ссылки. 70. Отличайте Ошибки От Ситуаций, Не Являющихся Ошибками. Резюме. Обсуждение. Примеры. Ссылки. 71. Проектируйте И Пишите Безопасный В Отношении Ошибок Код. Резюме. Обсуждение. Примеры. Ссылки. 72. Для Уведомления Об Ошибках Следует Использовать Исключения. Резюме. Обсуждение. Примеры. Исключения. Ссылки. 73. Генерируйте Исключения По Значению, Перехватывайте — По Ссылке. Резюме. Обсуждение. Примеры. Ссылки. 74. Уведомляйте Об Ошибках, Обрабатывайте И Преобразовывайте Их Там, Где Следует. Резюме. Обсуждение. Исключения. Ссылки. 75. Избегайте Спецификаций Исключений. Резюме. Обсуждение. Исключения. Ссылки. Stl: Контейнеры. 76. По Умолчанию Используйте Vector. В Противном Случае Выбирайте Контейнер, Соответствующий Задаче. Резюме. Обсуждение. Примеры. Ссылки. 77. Вместо Массивов Используйте Vector И String. Резюме. Обсуждение. Ссылки. 78. Используйте Vector (И String::C_Str) Для Обмена Данными С Api На Других Языках. Резюме. Обсуждение. Ссылки. 79. Храните В Контейнерах Только Значения Или Интеллектуальные Указатели. Резюме. Обсуждение. Примеры. Ссылки. 80. Предпочитайте Push_Back Другим Способам Расширения Последовательности. Резюме. Обсуждение. Исключения. Ссылки. 81. Предпочитайте Операции С Диапазонами Операциям С Отдельными Элементами. Резюме. Обсуждение. Примеры. Ссылки. 82. Используйте Подходящие Идиомы Для Реального Уменьшения Емкости Контейнера И Удаления Элементов. Резюме. Обсуждение. Исключения. Ссылки. Stl: Алгоритмы. 83. Используйте Отладочную Реализацию Stl. Резюме. Обсуждение. Примеры. Ссылки. 84. Предпочитайте Вызовы Алгоритмов Самостоятельно Разрабатываемым Циклам. Резюме. Обсуждение. Примеры. Исключения. Ссылки. 85. Пользуйтесь Правильным Алгоритмом Поиска. Резюме. Обсуждение. Ссылки. 86. Пользуйтесь Правильным Алгоритмом Сортировки. Резюме. Обсуждение. Примеры. Исключения. Ссылки. 87. Делайте Предикаты Чистыми Функциями. Резюме. Обсуждение. Примеры. Ссылки. 88. В Качестве Аргументов Алгоритмов И Компараторов Лучше Использовать Функциональные Объекты, А Не Функции. Резюме. Обсуждение. Ссылки. 89. Корректно Пишите Функциональные Объекты. Резюме. Обсуждение. Ссылки. Безопасность Типов. 90. Избегайте Явного Выбора Типов — Используйте Полиморфизм. Резюме. Обсуждение. Примеры. Ссылки. 91. Работайте С Типами, А Не С Представлениями. Резюме. Обсуждение. Ссылки. 92. Избегайте Reinterpret_Cast. Резюме. Обсуждение. Исключения. Ссылки. 93. Избегайте Применения Static_Cast К Указателям. Резюме. Обсуждение. Ссылки. 94. Избегайте Преобразований, Отменяющих Const. Резюме. Обсуждение. Исключения. Ссылки. 95. Не Используйте Преобразование Типов В Стиле С. Резюме. Обсуждение. Ссылки. 96. Не Применяйте Memcpy Или Memcmp К Не-Pod Типам. Резюме. Обсуждение. Ссылки. 97. Не Используйте Объединения Для Преобразований. Резюме. Обсуждение. Исключения. Ссылки. 98. Не Используйте Неизвестные Аргументы (Троеточия). Резюме. Обсуждение. Ссылки. 99. Не Используйте Недействительные Объекты И Небезопасные Функции. Резюме. Обсуждение. Ссылки. 100. Не Рассматривайте Массивы Полиморфно. Резюме. Обсуждение. Ссылки. Список Литературы. Резюме Из Резюме. Вопросы Организации И Стратегии. Стиль Проектирования. Стиль Кодирования. Функции И Операторы. Проектирование Классов И Наследование. Конструкторы, Деструкторы И Копирование. Пространства Имен И Модули. Шаблоны И Обобщенность. Обработка Ошибок И Исключения. Stl: Контейнеры. Stl: Алгоритмы. Безопасность Типов. Благодарности. Примечания.

Технологии программирования.

Глава 1. Методологические Основы Проектирования Программ. 1.1. Общие Положения Теории Проектирования. 1.2. Общие Принципы Разработки Программ. 1.3. Системный Подход И Программирование. 1.4. Общесистемные Принципы Создания Программ. 1.5. Особенности Программных Разработок. 1.6. Стандарты И Программирование. 1.7. Описание Цикла Жизни Программного Обеспечения. 1.8. Стадии И Этапы Разработки Программ. 1.9. Типовые Ошибки Обучаемых При Составлении Технического Задания. 1.10. Моделирование И Программирование. Понятие Спецификаций. 1.11. Мнемоника Имен В Программах. 1.12. Проблема Типовых Элементов В Программировании. Глава 2. Оптимизация Программных Разработок. 2.1. Выбор Оптимального Варианта Проектного Решения. 2.2. Пример Выбора Оптимального Варианта Программного Решения. 2.3. Методы Синтеза Вариантов Реализаций Программ. 2.4. Анализ Требований К Системе (Системный Анализ) И Формулировка Целей. 2.5. Проектная Процедура Постановки Задачи Разработки Программы. 2.6. Психофизиологические Особенности Взаимодействия Человека И Эвм. 2.7. Классификация Типов Диалога Программ. Глава 3. Основные Инженерные Подходы К Созданию Программ. 3.1. Основные Сведения. 3.2. Ранние Технологические Подходы. 3.3. Каскадные Технологические Подходы. 3.4. Каркасные Технологические Подходы. 3.5. Генетические Технологические Подходы. 3.6. Подходы На Основе Формальных Преобразований. 3.7. Ранние Подходы Быстрой Разработки. 3.8. Адаптивные Технологические Подходы. 3.9. Подходы Исследовательского Программирования. Глава 4. Структура Данных Программ. 4.1. Понятие Структуры Данных Программ. 4.2. Операции Над Структурами Данных. 4.3. Общая Классификация Логических Структур Данных. 4.4. Классификация Видов Оперативных Структур Данных По Их Логическому Устройству. 4.5. Проектирование И Документирование Оперативных Структур Данных. 4.6. Файловые Структуры. 4.6.1. Физическая Организация Файлов. 4.6.2. Логическая Организация Файлов. 4.6.3. Документирование Файлов. Глава 5. Проектная Процедура Разработки Функциональных Описаний. 5.1. Общие Сведения О Проектной Процедуре. 5.2. История Возникновения Проектной Процедуры. 5.3. Общее Описание Проектной Процедуры. 5.4. Рекомендации Начинающим По Составлению Описаний Алгоритмов И Эвроритмов. 5.5. Пример Разработки Описания Процесса "Кипячение Воды В Чайнике". 5.6. Пример Описания Программы "Редактор Текстов". 5.7. Рефакторинг Алгоритмов И Эвроритмов. 5.8. Кодирование Типовых Структур На Языках Программирования. 5.9. Методика Разработки Алгоритмов Программ. 5.10. Пример Выполнения Учебной Работы "Разработка Алгоритма Умножения". 5.11. Пример Применения Проектной Процедуры Для Кодирования Программы Печати Календаря На Принтере. Глава 6. Архитектура Программных Систем. 6.1. Понятие Архитектуры Программной Системы. 6.2. Системы Из Отдельных Программ. 6.3. Системы Из Отдельных Резидентных Программ. 6.4. Системы Из Программ, Обменивающихся Данными Через Порты. 6.5. Подход К Проектированию Архитектуры Системы На Основе Абстрактных Машин Дейкстры. 6.6. Сом — Технология Разработки Развивающихся И Рассредоточенных Комплексов Программ. Глава 7. Технология Структурного Программирования. 7.1. Понятие Структуры Программы. 7.2. Модуль И Основные Принципы Структурного Подхода. 7.2.1. Понятие Модуля. 7.2.2. Понятие Заглушки Модуля. 7.2.3. Средства Изменения Топологии Иерархии Программы. 7.2.4. Критерии Оценки Качества Схемы Иерархии. 7.2.5. Рекомендации По Организации Процесса Разработки Схемы Иерархии. 7.3. Ретроспективное Проектирование Демонстрационной Программы Mcalc Фирмы "Borland Inc.". Глава 8. Технология Объектно-Ориентированного Программирования. 8.1. История Создания Объектно-Ориентированного Программирования. 8.2. Введение В Объектно-Ориентированный Подход К Разработке Программ. 8.3. Сравнительный Анализ Технологий Структурного И Объектно-Ориентированного Программирования. 8.4. Основные Понятия Объектно-Ориентированной Технологии. 8.5. Основные Понятия, Используемые В Объектно-Ориентированных Языках. 8.6. Этапы И Модели Объектно-Ориентированной Технологии. 8.7. Какими Бывают Объекты По Устройству. 8.8. Проектная Процедура Объектно-Ориентированного Проектирования По Б. Страуструпу. 8.8.1. Укрупненное Изложение Проектной Процедуры Б. Страуструпа. 8.8.2. Шаг 1. Выделение Понятий И Установление Основных Связей Между Ними. 8.8.3. Шаг 2. Уточнение Классов С Определением Набора Операций (Методов) Для Каждого. 8.8.4. Шаг 3. Уточнение Классов С Точным Определением Их Зависимостей От Других Классов. 8.8.5. Шаг 4. Задание Интерфейсов Классов. 8.8.6. Перестройка Иерархии Классов. 8.8.7. Свод Правил. 8.8.8. Пример Простейшего Проекта. 8.9. Технология Проектирования На Основе Обязанностей. 8.9.1. Rdd-Технология Проектирования На Основе Обязанностей. 8.9.2. Начинаем С Анализа Функционирования. Учебный Пример Объектно-Ориентированного Проекта Средней Сложности. 8.9.3. Динамическая Модель Системы. 8.9.4. Уточнение Классов С Точным Определением Их Зависимостей От Других Классов. Продолжение Учебного Примера. 8.9.5. Совместное Рассмотрение Трех Моделей. 8.10. Пример Ретроспективной Разработки Иерархии Классов Библиотеки Визуальных Компонент Delphi И C++ Builder. 8.11. Альтернативный Проект Графического Интерфейса. 8.12. Проект Асу Предприятия. 8.13. Обзор Особенностей Проектов Прикладных Систем. 8.14. Гибридные Технологии Проектирования. 8.14.1. Игнорирование Классов. 8.14.2. Игнорирование Наследования. 8.14.3. Игнорирование Статического Контроля Типов. 8.14.4. Гибридный Проект. Глава 9. Визуальное Программирование. 9.1. Общее Понятие Визуального Программирования. 9.2. Технология Визуального Программирования. Глава 10. Case-Средства И Визуальное Моделирование. 10.1. Предпосылки Появления Case-Средств. 10.2. Обзор Case-Систем. 10.3. Визуальное Моделирование В Rational Rose. 10.4. Диаграммы Uml. 10.4.1. Типы Визуальных Диаграмм Uml. 10.4.2. Диаграммы Вариантов Использования. 10.4.3. Диаграммы Последовательности. 10.4.4. Кооперативные Диаграммы. 10.4.5. Диаграммы Классов. 10.4.6. Диаграммы Состояний. 10.4.7. Диаграммы Компонент. 10.4.8. Диаграммы Размещения. 10.5. Визуальное Моделирование И Процесс Разработки Программного Обеспечения. 10.5.1. Достоинства И Недостатки Типов Процесса Разработки. 10.5.2. Начальная Фаза. 10.5.3. Использование Rose В Начальной Фазе. 10.6. Работа Над Проектом В Среде Rational Rose. Глава 11. Тестирование Программного Обеспечения. 11.1. Основные Сведения. 11.2. Свойства Программного Обеспечения. 11.3. Связь Процессов Тестирования С Процессом Проектирования. 11.4. Подходы К Проектированию Тестов. 11.5. Проектирование Тестов Больших Программ. 11.6. Критерии Выбора Наилучшей Стратегии Реализации. 11.7. Способы И Виды Тестирования Подпрограмм. Проектирование Тестов. 11.8. Проектирование Комплексного Теста. 11.9. Средства Автоматизации Тестирования. Глава 12. Менеджмент Программных Разработок. 12.1. Управление Разработкой Программных Систем. 12.2. Структура Управления Разработкой Программных Средств. 12.3. Подбор Команды. 12.4. Методология Управления Проектом. 12.5. Составляющие Методологии Разработки. 12.6. Анализ Пожеланий И Требований Заказчика. 12.7. Анализ Требований К Проекту. 12.8. Требования Пользователя. 12.9. Техническое Проектирование. 12.10. Реализация. 12.11. Системное Тестирование. 12.12. Приемочный Тест. 12.13. Послереализационный Обзор. 12.14. Сопровождение Программ. Приложение 1. Стадии И Этапы Разработки Программ По Гост 19.102-77. Приложение 2. Пример Выполнения Учебного Технического Задания. Приложение 3. Фонд Эвристических Приемов Проектирования Программ. Приложение 4. Элементы Языка Object Pascal. Приложение 5. Основные Термины И Определения. Литература.

Планеты и жизнь.

Глава I. Принцип Реди И Большой Взрыв. Глава II. Где И Из Чего Зарождается Жизнь? Глава III. Рождение Планет. Глава IV. Начались Синтезы. Глава V. Вулканы-Разрушители, Вулканы-Созидатели. Глава VI. Молекулы Жизни. Глава VII. Клетки Работают. Глава VIII. Великая Загадка Кода. Глава IX. Правое И Левое. Глава X. Боги И «Викинги». Глава XI. Внеземной Разум. Вместо Введения Жаркой Сентябрьской Осенью 1971 Года В Уютном Конференц-Зале Бюраканской Обсерватории Под Ереваном Открылась Первая Международная Конференция По Проблеме Ceti.