{"id":9977,"date":"2022-04-28T16:02:07","date_gmt":"2022-04-28T14:02:07","guid":{"rendered":"https:\/\/vived.io\/frontend-thursday-vol-85\/"},"modified":"2022-09-19T13:16:29","modified_gmt":"2022-09-19T11:16:29","slug":"frontend-thursday-vol-85","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/","title":{"rendered":"Frontend Thursday vol. 85 &#8211; Jest 28, Remotion 3,0 i nowo\u015bci w Deno"},"content":{"rendered":"\n<h2 id=\"1-jest-28\" data-num=1>1. Jest 28<\/h2>\n\n\n\n<p>Wok\u00f3\u0142 testowania JavaScriptu ostatnio sporo si\u0119 dzia\u0142o. Do najnowszego Node.js 18 trafi\u0142 natywny test runner (na razie jako experimental feature), kt\u00f3ry umo\u017cliwia pisanie test\u00f3w bez zaci\u0105gania dodatkowych bibliotek. Ostatnio coraz wi\u0119ksz\u0105 popularno\u015bci\u0105 zaczyna si\u0119 cieszy\u0107 r\u00f3wnie\u017c biblioteka Vitest. Pomimo tego, \u017ce zosta\u0142a ona stworzona z my\u015bl\u0105 o programistach korzystaj\u0105cych z Vite, jest alternatyw\u0105 drop-in dla Jesta i nie odbiega od niego funkcjonalno\u015bciami.<\/p>\n\n\n\n<p>Alternatywne test runnery rosn\u0105 w tle dyskusji o wsparciu (a raczej jego braku) dla Jest ze strony Mety. <a href=\"https:\/\/github.com\/facebook\/jest\/pull\/11529#issuecomment-1027405616\">Jak t\u0142umaczy autor Jest<\/a> &#8211; Simen Bekkhus &#8211; brak wsparcia ze strony du\u017cych korporacji jest jego \u015bwiadom\u0105 decyzj\u0105. Pobieranie sta\u0142ej pensji sprawi\u0142oby, \u017ce czu\u0142by si\u0119 on zobligowany do pracy nad Jest, kt\u00f3rego traktuje jako projekt poboczny. Nie jest to raczej odpowied\u017a, kt\u00f3rej oczekuje community jednej z najpopularniejszych frontendowych bibliotek.<\/p>\n\n\n\n<p>Fakt, \u017ce Jest rozwijany jest powoli nie oznacza, \u017ce nie jest rozwijany wcale. W ko\u0144cu nad projektem pracuje nie tylko Simen, ale ca\u0142a spo\u0142eczno\u015b\u0107 Open Source. Kolejne wersje biblioteki od kilku lat otrzymujemy jak w zegarku na prze\u0142omie kwietnia i maja. Nie inaczej jest r\u00f3wnie\u017c i w tym roku, bo w minionym tygodniu opublikowany zosta\u0142 Jest 28. Nowo\u015bci jest ca\u0142kiem sporo, dlatego zapraszam Was na kr\u00f3tk\u0105 wycieczk\u0119 po nowych funkcjonalno\u015bciach.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"507\" height=\"500\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/6e6a7l.jpeg\" alt=\"\" class=\"wp-image-4287\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/6e6a7l.jpeg 507w, https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/6e6a7l-300x296.jpeg 300w\" sizes=\"auto, (max-width: 507px) 100vw, 507px\" \/><\/figure><\/div>\n\n\n\n<p>Pierwszym przystankiem naszej podr\u00f3\u017cy b\u0119dzie jedna z rzeczy, kt\u00f3ra w Jest 28 widoczna jest ju\u017c na pierwszy rzut oka &#8211; paczka zosta\u0142a odchudzona o oko\u0142o 30%. Redukcja spowodowana jest usuni\u0119ciem pakiet\u00f3w takich jak `jest-environment-jsdom` czy `jest-jasmine2` z domy\u015blnej paczki. Je\u015bli psuje Wam to szyki, no to c\u00f3\u017c &#8211; Wasza wina. Usuni\u0119cie paczek zosta\u0142o zapowiedziane prawie rok temu przy okazji releasu Jest 27.<\/p>\n\n\n\n<p>Zapraszam z powrotem na pok\u0142ad, gdy\u017c wyruszamy przygl\u0105dn\u0105\u0107 si\u0119 kolejnej nowej funkcjonalno\u015bci. Do Jest 28 trafi\u0142a flaga `&#8211;shard`, kt\u00f3ra umo\u017cliwia podzielenie uruchamianych test\u00f3w na kilka maszyn. Nie spodziewajcie si\u0119 jednak skomplikowanego mechanizmu odpowiedzialny za komunikacj\u0119 mi\u0119dzy maszynami i load-balancingu. Nowa flaga pozwala po prostu podzieli\u0107 w deterministyczny spos\u00f3b testy na N cz\u0119\u015bci i wykona\u0107 wybran\u0105 cz\u0119\u015b\u0107.<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-\">jest --shard=1\/3\njest --shard=2\/3\njest --shard=3\/3<\/code><\/pre>\n\n\n\n<p>Przed nami ostatni przystanek naszej wycieczki. Po naszej sterburcie mijamy usprawnione Fake Timers. W Jest 27 fake timers zosta\u0142y znacznie usprawnione poprzez wykorzystanie biblioteki `@sinonjs\/fake-timers`. W Jest 28 poczyniono kolejny krok w prz\u00f3d i zdecydowano si\u0119 udost\u0119pni\u0107 bezpo\u015brednio jeszcze wi\u0119cej metod wykorzystywanej w bebechach biblioteki.<\/p>\n\n\n\n<p>Zanim przybijamy do brzegu warto zwr\u00f3ci\u0107 jeszcze uwag\u0119 na pomniejsze poprawki i usprawnienia. W\u015br\u00f3d nich znajdziemy mi\u0119dzy innymi dedykowany GitHub Actions Reporter, mo\u017cliwo\u015b\u0107 definiowania konfiguracji \u015brodowiska jako inline komentarze w testach, czy nowy odchudzony test runner `jest-light-runner`.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"480\" height=\"480\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/giphy-12.gif\" alt=\"\" class=\"wp-image-4288\"\/><figcaption>Czytelnicy Frontend Weekly zwiedzaj\u0105cy nowe funkcjonalno\u015bci Jest wraz z autorem przegl\u0105d\u00f3w.<\/figcaption><\/figure><\/div>\n\n\n\n<p>Tak oto dotarli\u015bmy do ko\u0144ca naszej kr\u00f3tkiej wycieczki. Na zako\u0144czenie wspomn\u0119 jeszcze, \u017ce na kolejn\u0105 wypraw\u0119 b\u0119d\u0119 mia\u0142 okazj\u0119 zaprosi\u0107 Pa\u0144stwa zdecydowanie wcze\u015bniej, ni\u017c przy okazji maj\u00f3wki 2023. Jak zapowiada zesp\u00f3\u0142 rozwijaj\u0105cy Jest, na wersj\u0119 29 przyjdzie nam poczeka\u0107 tylko kilka miesi\u0119cy, zamiast okr\u0105g\u0142ego roku. Przy\u015bpieszony development kontrastuje z wspomnian\u0105 w pierwszych akapitach wypowiedzi\u0105 Simena Hekkhus, ale nie pozostaje nam nic innego, ni\u017c oczekiwa\u0107 na spe\u0142nienie obietnic.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a:<\/h3>\n\n\n\n<p><a href=\"https:\/\/jestjs.io\/blog\/2022\/04\/25\/jest-28\">https:\/\/jestjs.io\/blog\/2022\/04\/25\/jest-28<br><\/a><a href=\"https:\/\/news.ycombinator.com\/item?id=30168241\">https:\/\/news.ycombinator.com\/item?id=30168241<br><\/a><a href=\"https:\/\/github.com\/facebook\/jest\/pull\/11529#issuecomment-1027152470\">https:\/\/github.com\/facebook\/jest\/pull\/11529#issuecomment-1027152470<\/a><br><a href=\"https:\/\/github.com\/facebook\/jest\/pull\/11529#issuecomment-1027405616\">https:\/\/github.com\/facebook\/jest\/pull\/11529#issuecomment-1027405616<\/a><br><a href=\"https:\/\/vitest.dev\/guide\/why.html\">https:\/\/vitest.dev\/guide\/why.html<\/a><br><a href=\"https:\/\/nodejs.org\/en\/blog\/announcements\/v18-release-announce\/\">https:\/\/nodejs.org\/en\/blog\/announcements\/v18-release-announce\/<\/a><\/p>\n\n\n\n<h2 id=\"2-remotion-3\" data-num=2>2. Remotion 3<\/h2>\n\n\n\n<p>Remotion to biblioteka pozwalaj\u0105ca tworzy\u0107 wideo przy u\u017cyciu Reacta, kt\u00f3ra rok temu szturmem przebi\u0142a si\u0119 do wszystkich nag\u0142\u00f3wk\u00f3w JavaScriptiowych newsletter\u00f3w (<a href=\"https:\/\/vived.io\/frontend-thursday-vol-24\/\">w tym r\u00f3wnie\u017c i naszego<\/a>). Ca\u0142o\u015b\u0107 oparta jest o niezwykle proste w swoich za\u0142o\u017ceniach API.&nbsp; Najpierw tworzymy komponent `Composition`, do kt\u00f3rego przekazujemy podstawowe dane, takie jak wysoko\u015b\u0107 i szeroko\u015b\u0107 w pikselach, czy po\u017c\u0105dane FPS-y. Do komponentu&nbsp; `Composition` przekazujemy r\u00f3wnie\u017c w\u0142asny komponent odpowiedzialny za wyrenderowanie filmu. W komponencie tym dost\u0119pny jest hook `useCurrentFrame()`, kt\u00f3ry zwraca aktualnie renderowan\u0105 klatk\u0119 animiacji.<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-javascript\">const MyVideo = () =&gt; {\n  const frame = useCurrentFrame();\n  const opacity = frame &gt;= 20 ? 1 : (frame \/ 20);\n  return (\n    &lt;div style={{\n      flex: 1,\n      justifyContent: &#039;center&#039;,\n      alignItems: &#039;center&#039;,\n      opacity: opacity\n    }}&gt;\n      Hello World!\n    &lt;\/div&gt;\n  )\n}\nexport const RemotionVideo: React.FC = () =&gt; {\n  return (\n    &lt;&gt;\n      &lt;Composition\n        id=&quot;MyVideo&quot;\n        component={MyVideo}\n        durationInFrames={150}\n        fps={30}\n        width={1920}\n        height={1080}\n      \/&gt;\n    &lt;\/&gt;\n  );\n};<\/code><\/pre>\n\n\n\n<p>Kiedy Remotion po raz pierwszy podbi\u0142 internet by\u0142em co do niego bardzo sceptyczny. Na pierwszy rzut oka narz\u0119dzie by\u0142o innowacyjne, ale po g\u0142\u0119bszym przygl\u0105dni\u0119ciu si\u0119 ca\u0142o\u015bci ci\u0119\u017cko by\u0142o mi znale\u017a\u0107 jego docelowych odbiorc\u00f3w. Do montowania kr\u00f3tkich pokaz\u00f3wek zdecydowanie lepiej nadaj\u0105 si\u0119 dedykowane do tego programy. Nawet je\u015bli musimy nauczy\u0107 si\u0119 ich obs\u0142ugi od podstaw, to skorzystanie z nich zazwyczaj oka\u017ce si\u0119 szybsze bior\u0105c pod uwag\u0119 ich przyst\u0119pno\u015b\u0107. Pisanie CSS-\u00f3w nie jest w ko\u0144cu najszybszym sposobem opisywania pojedynczej klatki filmu.<\/p>\n\n\n\n<p>Jedyn\u0105 nadziej\u0105 dla Remotion by\u0142o osadzenie rozwi\u0105zania na serwerze. Takie zastosowanie pozwala na generowane wideo, kt\u00f3re mo\u017ce by\u0107 w prosty spos\u00f3b personalizowane przez programist\u00f3w. Jak na razie Remotion na swojej stronie chwali si\u0119 jedn\u0105 histori\u0105 firmy, kt\u00f3ra skorzysta\u0142a z biblioteki. MakeStories to produkt, kt\u00f3ry umo\u017cliwia tworzenie Web Stories przez prosty interfejs typu drag-and-drop. Jednym z wyzwa\u0144 przed jakimi stan\u0105\u0142 projekt by\u0142o umo\u017cliwienie eksportu stworzonych stories do formatu wideo, kt\u00f3ry obs\u0142ugiwany jest przez wi\u0119kszo\u015b\u0107 platform. Remotion okaza\u0142 si\u0119 by\u0107 narz\u0119dziem wr\u0119cz idealnym do rozwi\u0105zania tego problemu &#8211; istniej\u0105cy ju\u017c generator eksportowa\u0142 kod JavaScript, kt\u00f3ry wystarczy\u0142o tylko odpowiednio opakowa\u0107 w API biblioteki.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"464\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/giphy-15.gif\" alt=\"\" class=\"wp-image-4293\"\/><figcaption>Je\u015bli to jest Wasza reakcja na wie\u015b\u0107 o Web Stories to ju\u017c \u015bpiesz\u0119 z odpowiedzi\u0105. Web Stories s\u0105 webow\u0105 postaci\u0105 popularnych Stories znanych z platform spo\u0142eczno\u015bciowych. Poprzez odpowiednie ich oznaczenie metadanymi Google jest w stanie je indeksowa\u0107 oraz odpowiednio wy\u015bwietla\u0107 w wynikach wyszukiwania. Je\u015bli chcecie sprawdzi\u0107 sami to wpiszcie w Google na telefonie \u201c<a href=\"https:\/\/www.google.com\/search?q=How+Pigeons+Are+Inspiring+The+Fututre+of+Flight&amp;rlz=1C5CHFA_enPL848PL848&amp;oq=How+Pigeons+Are+Inspiring+The+Fututre+of+Flight&amp;aqs=chrome..69i57j33i10i160.257j0j1&amp;sourceid=chrome&amp;ie=UTF-8\">How Pigeons Are Inspiring The Future of Flight<\/a>\u201d i kliknijcie w obrazek przy pierwszym linku.<\/figcaption><\/figure><\/div>\n\n\n\n<p>Nie jestem pewien, czy na rynku znajdzie si\u0119 wi\u0119cej aplikacji, w kt\u00f3re Remotion wpasuje si\u0119 tak idealnie. Je\u015bli tak, to Remotion 3.0 sprawia, \u017ce integracja b\u0119dzie jeszcze prostsza. Do najnowszej wersji trafi\u0142o bowiem wsp\u00f3\u0142bie\u017cne renderowanie oparte o AWS Lambda. Stosuj\u0105c now\u0105 architektur\u0119 mo\u017cemy przy\u015bpieszy\u0107 czas renderowania nawet o 70%.<\/p>\n\n\n\n<p>Jak to zwykle w \u017cyciu bywa najwa\u017cniejsze informacje zapisane s\u0105 drobnym druczkiem. Czytaj\u0105c dokumentacj\u0119 nowej architektury natrafi\u0142em na sekcj\u0119 dotycz\u0105c\u0105 ogranicze\u0144. Na obecn\u0105 chwil\u0119 za pomoc\u0105 architektury Serverless nie mo\u017cemy generowa\u0107 wi\u0119cej ni\u017c godziny wideo na minut\u0119 i wideo d\u0142u\u017cszych ni\u017c 2 godziny. Dla mniejszych produkt\u00f3w prawdopodobnie nie b\u0119dzie to problem, ale dla takich dzia\u0142aj\u0105cych na du\u017c\u0105 skal\u0119 b\u0119dzie to deal breaker. Nadal mo\u017cemy samodzielnie skonfigurowa\u0107 Remotion na serwerze, ale zdecydowanie umniejsza to nowej funkcjonalno\u015bci w moich oczach.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a:<\/h3>\n\n\n\n<p><a href=\"https:\/\/www.remotion.dev\/docs\/lambda\">https:\/\/www.remotion.dev\/docs\/lambda<\/a><\/p>\n\n\n\n<h2 id=\"3-deno-na-supabase-functions-i-netlify-edge-functions\" data-num=3>3. Deno na Supabase Functions i Netlify Edge Functions<\/h2>\n\n\n\n<p>W naszych przegl\u0105dach sporo pisali\u015bmy ostatnio o Node.js, dlatego teraz przysz\u0142a pora podsumowa\u0107 sobie co w mi\u0119dzyczasie dzia\u0142o si\u0119 u najwi\u0119kszego konkurenta w postaci Deno. Kilka ostatnich wersji nie przynios\u0142o zbyt ekscytuj\u0105cych nowo\u015bci. Mia\u017cd\u017c\u0105ca&nbsp; wi\u0119kszo\u015b\u0107 og\u0142aszanych zmian to usprawnienia istniej\u0105cych API (m.in. Web Cryptography API czy FFI API). W\u015br\u00f3d nowo\u015bci na wyr\u00f3\u017cnienie zas\u0142uguje optymalizacja zapyta\u0144 do Rusta o prawie 60% i dodanie metody Deno.bench, kt\u00f3ra pozwala pisa\u0107 performance testy pisanego kodu. Interesuj\u0105co wygl\u0105da te\u017c rozdzielenie uruchamiania kodu od sprawdzania poprawno\u015bci typ\u00f3w. Do tej pory oba procesy by\u0142y nieod\u0142\u0105cznie ze sob\u0105 zwi\u0105zane, co skutkowa\u0142o d\u0142ugim czasem uruchomienia aplikacji. Jak twierdz\u0105 autorzy zmiany, wi\u0119kszo\u015b\u0107 programist\u00f3w wykorzystuje IDE oraz procesy CI do sprawdzania poprawno\u015bci typ\u00f3w i walidacja przed uruchomieniem jest zb\u0119dna.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"581\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/feature_01.jpeg\" alt=\"\" class=\"wp-image-4290\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/feature_01.jpeg 800w, https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/feature_01-300x218.jpeg 300w, https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/feature_01-768x558.jpeg 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure><\/div>\n\n\n\n<p>Nie zebra\u0142em Was tu jednak, \u017ceby rozmawia\u0107 o nowo\u015bciach w Deno. Na przestrzeni ostatnich tygodni Deno otrzyma\u0142o wsparcie na dw\u00f3ch rozpoznawalnych platformach chmurowych. Pierwsza z nich to Supabase, czyli otwarto\u017ar\u00f3d\u0142owa alternatywa dla Firebase. Ich najnowszy produkt Edge Functions pozwala uruchamia\u0107 kod serwerowy na maszynach znajduj\u0105cych si\u0119 jak najbli\u017cej u\u017cytkownika. Co istotnie architektura w ca\u0142o\u015bci oparta jest o Deno Deploy, czyli chmur\u0119 na kt\u00f3rej zarabia\u0107 pr\u00f3buje startup rozwijaj\u0105cy Deno. Jak zapewniaj\u0105 chmura od Deno sprawdza si\u0119 tutaj du\u017co lepiej ni\u017c AWS.<\/p>\n\n\n\n<p>Drug\u0105 platform\u0105, kt\u00f3ra otrzyma\u0142a wsparcie dla Deno jest Netlify. Co ciekawe, wsparcie dotyczy analogicznej funkcjonalno\u015bci jak w przypadku Supabase i na ten moment r\u00f3wnie\u017c wspiera ekskluzywnie tylko Deno. Jedyna r\u00f3\u017cnica polega na tym, \u017ce w notce od Netlify nie znalaz\u0142em informacji o wykorzystaniu chmury Deno.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a:<\/h3>\n\n\n\n<p><a href=\"https:\/\/www.netlify.com\/blog\/announcing-serverless-compute-with-edge-functions\/\">https:\/\/www.netlify.com\/blog\/announcing-serverless-compute-with-edge-functions\/<\/a><br><a href=\"https:\/\/supabase.com\/blog\/2022\/03\/31\/supabase-edge-functions\">https:\/\/supabase.com\/blog\/2022\/03\/31\/supabase-edge-functions<\/a><br><a href=\"https:\/\/deno.com\/blog\/v1.21\">https:\/\/deno.com\/blog\/v1.21<\/a><br><a href=\"https:\/\/deno.com\/blog\/v1.20\">https:\/\/deno.com\/blog\/v1.20<\/a><br><a href=\"https:\/\/deno.com\/blog\/v1.19\">https:\/\/deno.com\/blog\/v1.19<\/a><br><a href=\"https:\/\/deno.com\/blog\/v1.18\">https:\/\/deno.com\/blog\/v1.18<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tradycyjnie ju\u017c na prze\u0142omie kwietnia i maja ukaza\u0142 si\u0119 nowy Jest. W tego tygodniowej edycji przygl\u0105damy si\u0119 r\u00f3wnie\u017c temu jak rozwin\u0119\u0142a si\u0119 w ostatnim roku biblioteka Remotion i co w ostatnich tygodniach dzia\u0142o si\u0119 w \u015brodowisku Deno. <\/p>\n","protected":false},"author":12,"featured_media":8069,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[273],"tags":[],"class_list":["post-9977","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-frontend-pl"],"acf":{"weekly_summary":true,"push_notification_image":"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/FRONTEND-3.png","feature_image_visible":false,"estimated_reading_time":"7","feature_image_blog":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Frontend Thursday vol. 85 - Jest 28, Remotion 3,0 i nowo\u015bci w Deno - Vived<\/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:\/\/vived.io\/pl\/frontend-thursday-vol-85\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Frontend Thursday vol. 85 - Jest 28, Remotion 3,0 i nowo\u015bci w Deno - Vived\" \/>\n<meta property=\"og:description\" content=\"Tradycyjnie ju\u017c na prze\u0142omie kwietnia i maja ukaza\u0142 si\u0119 nowy Jest. W tego tygodniowej edycji przygl\u0105damy si\u0119 r\u00f3wnie\u017c temu jak rozwin\u0119\u0142a si\u0119 w ostatnim roku biblioteka Remotion i co w ostatnich tygodniach dzia\u0142o si\u0119 w \u015brodowisku Deno.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2022-04-28T14:02:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:16:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/FRONTEND-3.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Tomasz Borowicz\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/FRONTEND-3.png\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/\"},\"author\":{\"name\":\"Tomasz Borowicz\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/9d2a72fe7d0dfbb4092675afbab742bb\"},\"headline\":\"Frontend Thursday vol. 85 &#8211; Jest 28, Remotion 3,0 i nowo\u015bci w Deno\",\"datePublished\":\"2022-04-28T14:02:07+00:00\",\"dateModified\":\"2022-09-19T11:16:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/\"},\"wordCount\":1493,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/opengraph.png\",\"articleSection\":[\"Frontend\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/\",\"url\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/\",\"name\":\"Frontend Thursday vol. 85 - Jest 28, Remotion 3,0 i nowo\u015bci w Deno - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/opengraph.png\",\"datePublished\":\"2022-04-28T14:02:07+00:00\",\"dateModified\":\"2022-09-19T11:16:29+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/opengraph.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/opengraph.png\",\"width\":796,\"height\":416},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Frontend Thursday vol. 85 &#8211; Jest 28, Remotion 3,0 i nowo\u015bci w Deno\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/vived.io\/pl\/#website\",\"url\":\"https:\/\/vived.io\/pl\/\",\"name\":\"Vived\",\"description\":\"platform empowering IT people and technology companies to synergic growth\",\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/vived.io\/pl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/vived.io\/pl\/#organization\",\"name\":\"Vived\",\"url\":\"https:\/\/vived.io\/pl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"width\":136,\"height\":45,\"caption\":\"Vived\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/9d2a72fe7d0dfbb4092675afbab742bb\",\"name\":\"Tomasz Borowicz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/804536d2672538508d43f60ad2108e5aaea76c192653eaf95d4c3934b7d1dbb6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/804536d2672538508d43f60ad2108e5aaea76c192653eaf95d4c3934b7d1dbb6?s=96&d=mm&r=g\",\"caption\":\"Tomasz Borowicz\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Frontend Thursday vol. 85 - Jest 28, Remotion 3,0 i nowo\u015bci w Deno - Vived","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:\/\/vived.io\/pl\/frontend-thursday-vol-85\/","og_locale":"pl_PL","og_type":"article","og_title":"Frontend Thursday vol. 85 - Jest 28, Remotion 3,0 i nowo\u015bci w Deno - Vived","og_description":"Tradycyjnie ju\u017c na prze\u0142omie kwietnia i maja ukaza\u0142 si\u0119 nowy Jest. W tego tygodniowej edycji przygl\u0105damy si\u0119 r\u00f3wnie\u017c temu jak rozwin\u0119\u0142a si\u0119 w ostatnim roku biblioteka Remotion i co w ostatnich tygodniach dzia\u0142o si\u0119 w \u015brodowisku Deno.","og_url":"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/","og_site_name":"Vived","article_published_time":"2022-04-28T14:02:07+00:00","article_modified_time":"2022-09-19T11:16:29+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/FRONTEND-3.png","type":"image\/png"}],"author":"Tomasz Borowicz","twitter_card":"summary_large_image","twitter_image":"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/FRONTEND-3.png","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/"},"author":{"name":"Tomasz Borowicz","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/9d2a72fe7d0dfbb4092675afbab742bb"},"headline":"Frontend Thursday vol. 85 &#8211; Jest 28, Remotion 3,0 i nowo\u015bci w Deno","datePublished":"2022-04-28T14:02:07+00:00","dateModified":"2022-09-19T11:16:29+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/"},"wordCount":1493,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/opengraph.png","articleSection":["Frontend"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/","url":"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/","name":"Frontend Thursday vol. 85 - Jest 28, Remotion 3,0 i nowo\u015bci w Deno - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/opengraph.png","datePublished":"2022-04-28T14:02:07+00:00","dateModified":"2022-09-19T11:16:29+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/opengraph.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/opengraph.png","width":796,"height":416},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-85\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"Frontend Thursday vol. 85 &#8211; Jest 28, Remotion 3,0 i nowo\u015bci w Deno"}]},{"@type":"WebSite","@id":"https:\/\/vived.io\/pl\/#website","url":"https:\/\/vived.io\/pl\/","name":"Vived","description":"platform empowering IT people and technology companies to synergic growth","publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vived.io\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/vived.io\/pl\/#organization","name":"Vived","url":"https:\/\/vived.io\/pl\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/","url":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","width":136,"height":45,"caption":"Vived"},"image":{"@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/9d2a72fe7d0dfbb4092675afbab742bb","name":"Tomasz Borowicz","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/804536d2672538508d43f60ad2108e5aaea76c192653eaf95d4c3934b7d1dbb6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/804536d2672538508d43f60ad2108e5aaea76c192653eaf95d4c3934b7d1dbb6?s=96&d=mm&r=g","caption":"Tomasz Borowicz"}}]}},"blocks_vived":[{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>1. Jest 28<\/h2>\n","innerContent":["\n<h2>1. Jest 28<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Wok\u00f3\u0142 testowania JavaScriptu ostatnio sporo si\u0119 dzia\u0142o. Do najnowszego Node.js 18 trafi\u0142 natywny test runner (na razie jako experimental feature), kt\u00f3ry umo\u017cliwia pisanie test\u00f3w bez zaci\u0105gania dodatkowych bibliotek. Ostatnio coraz wi\u0119ksz\u0105 popularno\u015bci\u0105 zaczyna si\u0119 cieszy\u0107 r\u00f3wnie\u017c biblioteka Vitest. Pomimo tego, \u017ce zosta\u0142a ona stworzona z my\u015bl\u0105 o programistach korzystaj\u0105cych z Vite, jest alternatyw\u0105 drop-in dla Jesta i nie odbiega od niego funkcjonalno\u015bciami.<\/p>\n","innerContent":["\n<p>Wok\u00f3\u0142 testowania JavaScriptu ostatnio sporo si\u0119 dzia\u0142o. Do najnowszego Node.js 18 trafi\u0142 natywny test runner (na razie jako experimental feature), kt\u00f3ry umo\u017cliwia pisanie test\u00f3w bez zaci\u0105gania dodatkowych bibliotek. Ostatnio coraz wi\u0119ksz\u0105 popularno\u015bci\u0105 zaczyna si\u0119 cieszy\u0107 r\u00f3wnie\u017c biblioteka Vitest. Pomimo tego, \u017ce zosta\u0142a ona stworzona z my\u015bl\u0105 o programistach korzystaj\u0105cych z Vite, jest alternatyw\u0105 drop-in dla Jesta i nie odbiega od niego funkcjonalno\u015bciami.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Alternatywne test runnery rosn\u0105 w tle dyskusji o wsparciu (a raczej jego braku) dla Jest ze strony Mety. <a href=\"https:\/\/github.com\/facebook\/jest\/pull\/11529#issuecomment-1027405616\">Jak t\u0142umaczy autor Jest<\/a> - Simen Bekkhus - brak wsparcia ze strony du\u017cych korporacji jest jego \u015bwiadom\u0105 decyzj\u0105. Pobieranie sta\u0142ej pensji sprawi\u0142oby, \u017ce czu\u0142by si\u0119 on zobligowany do pracy nad Jest, kt\u00f3rego traktuje jako projekt poboczny. Nie jest to raczej odpowied\u017a, kt\u00f3rej oczekuje community jednej z najpopularniejszych frontendowych bibliotek.<\/p>\n","innerContent":["\n<p>Alternatywne test runnery rosn\u0105 w tle dyskusji o wsparciu (a raczej jego braku) dla Jest ze strony Mety. <a href=\"https:\/\/github.com\/facebook\/jest\/pull\/11529#issuecomment-1027405616\">Jak t\u0142umaczy autor Jest<\/a> - Simen Bekkhus - brak wsparcia ze strony du\u017cych korporacji jest jego \u015bwiadom\u0105 decyzj\u0105. Pobieranie sta\u0142ej pensji sprawi\u0142oby, \u017ce czu\u0142by si\u0119 on zobligowany do pracy nad Jest, kt\u00f3rego traktuje jako projekt poboczny. Nie jest to raczej odpowied\u017a, kt\u00f3rej oczekuje community jednej z najpopularniejszych frontendowych bibliotek.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Fakt, \u017ce Jest rozwijany jest powoli nie oznacza, \u017ce nie jest rozwijany wcale. W ko\u0144cu nad projektem pracuje nie tylko Simen, ale ca\u0142a spo\u0142eczno\u015b\u0107 Open Source. Kolejne wersje biblioteki od kilku lat otrzymujemy jak w zegarku na prze\u0142omie kwietnia i maja. Nie inaczej jest r\u00f3wnie\u017c i w tym roku, bo w minionym tygodniu opublikowany zosta\u0142 Jest 28. Nowo\u015bci jest ca\u0142kiem sporo, dlatego zapraszam Was na kr\u00f3tk\u0105 wycieczk\u0119 po nowych funkcjonalno\u015bciach.<\/p>\n","innerContent":["\n<p>Fakt, \u017ce Jest rozwijany jest powoli nie oznacza, \u017ce nie jest rozwijany wcale. W ko\u0144cu nad projektem pracuje nie tylko Simen, ale ca\u0142a spo\u0142eczno\u015b\u0107 Open Source. Kolejne wersje biblioteki od kilku lat otrzymujemy jak w zegarku na prze\u0142omie kwietnia i maja. Nie inaczej jest r\u00f3wnie\u017c i w tym roku, bo w minionym tygodniu opublikowany zosta\u0142 Jest 28. Nowo\u015bci jest ca\u0142kiem sporo, dlatego zapraszam Was na kr\u00f3tk\u0105 wycieczk\u0119 po nowych funkcjonalno\u015bciach.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":4287,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/6e6a7l.jpeg\" alt=\"\" class=\"wp-image-4287\"\/><\/figure><\/div>\n","innerContent":["\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/6e6a7l.jpeg\" alt=\"\" class=\"wp-image-4287\"\/><\/figure><\/div>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Pierwszym przystankiem naszej podr\u00f3\u017cy b\u0119dzie jedna z rzeczy, kt\u00f3ra w Jest 28 widoczna jest ju\u017c na pierwszy rzut oka - paczka zosta\u0142a odchudzona o oko\u0142o 30%. Redukcja spowodowana jest usuni\u0119ciem pakiet\u00f3w takich jak `jest-environment-jsdom` czy `jest-jasmine2` z domy\u015blnej paczki. Je\u015bli psuje Wam to szyki, no to c\u00f3\u017c - Wasza wina. Usuni\u0119cie paczek zosta\u0142o zapowiedziane prawie rok temu przy okazji releasu Jest 27.<\/p>\n","innerContent":["\n<p>Pierwszym przystankiem naszej podr\u00f3\u017cy b\u0119dzie jedna z rzeczy, kt\u00f3ra w Jest 28 widoczna jest ju\u017c na pierwszy rzut oka - paczka zosta\u0142a odchudzona o oko\u0142o 30%. Redukcja spowodowana jest usuni\u0119ciem pakiet\u00f3w takich jak `jest-environment-jsdom` czy `jest-jasmine2` z domy\u015blnej paczki. Je\u015bli psuje Wam to szyki, no to c\u00f3\u017c - Wasza wina. Usuni\u0119cie paczek zosta\u0142o zapowiedziane prawie rok temu przy okazji releasu Jest 27.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Zapraszam z powrotem na pok\u0142ad, gdy\u017c wyruszamy przygl\u0105dn\u0105\u0107 si\u0119 kolejnej nowej funkcjonalno\u015bci. Do Jest 28 trafi\u0142a flaga `--shard`, kt\u00f3ra umo\u017cliwia podzielenie uruchamianych test\u00f3w na kilka maszyn. Nie spodziewajcie si\u0119 jednak skomplikowanego mechanizmu odpowiedzialny za komunikacj\u0119 mi\u0119dzy maszynami i load-balancingu. Nowa flaga pozwala po prostu podzieli\u0107 w deterministyczny spos\u00f3b testy na N cz\u0119\u015bci i wykona\u0107 wybran\u0105 cz\u0119\u015b\u0107.<\/p>\n","innerContent":["\n<p>Zapraszam z powrotem na pok\u0142ad, gdy\u017c wyruszamy przygl\u0105dn\u0105\u0107 si\u0119 kolejnej nowej funkcjonalno\u015bci. Do Jest 28 trafi\u0142a flaga `--shard`, kt\u00f3ra umo\u017cliwia podzielenie uruchamianych test\u00f3w na kilka maszyn. Nie spodziewajcie si\u0119 jednak skomplikowanego mechanizmu odpowiedzialny za komunikacj\u0119 mi\u0119dzy maszynami i load-balancingu. Nowa flaga pozwala po prostu podzieli\u0107 w deterministyczny spos\u00f3b testy na N cz\u0119\u015bci i wykona\u0107 wybran\u0105 cz\u0119\u015b\u0107.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"prismatic\/blocks","attrs":[],"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-\">jest --shard=1\/3\njest --shard=2\/3\njest --shard=3\/3<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-\">jest --shard=1\/3\njest --shard=2\/3\njest --shard=3\/3<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Przed nami ostatni przystanek naszej wycieczki. Po naszej sterburcie mijamy usprawnione Fake Timers. W Jest 27 fake timers zosta\u0142y znacznie usprawnione poprzez wykorzystanie biblioteki `@sinonjs\/fake-timers`. W Jest 28 poczyniono kolejny krok w prz\u00f3d i zdecydowano si\u0119 udost\u0119pni\u0107 bezpo\u015brednio jeszcze wi\u0119cej metod wykorzystywanej w bebechach biblioteki.<\/p>\n","innerContent":["\n<p>Przed nami ostatni przystanek naszej wycieczki. Po naszej sterburcie mijamy usprawnione Fake Timers. W Jest 27 fake timers zosta\u0142y znacznie usprawnione poprzez wykorzystanie biblioteki `@sinonjs\/fake-timers`. W Jest 28 poczyniono kolejny krok w prz\u00f3d i zdecydowano si\u0119 udost\u0119pni\u0107 bezpo\u015brednio jeszcze wi\u0119cej metod wykorzystywanej w bebechach biblioteki.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Zanim przybijamy do brzegu warto zwr\u00f3ci\u0107 jeszcze uwag\u0119 na pomniejsze poprawki i usprawnienia. W\u015br\u00f3d nich znajdziemy mi\u0119dzy innymi dedykowany GitHub Actions Reporter, mo\u017cliwo\u015b\u0107 definiowania konfiguracji \u015brodowiska jako inline komentarze w testach, czy nowy odchudzony test runner `jest-light-runner`.<\/p>\n","innerContent":["\n<p>Zanim przybijamy do brzegu warto zwr\u00f3ci\u0107 jeszcze uwag\u0119 na pomniejsze poprawki i usprawnienia. W\u015br\u00f3d nich znajdziemy mi\u0119dzy innymi dedykowany GitHub Actions Reporter, mo\u017cliwo\u015b\u0107 definiowania konfiguracji \u015brodowiska jako inline komentarze w testach, czy nowy odchudzony test runner `jest-light-runner`.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":4288,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/giphy-12.gif\" alt=\"\" class=\"wp-image-4288\"\/><figcaption>Czytelnicy Frontend Weekly zwiedzaj\u0105cy nowe funkcjonalno\u015bci Jest wraz z autorem przegl\u0105d\u00f3w.<\/figcaption><\/figure><\/div>\n","innerContent":["\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/giphy-12.gif\" alt=\"\" class=\"wp-image-4288\"\/><figcaption>Czytelnicy Frontend Weekly zwiedzaj\u0105cy nowe funkcjonalno\u015bci Jest wraz z autorem przegl\u0105d\u00f3w.<\/figcaption><\/figure><\/div>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Tak oto dotarli\u015bmy do ko\u0144ca naszej kr\u00f3tkiej wycieczki. Na zako\u0144czenie wspomn\u0119 jeszcze, \u017ce na kolejn\u0105 wypraw\u0119 b\u0119d\u0119 mia\u0142 okazj\u0119 zaprosi\u0107 Pa\u0144stwa zdecydowanie wcze\u015bniej, ni\u017c przy okazji maj\u00f3wki 2023. Jak zapowiada zesp\u00f3\u0142 rozwijaj\u0105cy Jest, na wersj\u0119 29 przyjdzie nam poczeka\u0107 tylko kilka miesi\u0119cy, zamiast okr\u0105g\u0142ego roku. Przy\u015bpieszony development kontrastuje z wspomnian\u0105 w pierwszych akapitach wypowiedzi\u0105 Simena Hekkhus, ale nie pozostaje nam nic innego, ni\u017c oczekiwa\u0107 na spe\u0142nienie obietnic.<\/p>\n","innerContent":["\n<p>Tak oto dotarli\u015bmy do ko\u0144ca naszej kr\u00f3tkiej wycieczki. Na zako\u0144czenie wspomn\u0119 jeszcze, \u017ce na kolejn\u0105 wypraw\u0119 b\u0119d\u0119 mia\u0142 okazj\u0119 zaprosi\u0107 Pa\u0144stwa zdecydowanie wcze\u015bniej, ni\u017c przy okazji maj\u00f3wki 2023. Jak zapowiada zesp\u00f3\u0142 rozwijaj\u0105cy Jest, na wersj\u0119 29 przyjdzie nam poczeka\u0107 tylko kilka miesi\u0119cy, zamiast okr\u0105g\u0142ego roku. Przy\u015bpieszony development kontrastuje z wspomnian\u0105 w pierwszych akapitach wypowiedzi\u0105 Simena Hekkhus, ale nie pozostaje nam nic innego, ni\u017c oczekiwa\u0107 na spe\u0142nienie obietnic.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>\u0179r\u00f3d\u0142a:<\/h3>\n","innerContent":["\n<h3>\u0179r\u00f3d\u0142a:<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p><a href=\"https:\/\/jestjs.io\/blog\/2022\/04\/25\/jest-28\">https:\/\/jestjs.io\/blog\/2022\/04\/25\/jest-28<br><\/a><a href=\"https:\/\/news.ycombinator.com\/item?id=30168241\">https:\/\/news.ycombinator.com\/item?id=30168241<br><\/a><a href=\"https:\/\/github.com\/facebook\/jest\/pull\/11529#issuecomment-1027152470\">https:\/\/github.com\/facebook\/jest\/pull\/11529#issuecomment-1027152470<\/a><br><a href=\"https:\/\/github.com\/facebook\/jest\/pull\/11529#issuecomment-1027405616\">https:\/\/github.com\/facebook\/jest\/pull\/11529#issuecomment-1027405616<\/a><br><a href=\"https:\/\/vitest.dev\/guide\/why.html\">https:\/\/vitest.dev\/guide\/why.html<\/a><br><a href=\"https:\/\/nodejs.org\/en\/blog\/announcements\/v18-release-announce\/\">https:\/\/nodejs.org\/en\/blog\/announcements\/v18-release-announce\/<\/a><\/p>\n","innerContent":["\n<p><a href=\"https:\/\/jestjs.io\/blog\/2022\/04\/25\/jest-28\">https:\/\/jestjs.io\/blog\/2022\/04\/25\/jest-28<br><\/a><a href=\"https:\/\/news.ycombinator.com\/item?id=30168241\">https:\/\/news.ycombinator.com\/item?id=30168241<br><\/a><a href=\"https:\/\/github.com\/facebook\/jest\/pull\/11529#issuecomment-1027152470\">https:\/\/github.com\/facebook\/jest\/pull\/11529#issuecomment-1027152470<\/a><br><a href=\"https:\/\/github.com\/facebook\/jest\/pull\/11529#issuecomment-1027405616\">https:\/\/github.com\/facebook\/jest\/pull\/11529#issuecomment-1027405616<\/a><br><a href=\"https:\/\/vitest.dev\/guide\/why.html\">https:\/\/vitest.dev\/guide\/why.html<\/a><br><a href=\"https:\/\/nodejs.org\/en\/blog\/announcements\/v18-release-announce\/\">https:\/\/nodejs.org\/en\/blog\/announcements\/v18-release-announce\/<\/a><\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>2. Remotion 3<\/h2>\n","innerContent":["\n<h2>2. Remotion 3<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Remotion to biblioteka pozwalaj\u0105ca tworzy\u0107 wideo przy u\u017cyciu Reacta, kt\u00f3ra rok temu szturmem przebi\u0142a si\u0119 do wszystkich nag\u0142\u00f3wk\u00f3w JavaScriptiowych newsletter\u00f3w (<a href=\"https:\/\/vived.io\/frontend-thursday-vol-24\/\">w tym r\u00f3wnie\u017c i naszego<\/a>). Ca\u0142o\u015b\u0107 oparta jest o niezwykle proste w swoich za\u0142o\u017ceniach API.&nbsp; Najpierw tworzymy komponent `Composition`, do kt\u00f3rego przekazujemy podstawowe dane, takie jak wysoko\u015b\u0107 i szeroko\u015b\u0107 w pikselach, czy po\u017c\u0105dane FPS-y. Do komponentu&nbsp; `Composition` przekazujemy r\u00f3wnie\u017c w\u0142asny komponent odpowiedzialny za wyrenderowanie filmu. W komponencie tym dost\u0119pny jest hook `useCurrentFrame()`, kt\u00f3ry zwraca aktualnie renderowan\u0105 klatk\u0119 animiacji.<\/p>\n","innerContent":["\n<p>Remotion to biblioteka pozwalaj\u0105ca tworzy\u0107 wideo przy u\u017cyciu Reacta, kt\u00f3ra rok temu szturmem przebi\u0142a si\u0119 do wszystkich nag\u0142\u00f3wk\u00f3w JavaScriptiowych newsletter\u00f3w (<a href=\"https:\/\/vived.io\/frontend-thursday-vol-24\/\">w tym r\u00f3wnie\u017c i naszego<\/a>). Ca\u0142o\u015b\u0107 oparta jest o niezwykle proste w swoich za\u0142o\u017ceniach API.&nbsp; Najpierw tworzymy komponent `Composition`, do kt\u00f3rego przekazujemy podstawowe dane, takie jak wysoko\u015b\u0107 i szeroko\u015b\u0107 w pikselach, czy po\u017c\u0105dane FPS-y. Do komponentu&nbsp; `Composition` przekazujemy r\u00f3wnie\u017c w\u0142asny komponent odpowiedzialny za wyrenderowanie filmu. W komponencie tym dost\u0119pny jest hook `useCurrentFrame()`, kt\u00f3ry zwraca aktualnie renderowan\u0105 klatk\u0119 animiacji.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"prismatic\/blocks","attrs":{"language":"javascript"},"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-javascript\">const MyVideo = () => {\n  const frame = useCurrentFrame();\n  const opacity = frame >= 20 ? 1 : (frame \/ 20);\n  return (\n    &lt;div style={{\n      flex: 1,\n      justifyContent: 'center',\n      alignItems: 'center',\n      opacity: opacity\n    }}>\n      Hello World!\n    &lt;\/div>\n  )\n}\nexport const RemotionVideo: React.FC = () => {\n  return (\n    &lt;>\n      &lt;Composition\n        id=\"MyVideo\"\n        component={MyVideo}\n        durationInFrames={150}\n        fps={30}\n        width={1920}\n        height={1080}\n      \/>\n    &lt;\/>\n  );\n};<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-javascript\">const MyVideo = () => {\n  const frame = useCurrentFrame();\n  const opacity = frame >= 20 ? 1 : (frame \/ 20);\n  return (\n    &lt;div style={{\n      flex: 1,\n      justifyContent: 'center',\n      alignItems: 'center',\n      opacity: opacity\n    }}>\n      Hello World!\n    &lt;\/div>\n  )\n}\nexport const RemotionVideo: React.FC = () => {\n  return (\n    &lt;>\n      &lt;Composition\n        id=\"MyVideo\"\n        component={MyVideo}\n        durationInFrames={150}\n        fps={30}\n        width={1920}\n        height={1080}\n      \/>\n    &lt;\/>\n  );\n};<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Kiedy Remotion po raz pierwszy podbi\u0142 internet by\u0142em co do niego bardzo sceptyczny. Na pierwszy rzut oka narz\u0119dzie by\u0142o innowacyjne, ale po g\u0142\u0119bszym przygl\u0105dni\u0119ciu si\u0119 ca\u0142o\u015bci ci\u0119\u017cko by\u0142o mi znale\u017a\u0107 jego docelowych odbiorc\u00f3w. Do montowania kr\u00f3tkich pokaz\u00f3wek zdecydowanie lepiej nadaj\u0105 si\u0119 dedykowane do tego programy. Nawet je\u015bli musimy nauczy\u0107 si\u0119 ich obs\u0142ugi od podstaw, to skorzystanie z nich zazwyczaj oka\u017ce si\u0119 szybsze bior\u0105c pod uwag\u0119 ich przyst\u0119pno\u015b\u0107. Pisanie CSS-\u00f3w nie jest w ko\u0144cu najszybszym sposobem opisywania pojedynczej klatki filmu.<\/p>\n","innerContent":["\n<p>Kiedy Remotion po raz pierwszy podbi\u0142 internet by\u0142em co do niego bardzo sceptyczny. Na pierwszy rzut oka narz\u0119dzie by\u0142o innowacyjne, ale po g\u0142\u0119bszym przygl\u0105dni\u0119ciu si\u0119 ca\u0142o\u015bci ci\u0119\u017cko by\u0142o mi znale\u017a\u0107 jego docelowych odbiorc\u00f3w. Do montowania kr\u00f3tkich pokaz\u00f3wek zdecydowanie lepiej nadaj\u0105 si\u0119 dedykowane do tego programy. Nawet je\u015bli musimy nauczy\u0107 si\u0119 ich obs\u0142ugi od podstaw, to skorzystanie z nich zazwyczaj oka\u017ce si\u0119 szybsze bior\u0105c pod uwag\u0119 ich przyst\u0119pno\u015b\u0107. Pisanie CSS-\u00f3w nie jest w ko\u0144cu najszybszym sposobem opisywania pojedynczej klatki filmu.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Jedyn\u0105 nadziej\u0105 dla Remotion by\u0142o osadzenie rozwi\u0105zania na serwerze. Takie zastosowanie pozwala na generowane wideo, kt\u00f3re mo\u017ce by\u0107 w prosty spos\u00f3b personalizowane przez programist\u00f3w. Jak na razie Remotion na swojej stronie chwali si\u0119 jedn\u0105 histori\u0105 firmy, kt\u00f3ra skorzysta\u0142a z biblioteki. MakeStories to produkt, kt\u00f3ry umo\u017cliwia tworzenie Web Stories przez prosty interfejs typu drag-and-drop. Jednym z wyzwa\u0144 przed jakimi stan\u0105\u0142 projekt by\u0142o umo\u017cliwienie eksportu stworzonych stories do formatu wideo, kt\u00f3ry obs\u0142ugiwany jest przez wi\u0119kszo\u015b\u0107 platform. Remotion okaza\u0142 si\u0119 by\u0107 narz\u0119dziem wr\u0119cz idealnym do rozwi\u0105zania tego problemu - istniej\u0105cy ju\u017c generator eksportowa\u0142 kod JavaScript, kt\u00f3ry wystarczy\u0142o tylko odpowiednio opakowa\u0107 w API biblioteki.<\/p>\n","innerContent":["\n<p>Jedyn\u0105 nadziej\u0105 dla Remotion by\u0142o osadzenie rozwi\u0105zania na serwerze. Takie zastosowanie pozwala na generowane wideo, kt\u00f3re mo\u017ce by\u0107 w prosty spos\u00f3b personalizowane przez programist\u00f3w. Jak na razie Remotion na swojej stronie chwali si\u0119 jedn\u0105 histori\u0105 firmy, kt\u00f3ra skorzysta\u0142a z biblioteki. MakeStories to produkt, kt\u00f3ry umo\u017cliwia tworzenie Web Stories przez prosty interfejs typu drag-and-drop. Jednym z wyzwa\u0144 przed jakimi stan\u0105\u0142 projekt by\u0142o umo\u017cliwienie eksportu stworzonych stories do formatu wideo, kt\u00f3ry obs\u0142ugiwany jest przez wi\u0119kszo\u015b\u0107 platform. Remotion okaza\u0142 si\u0119 by\u0107 narz\u0119dziem wr\u0119cz idealnym do rozwi\u0105zania tego problemu - istniej\u0105cy ju\u017c generator eksportowa\u0142 kod JavaScript, kt\u00f3ry wystarczy\u0142o tylko odpowiednio opakowa\u0107 w API biblioteki.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":4293,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/giphy-15.gif\" alt=\"\" class=\"wp-image-4293\"\/><figcaption>Je\u015bli to jest Wasza reakcja na wie\u015b\u0107 o Web Stories to ju\u017c \u015bpiesz\u0119 z odpowiedzi\u0105. Web Stories s\u0105 webow\u0105 postaci\u0105 popularnych Stories znanych z platform spo\u0142eczno\u015bciowych. Poprzez odpowiednie ich oznaczenie metadanymi Google jest w stanie je indeksowa\u0107 oraz odpowiednio wy\u015bwietla\u0107 w wynikach wyszukiwania. Je\u015bli chcecie sprawdzi\u0107 sami to wpiszcie w Google na telefonie \u201c<a href=\"https:\/\/www.google.com\/search?q=How+Pigeons+Are+Inspiring+The+Fututre+of+Flight&amp;rlz=1C5CHFA_enPL848PL848&amp;oq=How+Pigeons+Are+Inspiring+The+Fututre+of+Flight&amp;aqs=chrome..69i57j33i10i160.257j0j1&amp;sourceid=chrome&amp;ie=UTF-8\">How Pigeons Are Inspiring The Future of Flight<\/a>\u201d i kliknijcie w obrazek przy pierwszym linku.<\/figcaption><\/figure><\/div>\n","innerContent":["\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/giphy-15.gif\" alt=\"\" class=\"wp-image-4293\"\/><figcaption>Je\u015bli to jest Wasza reakcja na wie\u015b\u0107 o Web Stories to ju\u017c \u015bpiesz\u0119 z odpowiedzi\u0105. Web Stories s\u0105 webow\u0105 postaci\u0105 popularnych Stories znanych z platform spo\u0142eczno\u015bciowych. Poprzez odpowiednie ich oznaczenie metadanymi Google jest w stanie je indeksowa\u0107 oraz odpowiednio wy\u015bwietla\u0107 w wynikach wyszukiwania. Je\u015bli chcecie sprawdzi\u0107 sami to wpiszcie w Google na telefonie \u201c<a href=\"https:\/\/www.google.com\/search?q=How+Pigeons+Are+Inspiring+The+Fututre+of+Flight&amp;rlz=1C5CHFA_enPL848PL848&amp;oq=How+Pigeons+Are+Inspiring+The+Fututre+of+Flight&amp;aqs=chrome..69i57j33i10i160.257j0j1&amp;sourceid=chrome&amp;ie=UTF-8\">How Pigeons Are Inspiring The Future of Flight<\/a>\u201d i kliknijcie w obrazek przy pierwszym linku.<\/figcaption><\/figure><\/div>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Nie jestem pewien, czy na rynku znajdzie si\u0119 wi\u0119cej aplikacji, w kt\u00f3re Remotion wpasuje si\u0119 tak idealnie. Je\u015bli tak, to Remotion 3.0 sprawia, \u017ce integracja b\u0119dzie jeszcze prostsza. Do najnowszej wersji trafi\u0142o bowiem wsp\u00f3\u0142bie\u017cne renderowanie oparte o AWS Lambda. Stosuj\u0105c now\u0105 architektur\u0119 mo\u017cemy przy\u015bpieszy\u0107 czas renderowania nawet o 70%.<\/p>\n","innerContent":["\n<p>Nie jestem pewien, czy na rynku znajdzie si\u0119 wi\u0119cej aplikacji, w kt\u00f3re Remotion wpasuje si\u0119 tak idealnie. Je\u015bli tak, to Remotion 3.0 sprawia, \u017ce integracja b\u0119dzie jeszcze prostsza. Do najnowszej wersji trafi\u0142o bowiem wsp\u00f3\u0142bie\u017cne renderowanie oparte o AWS Lambda. Stosuj\u0105c now\u0105 architektur\u0119 mo\u017cemy przy\u015bpieszy\u0107 czas renderowania nawet o 70%.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Jak to zwykle w \u017cyciu bywa najwa\u017cniejsze informacje zapisane s\u0105 drobnym druczkiem. Czytaj\u0105c dokumentacj\u0119 nowej architektury natrafi\u0142em na sekcj\u0119 dotycz\u0105c\u0105 ogranicze\u0144. Na obecn\u0105 chwil\u0119 za pomoc\u0105 architektury Serverless nie mo\u017cemy generowa\u0107 wi\u0119cej ni\u017c godziny wideo na minut\u0119 i wideo d\u0142u\u017cszych ni\u017c 2 godziny. Dla mniejszych produkt\u00f3w prawdopodobnie nie b\u0119dzie to problem, ale dla takich dzia\u0142aj\u0105cych na du\u017c\u0105 skal\u0119 b\u0119dzie to deal breaker. Nadal mo\u017cemy samodzielnie skonfigurowa\u0107 Remotion na serwerze, ale zdecydowanie umniejsza to nowej funkcjonalno\u015bci w moich oczach.<\/p>\n","innerContent":["\n<p>Jak to zwykle w \u017cyciu bywa najwa\u017cniejsze informacje zapisane s\u0105 drobnym druczkiem. Czytaj\u0105c dokumentacj\u0119 nowej architektury natrafi\u0142em na sekcj\u0119 dotycz\u0105c\u0105 ogranicze\u0144. Na obecn\u0105 chwil\u0119 za pomoc\u0105 architektury Serverless nie mo\u017cemy generowa\u0107 wi\u0119cej ni\u017c godziny wideo na minut\u0119 i wideo d\u0142u\u017cszych ni\u017c 2 godziny. Dla mniejszych produkt\u00f3w prawdopodobnie nie b\u0119dzie to problem, ale dla takich dzia\u0142aj\u0105cych na du\u017c\u0105 skal\u0119 b\u0119dzie to deal breaker. Nadal mo\u017cemy samodzielnie skonfigurowa\u0107 Remotion na serwerze, ale zdecydowanie umniejsza to nowej funkcjonalno\u015bci w moich oczach.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>\u0179r\u00f3d\u0142a:<\/h3>\n","innerContent":["\n<h3>\u0179r\u00f3d\u0142a:<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p><a href=\"https:\/\/www.remotion.dev\/docs\/lambda\">https:\/\/www.remotion.dev\/docs\/lambda<\/a><\/p>\n","innerContent":["\n<p><a href=\"https:\/\/www.remotion.dev\/docs\/lambda\">https:\/\/www.remotion.dev\/docs\/lambda<\/a><\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>3. Deno na Supabase Functions i Netlify Edge Functions<\/h2>\n","innerContent":["\n<h2>3. Deno na Supabase Functions i Netlify Edge Functions<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W naszych przegl\u0105dach sporo pisali\u015bmy ostatnio o Node.js, dlatego teraz przysz\u0142a pora podsumowa\u0107 sobie co w mi\u0119dzyczasie dzia\u0142o si\u0119 u najwi\u0119kszego konkurenta w postaci Deno. Kilka ostatnich wersji nie przynios\u0142o zbyt ekscytuj\u0105cych nowo\u015bci. Mia\u017cd\u017c\u0105ca&nbsp; wi\u0119kszo\u015b\u0107 og\u0142aszanych zmian to usprawnienia istniej\u0105cych API (m.in. Web Cryptography API czy FFI API). W\u015br\u00f3d nowo\u015bci na wyr\u00f3\u017cnienie zas\u0142uguje optymalizacja zapyta\u0144 do Rusta o prawie 60% i dodanie metody Deno.bench, kt\u00f3ra pozwala pisa\u0107 performance testy pisanego kodu. Interesuj\u0105co wygl\u0105da te\u017c rozdzielenie uruchamiania kodu od sprawdzania poprawno\u015bci typ\u00f3w. Do tej pory oba procesy by\u0142y nieod\u0142\u0105cznie ze sob\u0105 zwi\u0105zane, co skutkowa\u0142o d\u0142ugim czasem uruchomienia aplikacji. Jak twierdz\u0105 autorzy zmiany, wi\u0119kszo\u015b\u0107 programist\u00f3w wykorzystuje IDE oraz procesy CI do sprawdzania poprawno\u015bci typ\u00f3w i walidacja przed uruchomieniem jest zb\u0119dna.<\/p>\n","innerContent":["\n<p>W naszych przegl\u0105dach sporo pisali\u015bmy ostatnio o Node.js, dlatego teraz przysz\u0142a pora podsumowa\u0107 sobie co w mi\u0119dzyczasie dzia\u0142o si\u0119 u najwi\u0119kszego konkurenta w postaci Deno. Kilka ostatnich wersji nie przynios\u0142o zbyt ekscytuj\u0105cych nowo\u015bci. Mia\u017cd\u017c\u0105ca&nbsp; wi\u0119kszo\u015b\u0107 og\u0142aszanych zmian to usprawnienia istniej\u0105cych API (m.in. Web Cryptography API czy FFI API). W\u015br\u00f3d nowo\u015bci na wyr\u00f3\u017cnienie zas\u0142uguje optymalizacja zapyta\u0144 do Rusta o prawie 60% i dodanie metody Deno.bench, kt\u00f3ra pozwala pisa\u0107 performance testy pisanego kodu. Interesuj\u0105co wygl\u0105da te\u017c rozdzielenie uruchamiania kodu od sprawdzania poprawno\u015bci typ\u00f3w. Do tej pory oba procesy by\u0142y nieod\u0142\u0105cznie ze sob\u0105 zwi\u0105zane, co skutkowa\u0142o d\u0142ugim czasem uruchomienia aplikacji. Jak twierdz\u0105 autorzy zmiany, wi\u0119kszo\u015b\u0107 programist\u00f3w wykorzystuje IDE oraz procesy CI do sprawdzania poprawno\u015bci typ\u00f3w i walidacja przed uruchomieniem jest zb\u0119dna.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":4290,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/feature_01.jpeg\" alt=\"\" class=\"wp-image-4290\"\/><\/figure><\/div>\n","innerContent":["\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/04\/feature_01.jpeg\" alt=\"\" class=\"wp-image-4290\"\/><\/figure><\/div>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Nie zebra\u0142em Was tu jednak, \u017ceby rozmawia\u0107 o nowo\u015bciach w Deno. Na przestrzeni ostatnich tygodni Deno otrzyma\u0142o wsparcie na dw\u00f3ch rozpoznawalnych platformach chmurowych. Pierwsza z nich to Supabase, czyli otwarto\u017ar\u00f3d\u0142owa alternatywa dla Firebase. Ich najnowszy produkt Edge Functions pozwala uruchamia\u0107 kod serwerowy na maszynach znajduj\u0105cych si\u0119 jak najbli\u017cej u\u017cytkownika. Co istotnie architektura w ca\u0142o\u015bci oparta jest o Deno Deploy, czyli chmur\u0119 na kt\u00f3rej zarabia\u0107 pr\u00f3buje startup rozwijaj\u0105cy Deno. Jak zapewniaj\u0105 chmura od Deno sprawdza si\u0119 tutaj du\u017co lepiej ni\u017c AWS.<\/p>\n","innerContent":["\n<p>Nie zebra\u0142em Was tu jednak, \u017ceby rozmawia\u0107 o nowo\u015bciach w Deno. Na przestrzeni ostatnich tygodni Deno otrzyma\u0142o wsparcie na dw\u00f3ch rozpoznawalnych platformach chmurowych. Pierwsza z nich to Supabase, czyli otwarto\u017ar\u00f3d\u0142owa alternatywa dla Firebase. Ich najnowszy produkt Edge Functions pozwala uruchamia\u0107 kod serwerowy na maszynach znajduj\u0105cych si\u0119 jak najbli\u017cej u\u017cytkownika. Co istotnie architektura w ca\u0142o\u015bci oparta jest o Deno Deploy, czyli chmur\u0119 na kt\u00f3rej zarabia\u0107 pr\u00f3buje startup rozwijaj\u0105cy Deno. Jak zapewniaj\u0105 chmura od Deno sprawdza si\u0119 tutaj du\u017co lepiej ni\u017c AWS.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Drug\u0105 platform\u0105, kt\u00f3ra otrzyma\u0142a wsparcie dla Deno jest Netlify. Co ciekawe, wsparcie dotyczy analogicznej funkcjonalno\u015bci jak w przypadku Supabase i na ten moment r\u00f3wnie\u017c wspiera ekskluzywnie tylko Deno. Jedyna r\u00f3\u017cnica polega na tym, \u017ce w notce od Netlify nie znalaz\u0142em informacji o wykorzystaniu chmury Deno.<\/p>\n","innerContent":["\n<p>Drug\u0105 platform\u0105, kt\u00f3ra otrzyma\u0142a wsparcie dla Deno jest Netlify. Co ciekawe, wsparcie dotyczy analogicznej funkcjonalno\u015bci jak w przypadku Supabase i na ten moment r\u00f3wnie\u017c wspiera ekskluzywnie tylko Deno. Jedyna r\u00f3\u017cnica polega na tym, \u017ce w notce od Netlify nie znalaz\u0142em informacji o wykorzystaniu chmury Deno.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>\u0179r\u00f3d\u0142a:<\/h3>\n","innerContent":["\n<h3>\u0179r\u00f3d\u0142a:<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p><a href=\"https:\/\/www.netlify.com\/blog\/announcing-serverless-compute-with-edge-functions\/\">https:\/\/www.netlify.com\/blog\/announcing-serverless-compute-with-edge-functions\/<\/a><br><a href=\"https:\/\/supabase.com\/blog\/2022\/03\/31\/supabase-edge-functions\">https:\/\/supabase.com\/blog\/2022\/03\/31\/supabase-edge-functions<\/a><br><a href=\"https:\/\/deno.com\/blog\/v1.21\">https:\/\/deno.com\/blog\/v1.21<\/a><br><a href=\"https:\/\/deno.com\/blog\/v1.20\">https:\/\/deno.com\/blog\/v1.20<\/a><br><a href=\"https:\/\/deno.com\/blog\/v1.19\">https:\/\/deno.com\/blog\/v1.19<\/a><br><a href=\"https:\/\/deno.com\/blog\/v1.18\">https:\/\/deno.com\/blog\/v1.18<\/a><\/p>\n","innerContent":["\n<p><a href=\"https:\/\/www.netlify.com\/blog\/announcing-serverless-compute-with-edge-functions\/\">https:\/\/www.netlify.com\/blog\/announcing-serverless-compute-with-edge-functions\/<\/a><br><a href=\"https:\/\/supabase.com\/blog\/2022\/03\/31\/supabase-edge-functions\">https:\/\/supabase.com\/blog\/2022\/03\/31\/supabase-edge-functions<\/a><br><a href=\"https:\/\/deno.com\/blog\/v1.21\">https:\/\/deno.com\/blog\/v1.21<\/a><br><a href=\"https:\/\/deno.com\/blog\/v1.20\">https:\/\/deno.com\/blog\/v1.20<\/a><br><a href=\"https:\/\/deno.com\/blog\/v1.19\">https:\/\/deno.com\/blog\/v1.19<\/a><br><a href=\"https:\/\/deno.com\/blog\/v1.18\">https:\/\/deno.com\/blog\/v1.18<\/a><\/p>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9977","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/comments?post=9977"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9977\/revisions"}],"predecessor-version":[{"id":10503,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9977\/revisions\/10503"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media\/8069"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=9977"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=9977"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=9977"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}