Время прочтения: 7 мин.

Разные задачи, требуют разных подходов. Многие из нас используют Jupyter Notebook, который отличается удобством для работы в области Data Science. Он полезен при создании хороших аналитических отчётов, написания отдельных кусков кода, с последующим их тестированием, а главное, он позволяет хранить всё необходимое: графики, изображения, комментарии – вместе.

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

Что делать если нам всё же необходимо провести исследование или запустить простейший код? На выручку нам приходит Google Colab.

Google Colaboratory — полное наименование сервиса, который является облачным, и очень похож по своему интерфейсу на Jupyter Notebook (IPython).

Для подключения к нему нужен лишь аккаунт в Google. Вы получаете удаленный доступ к виртуальной машине с видеокартой, что особенно важно при обучении deep learning моделей, а главное его можно получить бесплатно.

В Google Colab, который поддерживает Python 2.7 и Python 3.6, предустановлено большинство библиотек, необходимых для работы с Big Data, а те, что не установлены — легко установить с помощью стандартных команд. Работает это всё с «.ipynb», можно загружать как готовые блокноты и сразу запускать их, а можно писать с нуля и потом выгружать их.

Интерфейс интуитивно понятный, и даже у новичков не должно возникнуть много проблем с использованием данного инструмента. Тем более, что Google поддерживает высокие стандарты, и снабдил свой инструмент всей необходимой документацией и примерами использования, в том числе некоторыми учебными курсами. Кроме того, позиционирует свой продукт как отличное подспорье для студентов, ds специалистов и исследователей искусственного интеллекта.

import numpy as np
from matplotlib import pyplot as plt
ys = 200 + np.random.randn(100)
x = [x for x in range(len(ys))]
plt.plot(x, ys, '-')
plt.fill_between(x, ys, 195, where=(ys > 195), facecolor='g', alpha=0.6)
plt.title("Sample Visualization")
plt.show()

Покажем на несложном примере парсинга, как можно пользоваться данным инструментом:

При открытии Google Colab, выбираем «New Notebook» и сразу пишем код:

import requests
from bs4 import BeautifulSoup
import pandas as pd
import re
url = "http://duma.gov.ru/duma/deputies/7/"
page = requests.get(url)
text = page.text
soup = BeautifulSoup(text, "html.parser")
deputates = []
commissions = []
occupations = []
party = []
count = 0    
person = soup.find_all('a', class_ = "person__image-wrapper person__image-wrapper--s")
for p in person:  
    if count > 10: # для примера возьмем лишь 10 человек
        break
          # в изображении хранятся имена
    name = p.find('img', class_ = 'person__image person__image--s')
         # берём нужную ссылку на депутата
    deputates.append(name.get("alt"))
    url_deput = "http://duma.gov.ru/" + p.get("href") 
    page = requests.get(url_deput)
    soup_deput = BeautifulSoup(page.text, "html.parser")
    comm = soup_deput.find('a', class_ = "link link--underline link--external")
    t = comm.text.strip("\n")
          # с помощью регулярных выражений убираем всё лишнее
    commissions.append(re.sub('\W+',' ',t[:t.index("(")-1]).strip()) 
    occupations.append(t[t.index("(") + 1:t.index(")")])
    part = soup_deput.find('a', class_ = "link link--underline person__description__link")
    party.append(part.text)
    count += 1 # обновляем счетчик
df = pd.DataFrame({'Депутат': deputates, 'Коммитет':commissions ,'Должность':occupations, 'Фракция': party})
df.to_csv("Gos_duma.csv")
df

По выводу — всё прекрасно работает.

Так что не забывайте про этот инструмент и пользуйтесь им в своё удовольствие.

Ещё один инструмент для запуска кода удалённо — это платформа «Heroku».

Данная облачная платформа поддерживает такие языки программирования как, Python, Java, PHP, Scala, Clojure, Go, Ruby и используется для запуска приложений на удаленном сервере.

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

Сервис ежемесячно предоставляет 550 бесплатных часов работы. При привязке карты, даже если ничего не покупать, добавляется ещё 450 бесплатных часов. При бездействии приложения(сайта) через 30 минут хост «засыпает», что обеспечивает отсутствие расхода рабочих часов, при появлении трафика, с малозаметной задержкой хост просыпается.

Для развертывания проекта, необходимо скачать интерфейс командной строки «heroku», и Git (систему управления версиями), далее следовать инструкции предоставленной на сайте.

Немаловажно для новичков то, что Heroku поддерживает взаимодействие с GitHub, а также значительно упрощает процесс работы с сервисом; на примере развертывания бота на сервере, мы сейчас покажем, как это всё происходит.

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

Файл «Procfile» сохраняется без расширения и содержит строку с названием рабочего файла, который будет запускаться на удаленном сервере. В нашем случае внутри Procfile будет строка «worker: python bot.py»

Файл «bot.py» – это код программы(бота) написанный на Python.

«requirements.txt» – содержит в себе название библиотек, используемых в «bot.py»

«runtime.txt» – содержит строку «python-3.6.6»

«token.txt» – содержит соответственно токен для API, с которым работает наш бот.

После загрузки всех файлов, мы переходим на сайт , где соответственно проходим процесс регистрации.

  1. Выбираем создание нового приложения:
  1. Выбираем регион и генерируем имя для нашего приложения:
  1. Выбираем GitHub, авторизуемся, вводим имя репозитория. Как упоминалось ранее, возможно использование командной строки Heroku при скачивании приложения и Git на ПК, но т.к. мы рассматриваем и варианты с отсутствием ПК, то берём вариант связи с GitHub, как более простым и универсальным.

После установки соединения с вашим репозиторием, необходимо выбрать настройки развертывания вашей программы на сервере.

Можно выбрать как автоматический режим, когда при каждом обновлении кода на GitHub Heroku будет автоматически обновлять ваше приложение у себя на сервере, а можно проводить это всё вручную.

Начав развертывание (Deploy), мы увидим, как сервер устанавливает все необходимые библиотеки, именно для этого ранее мы создавали файл «requirements.txt:

И если всё будет сделано правильно, то мы увидим следующую картину:

Далее переходим на вкладку «Resources», вызываем редактирование нашего «Free Dynos», и просто включаем, по цене за $0.00.

Теперь можно убедиться, что всё функционирует:

Подведём итоги.

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

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