Skip to content

Latest commit

 

History

History
76 lines (68 loc) · 7.24 KB

SEF2.ru.md

File metadata and controls

76 lines (68 loc) · 7.24 KB

Практика и проекты

Возможные варианты организации работ:

  • Контрибьюшен в любой open-source проект или библиотеку.
  • Контрибьюшен в Metarhia.
  • Проект студенческой группы или общественный проект в открытом коде.
  • Собственный open-source проект.

Что разрешено и что запрещено:

  • Можно использовать любой язык и все встроенные в него библиотек.
  • Нельзя использовать сторонние библиотеки, устанавливаемые из npm, githib и т.д.
  • Репозиторий обязательно размещается на https://github.com в открытом доступе.
  • Нужно развить навыки групповой работы, для этого студенты объединяются в группы по 2-5 человек; группа может писать один общий проект или сделать перекрестный ревью кода индивидуальных проектов каждого участника группы. Пересмотрите:
  • Проект не может быть одномоментно залит на гитхаб за день до сдачи, его нужно вести в гитхабе на протяжении нескольких месяцев, чтобы была видна работа, история коммитов и PR (pull request). Хорошо, если можно будет проследить улучшение кодовой базы, рефакторинг и оптимизацию. Пересмотрите:
  • Хорошее ведение репозитория: issues, pull requests, milestones (см. кнопки на закладках issues и pr в github), discussions (не обязательно), kanban (средство планирования проекта, ищите на закладке project в github), wiki (не обязательно).
  • В каждом проекте должны быть юниттесты для проверки работоспособности.
  • Репозиторий должен включать:
    • Лицензию и список контрибьютеров
    • Файл README.md с кратким (1-2 страницы) описанием проекта. Никакие папки с бумагами не нужны, все только в электронном виде без бюрократии.
    • Настроенный линтер (а если кода на JavaScript, еще и prettier). Пример проекта с конфигурацией тут: https://github.com/HowProgrammingWorks/NodejsStarterKit
    • Файл package.json в котором в разделе scripts есть команда lint
    • Файлы .eslintrc.json, .eslintignore и .prettierrc
    • Перед каждым коммитом запускайте из командной строки: npm run lint (часть проблем автоматически исправляется, остальные - правим руками).
    • Дотфайлы для системы контроля версий и менеджера пакетов.

Примеры тем:

  • Библиотека для работы с IPv4 и IPv6 адресами: парсер, сравнение, манипуляции, работа с масками и диапазонами, сериализаци в виде строки и числа, любые другие операции, которые вы придумаете.
  • Парсер HTML, CSS, JSON, YAML или любого другого формата файлов.
  • Разработать универсальный класс для кэширования: вычислений, операций ввода/вывода, запросов к базе данных или других операций, требующих ускорения при помощи кешировани (на выбор). Содержащий конфигурируемый кеш с такими характеристиками: определенный размер в количестве записей или объеме памяти, время вытеснения из кеша, приоритеты вытеснения.
  • Реализовать машинную проверку правильности синтаксиса и стиля кода. Отдельная тема может быть по исправлению простейших синтаксических ошибок. И еще одна тема по автоформатированию кода, приведению его к соглашениям по стилю.
  • Усовершенствованный EventEmitter, например, с такими возможностями: одноразовая и N-разовая подписка, автоматическая отписка после таймаута или отправки специального события, ожидание событий на синтаксисе async/await и др.
  • Проекция структур данных в памяти. Можно сделать специальный синтаксис (язык проекции), что уже сделано на JavaScript в репозитории https://github.com/HowProgrammingWorks/Projection
  • Разработать простую Key-value (ключ-значение) in-memory СУБД (систему управления базами данных, которая хранит все в оперативной памяти). В самом простом случае это хеш-таблица. Пример реализации Redis, Memcached или MongoDB, можно взять их интерфейсы за основу и модифицировать.
  • Разработать планировщик задач в виде класса или прототипа, который умеет повторять выполнение метода по расписанию, например: по пятницам в 2 ночи или каждый второй понедельник месяца в 12:30 по UTC. Он создает необходимые для этого таймеры и исполняет задачи.
  • Утилиты для интерфейса командной строки.

Регистрация тем