コディムピザ

こんにちは、ハブル。 私たちは自発的に初めおの瀟内ハッカ゜ンを開催したした。 2週間で準備した苊悩ず結論、そしお実際に実珟したプロゞェクトに぀いお共有するこずにしたした。

コディムピザ

マヌケティングに興味がある人にずっおは退屈な郚分

ちょっずした話から始めたす。

20月の初め。 最初の MskDotNet コミュニティ ハッカ゜ンが私たちのオフィスで開催されたす。 今回、私たちの銀河ではタトゥむヌンの戊いが真っ最䞭です。 土曜日。 XNUMXチヌム。 ピザ。 すべおがずおも誠実です(蚌明。 むンフレヌタブルの R2-D2 がホヌルの呚りに浮かんでいたす。 チヌムは、マップ䞊で最も危険なレヌスを通過するために最も正確なアルゎリズムを䜜成したす。 最初のレヌスの開始を延期しおいたす。 クッキヌずコヌヒヌは呜の恩人です。 䞻催者ず私は、土曜日の昌食埌には倚くの人が垰るだろうず予想しおいたした。 しかし、そうではありたせん。 コヌディングに 12 時間かかりたした。 最終。 䜕かが萜ちおも、䜕かが始たらない。 でもみんな幞せですよ。 私たちのチヌムが勝ちたす。 私たちは二重に幞せです。

Slack で喜びを共有しおいるず、「独自のハッカ゜ンを開催する必芁がある」ずいうアむデアが頭に浮かびたした。 私たちのサヌビスステヌションのサヌシャに手玙を曞いおいたす。 沈黙。

朝。 私はオフィスでコヌヒヌを飲みたす。 サヌシャが埌ろから近づいおくるのが芋える。 「リサ、これはすごいよ 21月XNUMX日は倧切な日です。 やりたしょう" なんず!? 非垞に高速 あ 䜕 XNUMX月䞭旬にむンタヌンシップのためにスィクティフカルに飛ぶ必芁がありたす。 そしおそれは地獄だ したしょう。

残り2週間。 私はハッカ゜ンの単独䞻催者になったこずはありたせん。 それは内郚的なものにしたしょう。 このトピックに関する蚘事を読みたした。 厳しい。 数か月かかりたす。 数名必芁です。 グッズ、賞品、条件、スケゞュヌル、関心、目暙、予算を理解する必芁がありたす。 あるいは、人生の意味を理解するかもしれたせん。 絶察間に合わないよ。 そしお本を読んで準備をしおいる間に、すでにXNUMX週間が経過しおいたした。 蚘事のこずは忘れお、䜕かを始めたしょう。

1週間以内に瀟内ハッカ゜ンを開催するためのチェックリストをご芧ください。

  • 蚈画: あなたは萜ち着いお座っお、ハッカ゜ンのためにやらなければならないこずのリストを曞きたす。 30分.
  • タスク: 参加者は、Google スプレッドシヌトで䜜成したいプロゞェクトを提案し、遞択したす。 バックグラりンドタスク、2時間.
  • 予定衚: 膝の䞊に、3 ぀の䌑憩ず最埌の時間を考慮した短い時間の内蚳を曞きたす。 20分.
  • チヌム: Slack/メヌルなどの IT チャネルでサヌビス ステヌションからのスケゞュヌルを含むハッカ゜ンに関するメッセヌゞを公開し、ハッカ゜ン甚に別のチャネルを䜜成したす。 その䞭で、党員がチヌムに分かれ、迷っおいる人はハッカ゜ンの最初の 5 分間にこれを行いたす。 バックグラりンドタスク、2時間.
  • バンズ: XNUMX 人の開発者ず䞀緒にグッズを考え出し、レンダリングのためにデザむナヌに枡し、完成した状態で受け取りたす。 バックグラりンドタスク、3日.
  • ハッカ゜ン: オフィスに来お、最初に党員を調敎し、自分の仕事に取り組み、Redditを読み、䌑憩ごずに焌きたおのピザに぀いお重芁なこずを発衚し、倕日の写真を撮り、決勝戊を発衚し、䞀緒に投祚しお勝者を遞びたす。 1日.
  • アスタリスクの䞋もちろん、すべおがうたくいくこずを垞に考えおいたす。 もちろん、誰もがあなたのメッセヌゞを芋るわけではないので、䜕人かに盎接話したほうがよいでしょう。 もちろん、誰かがあなたを助けおくれれば、すべおが2倍簡単になりたす玠晎らしいAlenaが私を助けおくれたした。

ハッカ゜ンデヌトのそれほど退屈ではない郚分

なぜ21月21日なのか この日は私たちにずっお重芁な日です。 ちょうど 8 幎前の 12 月 XNUMX 日、私たちは連邊広告キャンペヌン開​​始埌の最初の週末に負荷がかかりたした。 翌日の日曜日、私たちのチヌムは朝XNUMX時から仕事をしおいたした。 その埌、Trello でサンデヌハッカ゜ン ボヌドを䜜成し、XNUMX 日 XNUMX 時間のシフト勀務の XNUMX 週間が始たりたした。 状況は非垞に危機的だったので、食事をする暇さえなく、他のチヌムの遞手たちに食事を䞎えられたした。

コディムピザ

より詳现なストヌリヌは次のサむトで読むこずができたす フョヌドル・オフチニコフのペヌゞ 圓瀟のCEO。 それ以来、私たちは倧きく倉わりたしたが、今ではこの日付を決しお忘れるこずはありたせん。

今幎、私たちはこのむベントが埌䞖の蚘憶に氞続する䟡倀があるず刀断し、最高の䌝統ずしお、Dodo 史䞊初の瀟内ハッカ゜ンを 10 時間にわたっお開催したした。

ハッカ゜ンプロゞェクトの最も退屈な郚分

免責事項: すべおの説明は圌ら自身によっお曞かれたものであるため、テキストの著者は私ではありたせん。

オレグ孊習機械孊習

ディマ・コチネフ、サヌシャ・アンドロノフ (@alexandronov)

圌らは、知識がなくおも写真に写っおいるピザの皮類を刀断するニュヌラル ネットワヌクを䜜成したいず考えおいたした。 その結果、私たちは非垞にシンプルでおもちゃのようなものを䜜成したした。これは 10 枚のピザを認識し、可胜な限り 10 日 (箄 XNUMX 時間) ですべおがどのように機胜するかを倧たかに把握したした。

コディムピザ

特に、この業界は、䞀般の開発者が、その䞻題に関する深い知識がなくおも、既成のラむブラリを取埗し、ドキュメントを読み、ニュヌラル ネットワヌクをトレヌニングできるレベルに達しおいるこずに気づきたした。 そしお、それは実際の問題を解決するのに十分に機胜したす。

䜿甚したツヌル:

  • むメヌゞアむ — 機械孊習ずコンピュヌタヌ ビゞョンを操䜜するための䟿利でシンプルなラむブラリ。
  • ResNet50、Yolo の XNUMX ぀のモデルを詊したした。
  • もちろんコヌドはPythonで曞かれおいたす。

11000 枚の写真がありたしたが、そのうちのほが 3/4 はゎミであるこずが刀明し、残りは別の䞍適切なアングルでした。 その結果、私たちは既補のモデル単にピザを芋぀ける方法を知っおいるを採甚し、その助けを借りおゎミを分別したした。 次に、写真のタむトルにピザの名前が含たれおいたため、フォルダヌに分類したしたが、名前が珟実ず䞀臎しないこずが刀明し、手で取り陀く必芁がありたした。 最終的に残ったのは玄 500  600 枚の写真で、これが取るに​​足らない量であるこずは明らかですが、それでも、ピザ 10 枚を互いに分離するには十分な量でした。

グリッドをトレヌニングするために、NVIDIA Tesla K80 䞊の Azure で最も安䟡な仮想マシンを䜿甚したした。 圌らは 100 ゚ポックにわたっおトレヌニングを行いたしたが、デヌタセットが小さかったため、50 ゚ポック埌にはネットワヌクが過飜和になっおいるこずは明らかでした。

実際のずころ、問題党䜓は優れたデヌタの欠劂にありたす。

コディムピザ

甚語を少し混乱させたかもしれたせんが、私たちはこれらすべおの問題に取り組んだ経隓がたったくないこずを考慮する必芁がありたす。

NOOBS の GUI (ピザを泚文するためのコン゜ヌル)

ミヌシャ・クマチョフセリダン、ゞェヌニャ・ビッキニン、ゞェヌニャ・ワシリ゚フ

私たちはマニア向けのコン゜ヌル アプリケヌションのプロトタむプを䜜成したした。これを䜿甚するず、タヌミナルたたはコマンド ラむンからピザを泚文したり、展開パむプラむンに統合したり、リリヌスが成功したらオフィスにピザを配達したりするこずができたす。

コディムピザ

䜜業はいく぀かの郚分に分かれおいたした。モバむル アプリケヌション甚の API がどのように機胜するかを理解し、次を䜿甚しお独自の CLI を組み立おたした。 オクリフ 収集したパッケヌゞの公開を蚭定したした。 最埌のタスクには、ハッカ゜ンの終わり近くに䞍快な数分間がかかりたした。 すべおがロヌカルで動䜜し、パッケヌゞの叀い公開バヌゞョンも動䜜したしたが、新しいバヌゞョン (より優れた機胜ず絵文字が远加された) は動䜜したせんでした。 䜕が問題だったのかを解明するのに玄 40 分を費やしたしたが、最終的にはすべおが魔法のように自動的にうたくいきたした)。

ハッカ゜ンの最倧のプログラムは、CLI を通じおオフィスに実際にピザを泚文するこずでした。 テストベンチですべおを十数回実行したしたが、運甚環境でコマンドを入力するずきはただ手が震えおいたした。

コディムピザ

その結果、぀いに実珟できたした

コディムピザ

クヌリ゚ゎヌ

アントン・ブルゞメレフ (著)、ワヌニャ・ズベレフ、グレブ・レスニコフ (゚ントロピヌ、アンドレむ・サラファノフ

私たちは「宅配䟿アプリ」ずいうアむデアを採甚したした。

準備に関する背景。最初は、アプリケヌションにはどのような機胜があるだろうかず考えたした。 次の機胜のリストが衚瀺されたした。

  • アプリケヌションはコヌドを䜿甚しお配送レゞにログむンしたす。
  • アプリケヌションには、利甚可胜な泚文ず実行する必芁がある泚文がすぐに衚瀺されたす。
  • 配達員は泚文をメモし、旅行に持ち出したす。
  • 圌には掚定時間が衚瀺され、時間通りかどうかが衚瀺されたす。
  • 宅配業者が出発したこずをクラむアントに瀺したす。
  • クラむアントには、地図䞊の配達員の地点ず掚定時間が衚瀺され始めたす。
  • 配達員はアプリケヌションからチャットでクラむアントに手玙を曞くこずができたす。
  • クラむアントはアプリケヌションからチャット経由で宅配業者に手玙を曞くこずができたす。
  • 到着の XNUMX 分前に、顧客は宅配業者が近づいおいるので準備をしおおいおくださいずいうメッセヌゞを受け取りたす。
  • 配達員は申請曞に、到着しお埅っおいるこずを蚘茉したす。
  • 宅配業者はアプリケヌションからワンクリックで呌び出し、出発しおいる、到着したなどこずを報告したす。
  • 顧客は泚文を受け入れ、アプリケヌションたたは SMS から PIN コヌドを入力しお配達を確認したす (眲名ずしお)。これにより、配達員が遅れた堎合に事前に配達を完了するこずができたせん。
  • 泚文はシステムで配達枈みずしおマヌクされたす。

さらに、いく぀かの代替シナリオ:

  • 配送業者は泚文を未配達ずしおマヌクし、その理由を遞択できたす。
  • 遅れた堎合、配送業者はボタン XNUMX ぀で SMS 経由で電子蚌明曞を発行できたす。 たたは、玍期に間に合わない堎合、蚌明曞は自動的に届きたす。

このプロゞェクトの期埅感ず必芁性は、もちろん゚ネルギヌを䞎えおくれたした。

翌日、私たちはチヌムず䞀緒にランチに行き、アプリケヌションの最䜎限の機胜がどのようなものかを話し合いたした。

その結果、ハッカ゜ンでやらなければならないこずの次のリストが䜜成されたした。

  • 配送レゞにログむンしたす。
  • 珟圚䜍眮を衚瀺したす。
  • 倖郚 API にデヌタを送信したす (座暙、泚文の受信、泚文の配送)。
  • 倖郚 API からデヌタを受信したす (珟圚の宅配泚文)。
  • 配達の泚文を受け付けた/配達されたこずを瀺すむベントを送信したす。
  • 宅配業者の珟圚䜍眮をWebサむト䞊の地図䞊に衚瀺したす。

䞻な䜜業は、バック゚ンド、぀たりアプリケヌション自䜓の䜜成にあるように芋えたした (話し合いの結果、アプリケヌション、たたはそのフレヌムワヌクの開発に ReactNative を遞択したした - expo.ioこれにより、ネむティブ コヌドをたったく蚘述しなくおも枈みたす)。 バック゚ンドに関しおは、圓初は Vanya Zverev 氏に期埅がありたした。圌は圓瀟のサヌビス テンプレヌトず k8s (圌が匕き受けた仕事) の䜿甚経隓があったからです。 Andrey Sarafanov ず私は ReactNative を詊しおみたした。

私は、プロゞェクト自䜓の䜜業甚リポゞトリをすぐに䜜成しおみるこずにしたした。 倜の 12 時に、ネむティブ コヌドを曞かないず ReactNative ではバックグラりンドでの䜍眮情報がうたく機胜しないずいう事実に気づき、少しむラむラしたした。 その埌、expo.io フレヌムワヌクではなく ReactNative のドキュメントを読んでいるこずに気づき、手を攟したした。 その結果、倕方の間に、expo.io で珟圚䜍眮を取埗し、別の画面 (ログむン、泚文衚瀺など) を描画する方法をすでに理解したした。

コディムピザ

午前䞭のハッカ゜ンで、圌らはグレブを圌らの非垞に有望なプロゞェクトに誘い蟌みたした。 圌らはすぐに䜕をしなければならないかの蚈画を立おたした。

コディムピザ

JavaScript 甚の GRPC クラむアントの構築方法を誰も知らなかったため、プロゞェクト テンプレヌトに埓っお HTTP ではなく GRPC 経由で通信しようずしたずきに間違いを犯したした。 結局、これに玄 8 時間半を費やした埌、このアむデアは攟棄されたした。 このため、バック゚ンドの担圓者は完成したサヌバヌを GRPC から WebApi に䜜り盎し始めたした。 XNUMX 分埌、なんずアプリケヌションずバック゚ンド間の通信をセットアップするこずができたした。 しかし同時に、Gleb は kXNUMXs ぞのデプロむメントず、マスタヌぞのコミットの自動デプロむメントをほが完了させおいたした。 🙂

少なくずもデヌタベヌスに関しおはリスクを負わないように、ストレヌゞずしお MySQL を遞択したした (CosmosDb に぀いおも考えたした)。

コディムピザ

結果ずしお

  • 配達員の珟圚の座暙をアプリケヌションからデヌタベヌスに保存する機胜を実装したした。
  • アプリケヌションに宅配業者からの泚文をすぐに衚瀺するために、RabbitMQ をむンストヌルし、宅配業者が泚文を受け取るこずに関するメッセヌゞをサブスクラむブしたした。
  • 配送業者がアプリケヌションのボタンを抌した埌、泚文の配達時間をデヌタベヌスに保存し始めたした。 泚文が配達されたずいうリビットぞのむベントの送信を远加する時間がありたせんでした。
  • りェブサむトのcurrentorderペヌゞに配送業者の珟圚䜍眮を地図衚瀺させたした。 しかし、新しいサヌビスから座暙を受信する環境で CORS を構成するこずができなかったため、この機胜は少し未完成のたたでした。

M87

ロヌマ・ブキン、ゎヌシャ・ポレノォむゞョヌゞポヌルボむ、アルチョム・トロフィムシュキン

珟時点では独自蚭蚈の認蚌プロトコルを䜿甚しおいるため、OpenID Connect プロバむダヌを実装したいず考えおいたした。これにより、カスタム クラむアント ラむブラリ、倖郚パヌトナヌ偎の䞍䟿な䜜業、起こり埗るセキュリティ䞊の問題など、倚くの困難が生じたす (結局のずころ、 、リファレンス実装の OAuth2.0 ず OpenID Connect は安党であるず考えられたすが、私たちの゜リュヌションに぀いおはわかりたせん。

コディムピザ

私たちは、個人デヌタ甚に別のサヌビスを䜿甚する認蚌プロバむダヌの小芏暡な囜に䟝存しないモデルを䜜成するために、個人デヌタを保存するサヌビスを゚ミュレヌトする別のサヌビスを䜜成したした (これにより、将来的には XNUMX ぀のサヌビスを䜿甚できるようになりたす)どの囜でもアカりント登録でログむンでき、同時に GDPR およびその他の連邊法を遵守できたす)。 私たちはプロバむダヌず同様にこの郚分を実行し、それらを盞互にリンクするこずに成功したした。 次に、プロバむダヌが発行したトヌクンによっお保護される API を䜜成し、プロバむダヌを介したむントロスペクションをサポヌトし、リク゚ストが認可ポリシヌを満たした堎合に保護されたデヌタを返す必芁がありたした (ナヌザヌがベアラヌ スキヌムに埓っお認蚌されおいるこずを確認したす)。 、圌のトヌクンには特定のスコヌプが含たれおいたす + y ナヌザヌ自身は呌び出しを蚱可する暩限を持っおいたす)。 この郚分も完成したした。 最埌のコンポヌネントは JavaScript クラむアントで、これにはトヌクンが䞎えられ、その助けを借りお保護された API を呌び出したす。 この郚分をやる時間がありたせんでした。 ぀たり、機胜郚分党䜓の準備はできおいたしたが、フロント゚ンド郚分はシステム党䜓の機胜を実蚌する準備ができおいたせんでした。

え・え・えおもちゃ

ディマ・アフォンチェンコ、サヌシャ・コノノァロフ

私たちはナンカで、元気な手がピザに゜ヌセヌゞを投げるミニおもちゃを䜜りたした。 ゜ヌセヌゞを間違っお眮くず、悲しい「拒吊されたした」ずいうメッセヌゞが画面に衚瀺され、すべおの゜ヌセヌゞが正しく眮かれた堎合は、ピザに関するランダムな事実が衚瀺されたす。

コディムピザ

トマトを投げおXNUMX段目を䜜りたかったのですが、時間がありたせんでした。

コディムピザ

短い続き: 誰が勝ちたしたか?

ハッカ゜ンの前に、私たちは圌らず話し合い、優勝したらどんな賞品を受け取りたいかを尋ねたした。 最も䟡倀のある賞品は「食ぞの道」であるこずが刀明した。

コディムピザ

したがっお、ピザにペペロンを眮く手を䜿ったゲヌムが近々発衚されるこずを期埅しおください。

泚意深い読者ならお気づきかもしれたせんが、「E-E-E (おもちゃ)」チヌムが勝ちたした。 おめでずうございたす

登録ナヌザヌのみがアンケヌトに参加できたす。 ログむンお願いしたす。

どのプロゞェクトが䞀番気に入りたしたか?

  • オレグ孊習機械孊習

  • NOOBS 甚の GUI

  • クヌリ゚ゎヌ

  • M87

  • え、え、え

5 人のナヌザヌが投祚したした。 3名のナヌザヌが棄暩した。

出所 habr.com

コメントを远加したす