Оглавление
Часть IV. Создание сценариев для Интернета
Глава 12. Сетевые сценарии
«Подключись, зарегистрируйся и исчезни»
Темы, касающиеся разработки сценариев для Интернета
Опробование примеров этой части книги
Другие возможности разработки сценариев для Интернета на языке Python
Трубопровод для Интернета
Слой сокетов
Слой протоколов
Библиотечные модули Python для Интернета
Программирование сокетов
Основы сокетов
Запуск программ, использующих сокеты, на локальном компьютере
Запуск программ, использующих сокеты, на удаленном компьютере
Параллельный запуск нескольких клиентов
Подключение к зарезервированным портам
Обслуживание нескольких клиентов
Ветвление серверов
Многопоточные серверы
Классы серверов в стандартной библиотеке
Мультиплексирование серверов с помощью select
Подводя итоги: выбор конструкции сервера
Придание сокетам внешнего вида файлов и потоков ввода­вывода
Вспомогательный модуль перенаправления потоков ввода­вывода
Простой файловый сервер на Python
Запуск сервера файлов и клиентов
Добавляем графический интерфейс пользователя
Глава 13. Сценарии на стороне клиента
«Свяжись со мной!»
FTP: передача файлов по сети
Передача файлов с помощью ftplib
Использование пакета urllib для загрузки файлов
Утилиты FTP get и put
Добавляем пользовательский интерфейс
Передача каталогов с помощью ftplib
Загрузка каталогов сайта
Выгрузка каталогов сайтов
Реорганизация сценариев выгрузки и загрузки для многократного использования
Передача деревьев каталогов с помощью ftplib
Выгрузка локального дерева каталогов
Удаление деревьев каталогов на сервере
Загрузка деревьев каталогов с сервера
Обработка электронной почты
Поддержка Юникода в Python 3.X и инструменты электронной почты
POP: чтение электронной почты
Модуль настройки электронной почты
Сценарий чтения почты с сервера POP
Извлечение сообщений
Чтение почты из интерактивной оболочки
SMTP: отправка электронной почты
Сценарий отправки электронной почты по SMTP
Отправка сообщений
Отправка почты из интерактивной оболочки
Пакет email: анализ и составление электронных писем
Объекты Message
Базовые интерфейсы пакета email в действии
Юникод, интернационализация и пакет email в Python 3.1
Почтовый клиент командной строки
Работа с клиентом командной строки pymail
Вспомогательный пакет mailtools
Файл инициализации
Класс MailTool
Класс MailSender
Класс MailFetcher
Класс MailParser
Сценарий самотестирования
Обновление клиента командной строки pymail
NNTP: доступ к телеконференциям
HTTP: доступ к веб­сайтам
Еще раз о пакете urllib
Другие интерфейсы urllib
Прочие возможности создания клиентских сценариев
Глава 14. Почтовый клиент PyMailGUI
«Пользуйся исходными текстами, Люк!»
Модули с исходными текстами и их объем
Зачем нужен PyMailGUI?
Запуск PyMailGUI
Стратегия представления
Основные изменения в PyMailGUI
Новое в версиях 2.1 и 2.0 (третье издание)
Новое в версии 3.0 (четвертое издание)
Демонстрация PyMailGUI
Запуск
Загрузка почты
Многопоточная модель выполнения
Интерфейс загрузки с сервера
Обработка без подключения к Интернету, сохранение и открытие
Отправка почты и вложений
Просмотр электронных писем и вложений
Ответ на сообщения, пересылка и особенности адресации
Удаление сообщений
Номера POP-сообщений и синхронизация
Обработка содержимого электронной почты в формате HTML
Поддержка интернационализации содержимого
Альтернативные конфигурации и учетные записи
Многооконный интерфейс и сообщения о состоянии
Реализация PyMailGUI
PyMailGUI: главный модуль
SharedNames: глобальные переменные программы
ListWindows: окна со списками сообщений
ViewWindows: окна просмотра сообщений
messagecache: менеджер кэша сообщений
popuputil: диалоги общего назначения
wraplines: инструменты разбиения строк
html2text: извлечение текста из разметки HTML (прототип, предварительное знакомство)
mailconfig: настройки пользователя
textConfig: настройка окон редактора PyEdit
PyMailGUIHelp: текст справки и ее отображение
altconfigs: настройка нескольких учетных записей
Идеи по усовершенствованию
Глава 15. Сценарии на стороне сервера
«До чего же запутанную паутину мы плетем…»
Что такое серверный CGI-¬сценарий?
Притаившийся сценарий
Создание CGI¬-сценариев на языке Python
Запуск примеров серверных сценариев
Выбор веб­сервера
Использование локального веб­сервера
Корневая страница с примерами на стороне сервера
Просмотр примеров серверных сценариев и их вывода
Вверх к познанию CGI
Первая веб­страница
Первый CGI-¬сценарий
Добавление картинок и создание таблиц
Добавление взаимодействия с пользователем
Табличная верстка форм
Добавление стандартных инструментов ввода
Изменение размещения элементов формы ввода
Передача параметров в жестко определенных адресах URL
Передача параметров в скрытых полях форм
Сохранение информации о состоянии в сценариях CGI
Параметры запроса в строке URL
Скрытые поля форм
HTTP «Cookies»
Базы данных на стороне сервера
Расширения модели CGI
Комбинирование приемов
Переключатель «Hello World»
Проверка отсутствующих или недопустимых данных
Рефакторинг программного кода с целью облегчения его сопровождения
Шаг 1: совместное использование объектов разными страницами – новая форма ввода
Шаг 2: многократно используемая утилита имитации формы
Шаг 3: объединим все вместе – новый сценарий ответа
Подробнее об экранировании HTML и URL
Соглашения по экранированию адресов URL
Инструменты Python для экранирования HTML и URL
Экранирование разметки HTML
Экранирование адресов URL
Экранирование адресов URL, встроенных в разметку HTML
Передача файлов между клиентами и серверами
Отображение произвольных файлов сервера на стороне клиента
Выгрузка файлов клиента на сервер
Как же все­таки протолкнуть биты через Сеть
Глава 16. Сервер PyMailCGI
«Список дел на поездку в Чикаго»
Веб¬-сайт PyMailCGI
Обзор реализации
Новое в версии для четвертого издания (версия 3.0)
Новое в версии для предыдущего издания (версия 2.0)
Обзорное представление программы
Опробование примеров из этой главы
Корневая страница
Настройка PyMailCGI
Отправка почты по SMTP
Страница составления сообщений
Сценарий отправки почты
Страницы с сообщениями об ошибках
Единство внешнего вида
Использование сценария отправки почты без броузера
Чтение электронной почты по протоколу POP
Страница ввода пароля POP
Страница выбора почты из списка
Передача информации о состоянии в параметрах URL-ссылки
Протоколы защиты данных
Страница просмотра сообщений
Передача информации о состоянии в скрытых полях форм HTML
Экранирование текста сообщения и паролей в HTML
Обработка загруженной почты
Ответ и пересылка
Удаление
Операция удаления и номера POP-сообщений
Вспомогательные модули
Внешние компоненты и настройки
Интерфейс к протоколу POP
Шифрование паролей
Общий вспомогательный модуль
Преимущества и недостатки сценариев CGI
PyMailGUI и PyMailCGI
Веб¬-приложения и настольные приложения
Другие подходы
Часть V. Инструменты и приемы
Глава 17. Базы данных и постоянное хранение
«Дайте мне приказ стоять до конца, но сохранить данные»
Возможности постоянного хранения данных в Python
Файлы DBM
Работа с файлами DBM
Особенности DBM: файлы, переносимость и необходимость закрытия
Сериализованные объекты
Применение сериализации объектов
Сериализация в действии
Особенности сериализации: протоколы, двоичные режимы и модуль _pickle
Файлы shelve
Использование хранилищ
Сохранение объектов встроенных типов в хранилищах
Сохранение экземпляров классов в хранилищах
Изменение классов хранимых объектов
Ограничения модуля shelve
Ограничения класса Pickler
Другие ограничения хранилищ модуля shelve
Объектно­ориентированная база данных ZODB
Сильно сокращенный учебник по ZODB
Интерфейсы баз данных SQL
Обзор интерфейса SQL
Учебник по API базы данных SQL на примере SQLite
Создание словарей записей
Объединяем все вместе
Загрузка таблиц базы данных из файлов
Вспомогательные сценарии SQL
Ресурсы SQL
ORM: механизмы объектно¬-реляционного отображения
PyForm: просмотр хранимых объектов (внешний пример)
Глава 18. Структуры данных
«Розы – красные, фиалки – голубые; списки изменяемы, а также и класс Foo»
Реализация стеков
Встроенные возможности
Модуль stack
Класс Stack
Индивидуальная настройка: мониторинг производительности
Оптимизация: стеки в виде деревьев кортежей
Оптимизация: непосредственная модификация списка в памяти
Хронометраж усовершенствований
Реализация множеств
Встроенные возможности
Функции множеств
Классы множеств
Оптимизация: перевод множеств на использование словарей
Алгебра отношений для множеств (внешний пример)
Создание подклассов встроенных типов
Двоичные деревья поиска
Встроенные возможности
Реализация двоичных деревьев
Деревья с ключами и значениями
Поиск на графах
Реализация поиска на графе
Перевод графов на классы
Перестановки последовательностей
Обращение и сортировка последовательностей
Реализация обращения
Реализация сортировки
Структуры данных в сравнении со встроенными типами: заключение
PyTree: универсальное средство просмотра деревьев объектов
Глава 19. Текст и язык
«Пилите, Шура, пилите!»
Стратегии обработки текста в Python
Строковые методы
Обработка шаблонов с помощью операций замены и форматирования
Анализ текста с помощью методов split и join
Суммирование по колонкам в файле
Синтаксический анализ строк правил и обратное преобразование
Поиск по шаблонам регулярных выражений
Модуль re
Первые примеры
Строковые операции и шаблоны
Использование модуля re
Дополнительные примеры шаблонов
Поиск совпадений с шаблонами в файлах заголовков C
Синтаксический анализ XML и HTML
Анализ XML
Анализ HTML
Дополнительные инструменты синтаксического анализа
Парсеры, написанные вручную
Грамматика выражений
Реализация парсера
Добавление интерпретатора дерева синтаксического анализа
Структура дерева синтаксического анализа
Исследование деревьев синтаксического анализа с помощью PyTree
Парсеры и возможности Python
PyCalc: программа/объект калькулятора
Графический интерфейс простого калькулятора
PyCalc – графический интерфейс «настоящего» калькулятора
Глава 20. Интеграция Python/C
«Я заблудился в C»
Расширение и встраивание
Расширения на C: обзор
Простой модуль расширения на C
Генератор интегрирующего программного кода SWIG
Простой пример SWIG
Создание оберток для функций окружения C
Добавление классов­оберток в простые библиотеки
Обертывание функций окружения C с помощью SWIG
Обертывание классов C++ с помощью SWIG
Простое расширение с классом C++
Обертывание классов C++ с помощью SWIG
Использование класса C++ в Python
Другие инструменты создания расширений
Встраивание Python в С: обзор
Обзор API встраивания в C
Что представляет собой встроенный код?
Основные приемы встраивания
Выполнение простых строк программного кода
Выполнение строк программного кода с использованием результатов и пространств имен
Вызов объектов Python
Выполнение строк в словарях
Предварительная компиляция строк в байт¬код
Регистрация объектов для обработки обратных вызовов
Реализация регистрации
Использование классов Python в программах C
Другие темы интеграции
Часть VI. Финал
Глава 21. Заключение: Python и цикл разработки
«Книга заканчивается, пора уже и о смысле жизни»
«Как-¬то мы неправильно программируем компьютеры»
«Фактор Гиллигана»
Делать правильно
Цикл разработки для статических языков
Искусственные сложности
Одним языком не угодишь всем
И тут появляется Python
А как насчет того узкого места?
Python обеспечивает цикл разработки без промежуточных стадий
Python является «выполняемым псевдокодом»
Python – это правильное ООП
Python способствует созданию гибридных приложений
По поводу потопления «Титаника»
Так что же такое Python: продолжение
Заключительный анализ...
Алфавитный указатель