Baru-baru ini kami
Hari 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
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
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.
Bagaimanakah 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
Penjana laluan
Pengarang 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.
Tiada 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,
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
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
Untuk menyelesaikan masalah kedua-dua sistem, Brian Ford mencadangkan konsep tersebut
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.
Untuk mencipta bot ini kami gunakan
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.
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
Sumber: www.habr.com