Вы находитесь на старой версии проекта. Новая версия доступна по ссылке

Проект Вычислитель отличий

Уровень: 2

Профессия PHP-программист

В этом проекте отрабатывается работа с коллекциями. Изучаются способы построения и обхода деревьев. Вы познакомитесь с разными форматами данных (json, yml), научитесь их парсить и формировать. Начнете писать тесты (PHPUnit) и освоите разработку через них. Познакомитесь с непрерывной интеграцией (CI) и элементами экстремального программирования (XP). Прокачаете ООП мышление.

6
шагов
2-4
недели

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

Профессия PHP-программист

Цель

Второй проект является логическим развитием первого. Он захватывает большую часть синтаксических возможностей php и использует более сложную архитектуру. Затрагиваемые темы:

  • cli. В этом проекте вы научитесь создавать cli приложения так, как это делается в настоящей жизни, с использованием специальных библиотек, занимающихся парсингом входных параметров, валидацией и генерацией помощи.
  • Форматы данных: json, yaml, ini. Кроме понимания самих форматов, вы так же научитесь транслировать данные из php в эти форматы и обратно.
  • Алгоритмическая подготовка. Вас ждет обработка и трансформация деревьев. Немного кода, кипятящего мозг, никогда не помешает.
  • Архитектурные принципы: Фасад, Адаптер. Вы познакомитесь и на практике реализуете одни из самых распространенных подходов при организации кода.
  • Полиморфизм
  • Функциональное программирование

Красной нитью сквозь этот проект будет проходить unit-тестирование, а в идеале - разработка через тесты.

Описание

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

Возможности утилиты:

  • Поддержка разных форматов
  • Генерация отчета в виде plain text, pretty и json

Пример использования:

$ gendiff --format plain first-config.ini second-config.ini
Setting "common.setting2" deleted.
Setting "common.setting4" added with value "blah blah".
Setting "group1.baz" changed from "bas" to "bars".
Section "group2" deleted.

Проект Вычислитель отличий

Создайте рабочее приложение, которое станет частью вашего портфолио.

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

Впечатления

Можно выдохнуть. Второй проект по сравнению с первым намного тяжелее, что будет с третьим боюсь представить. Затруднения были в самом начале, пока не разобрался с документацией docopt и с обработкой и трансформацией дерева, мозг закипал несколько раз, помогли ссылки на доку и комменты в обсуждениях. Если бы не изменения сроков в сдаче проекта, я бы точно завалился. В целом я в восторге, новые знания, опыт и проект в портфолио. Спасибо всей команде hexlet'a!

Кирилл, спасибо за проект! Было сложно и интересно, 4 шаг заставил очень много думать)

Вопросы и ответы

Какое расписание у проекта?

У проектов нет расписаний, все проекты доступны 24 часа в сутки, и вы можете заниматься в удобное для вас время.

Как оплачивается проект?

Один проект стоит $127, и оплата снимается только если вы отправите на проверку первое задание в проекте. Если вы начнете проект, но не выполните первое задание, то деньги списываться не будут. Для участия в проекте нужно иметь активную месячную или годовую подписку, и деньги за проект будут списываться с вашей привязанной карты.

Зачем нужны проекты?

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

Что делает ментор в проектах?

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

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

Пишите нам на support@hexlet.io, вам ответит живой человек из команды Хекслета. Или нажмите на иконку со знаком вопроса в правом нижнем углу экрана. Там есть ответы и на другие вопросы и удобная форма для отправки сообщения нам.

Проект Вычислитель отличий

Создайте рабочее приложение, которое станет частью вашего портфолио.

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