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

Уровень: 2

Профессия Фронтенд JavaScript

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

9
шагов
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.

Впечатления

Хочу высказать отдельную благодарность за замечания от Кирилла, спасибо! И больше спасибо что продлили проект. Так же хотел спросить, диспетчеризации по ключу объекта, как я делал в 6 шаге лучше чем свитч в 5 шаге? Потому что мне все время кажется, что надо 5 шаг переписать.

Большое спасибо за проект! Теперь можно выдохнуть, отдохнуть вечерок и готовиться к следующему проекту :D Здорово, что нужно было работать с новой документацией, в том числе на английском языке (в курсах с этим не часто встречаешься, да и у меня с ним не лады). Получила массу знаний и практических навыков. Прибавилось уверенности в своих силах. Может, даже резюме разошлю.

Ну что как?)

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

Перед стартом проекта перепрошел все курсы, кроме Прототипов и он-то мне и аукнулся)

Надо теперь выбирать на какой из 3 проектов пойти и уже начинать готовиться

Кирилл, спасибо за проект! Это был крутой и очень полезный опыт и знания. Над именованием надо поработать, наверное с опытом придет, ну и чтоб сам опыт тоже пришел :)) Еще раз спасибо! До новых встреч на проектах!

Ну как?)

Вообще супер, было очень интересно! Местами мозг прямо кипел. Спасибо за ревью, оно всегда заставляло подумать и помогало понять что-то новое! Ну и ментальное программирование стоит еще пару раз пересмотреть, это я в ходе проекта поняла. Как раз до третьего проекта время есть)

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

Я — новичок. Справлюсь ли я с проектами?

Все зависит от вас! Проекты начинаются с базового уровня, и для старта вам не требуется большого опыта или знаний. Главное — задавать вопросы менторам и решать проблемы сразу. К тому же, вы можете остановиться в любой момент и продолжить с того же уровня в любое время в будущем.

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

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

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

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

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

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

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

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

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

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