Хотите расти как разработчик и найти крутую работу? Не протирайте штаны — займитесь Open Source проектами. Так легче всего попасть в лучшие команды разработчиков и положить себе в резюме настоящий проект, вместо нелепых «примеров кода». Но найти подходящий проект для участия сложно. Начинаются лень и отговорки, а за ними — отсутствие профессионального роста, критики по-настоящему крутых программистов, уныние и застой.
На Cult of Martians мы собираем интересные задачи для современных веб-программистов. Можно выбрать подходящую по сложности, продолжительности и специализации. Задачи не выдуманы «из воздуха» — каждая решает насущную проблему, и решить ее можно через создание нового Open Source проекта или улучшение существующего. Решайте задачи, прокачивайтесь, присылайте решение на оценку. Лучших могут пригласить к себе на работу компании, программистам которых понравится ваше решен ие.
Для новичков, задача на неделю
У Logux есть WebSocket-сервер, который посылает новые сообщения в Rails-приложение. Сейчас новое сообщение проходит 2 стадии — проверку прав доступа и сохранение данных в БД. Нужно добавить третий шаг — определение того, в какие каналы нужно переслать сообщение.
Обработка сообщений от Logux идет в Logux::ActionController
:
module Actions
class Comment < Logux::ActionController
def add
respond :processed
end
end
end
Нужно добавить метод resend
, который будет принимать хэш:
def add
resend channel: 'users'
respond :processed
end
Этот метод будет писать в ответ Logux-серверу:
["resend", @meta.id, { "channel": "users" }]
Польза: получить open source портфолио в Ruby, научиться работать с Logux.
action_controller.rb
метод resend
, который будет сохранять переданные данные о том, куда надо переслать событие.action_caller.rb
и action.rb
, чтобы они писали в ответ ["resend",…],["processed",…]
.["resend",…]
писался в поток, как только будет вызван resend
в контроллере. Так можно будет начать пересылку событий еще до сохранения сообщения в базе.