هاكاثون DevDays'19 (الجزء 1): مذكرات مع التوصيات ، ومولد من طرق المشي والديمقراطية السائلة

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

سيتم عقد يوم مفتوح في مكتب JetBrains في مركز Times للأعمال ، حيث يدرس طلاب الدراسات العليا لدينا. تبدأ الساعة 17:00. يمكنك معرفة جميع التفاصيل والتسجيل لهذا الحدث في mse.itmo.ru. تعال ولا تندم!

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

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

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




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

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

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

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

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

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

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

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

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

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

مولد الطريق


مؤلف الفكرة
أرتيمييفا إيرينا
تكوين الفريق
Artemyeva Irina - قيادة الفريق ، الحلقة الرئيسية
غورديفا ليودميلا - موسيقى
بلاتونوف فلاديسلاف - الطرق

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

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

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

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

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

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

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

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

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

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

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




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

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

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

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

لإنشاء هذا الروبوت ، استخدمنا Telegram API . لتخزين تاريخ التصويت والوفود ، تم اختيار قاعدة بيانات PostgreSQL. للتواصل مع قاعدة البيانات بوت بوت أثيرت قارورة خادم. اخترنا هذه التقنيات ل لدينا بالفعل تجربة التفاعل معهم أثناء الدراسة في القضاء. تم توزيع العمل بنجاح على الأجزاء الثلاثة المكونة للمشروع - قاعدة البيانات والخادم والروبوت - بين أعضاء الفريق.

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

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

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

ملاحظة: القبول في القضاء للعام الدراسي المقبل مفتوح بالفعل. انضم الآن!

Source: https://habr.com/ru/post/ar449042/


All Articles