Kodim-pizza

Salam, Habr. Urang sacara spontan ngayakeun hackathon internal munggaran urang. Kuring mutuskeun pikeun ngabagikeun ka anjeun nyeri sareng kacindekan kuring ngeunaan nyiapkeun éta dina 2 minggu, ogé proyék-proyék anu tétéla.

Kodim-pizza

Bagian boring pikeun maranéhanana museurkeun pamasaran

Kuring gé mimitian ku carita saeutik.

Awal April. Hackathon Komunitas MskDotNet munggaran lumangsung di kantor kami. Patempuran Tatooine nuju ayunan pinuh di galaksi urang ayeuna. Saptu. 20 tim. Pizza. Sadayana tulus pisan (buktina). Hiji inflatable R2-D2 floats sabudeureun aula. Tim nyerat algoritma anu paling leres pikeun ngalangkungan balapan anu paling bahaya dina peta. Kami ngagerakkeun peluncuran balapan munggaran. Cookies jeung kopi mangrupakeun lifesavers. Panitia sareng kuring ngarepkeun seueur jalma anu angkat saatos tuang siang dinten Saptu. Tapi henteu. 12 jam coding balik. Pamungkas. Aya anu ragrag, aya anu henteu ngamimitian. Tapi saréréa bagja. Tim urang meunang. Kami ganda senang.

Kuring ngabagi kabagjaan kuring di Slack sareng ideu muncul dina pikiran: "Urang kedah ngalakukeun hackathon sorangan." Kuring nulis ka stasiun layanan urang Sasha. tiiseun.

Isuk-isuk. Abdi nginum kopi di kantor. Kuring ningali Sasha ngadeukeutan ti tukang. "Lisa, ieu hébat! Kami gaduh tanggal penting dina 21 April. Hayu urang laksanakeun!" WTF!? Jadi gancang? A? Naon? Abdi kedah ngapung ka Syktyvkar pikeun magang dina pertengahan April. Jeung ka naraka jeung eta! Hayu.

2 minggu deui. Kuring henteu kantos janten hiji-hijina pangatur hackathon. Hayu éta internal. Kuring maca artikel ngeunaan topik ieu. Tangguh. Butuh sababaraha bulan. Sababaraha urang diperlukeun. Anjeun kedah mikirkeun barang dagangan, hadiah, kaayaan, jadwal, minat, ngartos tujuan, anggaran. Atawa meureun malah manggihan harti hirup. Kuring pasti moal dugi ka waktosna. Sareng nalika anjeun maca sareng nyiapkeun, saminggu parantos lami. Waktosna pikeun mopohokeun tulisan sareng ngamimitian ngalakukeun hiji hal.

Nyekel daptar pariksa kami pikeun ngayakeun hackathon internal dina 1 minggu

  • Rencanana: Anjeun diuk turun kalem jeung nulis daptar naon kudu dipigawé pikeun hackathon nu. 30 menit.
  • tugas: Pamilon ngajukeun sareng milih proyék anu badé didamel dina Google Sheets. Tugas latar, 2 jam.
  • jadwal: on dengkul anjeun nulis ngarecahna pondok waktu, nyokot kana akun 3 ngarecah jeung final. 20 menit.
  • Paréntah: nyebarkeun pesen ngeunaan hackathon kalawan jadwal ti stasiun layanan dina saluran IT di Slack / mail / jsb jeung nyieun saluran misah pikeun hackathon. Di jerona, sadayana dibagi kana tim, sareng jalma anu teu acan mutuskeun ngalakukeun ieu dina 5 menit mimiti hackathon. Tugas latar, 2 jam.
  • Buns: Anjeun datang nepi ka merch dua pamekar, masihan ka desainer pikeun Rendering, sarta narima siap. Tugas latar, 3 dinten.
  • Hackathon: anjeun datang ka kantor, koordinat dulur di awal, buka ngeunaan bisnis Anjeun, maca reddit, importantly ngumumkeun unggal putus ngeunaan pizza seger, nyandak gambar ti Panonpoé Tilelep, ngumumkeun final, milih babarengan jeung milih juara. dinten 1.
  • Handapeun tanda bintang: Tangtosna, anjeun terus-terusan mikir ngeunaan sagalana jalan ogé. Tangtosna, henteu sadayana bakal ningali pesen anjeun sareng langkung saé ngobrol sareng sababaraha jalma. Tangtosna, upami aya anu ngabantosan anjeun, sadayana bakal 2 kali langkung gampang (Alena anu saé ngabantosan kuring).

Bagian kirang boring ngeunaan tanggal hackathon

Naha 21 April? Poé ieu penting pikeun urang. Persis sataun katukang, dina 21 April, urang murag dina beban salila sabtu minggu kahiji sanggeus mimiti Kampanye Advertising Federal. Isukna, Minggu, tim kami nuju damel ti jam 8 énjing. Teras kami nyiptakeun papan sundayhackathon di Trello sareng saminggu kerja shift dimimitian, 12 jam sadinten. Kaayaan éta kritis pisan yén kami henteu gaduh waktos tuang sareng kami disuap ku lalaki ti tim sanés.

Kodim-pizza

Anjeun tiasa maca carita anu langkung rinci di Kaca Fyodor Ovchinnikov (CEO kami). Saprak harita, urang geus robah loba, tapi ayeuna urang pasti moal poho tanggal.

Taun ieu, urang mutuskeun yén acara ieu patut perpetuating dina mémori of posterity na, dina tradisi pangalusna, urang diayakeun hackathon internal munggaran dina sajarah Dodo, nu lumangsung 10 jam.

Bagian anu paling pikaboseneun ngeunaan proyék hackathon

Bantahan: sagala déskripsi ditulis ku guys sorangan, jadi pangarang téks teu milik kuring.

Oleg Learning (mesin diajar)

Dima Kochnev, Sasha Andronov (@alexandronov)

Aranjeunna hoyong ngadamel jaringan saraf anu bakal nangtukeun jenis pizza anu aya dina poto tanpa kanyahoan. Hasilna, urang nyieun hiji basajan pisan jeung kaulinan - eta ngakuan 10 pizzas, urang kasarna ilahar kaluar kumaha sagalana jalan, sajauh mungkin dina sapoé (~ 10 jam).

Kodim-pizza

Khususna, urang sadar yén industri parantos ngahontal tingkat dimana pamekar biasa tiasa nyandak perpustakaan anu siap-siap, maca dokuméntasi sareng ngalatih jaringan saraf na tanpa pangaweruh anu jero ngeunaan subjek. Sarta eta bakal dianggo cukup ogé pikeun ngajawab masalah nyata.

Alat anu dianggo:

  • gambarna - perpustakaan merenah tur basajan pikeun gawé bareng mesin learning jeung visi komputer.
  • Kami nyobian dua modél - ResNet50, Yolo.
  • Kode ieu ditulis, tangtosna, dina Python.

Urang tadi 11000 poto, tapi ampir 3/4 di antarana tétéla jadi sampah, sarta sésana miboga béda, sudut pantes. Hasilna, urang nyandak model siap-dijieun (anu saukur terang kumaha carana manggihan pizza) jeung pitulung na urang misahkeun sampah. Salajengna, judul poto kalebet nami pizza - janten kami nyortir kana polder, tapi tétéla yén nami-nami éta henteu saluyu sareng kanyataan sareng urang kedah ngabersihan sacara manual. Tungtungna, aya ngeunaan 500-600 poto ditinggalkeun, éta jelas yén éta téh jumlah leutik, tapi kumaha oge, ieu cukup pikeun misahkeun 10 pizzas ti karana.

Pikeun ngalatih grid, kami nyandak mesin virtual paling murah di Azure dina NVIDIA Tesla K80. Aranjeunna dilatih dina eta pikeun 100 epochs, tapi éta jelas yén jaringan jadi oversaturated sanggeus 50 epochs, alatan kanyataan yén aya dataset leutik.

Sabenerna, sakabeh masalah nyaeta kurangna data alus.

Kodim-pizza

Urang meureun geus bingung istilah saeutik, tapi urang kudu tumut kana akun yén urang teu boga pangalaman dina sagala hal ieu.

GUI pikeun NOOBS (konsol pikeun mesen pizza)

Misha Kumachev (Ceridan), Zhenya Bikkinin, Zhenya Vasiliev

Kami geus nunda babarengan prototipe aplikasi konsol pikeun geeks, hatur nuhun nu bisa mesen pizza ngaliwatan terminal atawa garis paréntah, atawa malah ngahijikeun kana pipa deployment na, sanggeus release suksés, nganteurkeun pizza ka kantor.

Kodim-pizza

Karya ieu dibagi kana sababaraha bagian: urang terang kumaha API urang pikeun aplikasi mobile jalan, dirakit CLI urang sorangan ngagunakeun oclif sarta ngonpigurasi publikasi pakét kami dikumpulkeun. Tugas terakhir ngalibetkeun sababaraha menit anu teu pikaresepeun nuju tungtung hackathon. Sagalana digawé lokal pikeun urang, komo versi heubeul diterbitkeun tina pakét digawé, tapi nu anyar (anu ditambahkeun leuwih fitur tiis tur emoticons) nampik jalan. Urang spent ngeunaan 40 menit nyoba angka kaluar naon nu salah, tapi tungtungna sagalana magically digawé sorangan).

Program maksimal kami pikeun hackathon mangrupikeun pesenan pizza nyata ka kantor ngalangkungan CLI kami. Urang lumpat sagalana belasan kali dina bangku test, tapi leungeun kuring masih oyag nalika kuring diasupkeun paréntah dina produksi.

Kodim-pizza

Hasilna, urang tungtungna ngalakukeun eta!

Kodim-pizza

KurirGo

Anton Bruzhmelev (pangarang), Vanya Zverev, Gleb Lesnikov (éntropi), Andrey Sarafanov

Kami nyandak ideu "Aplikasi pikeun Kurir".

Latar ngeunaan persiapan.Mimitina, kuring heran naon fitur anu tiasa aya dina aplikasi? Daptar pungsionalitas di handap ieu muncul:

  • Aplikasi asup kana kasir pangiriman nganggo kodeu.
  • Aplikasi langsung nunjukkeun pesenan anu sayogi sareng pesenan anu kedah dicandak.
  • Kurir nyatet pesenan sareng nyandak éta dina perjalanan.
  • Anjeunna ditampilkeun waktos perkiraan sareng naha anjeunna on waktos atanapi henteu.
  • Némbongkeun klien yén kurir geus ditinggalkeun.
  • Klién mimiti nunjukkeun titik kurir dina peta sareng perkiraan waktos.
  • Kurir tiasa nyerat ka klien dina obrolan tina aplikasi.
  • Klién tiasa nyerat ka kurir via obrolan tina aplikasi.
  • Lima menit sateuacan sumping, klien nampi pesen yén kurir caket, siap-siap.
  • Kurir nyatet dina aplikasi yén anjeunna parantos sumping sareng ngantosan.
  • Kurir nelepon ti aplikasi sareng hiji klik sareng ngalaporkeun yén (naek, parantos sumping, jsb.)
  • Klién nampi pesenan sareng ngalebetkeun kode PIN tina aplikasi atanapi SMS pikeun ngonfirmasi pangiriman.(salaku tanda tangan) Janten kurir teu tiasa ngalengkepan pangiriman sateuacanna upami anjeunna telat.
  • Urutan ditandaan salaku dikirimkeun dina sistem.

Ditambah sababaraha skenario alternatif:

  • Kurir tiasa nandaan pesenan salaku henteu dikirimkeun sareng pilih alesanana.
  • Upami anjeun telat, kurir tiasa ngaluarkeun sertipikat éléktronik via SMS sareng hiji tombol. Atanapi sertipikat sumping sacara otomatis upami wates waktu pangiriman henteu kapendak.

Rarasaan jangji jeung kabutuhan proyék ieu, tangtosna, energizing.

Isukna urang angkat ka tuang siang sareng tim sareng ngabahas kumaha fungsionalitas minimum aplikasi éta.

Hasilna, daptar di handap ieu anu kedah dilakukeun dina hackathon kabentuk:

  • Login ka kasir pangiriman.
  • Témbongkeun posisi ayeuna.
  • Kirim data ka API éksternal (koordinat, nampi pesenan, dikirimkeun pesenan).
  • Nampi data tina API éksternal (pesenan kurir ayeuna).
  • Kirim hiji acara nunjukkeun yén anjeun geus nyokot urutan pikeun pangiriman / dikirimkeun.
  • Tampilkeun posisi kurir ayeuna dina peta dina situs wéb.

Karya utama, sakumaha sigana, iklas dina nyieun backend, aplikasi sorangan (sanggeus diskusi, urang milih ReactNative pikeun ngembangkeun aplikasi, atawa rada kerangka pikeun eta - expo.io, anu ngamungkinkeun anjeun henteu nyerat kode asli). Dina watesan backend nu, mimitina aya harepan dina Vanya Zverev, sakumaha anjeunna ngalaman dina gawé bareng template jasa kami sarta k8s (nu pakasaban anjeunna nyandak). Andrey Sarafanov sarta kuring nyandak ReactNative pikeun spin a.

Kuring mutuskeun pikeun nyobaan geuwat nyieun Repository gawé pikeun proyék sorangan. Jam 12 wengi kuring mendakan kanyataan yén geolokasi di latar tukang henteu jalan saé dina ReactNative, upami anjeun henteu nyerat kode asli, kuring rada frustasi. Teras kuring ngantepkeun nalika kuring sadar yén kuring maca dokuméntasi sanés kerangka expo.io, tapi tina ReactNative. Hasilna, salami sonten kuring parantos ngartos kumaha carana kéngingkeun posisi ayeuna di expo.io sareng ngagambar layar anu misah (pikeun login, tampilan pesenan, jsb.).

Kodim-pizza

Isuk-isuk di hackathon, aranjeunna mamingan Gleb kana proyék super-ngajangjikeun na. Aranjeunna gancang sumping sareng rencana naon anu kedah dilakukeun.

Kodim-pizza

Urang nyieun kasalahan nalika, luyu jeung template proyék, urang diusahakeun komunikasi teu via HTTP, tapi via GRPC, saprak teu saurang ogé terang kumaha carana ngawangun hiji klien GRPC pikeun JavaScript. Tungtungna, saatos nyéépkeun kira-kira sajam satengah pikeun ieu, kami ngantunkeun ide ieu. Kusabab ieu, jalma-jalma anu aya di tukang-tukang mimiti ngadamel deui server anu réngsé tina GRPC ka WebApi. Saatos satengah jam, kami tungtungna tiasa nyetél komunikasi antara aplikasi sareng backend, lo na behold. Tapi dina waktos anu sareng, Gleb ampir rengse kaluar deployment mun k8s na tambah otomatis-deployment of a komitmen ka master. 🙂

Kami milih MySQL salaku panyimpen supados henteu nyandak résiko sahenteuna sareng pangkalan data (urang gaduh pamikiran ngeunaan CosmosDb).

Kodim-pizza

Kasimpulanna:

  • Dilaksanakeun nyimpen koordinat ayeuna kurir tina aplikasi ka database.
  • Kami dipasang RabbitMQ sareng ngalanggan pesen ngeunaan kurir anu nyandak pesenan supados langsung ningalikeun pesenan ti kurir dina aplikasi.
  • Kami ngamimitian nyimpen waktos pangiriman pesenan kana database kami saatos kurir mencét tombol dina aplikasi. Urang teu boga waktu pikeun nambahkeun ngirim hiji acara deui ka rebbit yén urutan ieu dikirimkeun.
  • Kuring ngadamel tampilan peta dina halaman pesenan ayeuna dina halaman wéb kalayan posisi kurir ayeuna. Tapi fungsionalitas ieu tetep saeutik tacan beres, saprak éta teu mungkin pikeun ngonpigurasikeun CORS di lingkungan pikeun nampa koordinat tina layanan anyar urang.

M87

Roma Bukin, Gosha Polevoy (georgepolevoy), Artyom Trofimushkin

Kami hoyong nerapkeun panyadia OpenID Connect, sabab ayeuna kami nganggo protokol auténtikasi tina desain urang sorangan, sareng ieu nyiptakeun sababaraha kasusah: perpustakaan klien khusus, padamelan anu teu pikaresepeun pikeun mitra éksternal, masalah kaamanan mungkin (sanggeus sadayana. , OAuth2.0 na OpenID Connect dina palaksanaan rujukan bisa dianggap aman, tapi Kaula teu yakin kana solusi urang).

Kodim-pizza

Kami ngadamel jasa anu misah anu niru jasa pikeun nyimpen data pribadi pikeun nyiptakeun modél Country-Agnostic leutik tina panyadia auténtikasi anu bakal angkat ka layanan anu misah pikeun data pribadi (hal ieu bakal ngamungkinkeun anjeun gaduh hiji layanan sareng nu hiji bisa asup kalawan pendaptaran akun di nagara mana wae, sarta dina waktos anu sareng sasuai jeung GDPR jeung hukum féderal séjén). Urang ngalakukeun bagian ieu, sakumaha ogé panyadia, sarta hasil numbu aranjeunna saling. Salajengna, perlu nyieun hiji API nu bakal ditangtayungan ku tokens dikaluarkeun ku panyadia nu, ngarojong introspeksi maranéhanana ngaliwatan panyadia tur balikkeun data ditangtayungan lamun pamundut nu nyugemakeun kawijakan otorisasina (urang pariksa yen pamaké geus dioténtikasi nurutkeun skéma Bearer. , token na ngandung wengkuan nu tangtu + y Pamaké sorangan boga idin nu ngidinan panggero pikeun dijieun). Bagian ieu ogé réngsé. Komponén anu terakhir nyaéta klien JavaScript, anu bakal dibéré token, kalayan bantosan anu bakal nyauran API anu ditangtayungan. Urang teu boga waktu pikeun ngalakukeun bagian ieu. Hartina, sakabéh bagian fungsional geus siap, tapi bagian hareup-tungtung teu siap pikeun demonstrate fungsionalitas sakabéh sistem.

E-E-E (kaulinan)

Dima Afonchenko, Sasha Konovalov

Kami ngadamel mini kaulinan dina yunka dimana leungeun frisky ngalungkeun sosis dina pizza. Upami anjeun salah nempatkeun sosis, pesen "Ditampik" hanjelu muncul dina layar, sareng upami sadayana sosis dipasang leres, kanyataan acak ngeunaan pizza muncul.

Kodim-pizza

Urang hayang nyieun tingkat kadua kalayan ngalungkeun tomat, tapi urang teu boga waktu.

Kodim-pizza

Sambungan pondok: saha anu meunang?

Sateuacan hackathon, urang ngobrol sareng budak lalaki sareng kuring naroskeun hadiah naon anu aranjeunna hoyong nampi upami aranjeunna meunang. Tétéla yén hadiah anu paling berharga nyaéta "jalan ka tuangeun".

Kodim-pizza

Ku alatan éta, nyangka urang ngumumkeun kaulinan kalayan leungeun nu nempatkeun pepperons on pizza pas.

Salaku hiji maca attentive bisa geus noticed, tim "E-E-E (kaulinan)" meunang. Wilujeng guys!

Ngan pamaké nu kadaptar bisa ilubiung dina survey. Daptar, Punten.

Proyék mana anu anjeun resep?

  • Oleg Learning (mesin diajar)

  • GUI pikeun NOOBS

  • KurirGo

  • M87

  • E-E-E

5 pamaké milih. 3 pamaké abstained.

sumber: www.habr.com

Tambahkeun komentar