Hackathon DevDays'19 (1-ci hissə): tövsiyələr, gəzinti marşrutu generatoru və maye demokratiya ilə gündəlik

Bu yaxınlarda biz deyə danışdı JetBrains və ITMO Universitetinin “Software Development / Software Engineering” korporativ magistr proqramı haqqında. Maraqlanan hər kəsi 29 aprel bazar ertəsi açıq qapı gününə dəvət edirik. Magistr proqramımızın üstünlükləri, tələbələrə hansı bonuslar təklif etdiyimiz və bunun müqabilində nə tələb etdiyimiz barədə sizə məlumat verəcəyik. Bundan əlavə, qonaqlarımızın suallarını mütləq cavablandıracağıq.

Hackathon DevDays'19 (1-ci hissə): tövsiyələr, gəzinti marşrutu generatoru və maye demokratiya ilə gündəlikAçıq qapı günü magistr tələbələrimizin təhsil aldığı Times Biznes Mərkəzində JetBrains ofisində keçiriləcək. 17:00-da başlayır. Saytda bütün təfərrüatları öyrənə və tədbir üçün qeydiyyatdan keçə bilərsiniz mse.itmo.ru. Gəlin və peşman olmayacaqsınız!

Proqramın əsas komponentlərindən biri təcrübədir. Tələbələrdə çox şey var: həftəlik ev tapşırıqları, semestr layihələri və hakatonlar. Məzunlar təhsil müddətində müasir inkişaf metodologiyaları və texnologiyaları ilə tam tanışlıq sayəsində böyük İT şirkətlərinin iş proseslərinə sürətlə inteqrasiya edirlər.

Bu yazıda biz altı aydan bir keçirilən DevDays hakatonları haqqında daha ətraflı danışmaq istəyirik. Qaydalar sadədir: 3-4 nəfərdən ibarət komandalar toplaşır və üç gün ərzində tələbələr öz ideyalarını həyata keçirirlər. Bundan nə çıxa bilər? Bu semestrin hackathon layihələri haqqında hekayələrin birinci hissəsini tələbələrin özlərindən oxuyun :)

Film tövsiyələri ilə gündəlik

Hackathon DevDays'19 (1-ci hissə): tövsiyələr, gəzinti marşrutu generatoru və maye demokratiya ilə gündəlik

İdeya müəllifidir
İvan İlçuk
Düzəliş
İvan İlçuk – film süjetinin təhlili, server
Vladislav Korablinov - gündəlik qeydinin yaxınlığını və filmin süjetini müqayisə etmək üçün modellərin inkişafı
Dmitri Valçuk - UI
Nikita Vinokurov – UI, dizayn

Layihəmizin məqsədi masaüstü proqram - içindəki qeydlər əsasında istifadəçiyə filmləri tövsiyə edən gündəlik yazmaq idi.

Bu fikir ağlıma universitetə ​​gedərkən və problemlərimi düşünərkən gəldi. “İnsan hansı problemlə üzləşirsə, bu barədə artıq hansısa klassik yazıçı yazıb” deyə düşündüm. "Və bunu kimsə yazdığına görə, kimsə artıq onu lentə alıb." Beləliklə, eyni ruhi əzab çəkən bir insan haqqında filmə baxmaq istəyi təbii olaraq ortaya çıxdı.

Aydındır ki, ayrı-ayrı gündəliklər və ayrıca tövsiyə xidmətləri var (lakin adətən tövsiyələr insanın əvvəllər bəyəndiyi şeylərə əsaslanır). Prinsipcə, bu layihənin əsas məqamlar üzrə film axtarışı ilə ortaq cəhətləri var, lakin yenə də, ilk növbədə, bizim tətbiqimiz gündəlik funksiyasını təmin edir.

Hackathon DevDays'19 (1-ci hissə): tövsiyələr, gəzinti marşrutu generatoru və maye demokratiya ilə gündəlikBunu necə həyata keçirdik? Sehrli düyməni basdığınız zaman gündəlik serverə giriş göndərir, burada film Vikipediyadan götürülmüş təsvir əsasında seçilir. Frontendimiz Electron-da hazırlanmışdır (biz ondan istifadə edirik, vebsayt deyil, çünki biz əvvəlcə istifadəçi məlumatlarını serverdə deyil, yerli olaraq kompüterdə saxlamaq qərarına gəldik) və server və tövsiyə sisteminin özü Python-da hazırlanmışdır: TF-lər Gündəlik giriş vektoruna yaxınlıq baxımından müqayisə edilən -IDF vektorları təsvirlərindən əldə edilmişdir.

Komanda üzvlərindən biri yalnız model üzərində işləyirdi, digəri isə bütünlüklə ön hissədə işləyirdi (əvvəlcə üçüncü üzvlə birlikdə, sonradan testə keçdi). Vikipediyadan və serverdən film süjetlərinin təhlili ilə məşğul olurdum.

Addım-addım nəticəyə yaxınlaşdıq, bir sıra problemləri aradan qaldıraraq, modelin əvvəlcə çoxlu operativ yaddaş tələb etməsindən başlayaraq, verilənlərin serverə ötürülməsinin çətinliyi ilə başa çatdı.

İndi axşam üçün film tapmaq üçün çox səy göstərməyə ehtiyac yoxdur: üç günlük işimizin nəticəsi, istifadəçinin https vasitəsilə daxil olduğu, cavab olaraq 5 filmdən ibarət seçimi alan masaüstü proqramı və serverdir. qısa təsvir və poster.

Layihə ilə bağlı təəssüratlarım çox müsbətdir: iş səhər tezdən gecəyə qədər valehedici idi və nəticədə ortaya çıxan proqram vaxtaşırı universitetdə ev tapşırığı və ya film haqqında gündəlik qeyd üçün “Yuxusuz gecə” üslubunda son dərəcə gülməli nəticələr verir. kafedrada ilk gün haqqında hekayə üçün məktəbin ilk günü haqqında.

Müvafiq bağlantılar, quraşdırıcılar və s burada.

Marşrut generatoru

Hackathon DevDays'19 (1-ci hissə): tövsiyələr, gəzinti marşrutu generatoru və maye demokratiya ilə gündəlikİdeya müəllifidir
Artemyeva İrina
Düzəliş
Artemyeva İrina – komanda lideri, əsas dövrə
Gordeeva Lyudmila - musiqi
Platonov Vladislav - marşrutlar

Şəhərdə gəzməyi çox xoşlayıram: binalara, insanlara baxmaq, tarix haqqında düşünmək. Amma hətta yaşayış yerimi dəyişəndə ​​də gec-tez marşrut seçmək problemi ilə üzləşirəm: ağlıma gələnlərin hamısını tamamladım. Marşrutların yaradılmasının avtomatlaşdırılması ideyası belə yarandı: siz marşrutun başlanğıc nöqtəsini və uzunluğunu göstərirsiniz və proqram sizə seçim verir. Gəzintilər uzun ola bilər, buna görə də ideyanın məntiqi inkişafı, qəlyanaltı və istirahət edə biləcəyiniz “dayanma” üçün ara nöqtələri göstərmək qabiliyyətini əlavə etmək kimi görünür. İnkişafın başqa bir sahəsi musiqi idi. Musiqi ilə gəzmək həmişə daha əyləncəlidir, ona görə də yaradılan marşrut əsasında pleylist seçmək imkanı əlavə etmək əla olardı.

Mövcud tətbiqlər arasında belə həllər tapmaq mümkün olmadı. Ən yaxın analoqlar istənilən marşrut planlaşdırıcılarıdır: Google Maps, 2GIS və s.

Telefonunuzda belə bir tətbiqin olması ən əlverişlidir, ona görə də Telegram-dan istifadə etmək yaxşı seçim idi. O, xəritələri göstərməyə və musiqi çalmağa imkan verir və siz bot yazmaqla bütün bunları idarə edə bilərsiniz. Xəritələrlə əsas iş Google Map API-dən istifadə etməklə həyata keçirilib. Python hər iki texnologiyanı birləşdirməyi asanlaşdırır.

Komandada üç nəfər var idi, ona görə də uşaqlar müstəqil işləyə bilmələri üçün tapşırıq üst-üstə düşməyən iki alt vəzifəyə bölündü (xəritələrlə işləmək və musiqi ilə işləmək) və mən nəticələri birləşdirməyi öz üzərimə götürdüm.

Hackathon DevDays'19 (1-ci hissə): tövsiyələr, gəzinti marşrutu generatoru və maye demokratiya ilə gündəlikHeç birimiz heç vaxt Google Map API və ya Telegram botları ilə işləməmişik, ona görə də əsas problem layihəni həyata keçirmək üçün ayrılan vaxtın miqdarı idi: nəyisə başa düşmək həmişə yaxşı bildiyiniz bir şeyi etməkdən daha çox vaxt aparır. Telegram bot API-ni seçmək də çətin idi: bloklamaya görə onların hamısı işləmir və mən hər şeyi qurmaq üçün mübarizə aparmalı oldum.

Marşrutların yaradılması probleminin necə həll edildiyini ayrıca qeyd etmək lazımdır. İki yer arasında marşrut qurmaq asandır, lakin yalnız marşrutun uzunluğu məlumdursa, istifadəçiyə nə təklif edə bilərsiniz? Qoy istifadəçi 10 kilometr piyada getsin. Bir nöqtə ixtiyari istiqamətdə seçilir, düz bir xətt üzrə məsafə 10 kilometrdir, bundan sonra real yollar boyunca bu nöqtəyə marşrut qurulur. Çox güman ki, düz olmayacaq, ona görə də qeyd olunan 10 kilometrə qədər qısaldacağıq. Bu cür marşrutlar üçün bir çox variant var - real marşrut generatoru əldə etdik!

Əvvəlcə xəritəni yaşıl ərazilərə uyğun olan ərazilərə bölmək istədim: sahillər, həyətlər, küçələr, gəzinti üçün ən xoş marşrutu əldə etmək, həmçinin bu ərazilərə uyğun musiqi yaratmaq. Ancaq Google Map API istifadə edərək bunu etmək çətin oldu (bu problemi həll etməyə vaxtımız yox idi). Bununla belə, müəyyən növ yerlər (mağaza, park, kitabxana) vasitəsilə marşrutun tikintisini həyata keçirmək mümkün idi: əgər marşrut bütün göstərilən yerləri dövrə vursa da, lakin istədiyiniz məsafə hələ qət olunmayıbsa, o, bir qədər tamamlanır. təsadüfi istiqamətdə istifadəçi tərəfindən müəyyən edilmiş məsafə. Google Map API həmçinin təxmini səyahət vaxtını hesablamağa imkan verir ki, bu da bütün gəzinti üçün tam olaraq pleylist seçməyə kömək edir.

Nəticədə, nəsil yaratmağı bacardı başlanğıc nöqtəsi, məsafəsi və ara nöqtələri üzrə marşrutlar; musiqini marşrutun bölmələrinə görə təsnif etmək üçün hər şey hazırlanmışdı, lakin vaxt çatışmazlığı səbəbindən pleylist seçmək seçimini sadəcə əlavə UI filialı kimi tərk etmək qərara alındı. Beləliklə, istifadəçi dinləmək üçün musiqini müstəqil seçə bildi.

Musiqi ilə işləməkdə əsas problem istifadəçidən hər hansı bir xidmətdə hesab tələb etmədən mp3 faylları haradan əldə edəcəyini bilməmək idi. İstifadəçidən musiqi tələb etmək qərara alındı ​​(UserMusic rejimi). Bu, yeni problem yaradır: hər kəsin trekləri yükləmək imkanı yoxdur. Çözümlərdən biri istifadəçilərin musiqisi ilə anbar yaratmaqdır (BotMusic rejimi) - ondan xidmətlərdən asılı olmayaraq musiqi yarada bilərsiniz.

Mükəmməl olmasa da, tapşırığı tamamladıq: istifadə etmək istədiyim bir tətbiqlə nəticələndik. Ümumiyyətlə, bu, çox gözəldir: üç gün əvvəl yalnız bir ideyanız var idi və onu necə həyata keçirmək barədə bir fikir yox idi, amma indi işləyən bir həll var. Bu üç gün mənim üçün çox vacib idi.Mən artıq həyata keçirmək üçün kifayət qədər biliyə malik olmayan bir şeyi fikirləşməkdən qorxmuram, komanda rəhbəri olmaq inanılmaz maraqlı idi və komandama qoşulan gözəl uşaqlarla tanış oldum. daha yaxşı!

Maye demokratiya

Hackathon DevDays'19 (1-ci hissə): tövsiyələr, gəzinti marşrutu generatoru və maye demokratiya ilə gündəlik

İdeya müəllifidir
Stanislav Sıçev
Düzəliş
Stanislav Sychev – komanda rəhbəri, verilənlər bazası
Nikolay İzyumov – bot interfeysi
Anton Ryabushev - arxa tərəf

Müxtəlif qruplar daxilində tez-tez qərar qəbul etmək və ya səs vermək zərurəti yaranır. Adətən belə hallarda müraciət edirlər birbaşa demokratiya, lakin qrup böyüdükdə problemlər yarana bilər. Məsələn, qrupdakı bir şəxs suallara tez-tez cavab vermək və ya müəyyən mövzularla bağlı suallara cavab vermək istəməyə bilər. Böyük qruplarda, problemlərdən qaçmaq üçün müraciət edirlər təmsilçi demokratiya, qalanları seçim yükündən azad edən bütün insanlar arasından ayrıca bir “deputat” qrupu seçildikdə. Amma belə bir deputat olmaq kifayət qədər çətindir və deputat olan adam seçicilərə göründüyü kimi mütləq dürüst və hörmətli olmayacaq.

Hər iki sistemin problemlərini həll etmək üçün Brian Ford konsepsiyanı təklif etdi maye demokratiya. Belə bir sistemdə hər kəs adi istifadəçi və ya nümayəndə rolunu seçməkdə sərbəstdir, sadəcə olaraq öz istəyini ifadə edir. Hər kəs müstəqil səs verə bilər və ya bir və ya bir neçə məsələ üzrə nümayəndəyə səs verə bilər. Nümayəndə də öz səsini verə bilər. Üstəlik, nümayəndə artıq seçiciyə uyğun gəlmirsə, səs istənilən vaxt geri götürülə bilər.

Siyasətdə maye demokratiyadan istifadə nümunələrinə rast gəlinir və biz hər cür insan qrupları daxilində gündəlik istifadə üçün oxşar ideyanı həyata keçirmək istədik. Növbəti DevDays hakatonunda biz likvid demokratiya prinsiplərinə uyğun səsvermə üçün Telegram bot yazmağa qərar verdik. Eyni zamanda, mən bu cür botlarla ümumi bir problemdən qaçmaq istədim - botdan gələn mesajlarla ümumi söhbətin bağlanması. Həll yolu şəxsi söhbətə mümkün qədər çox funksionallıq gətirməkdir.

Hackathon DevDays'19 (1-ci hissə): tövsiyələr, gəzinti marşrutu generatoru və maye demokratiya ilə gündəlikBu botu yaratmaq üçün istifadə etdik Telegram-dan API. Səsvermə və nümayəndə heyətlərinin tarixini saxlamaq üçün PostgreSQL verilənlər bazası seçildi. Botla əlaqə saxlamaq üçün Flask server quraşdırılıb. Biz bu texnologiyaları seçdik, çünki... magistr təhsilimizdə onlarla ünsiyyətdə təcrübəmiz var idi. Layihənin üç komponenti - verilənlər bazası, server və bot üzərində iş komanda üzvləri arasında uğurla bölüşdürüldü.

Təbii ki, üç gün qısa müddətdir, ona görə də hakaton zamanı biz ideyanı prototip səviyyəsinə qədər həyata keçirdik. Nəticədə ümumi çata yalnız səsvermənin açılması və onun anonim nəticələri haqqında məlumat yazan bir bot yaratdıq. Səs vermək və sorğu yaratmaq imkanı botla şəxsi yazışmalar vasitəsilə həyata keçirilir. Səs vermək üçün birbaşa diqqət tələb edən məsələlərin siyahısını göstərən əmr daxil edin. Şəxsi yazışmalarda siz nümayəndələrin siyahısını və onların əvvəlki səslərini görə bilərsiniz, həmçinin mövzulardan birinə səsinizi verə bilərsiniz.

Video iş nümunəsi ilə.

Layihə üzərində işləmək maraqlı idi,gecə yarısına kimi universitetdə qaldıq.Düşünürük ki, bu, çox yorucu olsa da, təhsilə fasilə vermək üçün əla vasitədir. Yaxın bir komandada işləmək xoş təcrübə idi.

PS. Növbəti tədris ili üçün magistraturaya qəbul artıq başa çatıb açıq. İndi qoşul!

Mənbə: www.habr.com

Добавить комментарий