{"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":"mama-znowu-zablokowala-watki","status":"publish","type":"post","link":"https:\/\/thecodest.co\/pl\/blog\/mom-he-blocked-threads-again\/","title":{"rendered":"MAMO! Znowu zablokowa\u0142 w\u0105tki!"},"content":{"rendered":"<h2>Nici<\/h2>\n<p>Najwa\u017cniejsza rzecz do zapami\u0119tania: istniej\u0105 dwa rodzaje w\u0105tk\u00f3w w <strong><a href=\"https:\/\/thecodest.co\/pl\/blog\/find-your-node-js-expert-for-hire-today\/\">Node.js<\/a><\/strong>: G\u0142\u00f3wny w\u0105tek - kt\u00f3ry jest obs\u0142ugiwany przez <b>P\u0119tla zdarze\u0144<\/b>oraz <b>Pula pracownik\u00f3w<\/b> (pula w\u0105tk\u00f3w) - kt\u00f3ra jest pul\u0105 w\u0105tk\u00f3w -<br \/>\n<a href=\"http:\/\/docs.libuv.org\/en\/v1.x\/threadpool.html\" rel=\"nofollow\">dzi\u0119ki libuv<\/a>. Ka\u017cdy z nich ma inne zadanie. Celem pierwszego z nich jest obs\u0142uga nieblokuj\u0105cych operacji wej\u015bcia\/wyj\u015bcia, a drugi jest odpowiedzialny za intensywn\u0105 prac\u0119 procesora, a tak\u017ce blokowanie operacji wej\u015bcia\/wyj\u015bcia.<\/p>\n<p><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/libuv.png\" alt=\"schemat libuv\" title=\"sk\u0142adniki libuv\" \/><\/p>\n<p>Ale czym jest w\u0105tek i czym r\u00f3\u017cni si\u0119 od procesu? Istnieje kilka r\u00f3\u017cnic, ale najwa\u017cniejsz\u0105 z nich jest <a href=\"https:\/\/thecodest.co\/pl\/blog\/why-us-companies-are-opting-for-polish-developers\/\">my<\/a> jest spos\u00f3b przydzielania im pami\u0119ci. O procesie mo\u017cna my\u015ble\u0107 jak o aplikacji. Wewn\u0105trz ka\u017cdego procesu znajduje si\u0119 fragment pami\u0119ci przeznaczony tylko dla niego. Tak wi\u0119c jeden proces nie ma dost\u0119pu do pami\u0119ci drugiego, a ta w\u0142a\u015bciwo\u015b\u0107 zapewnia wysokie bezpiecze\u0144stwo. Aby ustanowi\u0107 komunikacj\u0119 mi\u0119dzy nimi, musimy wykona\u0107 pewn\u0105 prac\u0119. W\u0105tki s\u0105 inne. W\u0105tki dzia\u0142aj\u0105 wewn\u0105trz procesu i wsp\u00f3\u0142dziel\u0105 t\u0119 sam\u0105 pami\u0119\u0107, wi\u0119c nie ma \u017cadnego problemu z ich wsp\u00f3\u0142dzieleniem <a href=\"https:\/\/thecodest.co\/pl\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">dane<\/a>.<\/p>\n<p>Jednak jedna kwestia powoduje problem. Jest to tzw. warunek wy\u015bcigu. W\u0105tki mog\u0105 dzia\u0142a\u0107 w tym samym czasie, wi\u0119c sk\u0105d mamy wiedzie\u0107, kt\u00f3ry ko\u0144czy si\u0119 pierwszy? Mo\u017ce si\u0119 zdarzy\u0107, \u017ce przy pierwszym uruchomieniu pierwsza operacja zako\u0144czy si\u0119 jako pierwsza, a nast\u0119pnym razem mo\u017ce by\u0107 odwrotnie i druga operacja zako\u0144czy si\u0119 przed pierwsz\u0105. Wyobra\u017a sobie prac\u0119 z operacjami zapisu\/odczytu w takich warunkach! Koszmar! Czasami bardzo trudno jest napisa\u0107 poprawne <a href=\"https:\/\/thecodest.co\/pl\/dictionary\/what-is-code-refactoring\/\">kod<\/a> w \u015brodowisku wielow\u0105tkowym.<\/p>\n<p>Ponadto j\u0119zyki wielow\u0105tkowe maj\u0105 du\u017cy narzut pami\u0119ciowy, poniewa\u017c tworz\u0105 osobny w\u0105tek dla ka\u017cdego \u017c\u0105dania; wi\u0119c je\u015bli chcesz wywo\u0142a\u0107 1000 \u017c\u0105da\u0144, tworz\u0105 1000 w\u0105tk\u00f3w.<\/p>\n<p>Jak poradzi\u0107 sobie z takim problemem? Zamiast tego u\u017cy\u0107 pojedynczego w\u0105tku! I to jest w\u0142a\u015bnie to <strong><a href=\"https:\/\/thecodest.co\/pl\/dictionary\/what-is-node-js-used-for\/\">W\u0119ze\u0142<\/a><\/strong> oferuje.<\/p>\n<p><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/eventloop.png\" alt=\"jednow\u0105tkowa p\u0119tla zdarze\u0144\" title=\"Diagram p\u0119tli zdarze\u0144 \" \/><\/p>\n<p>Jako <strong><a href=\"https:\/\/thecodest.co\/pl\/blog\/hire-javascript-developer\/\">Deweloper JavaScript<\/a><\/strong> Zach\u0119cam do obejrzenia <a href=\"https:\/\/youtu.be\/PNa9OMajw9w\" rel=\"nofollow\">film<\/a><br \/>\nw kt\u00f3rym Bart Belder jasno wyja\u015bnia koncepcj\u0119 p\u0119tli zdarze\u0144. Powy\u017cszy diagram pochodzi z jego prezentacji. A je\u015bli w og\u00f3le nie znasz tych termin\u00f3w, zar\u00f3wno <strong>W\u0119ze\u0142<\/strong> Libuv i Libuv maj\u0105 doskona\u0142\u0105 dokumentacj\u0119 \ud83d\ude42<\/p>\n<h2>O blokowaniu<\/h2>\n<p>W <strong><a href=\"https:\/\/thecodest.co\/pl\/dictionary\/why-is-javascript-so-popular\/\">JavaScript<\/a> rozw\u00f3j<\/strong> m\u00f3wi\u0105, \u017ce poniewa\u017c <strong>W\u0119ze\u0142<\/strong> jest jednow\u0105tkowa i nieblokuj\u0105ca, mo\u017cna osi\u0105gn\u0105\u0107 wy\u017csz\u0105 wsp\u00f3\u0142bie\u017cno\u015b\u0107 przy tych samych zasobach ni\u017c w przypadku rozwi\u0105za\u0144 wielow\u0105tkowych. To prawda, ale nie jest to tak pi\u0119kne i \u0142atwe, jak mog\u0142oby si\u0119 wydawa\u0107.<\/p>\n<p>Od <strong>Node.js<\/strong> jest jednow\u0105tkowa (<a href=\"https:\/\/thecodest.co\/pl\/blog\/hire-vue-js-developers\/\">JS<\/a> ), zadania wymagaj\u0105ce du\u017cej mocy obliczeniowej procesora b\u0119d\u0105 blokowa\u0107 wszystkie trwaj\u0105ce \u017c\u0105dania do czasu zako\u0144czenia danego zadania. Tak wi\u0119c prawd\u0105 jest, \u017ce w <strong>Node.js<\/strong> mo\u017cna zablokowa\u0107 ka\u017cde \u017c\u0105danie tylko dlatego, \u017ce jedno z nich zawiera\u0142o instrukcj\u0119 blokuj\u0105c\u0105. Kod blokuj\u0105cy oznacza, \u017ce jego zako\u0144czenie zajmuje wi\u0119cej ni\u017c kilka milisekund. Nie nale\u017cy jednak myli\u0107 d\u0142ugiego czasu odpowiedzi z blokowaniem. Odpowied\u017a z bazy danych mo\u017ce trwa\u0107 bardzo d\u0142ugo, ale nie blokuje procesu (aplikacji).<\/p>\n<p>Metody blokuj\u0105ce s\u0105 wykonywane synchronicznie, a metody nieblokuj\u0105ce s\u0105 wykonywane asynchronicznie.<\/p>\n<p>Jak spowolni\u0107 (lub zablokowa\u0107) p\u0119tl\u0119 zdarze\u0144?<\/p>\n<ul>\n<li>podatne wyra\u017cenie regularne - podatne wyra\u017cenie regularne to takie, na kt\u00f3rym silnik wyra\u017ce\u0144 regularnych mo\u017ce zaj\u0105\u0107 wyk\u0142adniczy czas; mo\u017cesz przeczyta\u0107 o nich wi\u0119cej  <a href=\"https:\/\/nodejs.org\/en\/docs\/guides\/dont-block-the-event-loop\/\" rel=\"nofollow\">tutaj<\/a>,<\/li>\n<li>Operacje JSON na du\u017cych obiektach,<\/li>\n<li>przy u\u017cyciu synchronicznych interfejs\u00f3w API z <strong>W\u0119ze\u0142 <\/strong>zamiast wersji asynchronicznych; wszystkie metody I\/O w bibliotece standardowej Node.js zapewniaj\u0105 r\u00f3wnie\u017c ich wersje asynchroniczne,<\/li>\n<li>inne b\u0142\u0119dy programistyczne, takie jak synchroniczne niesko\u0144czone p\u0119tle.<\/li>\n<\/ul>\n<p>W takim przypadku, skoro Worker Pool korzysta z puli w\u0105tk\u00f3w, czy mo\u017cliwe jest ich zablokowanie? Niestety tak \ud83d\ude41<strong> W\u0119ze\u0142<\/strong> opiera si\u0119 na filozofii <code>jeden w\u0105tek dla wielu klient\u00f3w.<\/code> Za\u0142\u00f3\u017cmy, \u017ce dane zadanie wykonywane przez konkretnego Workera jest bardzo z\u0142o\u017cone i wymaga wi\u0119cej czasu na jego uko\u0144czenie. W rezultacie Worker zostaje zablokowany i nie mo\u017cna go u\u017cy\u0107 do wykonania \u017cadnego z innych oczekuj\u0105cych zada\u0144, dop\u00f3ki jego instrukcje nie zostan\u0105 wykonane. Jak ju\u017c zapewne si\u0119 domy\u015bli\u0142e\u015b, mo\u017ce to mie\u0107 wp\u0142yw na wydajno\u015b\u0107. Mo\u017cesz zapobiec takim problemom, minimalizuj\u0105c r\u00f3\u017cnice w czasach zada\u0144 za pomoc\u0105 partycjonowania zada\u0144.<\/p>\n<h2>Wnioski<\/h2>\n<p>Unikaj blokowania, to na pewno. Je\u015bli tylko mo\u017cesz, zawsze wybieraj asynchroniczne wersje standardowych API bibliotek. W przeciwnym razie po uruchomieniu aplikacji klient mo\u017ce do\u015bwiadczy\u0107 kilku problem\u00f3w, zaczynaj\u0105c od obni\u017conej przepustowo\u015bci, a ko\u0144cz\u0105c na ca\u0142kowitym wycofaniu, co jest fatalne z punktu widzenia u\u017cytkownika.<\/p>\n<p><article-inline-code-review><\/article-inline-code-review><\/p>\n<p><b>Czytaj wi\u0119cej:<\/b><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/why-you-should-probably-use-typescript\">Dlaczego (prawdopodobnie) powiniene\u015b u\u017cywa\u0107 Typescript<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/how-not-to-kill-a-project-with-bad-coding-practices\/\">Jak nie zabi\u0107 projektu z\u0142ymi praktykami kodowania?<\/a><\/p>\n<p><a href=\"https:\/\/thecodest.co\/blog\/data-fetching-strategies-in-nextjs\/\">Strategie pobierania danych w NextJS<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>\"Nie blokuj p\u0119tli zdarze\u0144...\" - zapewne s\u0142ysza\u0142e\u015b to zdanie wiele razy... Nie dziwi\u0119 si\u0119, poniewa\u017c jest to jedno z najwa\u017cniejszych za\u0142o\u017ce\u0144 podczas pracy z Node. Ale jest te\u017c druga \"rzecz\", kt\u00f3rej nie nale\u017cy blokowa\u0107 - Worker Pool. Jej zaniedbanie mo\u017ce mie\u0107 znacz\u0105cy wp\u0142yw na wydajno\u015b\u0107 aplikacji, a nawet jej bezpiecze\u0144stwo.<\/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\/pl\/blog\/mama-znowu-zablokowala-watki\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\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\/pl\/blog\/mama-znowu-zablokowala-watki\/\" \/>\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 minuty\" \/>\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\":\"pl-PL\",\"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\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/mom-he-blocked-threads-again\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@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\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@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\":\"pl-PL\",\"@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\\\/pl\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"MAMO! Znowu zablokowa\u0142 w\u0105tki! - 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\/pl\/blog\/mama-znowu-zablokowala-watki\/","og_locale":"pl_PL","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\/pl\/blog\/mama-znowu-zablokowala-watki\/","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 minuty"},"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":"pl-PL","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":"MAMO! Znowu zablokowa\u0142 w\u0105tki! - 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":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/mom-he-blocked-threads-again\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@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":"pl-PL"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@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":"pl-PL","@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\/pl\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/pl\/wp-json\/wp\/v2\/posts\/3459","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/pl\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/pl\/wp-json\/wp\/v2\/comments?post=3459"}],"version-history":[{"count":5,"href":"https:\/\/thecodest.co\/pl\/wp-json\/wp\/v2\/posts\/3459\/revisions"}],"predecessor-version":[{"id":7929,"href":"https:\/\/thecodest.co\/pl\/wp-json\/wp\/v2\/posts\/3459\/revisions\/7929"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/pl\/wp-json\/wp\/v2\/media\/3460"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/pl\/wp-json\/wp\/v2\/media?parent=3459"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/pl\/wp-json\/wp\/v2\/categories?post=3459"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/pl\/wp-json\/wp\/v2\/tags?post=3459"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}