{"id":3459,"date":"2019-04-24T08:53:00","date_gmt":"2019-04-24T08:53:00","guid":{"rendered":"http:\/\/the-codest.localhost\/blog\/mom-he-blocked-threads-again\/"},"modified":"2026-04-24T11:21:40","modified_gmt":"2026-04-24T11:21:40","slug":"aiti-han-esti-taas-kierteet","status":"publish","type":"post","link":"https:\/\/thecodest.co\/fi\/blog\/mom-he-blocked-threads-again\/","title":{"rendered":"\u00c4ITI! H\u00e4n esti taas viestiketjut!"},"content":{"rendered":"<h2>Kierteet<\/h2>\n<p>T\u00e4rkein muistettava asia: on olemassa kahdenlaisia s\u00e4ikeit\u00e4 vuonna <strong><a href=\"https:\/\/thecodest.co\/fi\/blog\/find-your-node-js-expert-for-hire-today\/\">Node.js<\/a><\/strong>: Main Thread - jota k\u00e4sittelee <b>Tapahtumasilmukka<\/b>ja <b>Ty\u00f6ntekij\u00e4pooli<\/b> (thread pool) - joka on s\u00e4ikeiden allas -<br \/>\n<a href=\"http:\/\/docs.libuv.org\/en\/v1.x\/threadpool.html\" rel=\"nofollow\">kiitos libuvin<\/a>. Jokaisella heist\u00e4 on erilainen teht\u00e4v\u00e4. Ensimm\u00e4isen teht\u00e4v\u00e4n\u00e4 on k\u00e4sitell\u00e4 lukkiutumattomia I\/O-operaatioita, ja toinen vastaa CPU-intensiivisest\u00e4 ty\u00f6st\u00e4 ja my\u00f6s lukkiutumattomasta I\/O:sta.<\/p>\n<p><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/libuv.png\" alt=\"libuv-kaavio\" title=\"libuvin komponentit\" \/><\/p>\n<p>Mutta mik\u00e4 on s\u00e4ie ja miten se eroaa prosessista? Eroja on useita, mutta t\u00e4rkein niist\u00e4 on seuraava <a href=\"https:\/\/thecodest.co\/fi\/blog\/why-us-companies-are-opting-for-polish-developers\/\">us<\/a> on se, miten niille varataan muistia. Voit ajatella prosessia kuin sovellusta. Jokaisen prosessin sis\u00e4ll\u00e4 on vain t\u00e4lle prosessille varattu osa muistia. Yksi prosessi ei siis p\u00e4\u00e4se k\u00e4siksi toisen prosessin muistiin, ja t\u00e4m\u00e4 ominaisuus takaa korkean turvallisuuden. Jotta prosessien v\u00e4lille voidaan luoda viestint\u00e4, meid\u00e4n on teht\u00e4v\u00e4 jonkin verran ty\u00f6t\u00e4. S\u00e4ikeet ovat erilaisia. S\u00e4ikeet toimivat prosessin sis\u00e4ll\u00e4 ja jakavat saman muistin, joten s\u00e4ikeiden yhteisk\u00e4ytt\u00f6 ei ole lainkaan ongelma. <a href=\"https:\/\/thecodest.co\/fi\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">tiedot<\/a>.<\/p>\n<p>Yksi asia aiheuttaa kuitenkin ongelmia. Sit\u00e4 kutsutaan kilpajuoksuehdoksi. S\u00e4ikeet voivat toimia samaan aikaan, joten mist\u00e4 tied\u00e4mme, kumpi p\u00e4\u00e4ttyy ensin? Saattaa k\u00e4yd\u00e4 niin, ett\u00e4 ensimm\u00e4isell\u00e4 kerralla ensimm\u00e4inen operaatio p\u00e4\u00e4ttyy ensin, ja seuraavalla kerralla voi k\u00e4yd\u00e4 p\u00e4invastoin ja toinen operaatio p\u00e4\u00e4ttyy ennen ensimm\u00e4ist\u00e4. Kuvittele ty\u00f6skentely kirjoitus\/lukuoperaatioiden kanssa t\u00e4llaisissa olosuhteissa! Painajainen! Joskus on hyvin vaikeaa kirjoittaa oikeita <a href=\"https:\/\/thecodest.co\/fi\/dictionary\/what-is-code-refactoring\/\">koodi<\/a> monis\u00e4ikeisess\u00e4 ymp\u00e4rist\u00f6ss\u00e4.<\/p>\n<p>Lis\u00e4ksi monis\u00e4ikeisiss\u00e4 kieliss\u00e4 on suuri muistin kuluminen, koska ne luovat erillisen s\u00e4ikeen jokaista pyynt\u00f6\u00e4 varten. Jos siis haluat kutsua 1000 pyynt\u00f6\u00e4, ne luovat 1000 s\u00e4iett\u00e4.<\/p>\n<p>Miten k\u00e4sitell\u00e4 t\u00e4llaista ongelmaa? K\u00e4yt\u00e4 sen sijaan yht\u00e4 s\u00e4iett\u00e4! Ja se on se, mit\u00e4 <strong><a href=\"https:\/\/thecodest.co\/fi\/dictionary\/what-is-node-js-used-for\/\">Solmu<\/a><\/strong> tarjoaa sinulle.<\/p>\n<p><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/eventloop.png\" alt=\"yhden s\u00e4ikeen tapahtumasilmukka\" title=\"tapahtumasilmukkakaavio \" \/><\/p>\n<p>Koska <strong><a href=\"https:\/\/thecodest.co\/fi\/blog\/hire-javascript-developer\/\">JavaScript-kehitt\u00e4j\u00e4<\/a><\/strong> Kehotan teit\u00e4 katsomaan <a href=\"https:\/\/youtu.be\/PNa9OMajw9w\" rel=\"nofollow\">elokuva<\/a><br \/>\njossa Bart Belder selitt\u00e4\u00e4 selke\u00e4sti tapahtumasilmukan k\u00e4sitteen. Yll\u00e4 oleva kaavio on otettu h\u00e4nen esityksest\u00e4\u00e4n. Ja jos et tunne n\u00e4it\u00e4 termej\u00e4 lainkaan, niin molemmat <strong>Solmu<\/strong> ja Libuvilla on erinomainen dokumentaatio \ud83d\ude42<\/p>\n<h2>Tietoja est\u00e4misest\u00e4<\/h2>\n<p>Osoitteessa <strong><a href=\"https:\/\/thecodest.co\/fi\/dictionary\/why-is-javascript-so-popular\/\">JavaScript<\/a> kehitys<\/strong> teollisuudessa sanotaan, ett\u00e4 koska <strong>Solmu<\/strong> on yksis\u00e4ikeinen ja ei-blokkaava, voit saavuttaa suuremman samanaikaisuuden samoilla resursseilla kuin monis\u00e4ikeisill\u00e4 ratkaisuilla. Se on totta, mutta se ei ole niin kaunista ja helppoa kuin milt\u00e4 se saattaa vaikuttaa.<\/p>\n<p>Koska <strong>Node.js<\/strong> on yksis\u00e4ikeinen (<a href=\"https:\/\/thecodest.co\/fi\/blog\/hire-vue-js-developers\/\">JS<\/a> osa), CPU-intensiiviset teht\u00e4v\u00e4t est\u00e4v\u00e4t kaikki k\u00e4ynniss\u00e4 olevat pyynn\u00f6t, kunnes kyseinen teht\u00e4v\u00e4 on suoritettu loppuun. On siis totta, ett\u00e4 <strong>Node.js<\/strong> voit est\u00e4\u00e4 kaikki pyynn\u00f6t vain siksi, ett\u00e4 yhdess\u00e4 niist\u00e4 oli est\u00e4v\u00e4 k\u00e4sky. Est\u00e4v\u00e4 koodi tarkoittaa, ett\u00e4 sen suorittaminen kest\u00e4\u00e4 yli muutaman millisekunnin. \u00c4l\u00e4 kuitenkaan sekoita pitk\u00e4\u00e4 vasteaikaa est\u00e4miseen. Tietokannan vastaus voi kest\u00e4\u00e4 hyvin kauan, mutta se ei est\u00e4 prosessia (sovellusta).<\/p>\n<p>Est\u00e4v\u00e4t menetelm\u00e4t suoritetaan synkronisesti ja ei-est\u00e4v\u00e4t menetelm\u00e4t asynkronisesti.<\/p>\n<p>Miten voit hidastaa (tai est\u00e4\u00e4) tapahtumasilmukkaa?<\/p>\n<ul>\n<li>haavoittuva regex - haavoittuva s\u00e4\u00e4nn\u00f6llinen lauseke on sellainen, johon s\u00e4\u00e4nn\u00f6llinen lausekkeesi voi vied\u00e4 eksponentiaalisen paljon aikaa; voit lukea niist\u00e4 lis\u00e4\u00e4.  <a href=\"https:\/\/nodejs.org\/en\/docs\/guides\/dont-block-the-event-loop\/\" rel=\"nofollow\">t\u00e4\u00e4ll\u00e4<\/a>,<\/li>\n<li>JSON-operaatiot suurille objekteille,<\/li>\n<li>k\u00e4ytt\u00e4m\u00e4ll\u00e4 synkronisia API:ita <strong>Solmu <\/strong>ydinmoduulit asynkronisten versioiden sijaan; kaikista Node.js-standardikirjaston I\/O-menetelmist\u00e4 on my\u00f6s niiden asynkroniset versiot,<\/li>\n<li>muut ohjelmointivirheet, kuten synkroniset loputtomat silmukat.<\/li>\n<\/ul>\n<p>Koska Worker Pool k\u00e4ytt\u00e4\u00e4 s\u00e4ikeiden joukkoa, onko t\u00e4ss\u00e4 tapauksessa mahdollista est\u00e4\u00e4 my\u00f6s ne? Valitettavasti kyll\u00e4 \ud83d\ude41<strong> Solmu<\/strong> perustuu filosofiaan <code>yksi s\u00e4ie monille asiakkaille.<\/code> Oletetaan, ett\u00e4 tietyn ty\u00f6ntekij\u00e4n suorittama teht\u00e4v\u00e4 on hyvin monimutkainen ja vaatii enemm\u00e4n aikaa. T\u00e4m\u00e4n seurauksena Worker on estynyt, eik\u00e4 sit\u00e4 voida k\u00e4ytt\u00e4\u00e4 muiden vireill\u00e4 olevien teht\u00e4vien suorittamiseen ennen kuin sen ohjeet on suoritettu. Kuten olet luultavasti jo arvannut, se saattaa vaikuttaa suorituskykyyn. Voit est\u00e4\u00e4 t\u00e4llaiset ongelmat minimoimalla teht\u00e4vien aikojen vaihtelun k\u00e4ytt\u00e4m\u00e4ll\u00e4 teht\u00e4vien osiointia.<\/p>\n<h2>P\u00e4\u00e4telm\u00e4<\/h2>\n<p>V\u00e4lt\u00e4 est\u00e4mist\u00e4, se on varmaa. Jos vain voit, valitse aina asynkroniset versiot standardikirjaston API:ista. Muuten sovelluksesi suorittamisen j\u00e4lkeen asiakas voi kokea useita ongelmia, jotka alkavat heikentyneest\u00e4 l\u00e4p\u00e4isykyvyst\u00e4 ja p\u00e4\u00e4ttyv\u00e4t t\u00e4ydelliseen peruuttamiseen, mik\u00e4 on k\u00e4ytt\u00e4j\u00e4n kannalta kohtalokasta.<\/p>\n<p><article-inline-code-review><\/article-inline-code-review><\/p>\n<p><b>Lue lis\u00e4\u00e4:<\/b><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/why-you-should-probably-use-typescript\">Miksi sinun pit\u00e4isi (luultavasti) k\u00e4ytt\u00e4\u00e4 Typescripti\u00e4?<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/how-not-to-kill-a-project-with-bad-coding-practices\/\">Miten projektia ei saa tappaa huonoilla koodausk\u00e4yt\u00e4nn\u00f6ill\u00e4?<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/data-fetching-strategies-in-nextjs\/\">Tiedonhakustrategiat NextJS:ss\u00e4<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>\"\u00c4l\u00e4 est\u00e4 tapahtumasilmukkaa...\" - olet luultavasti kuullut t\u00e4m\u00e4n lauseen monta kertaa... En ole yll\u00e4ttynyt, koska se on yksi t\u00e4rkeimmist\u00e4 oletuksista ty\u00f6skennelt\u00e4ess\u00e4 Noden kanssa. Mutta on my\u00f6s toinen \"asia\", jota sinun tulisi olla est\u00e4m\u00e4tt\u00e4 - Worker Pool. Jos se laiminly\u00f6d\u00e4\u00e4n, sill\u00e4 voi olla merkitt\u00e4v\u00e4 vaikutus sovelluksen suorituskykyyn ja jopa sen turvallisuuteen.<\/p>","protected":false},"author":2,"featured_media":3460,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[8],"tags":[],"class_list":["post-3459","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>MOM! He Blocked Threads Again! - The Codest<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thecodest.co\/fi\/blogi\/aiti-han-esti-taas-kierteet\/\" \/>\n<meta property=\"og:locale\" content=\"fi_FI\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MOM! He Blocked Threads Again!\" \/>\n<meta property=\"og:description\" content=\"\u201cDon`t block the event loop\u2026\u201d \u2013 you&#039;ve probably heard this sentence many times\u2026 I&#039;m not surprised because it is one of the most important assumptions when working with Node. But there is also a second \u201cthing\u201d which you should refrain from blocking \u2013 the Worker Pool. If neglected, it can have a significant impact on application performance and even its security.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thecodest.co\/fi\/blogi\/aiti-han-esti-taas-kierteet\/\" \/>\n<meta property=\"og:site_name\" content=\"The Codest\" \/>\n<meta property=\"article:published_time\" content=\"2019-04-24T08:53:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-24T11:21:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/thecodest_blog_post_coverproduct_design_agency_-5-.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"540\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"thecodest\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"thecodest\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minuuttia\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/mom-he-blocked-threads-again\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/mom-he-blocked-threads-again\\\/\"},\"author\":{\"name\":\"thecodest\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\"},\"headline\":\"MOM! He Blocked Threads Again!\",\"datePublished\":\"2019-04-24T08:53:00+00:00\",\"dateModified\":\"2026-04-24T11:21:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/mom-he-blocked-threads-again\\\/\"},\"wordCount\":755,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/mom-he-blocked-threads-again\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/thecodest_blog_post_coverproduct_design_agency_-5-.jpg\",\"articleSection\":[\"Software Development\"],\"inLanguage\":\"fi\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/mom-he-blocked-threads-again\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/mom-he-blocked-threads-again\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/mom-he-blocked-threads-again\\\/\",\"name\":\"MOM! He Blocked Threads Again! - The Codest\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/mom-he-blocked-threads-again\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/mom-he-blocked-threads-again\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/thecodest_blog_post_coverproduct_design_agency_-5-.jpg\",\"datePublished\":\"2019-04-24T08:53:00+00:00\",\"dateModified\":\"2026-04-24T11:21:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/mom-he-blocked-threads-again\\\/#breadcrumb\"},\"inLanguage\":\"fi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/mom-he-blocked-threads-again\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fi\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/mom-he-blocked-threads-again\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/thecodest_blog_post_coverproduct_design_agency_-5-.jpg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/thecodest_blog_post_coverproduct_design_agency_-5-.jpg\",\"width\":960,\"height\":540},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/mom-he-blocked-threads-again\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thecodest.co\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MOM! He Blocked Threads Again!\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"name\":\"The Codest\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thecodest.co\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fi\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fi\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"width\":144,\"height\":36,\"caption\":\"The Codest\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/pl.linkedin.com\\\/company\\\/codest\",\"https:\\\/\\\/clutch.co\\\/profile\\\/codest\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\",\"name\":\"thecodest\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fi\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"caption\":\"thecodest\"},\"url\":\"https:\\\/\\\/thecodest.co\\\/fi\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u00c4ITI! H\u00e4n esti taas viestiketjut! - The Codest","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:\/\/thecodest.co\/fi\/blogi\/aiti-han-esti-taas-kierteet\/","og_locale":"fi_FI","og_type":"article","og_title":"MOM! He Blocked Threads Again!","og_description":"\u201cDon`t block the event loop\u2026\u201d \u2013 you've probably heard this sentence many times\u2026 I'm not surprised because it is one of the most important assumptions when working with Node. But there is also a second \u201cthing\u201d which you should refrain from blocking \u2013 the Worker Pool. If neglected, it can have a significant impact on application performance and even its security.","og_url":"https:\/\/thecodest.co\/fi\/blogi\/aiti-han-esti-taas-kierteet\/","og_site_name":"The Codest","article_published_time":"2019-04-24T08:53:00+00:00","article_modified_time":"2026-04-24T11:21:40+00:00","og_image":[{"width":960,"height":540,"url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/thecodest_blog_post_coverproduct_design_agency_-5-.jpg","type":"image\/jpeg"}],"author":"thecodest","twitter_card":"summary_large_image","twitter_misc":{"Written by":"thecodest","Est. reading time":"4 minuuttia"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thecodest.co\/blog\/mom-he-blocked-threads-again\/#article","isPartOf":{"@id":"https:\/\/thecodest.co\/blog\/mom-he-blocked-threads-again\/"},"author":{"name":"thecodest","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76"},"headline":"MOM! He Blocked Threads Again!","datePublished":"2019-04-24T08:53:00+00:00","dateModified":"2026-04-24T11:21:40+00:00","mainEntityOfPage":{"@id":"https:\/\/thecodest.co\/blog\/mom-he-blocked-threads-again\/"},"wordCount":755,"commentCount":0,"publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"image":{"@id":"https:\/\/thecodest.co\/blog\/mom-he-blocked-threads-again\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/thecodest_blog_post_coverproduct_design_agency_-5-.jpg","articleSection":["Software Development"],"inLanguage":"fi","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thecodest.co\/blog\/mom-he-blocked-threads-again\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thecodest.co\/blog\/mom-he-blocked-threads-again\/","url":"https:\/\/thecodest.co\/blog\/mom-he-blocked-threads-again\/","name":"\u00c4ITI! H\u00e4n esti taas viestiketjut! - The Codest","isPartOf":{"@id":"https:\/\/thecodest.co\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thecodest.co\/blog\/mom-he-blocked-threads-again\/#primaryimage"},"image":{"@id":"https:\/\/thecodest.co\/blog\/mom-he-blocked-threads-again\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/thecodest_blog_post_coverproduct_design_agency_-5-.jpg","datePublished":"2019-04-24T08:53:00+00:00","dateModified":"2026-04-24T11:21:40+00:00","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/mom-he-blocked-threads-again\/#breadcrumb"},"inLanguage":"fi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/mom-he-blocked-threads-again\/"]}]},{"@type":"ImageObject","inLanguage":"fi","@id":"https:\/\/thecodest.co\/blog\/mom-he-blocked-threads-again\/#primaryimage","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/thecodest_blog_post_coverproduct_design_agency_-5-.jpg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/thecodest_blog_post_coverproduct_design_agency_-5-.jpg","width":960,"height":540},{"@type":"BreadcrumbList","@id":"https:\/\/thecodest.co\/blog\/mom-he-blocked-threads-again\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thecodest.co\/"},{"@type":"ListItem","position":2,"name":"MOM! He Blocked Threads Again!"}]},{"@type":"WebSite","@id":"https:\/\/thecodest.co\/#website","url":"https:\/\/thecodest.co\/","name":"Codest","description":"","publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thecodest.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fi"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"fi","@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","width":144,"height":36,"caption":"The Codest"},"image":{"@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/pl.linkedin.com\/company\/codest","https:\/\/clutch.co\/profile\/codest"]},{"@type":"Person","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76","name":"thecodest","image":{"@type":"ImageObject","inLanguage":"fi","@id":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","caption":"thecodest"},"url":"https:\/\/thecodest.co\/fi\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/posts\/3459","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/comments?post=3459"}],"version-history":[{"count":5,"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/posts\/3459\/revisions"}],"predecessor-version":[{"id":7929,"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/posts\/3459\/revisions\/7929"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/media\/3460"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/media?parent=3459"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/categories?post=3459"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/tags?post=3459"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}