Кодим-пицца

Салам, Хабр. Биз биринчи ички хакатонубузду стихиялуу түрдө өткөрдүк. Мен сиздер менен 2 жуманын ичинде ага даярдануу тууралуу өзүмдүн азабым жана корутундуларым, ошондой эле болуп чыккан долбоорлор менен бөлүшүүнү чечтим.

Кодим-пицца

Маркетингге кызыккандар үчүн кызыксыз бөлүгү

Кичинекей окуя менен баштайын.

Апрель айынын башы. Биздин кеңседе биринчи MskDotNet Community хакатону өтүп жатат. Татуин согушу бул жолу биздин галактикада кызуу жүрүп жатат. Ишемби. 20 команда. Pizza. Баары чын жүрөктөн (далилдер). Залдын айланасында үйлөмө R2-D2 калкып жүрөт. Командалар картада эң кооптуу жарыштан өтүү үчүн эң туура алгоритмдерди жазышат. Биз биринчи жарыштарды баштоону жылдырып жатабыз. Печенье жана кофе өмүрдү сактап калат. Уюштуруучулар жана мен ишемби күнү түшкү тамактан кийин көп адамдар кетет деп күткөнбүз. Бирок жок. 12 саат артта коддоо. Акыркы. Бир нерсе кулап, бир нерсе башталбайт. Бирок баары бактылуу. Биздин команда утат. Биз эки эсе бактылуубуз.

Мен кубанычымды Slack менен бөлүшүп жатам жана оюма: "Биз өзүбүздүн хакатонубузду өткөрүшүбүз керек" деген ой келди. Мен биздин тейлөө станциябызга кат жазып жатам Саша. Тынчтык.

Таң. Мен кеңседе кофе ичем. Артынан Саша келе жатканын көрөм. "Лиза, бул сонун! Бизде 21-апрелде маанилүү дата бар. Келгиле! WTF!? Ушундай тез? А? Эмне? Апрель айынын орто ченинде практикага Сыктывкарга учушум керек. Жана аны менен тозокко! келгиле.

2 апта калды. Мен эч качан хакатондун жалгыз уюштуруучусу болгон эмесмин. Ички болсун. Мен бул темадагы макалаларды окудум. Катуу. Бул бир нече ай талап кылынат. Бир нече адам керек. Сиз товар, сыйлыктар, шарттар, график, кызыгуу, максатты, бюджетти түшүнүшүңүз керек. Же, балким, жашоонун маанисин түшүнөт. Мен аны убагында аткарбайм. А сен окуп, даярданып жатканда, бир жума өтүп кетти. Макалаларды унутуп, бир нерсе кыла баштоого убакыт келди.

1 жуманын ичинде ички хакатон өткөрүү үчүн биздин текшерүү тизмебизди кармаңыз

  • план: Сиз тынч отуруп, хакатон үчүн эмне кылуу керек экенин тизмектеп жазасыз. 30 мүнөт.
  • маселе: Катышуучулар Google Sheets'те түзүүнү каалаган долбоорлорун сунушташат жана тандашат. Фондук тапшырма, 2 саат.
  • ырааттама: тизеңизге 3 тыныгууну жана финалды эске алуу менен кыска убакыттын бөлүштүрүлүшүн жазасыз. 20 мүнөт.
  • буйруулар: Slack/mail/etc ичинде IT каналдарындагы тейлөө станциясынан расписание менен хакатон жөнүндө билдирүү жарыялаңыз жана хакатон үчүн өзүнчө канал түзүңүз. Анда баары командаларга бөлүнөт, ал эми чечкинсиздер муну хакатондун алгачкы 5 мүнөтүндө жасашат. Фондук тапшырма, 2 саат.
  • Булочкалар: сиз эки иштеп чыгуучу менен товар ойлоп табасыз, аны дизайнерге рендерингге берип, даяр аласыз. Фондук тапшырма, 3 күн.
  • Хакатон: сиз кеңсеге келесиз, башында бардыгын координациялайсыз, өзүңүздүн ишиңиз менен алектенесиз, Reddit окуйсуз, эң негизгиси жаңы пицца тууралуу ар бир тыныгууну жарыялайсыз, күндүн батышын сүрөткө тартасыз, финалды жарыялайсыз, чогуу добуш бересиз жана жеңүүчүнү тандайсыз. 1 күнү.
  • Жылдызчанын астында: Албетте, сиз дайыма баары жакшы болуп жатканын ойлойсуз. Албетте, сиздин билдирүүңүздү баары эле көрө бербейт жана айрымдар менен жеке сүйлөшкөнүңүз жакшы. Албетте, кимдир бирөө сага жардам берсе, баары 2 эсе жеңил болот (мага сонун Алена жардам берди).

Хакатон күнү жөнүндө азыраак кызыксыз бөлүгү

Эмне үчүн 21-апрель? Бул күн биз үчүн маанилүү. Туура бир жыл мурун, 21-апрелде, Федералдык Жарнамалык Кампания башталгандан кийинки биринчи дем алыш күндөрү биз жүктөмдүн астында калдык. Эртеси, жекшемби күнү биздин команда эртең мененки саат 8ден тарта жумушта болчу. Андан кийин биз Треллодо жекшемби хакатон тактасын түздүк жана бир жумалык сменалык иш башталды, күнүнө 12 саат. Кырдаал өтө оор болгондуктан, тамак ичкенге да үлгүрбөй, бизди башка командалардын балдары тойгузушту.

Кодим-пицца

Кененирээк окуяны бул жерден окуй аласыз Федор Овчинниковдун баракчасы (биздин башкы директор). Ошондон бери биз абдан өзгөрдүк, бирок азыр датаны унутпайбыз.

Бул жылы биз бул иш-чараны урпактардын эсинде түбөлүккө калтырууга татыктуу деп чечтик жана эң жакшы салттар боюнча Додо тарыхында биринчи жолу 10 саатка созулган ички хакатонду уюштурдук.

Хакатон долбоорлорунун эң кызыксыз бөлүгү

Жоопкерчиликтен баш тартуу: бардык сүрөттөмөлөрдү балдар өздөрү жазган, андыктан тексттин автору меники эмес.

Олег Learning (машина үйрөнүү)

Дима Кочнев, Саша Андронов (@alexandronov)

Алар эч кандай маалыматы жок эле сүрөттөгү пицца кандай экенин аныктай турган нейрон тармагын жасагысы келген. Натыйжада, биз абдан жөнөкөй жана оюнчук жасадык - ал 10 пиццаны тааныйт, биз бардыгы бир күндө (~10 саат) мүмкүн болушунча кантип иштээрин болжолдоп түшүндүк.

Кодим-пицца

Айрыкча, тармак жөнөкөй иштеп чыгуучу предметти терең билбестен эле даяр китепканаларды алып, документацияларды окуп, өзүнүн нейрон тармагын машыктыра ала турган деңгээлге жеткенин түшүндүк. Ал эми реалдуу көйгөйлөрдү чечүү үчүн жетиштүү иштейт.

Колдонулган аспаптар:

  • imageai — машина үйрөнүү жана компьютердик көрүү менен иштөө үчүн ыңгайлуу жана жөнөкөй китепкана.
  • Биз эки моделди сынап көрдүк - ResNet50, Yolo.
  • Код, албетте, Python тилинде жазылган.

Бизде 11000 3 сүрөт бар болчу, бирок алардын дээрлик 4/500ү таштанды болуп чыкты, калгандары башка, ылайыксыз бурчтарга ээ болду. Жыйынтыгында биз даяр моделди алып (ал жөн гана пиццаны тапканды билет) жана анын жардамы менен таштандыны бөлдүк. Андан кийин, сүрөттүн аталышында пиццанын аталышы жазылган - ошондуктан биз аны папкаларга бөлдүк, бирок аттары чындыкка дал келбей калып, аны колубуз менен тазалоого туура келди. Акырында 600-10дөй сүрөт калды, бул анча деле чоң эмес сумма экени көрүнүп турат, бирок ошентсе да бул XNUMX пиццаны бири-биринен бөлүүгө жетиштүү болду.

Тармакты үйрөтүү үчүн биз NVIDIA Tesla K80деги Azureдеги эң арзан виртуалдык машинаны алдык. Алар бул боюнча 100 доорлор боюнча машыккан, бирок 50 доордон кийин тармагы өтө каныккандыгы анык болгон, себеби кичинекей маалымат топтому бар.

Чынында, бардык көйгөй жакшы маалыматтардын жоктугунда.

Кодим-пицца

Биз терминдерди бир аз чаташтырып алгандырбыз, бирок бул маселелердин бардыгы менен иштөөдө бизде такыр тажрыйба жок экенин эске алуу керек.

NOOBS үчүн GUI (пиццага заказ кылуу үчүн консол)

Миша Кумачев (Ceridan), Женя Биккинин, Женя Васильев

Биз индикаторлор үчүн консолдук тиркеменин прототибин чогулттук, анын аркасында терминал же буйрук сабы аркылуу пиццага заказ кыла аласыз, ал тургай аны жайылтуу түтүкчөсүнө кошуп, ийгиликтүү чыккандан кийин пиццаны кеңсеге жеткире аласыз.

Кодим-пицца

Иш бир нече бөлүккө бөлүндү: биз мобилдик тиркемелер үчүн API кандай иштээрин түшүндүк, өзүбүздүн CLI аркылуу чогулттук. oclif жана биз чогулткан пакеттин жарыяланышын конфигурацияладык. Акыркы тапшырма хакатондун аягында бир нече жагымсыз мүнөттөрдү камтыды. Баары биз үчүн жергиликтүү деңгээлде иштеди, ал тургай пакеттин эски жарыяланган версиялары да иштеди, бирок жаңылары (көбүрөөк сонун функцияларды жана эмотикондорду кошкон) иштөөдөн баш тартышты. Биз 40 мүнөттөй эмне туура эмес болгонун аныктоого аракет кылдык, бирок акырында баары сыйкырдуу түрдө өзүнөн-өзү иштеди).

Хакатон үчүн биздин максималдуу программабыз CLI аркылуу кеңсеге пиццаны чындап тапшыруу болду. Биз бардыгын тесттик стендде ондогон жолу чуркадык, бирок мен өндүрүшкө командаларды киргизгенде колдорум дагы эле титиреп жатты.

Кодим-пицца

Натыйжада, биз акыры аны жасадык!

Кодим-пицца

CourierGo

Антон Бржмелев (автор), Ваня Зверев, Глеб Лесников (энтропия), Андрей Сарафанов

Биз "Курьер үчүн колдонмо" идеясын алдык.

Даярдоо тууралуу маалымат.Башында, мен кызыктырдым, кандай функциялар тиркемеде болушу мүмкүн? Төмөнкү функциялардын тизмеси пайда болду:

  • Тиркеме кодду колдонуу менен жеткирүү кассасына кирет.
  • Колдонмо дароо кабыл алынышы керек болгон буйруктарды жана буйруктарды көрсөтөт.
  • Чабарман заказды белгилеп, аны сапарга алып кетет.
  • Ага болжолдуу убакыт көрсөтүлөт жана ал өз убагындабы же жокпу.
  • Кардарга курьер кеткенин көрсөтөт.
  • Кардарга картада курьердин пункту жана болжолдуу убакыт көрсөтүлө баштайт.
  • Чабарман кардарга арыздан чатта жаза алат.
  • Кардар тиркемеден чат аркылуу курьерге жаза алат.
  • Келгенге беш мүнөт калганда кардар чабарман жакындап калды деген кабар алат, даяр болуңуз.
  • Чабарман арызында анын келгенин жана күтүп жатканын белгилейт.
  • Чабарман тиркемеден бир чыкылдатуу менен чалат жана (көбөйүп жатат, келди ж.б.у.с.)
  • Кардар заказды кабыл алат жана жеткирүүнү ырастоо үчүн тиркемеден же СМСтен ПИН-кодду киргизет (кол катары) Чабарман кечиккен учурда жеткирүүнү алдын ала бүтүрө албайт.
  • Буйрутма системада жеткирилди деп белгиленет.

Мындан тышкары, бир нече альтернативалуу сценарийлер:

  • Чабарман заказды жеткирилбеген деп белгилеп, себебин тандай алат.
  • Эгер кечигип калсаңыз, курьер бир баскыч менен SMS аркылуу электрондук справка бере алат. Же жеткирүү мөөнөтү аткарылбаса, сертификат автоматтык түрдө келет.

Бул долбоордун убадасы жана зарылчылыгы, албетте, күч-кубат берди.

Эртеси биз команда менен түшкү тамакка барып, тиркеменин минималдуу функционалдуулугу кандай болорун талкууладык.

Жыйынтыгында, хакатондо аткарылышы керек болгон нерселердин төмөнкү тизмеси түзүлдү:

  • Жеткирүү кассасына кирүү.
  • Учурдагы абалын көрсөтүү.
  • Дайындарды тышкы APIге жөнөтүңүз (координаттар, буйрутманы кабыл алды, тапшырыкты жеткирди).
  • Тышкы APIден маалыматтарды алуу (учурдагы курьердик заказдар).
  • Жеткирүү/жеткирүү үчүн буйрутманы алганыңызды көрсөткөн окуяны жөнөтүңүз.
  • Вебсайттагы картада курьердин учурдагы абалын көрсөтүү.

Негизги иш, көрүнгөндөй, бэкэндди, тиркеменин өзүн түзүүдө жатты (талкуулоодон кийин биз тиркемени иштеп чыгуу үчүн ReactNative ды, тагыраак айтканда, ал үчүн негизди тандадык - expo.io, бул сизге түпнуска кодду такыр жазбоого мүмкүндүк берет). Backend жагынан алганда, алгач Ваня Зверевде үмүт бар болчу, анткени ал биздин сервис шаблону жана k8s менен иштөөдө тажрыйбалуу болгон (кайсы жумушту ал өзүнө алган). Андрей Сарафанов экөөбүз ReactNative программасын алдык.

Мен дароо долбоордун өзү үчүн жумушчу репозиторий түзүүгө аракет кылууну чечтим. Түнкү саат 12де мен ReactNativeде фондо геолокация жакшы иштебей турганын көрдүм, эгер сиз жергиликтүү кодду жазбасаңыз, мен бир аз нааразы болдум. Анан мен expo.io алкагында эмес, ReactNative документациясын окуп жатканымды түшүнгөндөн кийин коё бердим. Натыйжада, кечинде мен expo.io сайтында учурдагы позицияны кантип алуу керектигин жана өзүнчө экрандарды кантип тартууну түшүндүм (кирүү үчүн, буйрутмаларды көрсөтүү ж.б.).

Кодим-пицца

Эртең менен хакатондо алар Глебди өздөрүнүн супер келечектүү долбооруна азгырышты. Алар эмне кылуу керек экендигин тез эле пландап чыгышты.

Кодим-пицца

Долбоордун шаблонуна ылайык, биз HTTP аркылуу эмес, GRPC аркылуу байланышууга аракет кылганда ката кетирдик, анткени JavaScript үчүн GRPC кардарын курууну эч ким билген эмес. Акыр-аягы, бир жарым саатка жакын убакыт короткондон кийин, биз бул идеядан баш тарттык. Ушундан улам, арткы жактагы балдар даяр серверди GRPCден WebApiге чейин кайра жасай башташты. Жарым сааттан кийин, акыры, биз тиркеме менен сервердин ортосунда байланыш түзө алдык. Бирок, ошол эле учурда, Глеб дээрлик k8s жайгаштырууну жана ага кошумча автоматтык түрдө кожоюнга милдеттендирүүнү аяктады. 🙂

Биз MySQLди сактагыч катары тандап алдык, жок дегенде маалымат базасы менен тобокелчиликке барбоо үчүн (бизде CosmosDb жөнүндө ойлор болгон).

Кодим-пицца

Жыйынтыгында:

  • Колдонмодон маалымат базасына курьердин учурдагы координаттарын сактоо ишке ашырылган.
  • Биз RabbitMQ орноттук жана чабармандан буйрутманы тиркемеде дароо көрсөтүү үчүн заказды алып жаткан чабарман тууралуу билдирүүлөргө жазылдык.
  • Чабарман тиркемедеги баскычты баскандан кийин биз заказды жеткирүү убактысын маалымат базасына сактап баштадык. Буйрутма жеткирилди деген реббитке окуяны кайра жөнөтүүнү кошууга убакытыбыз болгон жок.
  • Мен веб-сайттагы учурдагы буйрутма бетинде чабармандын учурдагы абалы менен картаны көрсөттүм. Бирок бул функция бир аз бүтпөй калды, анткени биздин жаңы кызматтан координаттарды алуу үчүн чөйрөдө CORS конфигурациялоо мүмкүн эмес болчу.

M87

Рома Букин, Гоша Полевой (georgepolevoy), Артём Трофимушкин

Биз OpenID Connect провайдерин ишке киргизгибиз келди, анткени учурда биз өзүбүздүн дизайныбыздын аутентификация протоколун колдонуп жатабыз жана бул бир катар кыйынчылыктарды жаратууда: жеке кардарлардын китепканалары, тышкы өнөктөштөр тарабынан ыңгайсыз иш, мүмкүн болгон коопсуздук көйгөйлөрү (анткени , OAuth2.0 жана OpenID Connect шилтемесин ишке ашырууда коопсуз деп эсептесе болот, бирок мен биздин чечимибизге ишене албайм).

Кодим-пицца

Биз жеке маалыматтар үчүн өзүнчө кызматка өтүүчү аутентификация провайдеринин чакан Country-Agnostic моделин түзүү үчүн жеке маалыматтарды сактоо кызматын эмуляциялаган өзүнчө кызмат жасадык (бул келечекте бир кызматка ээ болууга мүмкүндүк берет) каалаган өлкөдө каттоо эсеби менен кире алат жана ошол эле учурда GDPR жана башка федералдык мыйзамдарга ылайык келет). Биз провайдер сыяктуу эле бул бөлүгүн аткарып, аларды бири-бири менен ийгиликтүү байланыштырдык. Андан кийин, провайдер тарабынан чыгарылган токендер менен корголгон API түзүү, провайдер аркылуу алардын интроспекциясын колдоо жана эгерде өтүнүч авторизациялоо саясаттарын канааттандырса, корголгон маалыматтарды кайтаруу керек болчу (колдонуучунун Bearer схемасына ылайык аутентификацияланганын текшеребиз) , анын белгиси белгилүү бир аймакты камтыйт + y Колдонуучунун өзү чалууга уруксат берген уруксаты бар). Бул бөлүгү да бүттү. Акыркы компонент JavaScript кардары болгон, ага токен бериле турган, анын жардамы менен корголгон API деп атай турган. Бул бөлүгүн жасаганга убактыбыз болгон жок. Башкача айтканда, бүт функционалдык бөлүгү даяр болгон, бирок алдыңкы бөлүгү бүт системанын функционалдуулугун көрсөтүүгө даяр эмес.

E-E-E (оюнчук)

Дима Афонченко, Саша Коновалов

Юнкага мини-оюнчук жасадык, анда колбаса колбасаны пиццага ыргытат. Эгерде сиз колбасаны туура эмес кийсеңиз, экранда капалуу "Четке кагылды" деген билдирүү пайда болот, ал эми бардык колбаса туура салынган болсо, пицца жөнүндө кокус факт пайда болот.

Кодим-пицца

Помидор ыргытуу менен экинчи деңгээлге чыгаргыбыз келди, бирок убакыт болгон жок.

Кодим-пицца

Кыска уландысы: ким жеңди?

Хакатон алдында жигиттер менен сүйлөшүп, алар жеңсе кандай сыйлык алгылары келет деп сурадым. Эң баалуу сыйлык «тамак-ашка жол» болмокчу.

Кодим-пицца

Андыктан, жакында пиццага калемпир сала турган кол менен оюнду жарыялоону күтүңүз.

Көңүл бурган окурман байкагандай, “E-E-E (ойынок)” командасы жеңишке жетти. Куттуктайбыз балдар!

Сурамжылоого катталган колдонуучулар гана катыша алышат. Кирүү, өтүнөмүн.

Кайсы долбоор сизге көбүрөөк жакты?

  • Олег Learning (машина үйрөнүү)

  • NOOBS үчүн GUI

  • CourierGo

  • M87

  • E-E-E

5 колдонуучу добуш берди. 3 колдонуучу добуш берүүдөн баш тартты.

Source: www.habr.com

Комментарий кошуу