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

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

Впечатления

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

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

Кирилл - как я уже в написал в отзыве - сказать, что благодарен - ничего не сказать.
Спасибо, что держишь марку !
С удовольствием продолжаю путь )

Спасибо за отличные проекты! Нигде информация не усваивается лучше чем на подобной боевой практике. А какую гамму эмоций при этом испытываешь: от первоначального баттхёрта и кипения мозгов при вникании до радости когда получилось и работает!

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

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

Проект оставил противоречивые впечатления. После него я чувствую себя опустошенным. Давно забытые ощущения как будто вовсю идет сессия. Времени он у меня забрал за неделю больше, чем основная работа- больше 40 часов. Каждый день до работы, после и даже во время я думал о проекте и что-то писал. Даже ночью, когда мой младшенький будил меня своими воплями- я просыпался и думал, а как обойти эту шляпу с property или как лучше назвать какую- нибудь константу или еще что-то в таком духе. Этот проект- как хороший фильм- держал меня в напряжении до самого конца.
Вообще гамма эмоций поразительна. Особо широка она была, когда я написал все и оно все работало и мне казалось, что вот он, идеал! Я был на вершине мира от радости! А потом пришел Кирилл и сказал, что это все-полная шляпа и надо все переделать. И я погрузился в пучины печали. Переписывать строитель аст и оба рендера - то еще удовольствие. Особенно, когда логика понятна и не понятно, какая она может быть другая. Сначала я переделал АСТ на необходимый уровень абстракции и подогнал под него оба рендерера, но не прокатило. Причем со вторым не прокатывало до самого конца. Но я, кажется, понял, зачем оно так.)) К тому же открыл для себя ооочень клевый режим watch у jest. Уверен, что усталость пройдет и придет чувство глубокого удовлетворения, которое всегда приходит после проделанной сильно напряженной работы. Ну а пока отдохну денек и надо наконец опять бегать, а то с обучением здесь совсем забросил) Спасибо за проект!

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

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

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

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

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

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

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

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

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

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

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

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

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