Третья неделя Viking Code School развивалась несколько иначе, чем первые две недели. Сосредоточившись на общих основах Ruby, тестировании, структурах данных и алгоритмах в течение первых двух недель, третья неделя принесла некоторую применимую практику в веб-разработке.

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

Следующие несколько дней принесли нам знакомство с веб-скрапингом и API. По сути, они делают одно и то же, но с двумя совершенно разными подходами. Веб-скрапинг на самом деле заключается в его названии: парсинг из Интернета. Если вам нужны данные с веб-сайта, с помощью сторонних драгоценных камней, таких как HTTParty или Mechanize, вы можете «очистить» данные с этого веб-сайта, сосредоточившись на том, как они форматируют свою страницу. Это гораздо сложнее, требует больше времени и юридически рискованно, чем API, и если у них есть API, вероятно, лучше всего использовать его для сбора данных, но это очень интересная тема для изучения.

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

Помня об этих темах, мы начали по-настоящему вникать в веб-разработку и узнали о Sinatra. Sinatra — это предметно-ориентированный язык, построенный на Ruby, который позволяет пользователям легко создавать и настраивать веб-приложения. У нас было очень приятное знакомство с интеграцией некоторых веб-скрапингов и использования API в приложение Sinatra, а также создание игры в блэкджек с использованием Sinatra. Самым большим препятствием в этом процессе было создание нового экземпляра всех объектов с каждым HTTP-запросом, поскольку каждый запрос не имеет состояния и ничего не знает о другом. Чтобы обойти это препятствие, я использовал сеансы, которые создают временный файл cookie для пользователя, срок действия которого истекает, когда пользователь закрывает браузер, и может быть запрошен доменом, создавшим сеанс в первую очередь. Таким образом, мы можем хранить информацию о руке игрока, руке дилера, их текущей ставке и общем количестве денег/фишек на руках между каждой игрой или между каждым HTTP-запросом.

Оглядываясь назад, мы узнали так много всего за одну неделю. Четвертая неделя знакомит нас с Rails, самой большой и популярной средой веб-разработки, построенной на основе Ruby. Я так многому научился всего за три недели, и могу только представить, что принесет следующая неделя!