Hackathon DevDays'19 (bölüm 1): öneriler içeren bir günlük, yürüyüş rotası oluşturucu ve sıvı demokrasi

Son zamanlarda söyledi JetBrains ve ITMO Üniversitesi'nin “Yazılım Geliştirme / Yazılım Mühendisliği” kurumsal yüksek lisans programı hakkında. İlgilenen herkesi 29 Nisan Pazartesi günü halka açık bir güne davet ediyoruz. Yüksek lisans programımızın avantajlarını, öğrencilere ne gibi bonuslar sunduğumuz ve karşılığında ne talep ettiğimizi sizlere anlatacağız. Ayrıca misafirlerimizin sorularını da mutlaka yanıtlayacağız.

Hackathon DevDays'19 (bölüm 1): öneriler içeren bir günlük, yürüyüş rotası oluşturucu ve sıvı demokrasiAçık gün, yüksek lisans öğrencilerimizin eğitim gördüğü Times İş Merkezi'ndeki JetBrains ofisinde gerçekleştirilecektir. 17:00'da başlıyor. Web sitesinden tüm detayları öğrenebilir ve etkinliğe kayıt olabilirsiniz. mse.itmo.ru. Gelin ve pişman olmayacaksınız!

Programın ana bileşenlerinden biri pratiktir. Öğrencilerde pek çok şey var: haftalık ödevler, dönem projeleri ve hackathonlar. Mezunlar, öğrenimleri sırasında modern geliştirme metodolojileri ve teknolojilerine tam olarak dalmaları sayesinde, büyük BT şirketlerinin iş süreçlerine hızla entegre olurlar.

Bu yazımızda altı ayda bir gerçekleşen DevDays hackathon'larından daha detaylı bahsetmek istiyoruz. Kurallar basit: 3-4 kişilik ekipler toplanır ve üç gün boyunca öğrenciler kendi fikirlerini hayata geçirirler. Bundan ne çıkabilir? Bu dönemin hackathon projeleriyle ilgili hikayelerin ilk bölümünü öğrencilerin kendilerinden okuyun :)

Film önerileri içeren günlük

Hackathon DevDays'19 (bölüm 1): öneriler içeren bir günlük, yürüyüş rotası oluşturucu ve sıvı demokrasi

Fikir yazarı
Ivan Ilchuk
Sıralanmak
Ivan Ilchuk – film konusu ayrıştırma, sunucu
Vladislav Korablinov - bir günlük girişinin yakınlığını ve bir filmin olay örgüsünü karşılaştırmak için modellerin geliştirilmesi
Dmitry Valchuk – kullanıcı arayüzü
Nikita Vinokurov – kullanıcı arayüzü, tasarım

Projemizin amacı, içindeki girdilere göre kullanıcıya film öneren bir günlük olan bir masaüstü uygulaması yazmaktı.

Bu fikir aklıma üniversiteye giderken sorunlarımı düşünürken geldi. "Bir insanın karşılaştığı sorun ne olursa olsun, klasik bir yazar onun hakkında zaten yazmıştır" diye düşündüm. "Ve biri bunu yazdığına göre bu, birisinin onu zaten filme aldığı anlamına gelir." Böylece aynı zihinsel azabı çeken bir kişi hakkında film izleme arzusu doğal olarak ortaya çıktı.

Açıkçası, çok çeşitli ayrı günlükler ve ayrı tavsiye hizmetleri vardır (ancak genellikle tavsiyeler kişinin daha önce beğendiği şeylere dayanmaktadır). Prensip olarak bu projenin, bir filmi kilit noktalara göre aramakla ortak bir yanı var, ancak yine de uygulamamız her şeyden önce bir günlük işlevselliği sağlıyor.

Hackathon DevDays'19 (bölüm 1): öneriler içeren bir günlük, yürüyüş rotası oluşturucu ve sıvı demokrasiBunu nasıl uyguladık? Sihirli düğmeye bastığınızda günlük, Vikipedi'den alınan açıklamaya göre filmin seçildiği sunucuya bir giriş gönderir. Ön ucumuz Electron'da yapıldı (web sitesini değil onu kullanıyoruz, çünkü başlangıçta kullanıcı verilerini sunucuda değil yerel olarak bilgisayarda depolamaya karar verdik) ve sunucu ve öneri sisteminin kendisi Python'da yapıldı: TF'ler günlük giriş vektörüne yakınlık açısından karşılaştırılan -IDF vektörlerinin açıklamalarından elde edilmiştir.

Bir ekip üyesi yalnızca model üzerinde çalışırken, diğeri tamamen ön uçta çalıştı (başlangıçta üçüncü bir üyeyle birlikte, o da daha sonra teste geçti). Vikipedi'den ve sunucudan film olay örgüsünü ayrıştırmakla meşguldüm.

Modelin başlangıçta çok fazla RAM gerektirmesinden başlayıp, sunucuya veri aktarmanın zorluğuna kadar birçok sorunun üstesinden gelerek sonuca adım adım yaklaştık.

Artık akşam için bir film bulmak için fazla çaba harcamanıza gerek yok: Üç günlük çalışmamızın sonucu, kullanıcının https üzerinden eriştiği ve yanıt olarak 5 filmden oluşan bir seçki alan bir masaüstü uygulaması ve bir sunucudur. kısa bir açıklama ve poster.

Projeyle ilgili izlenimlerim çok olumlu: Çalışma sabahın erken saatlerinden gece geç saatlere kadar büyüleyiciydi ve ortaya çıkan uygulama, üniversitedeki ödevlerle veya bir filmle ilgili bir günlük girişi için periyodik olarak "Uykusuz Gece" tarzında son derece komik sonuçlar üretiyor. Bölümdeki ilk günü anlatan bir hikaye için okulun ilk günü hakkında.

İlgili bağlantılar, yükleyiciler vb. bulunabilir burada.

Rota oluşturucu

Hackathon DevDays'19 (bölüm 1): öneriler içeren bir günlük, yürüyüş rotası oluşturucu ve sıvı demokrasiFikir yazarı
Artemyeva Irina
Sıralanmak
Artemyeva Irina – takım lideri, ana döngü
Gordeeva Lyudmila – müzik
Platonov Vladislav – rotalar

Şehirde dolaşmayı gerçekten seviyorum: binalara, insanlara bakmak, tarih hakkında düşünmek. Ancak ikamet yerimi değiştirdiğimde bile er ya da geç rota seçme sorunuyla karşı karşıya kalıyorum: Aklıma gelenlerin hepsini tamamladım. Rota oluşturmayı otomatikleştirme fikri şu şekilde ortaya çıktı: rotanın başlangıç ​​noktasını ve uzunluğunu belirtirsiniz ve program size bir seçenek sunar. Yürüyüşler uzun olabilir, bu nedenle fikrin mantıksal gelişimi, bir şeyler atıştırıp dinlenebileceğiniz bir "durma" için ara noktaları belirtme yeteneğinin eklenmesi gibi görünüyor. Bir diğer gelişme dalı ise müzikti. Müziğe yürümek her zaman daha eğlencelidir, bu nedenle oluşturulan rotaya göre bir çalma listesi seçebilme özelliğinin eklenmesi harika olurdu.

Mevcut uygulamalar arasında bu tür çözümler bulmak mümkün değildi. En yakın analoglar herhangi bir rota planlayıcıdır: Google Haritalar, 2GIS, vb.

Telefonunuzda böyle bir uygulamanın olması en uygunudur, bu nedenle Telegram'ı kullanmak iyi bir seçenekti. Haritaları görüntülemenizi ve müzik çalmanızı sağlar ve tüm bunları bir bot yazarak kontrol edebilirsiniz. Haritalarla ilgili ana çalışma Google Harita API'sı kullanılarak yapıldı. Python her iki teknolojiyi birleştirmeyi kolaylaştırır.

Ekipte üç kişi vardı, bu nedenle görev, birbiriyle örtüşmeyen iki alt göreve (haritalarla çalışmak ve müzikle çalışmak) bölündü, böylece adamlar bağımsız çalışabildiler ve ben de sonuçları birleştirmeyi üstlendim.

Hackathon DevDays'19 (bölüm 1): öneriler içeren bir günlük, yürüyüş rotası oluşturucu ve sıvı demokrasiHiçbirimiz daha önce Google Harita API'sı veya yazılı Telegram botları ile çalışmamıştık, dolayısıyla asıl sorun, projeyi uygulamak için ayrılan zamanın miktarıydı: Bir şeyi anlamak, iyi bildiğiniz bir şeyi yapmaktan her zaman daha fazla zaman alır. Telegram bot API'sini seçmek de zordu: Engelleme nedeniyle hepsi çalışmıyor ve her şeyi ayarlamak için çabalamak zorunda kaldım.

Rota oluşturma sorununun nasıl çözüldüğünü ayrıca belirtmekte fayda var. İki konum arasında rota oluşturmak kolaydır ancak yalnızca rotanın uzunluğu biliniyorsa kullanıcıya ne sunabilirsiniz? Kullanıcının 10 kilometre yürümek istemesine izin verin. Rastgele bir yönde, düz bir çizgide mesafesi 10 kilometre olan bir nokta seçilir ve ardından bu noktaya gerçek yollar boyunca bir rota inşa edilir. Büyük ihtimalle düz olmayacak o yüzden belirtilen 10 kilometreye kısaltacağız. Bu tür rotalar için pek çok seçenek var; gerçek bir rota oluşturucumuz var!

Başlangıçta, yürüyüş için en keyifli rotayı elde etmek ve aynı zamanda bu alanlara uygun müzik üretmek için haritayı yeşil alanlara karşılık gelen alanlara bölmek istedim: setler, avlular, sokaklar. Ancak bunu Google Harita API'sini kullanarak yapmanın zor olduğu ortaya çıktı (bu sorunu çözecek zamanımız yoktu). Bununla birlikte, rotanın inşasını belirli konum türleri (mağaza, park, kütüphane) aracılığıyla uygulamak mümkündü: rota belirtilen tüm yerlerin etrafından geçiyorsa ancak istenen mesafe henüz kat edilmemişse, belirli bir mesafeye kadar tamamlanır. rastgele bir yönde kullanıcı tarafından belirlenen mesafe. Google Harita API'sı ayrıca tahmini seyahat süresini hesaplamanıza da olanak tanır; bu da tüm yürüyüş için tam olarak bir oynatma listesi seçmenize yardımcı olur.

Bunun bir sonucu olarak, bir nesil yaratmayı başardı başlangıç ​​noktasına, mesafeye ve ara noktalara göre rotalar; Müziği rotanın bölümlerine göre sınıflandırmak için her şey hazırlandı, ancak zaman yetersizliğinden dolayı çalma listesi seçme seçeneğinin yalnızca ek bir kullanıcı arayüzü dalı olarak bırakılmasına karar verildi. Böylece kullanıcı dinleyeceği müziği bağımsız olarak seçebildi.

Müzikle çalışmanın asıl sorunu, kullanıcının herhangi bir hizmette hesap açmasına gerek kalmadan mp3 dosyalarını nereden alacağını bilememekti. Kullanıcıdan müzik talep edilmesine karar verildi (UserMusic modu). Bu yeni bir sorun yaratıyor: Herkesin parça indirme yeteneği yok. Çözümlerden biri, kullanıcılardan gelen müzikleri içeren bir depo oluşturmaktır (BotMusic modu) - hizmetlerden bağımsız olarak buradan müzik oluşturabilirsiniz.

Mükemmel olmasa da görevi tamamladık: sonunda kullanmak istediğim bir uygulama elde ettik. Genel olarak bu çok hoş: Üç gün önce sadece bir fikriniz vardı ve onu tam olarak nasıl uygulayacağınıza dair tek bir düşünceniz bile yoktu, ama şimdi işe yarayan bir çözüm var. Bunlar benim için çok önemli üç gündü, artık uygulayacak yeterli bilgiye sahip olmadığım bir şey bulmaktan korkmuyorum, ekip lideri olmak inanılmaz derecede ilginçti ve ekibime katılan harika adamları tanıdım. daha iyi!

Sıvı Demokrasi

Hackathon DevDays'19 (bölüm 1): öneriler içeren bir günlük, yürüyüş rotası oluşturucu ve sıvı demokrasi

Fikir yazarı
Stanislav Sychev
Sıralanmak
Stanislav Sychev – ekip lideri, veritabanı
Nikolay Izyumov – bot arayüzü
Anton Ryabushev – arka uç

Farklı gruplar içinde genellikle bir karar vermeye veya oylamaya ihtiyaç duyulur. Genellikle böyle durumlarda başvuruyorlar doğrudan demokrasiAncak grup büyüdüğünde sorunlar ortaya çıkabilir. Örneğin bir gruptaki bir kişi sorulara sıklıkla cevap vermek istemeyebilir veya belirli konularla ilgili sorulara cevap vermek istemeyebilir. Büyük gruplar halinde, başvurdukları sorunlardan kaçınmak için temsili demokrasiGeri kalanını seçim yükünden kurtaran, tüm insanlar arasından ayrı bir "milletvekili" grubu seçildiğinde. Ancak böyle bir milletvekili olmak oldukça zordur ve milletvekili olan kişi, seçmenlere göründüğü gibi mutlaka dürüst ve saygın olmayacaktır.

Her iki sistemin sorunlarını çözmek için Brian Ford bu kavramı önerdi. sıvı demokrasi. Böyle bir sistemde herkes, sadece arzusunu ifade ederek normal kullanıcı veya temsilci rolünü seçmekte özgürdür. Herkes bağımsız olarak oy kullanabilir veya bir veya daha fazla konuda bir delegeye oy verebilir. Bir delege de oyunu kullanabilir. Ayrıca delegenin artık seçmene uygun olmaması durumunda oylama her zaman geri çekilebilir.

Sıvı demokrasinin kullanım örnekleri siyasette de görülüyor ve biz de benzer bir fikri her türden insan grubunda günlük kullanım için uygulamak istedik. Bir sonraki DevDays hackathon'unda sıvı demokrasi ilkelerine göre oy vermek için bir Telegram botu yazmaya karar verdik. Aynı zamanda, bu tür botlarda sık görülen bir sorundan da kaçınmak istedim: genel sohbetin bottan gelen mesajlarla tıkanması. Çözüm, kişisel bir konuşmaya mümkün olduğunca fazla işlevsellik kazandırmaktır.

Hackathon DevDays'19 (bölüm 1): öneriler içeren bir günlük, yürüyüş rotası oluşturucu ve sıvı demokrasiBu botu oluşturmak için kullandık Telegram'dan API. Oylama ve delegasyon geçmişini depolamak için bir PostgreSQL veritabanı seçildi. Botla iletişim kurmak için bir Flask sunucusu kuruldu. Bu teknolojileri seçtik çünkü... yüksek lisans eğitimi sırasında zaten onlarla etkileşimde bulunma deneyimimiz vardı. Projenin üç bileşeni (veritabanı, sunucu ve bot) üzerindeki çalışmalar ekip üyeleri arasında başarıyla dağıtıldı.

Elbette üç gün kısa bir süre, bu yüzden hackathon sırasında fikri prototip seviyesine kadar uyguladık. Sonuç olarak, genel sohbete yalnızca oylamanın açılması ve anonim sonuçları hakkında bilgi yazan bir bot oluşturduk. Oy verme ve anket oluşturma yeteneği, botla kişisel yazışmalar yoluyla uygulanır. Oy vermek için doğrudan ilgilenilmesi gereken sorunların listesini görüntüleyen bir komut girin. Kişisel yazışmalarda delegelerin listesini ve önceki oylarını görebilir, ayrıca konulardan biri için oyunuzu da verebilirsiniz.

Bir çalışma örneği içeren video.

Proje üzerinde çalışmak ilginçti, gece yarısına kadar üniversitede kaldık, çok yorucu olmasına rağmen bunun ders çalışmaya ara vermek için harika bir yol olduğunu düşünüyoruz. Birbirine sıkı sıkıya bağlı bir ekipte çalışmak hoş bir deneyimdi.

PS. Gelecek akademik yıl için yüksek lisans programlarına kayıtlar başladı açık. Şimdi katıl!

Kaynak: www.habr.com

Yorum ekle