Ծրագրի սարքավորում. ինչպես մենք կառուցեցինք սենյակ հաքերային որոնումներով

Ծրագրի սարքավորում. ինչպես մենք կառուցեցինք սենյակ հաքերային որոնումներով
Մի երկու շաբաթ առաջ մենք ծախսեցինք առցանց որոնում հաքերների համարՆրանք կառուցել են մի սենյակ, որը լցրել են խելացի սարքերով և այնտեղից YouTube հեռարձակում են սկսել։ Խաղացողները կարող էին կառավարել IoT սարքերը խաղի կայքից. Նպատակն էր գտնել սենյակում թաքնված զենք (հզոր լազերային ցուցիչ), կոտրել այն և կարճ միացում առաջացնել սենյակում։

Գործողությունը ավելացնելու համար մենք սենյակում տեղադրեցինք մանրացնող սարք, որի մեջ լցրեցինք 200 ռուբլի. ջարդիչը ժամում ուտում էր մեկ թղթադրամ: Խաղը հաղթելուց հետո դուք կարող եք կանգնեցնել մանրացնող սարքը և վերցնել մնացած գումարը:

Մենք արդեն ասել ենք քայլարշավԻսկ ինչպես է պատրաստվել հետնամասը նախագիծը։ Ժամանակն է խոսել ապարատային և այն մասին, թե ինչպես է այն հավաքվել:


Բազմաթիվ խնդրանքներ եղան՝ ցույց տալու սենյակ մաքրելու պահը. մենք ցույց ենք տալիս, թե ինչպես ենք այն բաժանում

Սարքավորումների ճարտարապետություն. սենյակի կառավարում

Մենք սկսեցինք նախագծել ապարատային լուծում, երբ սցենարն արդեն մոտավորապես հասկացված էր, հետնամասը պատրաստ էր, և մենք դատարկ սենյակ ունեինք սարքավորումները տեղադրելու համար:

Հիշելով հին կատակը՝ «S-ը IoT-ում նշանակում է անվտանգություն» («S տառը IoT հապավումում նշանակում է Անվտանգություն»), մենք որոշեցինք, որ այս անգամ խաղի սցենարի խաղացողները շփվում են միայն ճակատային և հետին մասի հետ։ կայքից, բայց հնարավորություն չեն ստանում անմիջապես արդուկին հասնել:

Սա արվել է անվտանգության նկատառումներից ելնելով և էկրանի վրա կատարվող իրադարձությունների դիտման համար. խաղացողների կողմից սարքաշարի անմիջական մուտքի դեպքում շատ ավելի դժվար կլինի մեկուսացնել անվտանգ և պոտենցիալ վտանգավոր գործողությունները, օրինակ՝ մանրացնող սարքի արագ ոլորումը կամ կառավարումը: պիրոտեխնիկա.

Նախքան դիզայնը սկսելը, մենք ձևակերպեցինք մի քանի սկզբունքներ խաղային սարքերի կառավարման համար, որոնք դարձան դիզայնի հիմքը.

Մի օգտագործեք անլար լուծումներ

Ամբողջ խաղային տարածքը գտնվում է մեկ շրջանակում, որի յուրաքանչյուր անկյուն կարելի է հասնել: Անլար կապերի իրական կարիք չկար, և դրանք պարզապես կդառնային ձախողման ևս մեկ կետ:

Մի օգտագործեք հատուկ խելացի տան սարքեր

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

Բացի այդ, պետք էր այնպիսի սարքեր ստեղծել, որոնք հստակ ցույց կտան, որ հենց խաղացողներն են փոխել դրա վիճակը՝ միացրել/անջատել են այն կամ կոնկրետ լույս վառել FALCON տառերի վրա։

Մենք հավաքել ենք բոլոր տարրերը հանրությանը հասանելի սարքավորումներից, որոնք կարելի է գնել սովորական ռադիոպահեստամասերի խանութներում. պիցցա և դիետիկ կոլա առաքելու միջև, առաքիչները Chip and Dip-ը և Leroy-ն անընդհատ գալիս էին կայք:

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

Բոլոր ռելեները և արուդինը չպետք է տեսանելի լինեն շրջանակում

Մենք որոշեցինք բոլոր կառավարելի տարրերը բերել մեկ տեղում և թաքցնել դրանք կուլիսների հետևում, որպեսզի կարողանանք վերահսկել դրանց կատարումը և, անհրաժեշտության դեպքում, զգուշորեն սողալ տեսախցիկի տեսադաշտից և փոխարինել ձախողված միավորը:

Ծրագրի սարքավորում. ինչպես մենք կառուցեցինք սենյակ հաքերային որոնումներով
Ի վերջո, ամեն ինչ թաքցվել է սեղանի տակ, և տեսախցիկը տեղադրվել է այնպես, որ սեղանի տակ ոչինչ չի երևում։ Սա մեր «կույր կետն» էր, որպեսզի ինժեները սողաց

Արդյունքում մենք փաստացի ստացանք մեկ խելացի սարք՝ այն ստացավ իր յուրաքանչյուր մասի վիճակը backend-ից և փոխեց այն համապատասխան հրամանով։

Սարքավորումների ներդրման տեսանկյունից այս սարքը կառավարում էր 6 տարր.

  1. Սեղանի մի քանի լամպեր, դրանք ունեն միացված/անջատված վիճակ և կառավարվում են խաղացողների կողմից
  2. Նամակները պատին, նրանք կարող են փոխել իրենց գույնը խաղացողների հրամանով
  3. Երկրպագուներ, որոնք պտտվում և բացում են ֆլիպչարտը, երբ սերվերը բեռնված է
  4. Լազերային կառավարում PWM-ի միջոցով
  5. Շրեդեր, որը ժամանակացույցով գումար է կերել
  6. Ծխի մեքենա, որն անջատվում էր յուրաքանչյուր լազերային կրակոցից առաջ


Ծխի մեքենայի փորձարկում լազերային օգնությամբ

Հետագայում ավելացվեց բեմի լույսը, որը կանգնած էր կուլիսների հետևում և կառավարվում էր ճիշտ այնպես, ինչպես լամպերը 1-ին կետից: Բեմի լույսը գործում էր երկու դեպքում. այն լուսավորում էր լազերը, երբ ուժ էր գործադրվում դրա վրա և լուսավորում էր քաշը մինչև լազերի գործարկումը: մարտական ​​ռեժիմ.

Ի՞նչ էր այս խելացի սարքը:

Ծրագրի սարքավորում. ինչպես մենք կառուցեցինք սենյակ հաքերային որոնումներով

Ողջ ճանապարհին Յուրան՝ մեր ապարատային տղան, փորձում էր չբարդացնել ամեն ինչ և գտնել ամենապարզ, մինիմալիստական ​​հնարավոր լուծումը:

Ենթադրվում էր, որ VPS-ը պարզապես կաշխատի մի սկրիպտ, որը ստանում է json սարքերի վիճակի հետ և ուղարկում այն ​​Arduino-ին, որը միացված է USB-ի միջոցով:

Միացված է նավահանգիստներին.

  • 16 սովորական ռելեներ (հենց նրանք էին կլանում ձայնը, որը լսվում էր տեսահոլովակում: Հիմնականում դրանք ընտրել ենք հենց այս ձայնի պատճառով)
  • 4 պինդ վիճակի ռելեներ՝ PWM ալիքները կառավարելու համար, ինչպիսիք են օդափոխիչները,
  • առանձին PWM ելք լազերային համար
  • ելք, որը ազդանշան է առաջացնում LED շերտի համար

Ահա json հրամանի օրինակ, որը սերվերից եկավ ռելեին

{"power":false,"speed":0,"period":null,"deviceIdentifier":"FAN"}

Եվ սա մի ֆունկցիայի օրինակ է, որով հրամանը հասել է Արուդինո

def callback(ch, method, properties, body):    
request = json.loads(body.decode("utf-8"))    
print(request, end="n")     
send_to_serial(body)

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

Ծրագրի սարքավորում. ինչպես մենք կառուցեցինք սենյակ հաքերային որոնումներով
Քաշի շարժը վերահսկելու կոճակ

Այս ազդանշանով պետք է վառվեին պինգ-պոնգի գնդակներից պատրաստված ծխային ռումբեր։ Սերվերի պատյանի մեջ դրեցինք 4 ծխի բռնկում և միացրինք նիկրոմի թելով, որը պետք է տաքանար և աշխատեր բռնկիչի պես։

Ծրագրի սարքավորում. ինչպես մենք կառուցեցինք սենյակ հաքերային որոնումներով
Բնակարան ծխի ռումբերով և չինական ծաղկեպսակով

Ծրագրի սարքավորում. ինչպես մենք կառուցեցինք սենյակ հաքերային որոնումներով

Արդուինո

Նախնական պլանի համաձայն՝ Arduino-ում երկու գործողություն է տեղի ունեցել.

Նախ, երբ ստացվեց նոր հարցում, հարցումը վերլուծվեց ArduinoJson գրադարանի միջոցով: Այնուհետև յուրաքանչյուր կառավարվող սարք համեմատվել է իր երկու հատկությունների հետ.

  • հոսանքի վիճակ «միացված» կամ «անջատված» (ստանդարտ վիճակ)
  • այն ժամանակահատվածը, որի համար սարքը միացված է - տախտակի մեկնարկից միկրովայրկյաններով ժամանակը, երբ այն անջատելու ժամանակն է, այսինքն՝ վիճակը հասցնել ստանդարտի

Նախորդ անգամ այն ​​սահմանվել էր JSON-ում համապատասխան պարամետրը ստանալու ժամանակ, բայց այն չհաջողվեց փոխանցել, այնուհետև արժեքը դրվեց 0-ի, և ոչ մի զրոյացում տեղի չունեցավ:

Երկրորդ գործողությունը, որը Arduino-ն կատարում էր ամեն ցիկլ, վիճակների թարմացումն էր, այսինքն՝ ստուգում էր արդյոք ինչ-որ բան միացնելու անհրաժեշտություն, թե՞ ժամանակն է անջատել որևէ սարք։

Լազերային ցուցիչ - նույն Megatron 3000

Ծրագրի սարքավորում. ինչպես մենք կառուցեցինք սենյակ հաքերային որոնումներով

Սա սովորական LSMVR450-3000MF 3000mW 450nm ձեռքով ֆոկուսային լազերային կտրման և նշագրման մոդուլ է:

Նամակներ Falcon

Դրանք պատրաստվել են շատ պարզ՝ մենք ուղղակի պատճենեցինք լոգոյի տառերը, կտրեցինք ստվարաթղթից, այնուհետև ծածկեցինք LED ժապավենով։ Այս դեպքում ես պետք է կպցնեի ժապավենի կտորները, յուրաքանչյուր կարի վրա 4 կոնտակտ, բայց արդյունքն արժեր: Մեր հետնապահ փաշան հմտության հրաշքներ ցույց տվեց՝ դա անելով մի քանի ժամից էլ քիչ ժամանակում։

iot սարքի առաջին փորձարկումները և հարդարումը

Մենք կատարեցինք առաջին թեստերը և միևնույն ժամանակ մեզ հասան նոր առաջադրանքներ։ Փաստն այն է, որ գործընթացի կեսին թիմին միացավ իսկական կինոպրոդյուսեր և օպերատոր VGIK-ից՝ Իլյա Սերովը. պատկերն ավելի դրամատիկ ու թատերական:

Սա զգալիորեն բարձրացրեց որակը, բայց հայտնվեցին տարրեր, որոնք նույնպես պետք է միացվեին ռելեին և սահմանված գործողության ալգորիթմին:

Մյուս խնդիրը լազերային էր. մենք մի քանի փորձեր արեցինք տարբեր տեսակի պարաններով և տարբեր հզորության լազերներով: Փորձարկման համար մենք ուղղակի քաշ ենք կախել պարանից ուղղահայաց:

Փորձարկման նշանով վազելիս PWM-ի միջոցով կարգավորվող հզորությունը 10%-ից պակաս էր և չէր վնասում պարանը նույնիսկ երկար ազդեցության դեպքում:

Մարտական ​​ռեժիմի համար լազերը ապակենտրոնացվել է մոտավորապես 10 մմ տրամագծով կետի վրա և այն վստահորեն այրվել է մոտ մեկ մետր հեռավորությունից բեռով պարանով:

Ծրագրի սարքավորում. ինչպես մենք կառուցեցինք սենյակ հաքերային որոնումներով
Այսպիսով, լազերը հիանալի աշխատեց թեստերում

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

Ծրագրի սարքավորում. ինչպես մենք կառուցեցինք սենյակ հաքերային որոնումներով
Բայց դա այլեւս այդպես չէր աշխատում՝ պարանը տեղաշարժվեց

Իլյան լազերը տեղափոխեց պարանի դիմաց գտնվող սենյակի ծայրը, որպեսզի լազերային ճառագայթը անցնի ամբողջ բեմը և գեղեցիկ տեսք ունենա շրջանակում, ինչը կրկնապատկեց հեռավորությունը:

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

Ծրագրի սարքավորում. ինչպես մենք կառուցեցինք սենյակ հաքերային որոնումներով
Թելը, որն ի վերջո այրվեց էկրանից դուրս պարանի միջով

Այսպիսով, հայտնվեց երրորդ առաջադրանքը, որը լուծեց Arduino-ն՝ մշակել այս հրամանների կատարման հետ կապված հաջորդականությունները:

Մենք նաև որոշեցինք Arduino-ին տալ հեռուստացույցով գումար հաշվելու և մանրացնող սարքը գործարկելու անհրաժեշտությունը: Սկզբում ենթադրվում էր, որ backend-ը դա կանի, և ընթացիկ մնացորդը տեսանելի կլինի կայքում, իսկ հեռուստացույցով մենք որպես լրացուցիչ ինտերակտիվ տարր կցուցադրենք մեկնաբանություններ YouTube-ից՝ հեռուստադիտողներին ասելով, որ սենյակում իրադարձությունները տեղի են ունենում իրականում։ ժամանակ.

Բայց թեստային վազքի ժամանակ Իլյան նայեց տեսարանին և առաջարկեց ցույց տալ խաղի հաշվեկշիռը ամենամեծ էկրանին. որքան գումար է մնացել, որքան է կերել և հետհաշվարկը մինչև մանրացնող սարքի հաջորդ մեկնարկը:

Մենք Arduino-ին կապեցինք ընթացիկ ժամանակի հետ. ամեն ժամ մանրացնող սարքը գործարկվում էր: Նկարը ցուցադրվում էր հեռուստացույցով՝ օգտագործելով rasberry, որն այդ պահին արդեն հարցումներ էր ստանում սերվերից և ուղարկում դրանք arduino՝ կատարման։ Դրամական ցուցիչներով նկարներ են նկարվել՝ զանգահարելով կոնսոլի կոմունալ ֆիմ՝ այսպես

image = subprocess.Popen(["fim", "-q", "-r", "1920×1080", fim_str]), где fim_str

Եվ այն ձևավորվել է՝ ելնելով պահանջվող քանակից կամ ժամանակից։

Նկարները նախօրոք գեներացրել ենք՝ պարզապես ժամանակաչափով պատրաստի տեսահոլովակ ենք նկարել և 200 նկար արտահանել։

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

Ինչպես կատարել հեռարձակում, որն աշխատում է մեկ շաբաթ՝ տեսախցիկի ընտրություն

Քվեստի համար մեզ անհրաժեշտ էր 7 օր շարունակական հեռարձակում YouTube-ում. դա հենց այն է, ինչ մենք սահմանել ենք որպես խաղի առավելագույն տևողությունը: Երկու բան կար, որ կարող էր մեզ կանգնեցնել.

  1. Խցիկի գերտաքացում՝ շարունակական աշխատանքի պատճառով
  2. Ինտերնետի անջատում

Տեսախցիկը պետք է ապահովեր առնվազն Full HD պատկեր՝ սենյակը խաղալն ու դիտելը հարմարավետ դարձնելու համար:

Սկզբում մենք նայեցինք դեպի վեբ-տեսախցիկներ, որոնք արտադրված են հեռարձակողների համար: Մենք կրճատում էինք բյուջեն, ուստի չէինք ուզում տեսախցիկ գնել, բայց, ինչպես պարզվեց, վարձով չեն տալիս։ Նույն պահին մենք հրաշքով գտանք իմ տանը ընկած Xbox Kinect տեսախցիկը, տեղադրեցինք իմ սենյակում և սկսեցինք մեկ շաբաթով փորձնական հեռարձակում։

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

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

Հետևաբար, թեև Kinect-ը ապացուցեց, որ հուսալի է թեստերում և չի պահանջում տեսագրման քարտ (մեկ այլ ձախողման կետ), մենք որոշեցինք հրաժարվել դրանից: Երեք օր տարբեր տեսախցիկների փորձարկումից հետո Իլյան ընտրեց Sony FDR-AX53-ը` փոքր, հուսալի տեսախցիկ, որը վարձակալվում է էժան, բայց միևնույն ժամանակ ունի բավարար հուսալիություն և տեսողական բնութագրեր:

Մենք վարձեցինք տեսախցիկ, միացրինք այն մեկ շաբաթով տեսանկարահանման քարտի հետ միասին և հասկացանք, որ դրա օգնությամբ մենք կարող ենք հույս դնել շարունակական հեռարձակման վրա ողջ քվեստի ընթացքում:

Ֆիլմի նկարահանում. բեմականացում և լուսավորություն

Լուսավորման վրա աշխատելը որոշակի շնորհք էր պահանջում, մեզ անհրաժեշտ էր նվազագույն միջոցներով լուսավորության հաշիվ կառուցել.

1. Օբյեկտների լուսավորում, երբ խաղացողները գտնում են դրանք (լազեր, քաշ), ինչպես նաև մանրացնող սարքի վրա մշտական ​​լույս: Այստեղ մենք օգտագործեցինք dedolight 150 - հուսալի և կոմպակտ ֆիլմերի լուսավորման սարքեր ցածր լարման հալոգեն լամպերով, որոնք թույլ են տալիս կենտրոնացնել ճառագայթը կոնկրետ առարկայի վրա՝ առանց ֆոնի և այլ առարկաների վրա ազդելու:

2. Գործնական խաղային լույս՝ սեղանի լամպ, հատակի լամպ, աստղ, ծաղկեպսակ։ Ամբողջ գործնական լույսը ներդաշնակորեն բաշխված էր շրջանակում՝ պատկերի տարածքը լուսավորելու համար, ներսում կային LED լամպեր՝ 3200K գունային ջերմաստիճանով, հատակի լամպի լամպը ծածկված էր կարմիր Rosco փայլաթիթեղով ֆիլտրով՝ ստեղծելու անսովոր գունային շեշտ:

Ծրագրի սարքավորում. ինչպես մենք կառուցեցինք սենյակ հաքերային որոնումներով
Ես մայրիկիս մոտ ինժեներ եմ կամ մեկնարկը վաղը կլինի

Ինչպես ենք մենք ամրագրել ինտերնետ և էլեկտրաէներգիա

Նրանք սխալների հանդուրժողականության հարցին մոտեցան գրեթե այնպես, ինչպես տվյալների կենտրոնում. նրանք որոշեցին չշեղվել հիմնական սկզբունքներից և վերապահվեցին սովորական N+1 սխեմայով։

Եթե ​​YouTube-ում հեռարձակումը դադարեցվի, դա նշանակում է, որ անհնար կլինի նորից միանալ նույն հղումով և շարունակել հեռարձակումը։ Դա կրիտիկական պահ էր, և սենյակը գտնվում էր սովորական գրասենյակում:

Դա անելու համար մենք օգտագործեցինք OpenWRT-ի վրա հիմնված երթուղիչ և mwan3 փաթեթ: Այն ավտոմատ կերպով ստուգում էր ալիքի հասանելիությունը յուրաքանչյուր 5 վայրկյանը մեկ և ընդմիջման դեպքում անցնում էր Yota-ի հետ պահուստային մոդեմին։ Արդյունքում պահուստային ալիքին անցնելը տեղի ունեցավ մեկ րոպեից պակաս ժամանակում:
Ծրագրի սարքավորում. ինչպես մենք կառուցեցինք սենյակ հաքերային որոնումներով
Նույնքան կարևոր էր նաև էլեկտրաէներգիայի անջատումները վերացնելը, քանի որ նույնիսկ կարճաժամկետ հոսանքի բարձրացումը կհանգեցնի բոլոր համակարգիչների վերագործարկմանը:

Հետևաբար, մենք վերցրեցինք ippon innova g2 3000 անխափան սնուցման աղբյուրը, որը կրկնօրինակում էր բոլոր խաղային սարքերը. մեր համակարգի ընդհանուր էներգիայի սպառումը մոտ 300 Վտ էր: Այն կտևի 75 րոպե, ինչը բավական է մեր նպատակների համար։

Մենք որոշեցինք զոհաբերել հավելյալ լուսավորությունը, եթե սենյակի հոսանքն անջատվի. այն միացված չէր անխափան սնուցման աղբյուրին:

Շնորհակալագրեր

  • Ամբողջ թիմին ՌՈՒՎԴՍ, ով հորինել և իրականացրել է խաղը։
  • Առանձին-առանձին, RUVDS-ի ադմինիստրատորներին, սերվերների աշխատանքի մոնիտորինգի համար, բեռնվածությունը ընդունելի էր, և ամեն ինչ աշխատում էր ինչպես միշտ:
  • Լավագույն ղեկավարին նցապլին այն բանի համար, որ ի պատասխան զանգի՝ «Մի միտք ունեմ՝ սերվեր կվերցնենք, վրան ակվարիում կդնենք, վերևից ծանրաձող կկախենք, բում, պայթյուն, ամեն ինչ ողողված է ջրով, կարճ միացում, կրակ. !» նա միշտ վստահորեն ասում է «արա դա»:
  • Շնորհակալություն Tilda Publishing և առանձին՝ Միխայիլ Կարպովին, որ ոչ միայն կես ճանապարհին հանդիպեցինք և թույլ տվեցինք խախտել Օգտագործման պայմանները, այլ նույնիսկ մեկ տարի մեզ բիզնես հաշիվ տալու համար, երբ մենք խոսում էինք նախագծի մասին:
  • Իլյա Սերով S_ILya միանալու և նախագծի համապրոդյուսեր դառնալու համար, պատրաստ է գիշերվա կեսը սողալու, լուսադիոդային ժապավեն սոսնձելու, տեխնիկական լուծումներ փնտրելու և ամեն ինչ անելու համար, որպեսզի իրական ֆիլմ ստանանք։
  • ժովներ միշտ պատրաստ լինելով փրկելու այն իրավիճակը, երբ մյուսները ձեռքերը, բորշչը, բարոյական աջակցությունն ու զրույցները մինչև առավոտ բարձրացրին։
  • սամատ մեզ կապելու համար երկրի լավագույն գրոսմայստերի հետ, ով մեզ խորհուրդ էր տալիս և օգնում առաջադրանքներում:
  • դանիեմիլք բոլոր տեսանյութերի զով տեսանյութերի արտադրության համար:
  • դելֆե ամուր ձեռքի և մինչև վերջ աշխատելու պատրաստակամության համար։
  • Ну Dodo Pizza Engineering գրեթե միշտ տաք պիցցայի համար:

Եվ ամենամեծ երախտագիտությունը խաղացողներին է վերաբերվում այն ​​բոլոր հույզերի համար, որոնք մենք ապրեցինք, երբ դուք երկու օր ներխուժում էիք քվեստը առանց քնելու և նույնիսկ հետաձգելու աշխատանքը:

Այլ հոդվածներ սերվերը ոչնչացնելու որոնման մասին

Ծրագրի սարքավորում. ինչպես մենք կառուցեցինք սենյակ հաքերային որոնումներով

Source: www.habr.com

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