Нам нужны твои мозги

Хотите расти как разработчик и найти крутую работу? Не протирайте штаны — займитесь Open Source проектами. Так легче всего попасть в лучшие команды разработчиков и положить себе в резюме настоящий проект, вместо нелепых «примеров кода». Но найти подходящий проект для участия сложно. Начинаются лень и отговорки, а за ними — отсутствие профессионального роста, критики по-настоящему крутых программистов, уныние и застой.

На Cult of Martians мы собираем интересные задачи для современных веб-программистов. Можно выбрать подходящую по сложности, продолжительности и специализации. Задачи не выдуманы «из воздуха» — каждая решает насущную проблему, и решить ее можно через создание нового Open Source проекта или улучшение существующего. Решайте задачи, прокачивайтесь, присылайте решение на оценку. Лучших могут пригласить к себе на работу компании, программистам которых понравится ваше решение.

Фронт: Сделать калькулятор вероятность коллизии NanoID

Для новичков, задача на неделю

NanoID — JavaScript-библиотека для генерации случайных ID. Как и у UUID, есть определенная вероятность того, что будет сгенерированы два одинаковых ID.

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

Польза: получить опыт JS-разработки; получить публичный сайт в свое резюме.

  1. Изучить, как нужно считать вероятность генерации одинаковых ID и количество случайных бит.
  2. Сделать статичную страницу, где у пользователя будет спрашиваться длина ID, сколько ID генерируется в час, алфавит. В итоге будет выводиться, как много лет пройдет перед тем, как вероятность получить одинаковый ID в двух документах будет больше, чем 1%.
  3. При загрузке страницы эти поля должны быть сразу заполнены какими-то стандартными данными (длина и алфавит по умолчанию для NanoID, 1000 ID в час).
  4. Добавить на страницу краткое описание NanoID и описание того, что делает калькулятор.
  5. Добавить пример кода: как генерировать ID в NanoID с выбранным алфавитом и длиной. Если алфавит стандартный, нужно использовать require('nanoid'), для нестандартного — require('nanoid/generate').
  6. Постараться сделать страницу красиво. Указать межстрочный интервал, выбрать шрифт, выделить главное.