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

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

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

Узнавайте о новых задачах первыми

RSS

Помощь запрашиваетСвятослав КрюковСвятослав Крюков Святослав Крюков

Бэк: k6 jslib: хелперы для Rails

Для новичков, задача на пару дней

k6 – это современный инструмент для нагрузочного тестирования, написанный на Go и использующий JavaScript для описания тестовых сценариев. Из коробки k6 позволяет работать с WebSocket’ами, однако, тестирование Action Cable и AnyCable сценариев получается очень многословным. Для решения этой проблемы было написано расширение xk6-cable.

Однако, далеко не всю функциональность имеет смысл портировать в Go, иногда для тестирования Rails-приложений могут понадобиться простые хелперы. Для распространения JavaScript-хелперов, разработчики k6 используют jslib.k6.io. Мы предлагаем добавить новый пакет с хелперами для jslib.k6.io.

Польза: разобраться в том, как устроен k6 и его экосистема расширений, принести пользу Rails сообществу.

Присылайте свои решения:

— Можно мне взять эту задачу?

Все задачи на этой странице еще не решены. Если задача вам интересна — берите и смело делайте. Спрашивать разрешения и становиться в очередь не нужно. Даже если кто-то сделает задачу быстрее вас, не останавливайтесь — ваше решение может быть лучше. Это Open Source!

Помощь запрашиваетСвятослав КрюковСвятослав Крюков Святослав Крюков

Бэк: xk6-cable: поддержка асинхронных проверок

Для новичков, задача на пару дней

k6 – это современный инструмент для нагрузочного тестирования, написанный на Go и использующий JavaScript для описания тестовых сценариев. Из коробки k6 позволяет работать с WebSocket’ами, однако, тестирование Action Cable и AnyCable сценариев получается очень многословным. Для решения этой проблемы было написано расширение xk6-cable.

Сейчас xk6-cable поддерживает только синхронное тестирование, но иногда асинхронность все же может понадобиться (например для дополнительной проверки сообщений из соседних каналов). Мы предлагаем добавить метод channel.on_message(callback), который добавит callback для асинхронной проверки всех приходящих в канал сообщений.

Польза: получить опыт работы с Go, разобраться в том, как устроен k6 и его экосистема расширений, принести пользу Rails сообществу.

Присылайте свои решения:

Помощь запрашиваетВова ДемВова Дем Вова Дем

Бэк: Ruby Next: поддержка IRB/Pry

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

Ruby Next — транспайлер для Ruby, который позволяет трансформировать новые синтаксические конструкции в совместимые со старыми версиями Ruby и альтерантивными имплементациями.

Сейчас Ruby Next позволяет транспилировать синтаксис в двух режимах: в рантайме и используя прекомпилированные файлы. Однако, есть один вариант выполнения Ruby кода, который сейчас не поддерживается — внутри интерактивной консоли (IRB или Pry).

Требуется добавить расширения для IRB и Pry, которые позволят использовать Next синтаксис при выполнении кода внутри консоли.

Польза: узнать, как работают IRB и Pry, познакомиться с миром транспайлеров, принести пользу Ruby-сообществу.

Присылайте свои решения:

Помощь запрашиваетВова ДемВова Дем Вова Дем

Фронт: AnyCable JS: поддержка тестирования

Для новичков, задача на пару дней

Недавно выпущенная библиотека AnyCable JS является альтернативой стандартному пакету из Rails (@rails/actioncable). Она предоставляет более современный API и новые возможности для написания WebSocket-приложений, использующих Action Cable или AnyCable.

В AnyCable JS понятие канала абстрагировано от транспортного слоя (сокетов), что позволяет рассматривать классы каналов как обычные JS-классы. В свою очередь, это открывает возможности для создания инструментов unit-тестирования каналов — это мы и предлагаем попробовать реализовать.

Польза: получить опыт работы с JS/TS, разобраться в том, как устроены клиентские библиотеки для работы с Action Cable, принести пользу Rails-сообществу.

Присылайте свои решения:

Помощь запрашиваетВова ДемВова Дем Вова Дем

Бэк: AnyCable Rack: поддержка Protobuf

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

AnyCable Rack Server — это реализация AnyCable WebSocket-сервера на Ruby, предназначенная для использования в локальном или тестовом окружении.

Одна из целей создания этого проекта — упростить проведение экспериментов с новым функционалом для AnyCable (так как не требует инфраструктурных изменений и вмешательства в код библиотек на других языках).

Сейчас AnyCable предоставляет большое количество функций помимо стандартного набора из Action Cable. В частности, поддержку бинарных протоколов: Msgpack и Protobuf.

Данные форматы уже поддерживаются AnyCable Client из коробки, однако в AnyCable Rack Server есть только поддержка Msgpack. Требуется добавить поддержку Protobuf.

Польза: получить опыт работы с Google Protocol Buffers в Ruby, узнать получше, как работает AnyCable, принести пользу Ruby сообществу.

Присылайте свои решения: