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

Уровень: 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.

Впечатления #

Кирилл, огромное спасибо за менторство в проекте! Выдался он нелегким, как собственно и первый. Долго решался, браться или нет. В итоге решился и начался постоянный шум в голове. Моя семья тихо сидела в углу и слушала как шуршат извилины в моей коробке. Я так усиленно мозгами уже давно не работал. Постоянные раздумья спать не давали ночами. И тут как лампочка загорается - бегом к ноутбуку кодить то что надумал. Коммит, пуш и ожидание... Следующий шаг - остановиться невозможно(!!!). Дальше очень долгое ожидание проверки (секунды казались часом :)). Оказывается не все так сложно как кажется. Теперь появилось чувство умиротворения. Можно и отдохнуть :)

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

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

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

Кирилл, большое спасибо за менторинг и в целом за интересный и крайне полезный проект!

Могу сказать, что это было действительно довольно непросто. Но зато именно на этом проекте можно хорошенько прокачать довольно сложные концепции, показанные в курсе "Прототипы". В общем после такого "мозги уже не будут прежними" :)

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