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

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

Впечатления

Ну как?)

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

Ну как?)

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

Вообщем было круто! Спасибо!

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

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

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

Круть) Как впечатления?

Спасибо большое) было очень интересно) еще лучше разобрался в материале) Отдельное спасибо хочется сказать ребятам из slack, они мне сильно помогли)) проекты - это круто)

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

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

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

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

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

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

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

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

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

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

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

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

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