Hackathon DevDays'19 (մաս 1). օրագիր առաջարկություններով, քայլող երթուղու գեներատոր և հեղուկ ժողովրդավարություն

Վերջերս մենք պատմեց JetBrains-ի և ITMO համալսարանի կորպորատիվ մագիստրոսական ծրագրի մասին «Ծրագրաշարերի մշակում / Ծրագրային ճարտարագիտություն»: Բոլոր հետաքրքրվածներին հրավիրում ենք բաց դռների երկուշաբթի՝ ապրիլի 29-ին։ Մենք ձեզ կպատմենք մեր մագիստրոսական ծրագրի առավելությունների մասին, թե ինչ բոնուսներ ենք առաջարկում ուսանողներին և ինչ ենք պահանջում դրա դիմաց։ Բացի այդ, մենք անպայման կպատասխանենք մեր հյուրերի հարցերին:

Hackathon DevDays'19 (մաս 1). օրագիր առաջարկություններով, քայլող երթուղու գեներատոր և հեղուկ ժողովրդավարությունԲաց դռների օրը կանցկացվի JetBrains-ի գրասենյակում՝ Times Business Center-ում, որտեղ սովորում են մեր մագիստրատուրայի ուսանողները։ Սկիզբը՝ 17:00-ին։ Բոլոր մանրամասներին կարող եք ծանոթանալ և գրանցվել միջոցառմանը կայքում mse.itmo.ru. Եկեք և չեք փոշմանի:

Ծրագրի հիմնական բաղադրիչներից է պրակտիկան: Ուսանողները շատ բան ունեն՝ շաբաթական տնային առաջադրանքներ, կիսամյակային նախագծեր և հաքաթոններ: Ուսումնառության ընթացքում զարգացման ժամանակակից մեթոդոլոգիաների և տեխնոլոգիաների մեջ լիարժեք ընկղմվելու շնորհիվ շրջանավարտներն արագ ինտեգրվում են ՏՏ խոշոր ընկերությունների աշխատանքային գործընթացներին:

Այս գրառման մեջ մենք ցանկանում ենք ավելի մանրամասն խոսել DevDays հաքաթոնների մասին, որոնք տեղի են ունենում վեց ամիսը մեկ։ Կանոնները պարզ են. հավաքվում են 3-4 հոգանոց թիմեր և երեք օր ուսանողները կյանքի են կոչում իրենց սեփական գաղափարները: Ի՞նչ կարող է ստացվել սրանից: Կարդացեք այս կիսամյակի հաքաթոնային նախագծերի պատմությունների առաջին մասը հենց ուսանողներից :)

Օրագիր ֆիլմերի առաջարկներով

Hackathon DevDays'19 (մաս 1). օրագիր առաջարկություններով, քայլող երթուղու գեներատոր և հեղուկ ժողովրդավարություն

Գաղափարի հեղինակը
Իվան Իլչուկ
Թիմի կազմը
Իվան Իլչուկ – ֆիլմի սյուժեի վերլուծություն, սերվեր
Վլադիսլավ Կորաբլինով – մոդելների մշակում օրագրի մուտքի մոտիկությունը և ֆիլմի սյուժեն համեմատելու համար
Դմիտրի Վալչուկ – UI
Նիկիտա Վինոկուրով – UI, դիզայն

Մեր նախագծի նպատակն էր գրել աշխատասեղանի հավելված՝ օրագիր, որը օգտատերին ֆիլմեր կառաջարկեր՝ հիմնվելով դրա մեջ եղած գրառումների վրա:

Այս միտքը ծագեց ինձ մոտ, երբ գնում էի համալսարան և մտածում էի իմ խնդիրների մասին: «Մարդուն ինչ խնդրի առաջ է կանգնում, ինչ-որ դասական գրող արդեն գրել է դրա մասին»,- մտածեցի ես։ «Եվ քանի որ ինչ-որ մեկը գրել է այն, դա նշանակում է, որ ինչ-որ մեկն արդեն նկարահանել է այն»: Այսպիսով, նույն հոգեկան տանջանք ունեցող մարդու մասին ֆիլմ դիտելու ցանկությունը բնական երևաց։

Ակնհայտ է, որ կան առանձին օրագրերի և առանձին առաջարկությունների ծառայությունների լայն տեսականի (բայց սովորաբար առաջարկությունները հիմնված են այն բանի վրա, ինչ նախկինում դուր է եկել անձին): Սկզբունքորեն, այս նախագիծը ընդհանուր բան ունի ֆիլմի որոնման հիմնական կետերի հետ, բայց, այնուամենայնիվ, առաջին հերթին մեր հավելվածն ապահովում է օրագրի ֆունկցիոնալությունը:

Hackathon DevDays'19 (մաս 1). օրագիր առաջարկություններով, քայլող երթուղու գեներատոր և հեղուկ ժողովրդավարությունԻնչպե՞ս իրականացրինք սա։ Երբ սեղմում եք կախարդական կոճակը, օրագիրը մուտք է ուղարկում սերվեր, որտեղ ֆիլմն ընտրվում է Վիքիպեդիայից վերցված նկարագրության հիման վրա։ Մեր ճակատը ստեղծվել է Electron-ով (մենք օգտագործում ենք այն, ոչ թե վեբկայքը, քանի որ ի սկզբանե որոշել էինք օգտատիրոջ տվյալները պահել ոչ թե սերվերի վրա, այլ լոկալ համակարգչում), իսկ սերվերը և առաջարկությունների համակարգը ինքնին պատրաստվել էին Python-ում. ստացված նկարագրություններից -IDF վեկտորները, որոնք համեմատվել են օրագրի մուտքագրման վեկտորի մոտիկության համար:

Թիմի անդամներից մեկը աշխատել է միայն մոդելի վրա, մյուսն ամբողջությամբ աշխատել է ճակատային մասում (սկզբում երրորդ անդամի հետ միասին, որը հետագայում անցել է թեստավորման): Ես զբաղվում էի Վիքիպեդիայից և սերվերից ֆիլմերի սյուժեների վերլուծությամբ։

Քայլ առ քայլ մենք մոտեցանք արդյունքին՝ հաղթահարելով մի շարք խնդիրներ՝ սկսած նրանից, որ մոդելն ի սկզբանե պահանջում էր շատ օպերատիվ հիշողություն, վերջացրած տվյալները սերվեր փոխանցելու դժվարությամբ։

Այժմ երեկոյի համար ֆիլմ գտնելու համար մեծ ջանք պետք չէ. մեր եռօրյա աշխատանքի արդյունքը աշխատասեղանի հավելվածն ու սերվերն է, որին օգտատերը մուտք է գործում https-ի միջոցով՝ ի պատասխան ստանալով 5 ֆիլմերի ընտրանի։ համառոտ նկարագրություն և պաստառ։

Նախագծից իմ տպավորությունները շատ դրական են. աշխատանքը գրավում էր վաղ առավոտից մինչև ուշ գիշեր, և արդյունքում ստացված հավելվածը պարբերաբար տալիս է ծայրաստիճան զվարճալի արդյունքներ՝ «Անքուն գիշեր» ոճով, համալսարանում տնային աշխատանքների մասին օրագրում կամ ֆիլմում գրելու համար: դպրոցի առաջին օրվա մասին՝ բաժնում առաջին օրվա մասին պատմվածքի համար:

Կարելի է գտնել համապատասխան հղումներ, տեղադրողներ և այլն այստեղ.

Երթուղու գեներատոր

Hackathon DevDays'19 (մաս 1). օրագիր առաջարկություններով, քայլող երթուղու գեներատոր և հեղուկ ժողովրդավարությունԳաղափարի հեղինակը
Արտեմևա Իրինա
Թիմի կազմը
Արտեմևա Իրինա - թիմի առաջատար, հիմնական օղակ
Գորդեևա Լյուդմիլա - երաժշտություն
Պլատոնով Վլադիսլավ – երթուղիներ

Ես շատ եմ սիրում շրջել քաղաքում՝ նայել շենքերին, մարդկանց, մտածել պատմության մասին։ Բայց նույնիսկ իմ բնակության վայրը փոխելիս վաղ թե ուշ երթուղի ընտրելու խնդրի առաջ եմ կանգնում. ավարտեցի բոլոր այն, ինչ մտքովս անցավ։ Ահա թե ինչպես առաջացավ երթուղիների ստեղծման ավտոմատացման գաղափարը. դուք նշում եք երթուղու մեկնարկային կետը և երկարությունը, և ծրագիրը ձեզ հնարավորություն է տալիս: Զբոսանքները կարող են երկար լինել, ուստի գաղափարի տրամաբանական զարգացումը, թվում է, ավելացնում է «կանգառի» համար միջանկյալ կետեր նշելու հնարավորությունը, որտեղ դուք կարող եք խորտիկ ուտել և հանգստանալ: Զարգացման մեկ այլ ճյուղ երաժշտությունն էր։ Երաժշտության ներքո քայլելը միշտ ավելի զվարճալի է, ուստի հիանալի կլինի ավելացնել ստեղծած երթուղու հիման վրա երգացանկ ընտրելու հնարավորությունը:

Նման լուծումներ հնարավոր չէր գտնել առկա հավելվածների մեջ։ Ամենամոտ անալոգները ցանկացած երթուղի պլանավորողներն են՝ 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 ռեժիմ), որից դուք կարող եք երաժշտություն ստեղծել՝ անկախ ծառայություններից:

Թեև կատարյալ չէ, բայց մենք ավարտեցինք առաջադրանքը. մենք վերջացրինք մի հավելված, որը ես կցանկանայի օգտագործել: Ընդհանրապես, սա շատ լավն է. երեք օր առաջ դուք միայն գաղափար ունեիք, և ոչ մի միտք այն մասին, թե կոնկրետ ինչպես իրականացնել այն, բայց հիմա կա աշխատանքային լուծում: Ինձ համար այս երեք օրերը շատ կարևոր էին: Ես այլևս չեմ վախենում մի բանով հանդես գալ, որը բավարար գիտելիքներ չունեմ իրականացնելու համար, թիմային ղեկավար լինելը աներևակայելի հետաքրքիր էր, և ես ծանոթացա իմ թիմին միացած հրաշալի տղաների հետ: ավելի լավ!

Հեղուկ ժողովրդավարություն

Hackathon DevDays'19 (մաս 1). օրագիր առաջարկություններով, քայլող երթուղու գեներատոր և հեղուկ ժողովրդավարություն

Գաղափարի հեղինակը
Ստանիսլավ Սիչև
Թիմի կազմը
Ստանիսլավ Սիչև - թիմի ղեկավար, տվյալների բազա
Նիկոլայ Իզյումով - բոտի ինտերֆեյս
Անտոն Ռյաբուշև - հետնամաս

Տարբեր խմբերի ներսում հաճախ է լինում որոշում կայացնելու կամ քվեարկելու անհրաժեշտություն։ Սովորաբար նման դեպքերում դիմում են ուղղակի ժողովրդավարություն, սակայն, երբ խումբը մեծանա, կարող են խնդիրներ առաջանալ։ Օրինակ, խմբում գտնվող անձը կարող է չցանկանալ հաճախակի պատասխանել հարցերին կամ պատասխանել որոշակի թեմաների վերաբերյալ հարցերին: Խոշոր խմբերում խնդիրներից խուսափելու համար նրանք դիմում են ներկայացուցչական ժողովրդավարություն, երբ բոլոր մարդկանց միջից ընտրվում է «պատգամավորների» առանձին խումբ, որոնք ազատում են մնացածին ընտրության բեռից։ Բայց նման պատգամավոր դառնալը բավականին դժվար է, և նա, ով դառնում է, անպայման չի լինի ազնիվ ու հարգալից, ինչպես թվում էր ընտրողներին։

Երկու համակարգերի խնդիրները լուծելու համար Բրայան Ֆորդն առաջարկեց հայեցակարգը հեղուկ ժողովրդավարություն. Նման համակարգում յուրաքանչյուրն ազատ է սովորական օգտատիրոջ կամ պատվիրակի դերի ընտրության հարցում՝ պարզապես արտահայտելով իր ցանկությունը։ Յուրաքանչյուր ոք կարող է ինքնուրույն քվեարկել կամ ձայն տալ պատվիրակին մեկ կամ մի քանի հարցերի շուրջ: Պատվիրակը կարող է նաև իր ձայնը տալ։ Ավելին, եթե պատվիրակն այլևս չի համապատասխանում ընտրողին, ապա քվեարկությունը ցանկացած պահի կարող է հետ կանչվել։

Հեղուկ դեմոկրատիայի կիրառման օրինակներ կան քաղաքականության մեջ, և մենք ցանկանում էինք նմանատիպ գաղափար իրականացնել ամենօրյա օգտագործման համար՝ մարդկանց բոլոր տեսակի խմբերում: Հաջորդ DevDays հաքաթոնին մենք որոշեցինք գրել Telegram բոտ՝ հեղուկ ժողովրդավարության սկզբունքներով քվեարկելու համար։ Միևնույն ժամանակ, ես ուզում էի խուսափել նման բոտերի հետ կապված ընդհանուր խնդրից՝ ընդհանուր չաթի խցանումը բոտի հաղորդագրություններով: Լուծումը անձնական զրույցի մեջ հնարավորինս շատ ֆունկցիոնալություն բերելն է:

Hackathon DevDays'19 (մաս 1). օրագիր առաջարկություններով, քայլող երթուղու գեներատոր և հեղուկ ժողովրդավարությունԱյս բոտը ստեղծելու համար մենք օգտագործել ենք API Telegram-ից. Ընտրվել է PostgreSQL տվյալների բազա՝ քվեարկության և պատվիրակությունների պատմությունը պահելու համար: Բոտի հետ շփվելու համար տեղադրվել է Flask սերվեր: Մենք ընտրել ենք այս տեխնոլոգիաները, քանի որ... մենք արդեն ունեցել ենք նրանց հետ շփվելու փորձ մեր մագիստրատուրայի ընթացքում: Ծրագրի երեք բաղադրիչների՝ տվյալների բազայի, սերվերի և բոտի վրա աշխատանքը հաջողությամբ բաշխվեց թիմի անդամների միջև:

Իհարկե, երեք օրը քիչ ժամանակ է, ուստի հեքըթոնի ընթացքում մենք մտահղացումն իրականացրեցինք նախատիպային մակարդակով։ Արդյունքում մենք ստեղծեցինք բոտ, որը ընդհանուր չաթում գրում է միայն քվեարկության բացման և դրա անանուն արդյունքների մասին տեղեկություններ։ Քվեարկելու և հարցում ստեղծելու հնարավորությունն իրականացվում է բոտի հետ անձնական նամակագրության միջոցով։ Քվեարկելու համար մուտքագրեք հրաման, որը ցույց է տալիս անմիջական ուշադրություն պահանջող խնդիրների ցանկը: Անձնական նամակագրության մեջ դուք կարող եք տեսնել պատվիրակների ցուցակը և նրանց նախորդ ձայները, ինչպես նաև նրանց տալ ձեր ձայնը թեմաներից մեկում:

Տեսանյութ աշխատանքի օրինակով.

Հետաքրքիր էր աշխատել նախագծի վրա, մենք մնացինք համալսարանում մինչև կեսգիշեր, կարծում ենք, որ սա հիանալի միջոց է ուսումից ընդմիջելու համար, թեև շատ հոգնեցնող է։ Հաճելի փորձ էր աշխատել սերտ թիմում:

Հ.Գ. Հաջորդ ուսումնական տարվա մագիստրատուրայի ընդունելությունն արդեն ավարտված է բացել. Միացեք մեզ!

Աղբյուրը` www.habr.com

Добавить комментарий