{"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":"a-mae-voltou-a-bloquear-topicos","status":"publish","type":"post","link":"https:\/\/thecodest.co\/pt\/blog\/mom-he-blocked-threads-again\/","title":{"rendered":"M\u00c3E! Ele bloqueou os t\u00f3picos de novo!"},"content":{"rendered":"<h2>Fios<\/h2>\n<p>O principal aspeto a ter em conta: existem dois tipos de linhas em <strong><a href=\"https:\/\/thecodest.co\/pt\/blog\/find-your-node-js-expert-for-hire-today\/\">Node.js<\/a><\/strong>: Main Thread - que \u00e9 gerido por <b>Ciclo de eventos<\/b>e <b>Pool de trabalhadores<\/b> (pool de threads) - que \u00e9 o pool de threads -<br \/>\n<a href=\"http:\/\/docs.libuv.org\/en\/v1.x\/threadpool.html\" rel=\"nofollow\">gra\u00e7as \u00e0 libuv<\/a>. Cada um deles tem uma fun\u00e7\u00e3o diferente. O objetivo do primeiro \u00e9 lidar com opera\u00e7\u00f5es de E\/S n\u00e3o bloqueantes, e o segundo \u00e9 respons\u00e1vel pelo trabalho intensivo da CPU e tamb\u00e9m pelo bloqueio de E\/S.<\/p>\n<p><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/libuv.png\" alt=\"diagrama da libuv\" title=\"componentes da libuv\" \/><\/p>\n<p>Mas o que \u00e9 uma linha e em que \u00e9 que \u00e9 diferente de um processo? Existem v\u00e1rias diferen\u00e7as, mas a mais importante para <a href=\"https:\/\/thecodest.co\/pt\/blog\/why-us-companies-are-opting-for-polish-developers\/\">n\u00f3s<\/a> \u00e9 a forma como a mem\u00f3ria lhes \u00e9 atribu\u00edda. Pode pensar num processo como se fosse uma aplica\u00e7\u00e3o. Dentro de cada processo, h\u00e1 um peda\u00e7o de mem\u00f3ria dedicado apenas a esse processo. Assim, um processo n\u00e3o tem acesso \u00e0 mem\u00f3ria do segundo, e essa propriedade garante alta seguran\u00e7a. Para estabelecer a comunica\u00e7\u00e3o entre eles, temos que fazer algum trabalho. Threads s\u00e3o diferentes. As threads correm dentro de um processo e partilham a mesma mem\u00f3ria, pelo que n\u00e3o h\u00e1 qualquer problema com a partilha de threads <a href=\"https:\/\/thecodest.co\/pt\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">dados<\/a>.<\/p>\n<p>No entanto, h\u00e1 uma quest\u00e3o que causa um problema. \u00c9 a chamada condi\u00e7\u00e3o de corrida. As threads podem ser executadas ao mesmo tempo, por isso como \u00e9 que sabemos qual termina primeiro? Pode acontecer que, na primeira vez que a executamos, a primeira opera\u00e7\u00e3o termine primeiro e, na vez seguinte, pode acontecer o contr\u00e1rio e a segunda opera\u00e7\u00e3o terminar antes da primeira. Imagine trabalhar com opera\u00e7\u00f5es de escrita\/leitura nestas condi\u00e7\u00f5es! Um pesadelo! Por vezes \u00e9 muito dif\u00edcil escrever corretamente <a href=\"https:\/\/thecodest.co\/pt\/dictionary\/what-is-code-refactoring\/\">c\u00f3digo<\/a> num ambiente multi-threaded.<\/p>\n<p>Al\u00e9m disso, as linguagens multithread t\u00eam uma grande sobrecarga de mem\u00f3ria porque criam um thread separado para cada pedido; assim, se quiser chamar 1000 pedidos, criam 1000 threads.<\/p>\n<p>Como lidar com este problema? Utilizar um \u00fanico fio! E \u00e9 isso que <strong><a href=\"https:\/\/thecodest.co\/pt\/dictionary\/what-is-node-js-used-for\/\">N\u00f3<\/a><\/strong> oferece-lhe.<\/p>\n<p><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/eventloop.png\" alt=\"ciclo de eventos de um s\u00f3 segmento\" title=\"diagrama de ciclo de eventos \" \/><\/p>\n<p>Como <strong><a href=\"https:\/\/thecodest.co\/pt\/blog\/hire-javascript-developer\/\">Desenvolvedor JavaScript<\/a><\/strong> Encorajo-vos a ver o <a href=\"https:\/\/youtu.be\/PNa9OMajw9w\" rel=\"nofollow\">filme<\/a><br \/>\nem que Bart Belder explica claramente o conceito de ciclo de eventos. O diagrama acima foi retirado da sua apresenta\u00e7\u00e3o. E se n\u00e3o conhece estes termos, ambos <strong>N\u00f3<\/strong> e a Libuv tem uma excelente documenta\u00e7\u00e3o \ud83d\ude42<\/p>\n<h2>Sobre o bloqueio<\/h2>\n<p>Em <strong><a href=\"https:\/\/thecodest.co\/pt\/dictionary\/why-is-javascript-so-popular\/\">JavaScript<\/a> desenvolvimento<\/strong> ind\u00fastria dizem que porque <strong>N\u00f3<\/strong> \u00e9 single-threaded e n\u00e3o-bloqueante, \u00e9 poss\u00edvel obter uma maior simultaneidade com os mesmos recursos do que com solu\u00e7\u00f5es multi-threaded. \u00c9 verdade, mas n\u00e3o \u00e9 t\u00e3o bonito e f\u00e1cil como pode parecer.<\/p>\n<p>Desde <strong>Node.js<\/strong> \u00e9 de thread \u00fanico (<a href=\"https:\/\/thecodest.co\/pt\/blog\/hire-vue-js-developers\/\">JS<\/a> parte), as tarefas com uso intensivo de CPU bloquear\u00e3o todos os pedidos em curso at\u00e9 que a tarefa em causa esteja conclu\u00edda. Ent\u00e3o, \u00e9 verdade que em <strong>Node.js<\/strong> pode bloquear todos os pedidos s\u00f3 porque um deles tinha uma instru\u00e7\u00e3o de bloqueio no seu interior. O c\u00f3digo de bloqueio significa que demora mais do que alguns milissegundos a terminar. Mas n\u00e3o confunda tempo de resposta longo com bloqueio. A resposta da base de dados pode demorar muito tempo, mas n\u00e3o bloqueia o seu processo (aplica\u00e7\u00e3o).<\/p>\n<p>Os m\u00e9todos bloqueantes s\u00e3o executados de forma s\u00edncrona e os m\u00e9todos n\u00e3o bloqueantes s\u00e3o executados de forma ass\u00edncrona.<\/p>\n<p>Como \u00e9 que pode abrandar (ou bloquear) o seu ciclo de eventos?<\/p>\n<ul>\n<li>regex vulner\u00e1vel - uma express\u00e3o regular vulner\u00e1vel \u00e9 aquela em que o seu motor de express\u00e3o regular pode demorar um tempo exponencial; pode ler mais sobre elas  <a href=\"https:\/\/nodejs.org\/en\/docs\/guides\/dont-block-the-event-loop\/\" rel=\"nofollow\">aqui<\/a>,<\/li>\n<li>Opera\u00e7\u00f5es JSON em objectos de grandes dimens\u00f5es,<\/li>\n<li>utilizando APIs s\u00edncronas do <strong>N\u00f3 <\/strong>em vez de vers\u00f5es ass\u00edncronas; todos os m\u00e9todos de E\/S da biblioteca normalizada do Node.js fornecem tamb\u00e9m as suas vers\u00f5es ass\u00edncronas,<\/li>\n<li>outros erros de programa\u00e7\u00e3o, como os loops infinitos s\u00edncronos.<\/li>\n<\/ul>\n<p>Nesse caso, uma vez que o Worker Pool utiliza um conjunto de threads, \u00e9 poss\u00edvel bloque\u00e1-las tamb\u00e9m? Infelizmente, sim \ud83d\ude41<strong> N\u00f3<\/strong> baseia-se numa filosofia <code>um thread para muitos clientes.<\/code> Vamos supor que uma determinada tarefa executada por um Worker espec\u00edfico \u00e9 muito complexa e precisa de mais tempo para ser conclu\u00edda. Como resultado, o Worker fica bloqueado e n\u00e3o pode ser utilizado para executar qualquer uma das outras tarefas pendentes at\u00e9 que as suas instru\u00e7\u00f5es sejam executadas. Como j\u00e1 deve ter adivinhado, isso pode afetar o desempenho. \u00c9 poss\u00edvel evitar esses problemas minimizando a varia\u00e7\u00e3o nos tempos das tarefas usando o particionamento de tarefas.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>Evite o bloqueio, isso \u00e9 certo. Se puder, escolha sempre vers\u00f5es ass\u00edncronas das APIs da biblioteca padr\u00e3o. Caso contr\u00e1rio, depois de executar a sua aplica\u00e7\u00e3o, o cliente pode ter v\u00e1rios problemas, come\u00e7ando com a degrada\u00e7\u00e3o do d\u00e9bito e terminando com a desist\u00eancia total, o que \u00e9 fatal do ponto de vista do utilizador.<\/p>\n<p><article-inline-code-review><\/article-inline-code-review><\/p>\n<p><b>Ler mais:<\/b><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/why-you-should-probably-use-typescript\">Porque \u00e9 que deve (provavelmente) utilizar Typescript<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/how-not-to-kill-a-project-with-bad-coding-practices\/\">Como n\u00e3o matar um projeto com m\u00e1s pr\u00e1ticas de codifica\u00e7\u00e3o?<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/data-fetching-strategies-in-nextjs\/\">Estrat\u00e9gias de obten\u00e7\u00e3o de dados no NextJS<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>\"N\u00e3o bloqueie o loop de eventos...\" - provavelmente j\u00e1 ouviu esta frase muitas vezes... N\u00e3o me surpreende porque \u00e9 uma das premissas mais importantes quando se trabalha com Node. Mas h\u00e1 tamb\u00e9m uma segunda \"coisa\" que n\u00e3o deve ser bloqueada - o Worker Pool. Se for negligenciado, pode ter um impacto significativo no desempenho da aplica\u00e7\u00e3o e at\u00e9 na sua seguran\u00e7a.<\/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\/pt\/blogue\/a-mae-voltou-a-bloquear-topicos\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/blogue\/a-mae-voltou-a-bloquear-topicos\/\" \/>\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 minutos\" \/>\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\":\"pt-PT\",\"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\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/mom-he-blocked-threads-again\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@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\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@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\":\"pt-PT\",\"@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\\\/pt\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"M\u00c3E! Ele bloqueou os t\u00f3picos de novo! - 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\/pt\/blogue\/a-mae-voltou-a-bloquear-topicos\/","og_locale":"pt_PT","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\/pt\/blogue\/a-mae-voltou-a-bloquear-topicos\/","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 minutos"},"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":"pt-PT","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":"M\u00c3E! Ele bloqueou os t\u00f3picos de novo! - 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":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/mom-he-blocked-threads-again\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@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":"pt-PT"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@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":"pt-PT","@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\/pt\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/posts\/3459","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/comments?post=3459"}],"version-history":[{"count":5,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/posts\/3459\/revisions"}],"predecessor-version":[{"id":7929,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/posts\/3459\/revisions\/7929"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/media\/3460"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/media?parent=3459"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/categories?post=3459"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/tags?post=3459"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}