Hackathon DevDays'19 (حصہ 1): سفارشات کے ساتھ ایک ڈائری، واکنگ روٹ جنریٹر اور مائع جمہوریت

حال ہی میں ہم کہا JetBrains اور ITMO یونیورسٹی "سافٹ ویئر ڈویلپمنٹ / سافٹ ویئر انجینئرنگ" کے کارپوریٹ ماسٹرز پروگرام کے بارے میں۔ ہم دلچسپی رکھنے والے سبھی کو پیر، اپریل 29 کو کھلے دن کے لیے مدعو کرتے ہیں۔ ہم آپ کو اپنے ماسٹر پروگرام کے فوائد کے بارے میں بتائیں گے، ہم طلباء کو کیا بونس دیتے ہیں اور بدلے میں ہم کیا مطالبہ کرتے ہیں۔ اس کے علاوہ، ہم اپنے مہمانوں کے سوالات کے جوابات ضرور دیں گے۔

Hackathon DevDays'19 (حصہ 1): سفارشات کے ساتھ ایک ڈائری، واکنگ روٹ جنریٹر اور مائع جمہوریتاوپن ڈے ٹائمز بزنس سینٹر میں جیٹ برینز کے دفتر میں منعقد کیا جائے گا، جہاں ہمارے ماسٹر کے طلباء پڑھتے ہیں۔ 17:00 پر شروع ہوتا ہے۔ آپ ویب سائٹ پر تمام تفصیلات جان سکتے ہیں اور ایونٹ کے لیے اندراج کر سکتے ہیں۔ mse.itmo.ru. آؤ اور آپ کو اس پر افسوس نہیں ہوگا!

پروگرام کے اہم اجزاء میں سے ایک مشق ہے۔ طلباء کے پاس اس میں بہت کچھ ہوتا ہے: ہفتہ وار ہوم ورک، سمسٹر پروجیکٹس اور ہیکاتھون۔ اپنی تعلیم کے دوران جدید ترقی کے طریقوں اور ٹیکنالوجیز میں مکمل ڈوبی ہونے کی بدولت، گریجویٹ بڑی آئی ٹی کمپنیوں کے کام کے عمل میں تیزی سے ضم ہو جاتے ہیں۔

اس پوسٹ میں ہم DevDays hackathons کے بارے میں مزید تفصیل سے بات کرنا چاہتے ہیں، جو ہر چھ ماہ بعد ہوتا ہے۔ اصول آسان ہیں: 3-4 افراد کی ٹیمیں جمع ہوتی ہیں اور تین دن تک طلباء اپنے خیالات کو زندہ کرتے ہیں۔ اس سے کیا نکل سکتا ہے؟ اس سمسٹر کے ہیکاتھون پراجیکٹس کے بارے میں کہانیوں کا پہلا حصہ خود طلباء سے پڑھیں :)

فلم کی سفارشات کے ساتھ ڈائری

Hackathon DevDays'19 (حصہ 1): سفارشات کے ساتھ ایک ڈائری، واکنگ روٹ جنریٹر اور مائع جمہوریت

خیال کے مصنف
ایوان ایلچک
کمانڈ کا ڈھانچہ
Ivan Ilchuk - فلم پلاٹ پارس، سرور
ولادیسلاو کورابلینوف – ڈائری کے اندراج کی قربت اور فلم کے پلاٹ کا موازنہ کرنے کے لیے ماڈلز کی ترقی
دمتری والچک - UI
نکیتا ونوکوروف - UI، ڈیزائن

ہمارے پروجیکٹ کا مقصد ایک ڈیسک ٹاپ ایپلی کیشن لکھنا تھا - ایک ڈائری جو اس میں درج اندراجات کی بنیاد پر صارف کو فلموں کی سفارش کرے گی۔

یہ خیال مجھے اس وقت آیا جب میں یونیورسٹی جاتے ہوئے اپنے مسائل کے بارے میں سوچ رہا تھا۔ ’’کسی شخص کو جو بھی مسئلہ درپیش ہو، کسی کلاسک مصنف نے اس کے بارے میں پہلے ہی لکھا ہے،‘‘ میں نے سوچا۔ "اور چونکہ کسی نے اسے لکھا ہے، اس کا مطلب ہے کہ کسی نے اسے پہلے ہی فلمایا ہے۔" چنانچہ اسی ذہنی اذیت میں مبتلا شخص کے بارے میں فلم دیکھنے کی خواہش فطری طور پر ظاہر ہوئی۔

ظاہر ہے، الگ الگ ڈائریوں اور الگ الگ سفارشی خدمات کی وسیع اقسام ہیں (لیکن عام طور پر سفارشات اس پر مبنی ہوتی ہیں جو شخص پہلے پسند کرتا تھا)۔ اصولی طور پر، اس پروجیکٹ میں کلیدی نکات کے ذریعے فلم کی تلاش میں کچھ مشترک ہے، لیکن پھر بھی، سب سے پہلے، ہماری ایپلی کیشن ڈائری کی فعالیت فراہم کرتی ہے۔

Hackathon DevDays'19 (حصہ 1): سفارشات کے ساتھ ایک ڈائری، واکنگ روٹ جنریٹر اور مائع جمہوریتہم نے اسے کیسے نافذ کیا؟ جب آپ جادو کا بٹن دباتے ہیں تو ڈائری سرور کو ایک اندراج بھیجتی ہے، جہاں فلم کو ویکیپیڈیا سے لی گئی تفصیل کی بنیاد پر منتخب کیا جاتا ہے۔ ہمارا فرنٹ اینڈ الیکٹران میں بنایا گیا تھا (ہم اسے استعمال کرتے ہیں، ویب سائٹ نہیں، کیونکہ ہم نے ابتدائی طور پر صارف کے ڈیٹا کو سرور پر نہیں بلکہ مقامی طور پر کمپیوٹر پر اسٹور کرنے کا فیصلہ کیا تھا)، اور سرور اور تجویز کا نظام خود Python میں بنایا گیا تھا: TFs تفصیل سے حاصل کردہ -IDF ویکٹر جن کا موازنہ ڈائری انٹری ویکٹر سے قربت کے لیے کیا گیا تھا۔

ٹیم کے ایک رکن نے صرف ماڈل پر کام کیا، دوسرے نے مکمل طور پر فرنٹ اینڈ پر کام کیا (ابتدائی طور پر ایک تیسرے رکن کے ساتھ، جو بعد میں ٹیسٹنگ پر چلا گیا)۔ میں ویکیپیڈیا اور سرور سے فلمی پلاٹوں کو پارس کرنے میں مصروف تھا۔

قدم بہ قدم ہم بہت سے مسائل پر قابو پاتے ہوئے نتیجہ کے قریب پہنچ گئے، اس حقیقت سے شروع ہوا کہ ماڈل کو ابتدائی طور پر بہت زیادہ RAM کی ضرورت تھی، جس کا اختتام سرور پر ڈیٹا کی منتقلی کی دشواری کے ساتھ ہوا۔

اب، شام کے لیے فلم تلاش کرنے کے لیے، آپ کو زیادہ محنت کی ضرورت نہیں ہے: ہمارے تین دن کے کام کا نتیجہ ایک ڈیسک ٹاپ ایپلی کیشن اور سرور ہے، جس تک صارف https کے ذریعے رسائی حاصل کرتا ہے، جواب میں 5 فلموں کا انتخاب موصول ہوتا ہے۔ ایک مختصر تفصیل اور پوسٹر۔

اس پروجیکٹ کے بارے میں میرے تاثرات بہت مثبت ہیں: صبح سویرے سے لے کر رات گئے تک کام سحر انگیز تھا، اور نتیجہ خیز ایپلیکیشن وقتاً فوقتاً یونیورسٹی میں ہوم ورک یا فلم کے بارے میں ڈائری کے اندراج کے لیے "سلیپلیس نائٹ" کے انداز میں انتہائی مضحکہ خیز نتائج پیدا کرتی ہے۔ محکمہ میں پہلے دن کے بارے میں ایک کہانی کے لئے اسکول کے پہلے دن کے بارے میں۔

متعلقہ لنکس، انسٹالرز وغیرہ مل سکتے ہیں۔ یہاں.

روٹ جنریٹر

Hackathon DevDays'19 (حصہ 1): سفارشات کے ساتھ ایک ڈائری، واکنگ روٹ جنریٹر اور مائع جمہوریتخیال کے مصنف
آرٹیمیفا ارینا
کمانڈ کا ڈھانچہ
Artemyeva ارینا - ٹیم کی قیادت، اہم لوپ
گوردیوا لیوڈمیلا - موسیقی
پلاٹونوف ولادیسلاو - راستے

مجھے واقعی شہر میں گھومنا پسند ہے: عمارتوں، لوگوں کو دیکھنا، تاریخ کے بارے میں سوچنا۔ لیکن، اپنی رہائش کی جگہ کو تبدیل کرتے وقت بھی، جلد یا بدیر مجھے راستے کے انتخاب کے مسئلے کا سامنا کرنا پڑتا ہے: میں نے وہ تمام کام مکمل کر لیے ہیں جن کے بارے میں میں سوچ سکتا تھا۔ راستوں کی نسل کو خودکار بنانے کا خیال اس طرح آیا: آپ راستے کے نقطہ آغاز اور لمبائی کی نشاندہی کرتے ہیں، اور پروگرام آپ کو ایک آپشن فراہم کرتا ہے۔ چہل قدمی لمبی ہو سکتی ہے، اس لیے ایسا لگتا ہے کہ خیال کی منطقی ترقی ایک "اسٹاپ" کے لیے انٹرمیڈیٹ پوائنٹس کی نشاندہی کرنے کی صلاحیت میں اضافہ کر رہی ہے، جہاں آپ ناشتہ اور آرام کر سکتے ہیں۔ ترقی کی ایک اور شاخ موسیقی تھی۔ موسیقی پر چلنا ہمیشہ زیادہ مزہ آتا ہے، اس لیے تیار کردہ راستے کی بنیاد پر پلے لسٹ کو منتخب کرنے کی صلاحیت کو شامل کرنا بہت اچھا ہوگا۔

موجودہ ایپلی کیشنز کے درمیان اس طرح کے حل تلاش کرنا ممکن نہیں تھا۔ قریب ترین analogues کسی بھی راستے کے منصوبہ ساز ہیں: Google Maps، 2GIS، وغیرہ۔

آپ کے فون پر ایسی ایپلی کیشن رکھنا سب سے آسان ہے، اس لیے ٹیلی گرام کا استعمال ایک اچھا آپشن تھا۔ یہ آپ کو نقشے دکھانے اور موسیقی چلانے کی اجازت دیتا ہے، اور آپ بوٹ لکھ کر ان سب کو کنٹرول کر سکتے ہیں۔ نقشوں کے ساتھ اہم کام گوگل میپ API کا استعمال کرتے ہوئے کیا گیا تھا۔ Python دونوں ٹیکنالوجیز کو یکجا کرنا آسان بناتا ہے۔

ٹیم میں تین افراد تھے، اس لیے اس کام کو دو نان اوور لیپنگ سب ٹاسک (نقشہ کے ساتھ کام کرنا اور موسیقی کے ساتھ کام کرنا) میں تقسیم کیا گیا تھا تاکہ لڑکے آزادانہ طور پر کام کر سکیں، اور میں نے نتائج کو یکجا کرنے کے لیے خود کو سنبھال لیا۔

Hackathon DevDays'19 (حصہ 1): سفارشات کے ساتھ ایک ڈائری، واکنگ روٹ جنریٹر اور مائع جمہوریتہم میں سے کسی نے بھی گوگل میپ API یا تحریری ٹیلیگرام بوٹس کے ساتھ کبھی کام نہیں کیا تھا، اس لیے سب سے اہم مسئلہ اس پروجیکٹ کو لاگو کرنے کے لیے مختص کیے گئے وقت کا تھا: کسی چیز کو سمجھنے میں ہمیشہ اس سے زیادہ وقت لگتا ہے جسے آپ اچھی طرح جانتے ہو۔ ٹیلیگرام بوٹ API کا انتخاب کرنا بھی مشکل تھا: بلاک کرنے کی وجہ سے، یہ سب کام نہیں کرتے اور مجھے سب کچھ ترتیب دینے کے لیے جدوجہد کرنی پڑی۔

یہ الگ سے قابل ذکر ہے کہ راستے پیدا کرنے کا مسئلہ کیسے حل ہوا۔ دو مقامات کے درمیان روٹ بنانا آسان ہے، لیکن اگر آپ صرف روٹ کی لمبائی معلوم ہو تو آپ صارف کو کیا پیش کر سکتے ہیں؟ صارف کو 10 کلومیٹر پیدل چلنے کی اجازت دیں۔ ایک نقطہ کو من مانی سمت میں منتخب کیا جاتا ہے، جس کا فاصلہ سیدھی لائن میں 10 کلومیٹر ہے، جس کے بعد حقیقی سڑکوں کے ساتھ اس مقام تک ایک راستہ بنایا جاتا ہے۔ زیادہ امکان ہے کہ یہ سیدھا نہیں ہوگا، اس لیے ہم اسے مخصوص 10 کلومیٹر تک مختصر کر دیں گے۔ اس طرح کے راستوں کے لیے بہت سارے اختیارات ہیں - ہمیں ایک حقیقی روٹ جنریٹر ملا ہے!

ابتدائی طور پر، میں نقشے کو ہرے بھرے علاقوں سے مماثل علاقوں میں تقسیم کرنا چاہتا تھا: پشتے، صحن، گلیاں، تاکہ چہل قدمی کے لیے سب سے خوشگوار راستہ حاصل کیا جا سکے، اور ان علاقوں کے مطابق موسیقی بھی تیار کی جا سکے۔ لیکن گوگل میپ API کا استعمال کرتے ہوئے ایسا کرنا مشکل نکلا (ہمارے پاس اس مسئلے کو حل کرنے کا وقت نہیں تھا)۔ تاہم، مخصوص قسم کے مقامات (دکان، پارک، لائبریری) کے ذریعے راستے کی تعمیر کو عملی جامہ پہنانا ممکن تھا: اگر راستہ تمام مخصوص جگہوں کے ارد گرد جاتا ہے، لیکن مطلوبہ فاصلہ ابھی تک طے نہیں کیا گیا ہے، تو اسے مکمل کیا جاتا ہے۔ بے ترتیب سمت میں صارف کا مخصوص فاصلہ۔ Google Map API آپ کو سفر کے اندازے کا حساب لگانے کی بھی اجازت دیتا ہے، جو آپ کو پوری واک کے لیے بالکل ایک پلے لسٹ کا انتخاب کرنے میں مدد کرتا ہے۔

اس کے نتیجے کے طور پر، ایک نسل بنانے میں کامیاب نقطہ آغاز، فاصلے اور درمیانی پوائنٹس کے ذریعے راستے؛ راستے کے حصوں کے مطابق موسیقی کی درجہ بندی کرنے کے لیے سب کچھ تیار کیا گیا تھا، لیکن وقت کی کمی کی وجہ سے پلے لسٹ کو صرف ایک اضافی UI برانچ کے طور پر منتخب کرنے کا اختیار چھوڑنے کا فیصلہ کیا گیا۔ اس طرح، صارف آزادانہ طور پر سننے کے لیے موسیقی کا انتخاب کرنے کے قابل تھا۔

موسیقی کے ساتھ کام کرنے میں بنیادی مسئلہ یہ نہیں جاننا تھا کہ mp3 فائلیں کہاں سے حاصل کی جائیں بغیر صارف کو کسی بھی سروس پر اکاؤنٹ رکھنے کی ضرورت ہے۔ صارف (UserMusic mode) سے موسیقی کی درخواست کرنے کا فیصلہ کیا گیا۔ اس سے ایک نیا مسئلہ پیدا ہوتا ہے: ہر کسی کے پاس ٹریک ڈاؤن لوڈ کرنے کی صلاحیت نہیں ہوتی۔ ایک حل یہ ہے کہ صارفین کی موسیقی کے ساتھ ایک ذخیرہ بنایا جائے (BotMusic mode) - اس سے آپ خدمات سے قطع نظر موسیقی تیار کر سکتے ہیں۔

اگرچہ کامل نہیں، ہم نے کام مکمل کر لیا: ہم نے ایک ایسی ایپلی کیشن ختم کی جسے میں استعمال کرنا چاہوں گا۔ عام طور پر، یہ بہت اچھا ہے: تین دن پہلے آپ کو صرف ایک خیال تھا اور اس پر عمل درآمد کرنے کے بارے میں ایک بھی سوچ نہیں تھی، لیکن اب ایک کام کرنے والا حل موجود ہے۔ یہ تین دن میرے لیے بہت اہم تھے۔ میں اب کسی ایسی چیز کو سامنے لانے سے نہیں ڈرتا جس پر عمل کرنے کے لیے میرے پاس اتنا علم نہیں ہے، ٹیم کی قیادت کرنا ناقابل یقین حد تک دلچسپ تھا، اور میں نے ان شاندار لوگوں کو جانا جنہوں نے میری ٹیم میں شمولیت اختیار کی۔ بہتر!

مائع جمہوریت۔

Hackathon DevDays'19 (حصہ 1): سفارشات کے ساتھ ایک ڈائری، واکنگ روٹ جنریٹر اور مائع جمہوریت

خیال کے مصنف
Stanislav Sychev
کمانڈ کا ڈھانچہ
Stanislav Sychev - ٹیم لیڈ، ڈیٹا بیس
نکولے ایزیوموف - بوٹ انٹرفیس
انتون ریابوشیف - پسدید

مختلف گروہوں کے اندر، اکثر فیصلہ کرنے یا ووٹ دینے کی ضرورت ہوتی ہے۔ عموماً ایسے معاملات میں وہ سہارا لیتے ہیں۔ براہ راست جمہوریتتاہم، جب گروپ بڑا ہو جائے تو مسائل پیدا ہو سکتے ہیں۔ مثال کے طور پر، ہو سکتا ہے کہ کسی گروپ میں کوئی فرد اکثر سوالات کا جواب نہ دینا چاہے یا بعض موضوعات کے بارے میں سوالات کے جوابات نہ دینا چاہے۔ بڑے گروہوں میں، مسائل سے بچنے کے لیے جن کا وہ سہارا لیتے ہیں۔ نمائندہ جمہوریت، جب تمام لوگوں میں سے "نائبوں" کا ایک الگ گروپ منتخب کیا جاتا ہے، جو باقی لوگوں کو انتخاب کے بوجھ سے آزاد کرتے ہیں۔ لیکن ایسا نائب بننا کافی مشکل ہے، اور جو شخص بن جائے گا وہ ایماندار اور قابل احترام نہیں ہوگا، جیسا کہ وہ ووٹرز کو لگتا تھا۔

دونوں نظاموں کے مسائل کو حل کرنے کے لیے برائن فورڈ نے یہ تصور پیش کیا۔ مائع جمہوریت. ایسے نظام میں، ہر کوئی اپنی خواہش کا اظہار کرتے ہوئے، باقاعدہ صارف یا مندوب کا کردار منتخب کرنے کے لیے آزاد ہے۔ کوئی بھی آزادانہ طور پر ووٹ دے سکتا ہے یا ایک یا زیادہ مسائل پر کسی مندوب کو ووٹ دے سکتا ہے۔ ایک مندوب بھی اپنا ووٹ ڈال سکتا ہے۔ مزید برآں، اگر ڈیلیگیٹ اب ووٹر کے مطابق نہیں ہے، تو ووٹ کسی بھی وقت واپس لیا جا سکتا ہے۔

سیاست میں مائع جمہوریت کے استعمال کی مثالیں ملتی ہیں، اور ہم لوگوں کے ہر قسم کے گروہوں کے اندر روزمرہ کے استعمال کے لیے اسی طرح کے خیال کو نافذ کرنا چاہتے تھے۔ اگلے DevDays ہیکاتھون میں، ہم نے مائع جمہوریت کے اصولوں کے مطابق ووٹنگ کے لیے ٹیلیگرام بوٹ لکھنے کا فیصلہ کیا۔ ایک ہی وقت میں، میں ایسے بوٹس کے ساتھ ایک عام مسئلہ سے بچنا چاہتا تھا - بوٹ کے پیغامات کے ساتھ عام بات چیت کو روکنا۔ حل یہ ہے کہ ذاتی گفتگو میں زیادہ سے زیادہ فعالیت لائی جائے۔

Hackathon DevDays'19 (حصہ 1): سفارشات کے ساتھ ایک ڈائری، واکنگ روٹ جنریٹر اور مائع جمہوریتاس بوٹ کو بنانے کے لیے ہم نے استعمال کیا۔ ٹیلیگرام سے API. ووٹنگ اور وفود کی تاریخ کو ذخیرہ کرنے کے لیے پوسٹگری ایس کیو ایل ڈیٹا بیس کا انتخاب کیا گیا تھا۔ بوٹ کے ساتھ بات چیت کرنے کے لیے، ایک فلاسک سرور نصب کیا گیا تھا۔ ہم نے ان ٹیکنالوجیز کا انتخاب کیا کیونکہ... ہمیں اپنے ماسٹر کی تعلیم کے دوران ان کے ساتھ بات چیت کرنے کا تجربہ پہلے ہی ہو چکا تھا۔ پروجیکٹ کے تین اجزاء پر کام — ڈیٹا بیس، سرور، اور بوٹ — ٹیم کے اراکین میں کامیابی کے ساتھ تقسیم کیا گیا۔

بلاشبہ، تین دن ایک مختصر وقت ہے، اس لیے ہیکاتھون کے دوران ہم نے اس خیال کو پروٹو ٹائپ کی سطح تک نافذ کیا۔ نتیجے کے طور پر، ہم نے ایک بوٹ بنایا جو عام چیٹ کو صرف ووٹنگ کے آغاز اور اس کے گمنام نتائج کے بارے میں معلومات لکھتا ہے۔ ووٹ ڈالنے اور پول بنانے کی صلاحیت بوٹ کے ساتھ ذاتی خط و کتابت کے ذریعے لاگو ہوتی ہے۔ ووٹ دینے کے لیے، ایک کمانڈ درج کریں جو ان مسائل کی فہرست دکھاتا ہے جن پر براہ راست توجہ کی ضرورت ہوتی ہے۔ ذاتی خط و کتابت میں، آپ مندوبین کی فہرست اور ان کے سابقہ ​​ووٹ دیکھ سکتے ہیں، اور انہیں کسی ایک عنوان پر اپنا ووٹ بھی دے سکتے ہیں۔

کام کی مثال کے ساتھ ویڈیو.

اس پروجیکٹ پر کام کرنا دلچسپ تھا، ہم آدھی رات تک یونیورسٹی میں رہے، ہمارا خیال ہے کہ یہ پڑھائی سے وقفہ لینے کا ایک بہترین طریقہ ہے، حالانکہ یہ بہت تھکا دینے والا ہے۔ قریبی ٹیم میں کام کرنا ایک خوشگوار تجربہ تھا۔

پی ایس اگلے تعلیمی سال کے لیے ماسٹرز پروگراموں کے لیے اندراج پہلے ہی ہو چکا ہے۔ کھلا ہوا ہے. ابھی شامل ہوں!

ماخذ: www.habr.com

نیا تبصرہ شامل کریں