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

Уровень: 2

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

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

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

Впечатления

Спасибо за проекты! В один момент они дают надежду, что я уже способна на что-то внятное, в другой момент эту надежду отбирают, показывая, что мне еще учиться и учиться))

И, конечно, большое спасибо, Кирилл, за проверки и комментарии)

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

Спасибо большое за этот проект и за hexlet в целом, за уникальный шанс что-то изменить в своей жизни, освоить новую профессию. Думаю благодаря вам и вашему курсу у меня все получится :) Сам проект получился замечательным. Помимо всего вороха полезного практического применения знаний, освоения новых, получаешь четкое ощущение что это твое. Когда засел, ковыряешься с чем-нибудь, силишься задачку одолеть, или рефакторишь код, и не замечаешь как время пролетает, а как увидел сколько уже сидишь, удивляешься, задумываешься, и понимаешь что это все таки твое :)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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