Копирка для программирования на Python

Даниель Фуртейдо, Маркус Пеннингтон

 

Первая публикация на английском языке: Февраль 2018

Ссылка на продукт: 1260218

Все права защищены. Никакая часть этой книги не может быть воспроизведена, сохранена в поисковой системе или передана в любой форме или любыми средствами без предварительного письменного разрешения издателя, за исключением случаев кратких цитат, встроенных в критические статьи и обзоры.

При подготовке этой книги были предприняты все усилия чтобы гарантировать точность представленной информации. Тем не менее, информация, содержащаяся в этой книге, продаётся без гарантии в явном или неявном виде. Ни авторы, ни Packt Publishing, ни их дилеры и дистрибьюторы не будут нести ответственность за любые убытки, вызванные или предположительно вызванные прямо или косвенно этой книгой.

Packt Publishing пыталась предоставить информацию о товарных знаках обо всех компаниях и продуктов, упомянутых в данной книге для надлежащего использования капиталов. Тем не менее, Packt Publishing не может гарантировать точность этой информации.

Опубликовано Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham B3 2PB, UK

ISBN 978-1-78646-816-1

www.packtpub.com

2018-07-22

 Состав исполнителей

Издания на английском языке
Авторы
Даниель Фуртейдо
Маркус Пеннингтон
Редактор выпуска
Меринт Мэтью
Редактор
Сандип Мишра
Редактор разработки содержания
Лоуренс Вейгас
Технический редактор
Мехул Сингх
Литературный редактор
Safis Editing
Координатор проекта
Праджакта Нейк
Корректор
Safis Editing
Составитель указателя
Рекха Нейр
Графика
Джиша Чирейил
Координатор производства
Арвиндкумар Гупта

 Об авторах

Даниель Фуртейдо

Маркус Пеннингтон

 Рецензент

Том Вайнер

Радован Кавички

 www.PacktPub.com

 Содержание

Предисловие
Для кого эта книга
Что охватывает эта книга
Как получить максимальную отдачу от этой книги
Загрузка примеров кода этой книги
Принятые соглашения
Будьте на связи
Отзывы
Опечатки
Незаконное тиражирование
Вопросы
Глава 1. Реализация приложения прогноза погоды
Установка среды
Функциональность ядра
Динамическая загрузка программ анализа синтаксиса
Создание модели приложения
Извлечение данных с веб сайта погоды
Получение ввода пользователя при помощи ArgumentParser
Создание программы синтаксического анализа
Получения прогноза погоды на сегодня
Добавление методов помощника
Реализация прогноза погоды на сегодня
Получения прогноза погоды через пять и десять дней
Получения прогноза погоды на выходные
Выводы
Глава 2. Создание приложения удалённого управления при помощи Spotify
Настройка среды
Создание прикладного приложения Spotify
Настройка приложения
Создание файла настройки
реализация считывания файла настройки
Аутентификация с помощью веб API Spotify
Реализация потока полномочий определённого клиента
Реализация потока самого кода авторизации
Авторизация нашего приложения через поток кода авторизации
Запросы к веб API Spotify
Создание проигрывателя
Добавление меню для альбома дорожек
Реализация панели меню
Создание класса DataManager
Пора слушать музыку!
Выводы
Глава 3. Оценка голосов в Twitter
Настройка среды
Создание приложения Twitter
Добавление файла настройки
Выполнение аутентификации
Создание приложения Flask
Создание маршрутов приложения
Добавление централизованной регистрации
Построение приложений подсчёта голосов Twitter
Выводы
Глава 4. Курсы обмена и инструменты преобразования валют
Настройка среды
Создание обёртки API
Добавление класса помощника базы данных
Создание анализатора командной строки
Создание перечислимого типа данной валюты
Создание анализатора командной строки
Базовая проверка правильности
Добавление входной точки приложения
Проверка приложения
Выводы
Глава 5. Построение веб рассылки с микрослужбами
Цели TempMessenger
Требования
Что такое Nameko?
RPC
Как Nameko применяет AMQP?
RabbitMQ
Запуск контейнера RabbitMQ
Установка требований Python
Создание вашей первой службы Nameko
Выполнение вызова вашей службы
Поблочное тестирование микрослужбы Nameko
Выставление точек входа HTTP
Интегрированная проверка микрослужб Nameko
Запоминание сообщений
Введение в Redis
Запуск контейнера Redis
Установка Python клиента Redis
Применение Redis
Поставщики зависимостей Nameko
Добавление поставщика зависимостей Redis
Разработка клиента
Создание поставщика зависимостей
Создание нашей службы сообщений
Собираем воедино
Накопление сообщений
Добавление метода накопления сообщений в нашего клиента Redis
Добавление RPC накопления сообщения
Выборка всех сообщений
Добавление метода получения всех сообщений в нашего клиента Redis
Добавление RPC получения всех сообщений
Собираем воедино
Отображение сообщений в веб браузере
Добавление поставщика зависимостей Jinja2
Создание шаблона отображения
Создание шаблона нашей домашней страницы
Создание поставщика зависимостей
Выполнение отклика HTML
Собираем воедино
Отправка сообщений через запросы POST
Добавление отправки сообщений запроса POST
Добавление AJAX POST request in jQuery
Срок действия сообщений в Redis
Сортировка сообщений
Опрос браузера для сообщений
Опрос посредством JavaScript
Выводы
Глава 6. Развитие TempMessenger при помощи микрослужбы аутентификации пользователя
Цели TempMessenger
Требования
Создание зависимости Postgres
Создание контейнера Docker Postgres
Создание конкретной модели пользователя
Создание определённой зависимости пользователя
Создание пользователей
Создание службы пользователей
Безопасное сохранение паролей в базе данных
Применение Bcrypt
Хэширование паролей наших пользователей
Обработка дублируемых пользователей
Аутентификация пользователей
Выборка пользователей из базы данных
Аутентификация пароля пользователя
Горизонтальное расщепление служб
Создание сервера Flask
Корпоративное применение Hue
Развитие науки с помощью Hue
Обучение детей в будущем посредством Hue
Веб сеансы
Создание страницы подписи
Выход пользователя из системы
Регистрация пользователя
Подключение вашей электронной почты к нашему обмену сообщениями
Выводы
Глава 7. Магазин видеоигр реального времени в Django
Установка среды разработки
Установка Node.js
Создание нового проекта Django
Изучение структуры проекта Django
Погружаемся в SQLite
Просматриваем каталог пакета своего проекта
Создание основного прикладного приложения проекта
Установка зависимостей стороны клиента
Добавление обзоров регистрации и выхода из системы
Проверка форм login/logout
Создание новых пользователей
Создание обзоров создания пользователя
Создание модели данных игры
Создание прайс листа модели данных
Создание страницы перечня и подробностей игр
Добавление обзора перечней игр
Создание модели карты покупки
Создание формы карты покупки
Создание просмотра карты покупки
Добавление элементов в данную карту
Выводы
Глава 8. Микрослужба заказа
Настройка среды
Создание моделей служб
Создание диспетчеров моделей
Изучение проверок
Создание файлов проверок
Проверка функции прекращения заказа
Проверка функции получения всех заказов
Получение невыполненных заказов пользователей
Получение завершённых заказов пользователей
Получение заказов по состоянию
Получение заказов по продолжительности
Установка следующего состояния заказа
Установка состояния заказа
Создание упорядочивателя модели заказа
Создание обзоров
Добавление обзоров
Установка URL службы
Интеграция с магазином игр в реальном времени
Проверка интеграции
Развёртывание в AWS
Изменение вашего файла settings.py
Оснащение службы заказов
Выводы
Глава 9. Приложение уведомления без сервера
Настройка среды
Установка CLI Amazon Web Services
Настройка простой службы электронной почты
Регистрация электронной почты
Создание корзины S3
Реализация службы уведомлений
Шаблоны электронных писем
Развёртывание приложения при помощи Zappa
Ограничение доступа к конечным точка API
Изменение службы заказов
Проверка всего вместе
Выводы
Указатель

 Предисловие

Если вы были причастны к индустрии разработки программного обеспечения в последние 20 лет, вы наверняка слышали о языке программирования под названием Python. Созданный Гвидо ван Россумом, Pyhton впервые появился в 1991 и завоевал сердца многих разработчиков программного обеспечения по всему миру с тех пор.

Однако, как так получается, что язык, которому более 20 лет, всё ещё присутствует и становится вс более популярным день ото дня?.

Ну, ответ на этот вопрос простой. Python потрясающе подходит ко всему (или почти ко всему). Python является языком программирования общего назначения, что означает что вы можете создавать простые терминальные приложения, веб приложения, микрослужбы, игры, а также сложные научные приложения. Несмотря на то, что Python можно применять для различных целей, Python является языком, который знаменит тем, что его просто изучить, что идеально подходит как новичкам, так и людям, не имеющим опыта в области компьютеров.

Python является полностью укомплектованным языком программирования, что означает, что в большинстве случаев вам не будет требоваться применять никакие внешине зависимости при разработке своих проектов. Стандартная библиотека Python обладает богатой функциональностью и в большистве случаев содержит всё что вам необходимо для создания своих программ, а если в исключительном случае вам требуется что- то, чего нет в стандартной библиотеке, PyPI (Python Package Index) в настоящее время содержит 117 652 пакета.

Сообщество Python дружелюбно, любезно, разнообразно и чрезвычайно страстно заботится о языке, и всякий участник сообщества всегда счастлив оказывать взаимопомощь.

Если вы всё ещё не убеждены, популярный веб-сайт StackOverflow опубликовал статистику текущего года о популярности языков программирования на основе количества вопросов, которые пользователи добавляют на сайт, причём Python - один из самых популярных языков, сразу вслед за JavaScript, Java, C# и PHP.

Сейчас самое подходящее время стать разработчиком Python, поэтому давайте приступим!

 Для кого эта книга

Эта книга предназначена для разработчиков программного обеспечения, которые знакомы с Python и хотят получить опыт работы с веб-проектами и разработками программного обеспечения. Требуются базовые знания программирования Python.

 Что охватывает эта книга

Глава 1. Реализация приложения прогноза погоды предоставит вам руководство по разработке терминального приложения, которое будет отображать текущее состояние погоды для определённого региона, а также прогноз на следующие 5 дней. Данная глава ознакомит вас с основными понятиями программирования Python. Вы изучите как выполнять разбор аргументов командной строки и добавлять дополнительную интерактивность в программы, а также вы в конечном итоге увидите как выскребать (scrape) данные из вебсайтов при помощи популярной оснастки Beautiful Soup.

Глава 2. Создание приложения удалённого управления при помощи Spotify расскажет о том как вы можете осуществлять аутентификацию с помощью Spotify API применяя OAuth. Мы воспользуемся библиотекой curses чтобы сделать своё приложение более интерсным и дружественным пользователю.

Глава 3. Оценка голосов в Twitter Расскажет вам как применять библиотеку Tkinter для создания великолепного пользовательского интерфейса с применением Python. Мы воспользуемся Reactive Extensions для Python чтобы определять когда выполнено некое голосование в нашем сервере, после чего мы опубликуем полученные изменения в своём интерфейсе пользователя.

Глава 4. Курсы обмена и инструменты преобразования валют позволит вам реализовать преобразователь валют, который будет получать соотношения иностранных обменных курсов в реальном масштабе времени из различных источников и применять полученные данные для осуществления необходимой конвертации. Мы разработаем некий API, который содержит вспомогательные функции для выполнения таких преобразований. Вначале мы воспользуемся API преобразования зарубежных обменных курсов и преобразования валют с открытым исходным кодом (http:/​/​fixer.​io/).

Вторая часть этой главы обучит тому как создавать приложение командной строки, которое использует наш API для опросы данных из имеющихся источников данных, также получает преобразование валют с несколькими параметрами.

Глава 5. Построение веб рассылки с микрослужбами обучит вас тому как использовать Nameko, конструктив микрослужб для Python. Мы также изучим как выполнять зависимости поставщиков для внешних ресурсов, таких как Redis. Данная глава также затронет проверку интеграции служб Nameko и основы запросов AJAX для API.

Глава 6. Развитие TempMessenger при помощи микрослужбы аутентификации пользователя будет построена на основе вашего прикладного приложения из Глава 5. Построение веб рассылки с микрослужбами. Вы изучите как создавать некую микрослужбу аутентификации пользователя, которая будет сохранять пользователей в базе данных Postgres. Применяя Bcrypt вы также изучите как безопасно сохранять пароли в какой- то базе данных. Эта глава также обсудит создание веб интерфейса Flask и того, как применять куки для сохранения данных веб сеанса. К концу этих глав вы получите полную экипировку для создания масштабируемых и связных микрослужб.

Глава 7. Магазин видеоигр реального времени в Django позволит вам создать магазин видеоигр в реальном вермени. Он будет содержать такие свойства, как просмотр видеоигр по категориям, осуществление поиска с применением различных критериев, просмотр подробной информации о каждой игре и, наконец, добавление игр в карту покупок и размещение заказа. Здесь вы познакомитесь с Django 2.0, его UI администрирования, моделью данных Django и со многим другим.

Глава 8. Микрослужба заказа поможет вам с построением микрослужбы, которая будет отвечать получение заказов от вашего веб приложения, которое было разработано в нашей предыдущей главе. Микрослужба заказа также предоставит дополнительные свойства, такие как возможность обновления состояния заказов и предоставление информации о заказе с помощью различных критериев.

Глава 9. Приложение уведомления без сервера обучит вас решениям функциональности без сервера и тму как строить службу уведомлений при помощи Flask и развёртывать окончательное приложение в Lambda AWS при помощи великолепного проекта Zappa. Вы также изучите как интегрировать свои веб приложения, которые были разработаны в Глава 7. Магазин видеоигр реального времени в Django и разработанную в Глава 8. Микрослужба заказа микрослужбу заказа с безсерверным приложением уведомлений.

 Как получить максимальную отдачу от этой книги

Чтобы выполнять предоставленные в данной книге коды на своей локальной машине вам понадобится следующее:

Все прочие требования будут постулироваться по мере нашего продвижения по главам книги. Все инструкции из это главы были осуществлены в системах macOS или Debian/Ubuntu; хотя авторы предприняли все меры по соблюдению межплатформенной независимости.

 Загрузка примеров кода этой книги

Вы можете выгрузить все файлы примеров кода для данной книги из своей учётной записи www.packtpub.com. Если вы приобрели эту книгу в ином месте, будьте добры, пройдите в www.packtpub.com/support и зарегистрируйтесь чтобы иметь эти файлы высланные непосредственно вам по электронной почте.

Вы можете выгрузить все файлы кодов пройдя следующие шаги:

  1. Зайдите зарегистрированным пользователем на www.packtpub.com.

  2. Выберите закладку SUPPORT.

  3. Кликните по Code Downloads & Errata.

  4. Введите название нужной вам книги в блоке Search и следуйте появляющимся на экране инструкциям.

После того, как необходимые файлы выгружены, убедитесь что вы раззиповали или раскрыли их в нужную папку при помощи самой последней версии:

  • WinRAR/7-Zip для Windows.

  • Zipeg/iZip/UnRarX для Mac.

  • 7-Zip/PeaZip для Linux.

Пакет кода также размещён на GitHub по адресу https:/​/​github.​com/PacktPublishing/​Python-​Programming-​Blueprints. Также у нас имеются и другие пакеты кода из нашего богатого каталога книг и видео, доступные по адресу https://github.com/PacktPublishing/. Следите за изменениями!

 Соглашения

В данной книге вы найдёте ряд текстовых стилей, которые делают разницу между различными видами информации. Здесь мы приводим некоторые примеры этих стилей и объяснение их назначения.

CodeInText указывает кодовые слова в тексте, имена таблиц базы данных, имена папок, имена файлов, расширения файлов, имена путей, модели URL-адресов, ввод пользователя, и регулировки Twitter. Вот некий пример: "Этот метод выполнит вызов метода exec из Runner для исполнения той функции, которая выполнит необходимые запросы в соответствующем Twitter API".

Блок кода устанавливается следующим образом:


def set_header(self):
    title = Label(self,
                  text='Voting for hasthags',
                  font=("Helvetica", 24),
                  height=4)
    title.pack()
 	   

Если вы желаете привлечь внимание к определённой части блока кода,соответствующие строки или элементы выделяются жирным:


def start_app(args):
    root = Tk()
    app = Application(hashtags=args.hashtags, master=root)
    app.master.title("Twitter votes")
    app.master.geometry("400x700+100+100")
    app.mainloop() 	   

Любой ввод командной строки или её вывод записываются следующим образом:


python app.py --hashtags debian ubuntu arch
 	   

Жирно: указывает новый термин, важное слово которые вы видите на экране, например, в меню или блоках диалогов появляются именно так. Вот пример: "Он сообщает Logged as с именем вашего пользователя, причём сразу после него имеется ссылка на выход из системы. Примените её для перемещения и кликните по этой ссылке Log off.".

[Замечание]Замечание

Предостережения или важные замечания появляются в блоках подобных этому.

[Совет]Совет

Советы и ловкие приёмы возникают таким образом.

 Будьте на связи

Обращения наших читателей всегда приветствуются.

Обычная обратная связь: Пошлите электронное письмо на адрес feedback@packtpub.com с упоминанием заголовка книги в теме вашего сообщения. Если у вас имеются вопросы относительно любых сторон данной книги, обратитесь, пожалуйста, по адресу questions@packtpub.com.

Ошибки: Хотя мы и предприняли все меры чтобы гарантировать точность содержимого, ошибки могут иметь место. Если вы обнаружили ошибку в данной книге, мы будем вам признательны если вы сообщите нам о ней. Посетите, пожалуйста, www.packtpub.com/submit-errata, выбрав вашу книгу, кликнув на ссылку Errata Submission Form, и заполнив подробности найденной вами ошибки.

Пиратство: Если вы столкнётесь с какой-либо незаконной копией наших работ в любой форме в Интернете, пожалуйста, предоставьте нам сразу адрес местонахождения или имя веб-сайта, чтобы мы могли принять меры. Пожалуйста, обратитесь по адресу copyright@packtpub.com со ссылкой на материалы содержащие признаки нарушения авторских прав. {Прим. пер.: Согласно закону об авторском праве РФ, авторские права на перевод принадлежат авторам этого перевода. Данным переводом, по нашему мнению, мы служим популяризации основных стратегических направлений развития тем Packt. В случае наличия конструктивных предложений, готовы к тесному сотрудничеству.}.

Если вы желаете стать нашим автором: Если у вас существует тема, в которой у вас имеется опыт и вы заинтересованы либо в написании, либо во вкладе в книгу, обратитесь к руководству по адресу authors.packtpub.com.

 Отзывы

Оставляйте, пожалуйста, отзывы. Если вы прочли и воспользовались данной книгой, почему бы вам не оставить отзыв на том сайте, на котором вы её приобрели? Потенциальные читатели затем смогут увидеть и применить ваше беспристрастное суждение чтобы принять решение о приобретении, мы в Packt сможем понять что вы думаете о нашем продукте, а наши авторы увидят обратную связь относительно своей книги. Мы заранее благодарим вас!

Для получения дополнительной информации о Packt посетите, пожалуйста packtpub.com.