{"id":10179,"date":"2021-02-18T09:00:00","date_gmt":"2021-02-18T08:00:00","guid":{"rendered":"https:\/\/vived.io\/frontend-thursday-vol-25\/"},"modified":"2022-09-19T13:16:46","modified_gmt":"2022-09-19T11:16:46","slug":"frontend-thursday-vol-25","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/","title":{"rendered":"Frontend Thursday vol. 25"},"content":{"rendered":"<p>Hej <br \/>Nadszed\u0142 kolejny czwartek, a wraz z nim kolejna edycja frontendowego przegl\u0105du nowo\u015bci w sam raz do porannej kawy. Zapraszam do lektury <\/p>\n<h1 id=\"1-researcher-hacks-over-35-tech-firms-in-novel-supply-chain-attack-\">1. Researcher hacks over 35 tech firms in novel supply chain attack \u26d3<\/h1>\n<p>O tym, \u017ce model zale\u017cno\u015bci npm ci\u0105gnie za sob\u0105 co najmniej kilka niebezpiecze\u0144stw, s\u0142ysza\u0142 ju\u017c chyba ka\u017cdy&#8230; Sytuacje takie, jak <a href=\"https:\/\/dev.to\/chaitanyasuvarna\/how-a-developer-broke-the-internet-by-un-publishing-his-package-containing-11-lines-of-code-31ei\">usuni\u0119cie drobnego pakietu skutkuj\u0105ce problemami z budowaniem Reacta<\/a>, czy <a href=\"https:\/\/blog.npmjs.org\/post\/185397814280\/plot-to-steal-cryptocurrency-foiled-by-the-npm.html\">podmiana odleg\u0142ej dependencji, pozwalaj\u0105ca wykra\u015b\u0107 dane z komputera<\/a> regularnie obiegaj\u0105 internet. Dzi\u015b cykl si\u0119 zap\u0119tla i mamy dla Was kolejn\u0105 tak\u0105 pere\u0142k\u0119.<\/p>\n<p>Je\u015bli na Waszej skroni w\u0142a\u015bnie pojawi\u0142a si\u0119 pierwsza kropla potu, to \u015bpiesz\u0119 ze s\u0142owem uspokojenia: podatno\u015b\u0107 zosta\u0142a wykryta przez bug huntera, kt\u00f3ry nie wykorzysta\u0142 jej w z\u0142o\u015bliwy spos\u00f3b i dotyczy tylko projekt\u00f3w korzystaj\u0105cych z prywatnych repozytori\u00f3w npm (oraz PyPI i RubyGems, ale to w ko\u0144cu frontendowy czwartek wi\u0119c przemilczmy t\u0105 cz\u0119\u015b\u0107 ).<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d41b283b.gif\" class=\"kg-image\" alt loading=\"lazy\"><figcaption>Deweloper s\u0142ysz\u0105cy o wykryciu kolejnej podatno\u015bci w npm<\/figcaption><\/figure>\n<p>Na czym polega podatno\u015b\u0107? Mamy tutaj do czynienia z tzw. dependency confusion. Osoba odpowiedzialna za znalezienie buga przeszukiwa\u0142a publiczne repozytoria du\u017cych firm (m.in Netflix, Microsoft i PayPal) w celu znalezienia referencji do prywatnie hostowanych bibliotek. Nast\u0119pnie tworzy\u0142a publicznie dost\u0119pn\u0105 bibliotek\u0119 o takiej samej nazwie, ale z wy\u017cszym numerem wersji. W efekcie budowanie aplikacji ko\u0144czy\u0142o si\u0119 zaci\u0105gni\u0119ciem wersji podmienionej przez hackera, kt\u00f3ra to \u0142\u0105czy\u0142y si\u0119 z serwerem atakuj\u0105cego, daj\u0105c mu tym samym dow\u00f3d na istnienie podatno\u015bci. Za znalezienie buga firmy sumarycznie zap\u0142aci\u0142y 130 tysi\u0119cy dolar\u00f3w, a Microsoft postanowi\u0142 opublikowa\u0107 na ten temat ca\u0142y paper.<\/p>\n<h3 id=\"-r-d-a-\">\u0179r\u00f3d\u0142a:<\/h3>\n<p><a href=\"https:\/\/www.bleepingcomputer.com\/news\/security\/researcher-hacks-over-35-tech-firms-in-novel-supply-chain-attack\/\">https:\/\/www.bleepingcomputer.com\/news\/security\/researcher-hacks-over-35-tech-firms-in-novel-supply-chain-attack\/<\/a><\/p>\n<h1 id=\"2-faster-javascript-calls-\">2. Faster JavaScript calls <\/h1>\n<p>Na pocz\u0105tku grudnia opublikowana zosta\u0142a nowa wersja silnika v8. Release przyni\u00f3s\u0142 przede wszystkim top levelowe async-await i usprawnienia wydajno\u015bci wywo\u0142ania funkcji z niedopasowan\u0105 liczb\u0105 argument\u00f3w. Pocz\u0105tkowo opublikowano tylko obiecuj\u0105ce wykresy &#8211; 11% przy\u015bpieszenie dla Ignition i 40% przy\u015bpieszenie dla TurboFan. W tym tygodniu programi\u015bci z Googla uzupe\u0142nili wspomniane diagramy o ma\u0142\u0105 analiz\u0119 tematu i opis szczeg\u00f3\u0142\u00f3w implementacyjnych nowego rozwi\u0105zania.<\/p>\n<p>Nowa implementacja znanej od dawna funkcjonalno\u015bci eliminuje Adaptor Frame, czyli fragment ramki z danymi,definiuj\u0105cy metadane dotycz\u0105ce argument\u00f3w funkcji. Przed optymalizacj\u0105 argumenty trafia\u0142y do ramki w odwrotnej kolejno\u015bci ni\u017c przekazywane by\u0142y do funkcji. Powodowa\u0142o to sytuacj\u0119, w kt\u00f3rej aby odczyta\u0107 pierwszy argument funkcji, musieli\u015bmy z g\u00f3ry zna\u0107 ilo\u015b\u0107 jej argument\u00f3w. Po optymalizacji argumenty przekazywane s\u0105 w kolejno\u015bci zgodnej z kolejno\u015bci\u0105 przekazywania do funkcji, co pozwala wyeliminowa\u0107 zb\u0119dne operacje. Je\u015bli jeste\u015bcie g\u0142odni szczeg\u00f3\u0142\u00f3w, to musz\u0119 odes\u0142a\u0107 Was do materia\u0142u \u017ar\u00f3d\u0142owego. emat jest na tyle odleg\u0142y, od tego czym zajmujemy si\u0119 na co dzie\u0144, \u017ce ci\u0119\u017cko zwi\u0119\u017ale i zrozumiale go stre\u015bci\u0107.<\/p>\n<p>Osobi\u015bcie artyku\u0142 by\u0142 dla mnie podr\u00f3\u017c\u0105 w czasie do pocz\u0105tku studi\u00f3w i zaj\u0119\u0107 z assemblera. A\u017c \u0142ezka si\u0119 w oku kr\u0119ci, kiedy my\u015bl\u0119 o wszystkich tych pokr\u0119conych rejestrach i skomplikowanych implementacjach prostego kalkulatora&#8230; I niech nikt nie psuje mi tej nostalgicznej chwili, przypominaj\u0105c o ostatnim czekaj\u0105cym mnie akcie zwi\u0105zanym z wy\u017csz\u0105 edukacj\u0105 &#8211; napisaniu pracy magisterskiej .<\/p>\n<figure class=\"kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d4204364.png\" class=\"kg-image\" alt loading=\"lazy\"><\/figure>\n<h3 id=\"-r-d-a--1\">\u0179r\u00f3d\u0142a:<\/h3>\n<p><a href=\"https:\/\/v8.dev\/blog\/adaptor-frame\">https:\/\/v8.dev\/blog\/adaptor-frame<\/a><\/p>\n<h1 id=\"3-under-the-hood-of-the-language-service-\">3. Under the Hood of the Language Service <\/h1>\n<p>Mam wra\u017cenie, \u017ce w \u015bwiecie Angulara dzieje si\u0119 ostatnio wi\u0119cej ni\u017c w \u015bwiecie Reacta. Nowo\u015bci to raczej nie rewolucje, a spokojne ewolucje, ale nie zmienia to faktu, \u017ce dystans mi\u0119dzy tymi frameworkami powoli si\u0119 skraca (a przynajmniej je\u015bli chodzi o aspekt s\u0142uchania g\u0142osu spo\u0142eczno\u015bci).<\/p>\n<p>W tym tygodniu \u015bwiat\u0142o dzienne ujrza\u0142a kolejna taka ma\u0142a ewolucja. Angular Language Service, odpowiedzialny m.in za autouzupe\u0142nianie i kolorowanie kodu w VS Code, otrzyma\u0142 du\u017c\u0105 aktualizacj\u0119. Wi\u0119ksze zmiany s\u0105 dwie. Pierwsza z nich to optymalizacja dzia\u0142ania samego serwisu, kt\u00f3ra mo\u017cliwa sta\u0142a si\u0119 poprzez zastosowanie wprowadzonego w Ivy mechanizmu `incremental compilation`. Integracja z Ivy pozwoli\u0142a zminimalizowa\u0107 rekompilacjeo kody po ka\u017cdej zmianie, tym samym przyspieszaj\u0105c ca\u0142e rozwi\u0105zanie. Drugie usprawnienie, to rozbudowanie funkcjonalno\u015bci dotycz\u0105cych template&#8217;\u00f3w i to tutaj nale\u017cy doszukiwa\u0107 si\u0119 najwi\u0119kszych rewolucji. Nowy Language Service obiecuje zar\u00f3wno lepszy type checking jaki i code completion. Musicie przyzna\u0107, \u017ce brzmi to co najmniej obiecuj\u0105co.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d42c2275.gif\" class=\"kg-image\" alt loading=\"lazy\"><figcaption>Language Service to fajne usprawnienie, ale widzieli\u015bcie ju\u017c vsinder? To dopiero prawdziwy game changer dla VS Code!&nbsp;<\/figcaption><\/figure>\n<p>My w projekcie u\u017cywamy InteliJ (kt\u00f3ry u\u017cywa pod spodem swojej implementacji Language Service), wi\u0119c jeszcze nie mieli\u015bmy okazji przekona\u0107 si\u0119, o jak du\u017cym usprawnieniu tutaj m\u00f3wimy. Nie zmienia to jednak faktu, \u017ce zgodnie z State of JavaScript 2020 VS Code ju\u017c dawno zostawi\u0142 konkurencj\u0119 w tyle i to w tym IDE teraz toczy si\u0119 najbardziej zaci\u0119ta walka mi\u0119dzy wielk\u0105 tr\u00f3jk\u0105 framework\u00f3w o jak najlepsze do\u015bwiadczenia programist\u00f3w. Je\u015bli mieli\u015bcie ju\u017c okazj\u0119 wypr\u00f3bowa\u0107 Language Service, to koniecznie dajcie zna\u0107, czy z Waszej perspektywy skok jako\u015bciowy jest tak du\u017cy jak twierdz\u0105 \u00a0tw\u00f3rcy Angulara.<\/p>\n<h3 id=\"-r-d-a--2\">\u0179r\u00f3d\u0142a:<\/h3>\n<p><a href=\"https:\/\/blog.angular.io\/under-the-hood-of-the-language-service-ab763c26f522\">https:\/\/blog.angular.io\/under-the-hood-of-the-language-service-ab763c26f522<\/a><br \/><a href=\"https:\/\/www.youtube.com\/watch?v=doVYC32hjIw\">https:\/\/www.youtube.com\/watch?v=doVYC32hjIw<\/a><br \/><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=benawad.vsinder\">https:\/\/marketplace.visualstudio.com\/items?itemName=benawad.vsinder<\/a><\/p>\n<hr \/>\n<p>Je\u015bli chcesz otrzymywa\u0107 tego typu tre\u015bci spersonalizowane pod Ciebie, pobierz Vived!<\/p>\n<ul>\n<li><a href=\"https:\/\/apple.co\/3fB8Kcf\">App Store<\/a> <\/li>\n<li><a href=\"https:\/\/bit.ly\/3m421dx\">Play Store<\/a> <\/li>\n<li><a href=\"https:\/\/bit.ly\/3m9Bewn\">Wersja PWA<\/a> <\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Hej Nadszed\u0142 kolejny czwartek, a wraz z nim kolejna edycja frontendowego przegl\u0105du nowo\u015bci w sam raz do porannej kawy. Zapraszam do lektury 1. Researcher hacks over 35 tech firms in novel supply chain attack \u26d3 O tym, \u017ce model zale\u017cno\u015bci npm ci\u0105gnie za sob\u0105 co najmniej kilka niebezpiecze\u0144stw, s\u0142ysza\u0142 ju\u017c chyba ka\u017cdy&#8230; Sytuacje takie, jak [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[273],"tags":[],"class_list":["post-10179","post","type-post","status-publish","format-standard","hentry","category-frontend-pl"],"acf":{"weekly_summary":true,"estimated_reading_time":"4"},"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. 25 - 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-25\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Frontend Thursday vol. 25 - Vived\" \/>\n<meta property=\"og:description\" content=\"Hej Nadszed\u0142 kolejny czwartek, a wraz z nim kolejna edycja frontendowego przegl\u0105du nowo\u015bci w sam raz do porannej kawy. Zapraszam do lektury 1. Researcher hacks over 35 tech firms in novel supply chain attack \u26d3 O tym, \u017ce model zale\u017cno\u015bci npm ci\u0105gnie za sob\u0105 co najmniej kilka niebezpiecze\u0144stw, s\u0142ysza\u0142 ju\u017c chyba ka\u017cdy&#8230; Sytuacje takie, jak [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-18T08:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:16:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d41b283b.gif\" \/>\n<meta name=\"author\" content=\"Tomasz Borowicz\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\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-25\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/\"},\"author\":{\"name\":\"Tomasz Borowicz\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/9d2a72fe7d0dfbb4092675afbab742bb\"},\"headline\":\"Frontend Thursday vol. 25\",\"datePublished\":\"2021-02-18T08:00:00+00:00\",\"dateModified\":\"2022-09-19T11:16:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/\"},\"wordCount\":930,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d41b283b.gif\",\"articleSection\":[\"Frontend\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/\",\"url\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/\",\"name\":\"Frontend Thursday vol. 25 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d41b283b.gif\",\"datePublished\":\"2021-02-18T08:00:00+00:00\",\"dateModified\":\"2022-09-19T11:16:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d41b283b.gif\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d41b283b.gif\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Frontend Thursday vol. 25\"}]},{\"@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. 25 - 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-25\/","og_locale":"pl_PL","og_type":"article","og_title":"Frontend Thursday vol. 25 - Vived","og_description":"Hej Nadszed\u0142 kolejny czwartek, a wraz z nim kolejna edycja frontendowego przegl\u0105du nowo\u015bci w sam raz do porannej kawy. Zapraszam do lektury 1. Researcher hacks over 35 tech firms in novel supply chain attack \u26d3 O tym, \u017ce model zale\u017cno\u015bci npm ci\u0105gnie za sob\u0105 co najmniej kilka niebezpiecze\u0144stw, s\u0142ysza\u0142 ju\u017c chyba ka\u017cdy&#8230; Sytuacje takie, jak [&hellip;]","og_url":"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/","og_site_name":"Vived","article_published_time":"2021-02-18T08:00:00+00:00","article_modified_time":"2022-09-19T11:16:46+00:00","og_image":[{"url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d41b283b.gif","type":"","width":"","height":""}],"author":"Tomasz Borowicz","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/"},"author":{"name":"Tomasz Borowicz","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/9d2a72fe7d0dfbb4092675afbab742bb"},"headline":"Frontend Thursday vol. 25","datePublished":"2021-02-18T08:00:00+00:00","dateModified":"2022-09-19T11:16:46+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/"},"wordCount":930,"commentCount":0,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d41b283b.gif","articleSection":["Frontend"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/","url":"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/","name":"Frontend Thursday vol. 25 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d41b283b.gif","datePublished":"2021-02-18T08:00:00+00:00","dateModified":"2022-09-19T11:16:46+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d41b283b.gif","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d41b283b.gif"},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-25\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"Frontend Thursday vol. 25"}]},{"@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":null,"attrs":[],"innerBlocks":[],"innerHTML":"<p>Hej <br \/>Nadszed\u0142 kolejny czwartek, a wraz z nim kolejna edycja frontendowego przegl\u0105du nowo\u015bci w sam raz do porannej kawy. Zapraszam do lektury <\/p><h1 id=\"1-researcher-hacks-over-35-tech-firms-in-novel-supply-chain-attack-\">1. Researcher hacks over 35 tech firms in novel supply chain attack \u26d3<\/h1><p>O tym, \u017ce model zale\u017cno\u015bci npm ci\u0105gnie za sob\u0105 co najmniej kilka niebezpiecze\u0144stw, s\u0142ysza\u0142 ju\u017c chyba ka\u017cdy... Sytuacje takie, jak <a href=\"https:\/\/dev.to\/chaitanyasuvarna\/how-a-developer-broke-the-internet-by-un-publishing-his-package-containing-11-lines-of-code-31ei\">usuni\u0119cie drobnego pakietu skutkuj\u0105ce problemami z budowaniem Reacta<\/a>, czy <a href=\"https:\/\/blog.npmjs.org\/post\/185397814280\/plot-to-steal-cryptocurrency-foiled-by-the-npm.html\">podmiana odleg\u0142ej dependencji, pozwalaj\u0105ca wykra\u015b\u0107 dane z komputera<\/a> regularnie obiegaj\u0105 internet. Dzi\u015b cykl si\u0119 zap\u0119tla i mamy dla Was kolejn\u0105 tak\u0105 pere\u0142k\u0119.<\/p><p>Je\u015bli na Waszej skroni w\u0142a\u015bnie pojawi\u0142a si\u0119 pierwsza kropla potu, to \u015bpiesz\u0119 ze s\u0142owem uspokojenia: podatno\u015b\u0107 zosta\u0142a wykryta przez bug huntera, kt\u00f3ry nie wykorzysta\u0142 jej w z\u0142o\u015bliwy spos\u00f3b i dotyczy tylko projekt\u00f3w korzystaj\u0105cych z prywatnych repozytori\u00f3w npm (oraz PyPI i RubyGems, ale to w ko\u0144cu frontendowy czwartek wi\u0119c przemilczmy t\u0105 cz\u0119\u015b\u0107 ).<\/p><figure class=\"kg-card kg-image-card kg-card-hascaption\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d41b283b.gif\" class=\"kg-image\" alt loading=\"lazy\"><figcaption>Deweloper s\u0142ysz\u0105cy o wykryciu kolejnej podatno\u015bci w npm<\/figcaption><\/figure><p>Na czym polega podatno\u015b\u0107? Mamy tutaj do czynienia z tzw. dependency confusion. Osoba odpowiedzialna za znalezienie buga przeszukiwa\u0142a publiczne repozytoria du\u017cych firm (m.in Netflix, Microsoft i PayPal) w celu znalezienia referencji do prywatnie hostowanych bibliotek. Nast\u0119pnie tworzy\u0142a publicznie dost\u0119pn\u0105 bibliotek\u0119 o takiej samej nazwie, ale z wy\u017cszym numerem wersji. W efekcie budowanie aplikacji ko\u0144czy\u0142o si\u0119 zaci\u0105gni\u0119ciem wersji podmienionej przez hackera, kt\u00f3ra to \u0142\u0105czy\u0142y si\u0119 z serwerem atakuj\u0105cego, daj\u0105c mu tym samym dow\u00f3d na istnienie podatno\u015bci. Za znalezienie buga firmy sumarycznie zap\u0142aci\u0142y 130 tysi\u0119cy dolar\u00f3w, a Microsoft postanowi\u0142 opublikowa\u0107 na ten temat ca\u0142y paper.<\/p><h3 id=\"-r-d-a-\">\u0179r\u00f3d\u0142a:<\/h3><p><a href=\"https:\/\/www.bleepingcomputer.com\/news\/security\/researcher-hacks-over-35-tech-firms-in-novel-supply-chain-attack\/\">https:\/\/www.bleepingcomputer.com\/news\/security\/researcher-hacks-over-35-tech-firms-in-novel-supply-chain-attack\/<\/a><br \/><\/p><h1 id=\"2-faster-javascript-calls-\">2. Faster JavaScript calls <\/h1><p>Na pocz\u0105tku grudnia opublikowana zosta\u0142a nowa wersja silnika v8. Release przyni\u00f3s\u0142 przede wszystkim top levelowe async-await i usprawnienia wydajno\u015bci wywo\u0142ania funkcji z niedopasowan\u0105 liczb\u0105 argument\u00f3w. Pocz\u0105tkowo opublikowano tylko obiecuj\u0105ce wykresy - 11% przy\u015bpieszenie dla Ignition i 40% przy\u015bpieszenie dla TurboFan. W tym tygodniu programi\u015bci z Googla uzupe\u0142nili wspomniane diagramy o ma\u0142\u0105 analiz\u0119 tematu i opis szczeg\u00f3\u0142\u00f3w implementacyjnych nowego rozwi\u0105zania.<\/p><p>Nowa implementacja znanej od dawna funkcjonalno\u015bci eliminuje Adaptor Frame, czyli fragment ramki z danymi,definiuj\u0105cy metadane dotycz\u0105ce argument\u00f3w funkcji. Przed optymalizacj\u0105 argumenty trafia\u0142y do ramki w odwrotnej kolejno\u015bci ni\u017c przekazywane by\u0142y do funkcji. Powodowa\u0142o to sytuacj\u0119, w kt\u00f3rej aby odczyta\u0107 pierwszy argument funkcji, musieli\u015bmy z g\u00f3ry zna\u0107 ilo\u015b\u0107 jej argument\u00f3w. Po optymalizacji argumenty przekazywane s\u0105 w kolejno\u015bci zgodnej z kolejno\u015bci\u0105 przekazywania do funkcji, co pozwala wyeliminowa\u0107 zb\u0119dne operacje. Je\u015bli jeste\u015bcie g\u0142odni szczeg\u00f3\u0142\u00f3w, to musz\u0119 odes\u0142a\u0107 Was do materia\u0142u \u017ar\u00f3d\u0142owego. emat jest na tyle odleg\u0142y, od tego czym zajmujemy si\u0119 na co dzie\u0144, \u017ce ci\u0119\u017cko zwi\u0119\u017ale i zrozumiale go stre\u015bci\u0107.<\/p><p>Osobi\u015bcie artyku\u0142 by\u0142 dla mnie podr\u00f3\u017c\u0105 w czasie do pocz\u0105tku studi\u00f3w i zaj\u0119\u0107 z assemblera. A\u017c \u0142ezka si\u0119 w oku kr\u0119ci, kiedy my\u015bl\u0119 o wszystkich tych pokr\u0119conych rejestrach i skomplikowanych implementacjach prostego kalkulatora... I niech nikt nie psuje mi tej nostalgicznej chwili, przypominaj\u0105c o ostatnim czekaj\u0105cym mnie akcie zwi\u0105zanym z wy\u017csz\u0105 edukacj\u0105 - napisaniu pracy magisterskiej .<\/p><figure class=\"kg-card kg-image-card\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d4204364.png\" class=\"kg-image\" alt loading=\"lazy\"><\/figure><h3 id=\"-r-d-a--1\">\u0179r\u00f3d\u0142a:<\/h3><p><a href=\"https:\/\/v8.dev\/blog\/adaptor-frame\">https:\/\/v8.dev\/blog\/adaptor-frame<\/a><br \/><\/p><h1 id=\"3-under-the-hood-of-the-language-service-\">3. Under the Hood of the Language Service <\/h1><p>Mam wra\u017cenie, \u017ce w \u015bwiecie Angulara dzieje si\u0119 ostatnio wi\u0119cej ni\u017c w \u015bwiecie Reacta. Nowo\u015bci to raczej nie rewolucje, a spokojne ewolucje, ale nie zmienia to faktu, \u017ce dystans mi\u0119dzy tymi frameworkami powoli si\u0119 skraca (a przynajmniej je\u015bli chodzi o aspekt s\u0142uchania g\u0142osu spo\u0142eczno\u015bci).<\/p><p>W tym tygodniu \u015bwiat\u0142o dzienne ujrza\u0142a kolejna taka ma\u0142a ewolucja. Angular Language Service, odpowiedzialny m.in za autouzupe\u0142nianie i kolorowanie kodu w VS Code, otrzyma\u0142 du\u017c\u0105 aktualizacj\u0119. Wi\u0119ksze zmiany s\u0105 dwie. Pierwsza z nich to optymalizacja dzia\u0142ania samego serwisu, kt\u00f3ra mo\u017cliwa sta\u0142a si\u0119 poprzez zastosowanie wprowadzonego w Ivy mechanizmu `incremental compilation`. Integracja z Ivy pozwoli\u0142a zminimalizowa\u0107 rekompilacjeo kody po ka\u017cdej zmianie, tym samym przyspieszaj\u0105c ca\u0142e rozwi\u0105zanie. Drugie usprawnienie, to rozbudowanie funkcjonalno\u015bci dotycz\u0105cych template'\u00f3w i to tutaj nale\u017cy doszukiwa\u0107 si\u0119 najwi\u0119kszych rewolucji. Nowy Language Service obiecuje zar\u00f3wno lepszy type checking jaki i code completion. Musicie przyzna\u0107, \u017ce brzmi to co najmniej obiecuj\u0105co.<\/p><figure class=\"kg-card kg-image-card kg-card-hascaption\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d42c2275.gif\" class=\"kg-image\" alt loading=\"lazy\"><figcaption>Language Service to fajne usprawnienie, ale widzieli\u015bcie ju\u017c vsinder? To dopiero prawdziwy game changer dla VS Code!&nbsp;<\/figcaption><\/figure><p>My w projekcie u\u017cywamy InteliJ (kt\u00f3ry u\u017cywa pod spodem swojej implementacji Language Service), wi\u0119c jeszcze nie mieli\u015bmy okazji przekona\u0107 si\u0119, o jak du\u017cym usprawnieniu tutaj m\u00f3wimy. Nie zmienia to jednak faktu, \u017ce zgodnie z State of JavaScript 2020 VS Code ju\u017c dawno zostawi\u0142 konkurencj\u0119 w tyle i to w tym IDE teraz toczy si\u0119 najbardziej zaci\u0119ta walka mi\u0119dzy wielk\u0105 tr\u00f3jk\u0105 framework\u00f3w o jak najlepsze do\u015bwiadczenia programist\u00f3w. Je\u015bli mieli\u015bcie ju\u017c okazj\u0119 wypr\u00f3bowa\u0107 Language Service, to koniecznie dajcie zna\u0107, czy z Waszej perspektywy skok jako\u015bciowy jest tak du\u017cy jak twierdz\u0105 \u00a0tw\u00f3rcy Angulara.<\/p><h3 id=\"-r-d-a--2\">\u0179r\u00f3d\u0142a:<\/h3><p><a href=\"https:\/\/blog.angular.io\/under-the-hood-of-the-language-service-ab763c26f522\">https:\/\/blog.angular.io\/under-the-hood-of-the-language-service-ab763c26f522<\/a><br \/><a href=\"https:\/\/www.youtube.com\/watch?v=doVYC32hjIw\">https:\/\/www.youtube.com\/watch?v=doVYC32hjIw<\/a><br \/><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=benawad.vsinder\">https:\/\/marketplace.visualstudio.com\/items?itemName=benawad.vsinder<\/a><\/p><hr \/><p>Je\u015bli chcesz otrzymywa\u0107 tego typu tre\u015bci spersonalizowane pod Ciebie, pobierz Vived!<\/p><ul><li><a href=\"https:\/\/apple.co\/3fB8Kcf\">App Store<\/a> <\/li><li><a href=\"https:\/\/bit.ly\/3m421dx\">Play Store<\/a> <\/li><li><a href=\"https:\/\/bit.ly\/3m9Bewn\">Wersja PWA<\/a> <\/li><\/ul>","innerContent":["<p>Hej <br \/>Nadszed\u0142 kolejny czwartek, a wraz z nim kolejna edycja frontendowego przegl\u0105du nowo\u015bci w sam raz do porannej kawy. Zapraszam do lektury <\/p><h1 id=\"1-researcher-hacks-over-35-tech-firms-in-novel-supply-chain-attack-\">1. Researcher hacks over 35 tech firms in novel supply chain attack \u26d3<\/h1><p>O tym, \u017ce model zale\u017cno\u015bci npm ci\u0105gnie za sob\u0105 co najmniej kilka niebezpiecze\u0144stw, s\u0142ysza\u0142 ju\u017c chyba ka\u017cdy... Sytuacje takie, jak <a href=\"https:\/\/dev.to\/chaitanyasuvarna\/how-a-developer-broke-the-internet-by-un-publishing-his-package-containing-11-lines-of-code-31ei\">usuni\u0119cie drobnego pakietu skutkuj\u0105ce problemami z budowaniem Reacta<\/a>, czy <a href=\"https:\/\/blog.npmjs.org\/post\/185397814280\/plot-to-steal-cryptocurrency-foiled-by-the-npm.html\">podmiana odleg\u0142ej dependencji, pozwalaj\u0105ca wykra\u015b\u0107 dane z komputera<\/a> regularnie obiegaj\u0105 internet. Dzi\u015b cykl si\u0119 zap\u0119tla i mamy dla Was kolejn\u0105 tak\u0105 pere\u0142k\u0119.<\/p><p>Je\u015bli na Waszej skroni w\u0142a\u015bnie pojawi\u0142a si\u0119 pierwsza kropla potu, to \u015bpiesz\u0119 ze s\u0142owem uspokojenia: podatno\u015b\u0107 zosta\u0142a wykryta przez bug huntera, kt\u00f3ry nie wykorzysta\u0142 jej w z\u0142o\u015bliwy spos\u00f3b i dotyczy tylko projekt\u00f3w korzystaj\u0105cych z prywatnych repozytori\u00f3w npm (oraz PyPI i RubyGems, ale to w ko\u0144cu frontendowy czwartek wi\u0119c przemilczmy t\u0105 cz\u0119\u015b\u0107 ).<\/p><figure class=\"kg-card kg-image-card kg-card-hascaption\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d41b283b.gif\" class=\"kg-image\" alt loading=\"lazy\"><figcaption>Deweloper s\u0142ysz\u0105cy o wykryciu kolejnej podatno\u015bci w npm<\/figcaption><\/figure><p>Na czym polega podatno\u015b\u0107? Mamy tutaj do czynienia z tzw. dependency confusion. Osoba odpowiedzialna za znalezienie buga przeszukiwa\u0142a publiczne repozytoria du\u017cych firm (m.in Netflix, Microsoft i PayPal) w celu znalezienia referencji do prywatnie hostowanych bibliotek. Nast\u0119pnie tworzy\u0142a publicznie dost\u0119pn\u0105 bibliotek\u0119 o takiej samej nazwie, ale z wy\u017cszym numerem wersji. W efekcie budowanie aplikacji ko\u0144czy\u0142o si\u0119 zaci\u0105gni\u0119ciem wersji podmienionej przez hackera, kt\u00f3ra to \u0142\u0105czy\u0142y si\u0119 z serwerem atakuj\u0105cego, daj\u0105c mu tym samym dow\u00f3d na istnienie podatno\u015bci. Za znalezienie buga firmy sumarycznie zap\u0142aci\u0142y 130 tysi\u0119cy dolar\u00f3w, a Microsoft postanowi\u0142 opublikowa\u0107 na ten temat ca\u0142y paper.<\/p><h3 id=\"-r-d-a-\">\u0179r\u00f3d\u0142a:<\/h3><p><a href=\"https:\/\/www.bleepingcomputer.com\/news\/security\/researcher-hacks-over-35-tech-firms-in-novel-supply-chain-attack\/\">https:\/\/www.bleepingcomputer.com\/news\/security\/researcher-hacks-over-35-tech-firms-in-novel-supply-chain-attack\/<\/a><br \/><\/p><h1 id=\"2-faster-javascript-calls-\">2. Faster JavaScript calls <\/h1><p>Na pocz\u0105tku grudnia opublikowana zosta\u0142a nowa wersja silnika v8. Release przyni\u00f3s\u0142 przede wszystkim top levelowe async-await i usprawnienia wydajno\u015bci wywo\u0142ania funkcji z niedopasowan\u0105 liczb\u0105 argument\u00f3w. Pocz\u0105tkowo opublikowano tylko obiecuj\u0105ce wykresy - 11% przy\u015bpieszenie dla Ignition i 40% przy\u015bpieszenie dla TurboFan. W tym tygodniu programi\u015bci z Googla uzupe\u0142nili wspomniane diagramy o ma\u0142\u0105 analiz\u0119 tematu i opis szczeg\u00f3\u0142\u00f3w implementacyjnych nowego rozwi\u0105zania.<\/p><p>Nowa implementacja znanej od dawna funkcjonalno\u015bci eliminuje Adaptor Frame, czyli fragment ramki z danymi,definiuj\u0105cy metadane dotycz\u0105ce argument\u00f3w funkcji. Przed optymalizacj\u0105 argumenty trafia\u0142y do ramki w odwrotnej kolejno\u015bci ni\u017c przekazywane by\u0142y do funkcji. Powodowa\u0142o to sytuacj\u0119, w kt\u00f3rej aby odczyta\u0107 pierwszy argument funkcji, musieli\u015bmy z g\u00f3ry zna\u0107 ilo\u015b\u0107 jej argument\u00f3w. Po optymalizacji argumenty przekazywane s\u0105 w kolejno\u015bci zgodnej z kolejno\u015bci\u0105 przekazywania do funkcji, co pozwala wyeliminowa\u0107 zb\u0119dne operacje. Je\u015bli jeste\u015bcie g\u0142odni szczeg\u00f3\u0142\u00f3w, to musz\u0119 odes\u0142a\u0107 Was do materia\u0142u \u017ar\u00f3d\u0142owego. emat jest na tyle odleg\u0142y, od tego czym zajmujemy si\u0119 na co dzie\u0144, \u017ce ci\u0119\u017cko zwi\u0119\u017ale i zrozumiale go stre\u015bci\u0107.<\/p><p>Osobi\u015bcie artyku\u0142 by\u0142 dla mnie podr\u00f3\u017c\u0105 w czasie do pocz\u0105tku studi\u00f3w i zaj\u0119\u0107 z assemblera. A\u017c \u0142ezka si\u0119 w oku kr\u0119ci, kiedy my\u015bl\u0119 o wszystkich tych pokr\u0119conych rejestrach i skomplikowanych implementacjach prostego kalkulatora... I niech nikt nie psuje mi tej nostalgicznej chwili, przypominaj\u0105c o ostatnim czekaj\u0105cym mnie akcie zwi\u0105zanym z wy\u017csz\u0105 edukacj\u0105 - napisaniu pracy magisterskiej .<\/p><figure class=\"kg-card kg-image-card\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d4204364.png\" class=\"kg-image\" alt loading=\"lazy\"><\/figure><h3 id=\"-r-d-a--1\">\u0179r\u00f3d\u0142a:<\/h3><p><a href=\"https:\/\/v8.dev\/blog\/adaptor-frame\">https:\/\/v8.dev\/blog\/adaptor-frame<\/a><br \/><\/p><h1 id=\"3-under-the-hood-of-the-language-service-\">3. Under the Hood of the Language Service <\/h1><p>Mam wra\u017cenie, \u017ce w \u015bwiecie Angulara dzieje si\u0119 ostatnio wi\u0119cej ni\u017c w \u015bwiecie Reacta. Nowo\u015bci to raczej nie rewolucje, a spokojne ewolucje, ale nie zmienia to faktu, \u017ce dystans mi\u0119dzy tymi frameworkami powoli si\u0119 skraca (a przynajmniej je\u015bli chodzi o aspekt s\u0142uchania g\u0142osu spo\u0142eczno\u015bci).<\/p><p>W tym tygodniu \u015bwiat\u0142o dzienne ujrza\u0142a kolejna taka ma\u0142a ewolucja. Angular Language Service, odpowiedzialny m.in za autouzupe\u0142nianie i kolorowanie kodu w VS Code, otrzyma\u0142 du\u017c\u0105 aktualizacj\u0119. Wi\u0119ksze zmiany s\u0105 dwie. Pierwsza z nich to optymalizacja dzia\u0142ania samego serwisu, kt\u00f3ra mo\u017cliwa sta\u0142a si\u0119 poprzez zastosowanie wprowadzonego w Ivy mechanizmu `incremental compilation`. Integracja z Ivy pozwoli\u0142a zminimalizowa\u0107 rekompilacjeo kody po ka\u017cdej zmianie, tym samym przyspieszaj\u0105c ca\u0142e rozwi\u0105zanie. Drugie usprawnienie, to rozbudowanie funkcjonalno\u015bci dotycz\u0105cych template'\u00f3w i to tutaj nale\u017cy doszukiwa\u0107 si\u0119 najwi\u0119kszych rewolucji. Nowy Language Service obiecuje zar\u00f3wno lepszy type checking jaki i code completion. Musicie przyzna\u0107, \u017ce brzmi to co najmniej obiecuj\u0105co.<\/p><figure class=\"kg-card kg-image-card kg-card-hascaption\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/08\/img_610d0d42c2275.gif\" class=\"kg-image\" alt loading=\"lazy\"><figcaption>Language Service to fajne usprawnienie, ale widzieli\u015bcie ju\u017c vsinder? To dopiero prawdziwy game changer dla VS Code!&nbsp;<\/figcaption><\/figure><p>My w projekcie u\u017cywamy InteliJ (kt\u00f3ry u\u017cywa pod spodem swojej implementacji Language Service), wi\u0119c jeszcze nie mieli\u015bmy okazji przekona\u0107 si\u0119, o jak du\u017cym usprawnieniu tutaj m\u00f3wimy. Nie zmienia to jednak faktu, \u017ce zgodnie z State of JavaScript 2020 VS Code ju\u017c dawno zostawi\u0142 konkurencj\u0119 w tyle i to w tym IDE teraz toczy si\u0119 najbardziej zaci\u0119ta walka mi\u0119dzy wielk\u0105 tr\u00f3jk\u0105 framework\u00f3w o jak najlepsze do\u015bwiadczenia programist\u00f3w. Je\u015bli mieli\u015bcie ju\u017c okazj\u0119 wypr\u00f3bowa\u0107 Language Service, to koniecznie dajcie zna\u0107, czy z Waszej perspektywy skok jako\u015bciowy jest tak du\u017cy jak twierdz\u0105 \u00a0tw\u00f3rcy Angulara.<\/p><h3 id=\"-r-d-a--2\">\u0179r\u00f3d\u0142a:<\/h3><p><a href=\"https:\/\/blog.angular.io\/under-the-hood-of-the-language-service-ab763c26f522\">https:\/\/blog.angular.io\/under-the-hood-of-the-language-service-ab763c26f522<\/a><br \/><a href=\"https:\/\/www.youtube.com\/watch?v=doVYC32hjIw\">https:\/\/www.youtube.com\/watch?v=doVYC32hjIw<\/a><br \/><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=benawad.vsinder\">https:\/\/marketplace.visualstudio.com\/items?itemName=benawad.vsinder<\/a><\/p><hr \/><p>Je\u015bli chcesz otrzymywa\u0107 tego typu tre\u015bci spersonalizowane pod Ciebie, pobierz Vived!<\/p><ul><li><a href=\"https:\/\/apple.co\/3fB8Kcf\">App Store<\/a> <\/li><li><a href=\"https:\/\/bit.ly\/3m421dx\">Play Store<\/a> <\/li><li><a href=\"https:\/\/bit.ly\/3m9Bewn\">Wersja PWA<\/a> <\/li><\/ul>"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10179","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=10179"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10179\/revisions"}],"predecessor-version":[{"id":10651,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10179\/revisions\/10651"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=10179"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=10179"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=10179"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}