Mail.ru Group 2019 技術問題

Mail.ru Group 2019 技術問題

XNUMX月底,我們Technopark(鮑曼MSTU)、Technotrack(MIPT)、Technosphere(羅蒙諾索夫莫斯科國立大學)和Technopolis(彼得大帝聖彼得堡理工大學)的畢業生完成了他們的文憑課程的答辯。 三個月的工作時間被分配給了這些人,他們將兩年學習中獲得的知識和技能投入到他們的創意中。

總共有13個國防項目,解決了不同產業的各種問題。 例如:

  • 具有加密檔案加密功能的雲端儲存;
  • 創建互動影片的平台(具有不同的結局);
  • 用於透過網路下真正的西洋棋的智慧棋盤;
  • 醫學文章智能檢索架構;
  • 用於教導小學生演算法化基礎知識的軟體。

以及來自業務部門的項目:

  • TamTam Messenger 的 CRM 系統;
  • 用於在 Odnoklassniki 地圖上搜尋專題照片的網路服務;
  • MAPS.ME 的地址地理編碼服務。

今天我們將更詳細地向您介紹我們畢業生的五個項目。

醫學文章智能檢索

Mail.ru Group 2019 技術問題

科學領域有很多領域,每個領域都進行研究,並在各種期刊上發表大量文章。 這些領域包括資訊科技、物理、數學、生物學、醫學等等。

作者 該項目 決定專注於醫療領域。 幾乎所有有關醫學主題的文章都收集在 PubMed 入口網站上。 該門戶提供自己的搜尋。 然而,它的能力非常有限。 因此,他們改進了搜尋系統,增加了對長查詢的支援以及使用主題建模優化查詢的能力。

Mail.ru Group 2019 技術問題
SERP 包含已定義主題的文件排名列表,並且使用機率主題建模來突出顯示與這些主題相關的單字和術語。 使用者可以點擊突出顯示的術語來縮小搜尋查詢範圍。

Mail.ru Group 2019 技術問題
為了快速搜尋龐大的 PubMed 資料庫,作者編寫了自己的搜尋引擎,可以輕鬆整合到任何基礎設施中。

搜尋分三個階段進行:

  1. 使用反向索引選擇候選文件。
  2. 使用 BM25F 演算法對候選者進行排名,該演算法在搜尋過程中考慮了文件中的各個欄位。 因此,標題中的單字比摘要中的單字更有分量。
  3. 快取系統也用於加速頻繁請求的處理。

Mail.ru Group 2019 技術問題

微服務架構:

Mail.ru Group 2019 技術問題
基本上,結構化文字資料在服務之間傳輸。 為了實現高傳輸速度,使用了 GRPC——一種用於連接微服務架構中的模組的框架。 資料序列化也使用 Protobuf 訊息交換格式。

系統包括哪些組件:

  • 用於在 Node.js 上處理傳入使用者請求的伺服器。
  • 使用 nginx 代理伺服器負載平衡請求。
  • Flask 伺服器實作 REST API 並接收 Node.js 轉送的請求。
  • 所有原始資料和處理後的資料以及查詢資訊都儲存在 MongoDB 中。
  • 所有對文檔主題化相關結果的請求都會傳送至 RabbitMQ。

搜尋結果範例:

Mail.ru Group 2019 技術問題

我們下一步計劃做什麼:

  • 編譯給定主題的評論時的建議(識別文件中的重要主題並蒐索文件子集)。
  • 搜尋 PDF 文件。
  • 語意文本分割。
  • 追蹤一段時間內的主題和趨勢。

專案團隊:Fedor Petryaykin、Vladislav Dorozhinsky、Maxim Nakhodnov、Maxim Filin

區塊日誌

Mail.ru Group 2019 技術問題

如今,在教授程式設計和電腦科學時,小學年齡層(5-7 年級)的孩子在掌握這些材料方面存在問題。 此外,如果學生想在家中完成作業,他們必須在電腦上安裝額外的軟體。 教師必須檢查大量類似的問題解決方案,在遠距學習的情況下,他們還必須制定接收學生作業的方法。

Block Log專案的作者得出的結論是:在教導小學生演算法化基礎知識時,重點不應該是記憶程式語言指令,而是建構演算法圖。 這將使學生能夠花費時間和精力來設計演算法,而不是輸入繁瑣的語法結構。

平台 區塊日誌 允許:

  1. 建立和編輯流程圖。
  2. 運行已建立的流程圖並查看其工作結果(輸出資料)。
  3. 儲存並載入已建立的項目。
  4. 繪製光柵圖像(根據孩子創建的演算法生成圖像)。
  5. 接收有關所創建演算法的複雜性的資訊(基於演算法中執行的操作數)。

預計角色分為教師和學生。 任何使用者都會獲得學生身份;要獲得教師身份,您必須聯絡系統管理員。 教師不僅可以輸入問題的描述和條件,還可以建立自動化測試,當學生向系統提交問題的解決方案時,測試將自動啟動。

瀏覽器阻止日誌編輯器:

Mail.ru Group 2019 技術問題

解決問題後,學生可以下載解決方案並查看結果:

Mail.ru Group 2019 技術問題

該平台由 Vue.js 中的前端應用程式和 Ruby on Rails 中的後端應用程式組成。 使用 PostgreSQL 作為資料庫。 為了簡化部署,所有系統元件都打包在 Docker 容器中,並使用 Docker Compose 進行組裝。 Block Log 的桌面版本是基於 Electron 框架。 Webpack 用於建立 JavaScript 程式碼。

專案團隊:Alexander Barulev、Maxim Kolotovkin、Kirill Kucherov。

TamTam Messenger 的 CRM 系統

Mail.ru Group 2019 技術問題

CRM是企業與TamTam使用者之間便利互動的工具。 已實現以下功能:

  • 機器人構造器,讓您無需程式設計技能即可創建機器人。 幾分鐘後,您就可以獲得一個完全工作的機器人,它不僅可以向用戶顯示一些信息,還可以收集數據,包括數據。 管理員稍後可以查看的文件。
  • RSS。 您可以輕鬆地將 RSS 連接到任何頻道。
  • 延遲發文。 允許您在預設時間發送和刪除訊息。

團隊也參與了Bot API的測試,創建了多個自寫的機器人,例如2019年曲棍球世界盃的機器人、我們服務中的註冊/授權的機器人以及CI/CD的機器人。

解決方案基礎設施:

  • 管理伺服器包含每個伺服器及其上的每個 Docker 容器的監控系統,以便快速方便地偵測問題並解決問題,查看各種指標和使用情況統計資料。 還有一個用於我們的應用程式的遠端配置管理的系統。
  • 登台伺服器包含我們應用程式的當前版本,可供開發團隊進行一般測試。
  • 開發人員只能透過 VPN 存取管理和臨時伺服器,而生產伺服器包含應用程式的發布版本。 它脫離了開發人員的控制,僅可供最終用戶使用。
  • CI/CD 系統是使用 Github 和 Travis 實現的,使用 TamTam 中的自訂機器人進行通知。

Mail.ru Group 2019 技術問題

應用程式架構是模組化解決方案。 應用程式、資料庫、設定管理器和監控在單獨的 Docker 容器中啟動,這可讓您從啟動環境中抽象化、變更或重新啟動單獨的容器。 建立網路拓撲和管理容器是使用 Docker Compose 完成的。

Mail.ru Group 2019 技術問題

專案團隊:Alexey Antufiev、Egor Gorbatov、Alexey Kotelevsky。

叉我

Mail.ru Group 2019 技術問題

ForkMe 專案是一個觀看互動影片的平台,您可以在其中建立自己的影片並將其展示給您的朋友。 既然有常規視頻,為什麼還需要互動視頻呢?

影片的非線性情節以及自己選擇延續的能力讓觀眾能夠參與其中,內容創作者將能夠展示獨特的故事,其情節將受到用戶的影響。 此外,內容創作者透過研究影片轉換統計數據,將能夠了解觀眾最感興趣的內容並使內容更具吸引力。

在開發該項目時,他們受到 Netflix 互動電影《潘達斯奈基》的啟發,該電影獲得了許多觀看次數和好評。 當MVP已經寫完的時候,有消息出現,Youtube正計劃推出互動系列平台,這再次印證了這個方向的受歡迎程度。

MVP 包括:互動式播放器、影片建構器、按內容和標籤搜尋、影片收藏、評論、觀看次數、評分、頻道和使用者個人資料。

Mail.ru Group 2019 技術問題

專案中使用的技術棧:

Mail.ru Group 2019 技術問題

專案計劃如何開發:

  • 收集有關視頻轉換的統計數據和資訊圖表;
  • 網站使用者的通知和個人訊息;
  • Android 和 iOS 版本。

在此之後我們計劃添加:

  • 從您的手機創建視訊故事;
  • 編輯下載的影片片段(例如修剪);
  • 在播放器中建立和啟動互動廣告。

專案團隊:Maxim Morev(全端開發人員,負責專案架構)和 Roman Maslov(全端開發人員,負責專案設計)。

在線機上

Mail.ru Group 2019 技術問題

Mail.ru Group 2019 技術問題

如今,家長非常注重孩子的智力發展,孩子對智力遊戲很感興趣。 因此,國際象棋再次流行起來。 儘管國際象棋總體上很受歡迎,但找到固定的比賽對手卻是個問題。 因此,許多人使用線上國際象棋服務,儘管許多玩家更喜歡「現場」玩真棋。 然而,在下棋時,一個人會投入大量腦力並感到疲勞,而坐在電腦或智慧型手機前的負面影響又加劇了這種疲勞。 結果,僅僅兩場比賽之後,大腦就變得超負荷。

所有這些因素促使作者產生了 On-Line-On-Board 專案的想法,該專案由三個部分組成:實體棋盤、桌面應用程式和 Web 服務。 棋盤是一個常規的棋盤,它可以識別棋子的位置,並藉助燈光指示指示對手的走法。 該板透過 USB 連接到 PC 並與桌面應用程式通訊。 在訓練模式(對於兒童),您可能的動作會被反白。

該應用程式接管了管理板的基本功能,這使您可以大大降低其成本,並將大多數功能的實現帶到軟體層級。 該應用程式與 Web 服務進行通信,其主要價值是動態更新。

使用該產品的主要場景:一個人玩該服務,另一個人在連接到該服務的實體板上玩。 即,服務承擔通訊功能。

專案團隊:Daniil Tuchin、Anton Dmitriev、Sasha Kuznetsov。

您可以閱讀有關我們教育計畫的更多信息 此鏈接。 並更頻繁地訪問該頻道 技術流,有關程式設計、開發和其他學科的新教育影片定期出現。

來源: www.habr.com

添加評論