Hackathon DevDays'19 (bahagian 1): diari dengan cadangan, penjana laluan berjalan kaki dan demokrasi cair

Baru-baru ini kami memberitahu mengenai program sarjana korporat JetBrains dan ITMO University "Pembangunan Perisian / Kejuruteraan Perisian". Kami menjemput semua yang berminat ke hari terbuka pada hari Isnin, 29 April. Kami akan memberitahu anda tentang kelebihan program sarjana kami, bonus yang kami tawarkan kepada pelajar dan apa yang kami tuntut sebagai balasan. Di samping itu, kami pasti akan menjawab soalan daripada tetamu kami.

Hackathon DevDays'19 (bahagian 1): diari dengan cadangan, penjana laluan berjalan kaki dan demokrasi cairHari terbuka akan diadakan di pejabat JetBrains di Pusat Perniagaan Times, tempat pelajar sarjana kami belajar. Bermula pada pukul 17:00. Anda boleh mengetahui semua butiran dan mendaftar untuk acara tersebut di laman web mse.itmo.ru. Datang dan anda tidak akan menyesal!

Salah satu komponen utama program ini ialah latihan. Pelajar mempunyai banyak perkara: kerja rumah mingguan, projek semester dan hackathon. Terima kasih kepada perendaman lengkap dalam metodologi dan teknologi pembangunan moden semasa pengajian mereka, graduan dengan cepat menyepadukan ke dalam proses kerja syarikat IT yang besar.

Dalam siaran ini kami ingin bercakap dengan lebih terperinci tentang hackathon DevDays, yang berlangsung setiap enam bulan. Peraturannya mudah: kumpulan 3-4 orang berkumpul dan selama tiga hari pelajar menghidupkan idea mereka sendiri. Apa yang mungkin datang dari ini? Baca bahagian pertama cerita tentang projek hackathon semester ini daripada pelajar sendiri :)

Diari dengan cadangan filem

Hackathon DevDays'19 (bahagian 1): diari dengan cadangan, penjana laluan berjalan kaki dan demokrasi cair

Pengarang idea itu
Ivan Ilchuk
Berbaris
Ivan Ilchuk – penghuraian plot filem, pelayan
Vladislav Korablinov – pembangunan model untuk membandingkan jarak entri diari dan plot filem
Dmitry Valchuk - UI
Nikita Vinokurov – UI, reka bentuk

Matlamat projek kami adalah untuk menulis aplikasi desktop - diari yang akan mengesyorkan filem kepada pengguna berdasarkan entri di dalamnya.

Idea ini datang kepada saya ketika saya dalam perjalanan ke universiti dan memikirkan masalah saya. "Apa sahaja masalah yang dihadapi oleh seseorang, beberapa penulis klasik telah menulis mengenainya," fikir saya. "Dan sejak seseorang menulisnya, ini bermakna seseorang telah merakamnya." Jadi keinginan untuk menonton filem tentang seseorang yang mengalami siksaan mental yang sama muncul secara semula jadi.

Jelas sekali, terdapat pelbagai jenis diari berasingan dan perkhidmatan pengesyoran berasingan (tetapi biasanya pengesyoran adalah berdasarkan perkara yang disukai oleh orang itu sebelum ini). Pada dasarnya, projek ini mempunyai persamaan dengan mencari filem mengikut perkara utama, tetapi masih, pertama sekali, aplikasi kami menyediakan kefungsian diari.

Hackathon DevDays'19 (bahagian 1): diari dengan cadangan, penjana laluan berjalan kaki dan demokrasi cairBagaimanakah kami melaksanakan ini? Apabila anda menekan butang ajaib, diari menghantar entri ke pelayan, di mana filem itu dipilih berdasarkan penerangan yang diambil dari Wikipedia. Bahagian hadapan kami dibuat dalam Electron (kami menggunakannya, bukan tapak web, kerana kami pada mulanya memutuskan untuk menyimpan data pengguna bukan pada pelayan, tetapi secara tempatan pada komputer), dan pelayan dan sistem pengesyoran itu sendiri dibuat dalam Python: TF adalah diperoleh daripada penerangan -vektor IDF yang dibandingkan untuk kedekatan dengan vektor entri diari.

Seorang ahli pasukan bekerja hanya pada model, yang lain bekerja sepenuhnya pada bahagian hadapan (pada mulanya bersama-sama dengan ahli ketiga, yang kemudiannya beralih kepada ujian). Saya terlibat dalam menghuraikan plot filem dari Wikipedia dan pelayan.

Langkah demi langkah kami semakin dekat dengan hasilnya, mengatasi beberapa masalah, bermula dengan fakta bahawa model pada mulanya memerlukan banyak RAM, berakhir dengan kesukaran memindahkan data ke pelayan.

Kini, untuk mencari filem untuk malam itu, anda tidak memerlukan banyak usaha: hasil kerja tiga hari kami ialah aplikasi desktop dan pelayan, yang pengguna akses melalui https, menerima sebagai tindak balas pilihan 5 filem dengan penerangan ringkas dan poster.

Tanggapan saya terhadap projek itu sangat positif: kerja itu menarik dari awal pagi hingga lewat malam, dan aplikasi yang terhasil secara berkala menghasilkan hasil yang sangat lucu dalam gaya "Malam Tanpa Tidur" untuk entri diari tentang kerja rumah di universiti atau filem tentang hari pertama persekolahan untuk cerita tentang hari pertama di jabatan.

Pautan yang berkaitan, pemasang, dsb. boleh didapati di sini.

Penjana laluan

Hackathon DevDays'19 (bahagian 1): diari dengan cadangan, penjana laluan berjalan kaki dan demokrasi cairPengarang idea itu
Artemyeva Irina
Berbaris
Artemyeva Irina - ketua pasukan, gelung utama
Gordeeva Lyudmila - muzik
Platonov Vladislav – laluan

Saya sangat suka berjalan di sekitar bandar: melihat bangunan, orang, memikirkan sejarah. Tetapi, walaupun apabila menukar tempat kediaman saya, lambat laun saya berhadapan dengan masalah memilih laluan: Saya telah menyelesaikan semua laluan yang saya fikirkan. Beginilah idea tercetus untuk mengautomasikan penjanaan laluan: anda menunjukkan titik permulaan dan panjang laluan, dan program memberi anda pilihan. Berjalan boleh menjadi panjang, jadi perkembangan logik idea nampaknya menambah keupayaan untuk menunjukkan titik perantaraan untuk "berhenti", di mana anda boleh menikmati snek dan berehat. Satu lagi cabang pembangunan ialah muzik. Berjalan ke muzik sentiasa lebih menyeronokkan, jadi adalah bagus untuk menambah keupayaan untuk memilih senarai main berdasarkan laluan yang dijana.

Tidak mungkin untuk mencari penyelesaian sedemikian di kalangan aplikasi sedia ada. Analog terdekat ialah mana-mana perancang laluan: Peta Google, 2GIS, dsb.

Ia adalah paling mudah untuk mempunyai aplikasi sedemikian pada telefon anda, jadi menggunakan Telegram adalah pilihan yang baik. Ia membolehkan anda memaparkan peta dan memainkan muzik, dan anda boleh mengawal semua ini dengan menulis bot. Kerja utama dengan peta telah dilakukan menggunakan API Peta Google. Python memudahkan untuk menggabungkan kedua-dua teknologi.

Terdapat tiga orang dalam pasukan, jadi tugas itu dibahagikan kepada dua subtugas yang tidak bertindih (bekerja dengan peta dan bekerja dengan muzik) supaya mereka boleh bekerja secara bebas, dan saya mengambil tanggungjawab sendiri untuk menggabungkan hasilnya.

Hackathon DevDays'19 (bahagian 1): diari dengan cadangan, penjana laluan berjalan kaki dan demokrasi cairTiada seorang pun daripada kami pernah bekerja dengan API Peta Google atau bot Telegram bertulis, jadi masalah utama ialah jumlah masa yang diperuntukkan untuk melaksanakan projek: memahami sesuatu sentiasa memerlukan lebih banyak masa daripada melakukan sesuatu yang anda tahu dengan baik. Sukar juga untuk memilih API bot Telegram: kerana menyekat, tidak semuanya berfungsi dan saya terpaksa bergelut untuk menyediakan semuanya.

Perlu dinyatakan secara berasingan bagaimana masalah penjanaan laluan diselesaikan. Mudah untuk membina laluan antara dua lokasi, tetapi apakah yang boleh anda tawarkan kepada pengguna jika hanya panjang laluan itu diketahui? Biarkan pengguna mahu berjalan sejauh 10 kilometer. Satu titik dipilih dalam arah sewenang-wenangnya, jaraknya dalam garis lurus ialah 10 kilometer, selepas itu laluan dibina ke titik ini di sepanjang jalan sebenar. Kemungkinan besar ia tidak akan lurus, jadi kami akan memendekkannya kepada 10 kilometer yang ditentukan. Terdapat banyak pilihan untuk laluan sedemikian - kami mendapat penjana laluan sebenar!

Pada mulanya, saya ingin membahagikan peta kepada kawasan yang sepadan dengan kawasan hijau: tambak, halaman, jalan, untuk mendapatkan laluan yang paling menyenangkan untuk berjalan-jalan, dan juga menjana muzik mengikut kawasan ini. Tetapi melakukan ini menggunakan API Peta Google ternyata sukar (kami tidak mempunyai masa untuk menyelesaikan masalah ini). Walau bagaimanapun, adalah mungkin untuk melaksanakan pembinaan laluan melalui jenis lokasi tertentu (kedai, taman, perpustakaan): jika laluan itu mengelilingi semua tempat yang ditentukan, tetapi jarak yang diingini masih belum dilalui, ia akan dilengkapkan ke jarak yang ditentukan pengguna dalam arah rawak. API Peta Google juga membolehkan anda mengira anggaran masa perjalanan, yang membantu anda memilih senarai main tepat untuk keseluruhan perjalanan.

Hasilnya, berjaya membentuk generasi laluan dengan titik permulaan, jarak dan titik perantaraan; segala-galanya telah disediakan untuk mengklasifikasikan muzik mengikut bahagian laluan, tetapi kerana kekurangan masa, ia telah memutuskan untuk meninggalkan pilihan memilih senarai main semata-mata sebagai cawangan UI tambahan. Oleh itu, pengguna dapat memilih muzik untuk didengari secara bebas.

Masalah utama dengan bekerja dengan muzik adalah tidak mengetahui dari mana untuk mendapatkan fail mp3 tanpa memerlukan pengguna mempunyai akaun pada mana-mana perkhidmatan. Ia telah memutuskan untuk meminta muzik daripada pengguna (mod UserMusic). Ini menimbulkan masalah baharu: tidak semua orang mempunyai keupayaan untuk memuat turun lagu. Satu penyelesaian ialah mencipta repositori dengan muzik daripada pengguna (mod BotMusic) - daripadanya anda boleh menjana muzik tanpa mengira perkhidmatan.

Walaupun tidak sempurna, kami menyelesaikan tugasan: kami berakhir dengan aplikasi yang saya ingin gunakan. Secara umum, ini sangat keren: tiga hari lalu anda hanya mempunyai idea dan tidak ada satu pun pemikiran tentang cara tepat untuk melaksanakannya, tetapi kini terdapat penyelesaian yang berkesan. Ini adalah tiga hari yang sangat penting bagi saya. Saya tidak lagi takut untuk menghasilkan sesuatu yang saya tidak mempunyai pengetahuan yang mencukupi untuk dilaksanakan, menjadi ketua pasukan adalah sangat menarik, dan saya mengenali lelaki hebat yang menyertai pasukan saya lebih baik!

Demokrasi Cair

Hackathon DevDays'19 (bahagian 1): diari dengan cadangan, penjana laluan berjalan kaki dan demokrasi cair

Pengarang idea itu
Stanislav Sychev
Berbaris
Stanislav Sychev – ketua pasukan, pangkalan data
Nikolay Izyumov – antara muka bot
Anton Ryabushev - bahagian belakang

Dalam kumpulan yang berbeza, selalunya terdapat keperluan untuk membuat keputusan atau mengundi. Biasanya dalam kes sebegini mereka mengambil jalan keluar demokrasi langsung, bagaimanapun, apabila kumpulan semakin besar, masalah boleh timbul. Sebagai contoh, seseorang dalam kumpulan mungkin tidak mahu menjawab soalan dengan kerap atau menjawab soalan tentang topik tertentu. Dalam kumpulan besar, untuk mengelakkan masalah yang mereka jalani demokrasi perwakilan, apabila kumpulan "timbalan" yang berasingan dipilih dari kalangan semua orang, yang membebaskan selebihnya daripada beban pilihan. Tetapi agak sukar untuk menjadi timbalan seperti itu, dan orang yang menjadi timbalan tidak semestinya jujur ​​dan dihormati, seperti yang dilihatnya sebagai pengundi.

Untuk menyelesaikan masalah kedua-dua sistem, Brian Ford mencadangkan konsep tersebut demokrasi cair. Dalam sistem sedemikian, semua orang bebas memilih peranan pengguna biasa atau perwakilan, hanya dengan menyatakan keinginan mereka. Sesiapa sahaja boleh mengundi secara bebas atau memberi undi kepada perwakilan mengenai satu atau lebih isu. Seorang perwakilan juga boleh membuang undi. Lebih-lebih lagi, jika perwakilan tidak lagi sesuai dengan pengundi, undi boleh ditarik balik pada bila-bila masa.

Contoh penggunaan demokrasi cair terdapat dalam politik, dan kami ingin melaksanakan idea yang sama untuk kegunaan harian dalam semua jenis kumpulan orang. Pada hackathon DevDays seterusnya, kami memutuskan untuk menulis bot Telegram untuk mengundi mengikut prinsip demokrasi cair. Pada masa yang sama, saya ingin mengelakkan masalah biasa dengan bot sedemikian - menyumbat sembang umum dengan mesej daripada bot. Penyelesaiannya adalah untuk membawa sebanyak mungkin fungsi ke dalam perbualan peribadi.

Hackathon DevDays'19 (bahagian 1): diari dengan cadangan, penjana laluan berjalan kaki dan demokrasi cairUntuk mencipta bot ini kami gunakan API daripada Telegram. Pangkalan data PostgreSQL telah dipilih untuk menyimpan sejarah pengundian dan perwakilan. Untuk berkomunikasi dengan bot, pelayan Flask telah dipasang. Kami memilih teknologi ini kerana... kami sudah mempunyai pengalaman berinteraksi dengan mereka semasa pengajian sarjana kami. Bekerja pada tiga komponen projekβ€”pangkalan data, pelayan dan botβ€”berjaya diedarkan di kalangan ahli pasukan.

Sudah tentu, tiga hari adalah masa yang singkat, jadi semasa hackathon kami melaksanakan idea itu ke peringkat prototaip. Akibatnya, kami mencipta bot yang menulis kepada sembang umum hanya maklumat tentang pembukaan pengundian dan keputusan tanpa namanya. Keupayaan untuk mengundi dan membuat tinjauan pendapat dilaksanakan melalui surat-menyurat peribadi dengan bot. Untuk mengundi, masukkan arahan yang memaparkan senarai isu yang memerlukan perhatian langsung. Dalam surat-menyurat peribadi, anda boleh melihat senarai perwakilan dan undian mereka sebelum ini, dan juga memberi mereka undian anda pada salah satu topik.

Video dengan contoh kerja.

Menarik untuk mengerjakan projek itu, kami tinggal di universiti sehingga tengah malam. Kami fikir ini adalah cara yang bagus untuk berehat daripada belajar, walaupun ia sangat meletihkan. Ia adalah pengalaman yang menyenangkan bekerja dalam pasukan yang rapat.

PS. Pendaftaran untuk program sarjana untuk tahun akademik akan datang sudah pun ia terbuka... Sertai kami!

Sumber: www.habr.com

Tambah komen