RailsClubのインタラクティブクエストの方法

RailsClubは、AT Consultingが設立されてからほぼ参加している会議です。 今年、私たちは彼女のゴールドパートナーになり、参加者にとっては賞の抽選よりも興味深いものを思い付くことに決め、15のタスクを含むインタラクティブクエストを作成しました。 それらのほとんどは、Rubyの知識といくつかの創造的な知識に基づいています。 イベントの最初の探求であったため、この経験は興味深いものでした。 クエストの結果、個々のタスクに関する多くのレビューと質問を収集しました。 この記事では、クエストを作成して回答を分析する方法について説明します。



チームは、1人のフロントエンド、2人のバックエンド開発者、および1人のデザイナーで構成されていました。

中身は?


もちろん、プロジェクトはRuby on Railsで作成しました。 RailsClubプログラムは他に何のために書けますか? 時間が足りなかったので、私たちは単純に、しかしフリルなしですべてを実行することにしました:Ruby on Railsの標準MVCアーキテクチャ(手で引っ掻いてTrailblazerを追加しましたが、抽象化の余分なレイヤーは混乱するだけで、小さな利益をもたらさないことがすぐに明らかになりましたプロジェクト)、および実績のある宝石の束。 Let's EncryptのSSL証明書を備えたNginx Webサーバーは、サーバー(2016年にはHTTPSを使用せずにプロジェクトを開始するのは残念なことでした)およびPostgreSQLデータベースサーバー-一般に、アプリケーションが動作するために必要なすべての上に立っていました。 ところで、サーバーは、会社の他のプロジェクトのテスト(gitlab-ci-runners)を実行するために通常使用する仮想マシンの1つになりました。 会議は週末であったため、容量がまだアイドル状態であると判断し、それを使用して、すべての不要なプロセスを停止しました)

導入でも、すべてがシンプルでした-これはすべてのCapistranoの「レール」になじみがあります。 かなり単純なプロジェクトの場合、これ以上洗練されたものは必要ありません。

前線


当初、フロントエンドでReactとreduxを使用したかったのですが、タスクの本質を理解し、動的UIをクエストに含めるべきではないと判断したため、可能な限りすべてをシンプルにしました。 Turbolinks、Jquery、jquery-ujsのフロントエンド。

このようなタスクを開発する場合、開発自体がフロントエンドのすべてのニュアンスを考慮するために、より多くの時間が必要です。つまり、異なるプラットフォームの異なるデバイスでプロジェクトを確認し、クエストを送信するときの検証を完了します。

設計


クエスト開始の1か月前、新しいデザイナーが私たちのところに来たので、彼らはすぐに戦闘条件で彼をテストすることに決めました。 すべての参加者がラップトップを持っているわけではなく、全員が電話を持っているため、主なタスクはデザインを最初にモバイルにすることでした。

最初のpsdファイルは10月10日に表示され、最終レイアウトは10月21日の午前(RailsClubの前日)に提供されました。 HRと並行して、クエストの全体的なコンセプト、ステージ、スコアリング、勝者の決定について考えました。 賞品も選ばれました-そもそも彼らはジャイロスクーターを贈ることに決めました。

正解


クエストは、Rubyに直接または間接的に関連する15のタスクで構成されていました。 最も難しい質問は、Array#compactについてでした。このメソッドの最短バージョンを実装するように依頼しました。 次のようになります。

a - [p] 

その後、多くの人が正しい答えを尋ねました。 ほとんどがa - [nil]オプションを知っていましたが、 p (alias puts)がパラメーターなしで実行された場合にnil返すことを知っていた人はほとんどいませんでした。

私たちの意見では、最も失敗したのは、「RubyのGCについてMatzが何と言ったのか?」という質問でした。 正しく答えるためには、ルビーについてのサイトのロシア語版を見る必要がありました:「これはあなたの健康に有益です。」 しかし、まだ2人がこの質問に答えることができました)

最も簡単なタスクは、登録中にアンケートに記入し、Matzの言語の名前を選択するときにMatzに触発された言語を書くことでした(答えはperlです)。

その他の質問とそれらへの「鍵」:
質問
キー
何人しましたか
ATコンサルティングは何年に設立されましたか?

2001(履歴セクションで会社のWebサイトにアクセスする必要がありました)

26

22520は、1から10までのすべての数値で除算される最小の数値です。 1から20までのすべての数値で余りなく除算される最小の数値は何ですか?

232792560
25
ハッシュタグ#atconsultingrailsclubを使用してソーシャルネットワークで写真を撮り、応答フィールドにリンクをコピーします。 写真には、AT 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
Rubyで1,000,000という数字を書くにはどうすればよいですか?」

1e6
16
文字列「String」にサブストリング「ng」「String」.includeがあるかどうかを示すコードを作成しますか?

「Ng」は%を提供していません-)

「ストリング」[「ng」]
12
配列「a」に厳密に5つ以上の要素があることを確認する方法を教えてください。

a [5]、しかし、会議で、配列をすべてnilで埋めると、このメソッドが機能しないため、質問が完全に正しくなかったことがわかりました。
11
Range(1 ... 10)を配列に変換する方法は?

[* 1 ... 10]
7

記事の準備を手伝ってくれた同僚に感謝します: kolin_goodEnvek 。 良い週末を!

Source: https://habr.com/ru/post/J315604/


All Articles