{"id":50922,"date":"2020-03-06T07:00:40","date_gmt":"2020-03-06T06:00:40","guid":{"rendered":"http:\/\/smeupnew.it\/magazine\/blog\/sviluppo-software-branch\/"},"modified":"2021-04-02T15:06:03","modified_gmt":"2021-04-02T13:06:03","slug":"sviluppo-software-branch","status":"publish","type":"post","link":"https:\/\/www.smeup.com\/magazine\/blog\/sviluppo-software-branch\/","title":{"rendered":"Sviluppo software e utilizzo dei branch: ecco come li usiamo in smeup"},"content":{"rendered":"<h2>Introduzione<\/h2>\n<p>Nell&#8217;ambito dello <strong>sviluppo software<\/strong>, per gestire in maniera efficace i <strong>sorgenti<\/strong> di smeup e tutte le modifiche ad essi apportate, \u00e8 stato implementato un meccanismo di <strong>controllo di versione,<\/strong> prendendo spunto dai sistemi utilizzati oggigiorno. Questa applicazione permette il controllo delle versioni dei sorgenti su cui si lavora. Per controllo di versione si intende un sistema che tiene traccia di tutte le modifiche apportate nel tempo a un file e supporta i programmatori nella gestione degli sviluppi e dei rilasci. Il Concetto fondamentale \u00e8 quello del <strong>\u00a0branch<\/strong>. Il branch consiste in una duplicazione del codice in un ambiente separato, sul quale il programmatore pu\u00f2 agire senza danneggiare il software originale.<br \/>\nA fine sviluppo, il branch verr\u00e0 riportato all\u2019interno del software originale attraverso controlli da svolgersi attraverso la app. Per un branch esistono due figure: il programmatore che lo ha creato per modificare il sorgente e un suo collega che riporter\u00e0 le modifiche svolte nel software originale. Ogni branch pu\u00f2 infatti essere fatto refluire all\u2019interno del sistema soltanto grazie all\u2019approvazione di uno degli sviluppatori necessariamente che deve essere diverso da chi ha sviluppato il branch in questione. \u00a0Questa duplicazione di figura si rende necessaria per una corretta fase di controllo.<\/p>\n<h2>Gli ambienti<\/h2>\n<p>Nell\u2019ambito dello sviluppo software, si hanno pi\u00f9<strong> ambienti<\/strong>. Per ambienti si intende un insieme di <strong>librerie<\/strong> organizzate nelle quali si possono avere i sorgenti, i programmi e i dati. \u00c8 uso suddividere gli ambienti in ambienti di sviluppo, di test e di standard. Una modifica pu\u00f2 essere fatta sia a livello di standard, che di sviluppo, che di test. Il nostro sistema ci permette di utilizzare di volta in volta uno di questi ambienti per verificarne la funzionalit\u00e0. Inoltre, al completamento di determinati test, permette di <strong>promuovere le modifiche<\/strong> da un ambiente all\u2019altro fino a portarlo all\u2019ambiente standard.<\/p>\n<h2>Come operiamo<\/h2>\n<p>Il software ci permette di operare secondo diverse fasi:<\/p>\n<ol>\n<li><strong>Gestione dei branch e verifica dello stato<\/strong> : \u00e8 possibile visualizzare l\u2019elenco di tutti i branch, e consultare <strong>dettagli<\/strong> come ad esempio in quale ambiente la modifica \u00e8 stata apportata, chi l\u2019ha eseguita, in che data, il motivo per cui la modifica \u00e8 stata realizzata, quali sono tutti i sorgenti coinvolti. Nel caso in cui un sorgente fosse stato utilizzato in pi\u00f9 branch, possiamo avere l\u2019evidenza di quali branch sono interessati. Questo \u00e8 di fondamentale importanza per chi eseguir\u00e0 i check-out perch\u00e9 l\u2019utilizzo contemporaneo di un sorgente in pi\u00f9 branch pu\u00f2 creare sovrapposizioni. Lo<strong> stato<\/strong> di un branch pu\u00f2 essere attivo, in stato di ckeck-out request oppure in stato di request change, che si ha quando ci sono parti da modificare o correggere, oppure infine in stato di rilascio all\u2019interno dell\u2019ambiente di destinazione.<br \/>\n<strong>Controlli da parte della nostra applicazione<\/strong>: mentre il branch \u00e8 attivo, lo sviluppatore modificher\u00e0 i sorgenti con diverse compilazioni. Per ogni compilazione, la nostra applicazione salva i sorgenti con un time stamp di data e ora. Questo per permettere una <strong>history completa<\/strong> di tutte le modifiche apportate all\u2019interno del branch. Inoltre, ad ogni compilazione vengono eseguiti tutti i controlli delle policy aziendali quali autorizzazioni sui sorgenti, eventuali conflitti, e via discorrendo.<\/li>\n<\/ol>\n<ol start=\"2\">\n<li><strong>Creazione del branch<\/strong>: in questa fase viene attribuito un numero univoco al branch e l\u2019utente compila una scheda in cui inserisce informazioni come descrizione, motivo per cui \u00e8 creato il branch, chi pu\u00f2 osservare il branch. \u00c8 infatti possibile inserire una lista di osservatori, ovvero colleghi che possono essere interessati al nuovo sviluppo.<\/li>\n<li><strong>Richieste di check-out<\/strong>: al termine dello sviluppo di un branch, il programmatore eseguir\u00e0 la richiesta di <strong>check-out<\/strong>. Per policy aziendale, come abbiamo detto precedentemente, lo sviluppatore che ha creato il branch non pu\u00f2 eseguirne il check-out, ma deve forzatamente richiederne l\u2019effettuazione ad un <strong>collega<\/strong>. Questa fase \u00e8 controllata e monitorata dalla nostra applicazione. Il collega che prende in carico la richiesta verificher\u00e0 la congruenza del branch e se del caso effettuer\u00e0 il check-out, altrimenti lo rifiuter\u00e0 rimettendo il branch in stato attivo e indicando le modifiche necessarie.<\/li>\n<li><strong>Rilascio di un branch<\/strong>: l\u2019utente responsabile del check-out potr\u00e0 effettuare un check-out totale o parziale(solo di alcuni sorgenti) nell\u2019ambiente di destinazione richiesto, ovvero in ambiente di test, sviluppo, o standard.<\/li>\n<\/ol>\n<p>Per la qualit\u00e0 dello sviluppo software, abbiamo imposto dei controlli direttamente sull\u2019applicazione, che guida gli sviluppatori alla gestione dei branch e assicura di limitare al minimo gli errori. Questa impone infatti un doppio controllo da parte dei colleghi e<strong> verifica il rispetto delle policy aziendali<\/strong>. Vengono eseguiti controlli per ogni fase dello sviluppo software e questo permette di avere sempre il quadro completo relativamente a chi sta modificando cosa, quando e perch\u00e9: cos\u2019\u00e8 stato svolto, le motivazioni per cui una certa modifica \u00e8 stata effettuata, chi l\u2019ha svolta e come operare in maniera coerente e correggere eventuali errori. In questo modo, \u00e8 possibile avere sempre sotto controllo il quadro completo di tutte le attivit\u00e0 in atto e viene garantita una gestione ottimale del lavoro svolto.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nell&#8217;ambito dello sviluppo software, per gestire in maniera efficace i sorgenti di Sme.UP \u00e8 stato implementato un meccanismo di controllo di versione. Il branch consiste in una duplicazione del codice in un ambiente separato, sul quale il programmatore pu\u00f2 agire senza danneggiare il software originale.<\/p>\n","protected":false},"author":1,"featured_media":52978,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[7144],"tags":[5809,6637,6638,6639,6640],"class_list":["post-50922","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-erp","tag-branch","tag-controlli-di-versione","tag-gestione-dei-sorgenti","tag-rilascio","tag-sviluppo-software"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Sviluppo software e utilizzo dei branch: ecco come li usiamo in smeup<\/title>\n<meta name=\"description\" content=\"Nell&#039;ambito dello sviluppo software, per gestire in maniera efficace i sorgenti di smeup \u00e8 stato implementato un meccanismo di controllo di versione.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.smeup.com\/magazine\/blog\/sviluppo-software-branch\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Sviluppo software e utilizzo dei branch: ecco come li usiamo in smeup\" \/>\n<meta property=\"og:description\" content=\"Nell&#039;ambito dello sviluppo software, per gestire in maniera efficace i sorgenti di smeup \u00e8 stato implementato un meccanismo di controllo di versione.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.smeup.com\/magazine\/blog\/sviluppo-software-branch\/\" \/>\n<meta property=\"og:site_name\" content=\"Magazine\" \/>\n<meta property=\"article:published_time\" content=\"2020-03-06T06:00:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-04-02T13:06:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.smeup.com\/magazine\/wp-content\/uploads\/sites\/5\/2020\/03\/sviluppo-software-branch.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"1067\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"smeup\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"smeup\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/sviluppo-software-branch\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/sviluppo-software-branch\\\/\"},\"author\":{\"name\":\"smeup\",\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/#\\\/schema\\\/person\\\/194a55d96e7e52223a84ff78468bf5c7\"},\"headline\":\"Sviluppo software e utilizzo dei branch: ecco come li usiamo in smeup\",\"datePublished\":\"2020-03-06T06:00:40+00:00\",\"dateModified\":\"2021-04-02T13:06:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/sviluppo-software-branch\\\/\"},\"wordCount\":829,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/sviluppo-software-branch\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2020\\\/03\\\/sviluppo-software-branch.jpg\",\"keywords\":[\"branch\",\"controlli di versione\",\"gestione dei sorgenti\",\"rilascio\",\"sviluppo software\"],\"articleSection\":[\"ERP\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/sviluppo-software-branch\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/sviluppo-software-branch\\\/\",\"url\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/sviluppo-software-branch\\\/\",\"name\":\"Sviluppo software e utilizzo dei branch: ecco come li usiamo in smeup\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/sviluppo-software-branch\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/sviluppo-software-branch\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2020\\\/03\\\/sviluppo-software-branch.jpg\",\"datePublished\":\"2020-03-06T06:00:40+00:00\",\"dateModified\":\"2021-04-02T13:06:03+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/#\\\/schema\\\/person\\\/194a55d96e7e52223a84ff78468bf5c7\"},\"description\":\"Nell'ambito dello sviluppo software, per gestire in maniera efficace i sorgenti di smeup \u00e8 stato implementato un meccanismo di controllo di versione.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/sviluppo-software-branch\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/sviluppo-software-branch\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/sviluppo-software-branch\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2020\\\/03\\\/sviluppo-software-branch.jpg\",\"contentUrl\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2020\\\/03\\\/sviluppo-software-branch.jpg\",\"width\":1600,\"height\":1067,\"caption\":\"smeup sviluppo software\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/sviluppo-software-branch\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sviluppo software e utilizzo dei branch: ecco come li usiamo in smeup\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/#website\",\"url\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/\",\"name\":\"Magazine\",\"description\":\"smeup\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/#\\\/schema\\\/person\\\/194a55d96e7e52223a84ff78468bf5c7\",\"name\":\"smeup\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a88cc3ad6c0af01768fe2ac47c88a321699d97ced53c173f66ceaa51400f43ca?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a88cc3ad6c0af01768fe2ac47c88a321699d97ced53c173f66ceaa51400f43ca?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a88cc3ad6c0af01768fe2ac47c88a321699d97ced53c173f66ceaa51400f43ca?s=96&d=mm&r=g\",\"caption\":\"smeup\"},\"sameAs\":[\"https:\\\/\\\/www.smeup.com\"],\"url\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Sviluppo software e utilizzo dei branch: ecco come li usiamo in smeup","description":"Nell'ambito dello sviluppo software, per gestire in maniera efficace i sorgenti di smeup \u00e8 stato implementato un meccanismo di controllo di versione.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.smeup.com\/magazine\/blog\/sviluppo-software-branch\/","og_locale":"it_IT","og_type":"article","og_title":"Sviluppo software e utilizzo dei branch: ecco come li usiamo in smeup","og_description":"Nell'ambito dello sviluppo software, per gestire in maniera efficace i sorgenti di smeup \u00e8 stato implementato un meccanismo di controllo di versione.","og_url":"https:\/\/www.smeup.com\/magazine\/blog\/sviluppo-software-branch\/","og_site_name":"Magazine","article_published_time":"2020-03-06T06:00:40+00:00","article_modified_time":"2021-04-02T13:06:03+00:00","og_image":[{"width":1600,"height":1067,"url":"https:\/\/www.smeup.com\/magazine\/wp-content\/uploads\/sites\/5\/2020\/03\/sviluppo-software-branch.jpg","type":"image\/jpeg"}],"author":"smeup","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"smeup","Tempo di lettura stimato":"4 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.smeup.com\/magazine\/blog\/sviluppo-software-branch\/#article","isPartOf":{"@id":"https:\/\/www.smeup.com\/magazine\/blog\/sviluppo-software-branch\/"},"author":{"name":"smeup","@id":"https:\/\/www.smeup.com\/magazine\/#\/schema\/person\/194a55d96e7e52223a84ff78468bf5c7"},"headline":"Sviluppo software e utilizzo dei branch: ecco come li usiamo in smeup","datePublished":"2020-03-06T06:00:40+00:00","dateModified":"2021-04-02T13:06:03+00:00","mainEntityOfPage":{"@id":"https:\/\/www.smeup.com\/magazine\/blog\/sviluppo-software-branch\/"},"wordCount":829,"commentCount":0,"image":{"@id":"https:\/\/www.smeup.com\/magazine\/blog\/sviluppo-software-branch\/#primaryimage"},"thumbnailUrl":"https:\/\/www.smeup.com\/magazine\/wp-content\/uploads\/sites\/5\/2020\/03\/sviluppo-software-branch.jpg","keywords":["branch","controlli di versione","gestione dei sorgenti","rilascio","sviluppo software"],"articleSection":["ERP"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.smeup.com\/magazine\/blog\/sviluppo-software-branch\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.smeup.com\/magazine\/blog\/sviluppo-software-branch\/","url":"https:\/\/www.smeup.com\/magazine\/blog\/sviluppo-software-branch\/","name":"Sviluppo software e utilizzo dei branch: ecco come li usiamo in smeup","isPartOf":{"@id":"https:\/\/www.smeup.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.smeup.com\/magazine\/blog\/sviluppo-software-branch\/#primaryimage"},"image":{"@id":"https:\/\/www.smeup.com\/magazine\/blog\/sviluppo-software-branch\/#primaryimage"},"thumbnailUrl":"https:\/\/www.smeup.com\/magazine\/wp-content\/uploads\/sites\/5\/2020\/03\/sviluppo-software-branch.jpg","datePublished":"2020-03-06T06:00:40+00:00","dateModified":"2021-04-02T13:06:03+00:00","author":{"@id":"https:\/\/www.smeup.com\/magazine\/#\/schema\/person\/194a55d96e7e52223a84ff78468bf5c7"},"description":"Nell'ambito dello sviluppo software, per gestire in maniera efficace i sorgenti di smeup \u00e8 stato implementato un meccanismo di controllo di versione.","breadcrumb":{"@id":"https:\/\/www.smeup.com\/magazine\/blog\/sviluppo-software-branch\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.smeup.com\/magazine\/blog\/sviluppo-software-branch\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.smeup.com\/magazine\/blog\/sviluppo-software-branch\/#primaryimage","url":"https:\/\/www.smeup.com\/magazine\/wp-content\/uploads\/sites\/5\/2020\/03\/sviluppo-software-branch.jpg","contentUrl":"https:\/\/www.smeup.com\/magazine\/wp-content\/uploads\/sites\/5\/2020\/03\/sviluppo-software-branch.jpg","width":1600,"height":1067,"caption":"smeup sviluppo software"},{"@type":"BreadcrumbList","@id":"https:\/\/www.smeup.com\/magazine\/blog\/sviluppo-software-branch\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.smeup.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Sviluppo software e utilizzo dei branch: ecco come li usiamo in smeup"}]},{"@type":"WebSite","@id":"https:\/\/www.smeup.com\/magazine\/#website","url":"https:\/\/www.smeup.com\/magazine\/","name":"Magazine","description":"smeup","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.smeup.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/www.smeup.com\/magazine\/#\/schema\/person\/194a55d96e7e52223a84ff78468bf5c7","name":"smeup","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/a88cc3ad6c0af01768fe2ac47c88a321699d97ced53c173f66ceaa51400f43ca?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a88cc3ad6c0af01768fe2ac47c88a321699d97ced53c173f66ceaa51400f43ca?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a88cc3ad6c0af01768fe2ac47c88a321699d97ced53c173f66ceaa51400f43ca?s=96&d=mm&r=g","caption":"smeup"},"sameAs":["https:\/\/www.smeup.com"],"url":"https:\/\/www.smeup.com\/magazine\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/posts\/50922","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/comments?post=50922"}],"version-history":[{"count":2,"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/posts\/50922\/revisions"}],"predecessor-version":[{"id":52980,"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/posts\/50922\/revisions\/52980"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/media\/52978"}],"wp:attachment":[{"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/media?parent=50922"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/categories?post=50922"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/tags?post=50922"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}