Hackathon DevDays'19 (bagian 1): buku harian dengan rekomendasi, generator rute jalan kaki, dan demokrasi yang cair

Baru-baru ini kami diceritakan tentang program master korporat JetBrains dan ITMO University “Pengembangan Perangkat Lunak / Rekayasa Perangkat Lunak”. Kami mengundang semua orang yang tertarik ke hari terbuka pada hari Senin, 29 April. Kami akan memberi tahu Anda tentang keuntungan dari program master kami, bonus apa yang kami tawarkan kepada siswa dan apa yang kami minta sebagai imbalannya. Selain itu, kami pasti akan menjawab pertanyaan dari tamu kami.

Hackathon DevDays'19 (bagian 1): buku harian dengan rekomendasi, generator rute jalan kaki, dan demokrasi yang cairHari terbuka akan diadakan di kantor JetBrains di Times Business Center, tempat siswa master kami belajar. Dimulai pukul 17:00. Anda dapat mengetahui semua detailnya dan mendaftar untuk acara tersebut di situs web mse.itmo.ru. Datanglah dan Anda tidak akan menyesalinya!

Salah satu komponen utama dari program ini adalah latihan. Siswa mempunyai banyak hal: pekerjaan rumah mingguan, proyek semester, dan hackathon. Berkat pendalaman penuh dalam metodologi dan teknologi pengembangan modern selama masa studi mereka, lulusan dengan cepat berintegrasi ke dalam proses kerja di perusahaan IT besar.

Dalam postingan kali ini kami ingin membahas lebih detail tentang hackathon DevDays, yang diadakan setiap enam bulan. Aturannya sederhana: tim yang terdiri dari 3-4 orang berkumpul dan selama tiga hari siswa mewujudkan ide mereka. Apa yang mungkin terjadi? Baca bagian pertama cerita proyek hackathon semester ini dari mahasiswa itu sendiri :)

Buku harian dengan rekomendasi film

Hackathon DevDays'19 (bagian 1): buku harian dengan rekomendasi, generator rute jalan kaki, dan demokrasi yang cair

Penulis ide
Ivan Ilchuk
Struktur komando
Ivan Ilchuk – penguraian plot film, server
Vladislav Korablinov – pengembangan model untuk membandingkan kedekatan entri buku harian dan plot film
Dmitry Valchuk – UI
Nikita Vinokurov – UI, desain

Tujuan dari proyek kami adalah untuk menulis aplikasi desktop - buku harian yang akan merekomendasikan film kepada pengguna berdasarkan entri di dalamnya.

Ide ini muncul di benak saya ketika saya sedang dalam perjalanan ke universitas dan memikirkan masalah saya. “Apapun masalah yang dihadapi seseorang, beberapa penulis klasik sudah pernah menulis tentangnya,” pikirku. “Dan karena ada yang menulisnya, berarti ada yang sudah memfilmkannya.” Jadi keinginan untuk menonton film tentang seseorang dengan penderitaan mental yang sama muncul secara alami.

Jelasnya, ada berbagai macam buku harian terpisah dan layanan rekomendasi terpisah (tetapi biasanya rekomendasi didasarkan pada apa yang disukai orang tersebut sebelumnya). Pada prinsipnya, proyek ini memiliki kesamaan dengan pencarian film berdasarkan poin-poin penting, namun, pertama-tama, aplikasi kami menyediakan fungsionalitas buku harian.

Hackathon DevDays'19 (bagian 1): buku harian dengan rekomendasi, generator rute jalan kaki, dan demokrasi yang cairBagaimana kami menerapkan hal ini? Saat Anda menekan tombol ajaib, buku harian tersebut mengirimkan entri ke server, di mana film tersebut dipilih berdasarkan deskripsi yang diambil dari Wikipedia. Frontend kami dibuat di Electron (kami menggunakannya, bukan situs web, karena awalnya kami memutuskan untuk menyimpan data pengguna bukan di server, tetapi secara lokal di komputer), dan server serta sistem rekomendasi itu sendiri dibuat dengan Python: TF adalah diperoleh dari deskripsi vektor -IDF yang dibandingkan kedekatannya dengan vektor entri buku harian.

Salah satu anggota tim hanya mengerjakan model, yang lain bekerja sepenuhnya di front-end (awalnya bersama anggota ketiga, yang kemudian beralih ke pengujian). Saya terlibat dalam penguraian plot film dari Wikipedia dan server.

Selangkah demi selangkah kami semakin mendekati hasilnya, mengatasi sejumlah masalah, mulai dari model yang awalnya membutuhkan banyak RAM, hingga sulitnya mentransfer data ke server.

Sekarang, untuk mencari film malam hari, Anda tidak perlu banyak tenaga: hasil kerja tiga hari kami adalah aplikasi desktop dan server, yang diakses pengguna melalui https, menerima tanggapan berupa 5 film pilihan dengan deskripsi singkat dan poster.

Kesan saya terhadap proyek ini sangat positif: pekerjaannya menawan dari pagi hingga larut malam, dan aplikasi yang dihasilkan secara berkala memberikan hasil yang sangat lucu dalam gaya “Malam Tanpa Tidur” untuk entri buku harian tentang pekerjaan rumah di universitas atau film tentang hari pertama sekolah untuk cerita tentang hari pertama di jurusan.

Tautan yang relevan, pemasang, dll. dapat ditemukan di sini.

Pembuat rute

Hackathon DevDays'19 (bagian 1): buku harian dengan rekomendasi, generator rute jalan kaki, dan demokrasi yang cairPenulis ide
Artemyeva Irina
Struktur komando
Artemyeva Irina – pemimpin tim, putaran utama
Gordeeva Lyudmila – musik
Platonov Vladislav – rute

Saya sangat suka berjalan-jalan di kota: melihat bangunan, orang, memikirkan sejarah. Namun, bahkan ketika saya berpindah tempat tinggal, cepat atau lambat saya dihadapkan pada masalah dalam memilih rute: Saya telah menyelesaikan semua yang dapat saya pikirkan. Beginilah ide muncul untuk mengotomatiskan pembuatan rute: Anda menunjukkan titik awal dan panjang rute, dan program memberi Anda pilihan. Jalan kaki bisa memakan waktu yang lama, jadi pengembangan logis dari ide tersebut tampaknya menambahkan kemampuan untuk menunjukkan titik tengah untuk “perhentian”, di mana Anda dapat menikmati camilan dan istirahat. Cabang perkembangan lainnya adalah musik. Berjalan mengikuti musik selalu lebih menyenangkan, jadi alangkah baiknya jika menambahkan kemampuan untuk memilih playlist berdasarkan rute yang dihasilkan.

Solusi seperti itu tidak dapat ditemukan di antara aplikasi yang ada. Analog terdekatnya adalah perencana rute apa pun: Google Maps, 2GIS, dll.

Akan lebih mudah jika Anda memiliki aplikasi seperti itu di ponsel Anda, jadi menggunakan Telegram adalah pilihan yang bagus. Ini memungkinkan Anda untuk menampilkan peta dan memutar musik, dan Anda dapat mengontrol semua ini dengan menulis bot. Pekerjaan utama dengan peta dilakukan menggunakan Google Map API. Python memudahkan penggabungan kedua teknologi.

Ada tiga orang dalam tim, jadi tugas dibagi menjadi dua subtugas yang tidak tumpang tindih (bekerja dengan peta dan bekerja dengan musik) sehingga orang-orang dapat bekerja secara mandiri, dan saya sendiri yang menggabungkan hasilnya.

Hackathon DevDays'19 (bagian 1): buku harian dengan rekomendasi, generator rute jalan kaki, dan demokrasi yang cairTak satu pun dari kami yang pernah bekerja dengan Google Map API atau menulis bot Telegram, jadi masalah utamanya adalah jumlah waktu yang dialokasikan untuk mengimplementasikan proyek: memahami sesuatu selalu membutuhkan lebih banyak waktu daripada melakukan sesuatu yang Anda ketahui dengan baik. Sulit juga untuk memilih API bot Telegram: karena pemblokiran, tidak semuanya berfungsi dan saya harus berjuang untuk mengatur semuanya.

Perlu disebutkan secara terpisah bagaimana masalah pembuatan rute diselesaikan. Sangat mudah untuk membuat rute antara dua lokasi, namun apa yang dapat Anda tawarkan kepada pengguna jika hanya panjang rute yang diketahui? Biarkan pengguna ingin berjalan 10 kilometer. Sebuah titik dipilih dalam arah sewenang-wenang, yang jaraknya dalam garis lurus adalah 10 kilometer, setelah itu rute ke titik ini dibangun di sepanjang jalan nyata. Kemungkinan besar tidak lurus, jadi kami perpendek menjadi 10 kilometer yang ditentukan. Ada banyak pilihan untuk rute seperti itu - kami memiliki generator rute yang nyata!

Awalnya, saya ingin mengelompokkan peta ke dalam area yang sesuai dengan area hijau: tanggul, halaman, jalan, untuk mendapatkan rute jalan-jalan yang paling menyenangkan, dan juga menghasilkan musik yang sesuai dengan area tersebut. Namun melakukan ini menggunakan Google Map API ternyata sulit (kami tidak punya waktu untuk menyelesaikan masalah ini). Namun, pembangunan rute dapat dilaksanakan melalui jenis lokasi tertentu (toko, taman, perpustakaan): jika rute mengelilingi semua tempat yang ditentukan, tetapi jarak yang diinginkan belum ditempuh, maka diselesaikan ke a jarak yang ditentukan pengguna dalam arah acak. Google Map API juga memungkinkan Anda menghitung perkiraan waktu perjalanan, yang membantu Anda memilih playlist yang tepat untuk keseluruhan perjalanan.

Sebagai hasilnya, berhasil membuat generasi rute berdasarkan titik awal, jarak dan titik perantara; semuanya telah disiapkan untuk mengklasifikasikan musik berdasarkan bagian rute, namun karena kurangnya waktu, diputuskan untuk membiarkan opsi memilih playlist hanya sebagai cabang UI tambahan. Dengan demikian, pengguna dapat secara mandiri memilih musik yang ingin didengarkan.

Masalah utama dalam bekerja dengan musik adalah tidak mengetahui dari mana mendapatkan file mp3 tanpa mengharuskan pengguna memiliki akun di layanan apa pun. Diputuskan untuk meminta musik dari pengguna (mode UserMusic). Hal ini menimbulkan masalah baru: tidak semua orang memiliki kemampuan untuk mendownload lagu. Salah satu solusinya adalah membuat repositori dengan musik dari pengguna (mode BotMusic) - dari situ Anda dapat menghasilkan musik apa pun layanannya.

Meskipun tidak sempurna, kami menyelesaikan tugasnya: kami mendapatkan aplikasi yang ingin saya gunakan. Secara umum, ini sangat keren: tiga hari yang lalu Anda hanya memiliki ide dan tidak memikirkan bagaimana tepatnya menerapkannya, tetapi sekarang ada solusi yang berhasil. Ini adalah tiga hari yang sangat penting bagi saya. Saya tidak lagi takut untuk memikirkan sesuatu yang saya tidak punya cukup pengetahuan untuk menerapkannya, menjadi pemimpin tim sangatlah menarik, dan saya mengenal orang-orang hebat yang bergabung dengan tim saya lebih baik!

Demokrasi Lancar

Hackathon DevDays'19 (bagian 1): buku harian dengan rekomendasi, generator rute jalan kaki, dan demokrasi yang cair

Penulis ide
Stanislav Sychev
Struktur komando
Stanislav Sychev – pemimpin tim, database
Nikolay Izyumov – antarmuka bot
Anton Ryabushev – bagian belakang

Dalam kelompok yang berbeda, seringkali ada kebutuhan untuk membuat keputusan atau pemungutan suara. Biasanya dalam kasus seperti itu mereka menggunakan cara tersebut demokrasi langsungNamun, ketika kelompok menjadi besar, masalah bisa muncul. Misalnya, seseorang dalam suatu kelompok mungkin tidak ingin sering menjawab pertanyaan atau menjawab pertanyaan tentang topik tertentu. Dalam kelompok besar, untuk menghindari masalah, mereka melakukan hal tersebut demokrasi representatif, ketika sekelompok “wakil” yang terpisah dipilih dari seluruh rakyat, yang membebaskan sisanya dari beban pilihan. Namun menjadi wakil seperti itu cukup sulit, dan orang yang menjadi wakil belum tentu jujur ​​dan terhormat, seperti yang terlihat di mata para pemilih.

Untuk mengatasi permasalahan kedua sistem tersebut, Brian Ford mengajukan konsep tersebut demokrasi yang cair. Dalam sistem seperti itu, setiap orang bebas memilih peran sebagai pengguna biasa atau delegasi, cukup dengan menyatakan keinginannya. Siapa pun dapat memilih secara independen atau memberikan suara kepada delegasi pada satu atau lebih isu. Seorang delegasi juga dapat memberikan suaranya. Selain itu, jika delegasi tidak lagi sesuai dengan pemilih, pemungutan suara dapat ditarik kapan saja.

Contoh penggunaan demokrasi cair dapat ditemukan dalam politik, dan kami ingin menerapkan ide serupa untuk penggunaan sehari-hari di semua kelompok masyarakat. Pada hackathon DevDays berikutnya, kami memutuskan untuk menulis bot Telegram untuk memberikan suara sesuai dengan prinsip demokrasi cair. Pada saat yang sama, saya ingin menghindari masalah umum dengan bot tersebut - menyumbat obrolan umum dengan pesan dari bot. Solusinya adalah menghadirkan fungsionalitas sebanyak mungkin ke dalam percakapan pribadi.

Hackathon DevDays'19 (bagian 1): buku harian dengan rekomendasi, generator rute jalan kaki, dan demokrasi yang cairUntuk membuat bot ini kami menggunakan API dari Telegram. Basis data PostgreSQL dipilih untuk menyimpan riwayat pemungutan suara dan delegasi. Untuk berkomunikasi dengan bot, server Flask telah diinstal. Kami memilih teknologi ini karena... kami sudah memiliki pengalaman berinteraksi dengan mereka selama masa studi master kami. Pengerjaan tiga komponen proyek—database, server, dan bot—berhasil didistribusikan di antara anggota tim.

Tentu saja, tiga hari adalah waktu yang singkat, jadi selama hackathon kami mengimplementasikan ide tersebut ke tingkat prototipe. Hasilnya, kami membuat bot yang menulis ke obrolan umum hanya informasi tentang pembukaan pemungutan suara dan hasil anonimnya. Kemampuan untuk memilih dan membuat jajak pendapat diterapkan melalui korespondensi pribadi dengan bot. Untuk memilih, masukkan perintah yang menampilkan daftar masalah yang memerlukan perhatian langsung. Dalam korespondensi pribadi, Anda dapat melihat daftar delegasi dan suara mereka sebelumnya, serta memberikan suara Anda pada salah satu topik.

Video dengan contoh pekerjaan.

Sangat menarik untuk mengerjakan proyek ini, kami tinggal di universitas sampai tengah malam, menurut kami ini adalah cara yang bagus untuk istirahat dari studi, meskipun sangat melelahkan. Merupakan pengalaman yang menyenangkan bekerja dalam tim yang erat.

PS. Pendaftaran program magister untuk tahun ajaran berikutnya sudah dilakukan terbuka. Bergabung sekarang!

Sumber: www.habr.com

Tambah komentar