{"id":39071,"date":"2019-10-31T22:27:41","date_gmt":"2019-10-31T19:27:41","guid":{"rendered":"https:\/\/prohoster.info\/blog\/pochemu-polezno-izobretat-kolyosa\/"},"modified":"2019-10-31T22:27:41","modified_gmt":"2019-10-31T19:27:41","slug":"pochemu-polezno-izobretat-kolyosa","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/news\/pochemu-polezno-izobretat-kolyosa","title":{"rendered":"De ce este util s\u0103 inventezi ro\u021bile.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"De ce este util s\u0103 inventezi ro\u021bile.\" src=\"\/wp-content\/uploads\/2019\/10\/1067abfe7a3cdf764c49bbb0d5dd6d1b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRecent, am avut un interviu cu un dezvoltator JavaScript care a candidat pentru un post de senior. Un coleg, de asemenea prezent la interviu, l-a \u00eentrebat pe candidat s\u0103 scrie o func\u021bie care s\u0103 fac\u0103 o solicitare HTTP \u0219i, \u00een cazul unui e\u0219ec, s\u0103 \u00eencerce din nou de mai multe ori.<\/p>\n<p>El a scris codul direct pe tabl\u0103, a\u0219a c\u0103 era suficient s\u0103 deseneze ceva aproximativ. Dac\u0103 ar fi ar\u0103tat doar c\u0103 \u00een\u021belege bine esen\u021ba problemei, am fi fost destul de mul\u021bumi\u021bi. Dar, din p\u0103cate, nu a reu\u0219it s\u0103 g\u0103seasc\u0103 o solu\u021bie potrivit\u0103. Atunci, atribuind acest lucru emo\u021biilor, am decis s\u0103-i u\u0219ur\u0103m un pic sarcina \u0219i l-am rugat s\u0103 transforme func\u021bia cu callback-uri \u00eentr-o func\u021bie bazat\u0103 pe promisiuni.<\/p>\n<p>Dar, din p\u0103cate. Da, era evident c\u0103 un astfel de cod \u00eei fusese familiar \u00eenainte. El \u0219tia \u00een linii mari cum func\u021bioneaz\u0103 totul. Ne-ar fi ajuns o schi\u021b\u0103 a solu\u021biei care s\u0103 demonstreze \u00een\u021belegerea conceptului. Totu\u0219i, codul pe care candidatul \u00eel scria pe tabl\u0103 era complet lipsit de sens. Avea o p\u0103rere extrem de confuz\u0103 despre ce sunt promisiunile \u00een JavaScript \u0219i nu putea s\u0103 explice cu adev\u0103rat de ce sunt necesare. Pentru un junior ar fi fost \u00eenc\u0103 acceptabil, dar pentru un post de senior nu se califica. Cum ar fi reu\u0219it acest dezvoltator s\u0103 rezolve bug-uri \u00eentr-un lan\u021b complex de promisiuni \u0219i s\u0103 explice altora ce anume a f\u0103cut?<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Dezvoltatorii consider\u0103 codul final ca fiind de la sine \u00een\u021beles.<\/h4>\n<p>\n\u00cen procesul de dezvoltare, ne confrunt\u0103m constant cu materiale reproducibile. Transfer\u0103m fragmente de cod pentru a nu fi nevoi\u021bi s\u0103 le scriem din nou de fiecare dat\u0103. Astfel, concentr\u00e2ndu-ne toat\u0103 aten\u021bia asupra p\u0103r\u021bilor cheie, privim codul final cu care lucr\u0103m ca fiind ceva evident \u2013 presupunem pur \u0219i simplu c\u0103 totul va func\u021biona corect.<\/p>\n<p>\u0218i de obicei, chiar c\u0103 func\u021bioneaz\u0103, dar atunci c\u00e2nd apar dificult\u0103\u021bi, \u00een\u021belegerea mecanicii sale se dovede\u0219te extrem de valoroas\u0103.<\/p>\n<p>Astfel, candidatul nostru pentru postul de dezvoltator senior considera obiectele promise ca fiind evidente. Probabil c\u0103 \u00ee\u0219i imagina ce trebuie s\u0103 fac\u0103 cu ele c\u00e2nd apare \u00een codul altora, dar principiul general nu-l \u00een\u021belegea \u0219i nu a fost capabil s\u0103-l repete \u00een interviu. Poate c\u0103 a \u00eenv\u0103\u021bat un fragment pe de rost \u2013 nu e deloc dificil:<\/p>\n<pre><code class=\"javascript\">return new Promise((resolve, reject) =&gt; {\n  functionWithCallback((err, result) =&gt; {\n   return err ? reject(err) : resolve(result);\n  });\n});<\/code><\/pre>\n<p>\n\u0218i eu am f\u0103cut la fel \u2013 probabil c\u0103 to\u021bi am f\u0103cut-o m\u0103car o dat\u0103. Pur \u0219i simplu memoram un fragment de cod pentru a-l folosi mai t\u00e2rziu \u00een munc\u0103, av\u00e2nd o idee general\u0103 despre cum func\u021bioneaz\u0103 totul. Dar dac\u0103 dezvoltatorul ar \u00een\u021belege cu adev\u0103rat conceptul, nu ar trebui s\u0103 memoreze nimic \u2013 ar \u0219ti pur \u0219i simplu cum se face \u0219i ar reproduce f\u0103r\u0103 efort tot ce este necesar \u00een cod.<\/p>\n<h4>Consulta\u021bi sursele<\/h4>\n<p>\n\u00cen 2012, c\u00e2nd dominarea cadrelor frontale nu se stabilise \u00eenc\u0103, lumea era condus\u0103 de jQuery, iar eu citeam cartea <noindex><a rel=\"nofollow\" href=\"https:\/\/www.manning.com\/books\/secrets-of-the-javascript-ninja\">Secrets of the JavaScript Ninja<\/a><\/noindex>, scris\u0103 de John Resig, creatorul jQuery.<\/p>\n<p>Cartea \u00eei \u00eenva\u021b\u0103 pe cititori cum s\u0103-\u0219i creeze propriul jQuery de la zero \u0219i ofer\u0103 o oportunitate unic\u0103 de a \u00een\u021belege g\u00e2ndirea care a dus la crearea bibliotecii. \u00cen ultimii ani, jQuery a pierdut mult din popularitatea sa, dar totu\u0219i recomand cu c\u0103ldur\u0103 cartea. Ceea ce m-a impresionat cel mai mult a fost sentimentul persistent c\u0103 a\u0219 fi putut ajunge la toate acestea \u0219i singur. Pa\u0219ii descri\u0219i de autor p\u0103reau at\u00e2t de logici, at\u00e2t de clari, \u00eenc\u00e2t am \u00eenceput s\u0103 cred cu seriozitate c\u0103 a\u0219 fi putut crea jQuery f\u0103r\u0103 dificultate, dac\u0103 m-a\u0219 fi apucat de treab\u0103.<\/p>\n<p>Desigur, \u00een realitate nu a\u0219 fi reu\u0219it nimic de genul \u0103sta \u2013 a\u0219 fi considerat c\u0103 este prea greu. Solu\u021biile proprii mi s-ar fi p\u0103rut prea simple \u0219i naive pentru a func\u021biona, iar eu m-a\u0219 fi dat b\u0103tut. A\u0219 fi considerat jQuery ca fiind ceva evident, a c\u0103rei func\u021bionare corect\u0103 trebuie pur \u0219i simplu s\u0103 credem \u00een orb. Ulterior, cu greu a\u0219 fi mai pierdut timp \u00eencerc\u00e2nd s\u0103 \u00een\u021beleg mecanica acestei biblioteci, folosindu-m\u0103 de ea ca de o cutie neagr\u0103.<\/p>\n<p>\u00cens\u0103, \u00eent\u00e2lnirea cu aceast\u0103 carte m-a schimbat. Am \u00eenceput s\u0103 m\u0103 uit mai atent la codul surs\u0103 \u0219i am descoperit c\u0103 implementarea multor solu\u021bii este, de fapt, foarte transparent\u0103, chiar evident\u0103. Nu, desigur, s\u0103 ajung la un asemenea lucru este deja un alt capitol. Dar studiul codului altora \u0219i reproducerea solu\u021biilor deja existente ne ajut\u0103 s\u0103 g\u00e2ndim ceva propriu. <\/p>\n<p>Inspira\u021bia pe care o vei culege \u0219i modelele pe care \u00eencepi s\u0103 le observi te vor schimba ca dezvoltator. Vei descoperi c\u0103 acea bibliotec\u0103 minunat\u0103 pe care o folose\u0219ti constant \u0219i la care te-ai obi\u0219nuit s\u0103 te g\u00e2nde\u0219ti ca la un artefact magic nu func\u021bioneaz\u0103 pe baza magiei, ci doar rezolv\u0103 problema \u00eentr-un mod concis \u0219i ingenios.<\/p>\n<p>Uneori, va trebui s\u0103 te zbateri cu codul, analiz\u00e2ndu-l pas cu pas, dar exact a\u0219a, avans\u00e2nd \u00een pa\u0219i mici \u0219i succesivi, vei reu\u0219i s\u0103 reproduci drumul autorului c\u0103tre solu\u021bie. Acest lucru \u00ee\u021bi va permite s\u0103 te aprofundezi \u00een procesul de scriere a codului \u0219i \u00ee\u021bi va oferi mai mult\u0103 \u00eencredere \u00een c\u0103utarea propriilor solu\u021bii.<\/p>\n<p>C\u00e2nd am \u00eenceput s\u0103 lucrez cu promisiuni, mi s-a p\u0103rut c\u0103 este o pur\u0103 magie. Apoi am aflat c\u0103 \u00een spatele lor se afl\u0103 acelea\u0219i apeluri inverse, iar lumea mea de programare s-a schimbat complet. Deci, modelul, al c\u0103rui scop este s\u0103 ne scape de apelurile inverse, se realizeaz\u0103 prin apeluri inverse?!<\/p>\n<p>Asta m-a ajutat s\u0103 privesc lucrurile din alte perspective \u0219i s\u0103 realizez c\u0103 nu am \u00een fa\u021b\u0103 ni\u0219te buc\u0103\u021bi ciudate de cod, a c\u0103ror complexitate extrem\u0103 nu o voi \u00een\u021belege niciodat\u0103. Acestea sunt doar modele, pe care po\u021bi s\u0103 le \u00een\u021belegi f\u0103r\u0103 probleme cu un pic de curiozitate \u0219i aprofundare. Exact a\u0219a \u00eenva\u021b\u0103 oamenii s\u0103 programeze \u0219i cresc ca dezvoltatori.<\/p>\n<h4>Reinventea\u021bi acest roat\u0103<\/h4>\n<p>\nA\u0219a c\u0103 nu ezita s\u0103 reinventezi ro\u021bile: scrie-\u021bi propriul cod pentru a lega datele, creeaz\u0103 o promisiune f\u0103cut\u0103 manual sau construie\u0219te de la zero o solu\u021bie pentru gestionarea st\u0103rilor. <br \/>\nNu conteaz\u0103 c\u0103 nimeni nu va folosi aceste lucruri \u2013 ci tu \u0219tii acum cum s\u0103 faci asta. \u0218i dac\u0103 vei avea ocazia s\u0103 folose\u0219ti ulterior aceste realiz\u0103ri \u00een propriile proiecte, atunci va fi cu adev\u0103rat grozav. Vei putea s\u0103 le dezvol\u021bi \u0219i s\u0103 \u00eenve\u021bi \u0219i mai multe.<\/p>\n<p>Scopul aici nu este s\u0103 trimi\u021bi codul t\u0103u \u00een produc\u021bie, ci s\u0103 \u00eenve\u021bi ceva nou. A scrie implementarea unei solu\u021bii deja existente este o modalitate excelent\u0103 de a \u00eenv\u0103\u021ba de la cei mai buni programatori \u0219i de a-\u021bi perfec\u021biona abilit\u0103\u021bile.<br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/digital-ecosystems\/blog\/472006\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0430 \u0434\u043d\u044f\u0445 \u044f \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u043d\u0430 JavaScript, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u043e\u0432\u0430\u043b \u043d\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0441\u0435\u043d\u0438\u043e\u0440\u0430. \u041a\u043e\u043b\u043b\u0435\u0433\u0430, \u0442\u043e\u0436\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0432\u0448\u0438\u0439 \u043d\u0430 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438, \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043b \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u0430 HTTP \u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u0443\u0434\u0430\u0447\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u043b\u0430 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437. \u041e\u043d \u043f\u0438\u0441\u0430\u043b \u043a\u043e\u0434 \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 \u0434\u043e\u0441\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b \u0431\u044b\u043b\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043d\u0435\u0447\u0442\u043e \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435. \u0415\u0441\u043b\u0438 \u0431\u044b \u043e\u043d \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29315,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-39071","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.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0430 \u0434\u043d\u044f\u0445 \u044f \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u043d\u0430.\" \/>\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\/ro\/blog\/news\/pochemu-polezno-izobretat-kolyosa\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u043a\u043e\u043b\u0451\u0441\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0430 \u0434\u043d\u044f\u0445 \u044f \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u043d\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/news\/pochemu-polezno-izobretat-kolyosa\" \/>\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-31T19:27:41+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:27:41+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\udd47De ce este util s\u0103 reinventezi ro\u021bile | ProHoster","description":"Recent, am avut un interviu cu un dezvoltator pe.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/news\/pochemu-polezno-izobretat-kolyosa","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u043a\u043e\u043b\u0451\u0441\u0430 | ProHoster","og:description":"\u041d\u0430 \u0434\u043d\u044f\u0445 \u044f \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u043d\u0430.","og:url":"https:\/\/prohoster.info\/ro\/blog\/news\/pochemu-polezno-izobretat-kolyosa","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-31T19:27:41+00:00","article:modified_time":"2019-10-31T19:27:41+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"39071","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-24 00:37:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 23:16:10","updated":"2026-01-24 00:37:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/39071","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=39071"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/39071\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/29315"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=39071"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=39071"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=39071"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}