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

Вычислитель отличий

Фронтенд-программист

Узнаете как создавать cli приложения, парсить и форматировать данные в json, yaml, ini. Научитесь проектировать архитектуру приложений. А также писать unit-тесты.

2-4
недели

Цель

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

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

Красной нитью сквозь этот проект будет проходить 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.

Наставники

Вадим Сорокин
Frontend Developer, Universa Blockchain
Вадим Кудрявцев
Frontend Developer, OneTwoTrip
Кирилл Костиков
Frontend Developer, Pushwoosh
Александр Половников
Software Engineer, VideoCoin

Впечатления

Да, проект дался нелегко, и занял в 2 раза больше времени чем предыдущий, но зато сколько он дал!!! Только проходя проект осознаешь, что одно дело пройти курс, а совсем другое - уметь применять полученные знания и понимать, что ты на самом деле делаешь и как это выглядит со стороны. В процессе реализации проекта магическая рекурсия перестает быть магической и становится будничным инструментом который помогает лучше понять суть деревьев. Большое спасибо Павлу Дроненко за доступные разъяснения сложных вопросов и помощь в изучении нового материала.

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

Второй проект помог на практике закрепить пройденные темы, понять, что тесты – это не так страшно, как кажется, увидеть прекрасное в функциях высшего порядка и рекурсии и в очередной раз попотеть, настраивая окружение)

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

Только что завершил проект и захотел оставить отзыв. В сравнении с первым проектом этот дался существенно труднее, зато узнал много нового и да, обучение через рефакторинг реально работает, ребят)
Благодарен сообществу Слака, они помогли преодолеть затыки, возникавшие в ходе прохождения шагов проекта.
Огромное спасибо ментору Сергею Мелодину, очень приятно удивило его внимательное и неравнодушное отношение и бесконечное терпение в сочетании со стремлением объяснить простым языком сложные вещи, которые заходили в голову с трудом, особенно вечером после работы)
Проект реально помогает отложить в голове такие не совсем интуитивно понятные штуки, как рекурсивный обход деревьев, функции высшего порядка, ну и тесты для тех, кто раньше с ними никогда не имел дела.

Наконец завершен второй проект! Сказать что было трудно - ничего не сказать. Но я многое вынесла из этого проекта. Спасибо Хекслет за качественное обучение. Отдельная благодарность Станиславу Дзисяк. Его ответы,и в проектах, и в обсуждениях, всегда на высоте в плане информативности, и доведении до сути той или иной проблемы. Спасибо!

Ура, второй проект завершен и принят ментором! В этом заслуга моего замечательного наставника Павла Дроненко, который всегда либо поддерживал, либо подталкивал в нужном направлении в моменты отчаяния и безнадёги, а также терпел моё бесконечное нытьё, качественно разжёвывал сложный материал и оперативно давал фидбек по всем вопросам. Сам проект оставил противоречивые эмоции. Суммарно я потратил на него несколько дней чистого времени, но они растянулись на весь декабрь из-за первых шагов - очень тяжело зашли задания по кодклаймету и гитхаб actions, хотелось всё бросить и забыть как страшный сон. Я не понимал, что к чему, что вообще от меня требуется, но переосилил себя и справился. А вот основная часть была интересной и зашла на ура, получил настоящий кайф от проделанной работы. Половина пути позади! Теперь прохожу следующую часть курса и морально готовлюсь к третьему проекту :)

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

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

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

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

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

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

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

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

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

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

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

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