Hackathon DevDays'19 (قسمت 1): دفتر خاطرات با توصیه‌ها، تولیدکننده مسیر پیاده روی و دموکراسی مایع

اخیرا ما گفت: در مورد برنامه کارشناسی ارشد شرکتی JetBrains و دانشگاه ITMO "توسعه نرم افزار / مهندسی نرم افزار". از همه علاقه‌مندان دعوت می‌کنیم که روز دوشنبه 29 آوریل برگزار شود. ما به شما در مورد مزایای برنامه کارشناسی ارشد خود، پاداش هایی که به دانش آموزان ارائه می دهیم و در ازای آن مطالبه می کنیم، خواهیم گفت. علاوه بر این، ما قطعا به سوالات مهمانان خود پاسخ خواهیم داد.

Hackathon DevDays'19 (قسمت 1): دفتر خاطرات با توصیه‌ها، تولیدکننده مسیر پیاده روی و دموکراسی مایعروز باز در دفتر JetBrains در مرکز تجاری تایمز، جایی که دانشجویان کارشناسی ارشد ما در آنجا تحصیل می کنند، برگزار می شود. ساعت 17:00 شروع می شود. شما می توانید از تمام جزئیات و ثبت نام در رویداد در وب سایت مطلع شوید mse.itmo.ru. بیا و پشیمان نخواهی شد!

یکی از اجزای اصلی برنامه تمرین است. دانش آموزان چیزهای زیادی دارند: تکالیف هفتگی، پروژه های ترم و هکاتون. به لطف غوطه ور شدن کامل در روش ها و فناوری های توسعه مدرن در طول تحصیل، فارغ التحصیلان به سرعت در فرآیندهای کاری شرکت های بزرگ فناوری اطلاعات ادغام می شوند.

در این پست می خواهیم با جزئیات بیشتری در مورد هکاتون های DevDays صحبت کنیم که هر شش ماه یکبار برگزار می شود. قوانین ساده است: تیم های 3-4 نفره جمع می شوند و به مدت سه روز دانش آموزان ایده های خود را زنده می کنند. چه چیزی ممکن است از این اتفاق بیفتد؟ قسمت اول داستان پروژه های هکاتون این ترم را از خود دانش آموزان بخوانید :)

دفتر خاطرات با توصیه های فیلم

Hackathon DevDays'19 (قسمت 1): دفتر خاطرات با توصیه‌ها، تولیدکننده مسیر پیاده روی و دموکراسی مایع

نویسنده ایده
ایوان ایلچوک
به صف شدن
ایوان ایلچوک – تجزیه طرح فیلم، سرور
ولادیسلاو کورابلینوف - توسعه مدل هایی برای مقایسه نزدیکی یک دفترچه خاطرات و طرح یک فیلم
دیمیتری والچوک – رابط کاربری
نیکیتا وینوکوروف – UI، طراحی

هدف پروژه ما نوشتن یک برنامه دسکتاپ بود - یک دفترچه خاطرات که فیلم ها را بر اساس ورودی های موجود در آن به کاربر توصیه می کرد.

این ایده زمانی به ذهنم رسید که در راه دانشگاه بودم و به مشکلاتم فکر می کردم. فکر کردم: «هر مشکلی که یک فرد با آن مواجه است، یک نویسنده کلاسیک قبلاً در مورد آن نوشته است. "و از آنجایی که کسی آن را نوشته است، به این معنی است که کسی قبلاً از آن فیلم گرفته است." بنابراین تمایل به تماشای فیلمی در مورد فردی با همان عذاب روحی به طور طبیعی ظاهر شد.

بدیهی است که طیف گسترده ای از خاطرات روزانه جداگانه و خدمات توصیه جداگانه وجود دارد (اما معمولاً توصیه ها بر اساس چیزی است که شخص قبلاً دوست داشته است). در اصل، این پروژه چیزی مشترک با جستجوی یک فیلم با نکات کلیدی دارد، اما هنوز هم، اول از همه، برنامه ما عملکرد یک دفترچه خاطرات را ارائه می دهد.

Hackathon DevDays'19 (قسمت 1): دفتر خاطرات با توصیه‌ها، تولیدکننده مسیر پیاده روی و دموکراسی مایعچگونه این را اجرا کردیم؟ وقتی دکمه جادویی را فشار می‌دهید، دفتر خاطرات یک ورودی به سرور می‌فرستد، جایی که فیلم براساس توضیحات ویکی‌پدیا انتخاب می‌شود. فرانت اند ما در Electron ساخته شده است (ما از آن استفاده می کنیم، نه وب سایت، زیرا در ابتدا تصمیم گرفتیم داده های کاربر را نه در سرور، بلکه به صورت محلی در رایانه ذخیره کنیم)، و خود سرور و سیستم توصیه در پایتون ساخته شده است: TF ها به دست آمده از توصیف بردارهای IDF که برای نزدیکی به بردار ورودی دفترچه خاطرات مقایسه شدند.

یکی از اعضای تیم فقط روی مدل کار می کرد، دیگری به طور کامل در قسمت جلویی کار می کرد (در ابتدا همراه با یک عضو سوم، که بعداً به آزمایش روی آورد). من درگیر تجزیه توطئه های فیلم از ویکی پدیا و سرور بودم.

گام به گام به نتیجه نزدیکتر شدیم، با غلبه بر تعدادی از مشکلات، از این واقعیت شروع کردیم که مدل در ابتدا به مقدار زیادی رم نیاز داشت، و با دشواری انتقال داده ها به سرور پایان یافت.

اکنون برای یافتن یک فیلم برای عصرانه نیازی به تلاش زیادی ندارید: نتیجه کار سه روزه ما یک برنامه دسکتاپ و یک سرور است که کاربر از طریق https به آن دسترسی پیدا می کند و در پاسخ گزیده ای از 5 فیلم را دریافت می کند. توضیحات مختصر و پوستر

برداشت من از پروژه بسیار مثبت است: کار از صبح زود تا پاسی از شب فریبنده بود، و برنامه به دست آمده به طور دوره ای نتایج بسیار خنده داری به سبک "شب بی خواب" برای یک دفترچه خاطرات در مورد تکالیف در دانشگاه یا یک فیلم ایجاد می کند. درباره اولین روز مدرسه برای داستانی در مورد روز اول در بخش.

لینک های مربوطه، نصب کننده ها و غیره را می توان یافت اینجا.

ژنراتور مسیر

Hackathon DevDays'19 (قسمت 1): دفتر خاطرات با توصیه‌ها، تولیدکننده مسیر پیاده روی و دموکراسی مایعنویسنده ایده
آرتمیوا ایرینا
به صف شدن
آرتمیوا ایرینا - سرپرست تیم، حلقه اصلی
گوردیوا لیودمیلا - موسیقی
پلاتونوف ولادیسلاو - مسیرها

من واقعاً دوست دارم در شهر قدم بزنم: به ساختمان ها، مردم نگاه کنم، به تاریخ فکر کنم. اما، حتی هنگام تغییر محل زندگی، دیر یا زود با مشکل انتخاب مسیر مواجه می شوم: تمام مسیرهایی را که فکر می کردم تکمیل کرده ام. ایده تولید مسیرها به این صورت مطرح شد: شما نقطه شروع و طول مسیر را مشخص می‌کنید و برنامه یک گزینه در اختیار شما قرار می‌دهد. پیاده‌روی‌ها می‌توانند طولانی باشند، بنابراین به نظر می‌رسد توسعه منطقی این ایده توانایی نشان دادن نقاط میانی را برای یک «ایست» اضافه می‌کند، جایی که می‌توانید یک میان وعده بخورید و استراحت کنید. یکی دیگر از شاخه های توسعه موسیقی بود. پیاده روی به سمت موسیقی همیشه سرگرم کننده تر است، بنابراین اضافه کردن قابلیت انتخاب لیست پخش بر اساس مسیر ایجاد شده عالی است.

یافتن چنین راه حل هایی در بین برنامه های کاربردی موجود ممکن نبود. نزدیک‌ترین آنالوگ‌ها، برنامه‌ریزان مسیر هستند: Google Maps، 2GIS و غیره.

داشتن چنین برنامه ای در گوشی شما راحت تر است، بنابراین استفاده از تلگرام گزینه خوبی بود. به شما امکان نمایش نقشه و پخش موسیقی را می دهد و می توانید با نوشتن یک ربات همه اینها را کنترل کنید. کار اصلی با نقشه ها با استفاده از Google Map API انجام شد. پایتون ترکیب هر دو فناوری را آسان می کند.

سه نفر در تیم بودند، بنابراین کار به دو کار فرعی غیر همپوشانی (کار با نقشه و کار با موسیقی) تقسیم شد تا بچه ها بتوانند به طور مستقل کار کنند، و من به عهده خودم گذاشتم که نتایج را ترکیب کنم.

Hackathon DevDays'19 (قسمت 1): دفتر خاطرات با توصیه‌ها، تولیدکننده مسیر پیاده روی و دموکراسی مایعهیچ یک از ما تا به حال با Google Map API یا ربات های نوشته شده تلگرام کار نکرده بودیم، بنابراین مشکل اصلی مقدار زمان اختصاص داده شده برای اجرای پروژه بود: درک چیزی همیشه زمان بیشتری از انجام کاری که به خوبی می دانید طول می کشد. همچنین انتخاب API ربات تلگرام دشوار بود: به دلیل مسدود شدن، همه آنها کار نمی کنند و من مجبور شدم برای تنظیم همه چیز مشکل داشته باشم.

شایان ذکر است که چگونه مشکل مسیرهای تولیدی حل شد. ایجاد یک مسیر بین دو مکان آسان است، اما اگر فقط طول مسیر مشخص باشد، چه چیزی می توانید به کاربر ارائه دهید؟ اجازه دهید کاربر بخواهد 10 کیلومتر پیاده روی کند. نقطه ای در جهت دلخواه انتخاب می شود که فاصله آن در یک خط مستقیم 10 کیلومتر است و پس از آن مسیری تا این نقطه در امتداد جاده های واقعی ساخته می شود. به احتمال زیاد مستقیم نخواهد بود، بنابراین آن را تا 10 کیلومتر مشخص شده کوتاه می کنیم. گزینه های زیادی برای چنین مسیرهایی وجود دارد - ما یک مولد مسیر واقعی دریافت کردیم!

در ابتدا می خواستم نقشه را به مناطق مربوط به مناطق سبز تقسیم کنم: خاکریزها، حیاط ها، خیابان ها، تا لذت بخش ترین مسیر را برای پیاده روی داشته باشم و همچنین موسیقی مطابق با این مناطق تولید کنم. اما انجام این کار با استفاده از Google Map API دشوار بود (زمانی برای حل این مشکل نداشتیم). با این حال، امکان اجرای یک مسیر از طریق انواع مکان‌های خاص (فروشگاه، پارک، کتابخانه) وجود داشت: اگر مسیر تمام مکان‌های مشخص‌شده را دور زد، اما مسافت مورد نظر هنوز طی نشده باشد، تا یک مسیر تکمیل می‌شود. فاصله مشخص شده توسط کاربر در جهت تصادفی Google Map API همچنین به شما امکان می دهد زمان تخمینی سفر را محاسبه کنید، که به شما کمک می کند یک لیست پخش را دقیقاً برای کل پیاده روی انتخاب کنید.

به عنوان یک نتیجه، توانست نسلی بسازد مسیرها بر اساس نقطه شروع، فاصله و نقاط میانی؛ همه چیز برای طبقه‌بندی موسیقی بر اساس بخش‌هایی از مسیر آماده شده بود، اما به دلیل کمبود زمان، تصمیم گرفته شد که گزینه انتخاب یک لیست پخش را صرفاً به عنوان یک شاخه UI اضافی ترک کنیم. بنابراین، کاربر قادر به انتخاب مستقل موسیقی برای گوش دادن بود.

مشکل اصلی کار با موسیقی این بود که نمی‌دانستیم فایل‌های mp3 را از کجا می‌توان دریافت کرد، بدون اینکه کاربر مجبور به داشتن حساب کاربری در هر سرویسی باشد. تصمیم گرفته شد که از کاربر موسیقی درخواست شود (حالت یوزر موزیک). این یک مشکل جدید ایجاد می کند: همه توانایی دانلود آهنگ ها را ندارند. یک راه حل این است که یک مخزن با موسیقی از کاربران ایجاد کنید (حالت BotMusic) - از آن می توانید بدون توجه به خدمات، موسیقی تولید کنید.

اگرچه بی نقص نبودیم، اما کار را کامل کردیم: به برنامه ای رسیدیم که می خواهم از آن استفاده کنم. به طور کلی، این بسیار جالب است: سه روز پیش شما فقط یک ایده داشتید و هیچ فکری در مورد چگونگی اجرای آن نداشتید، اما اکنون یک راه حل کارآمد وجود دارد. این سه روز برای من بسیار مهم بود. من دیگر نمی ترسم به چیزی برسم که دانش کافی برای اجرای آن نداشته باشم، رهبری تیم بودن فوق العاده جالب بود و من با بچه های فوق العاده ای که به تیم من پیوستند آشنا شدم. بهتر!

دموکراسی مایع

Hackathon DevDays'19 (قسمت 1): دفتر خاطرات با توصیه‌ها، تولیدکننده مسیر پیاده روی و دموکراسی مایع

نویسنده ایده
استانیسلاو سیچف
به صف شدن
استانیسلاو سیچف - سرپرست تیم، پایگاه داده
نیکولای ایزیوموف - رابط ربات
آنتون ریابوشف - باطن

در درون گروه های مختلف، اغلب نیاز به تصمیم گیری یا رای گیری وجود دارد. معمولا در چنین مواردی متوسل می شوند دموکراسی مستقیمبا این حال، هنگامی که گروه بزرگ می شود، ممکن است مشکلاتی ایجاد شود. به عنوان مثال، فردی در یک گروه ممکن است تمایلی به پاسخگویی به سؤالات اغلب نداشته باشد یا به سؤالاتی در مورد موضوعات خاص پاسخ دهد. در گروه های بزرگ برای جلوگیری از مشکلات به آنها متوسل می شوند دموکراسی نمایندگیوقتی از میان همه مردم گروهی جداگانه از «معاونان» انتخاب می‌شوند که بقیه را از زیر بار انتخاب رها می‌کنند. اما تبدیل شدن به چنین معاونی بسیار دشوار است و شخصی که یکی می شود لزوماً آنطور که در نظر رای دهندگان به نظر می رسید صادق و محترم نخواهد بود.

برایان فورد برای حل مشکلات هر دو سیستم، این مفهوم را پیشنهاد کرد دموکراسی مایع. در چنین سیستمی، همه آزادند که نقش یک کاربر معمولی یا نماینده را صرفاً با ابراز تمایل خود انتخاب کنند. هر کس می تواند مستقلاً رأی دهد یا در مورد یک یا چند موضوع به یک نماینده رأی دهد. یک نماینده نیز می تواند رای خود را بدهد. علاوه بر این، اگر نماینده دیگر مناسب رای دهنده نباشد، رای در هر زمانی می تواند پس گرفته شود.

نمونه هایی از استفاده از دموکراسی مایع در سیاست یافت می شود، و ما می خواستیم ایده مشابهی را برای استفاده روزمره در انواع گروه های مردم پیاده کنیم. در هکاتون بعدی DevDays، تصمیم گرفتیم یک ربات تلگرام برای رای دادن بر اساس اصول دموکراسی مایع بنویسیم. در همان زمان، من می خواستم از یک مشکل رایج در چنین ربات هایی جلوگیری کنم - مسدود کردن چت عمومی با پیام های ربات. راه حل این است که تا حد امکان قابلیت های بیشتری را به یک مکالمه شخصی وارد کنید.

Hackathon DevDays'19 (قسمت 1): دفتر خاطرات با توصیه‌ها، تولیدکننده مسیر پیاده روی و دموکراسی مایعبرای ایجاد این ربات ما استفاده کردیم API از تلگرام. یک پایگاه داده PostgreSQL برای ذخیره تاریخچه رای گیری و نمایندگی ها انتخاب شد. برای ارتباط با ربات، سرور Flask نصب شد. ما این فناوری ها را انتخاب کردیم زیرا ... ما قبلاً تجربه تعامل با آنها را در طول تحصیلات کارشناسی ارشد خود داشتیم. کار بر روی سه جزء پروژه - پایگاه داده، سرور و ربات - با موفقیت بین اعضای تیم توزیع شد.

البته سه روز زمان کمی است، بنابراین در طول هکاتون این ایده را تا سطح نمونه اولیه اجرا کردیم. در نتیجه، ما رباتی ایجاد کردیم که در چت عمومی فقط اطلاعات مربوط به باز شدن رای گیری و نتایج ناشناس آن را می نویسد. امکان رای دادن و ایجاد نظرسنجی از طریق مکاتبه شخصی با ربات اجرا می شود. برای رای دادن، دستوری را وارد کنید که فهرستی از مسائلی را که نیاز به توجه مستقیم دارند نمایش می‌دهد. در مکاتبات شخصی می توانید لیست نمایندگان و آرای قبلی آنها را مشاهده کنید و همچنین در مورد یکی از موضوعات رای خود را به آنها بدهید.

ویدیو با نمونه کار.

کار کردن روی پروژه جالب بود، ما تا نیمه شب در دانشگاه ماندیم، فکر می کنیم این یک راه عالی برای استراحت از مطالعه است، اگرچه بسیار طاقت فرسا است. این یک تجربه خوشایند کار در یک تیم نزدیک بود.

PS. ثبت نام دوره های کارشناسی ارشد برای سال تحصیلی آینده هم اکنون انجام شده است باز کن. همین الان ملحق شوید، همین الان بپیوندید!

منبع: www.habr.com

اضافه کردن نظر