{"id":37422,"date":"2019-10-31T22:17:33","date_gmt":"2019-10-31T19:17:33","guid":{"rendered":"https:\/\/prohoster.info\/blog\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm\/"},"modified":"2019-10-31T22:17:33","modified_gmt":"2019-10-31T19:17:33","slug":"shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm","title":{"rendered":"ShIoTiny: nodi, connessioni ed eventi o caratteristiche del disegno dei programmi","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"ShIoTiny: nodi, connessioni ed eventi o caratteristiche del disegno dei programmi\" src=\"\/wp-content\/uploads\/2019\/08\/e5d6a9f6ca0fc445f705a645e5319c06.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>Principali tesi o di cosa tratta questo articolo<\/h4>\n<p>\nIl tema dell'articolo \u00e8 la programmazione visiva PLC <b>ShIoTiny<\/b> per la casa intelligente, descritta qui: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463107\/\">ShIoTiny: automazione leggera, internet delle cose o \u00absei mesi prima delle vacanze\u00bb<\/a><\/noindex>.<\/p>\n<p><b>Molto brevemente<\/b> sono stati considerati i concetti di <b>nodi<\/b>, <b>connessioni<\/b>, <b>eventi<\/b>, cos\u00ec come le caratteristiche di caricamento e esecuzione di un programma visivo su <b>ESP8266<\/b>, che \u00e8 la base del PLC <b>ShIoTiny<\/b>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Introduzione o un paio di domande organizzative<\/h4>\n<p>\nNell'articolo precedente riguardo al mio sviluppo, ho fatto una breve panoramica delle capacit\u00e0 del controller <b>ShIoTiny<\/b>.<\/p>\n<p>Stranamente, il pubblico ha mostrato un notevole interesse e mi ha posto molte domande. Alcuni amici hanno persino subito offerto di acquistare il controller. No, non ho nulla in contrario a guadagnare un po', ma la coscienza non mi permette di vendere qualcosa che \u00e8 ancora molto grezzo dal punto di vista software.<\/p>\n<p>Quindi ho caricato su GitHub i binari del firmware e lo schema del dispositivo: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\">firmware + istruzioni pi\u00f9 brevi + schema + esempi<\/a><\/noindex>.<\/p>\n<p>Ora chiunque pu\u00f2 programmare l'ESP-07 e divertirsi con il firmware. Se qualcuno desidera davvero un tale modulo come in foto, ne ho alcuni. Scrivimi via email <b>shiotiny@yandex.ru<\/b>. Ma, come diceva l'indimenticabile Ogurcov: \u00abNon mi prendo la responsabilit\u00e0 per niente!\u00bb.<\/p>\n<p>Dunque, andiamo al sodo: che cos'\u00e8 &#171;<b>nodo<\/b>&#187; (nodo) e &#171;<b>evento<\/b>&#171;? Come viene eseguito il programma?<\/p>\n<p>Come al solito, iniziamo in ordine: con il caricamento del programma.<\/p>\n<h4>Come si carica il programma<\/h4>\n<p>\nIniziamo con ci\u00f2 che accade quando premiamo il pulsante <b>Upload<\/b> nell'editor <b>ElDraw<\/b> e il nostro schema-programma, composto da bellissimi quadrati, viene inviato al dispositivo.<\/p>\n<p>Innanzitutto, sulla base dello schema che abbiamo disegnato, viene costruita una sua descrizione in forma testuale.<br \/>\nIn secondo luogo, viene verificato che tutti gli ingressi dei nodi siano collegati alle uscite. Non devono esserci ingressi \u00absospesi\u00bb. Se viene trovato un ingresso di questo tipo, lo schema non verr\u00e0 caricato su ShIoTiny e l'editor mostrer\u00e0 un avviso corrispondente.<\/p>\n<p>Se tutto \u00e8 andato a buon fine, l'editor invia a ShIoTiny la descrizione testuale dello schema nodo per nodo. Naturalmente, lo schema esistente in ShIoTiny viene prima eliminato. La descrizione testuale ottenuta viene memorizzata nella memoria FLASH.<\/p>\n<p>A proposito, se desideri eliminare lo schema dal dispositivo, carica semplicemente uno schema vuoto (che non contiene alcun elemento-nodo).<\/p>\n<p>Non appena l'intero schema-programma viene caricato nel PLC ShIoTiny, inizia a \u00abeseguire\u00bb. Cosa significa questo?<\/p>\n<p>\u00c8 importante notare che i processi di caricamento dello schema dalla memoria FLASH all'accensione e di ricezione dello schema dall'editor sono identici.<\/p>\n<p>Inizialmente si crea oggetti-nodi sulla base della loro descrizione.<br \/>\nSuccessivamente, vengono stabiliti i collegamenti tra i nodi. In altre parole, vengono generate le connessioni tra le uscite e le entrate e viceversa.<\/p>\n<p>E solo dopo tutto questo, si avvia il ciclo principale di esecuzione del programma.<\/p>\n<p>Ho scritto a lungo, ma l'intero processo - da \u00abcaricamento\u00bb dello schema dalla memoria FLASH all'avvio del ciclo principale - richiede frazioni di secondo per uno schema di 60-80 nodi.<\/p>\n<p>Come funziona il ciclo principale? Molto semplicemente. Innanzitutto, aspetta l'insorgere di <b>eventi<\/b> in un nodo qualsiasi, quindi elabora questo evento. E cos\u00ec senza fine. O fino a quando non viene caricato un nuovo schema nel ShIoTiny.<\/p>\n<p>Ho gi\u00e0 menzionato pi\u00f9 volte cose come <b>eventi<\/b>, <b>nodi<\/b> e <b>connessioni<\/b>. Ma cosa significa questo dal punto di vista programmatico? Di questo parleremo oggi.<\/p>\n<h4>Nodi, collegamenti ed eventi<\/h4>\n<p>\nBasta dare un'occhiata agli esempi di schemi-programma per <b>ShIoTiny<\/b>, per capire che uno schema \u00e8 composto da sole due entit\u00e0: nodi (o elementi) e collegamenti tra di essi.<\/p>\n<p><b>Nodo<\/b>, <b>nodo<\/b> o <b>elemento dello schema<\/b> \u00e8 una rappresentazione virtuale di qualche <b>azioni<\/b> sopra i dati. Pu\u00f2 trattarsi di un'operazione aritmetica, di un'operazione logica o di qualsiasi altra operazione ci venga in mente. La cosa principale \u00e8 che un nodo ha un ingresso e un'uscita.<\/p>\n<p><b>Ingresso<\/b> \u00e8 il posto dove il nodo riceve i dati. Le immagini delle entrate sono punti che si trovano sempre sul lato sinistro del nodo.<\/p>\n<p><b>Uscita<\/b> \u00e8 il posto da cui viene estratto il risultato dell'attivit\u00e0 del nodo. Le immagini delle uscite sono punti che si trovano sempre sul lato destro del nodo.<\/p>\n<p>Alcuni nodi non hanno ingressi. Questi nodi generano un risultato al loro interno. Ad esempio, un nodo-costante o un nodo-sensore: non necessitano di dati da altri nodi per comunicare un risultato.<\/p>\n<p>Al contrario, altri nodi non hanno uscite. Sono nodi che rappresentano, ad esempio, dispositivi attuatori (rel\u00e8 o simili). Ricevono dati, ma non generano risultati di calcolo accessibili ad altri nodi.<\/p>\n<p>Inoltre, c'\u00e8 un nodo-commento unico. Non fa nulla, non ha n\u00e9 ingressi n\u00e9 uscite. Il suo scopo \u00e8 essere un chiarimento nello schema.<\/p>\n<p>Cosa \u00e8 \"<b>evento<\/b>\u00bb? <b>Evento<\/b> \u2014 \u00e8 l'emergere di nuovi dati in un nodo. Ad esempio, gli eventi includono: la modifica dello stato di un ingresso (nodo <b>Input<\/b>), ricezione di dati da un altro dispositivo (nodi <b>MQTT<\/b> e <b>UDP<\/b>), scadenza di un intervallo di tempo specificato (nodi <b>Timer<\/b> e <b>Delay<\/b>) e cos\u00ec via.<\/p>\n<p>A cosa servono gli eventi? S\u00ec, per determinare in quale nodo sono emersi nuovi dati e quali stati dei nodi devono essere modificati in relazione alla ricezione di nuovi dati. Un evento, cos\u00ec dire, \u00abpassa\u00bb attraverso la catena di nodi, finch\u00e9 non attraversa tutti i nodi di cui \u00e8 necessario controllare e modificare lo stato.<\/p>\n<p>Tutti i nodi possono essere suddivisi in due categorie. <br \/>\nI nodi che possono generare eventi li chiameremo \u00ab<b>nodi attivi<\/b>\u00bb.<br \/>\nI nodi che non possono generare eventi li chiameremo \u00ab<b>nodi passivi<\/b>\u00bb.<\/p>\n<p>Quando un nodo genera un evento (cio\u00e8 quando appaiono nuovi dati in output), in generale cambia lo stato dell'intera catena di nodi collegati all'uscita del nodo-generatore dell'evento.<\/p>\n<p>Per chiarire, consideriamo un esempio nell'immagine.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: nodi, connessioni ed eventi o caratteristiche del disegno dei programmi\" src=\"\/wp-content\/uploads\/2019\/08\/41b53ae925e85c3f272adec876ab3151.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI nodi attivi qui sono: Input1, Input2 e Input3. Gli altri nodi sono passivi. Vediamo cosa succede quando si chiude un ingresso o l'altro. I risultati sono stati riassunti in una tabella per comodit\u00e0.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: nodi, connessioni ed eventi o caratteristiche del disegno dei programmi\" src=\"\/wp-content\/uploads\/2019\/08\/0a8435184f85e919f763048120e6e780.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCome possiamo vedere, al verificarsi di un evento, si costruisce una catena dal nodo-sorgente dell'evento fino al nodo finale. Lo stato dei nodi che non rientrano nella catena non cambia.<\/p>\n<p>Sorge la domanda legittima: cosa succede quando ci sono due o pi\u00f9 eventi contemporaneamente?<\/p>\n<p>Come amante delle opere di Gleb Anfilov, sento il bisogno di rimandare il curioso interrogante al suo libro \u00abFuga dalle meraviglie\u00bb. \u00c8 una sorta di \u00abteoria della relativit\u00e0 per i pi\u00f9 piccoli\u00bb, in cui viene spiegato cosa significhi \u00abcontemporaneamente\u00bb e come vivere con questo.<\/p>\n<p>Ma, in termini pratici, \u00e8 molto pi\u00f9 semplice: al verificarsi di due o pi\u00f9 eventi, tutte le catene da ciascuna sorgente dell'evento vengono costruite e elaborate in sequenza, senza alcun miracolo.<\/p>\n<p>La seguente domanda del lettore curioso \u00e8 del tutto legittima: cosa succede se colleghiamo i nodi in un anello? Oppure, come si suole dire tra questi esperti, stabiliamo un feedback. Ossia, collegare l'uscita di un nodo all'ingresso del nodo precedente in modo che lo stato dell'uscita di quel nodo influenzi lo stato del suo stesso ingresso. Non puoi collegare direttamente l'uscita di un nodo al suo ingresso <b>ElDraw<\/b>. Ma indirettamente, come illustrato nell'immagine qui sotto, \u00e8 possibile farlo.<\/p>\n<p>E cos\u00ec, cosa succede in questo caso? La risposta sar\u00e0 molto \"definita\": dipende dai nodi. Consideriamo l'esempio nell'immagine.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: nodi, connessioni ed eventi o caratteristiche del disegno dei programmi\" src=\"\/wp-content\/uploads\/2019\/08\/7a640c3abfd4868b87f415bce93e4918.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuando i contatti dell'ingresso Input1 sono aperti sul nodo A \u2014 0. Sull'uscita del nodo A, anch'essa 0. Sull'uscita del nodo B \u2014 1. E, infine, sull'ingresso inferiore del nodo A \u2014 1. \u00c8 tutto chiaro. E chi non lo capisce, pu\u00f2 consultare qui sotto la descrizione di come funzionano i nodi \"E\" e \"NON\".<\/p>\n<p>Ora chiudiamo i contatti dell'ingresso Input1, cio\u00e8 applichiamo 1 all'ingresso superiore del nodo A. Coloro che sono familiari con l'elettronica sanno che ci\u00f2 che otterremo in realt\u00e0 \u00e8 uno schema classico di un generatore basato su elementi logici. E per principio, tale schema dovrebbe produrre infinite sequenze in uscita dai nodi A e B: 1-0-1-0-1-0... e 0-1-0-1-0-1-.... Infatti, l'evento dovrebbe costantemente cambiare lo stato dei nodi A e B, avanzando in cerchio 2-3-2-3-...!<\/p>\n<p>Ma in realt\u00e0 non \u00e8 cos\u00ec. Lo schema entra in uno stato casuale: o il rel\u00e8 rimarr\u00e0 acceso o spento, oppure pu\u00f2 emettere un leggero ronzio accendendosi e spegnendosi pi\u00f9 volte di seguito. Tutto dipende dalle condizioni meteorologiche al polo sud di Marte. Ecco perch\u00e9 accade questo.<\/p>\n<p>L'evento nel nodo Input1 altera lo stato del nodo A, poi del nodo B e cos\u00ec via in cerchio varie volte. Il programma riconosce il \"ciclo\" dell'evento e interrompe forzatamente questo carnevale. Dopo ci\u00f2, la modifica dello stato dei nodi A e B viene bloccata fino a un nuovo evento. Il momento in cui il programma decide che \"\u00e8 ora di smettere di girare in tondo!\" dipende in generale da molti fattori e pu\u00f2 essere considerato casuale.<\/p>\n<blockquote><p>Fai attenzione quando colleghi i nodi in un anello: gli effetti potrebbero non essere sempre evidenti! Assicurati di comprendere cosa e perch\u00e9 stai facendo!<\/p><\/blockquote>\n<p> \u00c8 possibile costruire un generatore sui nodi a nostra disposizione? S\u00ec, \u00e8 possibile! Ma per farlo \u00e8 necessario un nodo in grado di generare eventi. E quel nodo esiste: \u00e8 la 'linea di ritardo'. Vediamo come funziona un generatore con un periodo di 6 secondi nell'immagine sottostante.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: nodi, connessioni ed eventi o caratteristiche del disegno dei programmi\" src=\"\/wp-content\/uploads\/2019\/08\/7dc1babedec97fb8177b846c760ff44e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nL'elemento chiave del generatore \u00e8 il nodo A - la linea di ritardo. Se si modifica lo stato dell'input della linea di ritardo da 0 a 1, il 1 non apparir\u00e0 subito in uscita, ma solo dopo un certo intervallo di tempo. Nel nostro caso, sono 3 secondi. Allo stesso modo, se si cambia lo stato dell'input della linea di ritardo da 1 a 0, lo 0 in uscita apparir\u00e0 dopo gli stessi 3 secondi. Il tempo di ritardo \u00e8 impostato in decimi di secondo. Quindi, il valore 30 significa 3 secondi.<\/p>\n<p>Una caratteristica della linea di ritardo \u00e8 che genera un evento dopo la scadenza del tempo di ritardo.<\/p>\n<p>Supponiamo che inizialmente in uscita dalla linea di ritardo ci fosse 0. Dopo aver attraversato il nodo B - l'inverter - questo 0 si trasforma in 1 e va all'ingresso della linea di ritardo. All'inizio non succede nulla. In uscita dalla linea di ritardo rimane 0, ma inizia il conteggio del tempo di ritardo. Passano 3 secondi. E subito la linea di ritardo genera un evento. In uscita ottiene 1. Questo 1, dopo aver attraversato il nodo B - l'inverter - si trasforma in 0 e va all'ingresso della linea di ritardo. Passano altri 3 secondi... e il processo si ripete. Quindi, ogni 3 secondi lo stato dell'uscita dalla linea di ritardo cambia da 0 a 1 e poi da 1 a 0. Il rel\u00e8 scatta. Il generatore funziona. Il periodo degli impulsi \u00e8 di 6 secondi (3 secondi in uscita a 0 e 3 secondi a 1).<\/p>\n<p>Tuttavia, negli schemi reali, non \u00e8 solitamente necessario utilizzare neanche questo esempio. Esistono nodi timer speciali che generano magnificamente e senza assistenza esterna una sequenza di impulsi con un periodo stabilito. La durata degli '0' e '1' in questi impulsi \u00e8 pari alla met\u00e0 del periodo.<\/p>\n<blockquote><p>Per programmare azioni periodiche, utilizzare i nodi timer.<\/p><\/blockquote>\n<p> Vale la pena notare che tali segnali digitali, in cui la durata di '0' e '1' \u00e8 uguale, sono chiamati 'meandro'. <\/p>\n<p>Spero di aver chiarito un po' la questione su come avviene la propagazione degli eventi tra i nodi e su cosa non bisognerebbe fare.<\/p>\n<h4>Conclusione e riferimenti<\/h4>\n<p>\nL'articolo \u00e8 risultato breve, ma \u00e8 una risposta alle domande sorte riguardo ai nodi e agli eventi.<\/p>\n<p>Con lo sviluppo di nuovi firmware e l'emergere di nuovi esempi, scriver\u00f2 su come programmare <b>ShIoTiny<\/b> articoli brevi, finch\u00e9 sar\u00e0 interessante per le persone.<\/p>\n<p>Come in precedenza, schema, firmware, esempi, descrizione dei nodi e tutto <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\">il resto qui<\/a><\/noindex>.<\/p>\n<p>Domande, suggerimenti, critiche \u2014 qui: <b>shiotiny@yandex.ru<\/b><br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463285\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0437\u0438\u0441\u044b \u0438\u043b\u0438 \u043e \u0447\u0435\u043c \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0422\u0435\u043c\u0430 \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u041f\u041b\u041a ShIoTiny \u0434\u043b\u044f \u0443\u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0430, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0443\u0442: ShIoTiny: \u043c\u0430\u043b\u0430\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f, \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0432\u0435\u0449\u0435\u0439 \u0438\u043b\u0438 \u00ab\u0437\u0430 \u043f\u043e\u043b\u0433\u043e\u0434\u0430 \u0434\u043e \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u00bb. \u041e\u0447\u0435\u043d\u044c \u043a\u0440\u0430\u0442\u043a\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0442\u0430\u043a\u0438\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f, \u043a\u0430\u043a \u0443\u0437\u043b\u044b, \u0441\u0432\u044f\u0437\u0438, \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 ESP8266, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043e\u0439 \u041f\u041b\u041a ShIoTiny. \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28078,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37422","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=\"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0437\u0438\u0441\u044b \u0438\u043b\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\/it\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\udd47ShIoTiny: \u0443\u0437\u043b\u044b, \u0441\u0432\u044f\u0437\u0438 \u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0438\u043b\u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0437\u0438\u0441\u044b \u0438\u043b\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm\" \/>\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:17:33+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:17:33+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\udd47ShIoTiny: nodi, relazioni ed eventi o caratteristiche del disegno dei programmi | ProHoster","description":"Tesi principali o.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\udd47ShIoTiny: \u0443\u0437\u043b\u044b, \u0441\u0432\u044f\u0437\u0438 \u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0438\u043b\u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c | ProHoster","og:description":"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0437\u0438\u0441\u044b \u0438\u043b\u0438.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm","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:17:33+00:00","article:modified_time":"2019-10-31T19:17:33+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37422","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-23 17:45:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:27:24","updated":"2026-01-23 17:45:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/37422","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=37422"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/37422\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/28078"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=37422"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=37422"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=37422"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}