{"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\/de\/blog\/administrirovanie\/kak-perestat-delat-odno-i-to-zhe","title":{"rendered":"Wie man aufh\u00f6rt, immer dasselbe zu tun.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>M\u00f6gen Sie es, routinem\u00e4\u00dfige Aufgaben immer wieder zu wiederholen? Ich nicht. Aber jedes Mal, wenn ich im SQL-Client mit dem Speicher von Rostelecom arbeite, musste ich alle Joins zwischen den Tabellen manuell eingeben. Und das, obwohl in 90 % der F\u00e4lle die Felder und Bedingungen f\u00fcr die Joins von Anfrage zu Anfrage \u00fcbereinstimmten! Es scheint, dass jeder SQL-Client Autovervollst\u00e4ndigungsfunktionen hat, aber f\u00fcr Speicher funktioniert das nicht immer: In ihnen werden selten unique constraints und foreign keys zur Leistungsteigerung eingerichtet, und ohne diese kann das Programm nicht wissen, wie die Entit\u00e4ten miteinander verbunden sind und was es dir anbieten kann.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/rostelecom\/blog\/462021\/\"><img decoding=\"async\" alt=\"Wie man aufh\u00f6rt, immer dasselbe zu tun.\" src=\"\/wp-content\/uploads\/2019\/08\/998faa579fa9772fa4509980be551be3.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Nach dem Durchlaufen von Negation, Wut, Verhandlung, Depression und dem Hinzukommen zur Akzeptanz dachte ich: Warum nicht selbst versuchen, die Autovervollst\u00e4ndigung mit Blackjack und allem Drum und Dran zu implementieren? Ich benutze den Client dbeaver, der in Java geschrieben ist und eine Community-Version mit Open-Source hat. Ein einfacher Plan reifte:<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ol>\n<li>Die Klassen im Quellcode zu finden, die f\u00fcr die Autovervollst\u00e4ndigung verantwortlich sind.<\/li>\n<li>Sie auf die Arbeit mit externen Metadaten umzustellen und Informationen \u00fcber Joins von dort abzurufen.<\/li>\n<li>??????<\/li>\n<li>PROFIT<\/li>\n<\/ol>\n<p>\nMit dem ersten Punkt habe ich mich recht schnell angefreundet \u2013 ich fand im Bugtracker eine Anfrage zur Korrektur der Autovervollst\u00e4ndigung und in dem zugeh\u00f6rigen <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dbeaver\/dbeaver\/commit\/4f7652c1d11f21d29cf734155b133e9a426c727f\">Commit<\/a><\/noindex> entdeckte ich die Klasse SQLCompletionAnalyzer. Ich schaute mir den Code an \u2013 genau das, was ich brauchte. Es blieb nur noch, ihn so umzuschreiben, dass alles funktionierte. Ich wartete auf einen freien Abend und begann, die Implementierung zu planen. Die Regeln f\u00fcr die Beziehungen der Tabellen (Metadaten) wollte ich im JSON-Format festhalten. Ich hatte keine praktische Erfahrung mit diesem Format und die aktuelle Aufgabe schien mir eine M\u00f6glichkeit zu sein, diese L\u00fccke zu schlie\u00dfen. <\/p>\n<p>F\u00fcr die Arbeit mit JSON wollte ich die Bibliothek <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/fangyidong\/json-simple\">json-simple<\/a><\/noindex> von Google verwenden. Hier begannen die \u00dcberraschungen. Wie sich herausstellte, ist dbeaver, als echtes Programm, auf der Eclipse-Plattform unter Verwendung des OSGi-Frameworks geschrieben. F\u00fcr erfahrene Entwickler bietet dieses Ding einen bequemen Umgang mit Abh\u00e4ngigkeiten, w\u00e4hrend es f\u00fcr mich eher wie dunkle Magie wirkte, auf die ich offensichtlich nicht vorbereitet war: Wie \u00fcblich importierte ich die ben\u00f6tigten Klassen aus der json-simple-Bibliothek im Header der bearbeiteten Klasse, gab sie in der pom.xml an, woraufhin das Projekt kategorisch aufh\u00f6rte, sich normal zu bauen und mit Fehlern abst\u00fcrzte. <\/p>\n<p>Die Fehlerbehebung des Build-Problems f\u00fchrte dazu, dass ich die Bibliothek nicht in pom.xml, sondern im Manifest manifest.mf angegeben habe, wie es OSGI verlangt und sie als import-package deklariert habe. Es ist nicht die sch\u00f6nste L\u00f6sung, aber sie funktioniert. Dann kam die n\u00e4chste \u00dcberraschung. Wenn du Entwicklung in Intellij IDEA machst, kannst du dein Eclipse-basiertes Projekt nicht einfach debuggen: Ein unerfahrener Entwickler muss ebenso leiden wie ein Analyst ohne Autovervollst\u00e4ndigung von Anfragen. Gl\u00fccklicherweise haben die Entwickler von Beaver in der Wiki alle Schritte erw\u00e4hnt, die n\u00f6tig sind. Das Frustrierendste ist, dass das Projekt nach all diesen Schritten immer noch nicht im Debugging mit der \u00fcber import-package eingebundenen JSON-Bibliothek starten wollte (obwohl es im Endprodukt weiterhin erfolgreich kompiliert wurde). <\/p>\n<p>Zu diesem Zeitpunkt hatte ich bereits das Unbehagen gesp\u00fcrt, JSON f\u00fcr meine Aufgabe zu verwenden \u2013 schlie\u00dflich sollten die Metadaten manuell bearbeitet werden, und daf\u00fcr eignet sich das XML-Format besser. Ein weiteres Argument f\u00fcr XML war, dass alle notwendigen Klassen in der JDK vorhanden waren, was mir die Auseinandersetzung mit einer externen Bibliothek ersparte. Mit gro\u00dfer Freude habe ich alle Metadaten von JSON nach XML \u00fcbertragen und mit der Anpassung der Autovervollst\u00e4ndigungslogik begonnen. <\/p>\n<p><b class=\"spoiler_title\">Beispiel f\u00fcr Metadaten<\/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>Als Ergebnis habe ich <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/v9854268996\/dbeaver\">\u00c4nderungen vorgenommen<\/a><\/noindex> in die Klassen SQLUtils und SQLCompletionAnalyzer. Die Idee ist folgende: Wenn die Software es nicht schafft, passende Vorschl\u00e4ge zur Autovervollst\u00e4ndigung nach der Grundlogik zu finden, \u00fcberpr\u00fcft sie das Vorhandensein m\u00f6glicher Joins aus einer externen XML-Datei. In der Datei werden Tabellenpaare mit den Feldern gespeichert, nach denen diese Tabellen verkn\u00fcpft werden m\u00fcssen. Die Einschr\u00e4nkungen f\u00fcr technische Datens\u00e4tze der G\u00fcltigkeitsdaten eff_dttm und exp_dttm sowie das Flag f\u00fcr logisches L\u00f6schen deleted_ind werden standardm\u00e4\u00dfig festgelegt.<\/p>\n<p>Nachdem \u00c4nderungen am Code vorgenommen wurden, stellte sich die Frage \u2013 wer wird die Metadatendatei ausf\u00fcllen? Im Speicher gibt es viele Entit\u00e4ten, es ist umst\u00e4ndlich, alle Verbindungen selbst zu erstellen. Schlie\u00dflich habe ich beschlossen, diese Aufgabe meinen Kollegen aus der Analyseabteilung zu \u00fcbertragen. Ich habe die Metadatendatei in SVN abgelegt, von wo aus ein Checkout in das lokale Verzeichnis mit dem Programm erfolgt. Das Prinzip ist folgendes: Gibt es eine neue Entit\u00e4t im Speicher? Ein Analyst f\u00fcgt die m\u00f6glichen Joins in die Datei ein, committet die \u00c4nderungen, die anderen holen sich den Checkout und genie\u00dfen die funktionierende automatische Vervollst\u00e4ndigung: Gemeinschaft, Wissen ansammeln und so weiter. Ich habe f\u00fcr meine Kollegen einen Workshop zur Verwendung des Programms durchgef\u00fchrt, einen Artikel in Confluence geschrieben \u2013 jetzt hat das Unternehmen ein weiteres n\u00fctzliches Tool.<\/p>\n<p>Die Arbeit an diesem Feature hat mir das Verst\u00e4ndnis gegeben, dass man keine Angst haben sollte, an Open-Source-Projekten zu basteln \u2013 in der Regel haben sie eine verst\u00e4ndliche Architektur, und selbst grundlegende Sprachkenntnisse reichen f\u00fcr Experimente aus. Mit einem gewissen Ma\u00df an Beharrlichkeit kann man sogar die l\u00e4stigen Routineaufgaben loswerden und sich Zeit f\u00fcr neue Experimente sparen.<br \/>\n<br \/>Quelle: <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.1.1 - 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\/de\/blog\/administrirovanie\/kak-perestat-delat-odno-i-to-zhe\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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\/de\/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":"\ud83c\udfc6Wie man aufh\u00f6rt, immer das Gleiche zu tun | ProHoster","description":"Lieben Sie es, immer wieder die gleichen Routineoperationen auszuf\u00fchren? Ich auch nicht. Doch jedes Mal, wenn ich im SQL-Client mit dem Speicher von Rostelecom arbeitete, musste ich alle Joins zwischen den Tabellen manuell schreiben.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kak-perestat-delat-odno-i-to-zhe","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/36795","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=36795"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/36795\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/27562"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=36795"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=36795"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=36795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}