{"id":36115,"date":"2019-10-31T22:09:42","date_gmt":"2019-10-31T19:09:42","guid":{"rendered":"https:\/\/prohoster.info\/blog\/ne-soglashajtes-razrabatyvat-to-chego-ne-ponimaete\/"},"modified":"2019-10-31T22:09:42","modified_gmt":"2019-10-31T19:09:42","slug":"ne-soglashajtes-razrabatyvat-to-chego-ne-ponimaete","status":"publish","type":"post","link":"https:\/\/prohoster.info\/da\/blog\/news\/ne-soglashajtes-razrabatyvat-to-chego-ne-ponimaete","title":{"rendered":"Accepter ikke at udvikle noget, du ikke forst\u00e5r","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Accepter ikke at udvikle noget, du ikke forst\u00e5r\" src=\"\/wp-content\/uploads\/2019\/07\/bfd609d9004113a76d59d8763d82c6d0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSiden begyndelsen af 2018 har jeg haft rollen som leder\/chef\/lead developer i teamet \u2014 kald det hvad du vil, men essensen er, at jeg har det fulde ansvar for en af modulerne og for alle udviklere, der arbejder med det. Denne stilling giver mig et nyt perspektiv p\u00e5 udviklingsprocessen, da jeg er involveret i flere projekter og deltager mere aktivt i beslutningstagningen. Nyligt, takket v\u00e6re disse to omst\u00e6ndigheder, inds\u00e5 jeg pludselig, hvor meget graden af forst\u00e5else p\u00e5virker koden og applikationen.<\/p>\n<p>Den tanke, jeg \u00f8nsker at formidle, er, at kvaliteten af koden (og det endelige produkt) er n\u00e6rt relateret til, hvor bevidste folk, der designer og skriver koden, er om, hvad de faktisk laver.<\/p>\n<p>Du t\u00e6nker m\u00e5ske nu: \"Tak, kaptajn. Selvf\u00f8lgelig er det en fordel at forst\u00e5, hvad man overhovedet skriver. Ellers kunne man lige s\u00e5 godt hyre en gruppe aber til at trykke p\u00e5 tilf\u00e6ldige taster, og s\u00e5 ville det v\u00e6re det.\" Og du har helt ret. Jeg tager derfor som et givet, at du er klar over, at det er n\u00f8dvendigt at have en generel forst\u00e5else af, hvad du laver. Dette kan kaldes nul-niveau forst\u00e5else, og det vil vi ikke dykke ned i detaljer omkring. Vi vil derimod fokusere p\u00e5, hvad pr\u00e6cist der skal forst\u00e5s, og hvordan det p\u00e5virker de beslutninger, du tr\u00e6ffer hver dag. Hvis jeg havde vidst disse ting p\u00e5 forh\u00e5nd, ville det have sparet mig for meget spildt tid og tvivlsom kode.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nSelvom du ikke vil se en eneste linje kode nedenfor, mener jeg stadig, at alt, hvad der siges her, er af stor betydning for at skrive kvalitetskode, der taler til l\u00e6seren. <\/p>\n<h4>F\u00f8rste niveau af forst\u00e5else: Hvorfor virker det ikke?<\/h4>\n<p>\nUdviklere n\u00e5r normalt til dette niveau i de tidligste faser af deres karriere, nogle gange endda uden assistance fra omgivelserne \u2014 i hvert fald if\u00f8lge mine observationer. Forestil dig, at du har modtaget en bug-rapport: En eller anden funktion i applikationen virker ikke, den skal rettes. Hvordan vil du handle?<\/p>\n<p>Det standardm\u00f8nster ser s\u00e5ledes ud:<\/p>\n<ol>\n<li>Find den del af koden, der for\u00e5rsager problemet (hvordan det g\u00f8res, er et separat emne, som jeg beskriver i min bog om for\u00e6ldet kode)<\/li>\n<li>Foretag \u00e6ndringer i denne del<\/li>\n<li>S\u00f8rg for, at fejlen er l\u00f8st, og at der ikke er opst\u00e5et regressionsfejl.<\/li>\n<\/ol>\n<p>\nLad os nu fokusere p\u00e5 det andet punkt \u2013 at foretage \u00e6ndringer i koden. Der er to tilgange til denne proces. Den f\u00f8rste: forst\u00e5, hvad der pr\u00e6cist sker i den nuv\u00e6rende kode, identificere fejlen og rette den. Den anden: g\u00e5 p\u00e5 gef\u00fchl \u2013 tilf\u00f8je, lad os sige, +1 i en betingelse eller en l\u00f8kke, se om denne funktion fungerer i det \u00f8nskede scenarie, s\u00e5 pr\u00f8ve noget andet og s\u00e5dan forts\u00e6tte i det uendelige.<\/p>\n<p>Den f\u00f8rste tilgang er den korrekte. Som Steve McConnell forklarer i sin bog Code Complete (for \u00f8vrigt anbefaler jeg den varmt), skal vi hver gang vi \u00e6ndrer koden, v\u00e6re i stand til med sikkerhed at forudsige, hvordan det vil p\u00e5virke applikationen. Jeg citerer efter hukommelsen, men hvis en fejlfix ikke fungerer, som du forventede, b\u00f8r det v\u00e6kke din bekymring, og du skal stille sp\u00f8rgsm\u00e5lstegn ved hele din handlingsplan.<\/p>\n<p>Sammenfattende skal man for at udf\u00f8re en ordentlig fejlfix, som ikke forringer kodekvaliteten, have forst\u00e5else for b\u00e5de hele kode-strukturen og kilden til det specifikke problem.<\/p>\n<h4>Andet niveau af forst\u00e5else: Hvorfor fungerer det?<\/h4>\n<p>\nDette niveau er ikke lige s\u00e5 intuitivt at forst\u00e5 som det forrige. Da jeg stadig var en nybegynder udvikler, l\u00e6rte jeg det fra min chef, og jeg har senere mange gange selv forklaret essensen for nybegyndere.<\/p>\n<p>Lad os denne gang forestille os, at du har modtaget to fejlrapporter samtidig: den f\u00f8rste handler om scenarie A, den anden om scenarie B. I begge scenarier sker der noget galt. Derfor g\u00e5r du f\u00f8rst i gang med den f\u00f8rste fejl. I henhold til de principper, vi har draget for det f\u00f8rste niveau af forst\u00e5else, dykker du grundigt ned i koden, der er relevant for problemet, finder ud af, hvorfor det f\u00e5r applikationen til at opf\u00f8re sig, som den g\u00f8r i scenarie A, og foretager rimelige justeringer, som giver det resultat, du forventede. Alt g\u00e5r godt.<\/p>\n<p>Derefter g\u00e5r du videre til scenarie B. Du gentager scenariet i et fors\u00f8g p\u00e5 at fremprovokere fejlen, men \u2013 overraskelse! \u2013 nu virker alt som det skal. For at bekr\u00e6fte din formodning annullerer du de \u00e6ndringer, der blev foretaget under arbejdet med fejl A, og fejl B dukker op igen. Din fejlfix har l\u00f8st begge problemer. Heldigvis!<\/p>\n<p>Du havde overhovedet ikke forudset dette. Du har opfundet en m\u00e5de at rette fejlen i scenario A, og du har ingen anelse om, hvorfor det ogs\u00e5 virkede for scenario B. P\u00e5 dette punkt er fristelsen stor til at konkludere, at begge opgaver er blevet l\u00f8st tilfredsstillende. Det virker logisk: form\u00e5let var at rette fejlene, var det ikke? Men arbejdet er ikke f\u00e6rdigt endnu: du skal stadig finde ud af, hvorfor dine handlinger rettede fejlen i scenario B. Hvorfor? Fordi det m\u00e5ske virker p\u00e5 forkerte principper, og s\u00e5 skal du lede efter en anden l\u00f8sning. Her er et par eksempler p\u00e5 s\u00e5danne tilf\u00e6lde:<\/p>\n<ul>\n<li>da l\u00f8sningen ikke blev skr\u00e6ddersyet til fejl B under hensyntagen til alle faktorer, har du muligvis ubevidst brudt funktion C. <\/li>\n<li>det er ikke usandsynligt, at der ogs\u00e5 gemmer sig en tredje fejl et sted, der relaterer sig til den samme funktion, og din bugfix binder det tilfredsstillende arbejde af systemet i scenario B til denne. Lige nu ser alt godt ud, men en dag vil den tredje fejl blive opdaget og rettet. S\u00e5 vil der igen opst\u00e5 en fejl i scenario B, og heldigvis kun der.<\/li>\n<\/ul>\n<p>\nAlt dette tilf\u00f8jer kaos til koden og vil f\u00f8r eller senere ramme dig \u2014 sandsynligvis p\u00e5 det mest ubelejlige tidspunkt. Du m\u00e5 tage dig sammen for at tvinge dig selv til at bruge tid p\u00e5 at forst\u00e5, hvorfor alt tilsyneladende virker, men det er det v\u00e6rd. <\/p>\n<h4>Tredje forst\u00e5elsesniveau: Hvorfor virker det?<\/h4>\n<p>\nMin nylige indsigt er netop relateret til dette niveau, og det ville nok have givet mig de st\u00f8rste fordele, hvis jeg var kommet til den tanke tidligere.<\/p>\n<p>For at g\u00f8re det mere klart, lad os tage et eksempel: dit modul skal g\u00f8res kompatibelt med funktion X. Du er ikke s\u00e6rlig fortrolig med funktion X, men du har f\u00e5et at vide, at for at v\u00e6re kompatibel med det skal du bruge rammev\u00e6rk F. Andre moduler, der integreres med X, arbejder netop med det.<\/p>\n<p>Din kode har fra dag \u00e9t ikke haft nogen forbindelse til rammev\u00e6rket F, s\u00e5 det vil ikke v\u00e6re s\u00e5 nemt at implementere det. Det vil f\u00e5 alvorlige konsekvenser for nogle komponenter af modulet. Alligevel fordyber du dig i udviklingen: i flere uger skriver du kode, tester, lancerer pilotversioner, modtager feedback, retter regressionsfejl, opdager uventede komplikationer, overholder ikke de oprindeligt aftalte frister, skriver mere kode, tester, f\u00e5r feedback, retter regressionsfejl \u2014 alt dette for at implementere rammev\u00e6rket F.<\/p>\n<p>Og p\u00e5 et tidspunkt indser du pludselig \u2014 eller m\u00e5ske h\u00f8rer du det fra nogen \u2014 at rammev\u00e6rket F m\u00e5ske slet ikke giver dig kompatibilitet med funktion X. M\u00e5ske har al denne tid og kraft v\u00e6ret anvendt fuldst\u00e6ndig forkert.<\/p>\n<p>Noget lignende skete en gang i forbindelse med et projekt, jeg var ansvarlig for. Hvordan skete det? Fordi jeg ikke forstod essensen af funktion X og hvordan den relaterer sig til rammev\u00e6rket F. Hvad skulle jeg have gjort? Bedt en person, der opstiller opgaven til udviklingen, om klart at forklare, hvordan den planlagte handlingsplan f\u00f8rer til det \u00f8nskede resultat, i stedet for blot at gentage, hvad der blev gjort for andre moduler, eller tro p\u00e5 ordet, at det var n\u00f8dvendigt for at f\u00e5 funktion X til at fungere.<\/p>\n<p>Erfaringen fra dette projekt l\u00e6rte mig at n\u00e6gte at p\u00e5begynde udviklingsprocessen, indtil vi har en klar forst\u00e5else for, hvorfor vi bliver bedt om at udf\u00f8re visse handlinger. At afvise direkte. N\u00e5r man f\u00e5r en opgave, er den f\u00f8rste impuls \u2014 straks at tage fat p\u00e5 den, for ikke at spilde tid. Men politikken \"fryser projektet, indtil vi har alle detaljerne\" kan reducere det spildte tid med hele r\u00e6kkef\u00f8lge. <\/p>\n<p>Selv hvis der pr\u00f8ves at presse dig, til at begynde arbejdet, selvom du ikke forst\u00e5r begrundelsen \u2014 modst\u00e5. F\u00f8rst skal du finde ud af, hvad m\u00e5let med opgaven er, og beslutte, om det er den rigtige vej til at n\u00e5 m\u00e5let. Jeg m\u00e5tte l\u00e6re alt dette gennem bitter erfaring \u2014 jeg h\u00e5ber, at mit eksempel vil g\u00f8re livet lettere for dem, der l\u00e6ser dette.<\/p>\n<h4>Fjerde niveau af forst\u00e5else: ???<\/h4>\n<p>\nI programmering er der altid noget at l\u00e6re, og jeg mener, jeg kun har ber\u00f8rt de \u00f8verste lag af emnet forst\u00e5else. Hvilke andre niveauer af forst\u00e5else har du opdaget i \u00e5renes l\u00f8b med kode? Hvilke beslutninger har haft en positiv indvirkning p\u00e5 kvaliteten af koden og applikationen? Hvilke beslutninger viste sig at v\u00e6re fejlagtige og gav dig en v\u00e6rdifuld lektion? Del dine erfaringer i kommentarerne.<br \/>\n<br \/>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/digital-ecosystems\/blog\/459588\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421 \u043d\u0430\u0447\u0430\u043b\u0430 2018 \u0433\u043e\u0434\u0430 \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e \u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u044c \u043b\u0438\u0434\u0430\/\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0438\u043a\u0430\/\u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u2014 \u043d\u0430\u0437\u044b\u0432\u0430\u0439\u0442\u0435 \u044d\u0442\u043e \u043a\u0430\u043a \u0445\u043e\u0442\u0438\u0442\u0435, \u043d\u043e \u0441\u0443\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u044f \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043e\u0442\u0432\u0435\u0447\u0430\u044e \u0437\u0430 \u043e\u0434\u0438\u043d \u0438\u0437 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0438 \u0437\u0430 \u0432\u0441\u0435\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434 \u043d\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442. \u042d\u0442\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043c\u043d\u0435 \u043d\u043e\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u044f \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d \u0432 \u0431\u043e\u043b\u044c\u0448\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u0435\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27008,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-36115","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.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421 \u043d\u0430\u0447\u0430\u043b\u0430 2018 \u0433\u043e\u0434\u0430 \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e \u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u044c.\" \/>\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\/da\/blog\/news\/ne-soglashajtes-razrabatyvat-to-chego-ne-ponimaete\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\u041d\u0435 \u0441\u043e\u0433\u043b\u0430\u0448\u0430\u0439\u0442\u0435\u0441\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u043e, \u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421 \u043d\u0430\u0447\u0430\u043b\u0430 2018 \u0433\u043e\u0434\u0430 \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e \u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u044c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/blog\/news\/ne-soglashajtes-razrabatyvat-to-chego-ne-ponimaete\" \/>\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:09:42+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:09:42+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\udd47Accepter ikke at udvikle noget, du ikke forst\u00e5r | ProHoster","description":"Siden starten af 2018 har jeg haft stillingen.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/news\/ne-soglashajtes-razrabatyvat-to-chego-ne-ponimaete","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\u041d\u0435 \u0441\u043e\u0433\u043b\u0430\u0448\u0430\u0439\u0442\u0435\u0441\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u043e, \u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435 | ProHoster","og:description":"\u0421 \u043d\u0430\u0447\u0430\u043b\u0430 2018 \u0433\u043e\u0434\u0430 \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e \u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u044c.","og:url":"https:\/\/prohoster.info\/da\/blog\/news\/ne-soglashajtes-razrabatyvat-to-chego-ne-ponimaete","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:09:42+00:00","article:modified_time":"2019-10-31T19:09:42+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36115","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-22 02:04:38","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:50:24","updated":"2026-01-22 02:04:38","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/36115","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=36115"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/36115\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/27008"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=36115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=36115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=36115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}