Hackathon DevDays'19 (bagian 1): buku harian kalayan rekomendasi, generator jalur jalan sareng démokrasi cair

Nembe we bébéja ngeunaan program master perusahaan JetBrains sareng Universitas ITMO "Pamekaran Parangkat Lunak / Téknik Perangkat Lunak". Kami ngajak sadayana anu resep kana dinten kabuka dina Senén, 29 April. Kami bakal nyarioskeun ka anjeun ngeunaan kaunggulan program master kami, naon bonus anu kami tawarkeun ka murid sareng naon anu kami tungtutan. Sajaba ti éta, urang pasti bakal ngajawab patarosan ti sémah urang.

Hackathon DevDays'19 (bagian 1): buku harian kalayan rekomendasi, generator jalur jalan sareng démokrasi cairDinten kabuka bakal dilaksanakeun di kantor JetBrains di Times Business Center, dimana murid master urang diajar. Dimimitian dina 17:00. Anjeun tiasa manggihan sagala rinci tur ngadaptar pikeun acara dina website mse.itmo.ru. Datang sareng anjeun moal kuciwa!

Salah sahiji komponén utama program nyaéta prakték. Siswa ngagaduhan seueur: PR mingguan, proyék semester sareng hackathon. Hatur nuhun kana immersion lengkep dina metodologi sareng téknologi pangembangan modéren nalika diajar, lulusan gancang ngahijikeun kana prosés kerja perusahaan IT ageung.

Dina tulisan ieu kami hoyong ngobrol langkung rinci ngeunaan hackathon DevDays, anu lumangsung unggal genep bulan. Aturanna saderhana: tim 3-4 urang ngumpul sareng tilu dinten murid ngahirupkeun ideu sorangan. Naon anu bakal datang tina ieu? Baca bagian mimiti carita ngeunaan proyék hackathon semester ieu ti siswa sorangan :)

Diary kalawan rekomendasi pilem

Hackathon DevDays'19 (bagian 1): buku harian kalayan rekomendasi, generator jalur jalan sareng démokrasi cair

Pangarang gagasan
Ivan Ilchuk
Baris
Ivan Ilchuk - plot pilem parsing, server
Vladislav Korablinov - pamekaran modél pikeun ngabandingkeun jarak entri buku harian sareng plot pilem
Dmitry Valchuk - UI
Nikita Vinokurov - UI, desain

Tujuan proyék kami nyaéta pikeun nyerat aplikasi desktop - buku harian anu bakal nyarankeun pilem ka pangguna dumasar kana éntri di jerona.

Gagasan ieu sumping ka kuring nalika kuring nuju ka universitas sareng mikiran masalah kuring. "Naon waé masalah anu disanghareupan ku jalma, sababaraha panulis klasik parantos nyerat perkawis éta," saur kuring. "Sareng ti saprak aya anu nyerat, éta hartosna aya anu parantos syuting éta." Janten kahayang pikeun nonton pilem ngeunaan jalma anu siksa méntal anu sami muncul sacara alami.

Jelas, aya rupa-rupa buku harian anu misah sareng jasa rekomendasi anu kapisah (tapi biasana saranna dumasar kana naon anu dipikaresep ku jalma éta). Sacara prinsip, proyék ieu gaduh hal anu sami sareng milarian pilem ku titik konci, tapi tetep, mimitina, aplikasi kami nyayogikeun fungsionalitas buku harian.

Hackathon DevDays'19 (bagian 1): buku harian kalayan rekomendasi, generator jalur jalan sareng démokrasi cairKumaha urang nerapkeun ieu? Lamun anjeun mencet tombol magic, diary ngirim entri ka server, dimana film dipilih dumasar kana pedaran dicokot tina Wikipedia. Frontend kami dilakukeun dina éléktron (kami nganggo éta, sanés halaman wéb, sabab kami mimitina mutuskeun pikeun nyimpen data pangguna sanés dina server, tapi sacara lokal dina komputer), sareng server sareng sistem rekomendasi sorangan dilakukeun dina Python: TFs éta dicandak tina déskripsi -IDF vektor anu dibandingkeun pikeun deukeutna ka vektor Éntri diary.

Hiji anggota tim digawé ukur dina modél, nu séjén digawé sagemblengna dina front-tungtung (mimitina babarengan jeung anggota katilu, anu engké switched pikeun nguji). Kuring kalibet dina parsing plot pilem ti Wikipedia jeung server.

Léngkah-léngkah kami ngadeukeutan hasilna, ngatasi sababaraha masalah, dimimitian ku kanyataan yén modél mimitina peryogi seueur RAM, ditungtungan ku kasusah mindahkeun data ka server.

Ayeuna, pikeun milarian pilem kanggo sonten, anjeun henteu peryogi seueur usaha: hasil tina tilu dinten kerja kami nyaéta aplikasi desktop sareng server, anu diaksés ku pangguna ngalangkungan https, nampi réspon pilihan 5 pilem sareng pedaran ringkes jeung poster.

Tayangan kuring ngeunaan proyék éta positip pisan: padamelan éta pikaresepeun ti isuk-isuk dugi ka wengi, sareng aplikasi anu hasilna périodik ngahasilkeun hasil anu lucu pisan dina gaya "Sleepless Night" pikeun éntri buku harian ngeunaan PR di universitas atanapi pilem. ngeunaan dinten mimiti sakola pikeun carita ngeunaan dinten munggaran di jurusan.

Tumbu relevan, installers, jsb bisa kapanggih di dieu.

Generator jalur

Hackathon DevDays'19 (bagian 1): buku harian kalayan rekomendasi, generator jalur jalan sareng démokrasi cairPangarang gagasan
Artemyeva Irina
Baris
Artemyeva Irina - kalungguhan tim, loop utama
Gordeeva Lyudmila - musik
Platonov Vladislav - ruteu

Abdi resep pisan leumpang di sabudeureun kota: ningali wangunan, jalma, pamikiran ngeunaan sajarah. Tapi, sanajan ngarobah tempat tinggal kuring, sooner atanapi engké kuring keur Nyanghareupan masalah milih ruteu: Kuring geus réngsé sakabéh nu kuring bisa mikir. Ieu kumaha ideu sumping pikeun ngajadikeun otomatis generasi ruteu: anjeun nunjukkeun titik awal sareng panjang jalur, sareng program éta masihan anjeun pilihan. Leumpang tiasa panjang, janten pamekaran logis tina ide sigana nambihan kamampuan pikeun nunjukkeun titik-titik perantara pikeun "eureun," dimana anjeun tiasa gaduh jajan sareng istirahat. Cabang pamekaran anu sanés nyaéta musik. Leumpang ka musik sok langkung senang, janten langkung saé pikeun nambihan kamampuan pikeun milih daptar puter dumasar kana rute anu didamel.

Teu mungkin pikeun mendakan solusi sapertos diantara aplikasi anu tos aya. Analog anu pangdeukeutna nyaéta naon waé anu ngarencanakeun rute: Google Maps, 2GIS, jsb.

Pangpangna pikeun gaduh aplikasi sapertos kitu dina telepon anjeun, janten nganggo Telegram mangrupikeun pilihan anu saé. Eta ngidinan Anjeun pikeun mintonkeun peta jeung muter musik, jeung anjeun bisa ngadalikeun sagala ieu ku nulis bot. Karya utama sareng peta dilakukeun nganggo Google Map API. Python ngagampangkeun ngagabungkeun duanana téknologi.

Aya tilu jalma di tim, jadi tugas ieu dibagi jadi dua subtasks non-tumpang tindih (gawe kalawan peta sarta gawé bareng musik) ku kituna guys bisa dianggo mandiri, sarta kuring nyandak kana sorangan pikeun ngagabungkeun hasilna.

Hackathon DevDays'19 (bagian 1): buku harian kalayan rekomendasi, generator jalur jalan sareng démokrasi cairHenteu aya anu kantos damel sareng Google Map API atanapi nyerat bot Telegram, janten masalah utami nyaéta jumlah waktos anu dialokasikeun pikeun ngalaksanakeun proyék éta: ngartos hiji hal sok nyandak waktos langkung seueur tibatan ngalakukeun hal anu anjeun terang. Éta ogé hésé milih API bot Telegram: kusabab meungpeuk, henteu sadayana damel sareng kuring kedah bajoang pikeun nyetél sadayana.

Perlu disebatkeun sacara misah kumaha masalah ngahasilkeun rute direngsekeun. Gampang ngawangun jalur antara dua lokasi, tapi naon anu anjeun tiasa nawiskeun ka pangguna upami ngan ukur panjang jalur anu dipikanyaho? Hayu pamaké rék leumpang 10 kilométer. Hiji titik dipilih dina arah anu sawenang, jarakna dina garis lempeng nyaéta 10 kilométer, saatos éta jalur diwangun ka titik ieu sapanjang jalan nyata. Paling dipikaresep eta moal lempeng, jadi kami bakal shorten eta ka 10 kilométer dieusian. Aya seueur pilihan pikeun rute sapertos kitu - kami ngagaduhan generator rute anu nyata!

Mimitina, kuring hoyong ngabagi peta kana daérah anu cocog sareng daérah héjo: tanggul, palataran, jalan-jalan, pikeun nyandak jalur anu paling pikaresepeun pikeun jalan-jalan, sareng ogé ngahasilkeun musik saluyu sareng daérah ieu. Tapi ngalakukeun ieu ngagunakeun Google Map API tétéla hésé (urang teu boga waktu pikeun ngajawab masalah ieu). Sanajan kitu, éta mungkin pikeun ngalaksanakeun pangwangunan jalur ngaliwatan tipe husus lokasi (toko, taman, perpustakaan): lamun jalur indit sabudeureun sagala tempat dieusian, tapi jarak nu dipikahoyong teu acan ngumbara, éta réngsé nepi ka a jarak husus-pamaké dina arah acak. Google Map API ogé ngamungkinkeun anjeun ngitung perkiraan waktos perjalanan, anu ngabantosan anjeun milih daptar puter persis pikeun sadayana jalan.

Dina ahir junun nyieun generasi ruteu ku titik awal, jarak jeung titik panengah; sagalana geus disiapkeun pikeun mengklasifikasikan musik nurutkeun bagian tina jalur, tapi alatan kurangna waktu, eta ieu mutuskeun ninggalkeun pilihan milih playlist saukur salaku cabang UI tambahan. Ku kituna, pamaké éta bisa bebas milih musik ngadengekeun.

Masalah utama sareng damel sareng musik nyaéta henteu terang ti mana kéngingkeun file mp3 tanpa meryogikeun pangguna gaduh akun dina jasa naon waé. Ieu mutuskeun pikeun menta musik ti pamaké (mode UserMusic). Ieu nyiptakeun masalah anyar: henteu sadayana tiasa ngaunduh lagu. Salah sahiji solusi nyaéta nyiptakeun gudang kalayan musik ti pangguna (mode BotMusic) - ti dinya anjeun tiasa ngahasilkeun musik henteu paduli jasa.

Sanajan teu sampurna, urang réngsé tugas: urang réngsé nepi ka hiji aplikasi nu Abdi hoyong pake. Sacara umum, ieu keren pisan: tilu dinten ka pengker anjeun ngan ukur gaduh ide sareng sanés pamikiran tunggal ngeunaan kumaha persisna pikeun nerapkeun éta, tapi ayeuna aya solusi anu tiasa dianggo. Ieu mangrupikeun tilu dinten anu penting pisan pikeun kuring. Kuring henteu deui sieun pikeun ngahasilkeun hiji hal anu kuring henteu gaduh pangaweruh anu cukup pikeun dilaksanakeun, janten pimpinan tim éta luar biasa pikaresepeun, sareng kuring terang jalma-jalma anu saé anu ngagabung sareng tim kuring. hadé!

Démokrasi cair

Hackathon DevDays'19 (bagian 1): buku harian kalayan rekomendasi, generator jalur jalan sareng démokrasi cair

Pangarang gagasan
Stanislav Sychev
Baris
Stanislav Sychev - kalungguhan tim, database
Nikolay Izyumov - panganteur bot
Anton Ryabushev - backend

Dina grup anu béda, sering aya kabutuhan pikeun nyandak kaputusan atanapi milih. Biasana dina kasus sapertos aranjeunna Resort ka démokrasi langsung, kumaha oge, nalika grup meunang badag, masalah bisa timbul. Contona, hiji jalma dina grup bisa jadi teu hayang ngajawab patarosan sering atawa ngajawab patarosan ngeunaan topik nu tangtu. Dina grup badag, pikeun nyingkahan masalah aranjeunna Resort ka démokrasi wawakil, nalika grup misah "deputies" dipilih ti antara sakabeh jalma, anu ngabebaskeun sésana tina beungbeurat pilihan. Tapi rada hese jadi timbalan kitu, sarta jalma anu jadi hiji moal merta jujur ​​tur terhormat, sakumaha anjeunna seemed pamilih.

Pikeun ngajawab masalah duanana sistem, Brian Ford ngajukeun konsép démokrasi cair. Dina sistem sapertos kitu, sadayana bébas milih peran pangguna biasa atanapi utusan, ngan ukur ku nganyatakeun kahayangna. Saha waé tiasa milih sacara mandiri atanapi masihan sora ka utusan dina hiji atanapi langkung masalah. Hiji utusan ogé tiasa masihan sora na. Sumawona, upami utusan henteu cocog deui ka pamilih, sorana tiasa ditarik iraha waé.

Conto pamakéan démokrasi cair kapanggih dina pulitik, sarta kami hayang nerapkeun gagasan sarupa pikeun pamakéan sapopoé dina sagala rupa golongan jalma. Dina hackathon DevDays salajengna, kami mutuskeun pikeun nyerat bot Telegram pikeun milih dumasar kana prinsip démokrasi cair. Dina waktos anu sami, kuring hoyong ngahindarkeun masalah umum sareng bot sapertos kitu - clogging obrolan umum sareng pesen tina bot. Solusina nyaéta nyangking fungsionalitas sabisa-bisa kana paguneman pribadi.

Hackathon DevDays'19 (bagian 1): buku harian kalayan rekomendasi, generator jalur jalan sareng démokrasi cairPikeun nyieun bot ieu kami dipaké API ti Telegram. Database PostgreSQL dipilih pikeun nyimpen sajarah voting sareng delegasi. Pikeun komunikasi sareng bot, server Flask dipasang. Kami milih téknologi ieu kusabab ... kami parantos gaduh pangalaman berinteraksi sareng aranjeunna nalika diajar master urang. Gawé dina tilu komponén proyék-database, server, jeung bot-ieu hasil disebarkeun diantara anggota tim.

Tangtosna, tilu dinten mangrupikeun waktos anu pondok, janten salami hackathon kami ngalaksanakeun ide ka tingkat prototipe. Hasilna, urang nyieun bot nu nulis ka obrolan umum ngan informasi ngeunaan bubuka voting jeung hasil anonim na. Kamampuhan pikeun milih sareng ngadamel polling dilaksanakeun ngaliwatan korespondensi pribadi sareng bot. Pikeun milih, lebetkeun paréntah anu nampilkeun daptar masalah anu peryogi perhatian langsung. Dina korespondensi pribadi, anjeun tiasa ningali daptar delegasi sareng undian sateuacana, sareng masihan aranjeunna sora anjeun dina salah sahiji topik.

Video sareng conto padamelan.

Éta pikaresepeun pikeun ngerjakeun proyék éta, urang cicing di universitas dugi ka tengah wengi, panginten ieu mangrupikeun cara anu saé pikeun istirahat tina diajar, sanaos capé pisan. Ieu mangrupikeun pangalaman anu pikaresepeun pikeun damel di tim anu caket.

PS. Pendaptaran program master kanggo taun ajaran salajengna parantos aya kabuka. Ngahiji sareng Kami!

Sumber: www.habr.com

Tambahkeun komentar