{"id":97620,"date":"2020-10-19T20:42:40","date_gmt":"2020-10-19T18:42:40","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial"},"modified":"2020-10-19T20:42:40","modified_gmt":"2020-10-19T18:42:40","slug":"kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial","title":{"rendered":"Kako smo uvedli SonarQube in spoznali njegov velik potencial","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Kako smo uvedli SonarQube in spoznali njegov velik potencial\" src=\"\/wp-content\/uploads\/2020\/10\/81a4b69ed09d156ec71603b4bf32d587.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u017delimo deliti izku\u0161nje pri uvajanju platforme za neprekinjeno analizo in merjenje kakovosti kode SonarQube v obstoje\u010de procese razvoja sistema DPO (dodatka k sistemu depozitarno-kirin\u0161kega ra\u010dunovodstva \u201eAlameda\u201c) Nacionalnega poro\u0161tvenega depozitarja. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Nacionalni poro\u0161tveni depozitar (skupina podjetij \u201eMoskovska borza\u201c) je ena izmed klju\u010dnih podjetij finan\u010dne infrastrukture, ki hrani in vodi vrednostne papirje ruskih in tujih izdajateljev v skupni vrednosti ve\u010d kot 50 bilijonov rubljev. Rasto\u010di obseg transakcij, ki jih izvaja sistem, ter neprekinjeno pove\u010danje funkcionalnosti zahtevata ohranjanje visoke kakovosti izvorne kode sistemov. Eden izmed orodij za dosego tega cilja je stati\u010dni analizator SonarQube. V tem \u010dlanku bomo opisali uspe\u0161no izku\u0161njo brezhibnega uvajanja stati\u010dnega analizatorja SonarQube v obstoje\u010de procese razvoja na\u0161ega oddelka. <\/p>\n<p><\/p>\n<h3 id=\"kratko-ob-otdele\">Na kratko o oddelku<\/h3>\n<p><\/p>\n<p>V na\u0161i pristojnosti so naslednji moduli: izpla\u010dila strankam NRD, elektronsko poslovanje (EP), obdelava sporo\u010dil trgovskega depozitarja (registracija OTC poslov), kanali elektronskega sodelovanja med strankami in NRD ter \u0161e mnogo ve\u010d. Na splo\u0161no gre za obse\u017eno delo na tehni\u010dni strani operativne dejavnosti. Delujemo na podlagi zahtevkov. Zahteve operaterjev obdelujejo analitiki: zbirajo zahteve naro\u010dnika in nam predstavljajo svojo vizijo, kako naj bi to bilo vklju\u010deno v program. Nato sledijo standardni postopki: razvoj kode \u2013 testiranje \u2013 pilotno obratovanje \u2013 dostava kode kon\u010dnemu naro\u010dniku. <\/p>\n<p><\/p>\n<h3 id=\"pochemu-imenno-sonarqube\">Zakaj prav SonarQube?<\/h3>\n<p><\/p>\n<p>To je prvi izku\u0161nja na\u0161e oddelka pri uvedbi platforme za nadzor kakovosti kode \u2013 prej smo to po\u010deli ro\u010dno, izvajali smo le code review. Vendar pa nara\u0161\u010dajo\u010di obseg dela zahteva avtomatizacijo tega procesa. Poleg tega so v ekipi tudi neizku\u0161eni zaposleni, ki niso povsem seznanjeni z notranjimi predpisi razvoja in so nagnjeni k ve\u010d napakam. Za nadzor kakovosti kode je bilo odlo\u010deno, da uvedemo stati\u010dni analizator. Ker je bil SonarQube \u017ee uporabljen v nekaterih sistemih NPD, izbira ni bila te\u017eka. Prej so kolegi iz drugih oddelkov s pomo\u010djo SonarQube analizirali kodo mikroservisov v sistemu \u201eAlameda\u201c (lastni sistem depozitarsko-klirin\u0161kih evidenc NPD), v CFT (informacijski sistem za vodenje ra\u010dunovodstva, bilanc, pripravo obveznega in notranjega poro\u010danja) ter v nekaterih drugih sistemih. Za eksperimente smo se odlo\u010dili, da za\u010dnemo z brezpla\u010dno razli\u010dico SonarQube. Torej, preidimo k na\u0161emu primeru.<\/p>\n<p><\/p>\n<h2 id=\"process-vnedreniya\">Postopek uvajanja<\/h2>\n<p><\/p>\n<p><strong>Imamo<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li>avtomatska gradnja sistema v TeamCity;<\/li>\n<li>nastavljen je proces nalaganja kode preko MergeRequest iz feature-vejice v master-vejico v GitLab (postopek razvoja po GitHub Flow);<\/li>\n<li>SonarQube, nastavljen za analizo kode za sistem DPO po urniku.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Na\u0161 cilj<\/strong>: uvesti avtomatsko analizo kode v CI\/CD procese DPO.<\/p>\n<p><\/p>\n<p><strong>Treba je nastaviti<\/strong>: postopek avtomatskega preverjanja kode s stati\u010dnim analizatorjem pri vsakem MergeRequest v glavno vejo.<\/p>\n<p><\/p>\n<p>T.j. ciljna slika je naslednja: takoj ko razvijalec nalo\u017ei spremembe v feature-vejo, se izvede avtomatska preverba za nove napake v kodi. \u010ce napak ni, je dovoljeno sprejeti spremembe, sicer bo treba popraviti napake. \u017de v za\u010detni fazi smo uspeli odkriti dolo\u010deno \u0161tevilo napak v kodi. Sistem ima zelo fleksibilne nastavitve: lahko ga nastavite tako, da deluje pod specifi\u010dnimi nalogami razvijalcev, za vsak sistem in stil programiranja. <\/p>\n<p><\/p>\n<h3 id=\"nastroyka-qualitygate-v-sonarqube\">Nastavitev QualityGate v SonarQube<\/h3>\n<p><\/p>\n<p>Analiza QualityGate je stvar koju smo prona\u0161li u mra\u010dnim kutcima interneta. U po\u010detku smo koristili drugi pristup, slo\u017eeniji i na neki na\u010din ne potpuno ispravan. Prvo smo dvaput pokretali skeniranje preko SonarQube: skenirali smo feature granu i granu u koju smo planirali spojiti feature granu, a zatim smo uspore\u0111ivali broj gre\u0161aka. Ova metoda nije bila stabilna i nije uvijek davala ispravan rezultat. Onda smo saznali da umjesto dvostrukog pokretanja SonarQube-a mo\u017eemo postaviti limit na broj dopu\u0161tenih gre\u0161aka (QualityGate) i analizirati samo onu granu koju \u0161aljemo i uspore\u0111ujemo.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kako smo uvedli SonarQube in spoznali njegov velik potencial\" src=\"\/wp-content\/uploads\/2020\/10\/1d1def0ca40039b0c61315d3b3833a33.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>I dalje koristimo prili\u010dno primitivnu provjeru koda. Treba napomenuti da SonarQube nije kompatibilan s nekim programskim jezicima, uklju\u010duju\u0107i Delphi. Trenutno analiziramo samo PLSql kod za na\u0161 sustav.<\/p>\n<p><\/p>\n<p>Radi to ovako:<\/p>\n<p><\/p>\n<ul>\n<li>Za na\u0161 projekt analiziramo samo PL\/SQL kod.<\/li>\n<li>U SonarQube je pode\u0161en QualityGate tako da se broj gre\u0161aka ne pove\u0107ava s commitom. <\/li>\n<li>Broj gre\u0161aka prilikom prvog pokretanja iznosio je 229. Ako broj gre\u0161aka prilikom commita postane ve\u0107i, merge nije dozvoljen. <\/li>\n<li>Nakon ispravka gre\u0161aka, QualityGate \u0107e se mo\u0107i ponovno postaviti. <\/li>\n<li>Tako\u0111er, mogu\u0107e je dodavati nove stavke za analizu, poput pokrivenosti koda testovima itd.<\/li>\n<\/ul>\n<p><\/p>\n<p>Shema rada:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kako smo uvedli SonarQube in spoznali njegov velik potencial\" src=\"\/wp-content\/uploads\/2020\/10\/f904169fa87e9cfb75016c1fae4104f1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>U komentarima rada skripte vidi se da se broj gre\u0161aka u feature grani nije pove\u0107ao. Zna\u010di, sve je u redu.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kako smo uvedli SonarQube in spoznali njegov velik potencial\" src=\"\/wp-content\/uploads\/2020\/10\/004edf78aa787a2a8f6d376f64049a92.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Postaje dostupna dugme Merge.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kako smo uvedli SonarQube in spoznali njegov velik potencial\" src=\"\/wp-content\/uploads\/2020\/10\/7870448b9c13242f8e81f44bfd91d503.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>U komentarima rada skripte vidi se da je broj gre\u0161aka u feature grani pre\u0161ao dopu\u0161tenu granicu. Zna\u010di, sve je lo\u0161e.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kako smo uvedli SonarQube in spoznali njegov velik potencial\" src=\"\/wp-content\/uploads\/2020\/10\/b18eb07b5d46ee4cf0b71b28dfec92cc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dugme Merge je crveno. Trenutno ne postoji zabrana za unos promjena po gre\u0161kovnom kodu, ali se to \u010dini prema procjeni odgovornog programera. U budu\u0107nosti se mo\u017ee zabraniti unos takvih commit-a u glavnu granu.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kako smo uvedli SonarQube in spoznali njegov velik potencial\" src=\"\/wp-content\/uploads\/2020\/10\/353f896326bca76c25d72396386cbb13.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"samostoyatelnaya-rabota-nad-oshibkami\">Samostalni rad na gre\u0161kama<\/h3>\n<p><\/p>\n<p>Nakon toga potrebno je provjeriti sve identifikovane gre\u0161ke od strane sustava, jer SonarQube analizira prema svojim strogim standardima. Ono \u0161to on smatra gre\u0161kom, u na\u0161em kodu mo\u017eda zapravo nije gre\u0161ka. Stoga je potrebno provjeriti i ozna\u010diti, je li to zapravo gre\u0161ka ili je ne\u0161to \u0161to u na\u0161im uvjetima nije potrebno ispraviti. Tako smanjujemo broj gre\u0161aka. Tokom vremena sustav \u0107e nau\u010diti razumjeti te nijanse. <\/p>\n<p><\/p>\n<h2 id=\"k-chemu-my-prishli\">Kam smo pri\u0161li<\/h2>\n<p><\/p>\n<p>Na\u0161 cilj je bil razumeti, ali se v na\u0161em primeru spla\u010da prenesti preverjanje kode na avtomatizacijo. In rezultat je presegla pri\u010dakovanja. SonarQube nam omogo\u010da delo z jeziki, ki jih potrebujemo, natan\u010dno analizira in ima potencial, da se u\u010di iz namigov razvijalcev. Na splo\u0161no smo zadovoljni z na\u0161im prvim izku\u0161njam z uporabo SonarQube in nameravamo napredovati v tej smeri. Pri\u010dakujemo, da bomo v prihodnosti lahko prihranili ve\u010d \u010dasa in energije pri preverjanju kode ter to naredili bolj kakovostno, z odpravo \u010dlove\u0161kega faktorja. Morda bomo v procesu odkrili pomanjkljivosti platforme ali pa se bomo \u0161e enkrat prepri\u010dali, da je to odli\u010dna stvar z velikim potencialom. <\/p>\n<p><\/p>\n<p>V tem preglednem \u010dlanku smo opisali na\u0161e sre\u010danje s stati\u010dnim analizatorjem SonarQube. \u010ce imate kak\u0161na vpra\u0161anja, prosim, pi\u0161ite v komentarjih. \u010ce vas ta tema zanima, bomo v novi objavi podrobneje opisali, kako vse pravilno nastaviti in napisati kodo, da izvedemo tak\u0161no preverjanje. <\/p>\n<p><\/p>\n<p>Avtor besedila: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/atanya\/\" class=\"user_link\">atanya<\/a><\/noindex><\/p>\n<p>Izvor: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nsd\/blog\/523732\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u043f\u044b\u0442\u043e\u043c \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0434\u043b\u044f \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u0434\u0430 SonarQube \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0414\u041f\u041e (\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0434\u0435\u043f\u043e\u0437\u0438\u0442\u0430\u0440\u043d\u043e-\u043a\u043b\u0438\u0440\u0438\u043d\u0433\u043e\u0432\u043e\u0433\u043e \u0443\u0447\u0435\u0442\u0430 \u00ab\u0410\u043b\u0430\u043c\u0435\u0434\u0430\u00bb) \u041d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0447\u0435\u0442\u043d\u043e\u0433\u043e \u0434\u0435\u043f\u043e\u0437\u0438\u0442\u0430\u0440\u0438\u044f. \u041d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0441\u0447\u0435\u0442\u043d\u044b\u0439 \u0434\u0435\u043f\u043e\u0437\u0438\u0442\u0430\u0440\u0438\u0439 (\u0433\u0440\u0443\u043f\u043f\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u00ab\u041c\u043e\u0441\u043a\u043e\u0432\u0441\u043a\u0430\u044f \u0431\u0438\u0440\u0436\u0430\u00bb) \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0445\u0440\u0430\u043d\u0438\u0442 \u0438 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0446\u0435\u043d\u043d\u044b\u0435 \u0431\u0443\u043c\u0430\u0433\u0438 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0445 \u0438 \u0438\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0445 \u044d\u043c\u0438\u0442\u0435\u043d\u0442\u043e\u0432 \u043d\u0430 \u0441\u0443\u043c\u043c\u0443 \u0431\u043e\u043b\u0435\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":97621,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-97620","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.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f.\" \/>\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\/sl\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\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 \u043c\u044b \u0432\u043d\u0435\u0434\u0440\u0438\u043b\u0438 SonarQube \u0438 \u043e\u0441\u043e\u0437\u043d\u0430\u043b\u0438 \u0435\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial\" \/>\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=\"2020-10-19T18:42:40+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-19T18:42:40+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\udd47Kako smo implementirali SonarQube in spoznali njegov velik potencial | ProHoster","description":"\u017delimo deliti.","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","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 \u043c\u044b \u0432\u043d\u0435\u0434\u0440\u0438\u043b\u0438 SonarQube \u0438 \u043e\u0441\u043e\u0437\u043d\u0430\u043b\u0438 \u0435\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b | ProHoster","og:description":"\u041c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f.","og:url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial","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":"2020-10-19T18:42:40+00:00","article:modified_time":"2020-10-19T18:42:40+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"97620","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:16:26","updated":"2022-09-28 13:56:02","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/97620","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=97620"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/97620\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media\/97621"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=97620"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=97620"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=97620"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}