{"id":4352,"date":"2019-01-31T15:15:30","date_gmt":"2019-01-31T14:15:30","guid":{"rendered":"https:\/\/moe.it.slotshaven.dk\/wp\/?p=3930"},"modified":"2019-01-31T15:15:30","modified_gmt":"2019-01-31T14:15:30","slug":"git-og-github-2","status":"publish","type":"post","link":"https:\/\/digitalteknik.slotshaven.it\/wordpress\/git-og-github-2\/","title":{"rendered":"Git og GitHub"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Git<\/h2>\n\n\n\n<p>I disse moduler bliver du introduceret til et helt centralt samarbejdsredskab indenfor software udvikling:&nbsp;<em>git<\/em>. Git er et v\u00e6rkt\u00f8j til <em>source&nbsp;control.<\/em> N\u00e5r man programmerer og laver st\u00f8rre it-projekter i det hele taget, er det supervigtigt at have styr p\u00e5 hvilke \u00e6ndringer i koden der er lavet i hvilken r\u00e6kkef\u00f8lge, og af hvem. Det skal v\u00e6re muligt at g\u00e5 tilbage til tidligere versioner, hvis noget viser sig at v\u00e6re forkert, og man skal sikre sig at de rettelser man laver ikke bliver overskrevet af andre, der ogs\u00e5 arbejder p\u00e5 projektet og som arbejder p\u00e5 andre dele af koden. Git er alts\u00e5 et versionsstyrings redskab, og et s\u00e5dant ud over det s\u00e6dvanlige.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Grundprincipper og sprogbrug<\/h3>\n\n\n\n<p>Grundprincippet i git er, at man har et <strong>repository <\/strong>&#8211; i daglig tale et <strong>repo <\/strong>&#8211; som overv\u00e5ges af git. Alle \u00e6ndringer registreres i r\u00e6kkef\u00f8lge og efter hvem der laver dem. Man arbejder p\u00e5 filerne som normalt, og retter og gemmer undervejs, men n\u00e5r man p\u00e5 et tidspunkt er f\u00e6rdig, s\u00e5 fort\u00e6ller man git, at &#8220;her er noget du skal huske&#8221; &#8211; man <strong>committer<\/strong> \u00e6ndringerne til git (og man committer sig til \u00e6ndringerne). Nu laver git en note om hvem og hvorn\u00e5r, samt en liste over forskellene mellem den gamle og den nye version.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Github<\/h2>\n\n\n\n<p>Det smarte med git er i virkeligheden at bruge det sammen med GitHub . Mens git kan holde styr p\u00e5 mapper og filer lokalt p\u00e5 din computer, tager GitHub funktionaliteten ud p\u00e5 nettet. Du kan t\u00e6nke p\u00e5 GitHub som en slags dropbox for programm\u00f8rer. Men I kan ikke kun dele jeres filer i skyen. Med git og GitHub har I fuld kontrol over hvem der retter og \u00e6ndrer dem, hvorn\u00e5r de g\u00f8r det og ikke mindst hvorfor. Og I er sikre p\u00e5, at hvis der er konflikt mellem \u00e6ndringsforslag, s\u00e5 bliver det opdaget &#8211; I kommer ikke til at slette hinandens arbejde ved et uheld.<\/p>\n\n\n\n<p>N\u00e5r man bruger GitHub, har man sit repo p\u00e5 nettet, p\u00e5 en GitHub-konto. Det kaldes <strong>origin<\/strong> eller <strong>remote<\/strong>, mens den mappe lokalt p\u00e5 maskinen, som man arbejder i, kaldes <strong>local<\/strong>. Git holder styr p\u00e5, om filerne i den lokale mappe er identiske med <strong>origin<\/strong> eller om de er forud eller bagud for rettelser p\u00e5 GitHub. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Push og Pull<\/h3>\n\n\n\n<p>Det man arbejder p\u00e5 er i reglen filerne i den lokale mappe. Der hekser man rundt, retter og pr\u00f8ver sig frem, indtil man er tilfreds. Imens gemmer man hele tiden mellemresultaterne &#8211; men de skal jo ikke op til andre. F\u00f8rst n\u00e5r man har noget, der virker tilstr\u00e6kkelig godt, vil man have nye filer og \u00e6ndringer lagt op. S\u00e5 laver man et <strong>commit<\/strong>, og skriver samtidig en lille note om, hvad det er for en \u00e6ndring. GitHub noterer, at disse filer skal l\u00e6gges op p\u00e5 <strong>origin<\/strong>. Man siger, at \u00e6ndringerne er <strong>staged<\/strong> &#8211; alts\u00e5 sat i scene, lagt til rette for at blive uploaded.<\/p>\n\n\n\n<p>N\u00e5r du har rodet med dit repo lokalt og <strong>staged<\/strong> dine forbedringer, og derp\u00e5 vil l\u00e6gge det hele ud til andre p\u00e5 GitHub.com, kaldes det at <strong>pushe<\/strong>. Der er alts\u00e5 generelt tre trin i den samlede proces, og i konsollen ville det se s\u00e5ledes ud:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git add --all   \/\/ L\u00e6g eventuelle nye filer ind i projektet\ngit commit --all -m\"Jeg har gjort dit og dat\"   \/\/ stage\ngit push   \/\/ L\u00e6g filerne ud p\u00e5 GitHub<\/pre>\n\n\n\n<p>Eftersom GitHub ligger p\u00e5 nettet, er det ofte s\u00e5dan at nogle andre har modificeret koden, eller du har m\u00e5ske selv arbejdet med den p\u00e5 en anden computer. Derfor er det ofte en god id\u00e9 at starte med et <strong>pull<\/strong>, hver gang du starter, f\u00f8r du arbejder videre lokalt. P\u00e5 den m\u00e5de er du sikker p\u00e5 dine lokale filer svarer til filerne p\u00e5 GitHub. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Kom i gang<\/h3>\n\n\n\n<p>G\u00e5 ind p\u00e5 <a href=\"http:\/\/github.com\">github.com<\/a> og opret en konto, f\u00f8r du g\u00e5r videre. Du har nu en tom GitHub konto. N\u00e6ste skridt er at f\u00e5 etableret dit f\u00f8rste repo, enten ved at linke kontoen op til de filer p\u00e5 lokalt p\u00e5 din maskine, som du vil have som dit lokale git-repository eller ved at skabe et repo p\u00e5 GitHub, som du derefter <strong>cloner<\/strong> ned til din egen maskine.<\/p>\n\n\n\n<p>Der er mange forskellige m\u00e5der at komme til at arbejde med git og GitHub p\u00e5. Mange arbejder i en &#8220;shell&#8221;, alts\u00e5 et konsolvindue med tekstkoder direkte til maskinen, men de fleste foretr\u00e6kker at bruge et program med et interface &#8211; jeg g\u00f8r. Et s\u00e5dant interface er GitHub Desktop, som vi kigger p\u00e5 her. Visual Studio Code kan ogs\u00e5 s\u00e6ttes op til at integrere med GitHub s\u00e5 \u00e6ndringerne trackes og synkroniseres med filerne p\u00e5 nettet, men VSCode bruger i virkeligheden GitHub Desktop &#8220;bagved&#8221;. Unity kan s\u00e5dan set ogs\u00e5 integrere med GitHub, men deres system er ikke blevet opdateret i flere \u00e5r. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fremgangsm\u00e5de: GitHub Desktop<\/h2>\n\n\n\n<p>G\u00e5 ind og hent programmet <a href=\"https:\/\/desktop.github.com\/\">GitHub<\/a> <a href=\"https:\/\/desktop.github.com\/\">Desktop her<\/a>. Herefter er der tre forskellige situationer, der kan v\u00e6re aktuelle: <\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Du kan \u00f8nske at uploade et projekt, du allerede er i gang med, til GitHub. Det kan v\u00e6re et git-repo i forvejen, lokalt p\u00e5 din maskine, eller det kan v\u00e6re en mappe som du nu \u00f8nsker at bruge git p\u00e5 og eventuelt dele med andre<\/li><li>Du kan \u00f8nske at hente et projekt fra GitHub, som allerede er i gang, og som du gerne vil bidrage til<\/li><li>Du kan \u00f8nske at starte et nyt projekt fra bunden og lade git holde styr p\u00e5 det helt fra start<\/li><\/ol>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/digitalteknik.slotshaven.it\/wordpress\/wp-content\/uploads\/2021\/02\/image.png\" alt=\"\" class=\"wp-image-4365\" width=\"328\" height=\"369\" srcset=\"https:\/\/digitalteknik.slotshaven.it\/wordpress\/wp-content\/uploads\/2021\/02\/image.png 509w, https:\/\/digitalteknik.slotshaven.it\/wordpress\/wp-content\/uploads\/2021\/02\/image-267x300.png 267w\" sizes=\"auto, (max-width: 328px) 100vw, 328px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">1. Create\/add <\/h2>\n\n\n\n<p>I GitHub Desktop skal du f\u00f8rst s\u00f8rge for at v\u00e6re logget p\u00e5 din GitHub konto, derefter kan du tilf\u00f8je dit lokale repository. V\u00e6lg add\/create new repository for at lave et nyt git-repo ud af en projektmappe (add\/add existing repository, hvis git allerede er i brug, men det finder Desktop selv ud af). <\/p>\n\n\n\n<p>Du kan nu &#8220;<strong>committe<\/strong>&#8221; til dit GitHub repository, dele det med andre og i det hele taget arbejde videre som vanligt. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Git ignore (.gitignore)?<\/h3>\n\n\n\n<p>Du kan lade git v\u00e6lge at ignorere visse filer, som alts\u00e5 ikke bliver lagt ud p\u00e5 nettet, men bare bliver lokalt p\u00e5 computeren. <\/p>\n\n\n\n<p>Hvis du har arbejdet med node.js, python eller andre st\u00f8rre programmeringssprog, ved du at de ofte har pakker og biblioteker som skal installeres, f\u00f8r et program kan fungere. I node.js projekter ligger der for eksempel altid en fil som hedder package.json, som fort\u00e6ller n\u00f8jagtig hvilke biblioteker projektet er afh\u00e6ngig af (dependencies). <\/p>\n\n\n\n<p>I stedet for at uploade alle disse filer til GitHub, er det meget smartere at lade andre der har downloadet din kode kigge i package.json f\u00f8r de g\u00e5r i gang &#8211; og s\u00e5 hente filerne n\u00e5r der er brug for dem. Derfor er det god stil at fort\u00e6lle git, at dit repo er eksempelvis et &#8220;node&#8221; projekt, et &#8220;unity&#8221; projekt eller et &#8220;python&#8221; projekt, s\u00e5 springer det automatisk over alle de filer, som andre kan hente selv.  <\/p>\n\n\n\n<p>P\u00e5 GitHub selv er der faktisk en side dedikeret netop til .gitignore: <a href=\"https:\/\/github.com\/github\/gitignore\">https:\/\/github.com\/github\/gitignore<\/a>, som har templates til .gitignore-filer for stort set alle former for IT-udvikling. Processing, Node og Unity er med &#8211; og listen er meget lang. Forneden p\u00e5 denne GitHub-side er der mere information.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Hvad med licens?<\/h3>\n\n\n\n<p>Git og GitHub er faktisk ikke kun til open-source projekter. Man kan oprette private repos og bruge dem til propriet\u00e6r kode, og der er ogs\u00e5 betalingsmodeller tilknyttet GitHub. <\/p>\n\n\n\n<p>N\u00e5r du uploader et nyt repo til GitHub er det derfor helt centralt at du beslutter dig for hvilken licens du vil bruge. Licenser er der mange af, og det kan v\u00e6re sv\u00e6rt at vide hvad man skal v\u00e6lge. Jeg bruger selv <a href=\"https:\/\/en.wikipedia.org\/wiki\/MIT_License\">MIT License<\/a>. Det er en meget liberal software licens, som faktisk tillader andre at bruge min kode kommercielt &#8211; s\u00e5 l\u00e6nge de bare s\u00f8rger for at putte samme licens p\u00e5 deres software. <\/p>\n\n\n\n<p>Hvorvidt <a href=\"https:\/\/www.ted.com\/talks\/jaron_lanier_how_we_need_to_remake_the_internet?language=en\">denne liberale software opfattelse<\/a> bliver ved med at holde i det 21. \u00e5rhundrede, kan man dog have sin tvivl om. Men indtil videre&#8230;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Clone\/Fork<\/h2>\n\n\n\n<p>N\u00e5r du henter et eller andet, kaldes det at &#8220;<strong>clone<\/strong>&#8221; et repository. At clone er den mindst invasive m\u00e5de at hente noget p\u00e5 &#8211; det betyder bare: giv mig en lokal kopi, jeg kan g\u00f8re hvad jeg vil med. <a href=\"https:\/\/github.com\/CodingTrain\/Rainbow-Poem\">Pr\u00f8v at clone det her repo fra GitHub<\/a>. Det stammer fra <a href=\"https:\/\/www.youtube.com\/watch?v=BCQHnlnPusY&amp;list=PLRqwX-V7Uu6ZF9C0YMKuns9sLDzK6zoiV\">Daniel Shiffmans fremragende pr\u00e6sentation af GitHub,<\/a> som du forresten ogs\u00e5 kan v\u00e6lge at se i stedet for at l\u00e6se alt dette. <\/p>\n\n\n\n<p>Github er fantastisk fordi du lynhurtigt kan snuppe andres kode, og se hvordan alt muligt fungerer. Du kan for eksempel hente den fuldkommen <a href=\"https:\/\/github.com\/torvalds\/linux\">\u00e5bne kode til Linux<\/a>. Eller til et <a href=\"https:\/\/github.com\/trending\">hav af andre projekter<\/a>. Skulle du have en dag i overskud, kan man sagtens f\u00e5 tid til at g\u00e5 med bare at sidde og hente GitHub projekter og s\u00e6tte dem op p\u00e5 sin egen computer. <\/p>\n\n\n\n<p>Og t\u00e6nke over hvordan du kunne modificere koden. Afh\u00e6ngig af licensen &#8211; som meget ofte er forskellige udgaver af liberale opensource paradigmer &#8211; kan du for det meste downloade alt hvad du finder og bruge det frit i dine egne projekter. I det \u00f8jeblik du vil tjene penge p\u00e5 det, skal du dog tjekke licensen en ekstra gang. <\/p>\n\n\n\n<p>N\u00e5r du har clonet et repo, kommer det over i din lokale git-mappe. Se om du kan f\u00e5 hentet, \u00e6ndret og committet og pushet et eller andet til din egen GitHub, f\u00f8r du g\u00e5r videre. Men duhar ikke n\u00f8dvendigvis skriverettigheder p\u00e5 det repo, du har clonet fra. Hvis du har &#8211; eller f\u00e5r &#8211; rettigheder til det, fx. fordi det er en af dine gruppekammeraters repo og jeres f\u00e6lles projekt, s\u00e5 kan du pulle, committe og pushe som f\u00f8r. Hvis ikke du har rettigheder, kan du i stedet oprette en <strong>fork<\/strong> af repo&#8217;et &#8211; alts\u00e5 en kopi, som ligger p\u00e5 din GitHub p\u00e5 nettet, og som du kan modificere som det passer dig. Det er det, I skal g\u00f8re, n\u00e5r vi linker til skolens eller fagets GitHub til materialer, I skal hente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pull request <\/h3>\n\n\n\n<p>Lad os sige du havde rodet med noget kode fra et GitHub repo du har klonet og forket. P\u00e5 et tidspunkt finder du s\u00e5 en fejl. Du retter den! Hvordan kan du nu hj\u00e6lpe koderen til at f\u00e5 fejlen rettet i det oprindelige repo? Du opretter en <strong>pull-request<\/strong>, som er en anmodning til ejeren af koden og det oprindelige repo om, at han\/hun skal pull&#8217;e dine \u00e6ndringer. Ejeren f\u00e5r s\u00e5 en notifikation og med mindre han\/hun tror du er terrorrist, f\u00e5r du lov til at f\u00e5 en (begr\u00e6nset) adgang. Du kan nu rette fejlen i koden, og fors\u00f8ge at committe koden tilbage til den originale version. Nu vil ejeren s\u00e5 have mulighed for at kigge din rettelse igennem (<strong>review)<\/strong>, og eventuelt &#8220;<strong>merge<\/strong>&#8221; den ind i sin egen kode. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Samarbejde<\/h3>\n\n\n\n<p>GitHub er ogs\u00e5 et samarbejdsv\u00e6rkt\u00f8j. Hvis I er flere i en gruppe, kan I arbejde i et f\u00e6lles repo p\u00e5 en af jeres GitHub-kontoer, og ejeren af den konto kan invitere jer andre gitHub-brugere som &#8220;<strong>collaborators<\/strong>&#8221; s\u00e5 I alle kan pushe \u00e6ndringer op. Der er ogs\u00e5 v\u00e6rkt\u00f8jer til projektstyring, til at tracke issues og meget andet.<\/p>\n\n\n\n<p>Bem\u00e6rk, at man IKKE kan clone et repo fra GitHub ned i en lokal mappe, hvor der allerede ligger filer. Man kan alts\u00e5 ikke &#8220;supplere&#8221; sin egen projektmappe med filer fra andres GitHub repo ved at clone. I stedet kan man eventuelt downloade repo&#8217;et som en zip-fil og pille de filer ud, man skal bruge.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Branches<\/h3>\n\n\n\n<p>Det er ikke uden risiko, hvis alle bare kan pushe \u00e6ndringer op til det f\u00e6lles projekt uden videre. Man risikerer, at \u00e6ndringer et sted breaker noget et andet sted, s\u00e5dan at det, der k\u00f8rte i g\u00e5r, pludselig ikke l\u00e6ngere duer. Derfor arbejder man gerne med <strong>branches<\/strong>, dvs. &#8220;grene&#8221; eller &#8220;varianter&#8221;af koden, hvor man opretter en branch til at arbejde med specifikke aspekter &#8211; UI, netv\u00e6rk, modeller, platforme &#8211; men s\u00f8rger for at have en &#8220;stabil&#8221; version: <strong>master branch<\/strong>, som fungerer, og som man f\u00f8rst retter i, n\u00e5r man er sikker p\u00e5 at rettelserne duer. Det vil sige at man pusher til en branch p\u00e5 GitHub, og n\u00e5r rettelserne er set igennem (<strong>reviewed<\/strong>) kan man v\u00e6lge at oprette en <strong>pull request<\/strong> for at  <strong>merge<\/strong> denne branch ind i <strong>master<\/strong>. P\u00e5 den m\u00e5de kan mange personer arbejde p\u00e5 mange forskellige dele af projektet uden at g\u00e5 i vejen for hinanden.<\/p>\n\n\n\n<p>Man v\u00e6lger hvilken branch man vil pushe til (eller pulle fra) i GitHub Desktop. Teknisk set er det s\u00e5 denne branch, ikke repo&#8217;et som s\u00e5dan, der er &#8220;<strong>origin<\/strong>&#8220;. Og det kan v\u00e6re en god ide at s\u00e6tte GitHub repo&#8217;et op s\u00e5dan at det simpelthen ikke er muligt at pushe direkte til master, s\u00e5ledes at rettelser i master kun kan forekomme efter review og merge.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Et helt nyt projekt<\/h2>\n\n\n\n<p>Hvis man skal til at starte et helt nyt projekt, bliver tingene nemmere hvis man starter med at s\u00e6tte GitHub-repo&#8217;et op. Hvert repo har sin egen mappe p\u00e5 jeres GitHub konto, s\u00e5 hvis man skal starte et projekt fra grunden er en m\u00e5de at oprette et nyt n\u00e6sten tomt repo p\u00e5 GitHub og s\u00e5 clone det. Man kan ogs\u00e5 g\u00f8re det lokalt fra GitHub Desktop ved at oprette et nyt repo hvor man s\u00e5 angiver b\u00e5de local og remote placering\/sti.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Lidt mere lingo<\/h2>\n\n\n\n<p>Et <strong>repo<\/strong> er en mappe hvor git holder \u00f8je med \u00e6ndringer<\/p>\n\n\n\n<p>At <strong>committe<\/strong> er at fort\u00e6lle git, at nu er man klar med sine rettelser, og git skal f\u00f8je dem til projektet<\/p>\n\n\n\n<p>At <strong>forke <\/strong>er at kopiere en andens projekt ind i din egen konto p\u00e5 GitHub<\/p>\n\n\n\n<p>At <strong>clone <\/strong>er at kopiere et projekt fra GitHub ned p\u00e5 sin egen computer<\/p>\n\n\n\n<p>At <strong>fetche <\/strong>er at hente forandringer \u2013 men UDEN at \u00e6ndre dine filer lokalt<\/p>\n\n\n\n<p>En <strong>branch <\/strong>er en udgave af et repo der er blevet clonet lokalt<\/p>\n\n\n\n<p>En <strong>remote branch<\/strong> er dette repo n\u00e5r den ligger p\u00e5 GitHub (kendes lokalt som origin)<\/p>\n\n\n\n<p>At <strong>merge<\/strong> er at flette en branch ind i en anden<\/p>\n\n\n\n<p>En <strong>konflikt <\/strong>er n\u00e5r man vil pulle noget ned, som ikke svarer til det man har lokalt, og hvor der er modsat rettede \u00e6ndringer i de samme kodelinjer<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Git I disse moduler bliver du introduceret til et helt centralt samarbejdsredskab indenfor software udvikling:&nbsp;git. Git er et v\u00e6rkt\u00f8j til source&nbsp;control. N\u00e5r man programmerer og laver st\u00f8rre it-projekter i det hele taget, er det supervigtigt at have styr p\u00e5 hvilke \u00e6ndringer i koden der er lavet i hvilken r\u00e6kkef\u00f8lge, og af hvem. Det skal v\u00e6re &#8230; <a title=\"Git og GitHub\" class=\"read-more\" href=\"https:\/\/digitalteknik.slotshaven.it\/wordpress\/git-og-github-2\/\" aria-label=\"Read more about Git og GitHub\">L\u00e6s mere <\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22],"tags":[],"class_list":["post-4352","post","type-post","status-publish","format-standard","hentry","category-tools"],"_links":{"self":[{"href":"https:\/\/digitalteknik.slotshaven.it\/wordpress\/wp-json\/wp\/v2\/posts\/4352","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/digitalteknik.slotshaven.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/digitalteknik.slotshaven.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/digitalteknik.slotshaven.it\/wordpress\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/digitalteknik.slotshaven.it\/wordpress\/wp-json\/wp\/v2\/comments?post=4352"}],"version-history":[{"count":0,"href":"https:\/\/digitalteknik.slotshaven.it\/wordpress\/wp-json\/wp\/v2\/posts\/4352\/revisions"}],"wp:attachment":[{"href":"https:\/\/digitalteknik.slotshaven.it\/wordpress\/wp-json\/wp\/v2\/media?parent=4352"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/digitalteknik.slotshaven.it\/wordpress\/wp-json\/wp\/v2\/categories?post=4352"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/digitalteknik.slotshaven.it\/wordpress\/wp-json\/wp\/v2\/tags?post=4352"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}