{"id":36795,"date":"2019-10-31T22:13:50","date_gmt":"2019-10-31T19:13:50","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kak-perestat-delat-odno-i-to-zhe\/"},"modified":"2019-10-31T22:13:50","modified_gmt":"2019-10-31T19:13:50","slug":"kak-perestat-delat-odno-i-to-zhe","status":"publish","type":"post","link":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/kak-perestat-delat-odno-i-to-zhe","title":{"rendered":"Hvordan man stopper med at g\u00f8re det samme om og om igen","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Elsker du at gentage rutineopgaver igen og igen? Det g\u00f8r jeg ikke. Men hver gang jeg arbejder med RusTelecoms lager i SQL-klienten, m\u00e5 jeg manuelt skrive alle joins mellem tabellerne. Og det p\u00e5 trods af, at i 90% af tilf\u00e6ldene, felterne og betingelserne for at sammenkoble tabellerne stemmer overens fra foresp\u00f8rgsel til foresp\u00f8rgsel! Man skulle tro, at enhver SQL-klient har autofyldningsfunktioner, men det virker ikke altid for lagre: der oprettes sj\u00e6ldent unique constraint og foreign key for at forbedre ydeevnen, og uden dette kan programmet ikke vide, hvordan entiteterne h\u00e6nger sammen, og hvad det kan tilbyde dig.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/rostelecom\/blog\/462021\/\"><img decoding=\"async\" alt=\"Hvordan man stopper med at g\u00f8re det samme om og om igen\" src=\"\/wp-content\/uploads\/2019\/08\/998faa579fa9772fa4509980be551be3.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Efter at have gennemg\u00e5et fornektelse, vrede, forhandling, depression og n\u00e6rmet mig accept, besluttede jeg - hvorfor ikke pr\u00f8ve at implementere autofyldning med blackjack og det hele? Jeg bruger klienten dbeaver, som er skrevet i Java; den har en community-version med open source. Jeg fik en simpel plan:<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ol>\n<li>Find klasserne i kildekoden, der ansvarlig for autofyldning.<\/li>\n<li>Omdirigere dem til at arbejde med eksterne metadata og hente oplysninger om joins derfra.<\/li>\n<li>??????<\/li>\n<li>PROFIT<\/li>\n<\/ol>\n<p>\nJeg kom hurtigt igennem f\u00f8rste punkt - jeg fandt en anmodning i bugtracker om at korrigere autofyldningen og i den relaterede <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dbeaver\/dbeaver\/commit\/4f7652c1d11f21d29cf734155b133e9a426c727f\">commit<\/a><\/noindex> opdagede jeg klassen SQLCompletionAnalyzer. Jeg s\u00e5 p\u00e5 koden - lige hvad jeg havde brug for. Det resterende var at omskrive den, s\u00e5 alt virkede. Jeg ventede p\u00e5 en fri aften og begyndte at planl\u00e6gge implementeringen. Jeg besluttede at f\u00f8re reglerne for tabellers relationer (metadata) i json. Jeg havde ikke praktisk erfaring med dette format, og den aktuelle opgave s\u00e5 ud til at v\u00e6re en mulighed for at rette denne mangel. <\/p>\n<p>Til arbejde med json besluttede jeg at bruge biblioteket <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/fangyidong\/json-simple\">json-simple<\/a><\/noindex> fra Google. Her begyndte overraskelserne. Som det viste sig, er dbeaver som en \u00e6gte applikation skrevet p\u00e5 Eclipse-platformen med brug af OSGi-rammen. For erfarne udviklere giver denne ting nemhed i administrationsafh\u00e6ngigheder; for mig virkede det mere som sort magi, som jeg \u00e5benlyst ikke var klar til: som s\u00e6dvanligt skrev jeg importen af de klasser, jeg havde brug for fra json-simple biblioteket i hovedet af den redigerede klasse, og angav det i pom.xml, hvorefter projektet kategorisk n\u00e6gtede at kompilere korrekt og crashede med fejl. <\/p>\n<p>At l\u00f8se byggefejlene endte med, at jeg skrev biblioteket ikke i pom.xml, men i manifestet manifest.mf, som kr\u00e6vet af OSGI, og angav det som import-package. Ikke den smukkeste l\u00f8sning, men den virker. Her kom der en ny overraskelse. Hvis du udvikler i IntelliJ IDEA, kan du ikke bare tage og k\u00f8re debug af dit projekt, der er baseret p\u00e5 Eclipse-platformen: en uerfaren udvikler skal lide lige s\u00e5 meget som en analytiker uden autoudfyldning af foresp\u00f8rgsler. Heldigvis kom udviklerne hos Beavers til hj\u00e6lp, idet de angav i wiki'en alle de danse, man skal udf\u00f8re. Det mest \u00e6rgerlige er, at selv efter alt dette arbejde ville projektet ikke starte i debug med det tilsluttede bibliotek json via import-package (selvom det stadig blev bygget successfully i det f\u00e6rdige produkt). <\/p>\n<p>P\u00e5 det tidspunkt havde jeg f\u00e5et fornemmelsen af, at det var besv\u00e6rligt at bruge json til min opgave \u2014 trods alt skulle metadata redigeres manuelt, og til det ville xml-formatet v\u00e6re bedre. Det andet argument for xml var, at alle de n\u00f8dvendige klasser findes i JDK, hvilket gjorde det muligt at stoppe kampen med et eksternt bibliotek. Jeg flyttede med stor forn\u00f8jelse alle metadata fra json til xml og begyndte at \u00e6ndre p\u00e5 logikken for autoudfyldning. <\/p>\n<p><b class=\"spoiler_title\">Eksempel p\u00e5 metadata<\/b><\/p>\n<pre><code class=\"xml\">dim_account\n        dim_partner\n        \n        \n    \n    \n        dim_account\n        dim_branch<\/code><\/pre>\n<p>Som resultat har jeg <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/v9854268996\/dbeaver\">foretaget \u00e6ndringer<\/a><\/noindex> i klasserne SQLUtils og SQLCompletionAnalyzer. Ideen er denne: hvis programmet ikke kunne finde passende autoudfyldningsforslag baseret p\u00e5 den grundl\u00e6ggende logik, tjekker det for mulige joins via en ekstern xml-fil. I selve filen opbevares tabelpar med angivelse af felterne, som disse tabeller skal forbindes via. Begr\u00e6nsninger p\u00e5 teknisk gyldighedsdata eff_dttm og exp_dttm samt flag for logisk sletning deleted_ind indstilles som standard.<\/p>\n<p>Da \u00e6ndringerne i koden var foretaget, opstod sp\u00f8rgsm\u00e5let \u2014 hvem skal udfylde metadatafilen? Der er mange enheder i databasen, og det ville v\u00e6re besv\u00e6rligt selv at angive alle relationer. Jeg besluttede derfor at overlade denne opgave til mine analytikerkolleger. Metadatafilen blev lagt i svn, hvorfra der tages checkout til den lokale mappe med programmet. Princippet er som f\u00f8lger: Er der en ny enhed i databasen? \u00c9n analytiker tilf\u00f8jer de mulige joins til filen, committer \u00e6ndringerne, og de \u00f8vrige laver checkout til sig selv og nyder det fungerende autofuldf\u00f8relse: community, videnakkumulering og alt det der. Jeg holdt et workshop for kollegerne om brugen af programmet og skrev en artikel i Confluence \u2014 nu har virksomheden endnu et praktisk v\u00e6rkt\u00f8j.<\/p>\n<p>Arbejdet med denne funktion gav mig forst\u00e5else af, at man ikke skal v\u00e6re bange for at pille ved open source-projekter \u2014 som regel har de en overskuelig arkitektur, og selv grundl\u00e6ggende sprogkundskaber er tilstr\u00e6kkelige til eksperimenter. Med en vis portion vilje kan man endda slippe for de irriterende rutineopgaver og spare tid til nye eksperimenter.<br \/>\n<br \/>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/rostelecom\/blog\/462021\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u044b \u043b\u044e\u0431\u0438\u0442\u0435 \u0438\u0437 \u0440\u0430\u0437\u0430 \u0432 \u0440\u0430\u0437 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0440\u0443\u0442\u0438\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438? \u0412\u043e\u0442 \u0438 \u044f \u043d\u0435\u0442. \u041d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0432 SQL-\u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c \u0420\u043e\u0441\u0442\u0435\u043b\u0435\u043a\u043e\u043c\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0434\u0436\u043e\u0439\u043d\u044b \u043c\u0435\u0436\u0434\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u0440\u0443\u0447\u043a\u0430\u043c\u0438. \u0418 \u044d\u0442\u043e \u043f\u0440\u0438\u0442\u043e\u043c, \u0447\u0442\u043e \u0432 90% \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043f\u043e\u043b\u044f \u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u043b\u0438 \u043e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043a \u0437\u0430\u043f\u0440\u043e\u0441\u0443! \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u043b\u044e\u0431\u043e\u0439 SQL-\u043a\u043b\u0438\u0435\u043d\u0442 \u0438\u043c\u0435\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0430\u0432\u0442\u043e\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u043d\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27562,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36795","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u044b \u043b\u044e\u0431\u0438\u0442\u0435 \u0438\u0437 \u0440\u0430\u0437\u0430 \u0432 \u0440\u0430\u0437 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0440\u0443\u0442\u0438\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438? \u0412\u043e\u0442 \u0438 \u044f \u043d\u0435\u0442. \u041d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0432 SQL-\u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c \u0420\u043e\u0441\u0442\u0435\u043b\u0435\u043a\u043e\u043c\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0434\u0436\u043e\u0439\u043d\u044b \u043c\u0435\u0436\u0434\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u0440\u0443\u0447\u043a\u0430\u043c\u0438.\" \/>\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\/administrirovanie\/kak-perestat-delat-odno-i-to-zhe\" \/>\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\u041a\u0430\u043a \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0442\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u044b \u043b\u044e\u0431\u0438\u0442\u0435 \u0438\u0437 \u0440\u0430\u0437\u0430 \u0432 \u0440\u0430\u0437 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0440\u0443\u0442\u0438\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438? \u0412\u043e\u0442 \u0438 \u044f \u043d\u0435\u0442. \u041d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0432 SQL-\u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c \u0420\u043e\u0441\u0442\u0435\u043b\u0435\u043a\u043e\u043c\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0434\u0436\u043e\u0439\u043d\u044b \u043c\u0435\u0436\u0434\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u0440\u0443\u0447\u043a\u0430\u043c\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/kak-perestat-delat-odno-i-to-zhe\" \/>\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:13:50+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:13:50+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\udd47Hvordan stopper man med at g\u00f8re det samme igen og igen | ProHoster","description":"Kan du lide at gentage rutineopgaver igen og igen? Det g\u00f8r jeg heller ikke. Men hver gang jeg arbejdede med Rostelecoms datasystem i SQL-klienten, m\u00e5tte jeg manuelt angive alle joins mellem tabellerne.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/kak-perestat-delat-odno-i-to-zhe","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\u041a\u0430\u043a \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0442\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 | ProHoster","og:description":"\u0412\u044b \u043b\u044e\u0431\u0438\u0442\u0435 \u0438\u0437 \u0440\u0430\u0437\u0430 \u0432 \u0440\u0430\u0437 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0440\u0443\u0442\u0438\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438? \u0412\u043e\u0442 \u0438 \u044f \u043d\u0435\u0442. \u041d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0432 SQL-\u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c \u0420\u043e\u0441\u0442\u0435\u043b\u0435\u043a\u043e\u043c\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0434\u0436\u043e\u0439\u043d\u044b \u043c\u0435\u0436\u0434\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u0440\u0443\u0447\u043a\u0430\u043c\u0438.","og:url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/kak-perestat-delat-odno-i-to-zhe","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:13:50+00:00","article:modified_time":"2019-10-31T19:13:50+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36795","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 04:53:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:38:24","updated":"2026-01-22 04:53:19","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\/36795","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=36795"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/36795\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/27562"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=36795"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=36795"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=36795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}