...

пятница, 18 ноября 2016 г.

Как мы делали интерактивный квест для RailsClub

RailsClub — конференция, которую AT Consulting посещает практически с момента ее основания. В этом году мы стали ее золотым партнером и решили придумать для участников что-то более интересное, чем розыгрыш призов, и написали интерактивный квест, включающий 15 заданий. Большая часть из них — на знание Ruby и несколько творческих. Опыт получился интересный, так как это был наш первый квест для мероприятий. По итогам проведения квеста мы собрали много отзывов и вопросов по отдельным заданиям. В этой статье мы расскажем о том, как создавали квест, и разберем ответы.

Команда состояла из одного front-end, двух back-end разработчиков и дизайнера.

Что внутри?


Писали проект, конечно же, на Ruby on Rails. На чём ещё может быть написана программа для RailsClub? Поскольку времени было мало, решили сделать все без излишеств, просто, но при этом непробиваемо: стандартная MVC-архитектура Ruby on Rails (руки так и чесались добавить Trailblazer, но быстро стало ясно, что лишние слои абстракции только запутают и не дадут выигрыша в небольшом проекте), да пачка проверенных временем гемов. На сервер же встал веб-сервер Nginx с SSL-сертификатом от Let’s Encrypt (в 2016-м году запускать любой проект без HTTPS просто стыдно) и сервер баз данных PostgreSQL — в общем, всё, что необходимо приложению для работы. Сервером, кстати, стала одна из виртуальных машин, которые мы обычно используем для прогона тестов (gitlab-ci-runner’ы) других проектов компании. Поскольку конференция была в выходной день, мы решили, что мощности все равно простаивают, и использовали ее, остановив все лишние процессы )

С деплоем тоже всё было просто — это знакомый каждому «рельсовику» Capistrano. Для достаточно простого проекта ничего более навороченного и не требуется.

Линия фронта


Изначально на фронтненде хотели использовать React и redux, однако, поняв суть задачи, мы решили, что в квесте не должно быть динамического UI, поэтому сделали все максимально просто.  Front-end на Turbolinks, Jquery, jquery-ujs.

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

Дизайн


За месяц до начала квеста к нам вышел новый дизайнер, поэтому его сразу решили испытать в боевых условиях, с чем он, как нам кажется, хорошо справился. Главная задача была сделать дизайн mobile first, так как не у всех участников были ноутбуки с собой, а телефон есть у всех.

Первый psd-файл появился 10 октября, а финальные макеты отдали 21 октября утром (за сутки до RailsClub). Параллельно вместе с HR думали над общей концепцией квеста: этапы, начисление баллов, определение победителей. Также выбирали призы – за первое место решили дарить гироскутер.

Правильные ответы


Квест состоял из 15 заданий, прямо или косвенно связанных с Ruby. Самым сложным оказался вопрос про Array#compact: мы просили реализовать самую краткую версию данного метода. Выглядит она так:
a - [p]

Многие потом спрашивали у нас правильный ответ. Большинство знало вариант a - [nil], но мало кто знал, что p (alias puts) возвращает nil, если запущен без параметров, и это можно использовать в данном контексте.

Самым неудачным, на наш взгляд, оказался вопрос: «Что говорил Матц о GC в Ruby?».  Чтобы правильно ответить, нужно было заглянуть на русскоязычную версию сайта о ruby: «Это полезнее для вашего здоровья». Но все же два человека умудрились ответить на этот вопрос )

Самыми простыми оказались задания заполнить анкету при регистрации и написать, каким языком был вдохновлен Матц при выборе названия для своего языка (ответ — perl).

Остальные вопросы и «ключи» к ним:

Вопрос
«Ключ»
Сколько человек справилось
В каком году была основана компания AT Consulting? 2001 (нужно было зайти на сайт компании в раздел истории) 26
22520 наименьшее число, которое делится на все числа от 1 до 10 без остатка. Какое наименьшее число, которое будет делиться на все числа от 1 до 20 без остатка? 232792560
25
Сделай фото в соцсетях с хэштегом: #atconsultingrailsclub и в поле для ответа скопируй ссылку на него. На фотографии обязательно должен быть логотип АТ Consulting и 2 участника конференции 20
Сумма всех натуральных чисел, меньших 10 и кратных 3, либо 5 равна 23, чему равна сумма чисел меньших 1000? 233168
20
Дано: a, b – массивы. Наш стажер написал следующий код:
a = a + b
a.uniq!
Помоги ему сделать код немного лучше
a |= b 20
Напиши последние 10 цифр суммы 1^1 + 2^2 + 3^3 +… + 1000^1000 9110846700 19
Как можно записать число 1 000 000 в Ruby?" 1e6
16
Напиши код, который будет показывать, есть ли в строке «String» подстрока «ng» «String».include?

«ng» не предлагать %-)

«String»[«ng»]
12
Покажи, каким способом можно выяснить, что в массиве «a» строго больше 5 элементов? a[5], но на конференции мы выяснили, что если заполнить массив всеми nil, то данный метод не работает, поэтому вопрос был не совсем корректный
11
Как Range (1...10) превратить в массив? [*1...10]
7

Спасибо коллегам, которые помогали готовить статью: kolin_good и Envek. Всем хороших выходных!

Комментарии (0)

    Let's block ads! (Why?)

    Комментариев нет:

    Отправить комментарий