Bii ati idi ti a fi ṣẹgun orin data Big ni hackathon Ipenija Imọ-ẹrọ Urban

Orukọ mi ni Dmitry. Ati pe Mo fẹ lati sọrọ nipa bii ẹgbẹ wa ṣe de awọn ipari ti Urban Tech Challenge hackathon lori orin Big Data. Emi yoo sọ lẹsẹkẹsẹ pe eyi kii ṣe hackathon akọkọ ti Mo kopa, kii ṣe akọkọ ninu eyiti Mo gba awọn ẹbun. Ni iru eyi, ninu itan mi Mo fẹ lati sọ diẹ ninu awọn akiyesi gbogbogbo ati awọn ipinnu nipa ile-iṣẹ hackathon lapapọ, ati fun ni oju-ọna mi ni idakeji si awọn atunwo odi ti o han lori ayelujara lẹsẹkẹsẹ lẹhin opin Ipenija Tech Urban (fun apẹẹrẹ eyi).

Nitorinaa akọkọ diẹ ninu awọn akiyesi gbogbogbo.

1. O jẹ iyanilẹnu pe awọn eniyan diẹ ni irọra ro pe hackathon jẹ iru idije ere idaraya nibiti awọn coders ti o dara julọ bori. Eyi jẹ aṣiṣe. Emi ko ṣe akiyesi awọn ọran nigbati awọn oluṣeto hackathon funrararẹ ko mọ ohun ti wọn fẹ (Mo ti rii iyẹn paapaa). Ṣugbọn, gẹgẹbi ofin, ile-iṣẹ ti o ṣeto hackathon lepa awọn ibi-afẹde tirẹ. Atokọ wọn le yatọ: o le jẹ ojutu imọ-ẹrọ si diẹ ninu awọn iṣoro, wiwa fun awọn imọran tuntun ati eniyan, ati bẹbẹ lọ. Awọn ibi-afẹde wọnyi nigbagbogbo pinnu ọna kika ti iṣẹlẹ, akoko rẹ, ori ayelujara / offline, bawo ni awọn iṣẹ-ṣiṣe yoo ṣe agbekalẹ (ati boya wọn yoo ṣe agbekalẹ rara), boya atunyẹwo koodu yoo wa ni hackathon, ati bẹbẹ lọ. Mejeeji awọn ẹgbẹ ati ohun ti wọn ṣe ni a ṣe ayẹwo lati oju-ọna yii. Ati pe awọn ẹgbẹ wọnyẹn ti o kọlu aaye ti o dara julọ ti ile-iṣẹ nilo bori, ati pe ọpọlọpọ wa si aaye yii ni aimọkan patapata ati lairotẹlẹ, ni ero pe wọn kopa gaan ninu idije ere idaraya kan. Awọn akiyesi mi fihan pe lati le ṣe iwuri awọn olukopa, awọn oluṣeto yẹ ki o ṣẹda o kere ju ifarahan ti agbegbe idaraya ati awọn ipo deede, bibẹẹkọ wọn yoo gba igbi ti aifiyesi, gẹgẹbi ninu atunyẹwo loke. Sugbon a digress.

2. Nibi ipari ti o tẹle. Awọn oluṣeto naa nifẹ si awọn olukopa ti n bọ si hackathon pẹlu iṣẹ tiwọn, nigbakan wọn paapaa ṣeto ni pataki ipele ifọrọranṣẹ ori ayelujara fun idi eyi. Eyi ngbanilaaye fun awọn solusan iṣelọpọ ti o lagbara. Imọye ti “iṣẹ tirẹ” jẹ ibatan pupọ; idagbasoke eyikeyi ti o ni iriri le ṣajọ ẹgbẹẹgbẹrun awọn laini koodu lati awọn iṣẹ akanṣe atijọ rẹ ni adehun akọkọ rẹ. Ati pe eyi yoo jẹ idagbasoke ti a ti pese tẹlẹ? Ṣugbọn ni eyikeyi ọran, ofin naa kan, eyiti Mo ṣafihan ni irisi meme olokiki kan:

Bii ati idi ti a fi ṣẹgun orin data Big ni hackathon Ipenija Imọ-ẹrọ Urban

Lati ṣẹgun, o gbọdọ ni nkan kan, diẹ ninu awọn anfani ifigagbaga: iru iṣẹ akanṣe ti o ṣe ni iṣaaju, imọ ati iriri ni koko-ọrọ kan pato, tabi iṣẹ ti a ti ṣetan ṣe ṣaaju ibẹrẹ ti hackathon. Bẹẹni, kii ṣe ere idaraya. Bẹẹni, eyi le ma tọsi igbiyanju ti a lo (nibi, gbogbo eniyan pinnu fun ara wọn boya o tọ ifaminsi fun ọsẹ 3 ni alẹ fun ẹbun ti 100 ẹgbẹrun, pin laarin gbogbo ẹgbẹ, ati paapaa pẹlu ewu ti ko gba). Ṣugbọn, nigbagbogbo, eyi ni aye nikan lati lọ siwaju.

3. Aṣayan ẹgbẹ. Gẹgẹbi Mo ṣe akiyesi ni awọn iwiregbe hackathon, ọpọlọpọ sunmọ ọran yii ni aibikita (botilẹjẹpe eyi ni ipinnu pataki julọ ti yoo pinnu abajade rẹ ni hackathon). Ni ọpọlọpọ awọn agbegbe ti iṣẹ-ṣiṣe (mejeeji ni awọn ere idaraya ati ni awọn hackathons) Mo ti ri pe awọn eniyan ti o lagbara ni lati ṣọkan pẹlu awọn alagbara, awọn alailagbara pẹlu awọn alailera, ọlọgbọn pẹlu ọlọgbọn, daradara, ni apapọ, o gba imọran ... Eyi jẹ aijọju ohun ti o ṣẹlẹ ni awọn iwiregbe: kere si awọn pirogirama ti o lagbara ti wọn yoo mu lẹsẹkẹsẹ, awọn eniyan ti ko ni awọn ọgbọn eyikeyi ti o niyelori fun hackathon kan duro ni iwiregbe fun igba pipẹ ati yan ẹgbẹ kan lori ipilẹ pe ti ẹnikan yoo gba. . Ni diẹ ninu awọn hackathons, iṣẹ iyansilẹ laileto si awọn ẹgbẹ ni adaṣe, ati pe awọn oluṣeto sọ pe awọn ẹgbẹ laileto ko ṣe buru ju awọn ti o wa tẹlẹ lọ. Ṣugbọn gẹgẹbi awọn akiyesi mi, awọn eniyan ti o ni itara, gẹgẹbi ofin, wa ẹgbẹ kan lori ara wọn; ti ẹnikan ba ni lati yan, lẹhinna, nigbagbogbo, ọpọlọpọ ninu wọn ko wa si hackathon.

Bi fun akojọpọ ẹgbẹ, eyi jẹ ẹni kọọkan ati igbẹkẹle pupọ lori iṣẹ-ṣiṣe naa. Mo le sọ pe akopọ ẹgbẹ ti o le yanju ti o kere julọ jẹ apẹrẹ - iwaju-ipari tabi iwaju-ipari - ẹhin-ipari. Ṣugbọn Mo tun mọ ti awọn ọran nigbati awọn ẹgbẹ ti o ni awọn alakọja nikan ti o gba, ti o ṣafikun opin-pada ti o rọrun ni node.js, tabi ṣe ohun elo alagbeka ni Ilu abinibi React; tabi nikan lati backenders ti o ṣe o rọrun akọkọ. Ni gbogbogbo, ohun gbogbo jẹ ẹni kọọkan ati da lori iṣẹ-ṣiṣe naa. Eto mi fun yiyan ẹgbẹ kan fun hackathon jẹ bi atẹle: Mo gbero lati pejọ ẹgbẹ kan tabi darapọ mọ ẹgbẹ kan bii opin iwaju - ẹhin-ipari - onise (Emi jẹ iwaju-ipari funrarami). Ati ki o lẹwa ni kiakia ni mo bẹrẹ iwiregbe pẹlu a Python backender ati ki o kan onise ti o gba awọn pipe si lati da wa. Diẹ diẹ lẹhinna, ọmọbirin kan, oluyanju iṣowo kan, ti o ti ni iriri ti o gba hackathon kan, darapọ mọ wa, ati pe eyi pinnu ọrọ ti o darapọ mọ wa. Lẹhin ipade kukuru kan, a pinnu lati pe ara wa U4 (URBAN 4, ilu mẹrin) nipasẹ afiwe pẹlu mẹrin ikọja. Ati pe wọn paapaa fi aworan ti o baamu sori avatar ti ikanni telegram wa.

4. Yiyan iṣẹ-ṣiṣe kan. Bi mo ti sọ tẹlẹ, o gbọdọ ni anfani ifigagbaga, iṣẹ-ṣiṣe fun hackathon ti yan da lori eyi. Da lori eyi, ti wo akojọ iṣẹ ati iṣiro wọn complexity, a yanju lori meji awọn iṣẹ-ṣiṣe: a katalogi ti aseyori katakara lati DPiIR ati ki o kan chatbot lati EFKO. Awọn iṣẹ-ṣiṣe lati DPIIR ti a ti yan nipasẹ awọn backender, awọn iṣẹ-ṣiṣe lati EFKO a ti yàn nipa mi, nitori ni iriri kikọ chatbots ni node.js ati DialogFlow. Iṣẹ-ṣiṣe EFKO tun kan ML; Mo ni diẹ ninu, kii ṣe pupọ, iriri ni ML. Ati ni ibamu si awọn ipo ti iṣoro naa, o dabi fun mi pe ko ṣeeṣe lati yanju nipa lilo awọn irinṣẹ ML. Imọlara yii ni o lagbara nigbati mo lọ si ipade Ipenija Urban Tech, nibiti awọn oluṣeto ti fihan mi dataset kan lori EFKO, nibiti o wa nipa awọn fọto 100 ti awọn ipilẹ ọja (ti o ya lati awọn igun oriṣiriṣi) ati nipa awọn kilasi 20 ti awọn aṣiṣe akọkọ. Ati, ni akoko kanna, awọn ti o paṣẹ iṣẹ naa fẹ lati ṣaṣeyọri oṣuwọn aṣeyọri iyasọtọ ti 90%. Bi abajade, Mo pese igbejade ti ojutu laisi ML, ẹhin ti pese igbejade ti o da lori iwe-akọọlẹ, ati papọ, lẹhin ipari awọn igbejade, a fi wọn ranṣẹ si Ipenija Tech Urban. Tẹlẹ ni ipele yii, ipele ti iwuri ati ilowosi ti alabaṣe kọọkan ti han. Olupilẹṣẹ wa ko ni ipa ninu awọn ijiroro, dahun pẹ, ati paapaa kun alaye nipa ararẹ ni igbejade ni akoko ikẹhin, ni gbogbogbo, awọn iyemeji dide.

Nitoribẹẹ, a kọja iṣẹ naa lati ọdọ DPiIR, ko si binu rara pe a ko kọja EFKO, nitori pe iṣẹ naa dabi ajeji si wa, lati sọ ni pẹlẹbẹ.

5. Ngbaradi fun hackathon. Nigbati o ti di mimọ nikẹhin pe a ti yẹ fun hackathon, a bẹrẹ si murasilẹ. Ati pe nibi Emi ko ṣe agbero lati bẹrẹ lati kọ koodu ni ọsẹ kan ṣaaju ibẹrẹ ti hackathon. Ni o kere ju, o yẹ ki o ni igbomikana ti o ṣetan, pẹlu eyiti o le bẹrẹ ṣiṣẹ lẹsẹkẹsẹ, laisi nini lati tunto awọn irinṣẹ, ati laisi bumping sinu awọn idun ti diẹ ninu awọn lib ti o pinnu lati gbiyanju fun igba akọkọ ni hackathon. Mo mọ itan kan nipa awọn onimọ-ẹrọ angular ti o wa si hackathon ati lo awọn ọjọ 2 ti o ṣeto iṣẹ akanṣe, nitorinaa ohun gbogbo yẹ ki o mura tẹlẹ. A pinnu lati pin awọn ojuse bi atẹle: backender kọwe awọn crawlers ti o ṣawari Intanẹẹti ati fi gbogbo alaye ti a gba sinu ibi ipamọ data, lakoko ti Mo kọ API ni node.js ti o beere aaye data yii ati firanṣẹ data si iwaju. Ni iyi yii, Mo pese olupin ni ilosiwaju nipa lilo express.js ati pese iwaju-opin ni idahun. Emi ko lo CRA, Mo ṣe akanṣe oju opo wẹẹbu nigbagbogbo fun ara mi ati pe Mo mọ daradara kini awọn ewu ti eyi le fa (ranti itan naa nipa awọn olupilẹṣẹ angular). Ni aaye yii, Mo beere awọn awoṣe wiwo tabi o kere ju awọn ẹgan lati ọdọ apẹẹrẹ wa lati ni imọran ohun ti Emi yoo gbe jade. Ni imọran, o yẹ ki o tun ṣe awọn igbaradi tirẹ ki o ṣepọ wọn pẹlu wa, ṣugbọn Emi ko gba idahun rara. Bi abajade, Mo ya apẹrẹ lati ọkan ninu awọn iṣẹ akanṣe atijọ mi. Ati pe o bẹrẹ lati ṣiṣẹ paapaa yiyara, nitori gbogbo awọn aza fun iṣẹ akanṣe yii ti kọ tẹlẹ. Nitorina ipari: onise apẹẹrẹ ko nigbagbogbo nilo lori ẹgbẹ kan))). A wa si hackathon pẹlu awọn idagbasoke wọnyi.

6. Ṣiṣẹ ni hackathon. Ni igba akọkọ ti Mo rii ẹgbẹ mi laaye nikan ni ṣiṣi ti hackathon ni Central Distribution Center. A pade, jiroro lori ojutu ati awọn ipele ti ṣiṣẹ lori iṣoro naa. Ati pe botilẹjẹpe lẹhin ṣiṣi a ni lati lọ nipasẹ ọkọ akero si Red October, a lọ si ile lati sun, ni gbigba lati de ibi naa nipasẹ 9.00. Kí nìdí? Ó hàn gbangba pé àwọn olùṣètò náà fẹ́ láyọ̀ jù lọ lára ​​àwọn olùkópa, nítorí náà wọ́n ṣètò irú ìtòlẹ́sẹẹsẹ bẹ́ẹ̀. Ṣugbọn, ninu iriri mi, o le koodu ni deede laisi sisun fun alẹ kan. Niti ekeji, Emi ko ni idaniloju mọ. Hackathon jẹ Ere-ije gigun; o nilo lati ṣe iṣiro deede ati gbero agbara rẹ. Jubẹlọ, a ní ipalemo.

Bii ati idi ti a fi ṣẹgun orin data Big ni hackathon Ipenija Imọ-ẹrọ Urban

Nitorinaa, lẹhin sisun ni pipa, ni 9.00 a joko lori ilẹ kẹfa ti Dewocracy. Lẹ́yìn náà, oníṣẹ́ ọnà wa kéde láìròtẹ́lẹ̀ pé òun kò ní kọ̀ǹpútà alágbèéká àti pé òun máa ṣiṣẹ́ láti ilé, a sì máa ń bá a sọ̀rọ̀ nípasẹ̀ fóònù. Eyi ni koriko ti o kẹhin. Ati nitorinaa a yipada lati mẹrin si mẹta, botilẹjẹpe a ko yi orukọ ẹgbẹ pada. Lẹẹkansi, eyi kii ṣe ipalara nla fun wa; Mo ti ni apẹrẹ tẹlẹ lati iṣẹ akanṣe atijọ. Ni gbogbogbo, ni akọkọ ohun gbogbo lọ ni irọrun ati ni ibamu si ero. A kojọpọ sinu ibi ipamọ data (a pinnu lati lo neo4j) iwe data ti awọn ile-iṣẹ imotuntun lati ọdọ awọn oluṣeto. Mo bẹ̀rẹ̀ síí tẹ̀wé, lẹ́yìn náà mo gbé node.js, lẹ́yìn náà, nǹkan bẹ̀rẹ̀ sí í jóná. Emi ko tii ṣiṣẹ pẹlu neo4j tẹlẹ, ati ni akọkọ Mo n wa awakọ ti n ṣiṣẹ fun ibi-ipamọ data yii, lẹhinna Mo rii bi a ṣe le kọ ibeere kan, lẹhinna o yà mi lẹnu lati ṣawari pe data data yii, nigbati ibeere, da awọn nkan pada ninu fọọmu ti ohun orun ti ipade ohun ati awọn egbegbe wọn. Awon. nigbati mo beere fun agbari kan ati gbogbo data ti o wa lori rẹ nipasẹ TIN, dipo ohun elo kan, a da mi pada ọpọlọpọ awọn ohun elo ti o ni awọn data lori ajo yii ati awọn ibasepọ laarin wọn. Mo ti kọ maapu kan ti o lọ nipasẹ gbogbo orun ati ki o lẹ pọ gbogbo awọn nkan ni ibamu si eto wọn sinu ohun kan. Ṣugbọn ni ogun, nigbati o ba n beere aaye data ti awọn ẹgbẹẹgbẹrun 8, o ti ṣiṣẹ ni iyara pupọ, nipa awọn aaya 20 - 30. Mo bẹrẹ si ronu nipa iṣapeye ... Ati lẹhinna a duro ni akoko ati yipada si MongoDB, ati pe o gba to iṣẹju 30. Ni apapọ, nipa awọn wakati 4 ti sọnu lori neo5j.

Ranti, maṣe gba imọ-ẹrọ si hackathon ti o ko faramọ pẹlu, awọn iyanilẹnu le wa. Ṣugbọn, ni gbogbogbo, laisi ikuna yii, ohun gbogbo lọ ni ibamu si ero. Ati pe tẹlẹ ni owurọ ti Oṣu kejila ọjọ 9, a ni ohun elo ti n ṣiṣẹ ni kikun. Fun iyoku ọjọ naa a gbero lati ṣafikun awọn ẹya afikun si rẹ. Ni ọjọ iwaju, ohun gbogbo lọ laisiyonu fun mi, ṣugbọn alatilẹyin naa ni gbogbo awọn iṣoro pẹlu idinamọ ti awọn crawlers rẹ ninu awọn ẹrọ wiwa, ninu àwúrúju ti awọn aggregators ti awọn ile-iṣẹ ofin, eyiti o wa ni awọn aaye akọkọ ti awọn abajade wiwa nigbati o beere fun kọọkan pato ile. Ṣugbọn o dara fun u lati sọ nipa rẹ funrararẹ. Ẹya afikun akọkọ ti Mo ṣafikun ni wiwa nipasẹ orukọ kikun. Oludari gbogbogbo ti VKontakte. O gba awọn wakati pupọ.

Nitorinaa, lori oju-iwe ile-iṣẹ ninu ohun elo wa, avatar ti oludari gbogbogbo han, ọna asopọ si oju-iwe VKontakte rẹ ati diẹ ninu awọn data miiran. O je kan dara ṣẹẹri lori awọn akara oyinbo, biotilejepe o le ko ti fun a win. Lẹhinna, Mo fẹ lati ṣiṣe diẹ ninu awọn atupale. Ṣugbọn lẹhin wiwa gigun ti awọn aṣayan (ọpọlọpọ awọn nuances wa pẹlu UI), Mo yanju lori akojọpọ ti o rọrun julọ ti awọn ajọ nipasẹ koodu iṣẹ-aje. Tẹlẹ ni irọlẹ, ni awọn wakati to kẹhin, Mo n ṣe agbekalẹ awoṣe kan fun iṣafihan awọn ọja tuntun (ninu ohun elo wa o yẹ ki o jẹ apakan Awọn ọja ati Awọn iṣẹ), botilẹjẹpe ẹhin ko ṣetan fun eyi. Ni akoko kanna, ibi ipamọ data jẹ wiwu nipasẹ awọn fifo ati awọn aala, awọn crawlers tẹsiwaju lati ṣiṣẹ, backender ṣe idanwo pẹlu NLP lati ṣe iyatọ awọn ọrọ tuntun lati awọn ti kii ṣe tuntun))). Ṣugbọn akoko fun igbejade ikẹhin ti sunmọ tẹlẹ.

7. Igbejade. Lati iriri ti ara mi, Mo le sọ pe o yẹ ki o yipada si ngbaradi igbejade nipa awọn wakati 3 si 4 ṣaaju ki o to. Paapa ti o ba kan fidio, ibon yiyan ati ṣiṣatunṣe gba akoko pupọ. A yẹ lati ni fidio kan. Ati pe a ni eniyan pataki kan ti o ṣe pẹlu eyi, ati tun yanju nọmba kan ti awọn ọran eto miiran. Ni ọran yii, a ko faya ara wa kuro ninu ifaminsi titi di akoko ti o kẹhin.

8. ipolowo. Emi ko fẹran pe awọn igbejade ati awọn ipari ni a waye ni ọjọ ọsẹ lọtọ (Ọjọ aarọ). Nibi, o ṣeese julọ, eto imulo awọn oluṣeto ti fifẹ ti o pọju lati awọn olukopa tẹsiwaju. Emi ko gbero lati gba akoko kuro ni iṣẹ, Mo fẹ nikan wa si ipari ipari, botilẹjẹpe awọn iyokù ti ẹgbẹ mi gba ọjọ isinmi naa. Sibẹsibẹ, immersion ẹdun ni hackathon ti wa tẹlẹ pe ni 8 am Mo kọwe ni iwiregbe ti ẹgbẹ mi (ẹgbẹ iṣẹ, kii ṣe ẹgbẹ hackathon) pe Mo n gba ọjọ naa ni owo ti ara mi, o si lọ si aarin. ọfiisi fun ipolowo. Iṣoro wa jade lati ni ọpọlọpọ awọn onimọ-jinlẹ data mimọ, ati pe eyi ni ipa pupọ si ọna lati yanju iṣoro naa. Ọpọlọpọ ni DS ti o dara, ṣugbọn ko si ẹnikan ti o ni apẹrẹ iṣẹ, ọpọlọpọ ko le wa ni ayika awọn idinamọ ti awọn crawlers wọn ni awọn ẹrọ wiwa. A wà nikan ni egbe pẹlu kan ṣiṣẹ Afọwọkọ. Ati pe a mọ bi a ṣe le yanju iṣoro naa. Ni ipari, a gba orin naa, botilẹjẹpe a ni orire pupọ pe a yan iṣẹ-ṣiṣe ifigagbaga ti o kere julọ. Wiwo awọn ipolowo ni awọn orin miiran, a rii pe a ko ni aye nibẹ. Mo tun fẹ lati sọ pe a ni orire pupọ pẹlu awọn adajọ; wọn ṣayẹwo koodu naa daradara. Ati, idajọ nipasẹ awọn atunwo, eyi ko ṣẹlẹ ni gbogbo awọn orin.

9. Ipari. Lẹhin ti a pe wa si imomopaniyan ni ọpọlọpọ igba fun atunyẹwo koodu, a ro pe a ti yanju gbogbo awọn ọran nipari, lọ lati jẹ ounjẹ ọsan ni Burger King. Nibẹ ni awọn oluṣeto tun pe wa lẹẹkansi, a ni lati yara gbe awọn aṣẹ wa ki o pada sẹhin.

Ọganaisa fihan wa yara wo ti a nilo lati lọ, ati nigbati wọn wọle, a rii ara wa ni igba ikẹkọ sisọ ni gbangba fun awọn ẹgbẹ ti o bori. Awọn enia buruku ti o yẹ lati ṣe lori ipele ti gba agbara daradara, gbogbo eniyan wa jade bi awọn alafihan gidi.

Ati pe Mo gbọdọ gba, ni ipari, lodi si ẹhin ti awọn ẹgbẹ ti o lagbara julọ lati awọn orin miiran, a dabi bi o ti wuyi; iṣẹgun ni yiyan awọn alabara ijọba ni tọsi si ẹgbẹ naa lati orin imọ-ẹrọ ohun-ini gidi. Mo ro pe awọn ifosiwewe bọtini ti o ṣe alabapin si iṣẹgun wa lori orin naa ni: wiwa ti ofifo ti a ti ṣetan, nitori eyiti a ni anfani lati yara ṣe apẹrẹ kan, wiwa “awọn ami pataki” ninu apẹrẹ (wa awọn Alakoso Alakoso) lori awọn nẹtiwọọki awujọ) ati awọn ọgbọn NLP ti ẹhin wa, eyiti o tun nifẹ si imomopaniyan naa.

Bii ati idi ti a fi ṣẹgun orin data Big ni hackathon Ipenija Imọ-ẹrọ Urban

Ati ni ipari, o ṣeun ibile si gbogbo awọn ti o ṣe atilẹyin fun wa, igbimọ ti orin wa, Evgeniy Evgrafiev (onkọwe ti iṣoro ti a yanju ni hackathon) ati ti awọn oluṣeto ti hackathon. Eyi jẹ boya hackathon ti o tobi julọ ati tutu julọ ti Mo ti kopa ninu, Mo le fẹ awọn eniyan nikan lati tọju iru idiwọn giga ni ọjọ iwaju!

orisun: www.habr.com

Fi ọrọìwòye kun