Як ми робили інтерактивний квест для 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 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.