Оглавление
    Часть 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: продолжение
    Заключительный анализ...
    Алфавитный указатель
                                                            
                                                       
                                                        
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                 