Hackathon DevDays'19(第 1 部分):帶有建議的日記、步行路線生成器和流動民主

最近我們 告訴 關於 JetBrains 和 ITMO 大學的企業碩士專案「軟體開發/軟體工程」。 我們邀請所有有興趣的人參加 29 月 XNUMX 日星期一的開放日。 我們會告訴您我們碩士課程的優勢,我們為學生提供哪些獎金以及我們要求的回報。 此外,我們一定會回答客人的問題。

Hackathon DevDays'19(第 1 部分):帶有建議的日記、步行路線生成器和流動民主開放日將在時代商業中心的 JetBrains 辦公室舉行,這裡也是我們碩士生學習的地方。 17:00 開始。 您可以在網站上了解所有詳細資訊並註冊參加活動 mse.itmo.ru。 來吧,你不會後悔的!

該計劃的主要組成部分之一是實踐。 學生有很多事情:每週作業、學期專案和黑客馬拉松。 由於在學習期間完全沉浸在現代開發方法和技術中,畢業生可以快速融入大型IT公司的工作流程。

在這篇文章中,我們想更詳細地討論每六個月舉行一次的 DevDays 黑客馬拉松。 規則很簡單:3-4 人組成的團隊聚集在一起,為期三天,學生將自己的想法變成現實。 這可能會發生什麼? 閱讀學生們自己講述的關於本學期黑客馬拉松專案的故事的第一部分:)

附有電影推薦的日記

Hackathon DevDays'19(第 1 部分):帶有建議的日記、步行路線生成器和流動民主

創意作者
伊凡·伊爾楚克
團隊組成
Ivan Ilchuk – 電影情節解析、伺服器
Vladislav Korablinov – 開發用於比較日記條目和電影情節的接近度的模型
德米特里·瓦爾丘克 – UI
Nikita Vinokurov – 使用者介面、設計

我們專案的目標是編寫一個桌面應用程式 - 一個日記,可以根據其中的條目向用戶推薦電影。

這個想法是在我上大學的路上思考我的問題時產生的。 「無論一個人面臨什麼問題,一些經典作家已經寫過它,」我想。 “既然有人寫了它,就意味著有人已經拍攝了它。” 於是,想看一部關於同樣精神折磨的人的電影的願望就自然而然地出現了。

顯然,有各種各樣的單獨的日記和單獨的推薦服務(但通常建議是基於人們以前喜歡的內容)。 原則上,這個項目與按關鍵點搜尋電影有一些共同點,但首先,我們的應用程式提供了日記的功能。

Hackathon DevDays'19(第 1 部分):帶有建議的日記、步行路線生成器和流動民主我們是如何實現這一點的? 當您按下魔法按鈕時,日記會向伺服器發送條目,伺服器上會根據維基百科的描述選擇電影。 我們的前端是用 Electron 製作的(我們使用它,而不是網站,因為我們最初決定不在伺服器上儲存用戶數據,而是在電腦本地儲存),伺服器和推薦系統本身是用 Python 製作的:TF 是從描述中獲得-IDF 向量,與日記條目向量進行比較。

一名團隊成員僅負責模型工作,另一名成員則完全負責前端工作(最初與第三名成員一起工作,後來轉為測試)。 我正在從維基百科和伺服器上解析電影情節。

我們一步一步地接近結果,克服了許多問題,首先是模型最初需要大量 RAM,最後是難以將資料傳輸到伺服器。

現在,要找到晚上看的電影,您不需要付出太多努力:我們三天的工作成果是一個桌面應用程式和一個伺服器,用戶透過 https 存取該應用程序,並收到 5 部精選電影的回應簡短的描述和海報。

我對這個專案的印象非常積極:這項工作從清晨到深夜都令人著迷,最終的應用程式定期產生非常有趣的結果,就像「不眠之夜」的風格,用於關於大學作業的日記或電影關於開學第一天關於在系上第一天的故事。

可以找到相關連結、安裝程式等 這裡.

路線產生器

Hackathon DevDays'19(第 1 部分):帶有建議的日記、步行路線生成器和流動民主創意作者
阿爾捷米耶娃·伊琳娜
團隊組成
Artemyeva Irina – 團隊負責人,主循環
戈蒂耶娃·柳德米拉 – 音樂
Platonov Vladislav – 路線

我真的很喜歡在城市裡散步:看看建築、人,思考歷史。 但是,即使換了居住地,我遲早也會面臨選擇路線的問題:我能想到的都已經完成了。 這就是自動產生路線的想法的產生方式:您指定路線的起點和長度,程式會為您提供一個選項。 步行可能很長,所以這個想法的邏輯發展似乎是增加指示「停止」中間點的能力,在那裡你可以吃點零食和休息。 發展的另一個分支是音樂。 邊聽音樂邊散步總是更有趣,因此如果能夠添加根據生成的路線選擇播放清單的功能,那就太好了。

在現有的應用程式中不可能找到這樣的解決方案。 最接近的類似物是任何路線規劃器:Google 地圖、2GIS 等。

在手機上安裝這樣的應用程式是最方便的,因此使用 Telegram 是不錯的選擇。 它允許您顯示地圖和播放音樂,並且您可以透過編寫機器人來控制這一切。 地圖的主要工作是使用 Google Map API 完成的。 Python 可以輕鬆地結合這兩種技術。

團隊中有三個人,因此任務被分成兩個不重疊的子任務(處理地圖和處理音樂),以便這些人可以獨立工作,而我則負責將結果結合起來。

Hackathon DevDays'19(第 1 部分):帶有建議的日記、步行路線生成器和流動民主我們中沒有人曾經使用過 Google Map API 或編寫過 Telegram 機器人,因此主要問題是分配給實作專案的時間:理解某件事總是比做你熟悉的事情花費更多的時間。 選擇 Telegram 機器人 API 也很困難:由於阻塞,並非所有 API 都能運作,我必須費心去設定所有內容。

值得單獨提及的是如何解決產生路由的問題。 在兩個位置之間建立路線很容易,但是如果只知道路線的長度,您能為使用者提供什麼? 讓使用者想要步行10公里。 在任意方向上選擇一個點,直線距離為10公里,然後沿著真實道路建立一條到達該點的路線。 很可能不會是直路,所以我們會將其縮短到指定的10公里。 這類路線有很多選擇 - 我們有一個真正的路線產生器!

最初,我想將地圖分割成與綠地相對應的區域:堤防、庭院、街道,以獲得最愉快的散步路線,並根據這些區域生成音樂。 但使用 Google Map API 來做到這一點結果很困難(我們沒有時間解決這個問題)。 然而,可以透過特定類型的地點(商店、公園、圖書館)來建構一條路線:如果路線繞過所有指定的地點,但尚未行駛所需的距離,則完成到使用者指定的隨機方向距離。 Google Map API 還允許您計算預計的旅行時間,這可以幫助您為整個步行準確選擇播放清單。

其結果是, 成功造就了一代人 按起點、距離和中間點劃分的路線; 一切都準備好根據路線的路段對音樂進行分類,但由於時間不夠,決定保留選擇播放清單的選項,僅作為附加的 UI 分支。 因此,使用者能夠獨立選擇要聽的音樂。

處理音樂的主要問題是不知道從哪裡獲取 mp3 文件,而不要求用戶擁有任何服務的帳戶。 決定向使用者請求音樂(UserMusic 模式)。 這就產生了一個新問題:並不是每個人都有能力下載曲目。 一種解決方案是建立一個包含使用者音樂的儲存庫(BotMusic 模式) - 無論服務如何,您都可以從中產生音樂。

儘管並不完美,但我們完成了任務:我們最終得到了一個我想使用的應用程式。 總的來說,這非常酷:三天前您只有一個想法,而沒有想過如何具體實施它,但現在有了一個可行的解決方案。 這對我來說非常重要的三天。我不再害怕想出一些我沒有足夠知識來實施的東西,作為團隊領導非常有趣,而且我認識了加入我團隊的優秀人員更好的!

液體民主

Hackathon DevDays'19(第 1 部分):帶有建議的日記、步行路線生成器和流動民主

創意作者
斯坦尼斯拉夫·賽切夫
團隊組成
Stanislav Sychev – 資料庫團隊負責人
Nikolay Izyumov – 機器人介面
Anton Ryabushev – 後端

在不同的群體內部,常常需要做出決定或投票。 通常在這種情況下他們會求助於 直接民主然而,當群體變大時,就會出現問題。 例如,小組中的某個人可能不想經常回答問題或回答有關某些主題的問題。 在大群體中,為了避免問題,他們會採取 代議制民主,當從全體人民中選出一組單獨的「代表」時,他們將其餘的人從選擇的負擔中解放出來。 但成為這樣的代表是相當困難的,而且成為代表的人不一定像選民眼中那樣誠實、受人尊敬。

為了解決這兩個系統的問題,布萊恩福特提出了這個概念 流動民主。 在這樣的系統中,每個人都可以自由選擇普通使用者或代表的角色,只需表達自己的願望即可。 任何人都可以獨立投票或就一個或多個問題向代表投票。 代表也可以投票。 此外,如果代表不再適合選民,投票可以隨時撤回。

在政治中可以找到使用流動民主的例子,我們希望在各種人群的日常使用中實現類似的想法。 在下一次 DevDays 黑客馬拉鬆上,我們決定編寫一個 Telegram 機器人,用於根據流動民主的原則進行投票。 同時,我想避免此類機器人的常見問題 - 來自機器人的訊息阻塞一般聊天。 解決方案是將盡可能多的功能帶入個人對話中。

Hackathon DevDays'19(第 1 部分):帶有建議的日記、步行路線生成器和流動民主為了創建這個機器人,我們使用了 來自 Telegram 的 API。 選擇 PostgreSQL 資料庫來儲存投票和授權的歷史記錄。 為了與機器人進行通信,安裝了 Flask 伺服器。 我們選擇這些技術是因為… 我們在碩士學習期間已經有了與他們互動的經驗。 該專案的三個組成部分(資料庫、伺服器和機器人)的工作已成功分配給團隊成員。

當然,三天的時間很短,所以在黑客馬拉松期間我們將這個想法實現到了原型級別。 因此,我們創建了一個機器人,僅將有關投票開始及其匿名結果的資訊寫入一般聊天。 投票和創建民意調查的能力是透過與機器人的個人通信來實現的。 若要投票,請輸入顯示需要直接關注的問題清單的命令。 在個人信件中,您可以查看代表名單及其先前的投票,也可以對其中一個主題進行投票。

帶有工作示例的視頻.

做這個計畫很有趣,我們在大學一直待到半夜。我們認為這是學習之餘休息的好方法,儘管很累。 在一個緊密的團隊中工作是一次愉快的經驗。

附言。 下一學年碩士課程招生已開始 是開放的... Присоединяйтесь!加入我們!

資料來源:www.habr.com

添加評論