Проект #3

Анализатор страниц

PHP-разработчик

Фронтенд (Bootstrap, CDN). Фреймворк Laravel (Маршрутизация, Представление). База данных, (Миграции, query builders). Деплой (PaaS, Heroku). HTTP (в том числе выполнение запросов). Интеграционное тестирование. Логгирование.

2-4
недели

Цель

Третий проект – полноценный веб-сайт на базе фреймворка Laravel. Здесь отрабатываются базовые принципы построения современных сайтов на MVC-архитектуре: работа с роутингом, обработчиками запросов и шаблонизатором, взаимодействие с базой данных через ORM.

Независимо от используемого способа написания кода, вся веб-разработка (бэкенд) базируется на двух вещах: протоколе HTTP и клиент-серверной архитектуре которые изучаются в соответствующих курсах. Любое обращение к сайту это HTTP-запрос, а результат который мы видим это HTTP-ответ. Эти понятия составляют основу любого фреймворка и изучаются в первую очередь. В свою очередь роутинг завязан на методах HTTP и использует их для формирования конкретных маршрутов. Часто на собеседовании спрашивают: "Что происходит, когда пользователь набирает в браузере адрес сайта и нажимает Enter?". После проекта ответ на этот вопрос станет очевидным из собственного опыта.

Код - это только часть сайта. В конечном итоге имеют значение данные, которые лежат в базе данных. А для этого её сначала нужно правильно спроектировать. Здесь понадобятся знания нормальных форм и принципов построения отношений между сущностями. Сам SQL-код для создания структуры базы данных генерируется с помощью миграций, которые встроены в Laravel как часть ORM (Eloquent). Эта же ORM нужна для выполнения SQL-запросов к базе данных: вставку, модификацию и удаление данных.

И даже бэкенд разработка не может существовать без фронтенда. У любого сайта есть стили и хотя бы минимальный JavaScript, а в шаблонах на полную катушку используется HTML. В этом проекте студентам предстоит познакомиться с Bootstrap и использовать его компоненты для визуального оформления. Также здесь понадобится собирать фронтенд с помощью Webpack (встроен в Laravel) и написать немного JavaScript-кода.

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

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

Когда сайт готов, его нужно выложить в публичный доступ или, как говорят программисты: "задеплоить в продакшен". Выкладка готового кода - неотъемлемая часть разработки. Существует множество различных подходов и требований к тому как это делать эффективно. В этом проекте отрабатывается наиболее автоматизированный способ, с помощью сервиса Heroku. Это хостинг, работающий по модели PaaS (платформа как сервис), он сам отвечает за инфраструктуру и требует определённого способа организации кода для обеспечения масштабируемости.

Описание

Page Analyzer – сайт, который анализирует указанные страницы на SEO пригодность по аналогии с varvy

Проект Хекслета Анализатор страниц Анализатор страниц Анализатор страниц

Наставники

Аватар наставника Александр Пупышев
Александр Пупышев
Разработчик из Сибири. Программированием увлекается со школы. Учился на факультете «Инновационных технологий», пишет на PHP, Go, C#, JS. Ведущий разработчик финтех-продуктов в RoboFinance
Аватар наставника Владимир Моисеенко
Владимир Моисеенко
Достиг успеха и в науке, и в разработке коммерческих проектов. Магистр «Обеспечения вычислительных систем» МГУПИ, спец по разработке отказоустойчивых и высоконагруженных сервисов CRM систем. Software Engineer в Telecontact
Аватар наставника Захар Стебловский
Захар Стебловский
Пришёл в программирование из интернет-маркетинга. Не понаслышке знает, что такое менять сферу деятельности. Разрабатывал B2B-софт для авторынка. На данный момент бэкенд-разработчик в Ulindr Limited
Аватар наставника Олег Агеев
Олег Агеев
Почти 15 лет в веб. Аз по PHP, знаком с Python, Go, Java и JS. Самостоятельно проектировал инструменты службы поддержки и систему модерации контента Fotostrana, систему рассылки IQ Option, хранилище истории биржевых котировок

Впечатления

Кирилл, большое спасибо за проект!

Кстати в этом проекте никто так далеко не заходил как ты)

Видимо благодаря волшебным пинкам из за конечных автоматов))) Мозг взорвался немного - за это отдельное спасибо!

Сколько стоят проекты?

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

Зачем проходить проекты?

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

Проекты — портфолио программиста. Их код останется в вашем аккаунте на GitHub и будет преимуществом при поиске работы.

Чтобы узнать о том, что такое проекты и в чём их польза, прочитайте нашу статью «Анатомия проектов Хекслета».

Что делать, если возникли трудности во время выполнения проекта?

Задавайте вопросы в разделе «Обсуждение» на странице шага, на котором возникли трудности, или вашему наставнику. Изучите вопросы других студентов в «Обсуждениях»: там собрана большая база знаний, ей можно и нужно пользоваться. Попросите о помощи в нашем Slack-чате в канале #hexlet-projects.

Кто проверяет проекты?

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

У меня другой вопрос

Нажмите на виджет в правом нижнем углу экрана и поищите ответ в нашей справке. Или сразу пишите на support@hexlet.io — вам ответит живой человек из команды Хекслета.