Hackathon DevDays'19 (1-р хэсэг): зөвлөмж, алхах маршрут үүсгэгч, шингэн ардчилал бүхий өдрийн тэмдэглэл

Саяхан бид гэж хэлсэн JetBrains болон ITMO их сургуулийн "Програм хангамж хөгжүүлэх / Програм хангамжийн инженерчлэл" корпорацийн магистрын хөтөлбөрийн талаар. Сонирхсон хүн бүрийг 29-р сарын XNUMX-ний Даваа гарагт болох нээлттэй өдөрлөгт урьж байна. Манай магистрын хөтөлбөрийн давуу тал, оюутнуудад ямар урамшуулал олгох, хариуд нь юу шаардах талаар бид танд хэлэх болно. Нэмж дурдахад бид зочдын асуултанд хариулах болно.

Hackathon DevDays'19 (1-р хэсэг): зөвлөмж, алхах маршрут үүсгэгч, шингэн ардчилал бүхий өдрийн тэмдэглэлНээлттэй өдөрлөг манай магистрын оюутнууд суралцдаг Таймс бизнес төвийн JetBrains оффис дээр болно. 17:00 цагаас эхэлнэ. Та вэбсайтаас бүх нарийн ширийн зүйлийг мэдэж, арга хэмжээнд бүртгүүлэх боломжтой mse.itmo.ru. Ирээрэй, та харамсахгүй!

Хөтөлбөрийн үндсэн бүрэлдэхүүн хэсгүүдийн нэг бол дадлага юм. Оюутнуудад маш их зүйл байдаг: долоо хоног бүрийн гэрийн даалгавар, семестрийн төсөл, хакатон. Суралцах хугацаандаа орчин үеийн хөгжлийн арга зүй, технологид бүрэн хамрагдсаны ачаар төгсөгчид мэдээллийн технологийн томоохон компаниудын ажлын процесст хурдан нэвтэрдэг.

Энэ нийтлэлд бид зургаан сар тутамд болдог DevDays хакатонуудын талаар илүү дэлгэрэнгүй ярихыг хүсч байна. Дүрэм нь энгийн: 3-4 хүний ​​бүрэлдэхүүнтэй багууд цугларч, гурван өдрийн турш оюутнууд өөрсдийн санаагаа амьдралд хэрэгжүүлдэг. Үүнээс юу гарч болох вэ? Энэ семестрийн хакатон төслийн талаарх түүхийн эхний хэсгийг оюутнуудаас уншаарай :)

Киноны зөвлөмж бүхий өдрийн тэмдэглэл

Hackathon DevDays'19 (1-р хэсэг): зөвлөмж, алхах маршрут үүсгэгч, шингэн ардчилал бүхий өдрийн тэмдэглэл

Санаа зохиогч
Иван Илчук
Тушаалын бүтэц
Иван Илчук – кино зохиолын задлан шинжилгээ, сервер
Владислав Кораблинов - өдрийн тэмдэглэлийн тэмдэглэл, киноны өрнөлийг харьцуулах загвар боловсруулах.
Дмитрий Вальчук - UI
Никита Винокуров – UI, дизайн

Манай төслийн зорилго бол ширээний программ бичих явдал байв - өдрийн тэмдэглэл нь түүнд оруулсан бичлэгүүд дээр үндэслэн хэрэглэгчдэд кино санал болгодог.

Энэ санаа их сургуульд орохоор явж, асуудлаа бодож байх үед төрсөн юм. "Хүнд ямар ч асуудал тулгарсан бай, аль хэдийн сонгодог зохиолч энэ тухай бичсэн байдаг" гэж би бодлоо. "Хэн нэгэн үүнийг бичсэн болохоор хэн нэгэн үүнийг аль хэдийн авсан гэсэн үг." Иймд сэтгэл санааны ижил зовлонтой хүний ​​тухай кино үзэх хүсэл аяндаа гарч ирсэн.

Мэдээжийн хэрэг, олон янзын тусдаа өдрийн тэмдэглэл, тусдаа зөвлөмж өгөх үйлчилгээ байдаг (гэхдээ ихэвчлэн зөвлөмжүүд нь тухайн хүний ​​өмнө нь таалагдсан зүйл дээр тулгуурладаг). Зарчмын хувьд энэ төсөл нь киног гол зүйлээр хайхтай ижил төстэй зүйлтэй боловч юуны түрүүнд манай програм өдрийн тэмдэглэлийн функцийг хангадаг.

Hackathon DevDays'19 (1-р хэсэг): зөвлөмж, алхах маршрут үүсгэгч, шингэн ардчилал бүхий өдрийн тэмдэглэлҮүнийг бид хэрхэн хэрэгжүүлсэн бэ? Та шидэт товчийг дарахад өдрийн тэмдэглэл нь Википедиагаас авсан тайлбар дээр үндэслэн киног сонгосон сервер рүү бичлэг илгээдэг. Манай урд тал нь Electron дээр хийгдсэн (бид үүнийг вэбсайт биш харин ашигладаг, учир нь бид хэрэглэгчийн өгөгдлийг сервер дээр биш, харин компьютер дээр дотооддоо хадгалахаар шийдсэн) бөгөөд сервер болон зөвлөмжийн систем нь өөрөө Python дээр хийгдсэн: TFs тодорхойлолтоос олж авсан - Өдрийн тэмдэглэлийн векторын ойролцоох харьцуулсан IDF векторууд.

Багийн нэг гишүүн зөвхөн загвар дээр ажилласан бол нөгөө нь бүхэлдээ нүүрэн тал дээр ажилласан (эхэндээ гурав дахь гишүүнтэй хамт, дараа нь туршилтад шилжсэн). Би Википедиа болон серверээс кино зохиолуудыг задлан шинжилж байсан.

Бид алхам алхмаар үр дүндээ ойртож, хэд хэдэн бэрхшээлийг даван туулж, загвар нь эхэндээ маш их хэмжээний RAM шаардагдахаас эхлээд сервер рүү өгөгдөл дамжуулахад бэрхшээлтэй байсан.

Одоо оройн киногоо олохын тулд та нэг их хүчин чармайлт гаргах шаардлагагүй: бидний гурван өдрийн ажлын үр дүн нь ширээний программ болон сервер бөгөөд хэрэглэгч https-ээр холбогдож, хариуд нь 5 киноны сонголтыг хүлээн авдаг. товч тайлбар, зурагт хуудас.

Төслийн талаарх миний сэтгэгдэл маш эерэг байна: ажил өглөө эрт орой болтол сэтгэл татам байсан бөгөөд үр дүнд нь гаргасан програм нь их сургуулийн гэрийн даалгавар эсвэл киноны өдрийн тэмдэглэлд зориулж "Нойргүй шөнө" хэв маягаар үе үе маш хөгжилтэй үр дүнг гаргадаг. Сургуулийн эхний өдрийн тухай тэнхимийн анхны өдрийн тухай өгүүллэг.

Холбогдох холбоосууд, суулгагчид гэх мэтийг олж болно энд.

Маршрут үүсгэгч

Hackathon DevDays'19 (1-р хэсэг): зөвлөмж, алхах маршрут үүсгэгч, шингэн ардчилал бүхий өдрийн тэмдэглэлСанаа зохиогч
Артемьева Ирина
Тушаалын бүтэц
Артемьева Ирина – багийн ахлагч, гол гогцоо
Гордеева Людмила - хөгжим
Платонов Владислав - маршрутууд

Би хотыг тойрон алхах үнэхээр дуртай: барилга байгууламж, хүмүүсийг харах, түүхийг бодох. Гэхдээ оршин суугаа газраа өөрчлөх үед ч эрт орой хэзээ нэгэн цагт би маршрут сонгох асуудалтай тулгардаг: би бодож байсан бүх зүйлээ дуусгасан. Маршрут үүсгэхийг автоматжуулах санаа ингэж гарч ирэв: та маршрутын эхлэх цэг, уртыг зааж өгөх бөгөөд програм нь танд сонголтыг өгдөг. Алхалт нь урт байж болох тул санаагаа логикоор хөгжүүлэх нь "зогсоох" завсрын цэгүүдийг зааж өгөх чадварыг нэмж байгаа юм шиг санагдаж байна, тэнд та зууш идэж, амрах боломжтой. Хөгжлийн өөр нэг салбар бол хөгжим байв. Хөгжим рүү алхах нь үргэлж илүү хөгжилтэй байдаг тул үүсгэсэн маршрут дээр үндэслэн тоглуулах жагсаалтыг сонгох чадварыг нэмж оруулбал маш сайн байх болно.

Одоо байгаа програмуудын дунд ийм шийдлүүдийг олох боломжгүй байсан. Хамгийн ойрын аналог нь ямар ч маршрут төлөвлөгчид юм: Google Maps, 2GIS гэх мэт.

Таны утсанд ийм програм байх нь хамгийн тохиромжтой тул Telegram ашиглах нь сайн сонголт байсан. Энэ нь танд газрын зураг харуулах, хөгжим тоглох боломжийг олгодог бөгөөд та робот бичиж энэ бүхнийг удирдах боломжтой. Газрын зургийн үндсэн ажлыг Google Map API ашиглан хийсэн. Python нь хоёр технологийг хослуулахад хялбар болгодог.

Багийн бүрэлдэхүүнд гурван хүн байсан тул залуус бие даан ажиллах боломжтой байхын тулд даалгаврыг давхардаагүй хоёр дэд даалгаварт (газрын зураг дээр ажиллах, хөгжимтэй ажиллах) хуваасан бөгөөд би үр дүнг нэгтгэх үүрэг хүлээсэн.

Hackathon DevDays'19 (1-р хэсэг): зөвлөмж, алхах маршрут үүсгэгч, шингэн ардчилал бүхий өдрийн тэмдэглэлБидний хэн нь ч Google Map API эсвэл Telegram роботууд дээр ажиллаж байгаагүй тул гол асуудал нь төслийг хэрэгжүүлэхэд зарцуулсан цаг хугацаа байсан: аливаа зүйлийг ойлгох нь сайн мэддэг зүйлээ хийхээс илүү их цаг хугацаа шаарддаг. Telegram роботын API-г сонгоход бас хэцүү байсан: блоклосоны улмаас бүгд ажиллахгүй байгаа бөгөөд би бүх зүйлийг тохируулахын тулд тэмцэж байсан.

Маршрут үүсгэх асуудал хэрхэн шийдэгдсэнийг тусад нь дурдах нь зүйтэй болов уу. Хоёр байршлын хооронд маршрут гаргахад хялбар байдаг, гэхдээ зөвхөн маршрутын уртыг мэддэг бол та хэрэглэгчдэд юу санал болгож чадах вэ? Хэрэглэгч 10 километр алхахыг хүсч байгаарай. Нэг цэгийг дурын чиглэлд сонгосон бөгөөд шулуун шугамын хоорондох зай нь 10 километр бөгөөд үүний дараа бодит зам дагуу энэ цэг хүртэл маршрут барина. Энэ нь шулуун биш байх магадлалтай тул бид заасан 10 километр хүртэл богиносгох болно. Ийм маршрутын олон сонголт байдаг - бид жинхэнэ маршрут үүсгэгчтэй болсон!

Эхний ээлжинд би газрын зургийг ногоон байгууламжтай харгалзах хэсгүүдэд хуваахыг хүссэн: далан, хашаа, гудамж, алхаж явахад хамгийн таатай маршрут авах, мөн эдгээр газруудад нийцүүлэн хөгжим үүсгэх. Гэхдээ үүнийг Google Map API ашиглан хийх нь хэцүү байсан (бид энэ асуудлыг шийдэх цаг байсангүй). Гэсэн хэдий ч тодорхой төрлийн байршлаар (дэлгүүр, цэцэрлэгт хүрээлэн, номын сан) дамжин өнгөрөх зам барих ажлыг хэрэгжүүлэх боломжтой байсан: хэрэв маршрут нь заасан бүх газрыг тойрон явсан боловч хүссэн зайг хараахан туулж амжаагүй бол энэ нь дуусгавар болно. санамсаргүй чиглэлд хэрэглэгчийн заасан зай. Google Map API нь аяллын тооцоолсон цагийг тооцоолох боломжийг олгодог бөгөөд энэ нь танд бүхэл бүтэн алхахад яг тохирох тоглуулах жагсаалтыг сонгоход тусална.

Үүний үр дүнд, үеийг бий болгож чадсан эхлэх цэг, зай, завсрын цэгүүдээр маршрутууд; Хөгжмийг маршрутын хэсгүүдийн дагуу ангилахын тулд бүх зүйлийг бэлтгэсэн боловч цаг хугацаа хомс байсан тул тоглуулах жагсаалт сонгох сонголтыг ердөө л нэмэлт UI салбар болгон үлдээхээр шийдсэн. Тиймээс хэрэглэгч сонсох хөгжмөө бие даан сонгох боломжтой болсон.

Хөгжимтэй ажиллахад тулгардаг гол асуудал бол хэрэглэгч ямар нэгэн үйлчилгээнд бүртгэлтэй байх шаардлагагүйгээр mp3 файлыг хаанаас авахаа мэдэхгүй байсан явдал юм. Хэрэглэгчээс хөгжим хүсэхээр шийдсэн (UserMusic горим). Энэ нь шинэ асуудал үүсгэдэг: хүн бүр дууг татаж авах чадваргүй байдаг. Үүний нэг шийдэл нь хэрэглэгчдийн хөгжим бүхий агуулах үүсгэх явдал юм (BotMusic горим) - үүнээс та үйлчилгээнээс үл хамааран хөгжим үүсгэх боломжтой.

Хэдийгээр төгс биш ч гэсэн бид даалгавраа гүйцэтгэсэн: миний ашиглахыг хүссэн программтай боллоо. Ерөнхийдөө энэ нь маш сайхан юм: XNUMX хоногийн өмнө та зөвхөн санаатай байсан бөгөөд үүнийг хэрхэн хэрэгжүүлэх талаар ганц ч бодолгүй байсан бол одоо ажиллах шийдэл байна. Эдгээр нь миний хувьд маш чухал гурван өдөр байлаа.Би хэрэгжүүлэхэд хангалттай мэдлэггүй зүйл гаргахаас айхаа больсон, багийн ахлагч байх нь үнэхээр сонирхолтой байсан бөгөөд манай багт нэгдсэн гайхалтай залуустай танилцсан. илүү сайн!

Шингэн ардчилал

Hackathon DevDays'19 (1-р хэсэг): зөвлөмж, алхах маршрут үүсгэгч, шингэн ардчилал бүхий өдрийн тэмдэглэл

Санаа зохиогч
Станислав Сычев
Тушаалын бүтэц
Станислав Сычев - багийн ахлагч, мэдээллийн сан
Николай Изюмов ​​бол ботын интерфейс
Антон Рябушев - арын хэсэг

Янз бүрийн бүлгүүдийн дунд шийдвэр гаргах, санал өгөх шаардлага байнга гардаг. Ихэвчлэн ийм тохиолдолд тэд ханддаг шууд ардчилал, гэхдээ бүлэг томрох үед асуудал үүсч болно. Жишээлбэл, бүлгийн хүн асуултанд байнга хариулах эсвэл тодорхой сэдвийн талаархи асуултуудад хариулахыг хүсэхгүй байж болно. Асуудлаас зайлсхийхийн тулд том бүлгүүдэд ханддаг төлөөллийн ардчилал, бүх ард түмний дундаас "орлогчдын" тусдаа бүлэг сонгогдож, үлдсэнийг нь сонголтын дарамтаас чөлөөлдөг. Гэхдээ ийм депутат болно гэдэг нэлээд хэцүү, сонгогчдод санагдсан шиг депутат болсон хүн заавал шударга, нэр хүндтэй байх албагүй.

Хоёр системийн асуудлыг шийдэхийн тулд Брайан Форд уг үзэл баримтлалыг санал болгов шингэн ардчилал. Ийм тогтолцоонд хүн бүр энгийн хэрэглэгч эсвэл төлөөлөгчийн дүрийг сонгох эрх чөлөөтэй, зүгээр л хүсэл эрмэлзэлээ илэрхийлдэг. Хэн ч бие даан санал өгөх эсвэл нэг буюу хэд хэдэн асуудлаар төлөөлөгчдөд санал өгөх боломжтой. Төлөөлөгч ч саналаа өгч болно. Түүнчлэн, хэрэв төлөөлөгч сонгогчид тохирохгүй бол саналаа хэдийд ч эргүүлэн татах боломжтой.

Шингэн ардчиллыг ашиглах жишээ улс төрд байдаг бөгөөд бид өдөр тутмын хэрэглээнд ижил төстэй санааг бүх төрлийн хүмүүсийн бүлэгт хэрэгжүүлэхийг хүссэн. Дараагийн DevDays хакатон дээр бид шингэн ардчиллын зарчмын дагуу санал өгөх Telegram бот бичихээр шийдсэн. Үүний зэрэгцээ би ийм роботуудтай холбоотой нийтлэг асуудлаас зайлсхийхийг хүссэн - ерөнхий чатыг ботын мессежээр бөглөрөх. Үүний шийдэл бол хувийн ярианд аль болох их функцийг оруулах явдал юм.

Hackathon DevDays'19 (1-р хэсэг): зөвлөмж, алхах маршрут үүсгэгч, шингэн ардчилал бүхий өдрийн тэмдэглэлЭнэ роботыг үүсгэхийн тулд бид ашигласан Telegram-аас API. Санал хураалт болон төлөөлөгчдийн түүхийг хадгалахын тулд PostgreSQL мэдээллийн санг сонгосон. Боттой холбогдохын тулд Flask сервер суулгасан. Бид эдгээр технологийг сонгосон учир... Бид магистрт суралцах хугацаандаа тэдэнтэй харилцаж байсан туршлагатай. Төслийн өгөгдлийн сан, сервер, робот гэсэн гурван бүрэлдэхүүн хэсэг дээр ажиллах ажлыг багийн гишүүдэд амжилттай тараасан.

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

Ажлын жишээ бүхий видео.

Төсөл дээр ажиллах нь сонирхолтой байсан, бид шөнө дунд хүртэл их сургуульд байсан. Энэ нь маш их ядаргаатай ч гэсэн хичээлээ завсарлах сайхан арга юм гэж бид бодож байна. Эв найрамдалтай хамт олонд ажиллах таатай туршлага байлаа.

Жич. Ирэх хичээлийн жилийн магистрын элсэлтээ авч байна нээлттэй. Бидэнтэй нэгд!

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх