Hackathon DevDays'19 (ตอนที่ 1): ไดอารี่พร้อมคำแนะนำ เครื่องกำเนิดเส้นทางเดิน และประชาธิปไตยเหลว

ล่าสุดเรา บอก เกี่ยวกับหลักสูตรปริญญาโทขององค์กรของ JetBrains และมหาวิทยาลัย ITMO “การพัฒนาซอฟต์แวร์ / วิศวกรรมซอฟต์แวร์” ขอเชิญชวนผู้สนใจร่วมงานเปิดวันจันทร์ที่ 29 เมษายนนี้ เราจะบอกคุณเกี่ยวกับข้อดีของหลักสูตรปริญญาโท โบนัสที่เราเสนอให้กับนักเรียน และสิ่งที่เราต้องการตอบแทน นอกจากนี้เราจะตอบคำถามจากแขกของเราอย่างแน่นอน

Hackathon DevDays'19 (ตอนที่ 1): ไดอารี่พร้อมคำแนะนำ เครื่องกำเนิดเส้นทางเดิน และประชาธิปไตยเหลววันเปิดงานจะจัดขึ้นที่สำนักงาน JetBrains ใน Times Business Center ซึ่งเป็นที่ที่นักศึกษาปริญญาโทของเราศึกษาอยู่ เริ่มเวลา 17 น. คุณสามารถค้นหารายละเอียดทั้งหมดและลงทะเบียนเข้าร่วมงานได้บนเว็บไซต์ mse.itmo.ru. มาแล้วคุณจะไม่เสียใจ!

องค์ประกอบหลักอย่างหนึ่งของโปรแกรมคือการฝึกฝน นักเรียนมีกิจกรรมมากมาย เช่น การบ้านรายสัปดาห์ โครงการภาคการศึกษา และงานแฮ็กกาธอน ด้วยการซึมซับวิธีวิทยาและเทคโนโลยีการพัฒนาสมัยใหม่อย่างสมบูรณ์ในระหว่างการศึกษา ผู้สำเร็จการศึกษาสามารถบูรณาการเข้ากับกระบวนการทำงานของบริษัทไอทีขนาดใหญ่ได้อย่างรวดเร็ว

ในโพสต์นี้ เราต้องการพูดคุยในรายละเอียดเพิ่มเติมเกี่ยวกับ DevDays hackathons ซึ่งจะจัดขึ้นทุกๆ หกเดือน กฎง่ายๆ: ทีมละ 3-4 คนมารวมตัวกันและเป็นเวลาสามวันให้นักเรียนนำแนวคิดของตนเองมาสู่ความเป็นจริง อะไรจะเกิดขึ้นจากสิ่งนี้? อ่านเรื่องราวส่วนแรกเกี่ยวกับโครงการแฮ็กกาธอนของภาคการศึกษานี้จากตัวนักศึกษาเอง :)

ไดอารี่พร้อมคำแนะนำภาพยนตร์

Hackathon DevDays'19 (ตอนที่ 1): ไดอารี่พร้อมคำแนะนำ เครื่องกำเนิดเส้นทางเดิน และประชาธิปไตยเหลว

ผู้เขียนความคิด
อีวาน อิลชุค
โครงสร้างคำสั่ง
Ivan Ilchuk – การแยกวิเคราะห์เนื้อเรื่องของภาพยนตร์ เซิร์ฟเวอร์
วลาดิสลาฟ โคราบลินอฟ – การพัฒนาแบบจำลองเพื่อเปรียบเทียบความใกล้เคียงของบันทึกประจำวันกับเนื้อเรื่องของภาพยนตร์
มิทรี วัลชุค – UI
นิกิตา วิโนคูรอฟ – UI, การออกแบบ

เป้าหมายของโครงการของเราคือการเขียนแอปพลิเคชันเดสก์ท็อป - ไดอารี่ที่จะแนะนำภาพยนตร์ให้กับผู้ใช้ตามรายการในนั้น

ความคิดนี้เกิดขึ้นกับฉันตอนที่ฉันกำลังเดินทางไปมหาวิทยาลัยและคิดถึงปัญหาของตัวเอง “ไม่ว่าคนๆ หนึ่งจะเผชิญกับปัญหาอะไรก็ตาม นักเขียนคลาสสิกบางคนก็เขียนเกี่ยวกับเรื่องนี้ไปแล้ว” ฉันคิดว่า “และตั้งแต่มีคนเขียนมัน ก็หมายความว่ามีคนถ่ายมันไปแล้ว” ดังนั้นความปรารถนาที่จะชมภาพยนตร์เกี่ยวกับบุคคลที่มีความทรมานทางจิตแบบเดียวกันจึงเกิดขึ้นตามธรรมชาติ

แน่นอนว่ามีไดอารี่และบริการแนะนำแยกต่างหากมากมาย (แต่โดยปกติแล้วคำแนะนำจะขึ้นอยู่กับสิ่งที่บุคคลนั้นเคยชอบ) โดยหลักการแล้ว โปรเจ็กต์นี้มีบางอย่างที่เหมือนกันกับการค้นหาภาพยนตร์ตามประเด็นสำคัญ แต่ก่อนอื่นเลย แอปพลิเคชันของเรามีฟังก์ชันการทำงานของไดอารี่

Hackathon DevDays'19 (ตอนที่ 1): ไดอารี่พร้อมคำแนะนำ เครื่องกำเนิดเส้นทางเดิน และประชาธิปไตยเหลวเราใช้สิ่งนี้อย่างไร? เมื่อคุณกดปุ่มวิเศษ ไดอารี่จะส่งรายการไปยังเซิร์ฟเวอร์ โดยที่ภาพยนตร์จะถูกเลือกตามคำอธิบายที่นำมาจากวิกิพีเดีย ส่วนหน้าของเราถูกสร้างขึ้นใน Electron (เราใช้ไม่ใช่เว็บไซต์ เนื่องจากในตอนแรกเราตัดสินใจที่จะจัดเก็บข้อมูลผู้ใช้ไม่ได้อยู่บนเซิร์ฟเวอร์ แต่อยู่ในเครื่องคอมพิวเตอร์) และเซิร์ฟเวอร์และระบบการแนะนำนั้นถูกสร้างขึ้นใน Python: TFs เป็น ได้มาจากคำอธิบาย -IDF เวกเตอร์ที่เปรียบเทียบความใกล้ชิดกับเวกเตอร์รายการไดอารี่

สมาชิกในทีมคนหนึ่งทำงานกับโมเดลนี้เท่านั้น ส่วนอีกคนหนึ่งทำงานบนส่วนหน้าทั้งหมด (เริ่มแรกร่วมกับสมาชิกคนที่สาม ซึ่งต่อมาเปลี่ยนมาทดสอบ) ฉันมีส่วนร่วมในการแยกวิเคราะห์โครงเรื่องภาพยนตร์จากวิกิพีเดียและเซิร์ฟเวอร์

เราเข้าใกล้ผลลัพธ์ทีละขั้นตอนโดยเอาชนะปัญหาหลายประการโดยเริ่มจากความจริงที่ว่าในตอนแรกโมเดลนั้นต้องการ RAM จำนวนมากซึ่งลงท้ายด้วยความยากลำบากในการถ่ายโอนข้อมูลไปยังเซิร์ฟเวอร์

ตอนนี้ หากต้องการหาภาพยนตร์สำหรับช่วงเย็น คุณไม่จำเป็นต้องออกแรงมากนัก ผลลัพธ์ของการทำงานสามวันของเราคือแอปพลิเคชันเดสก์ท็อปและเซิร์ฟเวอร์ ซึ่งผู้ใช้เข้าถึงผ่าน https ซึ่งได้รับการตอบรับจากภาพยนตร์ 5 เรื่องที่คัดสรรมาด้วย คำอธิบายสั้น ๆ และโปสเตอร์

ความประทับใจของฉันต่อโปรเจ็กต์นี้เป็นไปในทางบวกมาก งานนี้ดึงดูดใจตั้งแต่เช้าตรู่จนถึงดึกดื่น และแอปพลิเคชันที่เป็นผลออกมาก็ให้ผลลัพธ์ที่ตลกสุดๆ ในรูปแบบ "Sleepless Night" เป็นระยะๆ สำหรับบันทึกไดอารี่เกี่ยวกับการบ้านที่มหาวิทยาลัยหรือภาพยนตร์ เกี่ยวกับวันแรกของการเรียนสำหรับเรื่องราวเกี่ยวกับวันแรกที่ภาควิชา

ลิงค์ที่เกี่ยวข้อง โปรแกรมติดตั้ง ฯลฯ สามารถพบได้ ที่นี่.

เครื่องกำเนิดเส้นทาง

Hackathon DevDays'19 (ตอนที่ 1): ไดอารี่พร้อมคำแนะนำ เครื่องกำเนิดเส้นทางเดิน และประชาธิปไตยเหลวผู้เขียนความคิด
อาร์เตมีวา อิรินา
โครงสร้างคำสั่ง
Artemyeva Irina – หัวหน้าทีม, วงหลัก
กอร์เดวา ลุดมิลา – ดนตรี
พลาโตนอฟ วลาดิสลาฟ – เส้นทาง

ฉันชอบเดินไปรอบๆ เมืองมาก มองดูอาคาร ผู้คน คิดถึงประวัติศาสตร์ แต่ถึงแม้จะเปลี่ยนสถานที่อยู่อาศัยไม่ช้าก็เร็วฉันก็ต้องเผชิญกับปัญหาในการเลือกเส้นทาง: ฉันได้ทำทุกอย่างที่คิดได้สำเร็จแล้ว นี่คือที่มาของแนวคิดในการสร้างเส้นทางโดยอัตโนมัติ: คุณระบุจุดเริ่มต้นและความยาวของเส้นทาง จากนั้นโปรแกรมจะให้ตัวเลือกแก่คุณ การเดินอาจใช้เวลานาน ดังนั้นการพัฒนาแนวคิดเชิงตรรกะจึงดูเหมือนเป็นการเพิ่มความสามารถในการระบุจุดกึ่งกลางสำหรับการ "แวะพัก" ซึ่งคุณสามารถรับประทานอาหารว่างและพักผ่อนได้ การพัฒนาอีกสาขาหนึ่งคือดนตรี การเดินฟังเพลงเป็นเรื่องสนุกกว่าเสมอ ดังนั้นจึงเป็นการดีที่จะเพิ่มความสามารถในการเลือกเพลย์ลิสต์ตามเส้นทางที่สร้างขึ้น

ไม่สามารถค้นหาวิธีแก้ไขปัญหาดังกล่าวในแอปพลิเคชันที่มีอยู่ได้ อะนาล็อกที่ใกล้เคียงที่สุดคือผู้วางแผนเส้นทาง: Google Maps, 2GIS เป็นต้น

การมีแอปพลิเคชันดังกล่าวบนโทรศัพท์จะสะดวกที่สุด ดังนั้นการใช้ Telegram จึงเป็นตัวเลือกที่ดี ช่วยให้คุณสามารถแสดงแผนที่และเล่นเพลงได้ และคุณสามารถควบคุมทั้งหมดนี้ได้ด้วยการเขียนบอท งานหลักเกี่ยวกับแผนที่เสร็จสิ้นโดยใช้ Google Map API Python ทำให้การรวมเทคโนโลยีทั้งสองเข้าด้วยกันเป็นเรื่องง่าย

ในทีมมีสามคน ดังนั้นงานจึงแบ่งออกเป็นสองงานย่อยที่ไม่ทับซ้อนกัน (การทำงานกับแผนที่และการทำงานกับดนตรี) เพื่อให้คนเหล่านั้นสามารถทำงานได้อย่างอิสระ และฉันก็รวมเอาผลลัพธ์เข้าด้วยกัน

Hackathon DevDays'19 (ตอนที่ 1): ไดอารี่พร้อมคำแนะนำ เครื่องกำเนิดเส้นทางเดิน และประชาธิปไตยเหลวพวกเราไม่มีใครเคยทำงานกับ Google Map API หรือบอต Telegram ที่เป็นลายลักษณ์อักษร ดังนั้นปัญหาหลักคือระยะเวลาที่จัดสรรเพื่อดำเนินโครงการ: การทำความเข้าใจบางสิ่งบางอย่างต้องใช้เวลามากกว่าการทำสิ่งที่คุณรู้จักดีเสมอ นอกจากนี้ยังเป็นเรื่องยากที่จะเลือก Telegram bot API เนื่องจากมีการบล็อก จึงใช้งานไม่ได้ทั้งหมด และฉันต้องดิ้นรนเพื่อตั้งค่าทุกอย่าง

เป็นเรื่องที่ควรกล่าวถึงแยกกันว่าจะแก้ไขปัญหาการสร้างเส้นทางได้อย่างไร การสร้างเส้นทางระหว่างสองสถานที่เป็นเรื่องง่าย แต่คุณสามารถเสนออะไรให้ผู้ใช้ได้บ้าง หากทราบเพียงความยาวของเส้นทางเท่านั้น ให้ผู้ใช้ต้องการเดิน 10 กิโลเมตร มีการเลือกจุดในทิศทางที่กำหนดโดยระยะทางเป็นเส้นตรงคือ 10 กิโลเมตรหลังจากนั้นจะมีการสร้างเส้นทางไปยังจุดนี้ตามถนนจริง มีแนวโน้มว่าจะไม่ตรงจึงย่อให้เหลือ 10 กิโลเมตรที่กำหนด มีตัวเลือกมากมายสำหรับเส้นทางดังกล่าว - เรามีเครื่องมือสร้างเส้นทางจริง!

ในตอนแรก ฉันต้องการแบ่งแผนที่ออกเป็นพื้นที่ตามพื้นที่สีเขียว ได้แก่ เขื่อน สนามหญ้า ถนน เพื่อให้ได้เส้นทางที่น่าเดินเล่นที่สุด และยังสร้างเสียงเพลงตามพื้นที่เหล่านี้ด้วย แต่การทำเช่นนี้โดยใช้ Google Map API กลับกลายเป็นเรื่องยาก (เราไม่มีเวลาแก้ปัญหานี้) อย่างไรก็ตาม สามารถดำเนินการสร้างเส้นทางผ่านสถานที่เฉพาะประเภทได้ (ร้านค้า สวนสาธารณะ ห้องสมุด) หากเส้นทางผ่านสถานที่ที่กำหนดทั้งหมดแล้ว แต่ยังไม่ได้เดินทางตามระยะทางที่ต้องการก็แล้วเสร็จถึง ระยะทางที่ผู้ใช้กำหนดในทิศทางสุ่ม Google Map API ยังช่วยให้คุณคำนวณเวลาเดินทางโดยประมาณ ซึ่งช่วยให้คุณเลือกเพลย์ลิสต์สำหรับการเดินทั้งหมดได้อย่างแม่นยำ

เป็นผลให้ จัดการเพื่อสร้างรุ่น เส้นทางตามจุดเริ่มต้น ระยะทาง และจุดกลาง ทุกอย่างถูกจัดเตรียมไว้เพื่อจำแนกเพลงตามส่วนของเส้นทาง แต่เนื่องจากไม่มีเวลา จึงตัดสินใจทิ้งตัวเลือกในการเลือกเพลย์ลิสต์ไว้เป็นสาขา UI เพิ่มเติม ดังนั้นผู้ใช้จึงสามารถเลือกเพลงที่จะฟังได้อย่างอิสระ

ปัญหาหลักในการทำงานกับเพลงคือการไม่รู้ว่าจะรับไฟล์ MP3 จากที่ไหน โดยที่ผู้ใช้ไม่จำเป็นต้องมีบัญชีในบริการใดๆ มีการตัดสินใจที่จะขอเพลงจากผู้ใช้ (โหมด UserMusic) สิ่งนี้ทำให้เกิดปัญหาใหม่: ไม่ใช่ทุกคนที่จะดาวน์โหลดแทร็กได้ ทางออกหนึ่งคือการสร้างพื้นที่เก็บข้อมูลที่มีเพลงจากผู้ใช้ (โหมด BotMusic) - จากนั้นคุณสามารถสร้างเพลงโดยไม่คำนึงถึงบริการต่างๆ

แม้ว่าจะไม่สมบูรณ์แบบ แต่เราก็สามารถทำงานสำเร็จได้: ในที่สุดเราก็ได้แอปพลิเคชันที่ฉันต้องการใช้ โดยทั่วไปแล้ว ถือว่าเยี่ยมมาก เมื่อสามวันก่อนคุณมีเพียงความคิดและไม่ได้คิดแม้แต่นิดเดียวว่าจะนำไปใช้อย่างไร แต่ตอนนี้มีวิธีแก้ปัญหาที่ใช้งานได้แล้ว นี่เป็นเวลา XNUMX วันที่สำคัญมากสำหรับฉัน ฉันไม่กลัวที่จะทำอะไรสักอย่างที่ไม่มีความรู้เพียงพอที่จะนำไปใช้อีกต่อไป การเป็นหัวหน้าทีมนั้นน่าสนใจมาก และฉันได้รู้จักคนที่ยอดเยี่ยมที่เข้าร่วมทีมของฉัน ดีกว่า!

ประชาธิปไตยเหลว

Hackathon DevDays'19 (ตอนที่ 1): ไดอารี่พร้อมคำแนะนำ เครื่องกำเนิดเส้นทางเดิน และประชาธิปไตยเหลว

ผู้เขียนความคิด
สตานิสลาฟ ไซเชฟ
โครงสร้างคำสั่ง
Stanislav Sychev – หัวหน้าทีม, ฐานข้อมูล
Nikolay Izyumov – อินเทอร์เฟซบอท
แอนตัน ไรบูเชฟ – แบ็กเอนด์

ภายในกลุ่มต่างๆ มักมีความจำเป็นต้องตัดสินใจหรือลงคะแนนเสียง โดยปกติแล้วในกรณีเช่นนี้พวกเขาจะหันไปใช้ ประชาธิปไตยทางตรงแต่เมื่อกลุ่มใหญ่ขึ้นก็อาจเกิดปัญหาได้ เช่น คนในกลุ่มอาจไม่ต้องการตอบคำถามบ่อยๆ หรือตอบคำถามเกี่ยวกับบางหัวข้อ เป็นกลุ่มใหญ่เพื่อหลีกเลี่ยงปัญหาที่พวกเขาหันไปเผชิญ ประชาธิปไตยแบบตัวแทนเมื่อมีการเลือก "เจ้าหน้าที่" กลุ่มที่แยกจากประชาชนทั้งหมด ซึ่งจะปลดปล่อยคนที่เหลือจากภาระในการเลือก แต่มันค่อนข้างยากที่จะเป็นรองเช่นนี้ และผู้ที่กลายมาเป็นหนึ่งในนั้นไม่จำเป็นต้องซื่อสัตย์และให้เกียรติเหมือนอย่างที่เขาดูเหมือนเป็นผู้มีสิทธิเลือกตั้ง

เพื่อแก้ไขปัญหาของทั้งสองระบบ Brian Ford ได้เสนอแนวคิดนี้ ประชาธิปไตยเหลว. ในระบบดังกล่าว ทุกคนมีอิสระในการเลือกบทบาทของผู้ใช้ทั่วไปหรือผู้รับมอบสิทธิ์ เพียงแสดงความปรารถนาของตน ทุกคนสามารถลงคะแนนได้อย่างอิสระหรือลงคะแนนเสียงให้กับผู้รับมอบสิทธิ์ในประเด็นหนึ่งหรือหลายประเด็นได้ ผู้รับมอบสิทธิ์ยังสามารถลงคะแนนเสียงได้ นอกจากนี้ หากผู้รับมอบสิทธิ์ไม่เหมาะกับผู้ลงคะแนนเสียงอีกต่อไป คุณสามารถถอนการลงคะแนนเสียงได้ตลอดเวลา

ตัวอย่างของการใช้ประชาธิปไตยเหลวมีอยู่ในการเมือง และเราต้องการนำแนวคิดที่คล้ายกันไปใช้ในชีวิตประจำวันในกลุ่มคนทุกประเภท ในงานแฮ็กกาธอน DevDays ครั้งถัดไป เราตัดสินใจเขียนบอท Telegram สำหรับการลงคะแนนตามหลักการของประชาธิปไตยแบบเหลว ในเวลาเดียวกัน ฉันต้องการหลีกเลี่ยงปัญหาทั่วไปกับบอทดังกล่าว - การปิดกั้นการสนทนาทั่วไปด้วยข้อความจากบอท วิธีแก้ไขคือนำฟังก์ชันการทำงานต่างๆ มาใช้ในการสนทนาส่วนตัวให้มากที่สุดเท่าที่จะเป็นไปได้

Hackathon DevDays'19 (ตอนที่ 1): ไดอารี่พร้อมคำแนะนำ เครื่องกำเนิดเส้นทางเดิน และประชาธิปไตยเหลวในการสร้างบอทนี้เราใช้ API จากโทรเลข. เลือกฐานข้อมูล PostgreSQL เพื่อจัดเก็บประวัติการลงคะแนนและการมอบหมาย เพื่อสื่อสารกับบอท จึงมีการติดตั้งเซิร์ฟเวอร์ Flask เราเลือกเทคโนโลยีเหล่านี้เพราะ... เรามีประสบการณ์ในการโต้ตอบกับพวกเขาระหว่างการศึกษาระดับปริญญาโทแล้ว การทำงานในสามองค์ประกอบของโปรเจ็กต์ ได้แก่ ฐานข้อมูล เซิร์ฟเวอร์ และบอท ได้รับการแจกจ่ายให้กับสมาชิกในทีมเรียบร้อยแล้ว

แน่นอนว่าสามวันเป็นเวลาสั้นๆ ดังนั้นในระหว่างงานแฮ็กกาธอน เราได้นำแนวคิดนี้ไปใช้ในระดับต้นแบบ ด้วยเหตุนี้ เราจึงสร้างบอทที่เขียนเฉพาะข้อมูลเกี่ยวกับการเปิดการลงคะแนนและผลลัพธ์ที่ไม่ระบุชื่อลงในแชททั่วไปเท่านั้น ความสามารถในการลงคะแนนและสร้างแบบสำรวจจะดำเนินการผ่านการโต้ตอบส่วนตัวกับบอท หากต้องการลงคะแนน ให้ป้อนคำสั่งที่แสดงรายการประเด็นที่ต้องดำเนินการโดยตรง ในการติดต่อสื่อสารส่วนตัว คุณสามารถดูรายชื่อผู้ร่วมประชุมและการโหวตครั้งก่อนๆ ของพวกเขา และยังให้คะแนนพวกเขาในหัวข้อใดหัวข้อหนึ่งด้วย

วิดีโอพร้อมตัวอย่างการทำงาน.

การทำงานในโครงการนี้น่าสนใจมากเราอยู่ที่มหาวิทยาลัยจนถึงเที่ยงคืนเราคิดว่านี่เป็นวิธีที่ดีในการหยุดพักจากการเรียนแม้ว่าจะเหนื่อยมากก็ตาม มันเป็นประสบการณ์ที่น่าพึงพอใจที่ได้ทำงานในทีมที่ใกล้ชิดกัน

ป.ล. ขณะนี้ได้เปิดรับสมัครหลักสูตรปริญญาโทสำหรับปีการศึกษาหน้าแล้ว เปิดอยู่... เข้าร่วมกับเรา!

ที่มา: www.habr.com

เพิ่มความคิดเห็น