{"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\/da\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm","title":{"rendered":"ShIoTiny: noder, forbindelser og begivenheder eller tr\u00e6k ved programmering","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"ShIoTiny: noder, forbindelser og begivenheder eller tr\u00e6k ved programmering\" src=\"\/wp-content\/uploads\/2019\/08\/e5d6a9f6ca0fc445f705a645e5319c06.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>Hovedpunkter eller hvad denne artikel handler om<\/h4>\n<p>\nEmnet for artiklen er visuel programmering af PLC <b>ShIoTiny<\/b> til det smarte hjem, som beskrevet her: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463107\/\">ShIoTiny: lille automation, internet of things eller 'seks m\u00e5neder f\u00f8r ferien'<\/a><\/noindex>.<\/p>\n<p><b>Meget kort<\/b> blev der overvejet begreber som <b>noder<\/b>, <b>forbindelser<\/b>, <b>begivenheder<\/b>, samt egenskaberne ved indl\u00e6sning og udf\u00f8relse af det visuelle program p\u00e5 <b>ESP8266<\/b>, som er grundlaget for PLC <b>ShIoTiny<\/b>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Indledning eller et par organisatoriske sp\u00f8rgsm\u00e5l<\/h4>\n<p>\nI den tidligere artikel om min udvikling gav jeg et kort overblik over controllerens muligheder <b>ShIoTiny<\/b>.<\/p>\n<p>M\u00e6rkeligt nok viste offentligheden en ret st\u00e6rk interesse og stillede mig en del sp\u00f8rgsm\u00e5l. Nogle personer tilb\u00f8d endda straks at k\u00f8be controlleren fra mig. Nej, jeg er ikke imod at tjene lidt penge, men min samvittighed tillader mig ikke at s\u00e6lge noget, der stadig er meget uferdig p\u00e5 det programmeringsm\u00e6ssige omr\u00e5de.<\/p>\n<p>Derfor har jeg lagt bin\u00e6re filer til firmware og enhedens skema op p\u00e5 GitHub: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\">firmware + kort instruktion + skema + eksempler<\/a><\/noindex>.<\/p>\n<p>Nu kan enhver flashe ESP-07 og lege med firmwaren selv. Hvis nogen virkelig \u00f8nsker pr\u00e6cis dette board som p\u00e5 billedet \u2014 s\u00e5 har jeg adskillige stykker. Skriv til mig p\u00e5 mail <b>shiotiny@yandex.ru<\/b>. Men som den uforglemmelige Ogurtsov sagde: 'Jeg tager intet ansvar!'.<\/p>\n<p>S\u00e5 lad os komme til sagen: hvad er &#171;<b>node<\/b>&#187; (noden) og &#171;<b>begivenhed<\/b>&#171;? Hvordan udf\u00f8res programmet?<\/p>\n<p>Som s\u00e6dvanlig, lad os starte med det grundl\u00e6ggende: indl\u00e6sning af programmet.<\/p>\n<h4>Hvordan indl\u00e6ses programmet<\/h4>\n<p>\nLad os starte med, hvad der sker, n\u00e5r vi trykker p\u00e5 knappen <b>Upload<\/b> i editoren <b>ElDraw<\/b> og vores skema-program, der best\u00e5r af smukke firkanter, sendes til enheden.<\/p>\n<p>For det f\u00f8rste bliver der, baseret p\u00e5 det skema, vi har tegnet, bygget en tekstbeskrivelse.<br \/>\nFor det andet kontrolleres det \u2014 er alle noder blevet forbundet til udgange? Der b\u00f8r ikke v\u00e6re nogen \"h\u00e6vende\" indgange. Hvis en s\u00e5dan indgang opdages, kan skemaet ikke indl\u00e6ses i ShIoTiny, og editoren vil give en tilsvarende advarsel.<\/p>\n<p>Hvis alt gik som planlagt, sender editoren tekstbeskrivelsen af skemaet til ShIoTiny node for node. Selvf\u00f8lgelig slettes det eksisterende skema fra ShIoTiny p\u00e5 forh\u00e5nd. Den modtagne tekstbeskrivelse gemmes i FLASH-hukommelsen.<\/p>\n<p>Forresten, hvis du \u00f8nsker at slette skemaet fra enheden, s\u00e5 indl\u00e6s blot et tomt skema (som ikke indeholder nogen node-elementer).<\/p>\n<p>N\u00e5r hele schematet er indl\u00e6st i PLC ShIoTiny, begynder det at \"k\u00f8re\". Hvad betyder det?<\/p>\n<p>Det skal bem\u00e6rkes, at processerne for indl\u00e6sning af schemat fra FLASH-hukommelsen ved opstart og ved modtagelse af schemat fra editoren er identiske.<\/p>\n<p>F\u00f8rst oprettes objekter-noder baseret p\u00e5 deres beskrivelse.<br \/>\nDerefter oprettes forbindelser mellem noderne. Det vil sige, at der genereres links fra udgange til indgange og fra indgange til udgange.<\/p>\n<p>Og f\u00f8rst efter alt dette startes hovedk\u00f8rselscyklussen.<\/p>\n<p>Jeg har skrevet meget, men hele processen - fra \"indl\u00e6sning\" af schemat fra FLASH-hukommelsen til starten af hovedk\u00f8rselscyklussen - tager en br\u00f8kdel af et sekund for et schema med 60-80 noder.<\/p>\n<p>Hvordan virker hovedcyklussen? Meget enkelt. F\u00f8rst venter den p\u00e5, at <b>begivenheder<\/b> der opst\u00e5r en h\u00e6ndelse i en af noderne, hvorefter den behandler denne begivenhed. Og s\u00e5dan forts\u00e6tter det. Eller indtil der indl\u00e6ses et nyt schema i ShIoTiny.<\/p>\n<p>Jeg har allerede n\u00e6vnt s\u00e5danne ting flere gange, som <b>begivenheder<\/b>, <b>noder<\/b> og <b>forbindelser<\/b>. Men hvad betyder det egentlig fra et programmeringsperspektiv? Det er, hvad vi vil diskutere i dag.<\/p>\n<h4>Noder, forbindelser og h\u00e6ndelser<\/h4>\n<p>\nDet er nok at se p\u00e5 eksempler p\u00e5 schemat-programmer for <b>ShIoTiny<\/b>, for at forst\u00e5, at et schema kun best\u00e5r af to enheder - noder (eller elementer) og forbindelser mellem dem.<\/p>\n<p><b>Node<\/b>, <b>noder<\/b> eller <b>schemaelement<\/b> \u2013 er en virtuel repr\u00e6sentation af en eller anden <b>handling<\/b> p\u00e5 data. Det kan v\u00e6re en aritmetisk operation, en logisk operation eller overhovedet enhver operation, vi kan komme i tanke om. Det vigtigste er, at noden har en indgang og en udgang.<\/p>\n<p><b>Log ind<\/b> \u2013 er det sted, hvor noden modtager data. Indgange vises som punkter, der altid ligger til venstre for noden.<\/p>\n<p><b>Udgange<\/b> \u2013 er det sted, hvor resultatet af nodens arbejde udtr\u00e6kkes. Udgange vises som punkter, der altid ligger til h\u00f8jre for noden.<\/p>\n<p>Nogle noder har ikke indgange. Disse noder genererer resultatet inden i sig selv. For eksempel en konstantnode eller en sensor-node: de har ikke brug for data fra andre noder for at kommunikere resultatet.<\/p>\n<p>Andre noder har derimod ikke udgange. Disse noder repr\u00e6senterer for eksempel aktiveringsenheder (rel\u00e6er eller andet lignende). De modtager data, men genererer ikke beregningsresultater, der er tilg\u00e6ngelige for andre noder.<\/p>\n<p>Derudover er der ogs\u00e5 en unik kommentar-node. Den g\u00f8r ingenting, har hverken indgange eller udgange. Dens form\u00e5l er at v\u00e6re en forklaring i schemat.<\/p>\n<p>Hvad er \"<b>begivenhed<\/b>\u00bb? <b>Begivenhed<\/b> \u2014 det er opst\u00e5en af nye data i en hvilken som helst node. For eksempel henviser begivenheder til: \u00e6ndring af indgangens tilstand (node <b>Input<\/b>), modtagelse af data fra en anden enhed (noder <b>MQTT<\/b> og <b>UDP<\/b>), udl\u00f8b af en given tidsperiode (noder <b>Timer<\/b> og <b>Forsinkelse<\/b>) og s\u00e5 videre.<\/p>\n<p>Hvad er form\u00e5let med begivenheder? Ja, for at fastsl\u00e5 \u2014 i hvilken node der opstod nye data, og hvilke noders tilstande der skal \u00e6ndres som f\u00f8lge af de nye data. En begivenhed 'g\u00e5r' ligesom gennem k\u00e6den af noder, indtil den har d\u00e6kket alle noder, hvis tilstand skal kontrolleres og \u00e6ndres.<\/p>\n<p>Alle noder kan opdeles i to kategorier. <br \/>\nNoder, der kan generere begivenheder, kalder vi \"<b>aktive noder<\/b>\u00bb.<br \/>\nNoder, der ikke kan generere begivenheder, kalder vi \"<b>passive noder<\/b>\u00bb.<\/p>\n<p>N\u00e5r en node genererer en begivenhed (det vil sige at der p\u00e5 dens output opst\u00e5r nye data), \u00e6ndres generelt tilstanden af hele k\u00e6den af noder, der er tilsluttet outputtet af begivenhedsgeneratoren.<\/p>\n<p>For at g\u00f8re det klart, lad os overveje et eksempel i billedet.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: noder, forbindelser og begivenheder eller tr\u00e6k ved programmering\" src=\"\/wp-content\/uploads\/2019\/08\/41b53ae925e85c3f272adec876ab3151.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe aktive noder her er \u2014 Input1, Input2 og Input3. De \u00f8vrige noder er passive. Lad os se, hvad der sker, n\u00e5r en af indgangene lukkes. Resultaterne er samlet i en tabel for enkelhedens skyld.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: noder, forbindelser og begivenheder eller tr\u00e6k ved programmering\" src=\"\/wp-content\/uploads\/2019\/08\/0a8435184f85e919f763048120e6e780.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSom vi kan se, n\u00e5r der opst\u00e5r en begivenhed, bygges der en k\u00e6de fra begivenhedens kilde node til den endelige node. Tilstanden for de noder, der ikke er en del af k\u00e6den, \u00e6ndres ikke.<\/p>\n<p>Der opst\u00e5r et legitimt sp\u00f8rgsm\u00e5l: hvad sker der ved opst\u00e5en af to eller endda flere begivenheder samtidig?<\/p>\n<p>Som en beundrer af den kreative Gleb Anfilov, bliver jeg draget til at henvise den nysgerrige sp\u00f8rger til hans bog \"Flugten fra forundringer\". Det er en 'relativitetsteori for de mindste', hvor det er godt forklaret, hvad 'samtidig' betyder, og hvordan man lever med det.<\/p>\n<p>Men rent praktisk er alt meget lettere: ved opst\u00e5en af to eller endda flere begivenheder bygges og behandles alle k\u00e6der fra hver begivenhedskilde i r\u00e6kkef\u00f8lge, uden nogen mirakler.<\/p>\n<p>Det n\u00e6ste helt legitime sp\u00f8rgsm\u00e5l fra en nysgerrig l\u00e6ser er: hvad sker der, hvis man forbinder noderne i en ring? Eller, som man plejer at sige blandt de kloge \u2014 indf\u00f8re feedback. Det vil sige at forbinde udgangen af en af noderne til indgangen til den foreg\u00e5ende node, s\u00e5dan at tilstanden af udgangen p\u00e5 denne node p\u00e5virker tilstanden af dens egen indgang. Du vil ikke kunne forbinde udgangen af noden direkte til dens egen indgang, da redakt\u00f8ren... <b>ElDraw<\/b>...men indirekte, som vist p\u00e5 billedet nedenfor \u2014 det kan lade sig g\u00f8re.<\/p>\n<p>Og hvad vil der s\u00e5 ske i dette tilf\u00e6lde? Svaret bliver meget \"bestemt\": alt efter hvilke noder. Lad os tage et eksempel fra billedet.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: noder, forbindelser og begivenheder eller tr\u00e6k ved programmering\" src=\"\/wp-content\/uploads\/2019\/08\/7a640c3abfd4868b87f415bce93e4918.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00e5r indgangskontakterne Input1 er \u00e5bne p\u00e5 den \u00f8verste indgang til node A \u2014 0. P\u00e5 udgangen af node A ogs\u00e5 0. P\u00e5 udgangen af node B \u2014 1. Og endelig p\u00e5 den nederste indgang til node A \u2014 1. Alt er klart. Og hvis der er nogen, der ikke forst\u00e5r det \u2014 se nedenfor for beskrivelsen af, hvordan \"OG\"- og \"IKKE\"-noderne fungerer.<\/p>\n<p>Nu lukker vi indgangskontakterne Input1, det vil sige vi giver en enhed til den \u00f8verste indgang til node A. De, der kender til elektronik, ved, at vi faktisk f\u00e5r et klassisk skema for en generator baseret p\u00e5 logiske elementer. Ideelt set b\u00f8r et s\u00e5dant skema uendeligt producere sekvenserne 1-0-1-0-1-0... og 0-1-0-1-0-1.... For et h\u00e6ndelsesforl\u00f8b skal konstant \u00e6ndre tilstanden af noderne A og B, mens det cirkulerer 2-3-2-3...!<\/p>\n<p>Men i virkeligheden sker dette ikke. Skemaet vil falde ind i en tilf\u00e6ldig tilstand \u2014 enten forbliver rel\u00e6et aktiveret eller deaktiveret, eller det kan let brumme ved at t\u00e6nde og slukke flere gange i tr\u00e6k. Alt afh\u00e6nger af vejret p\u00e5 den sydlige pol p\u00e5 Mars. Og her er grunden til, at dette sker.<\/p>\n<p>H\u00e6ndelsen fra node Input1 \u00e6ndrer tilstanden af node A, s\u00e5 node B og s\u00e5 videre i flere omgange. Programmet registrerer \"cirklisering\" af h\u00e6ndelsen og tvinger denne fest til at stoppe. Efter dette bliver \u00e6ndringen af tilstanden af noderne A og B blokeret, indtil der opst\u00e5r en ny h\u00e6ndelse. Det moment, hvor programmet beslutter \u2014 \"nok med at dreje i ring!\" \u2014 afh\u00e6nger generelt af mange faktorer og kan betragtes som tilf\u00e6ldigt.<\/p>\n<blockquote><p>V\u00e6r forsigtig med at forbinde noder i en ring \u2014 effekterne vil ikke altid v\u00e6re \u00e5benlyse! S\u00f8rg for at have en klar id\u00e9 om, hvad og hvorfor du g\u00f8r det!<\/p><\/blockquote>\n<p> Kan man bygge en generator med de tilg\u00e6ngelige noder? Ja, det kan man! Men til det kr\u00e6ves en node, der selv kan generere h\u00e6ndelser. Og en s\u00e5dan node findes \u2014 det er \"forsinkelseslinjen\". Lad os se, hvordan generatoren fungerer med en periode p\u00e5 6 sekunder p\u00e5 tegningen nedenfor.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: noder, forbindelser og begivenheder eller tr\u00e6k ved programmering\" src=\"\/wp-content\/uploads\/2019\/08\/7dc1babedec97fb8177b846c760ff44e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00f8gleelementet i generatoren er node A \u2014 forsinkelseslinjen. Hvis man \u00e6ndrer indgangen til forsinkelseslinjen fra 0 til 1, vil 1 ikke komme ud med det samme, men f\u00f8rst efter den angivne tid. I vores tilf\u00e6lde er det 3 sekunder. Ligeledes, hvis man \u00e6ndrer indgangen til forsinkelseslinjen fra 1 til 0, vil 0 komme ud efter de samme 3 sekunder. Forsinkelsestiden angives i tidedele af et sekund. Det vil sige, at v\u00e6rdien 30 betyder \u2014 3 sekunder.<\/p>\n<p>Kendetegnet ved forsinkelseslinjen er, at den genererer en h\u00e6ndelse efter udl\u00f8bet af forsinkelsestiden.<\/p>\n<p>Antag, at der i starten var 0 p\u00e5 udgangen af forsinkelseslinjen. Efter at have passeret node B \u2014 inverteren \u2014 bliver dette 0 til 1 og g\u00e5r ind i forsinkelseslinjen. Der sker straks ikke noget. P\u00e5 udgangen af forsinkelseslinjen forbliver der 0, men tidtageren for forsinkelsen starter. 3 sekunder g\u00e5r. Og s\u00e5 genererer forsinkelseslinjen straks en h\u00e6ndelse. Der kommer 1 ud. Denne 1 bliver efter at have passeret node B \u2014 inverteren \u2014 til 0 og g\u00e5r ind i forsinkelseslinjen. Der g\u00e5r endnu 3 sekunder\u2026 og processen gentages. Det vil sige, at hver 3. sekund \u00e6ndres udgangstilstanden af forsinkelseslinjen fra 0 til 1 og derefter fra 1 til 0. Rel\u00e6et klikker. Generatoren fungerer. Pulsperioden er 6 sekunder (3 sekunder p\u00e5 udgangen 0 og 3 sekunder \u2014 1).<\/p>\n<p>Men i virkelige kredsl\u00f8b er det normalt ikke n\u00f8dvendigt at bruge dette eksempel. Der findes specielle timernoder, der fantastisk og uden hj\u00e6lp genererer en sekvens af pulser med en given periode. Varigheden af \"nul\" og \"et\" i disse pulser er lig med halvdelen af perioden.<\/p>\n<blockquote><p>For at angive periodiske handlinger skal du bruge timernoder.<\/p><\/blockquote>\n<p> Jeg bem\u00e6rker, at s\u00e5danne digitale signaler, hvor varigheden af \"nul\" og \"et\" er ens, kaldes \"meander\". <\/p>\n<p>Jeg h\u00e5ber, jeg har afklaret sp\u00f8rgsm\u00e5let om, hvordan h\u00e6ndelser spreder sig mellem noderne, og hvad man ikke skal g\u00f8re.<\/p>\n<h4>Konklusion og links<\/h4>\n<p>\nArtiklen blev kort, men det er en artikel-svar p\u00e5 sp\u00f8rgsm\u00e5l, der opstod om noder og h\u00e6ndelser.<\/p>\n<p>Efterh\u00e5nden som firmwaren udvikler sig, og nye eksempler opst\u00e5r, vil jeg skrive om, hvordan man programmerer. <b>ShIoTiny<\/b> sm\u00e5 artikler, s\u00e5 l\u00e6nge det vil v\u00e6re interessant for folk.<\/p>\n<p>Som f\u00f8r vil skemaet, firmwaren, eksemplerne, beskrivelserne af noder og alt <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\">andet v\u00e6re her.<\/a><\/noindex>.<\/p>\n<p>Sp\u00f8rgsm\u00e5l, \u00f8nsker, kritik \u2014 send dem her: <b>shiotiny@yandex.ru<\/b><br \/>\n<br \/>Kilde: <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.3 - 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\/da\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm\" \/>\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\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\/da\/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: noder, forbindelser og begivenheder eller s\u00e6rlige tr\u00e6k ved programtegning | ProHoster","description":"Hovedpunkter eller.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm","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\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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/37422","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=37422"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/37422\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/28078"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=37422"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=37422"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=37422"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}