{"id":34626,"date":"2019-10-31T21:59:30","date_gmt":"2019-10-31T18:59:30","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kodim-pitstsa\/"},"modified":"2019-10-31T21:59:30","modified_gmt":"2019-10-31T18:59:30","slug":"kodim-pitstsa","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/news\/kodim-pitstsa","title":{"rendered":"Kodojm\u00eb-pica","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>P\u00ebrsh\u00ebndetje, Habr. S\u00eb fundi organizuam spontanisht hackathon-in ton\u00eb t\u00eb par\u00eb t\u00eb brendsh\u00ebm. Vendosa t\u00eb ndaj me ju v\u00ebshtir\u00ebsit\u00eb dhe p\u00ebrfundimet e mia rreth p\u00ebrgatitjes s\u00eb tij brenda 2 jav\u00ebsh, si edhe projektet q\u00eb dol\u00ebn prej tij.<\/p>\n<p><img decoding=\"async\" alt=\"Kodojm\u00eb-pica\" src=\"\/wp-content\/uploads\/2019\/05\/938168da11e489bcf2112a11bc3f220e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Pjesa e m\u00ebrzitshme p\u00ebr ata q\u00eb interesohen p\u00ebr marketingun<\/h2>\n<p>\nDo ta nis me nj\u00eb histori t\u00eb shkurt\u00ebr. <\/p>\n<p>Fillimi i prillit. N\u00eb zyr\u00ebn ton\u00eb po zhvillohet hackathon-i i par\u00eb i MskDotNet Community. Beteja p\u00ebr Tatooine \u00ebsht\u00eb n\u00eb kulm, k\u00ebt\u00eb her\u00eb n\u00eb galaktik\u00ebn ton\u00eb. E shtun\u00eb. 20 ekipe. Pica. Gjith\u00e7ka \u00ebsht\u00eb shum\u00eb e ngroht\u00eb e miq\u00ebsore (<noindex><a rel=\"nofollow\" href=\"https:\/\/vk.com\/album-125321990_262572840\">provat<\/a><\/noindex>). R2-D2 i fryr\u00eb shfaqet n\u00ebp\u00ebr sall\u00eb. Ekipet shkruajn\u00eb algoritmet m\u00eb t\u00eb sakta p\u00ebr t\u00eb kaluar gar\u00ebn m\u00eb t\u00eb rrezikshme n\u00eb hart\u00eb. E shtyjm\u00eb nisjen e xhirove t\u00eb para. Biskotat dhe kafeja na shp\u00ebtojn\u00eb. Un\u00eb dhe organizator\u00ebt prisnim q\u00eb t\u00eb shtun\u00ebn shum\u00eb veta t\u00eb largoheshin pas drek\u00ebs. Por jo. 12 or\u00eb kodim kan\u00eb mbetur pas. Finalja. Di\u00e7ka shk\u00ebputet, di\u00e7ka nuk nis. Por t\u00eb gjith\u00eb jan\u00eb t\u00eb lumtur. Fiton ekipi yn\u00eb. Ne jemi dyfish t\u00eb lumtur. <\/p>\n<p>E ndaj g\u00ebzimin n\u00eb Slack dhe m\u00eb lind nj\u00eb ide: \u00abDuhet t\u00eb b\u00ebjm\u00eb hackathon-in ton\u00eb\u00bb. I shkruaj CTO-s\u00eb ton\u00eb, Sash\u00ebs. Heshtje. <\/p>\n<p>M\u00ebngjes. Po pi kafe n\u00eb zyr\u00eb. Shoh Sash\u00ebn q\u00eb po afrohet nga pas shpine. \u00abLiza, kjo \u00ebsht\u00eb fantastike! Pik\u00ebrisht m\u00eb 21 prill kemi nj\u00eb dat\u00eb t\u00eb r\u00ebnd\u00ebsishme. Hajde ta b\u00ebjm\u00eb!\u00bb WTF!? Kaq shpejt? A? \u00c7far\u00eb? M\u00eb duhet t\u00eb fluturoj p\u00ebr n\u00eb Syktyvkar p\u00ebr praktik\u00eb n\u00eb mes t\u00eb prillit. Po n\u00eb djall t\u00eb vej\u00eb! Hajde.<\/p>\n<p>Kan\u00eb mbetur 2 jav\u00eb. Nuk kam qen\u00eb kurr\u00eb organizatorja e vetme e nj\u00eb hackathoni. Edhe n\u00ebse \u00ebsht\u00eb i brendsh\u00ebm. Lexoj artikuj p\u00ebr k\u00ebt\u00eb tem\u00eb. E tmerrshme. Duhen disa muaj. Duhen disa njer\u00ebz. Duhet t\u00eb mendosh p\u00ebr merch, \u00e7mimet, kushtet, programin, t\u00eb ngjall\u00ebsh interes, t\u00eb kuptosh q\u00ebllimin, buxhetet. Ndoshta madje edhe t\u00eb sqarosh kuptimin e jet\u00ebs. Un\u00eb me siguri nuk do t\u2019ia dal. Dhe nd\u00ebrkoh\u00eb q\u00eb ti lexoje e p\u00ebrgatiteshe, tashm\u00eb ka kaluar nj\u00eb jav\u00eb. \u00cbsht\u00eb koha ideale t\u2019i l\u00ebsh m\u00ebnjan\u00eb artikujt dhe t\u00eb fillosh t\u00eb b\u00ebsh di\u00e7ka. <\/p>\n<p><b class=\"spoiler_title\">Ja checklist-i yn\u00eb p\u00ebr organizimin e nj\u00eb hackathoni t\u00eb brendsh\u00ebm n\u00eb 1 jav\u00eb<\/b><\/p>\n<ul>\n<li><b>Plani<\/b>: ulesh qet\u00ebsisht dhe shkruan list\u00ebn e gj\u00ebrave q\u00eb duhen b\u00ebr\u00eb p\u00ebr hackathon-in. <i>30 minuta<\/i>.<\/li>\n<li><b>Detyra<\/b>: pjes\u00ebmarr\u00ebsit vet\u00eb propozojn\u00eb dhe zgjedhin projektet q\u00eb duan t\u00eb krijojn\u00eb n\u00eb Google Sheets. <i>Detyr\u00eb n\u00eb sfond, 2 or\u00eb<\/i>.<\/li>\n<li><b>Programi<\/b>: me mjete minimale shkruan nj\u00eb ndarje t\u00eb shkurt\u00ebr t\u00eb koh\u00ebs duke marr\u00eb parasysh 3 pushime dhe finalen. <i>20 minuta<\/i>.<\/li>\n<li><b>Komandat<\/b>: publikon nj\u00eb njoftim p\u00ebr hackathon-in me programin nga CTO n\u00eb kanalet IT n\u00eb Slack\/post\u00eb\/etc dhe krijon nj\u00eb kanal t\u00eb ve\u00e7ant\u00eb p\u00ebr hackathon-in. Aty t\u00eb gjith\u00eb ndahen n\u00eb ekipe, nd\u00ebrsa ata q\u00eb nuk jan\u00eb p\u00ebrcaktuar e b\u00ebjn\u00eb k\u00ebt\u00eb n\u00eb 5 minutat e para t\u00eb hackathon-it. <i>Detyr\u00eb n\u00eb sfond, 2 or\u00eb<\/i>.<\/li>\n<li><b>P\u00ebrfitime<\/b>: mendon merchandise me dy zhvillues, ia kalon dizajnerit p\u00ebr ta vizatuar dhe e merr gati. <i>Detyr\u00eb n\u00eb sfond, 3 dit\u00eb<\/i>.<\/li>\n<li><b>Hackathon<\/b>: vjen n\u00eb zyr\u00eb, koordinon t\u00eb gjith\u00eb n\u00eb fillim, merresh me pun\u00ebt e tua, lexon Reddit, n\u00eb \u00e7do pushim njofton me r\u00ebnd\u00ebsi p\u00ebr pic\u00ebn e fresk\u00ebt, fotografon per\u00ebndimin, shpall finalen, pastaj votoni s\u00eb bashku dhe zgjidhni fituesin. <i>1 dit\u00eb<\/i>.<\/li>\n<li><b>Pjesa me yllth<\/b>: sigurisht, mendon vazhdimisht q\u00eb gjith\u00e7ka t\u00eb shkoj\u00eb mir\u00eb. Sigurisht, jo t\u00eb gjith\u00eb do ta shohin mesazhin t\u00ebnd dhe me disa \u00ebsht\u00eb m\u00eb mir\u00eb t\u00eb flas\u00ebsh personalisht. Sigurisht, n\u00ebse dikush t\u00eb ndihmon, gjith\u00e7ka b\u00ebhet 2 her\u00eb m\u00eb e leht\u00eb (mua m\u00eb ndihmoi Aljona e mrekullueshme).<\/li>\n<\/ul>\n<h2>Pjesa m\u00eb pak e m\u00ebrzitshme p\u00ebr dat\u00ebn e hackathon-it<\/h2>\n<p>\nPse 21 prilli? Kjo dit\u00eb ka r\u00ebnd\u00ebsi t\u00eb ve\u00e7ant\u00eb p\u00ebr ne. Pik\u00ebrisht nj\u00eb vit m\u00eb par\u00eb, m\u00eb 21 prill, sistemi yn\u00eb ra n\u00ebn ngarkes\u00eb gjat\u00eb fundjav\u00ebs s\u00eb par\u00eb pas nisjes s\u00eb Fushat\u00ebs Federale t\u00eb Reklamimit. T\u00eb nes\u00ebrmen, t\u00eb diel\u00ebn, ekipi yn\u00eb ishte n\u00eb pun\u00eb q\u00eb nga ora 8 e m\u00ebngjesit. At\u00ebher\u00eb krijuam n\u00eb Trello tabel\u00ebn sundayhackathon dhe nisi nj\u00eb jav\u00eb pune me turne prej 12 or\u00ebsh n\u00eb dit\u00eb. Situata ishte aq kritike, sa nuk kishim koh\u00eb as t\u00eb hanim dhe djemt\u00eb nga ekipet e tjera na sillnin di\u00e7ka p\u00ebr t\u00eb ngr\u00ebn\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"Kodojm\u00eb-pica\" src=\"\/wp-content\/uploads\/2019\/05\/9d611c134267d1377a95f21a57c69687.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNj\u00eb rr\u00ebfim m\u00eb i detajuar mund ta lexoni n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/www.facebook.com\/story.php?story_fbid=10215961419809495&amp;id=1267477281\">faqen e Fjodor Ov\u00e7innikovit<\/a><\/noindex> (CEO-s\u00eb ton\u00eb). Q\u00eb at\u00ebher\u00eb kemi ndryshuar shum\u00eb gj\u00ebra, por k\u00ebt\u00eb dat\u00eb tani me siguri nuk do ta harrojm\u00eb.<\/p>\n<p>K\u00ebt\u00eb vit vendos\u00ebm q\u00eb kjo ngjarje meriton t\u00eb p\u00ebrjet\u00ebsohet n\u00eb kujtes\u00ebn e brezave dhe, sipas tradit\u00ebs m\u00eb t\u00eb mir\u00eb, organizuam hackathon-in e par\u00eb t\u00eb brendsh\u00ebm n\u00eb historin\u00eb e Dodo-s, i cili zgjati 10 or\u00eb. <\/p>\n<h2>Pjesa m\u00eb pak e m\u00ebrzitshme p\u00ebr projektet e hackathon-it<\/h2>\n<p>\n<i>Disclaimer: t\u00eb gjitha p\u00ebrshkrimet i kan\u00eb shkruar vet\u00eb djemt\u00eb, ndaj autor\u00ebsia e tekstit nuk \u00ebsht\u00eb e imja.<\/i><\/p>\n<h4>Oleg Learning (machine learning)<\/h4>\n<p>\n<i>Dima Ko\u00e7nev, Sasha Andronov (@alexandronov)<\/i><\/p>\n<p>Donim t\u00eb b\u00ebnim nj\u00eb rrjet nervor q\u00eb t\u00eb p\u00ebrcaktonte \u00e7far\u00eb pice ka n\u00eb fotografi pa ndonj\u00eb njohuri paraprake. N\u00eb fund b\u00ebm\u00eb nj\u00eb version shum\u00eb t\u00eb thjesht\u00eb dhe eksperimental: ai njeh 10 pica, dhe af\u00ebrsisht kuptuam si funksionon gjith\u00e7ka, aq sa ishte e mundur p\u00ebr nj\u00eb dit\u00eb (~10 or\u00eb).<\/p>\n<p><img decoding=\"async\" alt=\"Kodojm\u00eb-pica\" src=\"\/wp-content\/uploads\/2019\/05\/361e89bc6084abdc0e3ac3fdfb7863d2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00eb ve\u00e7anti, kuptuam se industria ka arritur n\u00eb nj\u00eb nivel ku nj\u00eb zhvillues i zakonsh\u00ebm mund t\u00eb marr\u00eb biblioteka t\u00eb gatshme, t\u00eb lexoj\u00eb dokumentacionin dhe t\u00eb trajnoj\u00eb rrjetin e vet nervor pa njohuri t\u00eb thella t\u00eb fush\u00ebs. Dhe ai do t\u00eb funksionoj\u00eb mjaft mir\u00eb p\u00ebr zgjidhjen e detyrave reale.<\/p>\n<p>Mjetet q\u00eb u p\u00ebrdor\u00ebn: <\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/imageai.readthedocs.io\/en\/latest\/index.html\">imageai<\/a><\/noindex> \u2014 nj\u00eb bibliotek\u00eb e p\u00ebrshtatshme dhe e thjesht\u00eb p\u00ebr pun\u00eb me machine learning dhe computer vision.<\/li>\n<li>Provuan dy modele \u2014 ResNet50 dhe Yolo.<\/li>\n<li>Kodin, sigurisht, e shkruam n\u00eb Python.<\/li>\n<\/ul>\n<p>\nKishim 11.000 foto, por pothuajse 3\/4 prej tyre dol\u00ebn t\u00eb ishin t\u00eb pavlefshme, nd\u00ebrsa te pjesa e mbetur kishte k\u00ebnde t\u00eb ndryshme e t\u00eb pap\u00ebrshtatshme. N\u00eb fund mor\u00ebm nj\u00eb model t\u00eb gatsh\u00ebm (q\u00eb thjesht di t\u00eb gjej\u00eb pica) dhe me ndihm\u00ebn e tij hoq\u00ebm pjes\u00ebn m\u00eb problematike. M\u00eb pas, n\u00eb emrin e fotos ishte emri i pic\u00ebs \u2014 k\u00ebshtu i ndam\u00eb n\u00ebp\u00ebr dosje, por doli q\u00eb emrat nuk p\u00ebrputheshin me p\u00ebrmbajtjen reale dhe k\u00ebtu na u desh t\u00eb pastronim gjith\u00e7ka manualisht. Si rezultat mbet\u00ebn rreth 500\u2013600 foto; \u00ebsht\u00eb e qart\u00eb q\u00eb ky \u00ebsht\u00eb nj\u00eb num\u00ebr shum\u00eb i vog\u00ebl, por megjithat\u00eb mjaftoi p\u00ebr t\u00eb dalluar 10 pica nga nj\u00ebra-tjetra.<\/p>\n<p>P\u00ebr trajnimin e rrjetit mor\u00ebm virtual machine m\u00eb t\u00eb lir\u00eb n\u00eb Azure me NVIDIA Tesla K80. Aty e trajnuam p\u00ebr 100 epoka, por shihej q\u00eb rrjeti ishte mbingopur q\u00eb pas 50 epokash, p\u00ebr shkak t\u00eb dataset-it t\u00eb vog\u00ebl.<\/p>\n<p>N\u00eb thelb, i gjith\u00eb problemi \u00ebsht\u00eb mungesa e t\u00eb dh\u00ebnave cil\u00ebsore.<\/p>\n<p><img decoding=\"async\" alt=\"Kodojm\u00eb-pica\" src=\"\/wp-content\/uploads\/2019\/05\/b89ba378674df1b3e899a93fc0fce86c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNdoshta i kemi ngat\u00ebrruar pak termat, por duhet marr\u00eb parasysh se nuk kemi fare p\u00ebrvoj\u00eb me gjith\u00eb k\u00ebto gj\u00ebra.<\/p>\n<h4>GUI for NOOBS (konsol\u00eb p\u00ebr porositjen e pic\u00ebs)<\/h4>\n<p>\n<i>Misha Kumachyov (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/ceridan\/\" class=\"user_link\">Ceridan<\/a><\/noindex>), Zhenya Bikkinin, Zhenya Vasiliev<\/i><\/p>\n<p>Nd\u00ebrtuam nj\u00eb prototip t\u00eb nj\u00eb aplikacioni console p\u00ebr geek-\u00ebt, me t\u00eb cilin mund t\u00eb porosis\u00ebsh pica p\u00ebrmes terminalit ose command line, madje edhe ta integrosh n\u00eb deploy pipeline q\u00eb pas nj\u00eb release t\u00eb suksessh\u00ebm t\u00eb d\u00ebrgohet pica n\u00eb zyr\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"Kodojm\u00eb-pica\" src=\"\/wp-content\/uploads\/2019\/05\/14186ccb66d074923f89c1da47d594a1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPuna u nda n\u00eb disa pjes\u00eb: kuptuam si funksionon API yn\u00eb p\u00ebr aplikacionet mobile, nd\u00ebrtuam CLI-n\u00eb ton\u00eb me ndihm\u00ebn e <noindex><a rel=\"nofollow\" href=\"https:\/\/oclif.io\">oclif<\/a><\/noindex> dhe konfiguruam publikimin e paket\u00ebs q\u00eb krijuam. Me detyr\u00ebn e fundit pat\u00ebm disa minuta jo fort t\u00eb k\u00ebndshme af\u00ebr fundit t\u00eb hackathon-it. Gjith\u00e7ka punonte lokalisht dhe madje funksiononin edhe versionet e vjetra t\u00eb publikuara t\u00eb paket\u00ebs, por t\u00eb rejat (ku kishim shtuar m\u00eb shum\u00eb ve\u00e7ori t\u00eb bukura dhe emoji) refuzonin t\u00eb punonin. Shpenzuam rreth 40 minuta p\u00ebr t\u00eb kuptuar \u00e7far\u00eb kishte shkuar keq, por n\u00eb fund gjith\u00e7ka, n\u00eb m\u00ebnyr\u00eb disi magjike, filloi t\u00eb punonte vet\u00eb).<\/p>\n<p>Objektivi yn\u00eb maksimal p\u00ebr hackathon-in ishte nj\u00eb porosi reale pice n\u00eb zyr\u00eb p\u00ebrmes CLI-s\u00eb son\u00eb. E testuam gjith\u00e7ka dhjet\u00ebra her\u00eb n\u00eb mjedisin e testimit, por prap\u00ebseprap\u00eb m\u00eb dridheshin duart kur po shkruaja komandat n\u00eb production.<\/p>\n<p><img decoding=\"async\" alt=\"Kodojm\u00eb-pica\" src=\"\/wp-content\/uploads\/2019\/05\/5392e269446fcd09ceb9e16a8f9c4101.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00eb fund, ia dol\u00ebm v\u00ebrtet!<\/p>\n<p><img decoding=\"async\" alt=\"Kodojm\u00eb-pica\" src=\"\/wp-content\/uploads\/2019\/05\/c966b190a6fe8a2f88a3973305cd03fb.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>CourierGo<\/h4>\n<p>\n<i>Anton Bruzhmelyov (autor), Vanya Zverev, Gleb Lesnikov (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/entropy\/\" class=\"user_link\">entropy<\/a><\/noindex>), Andrey Sarafanov<\/i><\/p>\n<p>Mor\u00ebm iden\u00eb \u00abAplikacion p\u00ebr korrierin\u00bb.<\/p>\n<p><b class=\"spoiler_title\">Pak histori rreth p\u00ebrgatitjes.<\/b>Fillimisht mendova se \u00e7far\u00eb funksionesh mund t\u00eb kishte n\u00eb p\u00ebrgjith\u00ebsi aplikacioni. Doli af\u00ebrsisht kjo list\u00eb funksionalitetesh:<\/p>\n<ul>\n<li>Aplikacioni hyn n\u00eb sistemin e ark\u00ebs s\u00eb d\u00ebrgesave me kod.<\/li>\n<li>N\u00eb aplikacion shihen menj\u00ebher\u00eb porosit\u00eb e disponueshme, pra porosit\u00eb q\u00eb duhen marr\u00eb.<\/li>\n<li>Korrieri e sh\u00ebnon porosin\u00eb dhe e merr p\u00ebr dor\u00ebzim.<\/li>\n<li>I shfaqet koha e parashikuar dhe n\u00ebse do t'ia dal\u00eb apo jo.<\/li>\n<li>Klientit i shfaqet q\u00eb korrieri \u00ebsht\u00eb nisur.<\/li>\n<li>Klientit fillon t\u2019i shfaqet pika e korrierit n\u00eb hart\u00eb dhe koha e parashikuar.<\/li>\n<li>Korrieri mund t\u2019i shkruaj\u00eb klientit n\u00eb chat nga aplikacioni.<\/li>\n<li>Klienti mund t\u2019i shkruaj\u00eb korrierit n\u00eb chat nga aplikacioni.<\/li>\n<li>Pes\u00eb minuta para mb\u00ebrritjes, klientit i vjen nj\u00eb mesazh se korrieri \u00ebsht\u00eb af\u00ebr, ju lutem b\u00ebhuni gati.<\/li>\n<li>Korrieri e sh\u00ebnon n\u00eb aplikacion q\u00eb ka mb\u00ebrritur dhe po pret.<\/li>\n<li>Korrieri telefonon nga aplikacioni me nj\u00eb klikim dhe njofton se (po ngjitet lart, ka mb\u00ebrritur te dera etj.)<\/li>\n<li>Klienti e pranon porosin\u00eb dhe vendos PIN-in nga aplikacioni ose nga SMS p\u00ebr t\u00eb konfirmuar dor\u00ebzimin. (si n\u00ebnshkrim) Q\u00eb korrieri t\u00eb mos mund ta p\u00ebrfundoj\u00eb dor\u00ebzimin para kohe, n\u00ebse \u00ebsht\u00eb me vones\u00eb.<\/li>\n<li>Porosia sh\u00ebnohet n\u00eb sistem si e dor\u00ebzuar.<\/li>\n<\/ul>\n<p>Plus disa skenar\u00eb alternativ\u00eb:<\/p>\n<ul>\n<li>Korrieri mund ta sh\u00ebnoj\u00eb porosin\u00eb si t\u00eb pador\u00ebzuar dhe t\u00eb zgjedh\u00eb arsyen.<\/li>\n<li>N\u00eb rast vonese, korrieri mund t\u00eb l\u00ebshoj\u00eb me nj\u00eb buton nj\u00eb certifikat\u00eb elektronike p\u00ebrmes SMS. Ose certifikata d\u00ebrgohet automatikisht n\u00ebse afati i dor\u00ebzimit nuk respektohet.<\/li>\n<\/ul>\n<p>\nNdjesia se ky projekt kishte perspektiv\u00eb dhe ishte v\u00ebrtet i nevojsh\u00ebm, sigurisht q\u00eb na motivonte shum\u00eb.<\/p>\n<p>T\u00eb nes\u00ebrmen dol\u00ebm me ekipin p\u00ebr drek\u00eb dhe diskutuam si do t\u00eb dukej funksionaliteti minimal i aplikacionit. <\/p>\n<p>Si rezultat, u formua kjo list\u00eb e gj\u00ebrave q\u00eb duhej t\u00eb arrinim t\u00eb b\u00ebnim gjat\u00eb hackathon-it:<\/p>\n<ul>\n<li>Hyrja n\u00eb sistemin e ark\u00ebs s\u00eb d\u00ebrgesave.<\/li>\n<li>T\u00eb shfaqet pozicioni aktual.<\/li>\n<li>T\u00eb d\u00ebrgohen t\u00eb dh\u00ebna n\u00eb nj\u00eb API t\u00eb jashtme (koordinatat, mori porosin\u00eb, dor\u00ebzoi porosin\u00eb).<\/li>\n<li>T\u00eb merren t\u00eb dh\u00ebna nga nj\u00eb API e jashtme (porosit\u00eb aktuale t\u00eb korrierit).<\/li>\n<li>T\u00eb d\u00ebrgohet event-i q\u00eb tregon se mori porosin\u00eb p\u00ebr dor\u00ebzim \/ e dor\u00ebzoi.<\/li>\n<li>T\u00eb shfaqet pozicioni aktual i korrierit n\u00eb hart\u00eb n\u00eb sajt.<\/li>\n<\/ul>\n<p>\nSi\u00e7 dukej, puna kryesore do t\u00eb ishte krijimi i backend-it dhe i vet\u00eb aplikacionit (pas diskutimeve zgjodh\u00ebm ReactNative p\u00ebr zhvillimin e aplikacionit, m\u00eb sakt\u00eb shtres\u00ebn mb\u00ebshtjell\u00ebse mbi t\u00eb \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/expo.io\/\">expo.io<\/a><\/noindex>, q\u00eb t\u00eb mos na duhej fare t\u00eb shkruanim kod nativ). P\u00ebr backend-in, fillimisht shpresonim te Vanya Zverev, si person me p\u00ebrvoj\u00eb n\u00eb pun\u00ebn me shabllonin ton\u00eb t\u00eb sh\u00ebrbimit dhe me k8s (dhe pik\u00ebrisht k\u00ebt\u00eb pjes\u00eb ai e mori p\u00ebrsip\u00ebr). ReactNative vendos\u00ebm ta provonim un\u00eb dhe Andrey Sarafanov.<\/p>\n<p>Vendosa t\u00eb p\u00ebrpiqesha menj\u00ebher\u00eb t\u00eb krijoja nj\u00eb repository funksional p\u00ebr vet\u00eb projektin. Rreth or\u00ebs 12 t\u00eb nat\u00ebs hasa faktin q\u00eb n\u00eb ReactNative geolokacioni n\u00eb sfond funksionon dob\u00ebt n\u00ebse nuk shkruan kod nativ, gj\u00eb q\u00eb m\u00eb frustronte pak. M\u00eb pas u qet\u00ebsova kur kuptova se nuk po lexoja dokumentacionin e framework-ut expo.io, por at\u00eb t\u00eb ReactNative. N\u00eb fund, q\u00eb at\u00eb mbr\u00ebmje e kisha tashm\u00eb t\u00eb qart\u00eb si t\u00eb merrja pozicionin aktual n\u00eb expo.io dhe si t\u00eb vizatoja ekrane t\u00eb ve\u00e7anta (p\u00ebr login, shfaqjen e porosis\u00eb etj.).<\/p>\n<p><img decoding=\"async\" alt=\"Kodojm\u00eb-pica\" src=\"\/wp-content\/uploads\/2019\/05\/2412edc5937b44e141d719269565dfee.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00eb m\u00ebngjes, n\u00eb hackathon, e t\u00ebrhoq\u00ebm Gleb-in n\u00eb projektin ton\u00eb superpremtues. Shpejt p\u00ebrgatit\u00ebm nj\u00eb plan p\u00ebr at\u00eb q\u00eb duhej b\u00ebr\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"Kodojm\u00eb-pica\" src=\"\/wp-content\/uploads\/2019\/05\/4bc0ebef3ed6b661bd25ef75ac6d536d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nB\u00ebm\u00eb nj\u00eb gabim kur, sipas shabllonit t\u00eb projektit, u p\u00ebrpoq\u00ebm t\u00eb realizonim komunikimin jo p\u00ebrmes HTTP, por p\u00ebrmes GRPC, pasi askush nuk dinte t\u00eb nd\u00ebrtonte nj\u00eb klient GRPC p\u00ebr JavaScript. N\u00eb fund, pasi humb\u00ebm rreth nj\u00eb or\u00eb e gjysm\u00eb me k\u00ebt\u00eb, e lam\u00eb fare si ide. P\u00ebr shkak t\u00eb k\u00ebsaj, edhe ekipi i backend-it nisi t\u00eb ripunonte serverin e gatsh\u00ebm nga GRPC n\u00eb WebApi. Pas gjysm\u00eb ore, m\u00eb n\u00eb fund arrit\u00ebm t\u00eb konfiguroni komunikimin e aplikacionit me backend-in, mrekulli e v\u00ebrtet\u00eb. Por pik\u00ebrisht n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb Gleb pothuajse e kishte p\u00ebrfunduar deploy-in n\u00eb k8s, plus edhe autodeploy pas commit-it n\u00eb master. \ud83d\ude42<\/p>\n<p>P\u00ebr ruajtjen e t\u00eb dh\u00ebnave zgjodh\u00ebm MySQL, q\u00eb t\u00eb mos rrezikonim t\u00eb pakt\u00ebn me baz\u00ebn e t\u00eb dh\u00ebnave (kishte edhe mendime p\u00ebr CosmosDb).<\/p>\n<p><img decoding=\"async\" alt=\"Kodojm\u00eb-pica\" src=\"\/wp-content\/uploads\/2019\/05\/2ae381b2006330915ae38d55f2ac08cd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00eb fund: <\/p>\n<ul>\n<li>Implementuam ruajtjen e koordinatave aktuale t\u00eb korrierit nga aplikacioni n\u00eb baz\u00ebn e t\u00eb dh\u00ebnave.<\/li>\n<li>Integruam RabbitMQ dhe u abonuan te mesazhet p\u00ebr marrjen e porosis\u00eb nga korrieri, q\u00eb porosia t\u00eb shfaqej menj\u00ebher\u00eb n\u00eb aplikacionin e korrierit.<\/li>\n<li>Nis\u00ebm t\u00eb ruanim n\u00eb baz\u00ebn ton\u00eb t\u00eb dh\u00ebnash koh\u00ebn e dor\u00ebzimit t\u00eb porosis\u00eb, pasi korrieri shtypte butonin n\u00eb aplikacion. Nuk arrit\u00ebm t\u00eb shtonim d\u00ebrgimin e event-it mbrapsht n\u00eb RabbitMQ q\u00eb porosia ishte dor\u00ebzuar.<\/li>\n<li>B\u00ebra shfaqjen e hart\u00ebs n\u00eb faqen currentorder n\u00eb sajt me pozicionin aktual t\u00eb korrierit. Por ky funksionalitet mbeti pak i pap\u00ebrfunduar, sepse n\u00eb mjedis nuk arrit\u00ebm t\u00eb konfiguroni CORS p\u00ebr t\u00eb marr\u00eb koordinatat nga sh\u00ebrbimi yn\u00eb i ri.<\/li>\n<\/ul>\n<p><\/p>\n<h4>M87<\/h4>\n<p>\n<i>Roma Bukin, Gosha Polevoy (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/georgepolevoy\/\" class=\"user_link\">georgepolevoy<\/a><\/noindex>), Artyom Trofimushkin<\/i><\/p>\n<p>Donim t\u00eb implementonim nj\u00eb ofrues OpenID Connect, pasi aktualisht p\u00ebrdorim nj\u00eb protokoll autentikimi t\u00eb zhvilluar nga ne, dhe kjo krijon nj\u00eb s\u00ebr\u00eb v\u00ebshtir\u00ebsish: biblioteka klienti t\u00eb personalizuara, pun\u00eb jo t\u00eb p\u00ebrshtatshme p\u00ebr partner\u00ebt e jasht\u00ebm dhe ndoshta edhe probleme sigurie (n\u00eb fund t\u00eb fundit, OAuth2.0 dhe OpenID Connect n\u00eb implementimin standard mund t\u00eb konsiderohen t\u00eb sigurta, nd\u00ebrsa p\u00ebr zgjidhjen ton\u00eb nuk jam i sigurt).<\/p>\n<p><img decoding=\"async\" alt=\"Kodojm\u00eb-pica\" src=\"\/wp-content\/uploads\/2019\/05\/b7247acfc91045f1040535d1f404c64a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKrijuam nj\u00eb sh\u00ebrbim t\u00eb ve\u00e7ant\u00eb q\u00eb emulon ruajtjen e t\u00eb dh\u00ebnave personale, p\u00ebr t\u00eb nd\u00ebrtuar nj\u00eb model t\u00eb vog\u00ebl t\u00eb nj\u00eb ofruesi autentikimi Country-Agnostic, i cili do t\u2019i merrte t\u00eb dh\u00ebnat personale nga nj\u00eb sh\u00ebrbim i ve\u00e7ant\u00eb. N\u00eb perspektiv\u00eb, kjo do t\u00eb jepte mund\u00ebsin\u00eb p\u00ebr t\u00eb pasur nj\u00eb sh\u00ebrbim t\u00eb vet\u00ebm me t\u00eb cilin do t\u00eb ishte e mundur t\u00eb hyhej me nj\u00eb llogari n\u00eb \u00e7do vend, duke qen\u00eb nj\u00ebkoh\u00ebsisht n\u00eb p\u00ebrputhje me GDPR dhe ligje t\u00eb tjera. K\u00ebt\u00eb pjes\u00eb e realizuam, ashtu si edhe ofruesin, dhe i integruam me sukses me nj\u00ebri-tjetrin. M\u00eb pas duhej t\u00eb nd\u00ebrtonim nj\u00eb API q\u00eb do t\u00eb mbrohej me token\u00ebt e l\u00ebshuar nga ofruesi, t\u00eb mb\u00ebshteste introspection-in e tyre p\u00ebrmes ofruesit dhe t\u00eb kthente t\u00eb dh\u00ebna t\u00eb mbrojtura n\u00ebse k\u00ebrkesa p\u00ebrmbushte politikat e autorizimit (verifikojm\u00eb q\u00eb p\u00ebrdoruesi \u00ebsht\u00eb autentikuar sipas skem\u00ebs Bearer, q\u00eb tokeni i tij p\u00ebrmban nj\u00eb scope t\u00eb caktuar dhe q\u00eb vet\u00eb p\u00ebrdoruesi ka permission-in q\u00eb lejon ekzekutimin e thirrjes). Edhe kjo pjes\u00eb u realizua. Komponenti i fundit ishte klienti JavaScript, t\u00eb cilit do t\u2019i jepej nj\u00eb token me t\u00eb cilin ai do t\u00eb th\u00ebrriste API-n e mbrojtur. K\u00ebt\u00eb pjes\u00eb nuk arrit\u00ebm ta p\u00ebrfundonim. Pra, e gjith\u00eb pjesa funksionale ishte gati, por mungonte pjesa front-end p\u00ebr t\u00eb demonstruar funksionimin e gjith\u00eb sistemit.<\/p>\n<h4>E-E-E (loj\u00eb e vog\u00ebl)<\/h4>\n<p>\n<i>Dima Afonchenko, Sasha Konovalov<\/i><\/p>\n<p>Krijuam nj\u00eb mini-loj\u00eb n\u00eb Unity ku duar t\u00eb shpejta hedhin sallam mbi pica. N\u00ebse e hedh sallamin gabim, n\u00eb ekran shfaqet mbishkrimi i trishtuar \u00abRefuzuar\u00bb, nd\u00ebrsa n\u00ebse i gjith\u00eb sallami vendoset sakt\u00eb, at\u00ebher\u00eb shfaqet nj\u00eb fakt i rast\u00ebsish\u00ebm p\u00ebr pic\u00ebn.<\/p>\n<p><img decoding=\"async\" alt=\"Kodojm\u00eb-pica\" src=\"\/wp-content\/uploads\/2019\/05\/1c9daf62d4907f9a13de07ac0dd2a14e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDonim t\u00eb b\u00ebnim edhe nj\u00eb nivel t\u00eb dyt\u00eb me hedhjen e domateve, por nuk ia dol\u00ebm n\u00eb koh\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"Kodojm\u00eb-pica\" src=\"\/wp-content\/uploads\/2019\/05\/e3d5028c8043ab1192bbb8cb31918def.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Nj\u00eb vazhdim i shkurt\u00ebr: kush fitoi n\u00eb fund?<\/h2>\n<p>\nPara hackathon-it po flisnim me djemt\u00eb dhe i pyeta se \u00e7far\u00eb \u00e7mimi do t\u00eb donin t\u00eb merrnin n\u00ebse fitonin. Doli se \u00e7mimi m\u00eb i vlefsh\u00ebm do t\u00eb ishte \u00abrruga p\u00ebr n\u00eb prod\u00bb. <\/p>\n<p><img decoding=\"async\" alt=\"Kodojm\u00eb-pica\" src=\"\/wp-content\/uploads\/2019\/05\/814f28de3020cc16ce0108efdbbd963d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrandaj, s\u00eb shpejti prisni nga ne njoftimin e nj\u00eb loje me leva q\u00eb hedhin pepperoni mbi pic\u00eb.<\/p>\n<blockquote><p>Si\u00e7 mund ta ket\u00eb v\u00ebn\u00eb re lexuesi i v\u00ebmendsh\u00ebm, fitoi ekipi \u00abE-E-E (igruha)\u00bb. I urojm\u00eb djemt\u00eb!<\/p><\/blockquote>\n<p class=\"for_users_only_msg\">Vet\u00ebm p\u00ebrdoruesit e regjistruar mund t\u00eb marrin pjes\u00eb n\u00eb anket\u00eb. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Hyni<\/a><\/noindex>, ju lutem.<\/p>\n<h2 class=\"default-block__polling-title\">Cili projekt ju p\u00eblqeu m\u00eb shum\u00eb?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Oleg Learning (machine learning)<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    GUI p\u00ebr NOOBS<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    CourierGo<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    M87<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    E-E-E<\/p>\n<\/li>\n<\/ul>\n<p>    Votuan 5 p\u00ebrdorues. Abstenuan 3 p\u00ebrdorues.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/449344\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u041c\u044b \u0441\u043f\u043e\u043d\u0442\u0430\u043d\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u043b\u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0445\u0430\u043a\u0430\u0442\u043e\u043d. \u0420\u0435\u0448\u0438\u043b\u0430 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u0441\u0432\u043e\u0438\u043c\u0438 \u0431\u043e\u043b\u044f\u043c\u0438 \u0438 \u0432\u044b\u0432\u043e\u0434\u0430\u043c\u0438 \u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0435 \u043a \u043d\u0435\u043c\u0443 \u0437\u0430 2 \u043d\u0435\u0434\u0435\u043b\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438\u0441\u044c. \u0421\u043a\u0443\u0447\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442\u0441\u044f \u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433\u043e\u043c \u041d\u0430\u0447\u043d\u0443 \u0441 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438. \u041d\u0430\u0447\u0430\u043b\u043e \u0430\u043f\u0440\u0435\u043b\u044f. \u0412 \u043d\u0430\u0448\u0435\u043c \u0432 \u043e\u0444\u0438\u0441\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u0445\u0430\u043a\u0430\u0442\u043e\u043d MskDotNet Community. \u0411\u0438\u0442\u0432\u0430 \u0437\u0430 \u0422\u0430\u0442\u0443\u0438\u043d \u0432 \u0440\u0430\u0437\u0433\u0430\u0440\u0435, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26093,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-34626","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u041c\u044b \u0441\u043f\u043e\u043d\u0442\u0430\u043d\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u043b\u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0445\u0430\u043a\u0430\u0442\u043e\u043d.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/news\/kodim-pitstsa\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u043e\u0434\u0438\u043c\u2013\u043f\u0438\u0446\u0446\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u041c\u044b \u0441\u043f\u043e\u043d\u0442\u0430\u043d\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u043b\u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0445\u0430\u043a\u0430\u0442\u043e\u043d.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/news\/kodim-pitstsa\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:59:30+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:59:30+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Kodojm\u00eb\u2013pic\u00eb | ProHoster","description":"P\u00ebrsh\u00ebndetje, Habr. Ne zhvilluam spontanisht hackathon-in ton\u00eb t\u00eb par\u00eb t\u00eb brendsh\u00ebm.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/news\/kodim-pitstsa","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u043e\u0434\u0438\u043c\u2013\u043f\u0438\u0446\u0446\u0430 | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u041c\u044b \u0441\u043f\u043e\u043d\u0442\u0430\u043d\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u043b\u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0445\u0430\u043a\u0430\u0442\u043e\u043d.","og:url":"https:\/\/prohoster.info\/sq\/blog\/news\/kodim-pitstsa","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:59:30+00:00","article:modified_time":"2019-10-31T18:59:30+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34626","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 19:59:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:17:24","updated":"2026-01-21 19:59:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/34626","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=34626"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/34626\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/26093"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=34626"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=34626"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=34626"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}