Hackathon DevDays'19 (الجزء الأول): يوميات تحتوي على توصيات، ومولد طريق المشي، والديمقراطية السائلة

في الآونة الأخيرة نحن قال حول برنامج الماجستير للشركات JetBrains وجامعة ITMO "تطوير البرمجيات / هندسة البرمجيات". ندعو جميع المهتمين إلى يوم مفتوح يوم الاثنين 29 أبريل. سنخبرك عن مزايا برنامج الماجستير لدينا، وما هي المكافآت التي نقدمها للطلاب وما نطلبه في المقابل. وبالإضافة إلى ذلك، سنجيب بالتأكيد على أسئلة ضيوفنا.

Hackathon DevDays'19 (الجزء الأول): يوميات تحتوي على توصيات، ومولد طريق المشي، والديمقراطية السائلةسيتم عقد اليوم المفتوح في مكتب JetBrains في مركز تايمز للأعمال، حيث يدرس طلاب الماجستير لدينا. يبدأ الساعة 17:00. يمكنك معرفة كافة التفاصيل والتسجيل لهذا الحدث على الموقع mse.itmo.ru. تعال ولن تندم!

الممارسة هي أحد المكونات الرئيسية للبرنامج. لدى الطلاب الكثير منها: الواجبات المنزلية الأسبوعية، ومشاريع الفصل الدراسي، ومسابقات الهاكاثون. بفضل الانغماس الكامل في منهجيات وتقنيات التطوير الحديثة أثناء دراستهم، يندمج الخريجون بسرعة في عمليات عمل شركات تكنولوجيا المعلومات الكبيرة.

في هذا المنشور، نريد التحدث بمزيد من التفاصيل حول DevDays hackathons، والتي تقام كل ستة أشهر. القواعد بسيطة: تتجمع فرق مكونة من 3-4 أشخاص ويقوم الطلاب لمدة ثلاثة أيام بإحياء أفكارهم الخاصة. ماذا يمكن أن يأتي من هذا؟ اقرأ الجزء الأول من قصص مشاريع الهاكاثون لهذا الفصل من الطلاب أنفسهم :)

يوميات مع توصيات الفيلم

Hackathon DevDays'19 (الجزء الأول): يوميات تحتوي على توصيات، ومولد طريق المشي، والديمقراطية السائلة

مؤلف الفكرة
إيفان إيلشوك
هيكل القيادة
إيفان إيلشوك - تحليل مؤامرة الفيلم، الخادم
فلاديسلاف كورابلينوف – تطوير نماذج لمقارنة القرب من إدخال اليوميات ومؤامرة الفيلم
ديمتري فالشوك – واجهة المستخدم
نيكيتا فينوكوروف – واجهة المستخدم والتصميم

كان الهدف من مشروعنا هو كتابة تطبيق سطح المكتب - وهو يوميات توصي المستخدم بالأفلام بناءً على الإدخالات الموجودة فيه.

خطرت لي هذه الفكرة عندما كنت في طريقي إلى الجامعة وأفكر في مشاكلي. فكرت: "مهما كانت المشكلة التي يواجهها الشخص، فقد كتب عنها كاتب كلاسيكي بالفعل". "وبما أن شخصًا ما كتبه، فهذا يعني أن شخصًا ما قد قام بتصويره بالفعل." لذلك ظهرت الرغبة في مشاهدة فيلم عن شخص يعاني من نفس العذاب النفسي بشكل طبيعي.

من الواضح أن هناك مجموعة واسعة من المذكرات المنفصلة وخدمات التوصية المنفصلة (ولكن عادةً ما تعتمد التوصيات على ما أحبه الشخص سابقًا). من حيث المبدأ، يحتوي هذا المشروع على شيء مشترك مع البحث عن فيلم حسب النقاط الرئيسية، ولكن لا يزال تطبيقنا يوفر وظيفة اليوميات.

Hackathon DevDays'19 (الجزء الأول): يوميات تحتوي على توصيات، ومولد طريق المشي، والديمقراطية السائلةكيف قمنا بتنفيذ هذا؟ عند الضغط على الزر السحري، ترسل اليوميات إدخالاً إلى الخادم، حيث يتم اختيار الفيلم بناءً على الوصف المأخوذ من ويكيبيديا. تم إنشاء الواجهة الأمامية لدينا بلغة Electron (نحن نستخدمها، وليس موقع الويب، لأننا قررنا في البداية تخزين بيانات المستخدم ليس على الخادم، ولكن محليًا على الكمبيوتر)، وتم إنشاء الخادم ونظام التوصية نفسه بلغة Python: كانت TFs تم الحصول عليها من الأوصاف - متجهات جيش الدفاع الإسرائيلي التي تمت مقارنتها بقربها من متجه إدخال اليوميات.

عمل أحد أعضاء الفريق فقط على النموذج، بينما عمل الآخر بالكامل على الواجهة الأمامية (في البداية مع عضو ثالث، والذي تحول لاحقًا إلى الاختبار). لقد كنت منخرطًا في تحليل مؤامرات الأفلام من ويكيبيديا والخادم.

خطوة بخطوة، اقتربنا من النتيجة، والتغلب على عدد من المشاكل، بدءا من حقيقة أن النموذج يتطلب في البداية الكثير من ذاكرة الوصول العشوائي، وتنتهي بصعوبة نقل البيانات إلى الخادم.

الآن، للعثور على فيلم للمساء، لا تحتاج إلى الكثير من الجهد: نتيجة عملنا لمدة ثلاثة أيام هي تطبيق سطح مكتب وخادم، يصل إليه المستخدم عبر https، ويتلقى ردًا على ذلك مجموعة مختارة من 5 أفلام بها وصف موجز وملصق.

انطباعاتي عن المشروع إيجابية للغاية: كان العمل آسرًا من الصباح الباكر حتى وقت متأخر من الليل، وينتج التطبيق الناتج بشكل دوري نتائج مضحكة للغاية بأسلوب "ليلة بلا نوم" لتدوين يوميات عن الواجب المنزلي في الجامعة أو فيلم عن أول يوم دراسي لقصة عن أول يوم في القسم.

يمكن العثور على الروابط ذات الصلة والمثبتات وما إلى ذلك هنا.

مولد الطريق

Hackathon DevDays'19 (الجزء الأول): يوميات تحتوي على توصيات، ومولد طريق المشي، والديمقراطية السائلةمؤلف الفكرة
أرتيمييفا إيرينا
هيكل القيادة
أرتيمييفا إيرينا – قائدة الفريق، الحلقة الرئيسية
غورديفا ليودميلا – موسيقى
بلاتونوف فلاديسلاف – الطرق

أحب حقًا التجول في المدينة: النظر إلى المباني والناس والتفكير في التاريخ. ولكن، حتى عند تغيير مكان إقامتي، أواجه عاجلاً أم آجلاً مشكلة اختيار الطريق: لقد أكملت كل ما يمكنني التفكير فيه. هذه هي الطريقة التي جاءت بها فكرة إنشاء المسارات تلقائيًا: تحدد نقطة البداية وطول المسار، ويمنحك البرنامج خيارًا. يمكن أن تكون جولات المشي طويلة، لذا يبدو أن التطور المنطقي للفكرة هو إضافة القدرة على الإشارة إلى نقاط وسيطة من أجل "التوقف"، حيث يمكنك تناول وجبة خفيفة والراحة. فرع آخر من التطور كان الموسيقى. يعد المشي مع الموسيقى دائمًا أكثر متعة، لذا سيكون من الرائع إضافة القدرة على تحديد قائمة تشغيل بناءً على المسار الذي تم إنشاؤه.

ولم يكن من الممكن إيجاد مثل هذه الحلول بين التطبيقات الموجودة. أقرب نظائرها هي أي مخططات طريق: خرائط جوجل، 2GIS، إلخ.

من الأفضل أن يكون لديك مثل هذا التطبيق على هاتفك، لذا فإن استخدام Telegram كان خيارًا جيدًا. يتيح لك عرض الخرائط وتشغيل الموسيقى، ويمكنك التحكم في كل هذا عن طريق كتابة روبوت. تم تنفيذ العمل الرئيسي مع الخرائط باستخدام Google Map API. تسهل لغة بايثون الجمع بين التقنيتين.

كان هناك ثلاثة أشخاص في الفريق، لذلك تم تقسيم المهمة إلى مهمتين فرعيتين غير متداخلتين (العمل مع الخرائط والعمل مع الموسيقى) حتى يتمكن الرجال من العمل بشكل مستقل، وأخذت على عاتقي الجمع بين النتائج.

Hackathon DevDays'19 (الجزء الأول): يوميات تحتوي على توصيات، ومولد طريق المشي، والديمقراطية السائلةلم يسبق لأي منا أن عمل مع Google Map API أو كتب Telegram bots، لذا كانت المشكلة الرئيسية هي مقدار الوقت المخصص لتنفيذ المشروع: فهم شيء ما يستغرق دائمًا وقتًا أطول من القيام بشيء تعرفه جيدًا. كان من الصعب أيضًا اختيار Telegram bot API: نظرًا للحظر، لم تكن جميعها تعمل وكان علي أن أواجه صعوبة في إعداد كل شيء.

تجدر الإشارة بشكل منفصل إلى كيفية حل مشكلة إنشاء المسارات. من السهل إنشاء طريق بين موقعين، ولكن ما الذي يمكنك تقديمه للمستخدم إذا كان طول المسار معروفًا فقط؟ دع المستخدم يريد المشي مسافة 10 كيلومترات. يتم تحديد نقطة في اتجاه تعسفي، والمسافة التي تكون في خط مستقيم هي 10 كيلومترات، وبعد ذلك يتم بناء الطريق إلى هذه النقطة على طول الطرق الحقيقية. على الأغلب أنها لن تكون مستقيمة، لذا سنختصرها إلى العشرة كيلومترات المحددة. هناك الكثير من الخيارات لمثل هذه الطرق - لقد حصلنا على مولد طريق حقيقي!

في البداية، كنت أرغب في تقسيم الخريطة إلى مناطق تتوافق مع المناطق الخضراء: السدود والساحات والشوارع، من أجل الحصول على الطريق الأكثر متعة للنزهة، وكذلك إنشاء الموسيقى وفقًا لهذه المناطق. ولكن تبين أن القيام بذلك باستخدام Google Map API أمر صعب (لم يكن لدينا الوقت لحل هذه المشكلة). ومع ذلك، كان من الممكن تنفيذ إنشاء طريق من خلال أنواع محددة من المواقع (متجر، حديقة، مكتبة): إذا كان المسار يدور حول جميع الأماكن المحددة، ولكن لم يتم قطع المسافة المطلوبة بعد، فسيتم إكماله إلى المسافة المحددة من قبل المستخدم في اتجاه عشوائي. تسمح لك واجهة برمجة تطبيقات Google Map أيضًا بحساب وقت السفر المقدر، مما يساعدك على اختيار قائمة تشغيل للرحلة بأكملها بالضبط.

ونتيجة لذلك، تمكنت من صنع جيل الطرق حسب نقطة البداية والمسافة والنقاط المتوسطة؛ تم إعداد كل شيء لتصنيف الموسيقى وفقًا لأقسام المسار، ولكن نظرًا لضيق الوقت، تقرر ترك خيار تحديد قائمة تشغيل ببساطة كفرع إضافي لواجهة المستخدم. وبالتالي، كان المستخدم قادرا على اختيار الموسيقى للاستماع إليها بشكل مستقل.

كانت المشكلة الرئيسية في العمل مع الموسيقى هي عدم معرفة مكان الحصول على ملفات mp3 دون الحاجة إلى أن يكون لدى المستخدم حساب على أي خدمة. تقرر طلب الموسيقى من المستخدم (وضع UserMusic). وهذا يخلق مشكلة جديدة: ليس لدى الجميع القدرة على تنزيل المقاطع الصوتية. أحد الحلول هو إنشاء مستودع يحتوي على موسيقى من المستخدمين (وضع BotMusic) - ومن خلاله يمكنك إنشاء موسيقى بغض النظر عن الخدمات.

على الرغم من أنها لم تكن مثالية، فقد أكملنا المهمة: وانتهى بنا الأمر بالحصول على تطبيق أرغب في استخدامه. بشكل عام، هذا رائع جدًا: قبل ثلاثة أيام لم تكن لديك سوى فكرة ولم تكن لديك فكرة واحدة حول كيفية تنفيذها بالضبط، ولكن الآن يوجد حل عملي. كانت هذه الأيام الثلاثة مهمة جدًا بالنسبة لي، ولم أعد خائفًا من التوصل إلى شيء ليس لدي المعرفة الكافية لتنفيذه، وكان تولي قيادة الفريق أمرًا مثيرًا للاهتمام بشكل لا يصدق، وتعرفت على الأشخاص الرائعين الذين انضموا إلى فريقي. أحسن!

الديمقراطية السائلة

Hackathon DevDays'19 (الجزء الأول): يوميات تحتوي على توصيات، ومولد طريق المشي، والديمقراطية السائلة

مؤلف الفكرة
ستانيسلاف سيتشيف
هيكل القيادة
ستانيسلاف سيتشيف - قائد الفريق، قاعدة البيانات
نيكولاي إيزوموف – واجهة الروبوت
أنطون ريابوشيف – الواجهة الخلفية

داخل المجموعات المختلفة، غالبًا ما تكون هناك حاجة لاتخاذ قرار أو التصويت. عادة في مثل هذه الحالات يلجأون إليها الديمقراطية المباشرةومع ذلك، عندما تصبح المجموعة كبيرة، يمكن أن تنشأ مشاكل. على سبيل المثال، قد لا يرغب أحد الأشخاص في المجموعة في الإجابة على الأسئلة كثيرًا أو الإجابة على أسئلة حول موضوعات معينة. في مجموعات كبيرة، لتجنب المشاكل التي يلجأون إليها الديموقراطية الممثلةعندما يتم اختيار مجموعة منفصلة من «النواب» من بين جميع الشعب، ليحرروا الباقي من عبء الاختيار. لكن من الصعب جدًا أن تصبح نائبًا كهذا، والشخص الذي يصبح كذلك لن يكون بالضرورة صادقًا ومحترمًا، كما بدا للناخبين.

ولحل مشاكل كلا النظامين، اقترح بريان فورد هذا المفهوم الديمقراطية السائلة. في مثل هذا النظام، يتمتع الجميع بحرية اختيار دور المستخدم العادي أو المفوض، وذلك ببساطة عن طريق التعبير عن رغبتهم. يمكن لأي شخص التصويت بشكل مستقل أو إعطاء صوت لمندوب حول قضية واحدة أو أكثر. ويمكن للمندوب أيضا أن يدلي بصوته. علاوة على ذلك، إذا لم يعد المندوب يناسب الناخب، فيمكن سحب التصويت في أي وقت.

توجد أمثلة على استخدام الديمقراطية السائلة في السياسة، وأردنا تنفيذ فكرة مماثلة للاستخدام اليومي ضمن جميع أنواع المجموعات من الناس. في Hackathon DevDays التالي، قررنا كتابة روبوت Telegram للتصويت وفقًا لمبادئ الديمقراطية السائلة. في الوقت نفسه، أردت تجنب مشكلة شائعة مع مثل هذه الروبوتات - انسداد الدردشة العامة برسائل من الروبوت. الحل هو جلب أكبر قدر ممكن من الوظائف إلى محادثة شخصية.

Hackathon DevDays'19 (الجزء الأول): يوميات تحتوي على توصيات، ومولد طريق المشي، والديمقراطية السائلةلإنشاء هذا الروبوت استخدمنا واجهة برمجة التطبيقات من Telegram. تم اختيار قاعدة بيانات PostgreSQL لتخزين تاريخ التصويت والتفويضات. للتواصل مع الروبوت، تم تثبيت خادم Flask. لقد اخترنا هذه التقنيات لأن... لقد كانت لدينا بالفعل خبرة في التفاعل معهم أثناء دراسات الماجستير. تم توزيع العمل على المكونات الثلاثة للمشروع — قاعدة البيانات والخادم والروبوت — بنجاح على أعضاء الفريق.

بالطبع، ثلاثة أيام هي فترة قصيرة، لذلك قمنا خلال الهاكاثون بتنفيذ الفكرة على مستوى النموذج الأولي. ونتيجة لذلك، قمنا بإنشاء روبوت يكتب في الدردشة العامة فقط معلومات حول فتح التصويت ونتائجه المجهولة. يتم تنفيذ القدرة على التصويت وإنشاء الاستطلاع من خلال المراسلات الشخصية مع الروبوت. للتصويت، أدخل أمرًا يعرض قائمة بالمشكلات التي تتطلب اهتمامًا مباشرًا. وفي المراسلات الشخصية يمكنك الاطلاع على قائمة المندوبين وأصواتهم السابقة وأيضا منحهم صوتك على أحد المواضيع.

فيديو مع مثال على العمل.

كان من المثير للاهتمام العمل في المشروع، بقينا في الجامعة حتى منتصف الليل، ونعتقد أن هذه طريقة رائعة لأخذ استراحة من الدراسة، رغم أنها مرهقة للغاية. لقد كانت تجربة ممتعة العمل ضمن فريق متماسك.

ملاحظة. تم بالفعل التسجيل لبرامج الماجستير للعام الدراسي القادم فتح. نضم الان!

المصدر: www.habr.com

إضافة تعليق