{"id":9994,"date":"2022-03-19T10:23:53","date_gmt":"2022-03-19T09:23:53","guid":{"rendered":"https:\/\/vived.io\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/"},"modified":"2022-09-19T13:19:59","modified_gmt":"2022-09-19T11:19:59","slug":"software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/","title":{"rendered":"Software Craftsmanship Saturday vol. 80 &#8211; Nowe Go, Fuchsia OS, node-icp przeprowadza atak Supply Chain"},"content":{"rendered":"\n<h2 id=\"1-go-1-18-wprowadza-generyki-i-testy-fuzzowane\" data-num=1>1. Go 1.18 wprowadza Generyki (i testy fuzzowane)<\/h2>\n\n\n\n<p>Je\u017celi chodzi o j\u0119zyki programowania, Go z pewno\u015bci\u0105 nale\u017cy do najwi\u0119kszych sukces\u00f3w ostatnich lat. Od swojego debiutu w 2009 roku, regularnie obserwowa\u0107 mo\u017cemy jego coraz szersze u\u017cycie, zw\u0142aszcza w \u015brodowisku dev- i sys-opsowym. Pomimo niew\u0105tpliwych osi\u0105gni\u0119\u0107 i zalet, ci\u0105gle znale\u017a\u0107 mo\u017cna by\u0142o ogrom ludzi, kt\u00f3rzy uwa\u017cali, \u017ce nie nale\u017cy traktowa\u0107 go jako \u201cprawdziwy\u201d j\u0119zyk programowania. Powodem ku temu by\u0142 brak jego wsparcia dla typ\u00f3w sparametryzowanych, potocznie zwanych \u201cgenerykami\u201d. Z przyjemno\u015bci\u0105 chc\u0119 og\u0142osi\u0107 wi\u0119c, \u017ce ten argument nay-sayerom mo\u017cna wybi\u0107 z r\u0105k <a href=\"https:\/\/go.dev\/doc\/go1.18\">wraz z premier\u0105 Go 1.18<\/a>, kt\u00f3ry przez samych tw\u00f3rc\u00f3w okre\u015blany jest jako \u201cnajwi\u0119ksze wydanie Go od czasu jego premiery\u201d.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a88b67b9672.png\" alt=\"\"\/><figcaption>Aczkolwiek definicja \u201cprawilnego j\u0119zyka\u201d ci\u0105gle si\u0119 przesuwa<\/figcaption><\/figure>\n\n\n\n<p>To, \u017ce generyki pojawi\u0105 si\u0119 w Go by\u0142o wiadome ju\u017c od pewnego czasu &#8211; oryginalny proposal dla tej funkcjonalno\u015bci <a href=\"https:\/\/go.googlesource.com\/proposal\/+\/refs\/heads\/master\/design\/43651-type-parameters.md\">pojawi\u0142 si\u0119 jeszcze w zesz\u0142ym roku<\/a>. W tym te\u017c d\u0142ugim dokumencie znajdziecie pe\u0142n\u0105 specyfikacj\u0119 tego, co pojawi\u0142o si\u0119 wraz z nowym wydaniem. Nie b\u0119d\u0119 tutaj zanudza\u0142 Was tym, do czego generyki s\u0142u\u017c\u0105 &#8211; dla tych kt\u00f3rzy nie kojarz\u0105 konceptu, za pomoc\u0105 typ\u00f3w og\u00f3lnych (bo tak to si\u0119 powinno chyba t\u0142umaczy\u0107) mo\u017cna deklarowa\u0107 i u\u017cywa\u0107 funkcje, kt\u00f3re s\u0105 napisane do pracy z dowolnym zestawem typ\u00f3w dostarczonych przez wywo\u0142anie kodu (np. kolekcja dowolnych element\u00f3w, niezale\u017cnie od tego czy przechowywany jest w niej String czy Int, zawsze nale\u017cy istnie\u0107 mo\u017cliwo\u015b\u0107 dodania nowego elementu). W sk\u0142adni j\u0119zyka wygl\u0105da to za\u015b nast\u0119puj\u0105co:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>func Print2Same&#091;T any](s1 &#091;]T, s2 &#091;]T) { ... }<\/code><\/pre>\n\n\n\n<p>Oczywi\u015bcie, koncept jest bardzo zniuansowany (jak w ka\u017cdym j\u0119zyku), tak\u017ce je\u015bli realnie my\u015blicie o pobawianiu si\u0119 ca\u0142o\u015bci\u0105, zach\u0119camy do zapoznania si\u0119 z <a href=\"https:\/\/go.dev\/doc\/tutorial\/generics\">min. oficjalnym tutorialem<\/a>.<\/p>\n\n\n\n<p>Go 1.18 to jednak nie tylko generyki, ale tak\u017ce tak zwany fuzzing, kt\u00f3rego Go (jak chwal\u0105 si\u0119 tw\u00f3rcy) zaimplementowa\u0142o w \u201cstandardzie\u201d jako pierwszy du\u017cy j\u0119zyk programowania. Fuzzing to rodzaj automatycznego testowania, kt\u00f3ry w spos\u00f3b ci\u0105g\u0142y manipuluje danymi wej\u015bciowymi programu w celu znalezienia b\u0142\u0119d\u00f3w. Mo\u017cna je rozumie\u0107 jako rodzaj \u201cchaos test\u00f3w\u201d dla kodu \u017ar\u00f3d\u0142owego &#8211; poniewa\u017c fuzzer mo\u017ce dotrze\u0107 do skrajnych przypadk\u00f3w, kt\u00f3re ludzie cz\u0119sto przeoczaj\u0105, testy fuzz mog\u0105 by\u0107 szczeg\u00f3lnie cenne przy znajdowaniu min. luk w zabezpieczeniach. Fuzzing w Go jest inteligentny i zosta\u0142 zaimplementowany tak, aby inteligentnie przej\u015b\u0107 przez fuzowany kod i nie zg\u0142asza\u0107 nadmiarowych b\u0142\u0119d\u00f3w. Oczywi\u015bcie, magii nie ma, i \u017ceby ca\u0142o\u015b\u0107 mog\u0142a dzia\u0142a\u0107 <a href=\"https:\/\/go.dev\/doc\/fuzz\/#glos-fuzz-test\">niezb\u0119dne jest napisania odpowiedniego przypadku testowego<\/a> &#8211; przyk\u0142ad znajdziecie poni\u017cej:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a88b6adb894.png\" alt=\"\" width=\"818\" height=\"306\"\/><\/figure><\/div>\n\n\n<p>Dobra, to kto si\u0119 przekwalifikuje na programist\u0119 Go?&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a88b6c719eb.png\" alt=\"\"\/><figcaption>Je\u015bli generyki Was nie przekona\u0142y, to jedno nie pozostawia w\u0105tpliwo\u015bci &#8211; \u017caden inny j\u0119zyk programowania nie posiada tak cudownego oficjalnego (jak i nieoficjalnego) merchu.&nbsp;&nbsp;<\/figcaption><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/go.dev\/doc\/go1.18\">Go 1.18 Release Notes &#8211; The Go Programming Language<\/a><\/li><li><a href=\"https:\/\/go.googlesource.com\/proposal\/+\/refs\/heads\/master\/design\/43651-type-parameters.md\">Type Parameters Proposal<\/a><\/li><li><a href=\"https:\/\/go.dev\/doc\/fuzz\/#glos-fuzz-test\">Go Fuzzing &#8211; The Go Programming Language<\/a><\/li><li><a href=\"https:\/\/go.dev\/doc\/tutorial\/generics\">Tutorial: Getting started with generics &#8211; The Go Programming Language<\/a><\/li><\/ul>\n\n\n\n<h2 id=\"2-node-ipc-przeprowadza-atak-typu-supply-chain-na-programistow-z-rosji-i-bialorusi\" data-num=2>2. node-ipc przeprowadza atak typu Supply-Chain na programist\u00f3w z Rosji i Bia\u0142orusi<\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a88b6d5dffe.png\" alt=\"\"\/><\/figure><\/div>\n\n\n<p>Ja ju\u017c naprawd\u0119 nie chcia\u0142em dzisiaj wprowadza\u0107 temat\u00f3w zwi\u0105zanych z wydarzeniami za nasz\u0105 wschodni\u0105 granic\u0105, ale troch\u0119 si\u0119 nie da &#8211; kazus modu\u0142u <a href=\"https:\/\/www.npmjs.com\/package\/peacenotwar\">peacenotwar<\/a> jest zbyt niezwyk\u0142ym zjawiskiem, \u017ceby o nim nie napisa\u0107. Rozwa\u017ca\u0142em umieszczenie go ju\u017c w ramach pisanego przeze mnie w tym tygodniu (go\u015bcinnie) Frontendowego Czwartku, ale stwierdzi\u0142em, \u017ce cho\u0107 temat dotyczy JS, to jednak nale\u017cy mu si\u0119 troch\u0119 szersza publika.<\/p>\n\n\n\n<p>W zesz\u0142\u0105 \u015brod\u0119 dosz\u0142o bowiem do ataku typu supply-chain na u\u017cytkownik\u00f3w jednego z najwi\u0119kszych framework\u00f3w JavaScript &#8211; Vue.js. Vue u\u017cywa zale\u017cno\u015bci na pakiet node-ipc, a jego tw\u00f3rca postanowi\u0142 wyrazi\u0107 swoje \u201cniezadowolenie\u201d z sytuacji na \u015bwiecie poprzez dorzucenie do kodu pakietu peacenotwar. Ten po zaimportowaniu jako zale\u017cno\u015b\u0107 i uruchomieniu przez projekt, sprawdza\u0142, czy komputer hosta mia\u0142 adres IP w Rosji lub na Bia\u0142orusi, a je\u015bli tak, nadpisywa\u0142y ka\u017cdy plik, jaki m\u00f3g\u0142, symbolem serca. Wersja \u017cy\u0142a wyj\u0105tkowo kr\u00f3tko, a kolejna tworzy\u0142a ju\u017c tylko dodatkowe pliki na dyskach u\u017cytkownik\u00f3w z przekazem antywojennym. Jak donosi portal snyk.io, <a href=\"https:\/\/snyk.io\/blog\/peacenotwar-malicious-npm-node-ipc-package-vulnerability\/\">kt\u00f3ry stworzy\u0142 timeline ca\u0142ego incydentu<\/a>, lista zaatakowanych aplikacji raczej nie nale\u017cy do d\u0142ugich.&nbsp; Nadal mieli\u015bmy jednak do czynienia z incydentem, kt\u00f3ry w skali CVE otrzyma\u0142 <a href=\"https:\/\/security.snyk.io\/vuln\/SNYK-JS-NODEIPC-2426370\">prawie maksymaln\u0105 ocen\u0119 9.8<\/a>.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.npmjs.com\/package\/peacenotwar\">Autor zarzeka si\u0119 w dokumentacji<\/a>,&nbsp; \u017ce pakiet peacenotwar by\u0142 podobno stworzony w celu u\u015bwiadomienia wszystkim, jak bardzo niebezpieczny potencja\u0142 maj\u0105 ataki Supply Chain (st\u0105d te\u017c od pocz\u0105tku sam ogranicza\u0142 jego skuteczno\u015b\u0107). Spo\u0142eczno\u015b\u0107 nie doceni\u0142a jednak tej formy edukacji, <a href=\"https:\/\/github.com\/RIAEvangelist\/node-ipc\/issues?q=is%3Aissue+is%3Aclosed\">wr\u0119cz zalewaj\u0105c projekt zg\u0142oszeniami<\/a>, sukcesywnie teraz czyszczonymi przez autora, kt\u00f3remu ca\u0142a sytuacja wybuch\u0142a chyba troch\u0119 w twarz. Ci\u0119\u017cko jest naprawd\u0119 broni\u0107 jego decyzji &#8211; od dawna m\u00f3wi si\u0119 bowiem, jak niestabilny jest tak zwany \u0142a\u0144cuch dostaw wsp\u00f3\u0142czesnego oprogramowania, a tego typu dzia\u0142ania tylko dodatkowo podkopuj\u0105 jego wiarygodno\u015b\u0107, rzutuj\u0105c na ca\u0142\u0105 spo\u0142eczno\u015b\u0107 programistyczn\u0105.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a88b6e1e9e2.gif\" alt=\"\"\/><figcaption>Osobi\u015bcie traktuj\u0119 to jako nic innego form\u0119 softwarowego wandalizmu.<\/figcaption><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.npmjs.com\/package\/peacenotwar\">peacenotwar &#8211; npm<\/a><\/li><li><a href=\"https:\/\/security.snyk.io\/vuln\/SNYK-JS-NODEIPC-2426370\">Malicious Package in node-ipc | CVE-2022-23812 | Snyk<\/a><\/li><li><a href=\"https:\/\/snyk.io\/blog\/peacenotwar-malicious-npm-node-ipc-package-vulnerability\/\">Alert: peacenotwar module sabotages npm developers in the node-ipc package to protest the invasion of Ukraine | Snyk<\/a><\/li><li><a href=\"https:\/\/github.com\/RIAEvangelist\/node-ipc\/issues?q=is%3Aissue+is%3Aclosed\">https:\/\/github.com\/RIAEvangelist\/node-ipc\/issues?q=is%3Aissue+is%3Aclosed<\/a><\/li><\/ul>\n\n\n\n<h2 id=\"3-fuchsia-os-publikuje-model-komunikacji-miedzyprocesowej\" data-num=3>3. Fuchsia OS publikuje model komunikacji mi\u0119dzyprocesowej<\/h2>\n\n\n\n<p>A na koniec b\u0119dzie o Fuchsii, czyli jednym z ciekawszych projekt\u00f3w technologicznych ostatnich lat.<\/p>\n\n\n\n<p>Ci\u0105gle pami\u0119tam, jak par\u0119 lat temu (Wikipedia przywo\u0142uj\u0119 tu dat\u0119 Sierpnia 2016, a ja im wierz\u0119), nag\u0142\u00f3wki prasowe obieg\u0142a informacja o tym, \u017ce Google pracuje nad nowym systemem operacyjnym, kt\u00f3ry w przysz\u0142o\u015bci zast\u0105pi\u0107 ma Androida. Obok Chrome OS by\u0142 to ju\u017c drugi eksperyment tego typu ze strony Alphabetu, ale to, co rozbudza wyobra\u017anie to porzucenie kernela Linuxowego, na rzecz Zircona, kt\u00f3ry nale\u017cy do tak zwanych mikrokerneli &#8211; rodzajem projektu j\u0105dra, kontrastuj\u0105cym z j\u0105drem monolitycznym. W j\u0105drze monolitycznym, jak sama nazwa wskazuje, ca\u0142e j\u0105dro jest pojedynczym programem, kt\u00f3ry implementuje wszystkie niezb\u0119dne API (np. wywo\u0142ania systemowe Unix, w\u0105tki, procesy, system plik\u00f3w itp.). W mikrokernelach baz\u0105 jest za\u015b bardzo ma\u0142e j\u0105dro, kt\u00f3re implementuje minimalne API (np. bardzo podstawow\u0105 koncepcj\u0119 w\u0105tk\u00f3w wykonania, uprawnie\u0144 i przekazywania wiadomo\u015bci), do kt\u00f3rego dok\u0142adane s\u0105 kolejne API, kt\u00f3rych potrzebuj\u0105 aplikacje &#8211; rzeczywisty system plik\u00f3w, procesy czy wywo\u0142ania systemowe. Dzi\u0119ki temu zdaniem Google nadaj\u0105 si\u0119 idealnie jako lekki, uniwersalny system operacyjny dla sprz\u0119t\u00f3w nap\u0119dzanych przez Google Assistant.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a88b6f29e3d.png\" alt=\"\"\/><figcaption>W nomenklaturze istnieje te\u017c co\u015b takiego jak unikernele, kt\u00f3re s\u0105 jeszcze innym konceptem, poza zakresem moich obecnych wynurze\u0144 &#8211; je\u015bli jednak chcecie si\u0119 o nich dowiedzie\u0107 wi\u0119cej, zapraszam do \u015bwietnego tekstu <a href=\"https:\/\/changelog.com\/posts\/the-big-idea-around-unikernels\">The big idea around unikernels<\/a>.<\/figcaption><\/figure><\/div>\n\n\n<p>Fuchsia od tamtej pory trafi\u0142a na Google Nest (pr\u00f3bowa\u0142em, troch\u0119 \u00af\\_(\u30c4)_\/\u00af, jak jeste\u015bcie ciekawi jak to wygl\u0105da w praktyce &#8211; <a href=\"https:\/\/www.youtube.com\/watch?v=8GGSy1c8D7k\">nagranie z test\u00f3w od 9to5Google<\/a>), dosta\u0142a zapowied\u017a wsparcia dla Fluttera, a pocz\u0105tkiem marca tego roku <a href=\"https:\/\/9to5google.com\/2022\/03\/04\/full-google-chrome-browser-running-on-fuchsia\/\">og\u0142oszono te\u017c<\/a>, \u017ce system operacyjny jest w stanie odpala\u0107 przegl\u0105dark\u0119 Chrome &#8211; og\u00f3lnie dzieje si\u0119. Bezpo\u015bredni\u0105 za\u015b motywacj\u0105 zrobienia Wam aktualizacji w tym temacie by\u0142o za\u015b udost\u0119pnienie <a href=\"https:\/\/fuchsia.dev\/fuchsia-src\/concepts\/fidl\/overview\">standardu komunikacji mi\u0119dzyprocesowej<\/a> o nazwie FIDL (Fuchsia Interface Definition Language). W FIDL dost\u0119pna jest zar\u00f3wno synchroniczna, jaki asynchroniczna komunikacja mi\u0119dzy procesami (jej r\u00f3\u017cne tryby zosta\u0142y dok\u0142adnie opisane w linkowanym standardzie), a interoperacyjno\u015b\u0107 mi\u0119dzy r\u00f3\u017cnymi j\u0119zykami programowania zapewniona zosta\u0142a przy u\u017cyciu plik\u00f3w .fidl, kt\u00f3re definiuj\u0105 protok\u00f3\u0142 &#8211; ich format przypomina mi troch\u0119 Smithy\u2019ego od Amazona. Na podstawie rzeczonych plik\u00f3w, generowane maj\u0105 by\u0107 odpowiednie klienckie biblioteki do j\u0119zyk\u00f3w programowania &#8211; na ten moment wspierane jest C, C++, Go, Dart i Rust, ale zapowiedziano ju\u017c wsparcie cho\u0107by dla Javy i JavaScripta (bo jak\u017ceby inaczej).<\/p>\n\n\n\n<p>A jak ju\u017c przy systemach operacyjnych jeste\u015bmy &#8211; mam dla Was \u015bwietny podcast od CoRecursive <a href=\"https:\/\/corecursive.com\/serenity-os-with-andreas-kling\/\">na temat powstawania Serenity OS<\/a>. Jest to system operacyjny pisana przez jedn\u0105 (!) osob\u0119, \u0142\u0105cz\u0105ca estetyk\u0119 lat 90-tych i nowoczesne podej\u015bcie do tego typu oprogramowania. Je\u015bli za\u015b ciekawi Was, jakie motywacje mog\u0105 kierowa\u0107 kim\u015b, kto chce stworzy\u0107 w\u0142asny system operacyjny, to okazuje si\u0119, \u017ce jednym z nich mo\u017ce by\u0107 cho\u0107by\u2026 walka z uzale\u017cnieniem od narkotyk\u00f3w. Serenity OS to naprawd\u0119 fascynuj\u0105ca historia, dlatego jeszcze raz polecam ods\u0142uchanie tego, oraz innych odcink\u00f3w CoRecursive &#8211; jest to m\u00f3j ulubiony podcast o programowaniu.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a88b6fd459c.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Z jakiego\u015b powodu m\u00f3j m\u00f3zg dostaje sza\u0142u, gdy widz\u0119 powy\u017cszego screena<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.youtube.com\/watch?v=8GGSy1c8D7k\">Testing Fuchsia on a Google Nest Hub!<\/a><\/li><li><a href=\"https:\/\/9to5google.com\/2022\/03\/04\/full-google-chrome-browser-running-on-fuchsia\/\">Here&#8217;s the full Google Chrome browser running on Fuchsia [Gallery]<\/a><\/li><li><a href=\"https:\/\/fuchsia.dev\/fuchsia-src\/concepts\/fidl\/overview\">FIDL Overview | Fuchsia<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Dzisiaj mamy mamy naprawd\u0119 fajn\u0105, in\u017cyniersk\u0105 edycj\u0119 &#8211; nowe Go z generykami i detale architektoniczne Fuchsia OS z pewno\u015bci\u0105 spodobaj\u0105 si\u0119 wszystkim tym lubi\u0105cym wertowa\u0107  dokumenty designowe. Ale oczywi\u015bcie, \u017ceby nie by\u0142o tak r\u00f3\u017cowo, mamy dla Was bardzo interesuj\u0105cy atak typu Supply Chain.<\/p>\n","protected":false},"author":10,"featured_media":7991,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[266],"tags":[],"class_list":["post-9994","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-craftsmanship"],"acf":{"estimated_reading_time":"7","weekly_summary":true,"push_notification_image":"https:\/\/vived.io\/wp-content\/uploads\/2022\/03\/SCS-3.png","feature_image_visible":false,"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>Software Craftsmanship Saturday vol. 80 - Nowe Go, Fuchsia OS, node-icp przeprowadza atak Supply Chain - 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\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Software Craftsmanship Saturday vol. 80 - Nowe Go, Fuchsia OS, node-icp przeprowadza atak Supply Chain - Vived\" \/>\n<meta property=\"og:description\" content=\"Dzisiaj mamy mamy naprawd\u0119 fajn\u0105, in\u017cyniersk\u0105 edycj\u0119 - nowe Go z generykami i detale architektoniczne Fuchsia OS z pewno\u015bci\u0105 spodobaj\u0105 si\u0119 wszystkim tym lubi\u0105cym wertowa\u0107 dokumenty designowe. Ale oczywi\u015bcie, \u017ceby nie by\u0142o tak r\u00f3\u017cowo, mamy dla Was bardzo interesuj\u0105cy atak typu Supply Chain.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2022-03-19T09:23:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:19:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/03\/SCS-2.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=\"Artur Skowro\u0144ski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/03\/SCS-3.png\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"Software Craftsmanship Saturday vol. 80 &#8211; Nowe Go, Fuchsia OS, node-icp przeprowadza atak Supply Chain\",\"datePublished\":\"2022-03-19T09:23:53+00:00\",\"dateModified\":\"2022-09-19T11:19:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/\"},\"wordCount\":1536,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/03\/68747470733a2f2f676f6c616e672e6f72672f646f632f676f706865722f6669766579656172732e6a7067-1.jpeg\",\"articleSection\":[\"Craftsmanship\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/\",\"url\":\"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/\",\"name\":\"Software Craftsmanship Saturday vol. 80 - Nowe Go, Fuchsia OS, node-icp przeprowadza atak Supply Chain - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/03\/68747470733a2f2f676f6c616e672e6f72672f646f632f676f706865722f6669766579656172732e6a7067-1.jpeg\",\"datePublished\":\"2022-03-19T09:23:53+00:00\",\"dateModified\":\"2022-09-19T11:19:59+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/03\/68747470733a2f2f676f6c616e672e6f72672f646f632f676f706865722f6669766579656172732e6a7067-1.jpeg\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/03\/68747470733a2f2f676f6c616e672e6f72672f646f632f676f706865722f6669766579656172732e6a7067-1.jpeg\",\"width\":1262,\"height\":733},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Software Craftsmanship Saturday vol. 80 &#8211; Nowe Go, Fuchsia OS, node-icp przeprowadza atak Supply Chain\"}]},{\"@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\/0eb0878110cb27edfbfe46e841fe6db3\",\"name\":\"Artur Skowro\u0144ski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g\",\"caption\":\"Artur Skowro\u0144ski\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Software Craftsmanship Saturday vol. 80 - Nowe Go, Fuchsia OS, node-icp przeprowadza atak Supply Chain - 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\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/","og_locale":"pl_PL","og_type":"article","og_title":"Software Craftsmanship Saturday vol. 80 - Nowe Go, Fuchsia OS, node-icp przeprowadza atak Supply Chain - Vived","og_description":"Dzisiaj mamy mamy naprawd\u0119 fajn\u0105, in\u017cyniersk\u0105 edycj\u0119 - nowe Go z generykami i detale architektoniczne Fuchsia OS z pewno\u015bci\u0105 spodobaj\u0105 si\u0119 wszystkim tym lubi\u0105cym wertowa\u0107 dokumenty designowe. Ale oczywi\u015bcie, \u017ceby nie by\u0142o tak r\u00f3\u017cowo, mamy dla Was bardzo interesuj\u0105cy atak typu Supply Chain.","og_url":"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/","og_site_name":"Vived","article_published_time":"2022-03-19T09:23:53+00:00","article_modified_time":"2022-09-19T11:19:59+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/03\/SCS-2.png","type":"image\/png"}],"author":"Artur Skowro\u0144ski","twitter_card":"summary_large_image","twitter_image":"https:\/\/vived.io\/wp-content\/uploads\/2022\/03\/SCS-3.png","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"Software Craftsmanship Saturday vol. 80 &#8211; Nowe Go, Fuchsia OS, node-icp przeprowadza atak Supply Chain","datePublished":"2022-03-19T09:23:53+00:00","dateModified":"2022-09-19T11:19:59+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/"},"wordCount":1536,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/03\/68747470733a2f2f676f6c616e672e6f72672f646f632f676f706865722f6669766579656172732e6a7067-1.jpeg","articleSection":["Craftsmanship"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/","url":"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/","name":"Software Craftsmanship Saturday vol. 80 - Nowe Go, Fuchsia OS, node-icp przeprowadza atak Supply Chain - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/03\/68747470733a2f2f676f6c616e672e6f72672f646f632f676f706865722f6669766579656172732e6a7067-1.jpeg","datePublished":"2022-03-19T09:23:53+00:00","dateModified":"2022-09-19T11:19:59+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/03\/68747470733a2f2f676f6c616e672e6f72672f646f632f676f706865722f6669766579656172732e6a7067-1.jpeg","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/03\/68747470733a2f2f676f6c616e672e6f72672f646f632f676f706865722f6669766579656172732e6a7067-1.jpeg","width":1262,"height":733},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/software-craftsmanship-saturday-vol-80-nowe-go-fuchsia-os-node-icp-przeprowadza-atak-supply-chain\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"Software Craftsmanship Saturday vol. 80 &#8211; Nowe Go, Fuchsia OS, node-icp przeprowadza atak Supply Chain"}]},{"@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\/0eb0878110cb27edfbfe46e841fe6db3","name":"Artur Skowro\u0144ski","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","caption":"Artur Skowro\u0144ski"}}]}},"blocks_vived":[{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>1. Go 1.18 wprowadza Generyki (i testy fuzzowane)<\/h2>\n","innerContent":["\n<h2>1. Go 1.18 wprowadza Generyki (i testy fuzzowane)<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Je\u017celi chodzi o j\u0119zyki programowania, Go z pewno\u015bci\u0105 nale\u017cy do najwi\u0119kszych sukces\u00f3w ostatnich lat. Od swojego debiutu w 2009 roku, regularnie obserwowa\u0107 mo\u017cemy jego coraz szersze u\u017cycie, zw\u0142aszcza w \u015brodowisku dev- i sys-opsowym. Pomimo niew\u0105tpliwych osi\u0105gni\u0119\u0107 i zalet, ci\u0105gle znale\u017a\u0107 mo\u017cna by\u0142o ogrom ludzi, kt\u00f3rzy uwa\u017cali, \u017ce nie nale\u017cy traktowa\u0107 go jako \u201cprawdziwy\u201d j\u0119zyk programowania. Powodem ku temu by\u0142 brak jego wsparcia dla typ\u00f3w sparametryzowanych, potocznie zwanych \u201cgenerykami\u201d. Z przyjemno\u015bci\u0105 chc\u0119 og\u0142osi\u0107 wi\u0119c, \u017ce ten argument nay-sayerom mo\u017cna wybi\u0107 z r\u0105k <a href=\"https:\/\/go.dev\/doc\/go1.18\">wraz z premier\u0105 Go 1.18<\/a>, kt\u00f3ry przez samych tw\u00f3rc\u00f3w okre\u015blany jest jako \u201cnajwi\u0119ksze wydanie Go od czasu jego premiery\u201d.<\/p>\n","innerContent":["\n<p>Je\u017celi chodzi o j\u0119zyki programowania, Go z pewno\u015bci\u0105 nale\u017cy do najwi\u0119kszych sukces\u00f3w ostatnich lat. Od swojego debiutu w 2009 roku, regularnie obserwowa\u0107 mo\u017cemy jego coraz szersze u\u017cycie, zw\u0142aszcza w \u015brodowisku dev- i sys-opsowym. Pomimo niew\u0105tpliwych osi\u0105gni\u0119\u0107 i zalet, ci\u0105gle znale\u017a\u0107 mo\u017cna by\u0142o ogrom ludzi, kt\u00f3rzy uwa\u017cali, \u017ce nie nale\u017cy traktowa\u0107 go jako \u201cprawdziwy\u201d j\u0119zyk programowania. Powodem ku temu by\u0142 brak jego wsparcia dla typ\u00f3w sparametryzowanych, potocznie zwanych \u201cgenerykami\u201d. Z przyjemno\u015bci\u0105 chc\u0119 og\u0142osi\u0107 wi\u0119c, \u017ce ten argument nay-sayerom mo\u017cna wybi\u0107 z r\u0105k <a href=\"https:\/\/go.dev\/doc\/go1.18\">wraz z premier\u0105 Go 1.18<\/a>, kt\u00f3ry przez samych tw\u00f3rc\u00f3w okre\u015blany jest jako \u201cnajwi\u0119ksze wydanie Go od czasu jego premiery\u201d.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":[],"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a88b67b9672.png\" alt=\"\"\/><figcaption>Aczkolwiek definicja \u201cprawilnego j\u0119zyka\u201d ci\u0105gle si\u0119 przesuwa<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a88b67b9672.png\" alt=\"\"\/><figcaption>Aczkolwiek definicja \u201cprawilnego j\u0119zyka\u201d ci\u0105gle si\u0119 przesuwa<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>To, \u017ce generyki pojawi\u0105 si\u0119 w Go by\u0142o wiadome ju\u017c od pewnego czasu - oryginalny proposal dla tej funkcjonalno\u015bci <a href=\"https:\/\/go.googlesource.com\/proposal\/+\/refs\/heads\/master\/design\/43651-type-parameters.md\">pojawi\u0142 si\u0119 jeszcze w zesz\u0142ym roku<\/a>. W tym te\u017c d\u0142ugim dokumencie znajdziecie pe\u0142n\u0105 specyfikacj\u0119 tego, co pojawi\u0142o si\u0119 wraz z nowym wydaniem. Nie b\u0119d\u0119 tutaj zanudza\u0142 Was tym, do czego generyki s\u0142u\u017c\u0105 - dla tych kt\u00f3rzy nie kojarz\u0105 konceptu, za pomoc\u0105 typ\u00f3w og\u00f3lnych (bo tak to si\u0119 powinno chyba t\u0142umaczy\u0107) mo\u017cna deklarowa\u0107 i u\u017cywa\u0107 funkcje, kt\u00f3re s\u0105 napisane do pracy z dowolnym zestawem typ\u00f3w dostarczonych przez wywo\u0142anie kodu (np. kolekcja dowolnych element\u00f3w, niezale\u017cnie od tego czy przechowywany jest w niej String czy Int, zawsze nale\u017cy istnie\u0107 mo\u017cliwo\u015b\u0107 dodania nowego elementu). W sk\u0142adni j\u0119zyka wygl\u0105da to za\u015b nast\u0119puj\u0105co:<\/p>\n","innerContent":["\n<p>To, \u017ce generyki pojawi\u0105 si\u0119 w Go by\u0142o wiadome ju\u017c od pewnego czasu - oryginalny proposal dla tej funkcjonalno\u015bci <a href=\"https:\/\/go.googlesource.com\/proposal\/+\/refs\/heads\/master\/design\/43651-type-parameters.md\">pojawi\u0142 si\u0119 jeszcze w zesz\u0142ym roku<\/a>. W tym te\u017c d\u0142ugim dokumencie znajdziecie pe\u0142n\u0105 specyfikacj\u0119 tego, co pojawi\u0142o si\u0119 wraz z nowym wydaniem. Nie b\u0119d\u0119 tutaj zanudza\u0142 Was tym, do czego generyki s\u0142u\u017c\u0105 - dla tych kt\u00f3rzy nie kojarz\u0105 konceptu, za pomoc\u0105 typ\u00f3w og\u00f3lnych (bo tak to si\u0119 powinno chyba t\u0142umaczy\u0107) mo\u017cna deklarowa\u0107 i u\u017cywa\u0107 funkcje, kt\u00f3re s\u0105 napisane do pracy z dowolnym zestawem typ\u00f3w dostarczonych przez wywo\u0142anie kodu (np. kolekcja dowolnych element\u00f3w, niezale\u017cnie od tego czy przechowywany jest w niej String czy Int, zawsze nale\u017cy istnie\u0107 mo\u017cliwo\u015b\u0107 dodania nowego elementu). W sk\u0142adni j\u0119zyka wygl\u0105da to za\u015b nast\u0119puj\u0105co:<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/code","attrs":[],"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-code\"><code>func Print2Same&#91;T any](s1 &#91;]T, s2 &#91;]T) { ... }<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-code\"><code>func Print2Same&#91;T any](s1 &#91;]T, s2 &#91;]T) { ... }<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Oczywi\u015bcie, koncept jest bardzo zniuansowany (jak w ka\u017cdym j\u0119zyku), tak\u017ce je\u015bli realnie my\u015blicie o pobawianiu si\u0119 ca\u0142o\u015bci\u0105, zach\u0119camy do zapoznania si\u0119 z <a href=\"https:\/\/go.dev\/doc\/tutorial\/generics\">min. oficjalnym tutorialem<\/a>.<\/p>\n","innerContent":["\n<p>Oczywi\u015bcie, koncept jest bardzo zniuansowany (jak w ka\u017cdym j\u0119zyku), tak\u017ce je\u015bli realnie my\u015blicie o pobawianiu si\u0119 ca\u0142o\u015bci\u0105, zach\u0119camy do zapoznania si\u0119 z <a href=\"https:\/\/go.dev\/doc\/tutorial\/generics\">min. oficjalnym tutorialem<\/a>.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Go 1.18 to jednak nie tylko generyki, ale tak\u017ce tak zwany fuzzing, kt\u00f3rego Go (jak chwal\u0105 si\u0119 tw\u00f3rcy) zaimplementowa\u0142o w \u201cstandardzie\u201d jako pierwszy du\u017cy j\u0119zyk programowania. Fuzzing to rodzaj automatycznego testowania, kt\u00f3ry w spos\u00f3b ci\u0105g\u0142y manipuluje danymi wej\u015bciowymi programu w celu znalezienia b\u0142\u0119d\u00f3w. Mo\u017cna je rozumie\u0107 jako rodzaj \u201cchaos test\u00f3w\u201d dla kodu \u017ar\u00f3d\u0142owego - poniewa\u017c fuzzer mo\u017ce dotrze\u0107 do skrajnych przypadk\u00f3w, kt\u00f3re ludzie cz\u0119sto przeoczaj\u0105, testy fuzz mog\u0105 by\u0107 szczeg\u00f3lnie cenne przy znajdowaniu min. luk w zabezpieczeniach. Fuzzing w Go jest inteligentny i zosta\u0142 zaimplementowany tak, aby inteligentnie przej\u015b\u0107 przez fuzowany kod i nie zg\u0142asza\u0107 nadmiarowych b\u0142\u0119d\u00f3w. Oczywi\u015bcie, magii nie ma, i \u017ceby ca\u0142o\u015b\u0107 mog\u0142a dzia\u0142a\u0107 <a href=\"https:\/\/go.dev\/doc\/fuzz\/#glos-fuzz-test\">niezb\u0119dne jest napisania odpowiedniego przypadku testowego<\/a> - przyk\u0142ad znajdziecie poni\u017cej:<\/p>\n","innerContent":["\n<p>Go 1.18 to jednak nie tylko generyki, ale tak\u017ce tak zwany fuzzing, kt\u00f3rego Go (jak chwal\u0105 si\u0119 tw\u00f3rcy) zaimplementowa\u0142o w \u201cstandardzie\u201d jako pierwszy du\u017cy j\u0119zyk programowania. Fuzzing to rodzaj automatycznego testowania, kt\u00f3ry w spos\u00f3b ci\u0105g\u0142y manipuluje danymi wej\u015bciowymi programu w celu znalezienia b\u0142\u0119d\u00f3w. Mo\u017cna je rozumie\u0107 jako rodzaj \u201cchaos test\u00f3w\u201d dla kodu \u017ar\u00f3d\u0142owego - poniewa\u017c fuzzer mo\u017ce dotrze\u0107 do skrajnych przypadk\u00f3w, kt\u00f3re ludzie cz\u0119sto przeoczaj\u0105, testy fuzz mog\u0105 by\u0107 szczeg\u00f3lnie cenne przy znajdowaniu min. luk w zabezpieczeniach. Fuzzing w Go jest inteligentny i zosta\u0142 zaimplementowany tak, aby inteligentnie przej\u015b\u0107 przez fuzowany kod i nie zg\u0142asza\u0107 nadmiarowych b\u0142\u0119d\u00f3w. Oczywi\u015bcie, magii nie ma, i \u017ceby ca\u0142o\u015b\u0107 mog\u0142a dzia\u0142a\u0107 <a href=\"https:\/\/go.dev\/doc\/fuzz\/#glos-fuzz-test\">niezb\u0119dne jest napisania odpowiedniego przypadku testowego<\/a> - przyk\u0142ad znajdziecie poni\u017cej:<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","width":818,"height":306},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a88b6adb894.png\" alt=\"\" width=\"818\" height=\"306\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a88b6adb894.png\" alt=\"\" width=\"818\" height=\"306\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Dobra, to kto si\u0119 przekwalifikuje na programist\u0119 Go?&nbsp;<\/p>\n","innerContent":["\n<p>Dobra, to kto si\u0119 przekwalifikuje na programist\u0119 Go?&nbsp;<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a88b6c719eb.png\" alt=\"\"\/><figcaption>Je\u015bli generyki Was nie przekona\u0142y, to jedno nie pozostawia w\u0105tpliwo\u015bci - \u017caden inny j\u0119zyk programowania nie posiada tak cudownego oficjalnego (jak i nieoficjalnego) merchu.&nbsp;&nbsp;<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a88b6c719eb.png\" alt=\"\"\/><figcaption>Je\u015bli generyki Was nie przekona\u0142y, to jedno nie pozostawia w\u0105tpliwo\u015bci - \u017caden inny j\u0119zyk programowania nie posiada tak cudownego oficjalnego (jak i nieoficjalnego) merchu.&nbsp;&nbsp;<\/figcaption><\/figure>\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\/list","attrs":[],"innerBlocks":[],"innerHTML":"\n<ul><li><a href=\"https:\/\/go.dev\/doc\/go1.18\">Go 1.18 Release Notes - The Go Programming Language<\/a><\/li><li><a href=\"https:\/\/go.googlesource.com\/proposal\/+\/refs\/heads\/master\/design\/43651-type-parameters.md\">Type Parameters Proposal<\/a><\/li><li><a href=\"https:\/\/go.dev\/doc\/fuzz\/#glos-fuzz-test\">Go Fuzzing - The Go Programming Language<\/a><\/li><li><a href=\"https:\/\/go.dev\/doc\/tutorial\/generics\">Tutorial: Getting started with generics - The Go Programming Language<\/a><\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"https:\/\/go.dev\/doc\/go1.18\">Go 1.18 Release Notes - The Go Programming Language<\/a><\/li><li><a href=\"https:\/\/go.googlesource.com\/proposal\/+\/refs\/heads\/master\/design\/43651-type-parameters.md\">Type Parameters Proposal<\/a><\/li><li><a href=\"https:\/\/go.dev\/doc\/fuzz\/#glos-fuzz-test\">Go Fuzzing - The Go Programming Language<\/a><\/li><li><a href=\"https:\/\/go.dev\/doc\/tutorial\/generics\">Tutorial: Getting started with generics - The Go Programming Language<\/a><\/li><\/ul>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>2. node-ipc przeprowadza atak typu Supply-Chain na programist\u00f3w z Rosji i Bia\u0142orusi<\/h2>\n","innerContent":["\n<h2>2. node-ipc przeprowadza atak typu Supply-Chain na programist\u00f3w z Rosji i Bia\u0142orusi<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a88b6d5dffe.png\" alt=\"\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a88b6d5dffe.png\" alt=\"\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Ja ju\u017c naprawd\u0119 nie chcia\u0142em dzisiaj wprowadza\u0107 temat\u00f3w zwi\u0105zanych z wydarzeniami za nasz\u0105 wschodni\u0105 granic\u0105, ale troch\u0119 si\u0119 nie da - kazus modu\u0142u <a href=\"https:\/\/www.npmjs.com\/package\/peacenotwar\">peacenotwar<\/a> jest zbyt niezwyk\u0142ym zjawiskiem, \u017ceby o nim nie napisa\u0107. Rozwa\u017ca\u0142em umieszczenie go ju\u017c w ramach pisanego przeze mnie w tym tygodniu (go\u015bcinnie) Frontendowego Czwartku, ale stwierdzi\u0142em, \u017ce cho\u0107 temat dotyczy JS, to jednak nale\u017cy mu si\u0119 troch\u0119 szersza publika.<\/p>\n","innerContent":["\n<p>Ja ju\u017c naprawd\u0119 nie chcia\u0142em dzisiaj wprowadza\u0107 temat\u00f3w zwi\u0105zanych z wydarzeniami za nasz\u0105 wschodni\u0105 granic\u0105, ale troch\u0119 si\u0119 nie da - kazus modu\u0142u <a href=\"https:\/\/www.npmjs.com\/package\/peacenotwar\">peacenotwar<\/a> jest zbyt niezwyk\u0142ym zjawiskiem, \u017ceby o nim nie napisa\u0107. Rozwa\u017ca\u0142em umieszczenie go ju\u017c w ramach pisanego przeze mnie w tym tygodniu (go\u015bcinnie) Frontendowego Czwartku, ale stwierdzi\u0142em, \u017ce cho\u0107 temat dotyczy JS, to jednak nale\u017cy mu si\u0119 troch\u0119 szersza publika.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W zesz\u0142\u0105 \u015brod\u0119 dosz\u0142o bowiem do ataku typu supply-chain na u\u017cytkownik\u00f3w jednego z najwi\u0119kszych framework\u00f3w JavaScript - Vue.js. Vue u\u017cywa zale\u017cno\u015bci na pakiet node-ipc, a jego tw\u00f3rca postanowi\u0142 wyrazi\u0107 swoje \u201cniezadowolenie\u201d z sytuacji na \u015bwiecie poprzez dorzucenie do kodu pakietu peacenotwar. Ten po zaimportowaniu jako zale\u017cno\u015b\u0107 i uruchomieniu przez projekt, sprawdza\u0142, czy komputer hosta mia\u0142 adres IP w Rosji lub na Bia\u0142orusi, a je\u015bli tak, nadpisywa\u0142y ka\u017cdy plik, jaki m\u00f3g\u0142, symbolem serca. Wersja \u017cy\u0142a wyj\u0105tkowo kr\u00f3tko, a kolejna tworzy\u0142a ju\u017c tylko dodatkowe pliki na dyskach u\u017cytkownik\u00f3w z przekazem antywojennym. Jak donosi portal snyk.io, <a href=\"https:\/\/snyk.io\/blog\/peacenotwar-malicious-npm-node-ipc-package-vulnerability\/\">kt\u00f3ry stworzy\u0142 timeline ca\u0142ego incydentu<\/a>, lista zaatakowanych aplikacji raczej nie nale\u017cy do d\u0142ugich.&nbsp; Nadal mieli\u015bmy jednak do czynienia z incydentem, kt\u00f3ry w skali CVE otrzyma\u0142 <a href=\"https:\/\/security.snyk.io\/vuln\/SNYK-JS-NODEIPC-2426370\">prawie maksymaln\u0105 ocen\u0119 9.8<\/a>.<\/p>\n","innerContent":["\n<p>W zesz\u0142\u0105 \u015brod\u0119 dosz\u0142o bowiem do ataku typu supply-chain na u\u017cytkownik\u00f3w jednego z najwi\u0119kszych framework\u00f3w JavaScript - Vue.js. Vue u\u017cywa zale\u017cno\u015bci na pakiet node-ipc, a jego tw\u00f3rca postanowi\u0142 wyrazi\u0107 swoje \u201cniezadowolenie\u201d z sytuacji na \u015bwiecie poprzez dorzucenie do kodu pakietu peacenotwar. Ten po zaimportowaniu jako zale\u017cno\u015b\u0107 i uruchomieniu przez projekt, sprawdza\u0142, czy komputer hosta mia\u0142 adres IP w Rosji lub na Bia\u0142orusi, a je\u015bli tak, nadpisywa\u0142y ka\u017cdy plik, jaki m\u00f3g\u0142, symbolem serca. Wersja \u017cy\u0142a wyj\u0105tkowo kr\u00f3tko, a kolejna tworzy\u0142a ju\u017c tylko dodatkowe pliki na dyskach u\u017cytkownik\u00f3w z przekazem antywojennym. Jak donosi portal snyk.io, <a href=\"https:\/\/snyk.io\/blog\/peacenotwar-malicious-npm-node-ipc-package-vulnerability\/\">kt\u00f3ry stworzy\u0142 timeline ca\u0142ego incydentu<\/a>, lista zaatakowanych aplikacji raczej nie nale\u017cy do d\u0142ugich.&nbsp; Nadal mieli\u015bmy jednak do czynienia z incydentem, kt\u00f3ry w skali CVE otrzyma\u0142 <a href=\"https:\/\/security.snyk.io\/vuln\/SNYK-JS-NODEIPC-2426370\">prawie maksymaln\u0105 ocen\u0119 9.8<\/a>.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p><a href=\"https:\/\/www.npmjs.com\/package\/peacenotwar\">Autor zarzeka si\u0119 w dokumentacji<\/a>,&nbsp; \u017ce pakiet peacenotwar by\u0142 podobno stworzony w celu u\u015bwiadomienia wszystkim, jak bardzo niebezpieczny potencja\u0142 maj\u0105 ataki Supply Chain (st\u0105d te\u017c od pocz\u0105tku sam ogranicza\u0142 jego skuteczno\u015b\u0107). Spo\u0142eczno\u015b\u0107 nie doceni\u0142a jednak tej formy edukacji, <a href=\"https:\/\/github.com\/RIAEvangelist\/node-ipc\/issues?q=is%3Aissue+is%3Aclosed\">wr\u0119cz zalewaj\u0105c projekt zg\u0142oszeniami<\/a>, sukcesywnie teraz czyszczonymi przez autora, kt\u00f3remu ca\u0142a sytuacja wybuch\u0142a chyba troch\u0119 w twarz. Ci\u0119\u017cko jest naprawd\u0119 broni\u0107 jego decyzji - od dawna m\u00f3wi si\u0119 bowiem, jak niestabilny jest tak zwany \u0142a\u0144cuch dostaw wsp\u00f3\u0142czesnego oprogramowania, a tego typu dzia\u0142ania tylko dodatkowo podkopuj\u0105 jego wiarygodno\u015b\u0107, rzutuj\u0105c na ca\u0142\u0105 spo\u0142eczno\u015b\u0107 programistyczn\u0105.&nbsp;<\/p>\n","innerContent":["\n<p><a href=\"https:\/\/www.npmjs.com\/package\/peacenotwar\">Autor zarzeka si\u0119 w dokumentacji<\/a>,&nbsp; \u017ce pakiet peacenotwar by\u0142 podobno stworzony w celu u\u015bwiadomienia wszystkim, jak bardzo niebezpieczny potencja\u0142 maj\u0105 ataki Supply Chain (st\u0105d te\u017c od pocz\u0105tku sam ogranicza\u0142 jego skuteczno\u015b\u0107). Spo\u0142eczno\u015b\u0107 nie doceni\u0142a jednak tej formy edukacji, <a href=\"https:\/\/github.com\/RIAEvangelist\/node-ipc\/issues?q=is%3Aissue+is%3Aclosed\">wr\u0119cz zalewaj\u0105c projekt zg\u0142oszeniami<\/a>, sukcesywnie teraz czyszczonymi przez autora, kt\u00f3remu ca\u0142a sytuacja wybuch\u0142a chyba troch\u0119 w twarz. Ci\u0119\u017cko jest naprawd\u0119 broni\u0107 jego decyzji - od dawna m\u00f3wi si\u0119 bowiem, jak niestabilny jest tak zwany \u0142a\u0144cuch dostaw wsp\u00f3\u0142czesnego oprogramowania, a tego typu dzia\u0142ania tylko dodatkowo podkopuj\u0105 jego wiarygodno\u015b\u0107, rzutuj\u0105c na ca\u0142\u0105 spo\u0142eczno\u015b\u0107 programistyczn\u0105.&nbsp;<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a88b6e1e9e2.gif\" alt=\"\"\/><figcaption>Osobi\u015bcie traktuj\u0119 to jako nic innego form\u0119 softwarowego wandalizmu.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a88b6e1e9e2.gif\" alt=\"\"\/><figcaption>Osobi\u015bcie traktuj\u0119 to jako nic innego form\u0119 softwarowego wandalizmu.<\/figcaption><\/figure>\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\/list","attrs":[],"innerBlocks":[],"innerHTML":"\n<ul><li><a href=\"https:\/\/www.npmjs.com\/package\/peacenotwar\">peacenotwar - npm<\/a><\/li><li><a href=\"https:\/\/security.snyk.io\/vuln\/SNYK-JS-NODEIPC-2426370\">Malicious Package in node-ipc | CVE-2022-23812 | Snyk<\/a><\/li><li><a href=\"https:\/\/snyk.io\/blog\/peacenotwar-malicious-npm-node-ipc-package-vulnerability\/\">Alert: peacenotwar module sabotages npm developers in the node-ipc package to protest the invasion of Ukraine | Snyk<\/a><\/li><li><a href=\"https:\/\/github.com\/RIAEvangelist\/node-ipc\/issues?q=is%3Aissue+is%3Aclosed\">https:\/\/github.com\/RIAEvangelist\/node-ipc\/issues?q=is%3Aissue+is%3Aclosed<\/a><\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"https:\/\/www.npmjs.com\/package\/peacenotwar\">peacenotwar - npm<\/a><\/li><li><a href=\"https:\/\/security.snyk.io\/vuln\/SNYK-JS-NODEIPC-2426370\">Malicious Package in node-ipc | CVE-2022-23812 | Snyk<\/a><\/li><li><a href=\"https:\/\/snyk.io\/blog\/peacenotwar-malicious-npm-node-ipc-package-vulnerability\/\">Alert: peacenotwar module sabotages npm developers in the node-ipc package to protest the invasion of Ukraine | Snyk<\/a><\/li><li><a href=\"https:\/\/github.com\/RIAEvangelist\/node-ipc\/issues?q=is%3Aissue+is%3Aclosed\">https:\/\/github.com\/RIAEvangelist\/node-ipc\/issues?q=is%3Aissue+is%3Aclosed<\/a><\/li><\/ul>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>3. Fuchsia OS publikuje model komunikacji mi\u0119dzyprocesowej<\/h2>\n","innerContent":["\n<h2>3. Fuchsia OS publikuje model komunikacji mi\u0119dzyprocesowej<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>A na koniec b\u0119dzie o Fuchsii, czyli jednym z ciekawszych projekt\u00f3w technologicznych ostatnich lat.<\/p>\n","innerContent":["\n<p>A na koniec b\u0119dzie o Fuchsii, czyli jednym z ciekawszych projekt\u00f3w technologicznych ostatnich lat.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Ci\u0105gle pami\u0119tam, jak par\u0119 lat temu (Wikipedia przywo\u0142uj\u0119 tu dat\u0119 Sierpnia 2016, a ja im wierz\u0119), nag\u0142\u00f3wki prasowe obieg\u0142a informacja o tym, \u017ce Google pracuje nad nowym systemem operacyjnym, kt\u00f3ry w przysz\u0142o\u015bci zast\u0105pi\u0107 ma Androida. Obok Chrome OS by\u0142 to ju\u017c drugi eksperyment tego typu ze strony Alphabetu, ale to, co rozbudza wyobra\u017anie to porzucenie kernela Linuxowego, na rzecz Zircona, kt\u00f3ry nale\u017cy do tak zwanych mikrokerneli - rodzajem projektu j\u0105dra, kontrastuj\u0105cym z j\u0105drem monolitycznym. W j\u0105drze monolitycznym, jak sama nazwa wskazuje, ca\u0142e j\u0105dro jest pojedynczym programem, kt\u00f3ry implementuje wszystkie niezb\u0119dne API (np. wywo\u0142ania systemowe Unix, w\u0105tki, procesy, system plik\u00f3w itp.). W mikrokernelach baz\u0105 jest za\u015b bardzo ma\u0142e j\u0105dro, kt\u00f3re implementuje minimalne API (np. bardzo podstawow\u0105 koncepcj\u0119 w\u0105tk\u00f3w wykonania, uprawnie\u0144 i przekazywania wiadomo\u015bci), do kt\u00f3rego dok\u0142adane s\u0105 kolejne API, kt\u00f3rych potrzebuj\u0105 aplikacje - rzeczywisty system plik\u00f3w, procesy czy wywo\u0142ania systemowe. Dzi\u0119ki temu zdaniem Google nadaj\u0105 si\u0119 idealnie jako lekki, uniwersalny system operacyjny dla sprz\u0119t\u00f3w nap\u0119dzanych przez Google Assistant.<\/p>\n","innerContent":["\n<p>Ci\u0105gle pami\u0119tam, jak par\u0119 lat temu (Wikipedia przywo\u0142uj\u0119 tu dat\u0119 Sierpnia 2016, a ja im wierz\u0119), nag\u0142\u00f3wki prasowe obieg\u0142a informacja o tym, \u017ce Google pracuje nad nowym systemem operacyjnym, kt\u00f3ry w przysz\u0142o\u015bci zast\u0105pi\u0107 ma Androida. Obok Chrome OS by\u0142 to ju\u017c drugi eksperyment tego typu ze strony Alphabetu, ale to, co rozbudza wyobra\u017anie to porzucenie kernela Linuxowego, na rzecz Zircona, kt\u00f3ry nale\u017cy do tak zwanych mikrokerneli - rodzajem projektu j\u0105dra, kontrastuj\u0105cym z j\u0105drem monolitycznym. W j\u0105drze monolitycznym, jak sama nazwa wskazuje, ca\u0142e j\u0105dro jest pojedynczym programem, kt\u00f3ry implementuje wszystkie niezb\u0119dne API (np. wywo\u0142ania systemowe Unix, w\u0105tki, procesy, system plik\u00f3w itp.). W mikrokernelach baz\u0105 jest za\u015b bardzo ma\u0142e j\u0105dro, kt\u00f3re implementuje minimalne API (np. bardzo podstawow\u0105 koncepcj\u0119 w\u0105tk\u00f3w wykonania, uprawnie\u0144 i przekazywania wiadomo\u015bci), do kt\u00f3rego dok\u0142adane s\u0105 kolejne API, kt\u00f3rych potrzebuj\u0105 aplikacje - rzeczywisty system plik\u00f3w, procesy czy wywo\u0142ania systemowe. Dzi\u0119ki temu zdaniem Google nadaj\u0105 si\u0119 idealnie jako lekki, uniwersalny system operacyjny dla sprz\u0119t\u00f3w nap\u0119dzanych przez Google Assistant.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a88b6f29e3d.png\" alt=\"\"\/><figcaption>W nomenklaturze istnieje te\u017c co\u015b takiego jak unikernele, kt\u00f3re s\u0105 jeszcze innym konceptem, poza zakresem moich obecnych wynurze\u0144 - je\u015bli jednak chcecie si\u0119 o nich dowiedzie\u0107 wi\u0119cej, zapraszam do \u015bwietnego tekstu <a href=\"https:\/\/changelog.com\/posts\/the-big-idea-around-unikernels\">The big idea around unikernels<\/a>.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a88b6f29e3d.png\" alt=\"\"\/><figcaption>W nomenklaturze istnieje te\u017c co\u015b takiego jak unikernele, kt\u00f3re s\u0105 jeszcze innym konceptem, poza zakresem moich obecnych wynurze\u0144 - je\u015bli jednak chcecie si\u0119 o nich dowiedzie\u0107 wi\u0119cej, zapraszam do \u015bwietnego tekstu <a href=\"https:\/\/changelog.com\/posts\/the-big-idea-around-unikernels\">The big idea around unikernels<\/a>.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Fuchsia od tamtej pory trafi\u0142a na Google Nest (pr\u00f3bowa\u0142em, troch\u0119 \u00af\\_(\u30c4)_\/\u00af, jak jeste\u015bcie ciekawi jak to wygl\u0105da w praktyce - <a href=\"https:\/\/www.youtube.com\/watch?v=8GGSy1c8D7k\">nagranie z test\u00f3w od 9to5Google<\/a>), dosta\u0142a zapowied\u017a wsparcia dla Fluttera, a pocz\u0105tkiem marca tego roku <a href=\"https:\/\/9to5google.com\/2022\/03\/04\/full-google-chrome-browser-running-on-fuchsia\/\">og\u0142oszono te\u017c<\/a>, \u017ce system operacyjny jest w stanie odpala\u0107 przegl\u0105dark\u0119 Chrome - og\u00f3lnie dzieje si\u0119. Bezpo\u015bredni\u0105 za\u015b motywacj\u0105 zrobienia Wam aktualizacji w tym temacie by\u0142o za\u015b udost\u0119pnienie <a href=\"https:\/\/fuchsia.dev\/fuchsia-src\/concepts\/fidl\/overview\">standardu komunikacji mi\u0119dzyprocesowej<\/a> o nazwie FIDL (Fuchsia Interface Definition Language). W FIDL dost\u0119pna jest zar\u00f3wno synchroniczna, jaki asynchroniczna komunikacja mi\u0119dzy procesami (jej r\u00f3\u017cne tryby zosta\u0142y dok\u0142adnie opisane w linkowanym standardzie), a interoperacyjno\u015b\u0107 mi\u0119dzy r\u00f3\u017cnymi j\u0119zykami programowania zapewniona zosta\u0142a przy u\u017cyciu plik\u00f3w .fidl, kt\u00f3re definiuj\u0105 protok\u00f3\u0142 - ich format przypomina mi troch\u0119 Smithy\u2019ego od Amazona. Na podstawie rzeczonych plik\u00f3w, generowane maj\u0105 by\u0107 odpowiednie klienckie biblioteki do j\u0119zyk\u00f3w programowania - na ten moment wspierane jest C, C++, Go, Dart i Rust, ale zapowiedziano ju\u017c wsparcie cho\u0107by dla Javy i JavaScripta (bo jak\u017ceby inaczej).<\/p>\n","innerContent":["\n<p>Fuchsia od tamtej pory trafi\u0142a na Google Nest (pr\u00f3bowa\u0142em, troch\u0119 \u00af\\_(\u30c4)_\/\u00af, jak jeste\u015bcie ciekawi jak to wygl\u0105da w praktyce - <a href=\"https:\/\/www.youtube.com\/watch?v=8GGSy1c8D7k\">nagranie z test\u00f3w od 9to5Google<\/a>), dosta\u0142a zapowied\u017a wsparcia dla Fluttera, a pocz\u0105tkiem marca tego roku <a href=\"https:\/\/9to5google.com\/2022\/03\/04\/full-google-chrome-browser-running-on-fuchsia\/\">og\u0142oszono te\u017c<\/a>, \u017ce system operacyjny jest w stanie odpala\u0107 przegl\u0105dark\u0119 Chrome - og\u00f3lnie dzieje si\u0119. Bezpo\u015bredni\u0105 za\u015b motywacj\u0105 zrobienia Wam aktualizacji w tym temacie by\u0142o za\u015b udost\u0119pnienie <a href=\"https:\/\/fuchsia.dev\/fuchsia-src\/concepts\/fidl\/overview\">standardu komunikacji mi\u0119dzyprocesowej<\/a> o nazwie FIDL (Fuchsia Interface Definition Language). W FIDL dost\u0119pna jest zar\u00f3wno synchroniczna, jaki asynchroniczna komunikacja mi\u0119dzy procesami (jej r\u00f3\u017cne tryby zosta\u0142y dok\u0142adnie opisane w linkowanym standardzie), a interoperacyjno\u015b\u0107 mi\u0119dzy r\u00f3\u017cnymi j\u0119zykami programowania zapewniona zosta\u0142a przy u\u017cyciu plik\u00f3w .fidl, kt\u00f3re definiuj\u0105 protok\u00f3\u0142 - ich format przypomina mi troch\u0119 Smithy\u2019ego od Amazona. Na podstawie rzeczonych plik\u00f3w, generowane maj\u0105 by\u0107 odpowiednie klienckie biblioteki do j\u0119zyk\u00f3w programowania - na ten moment wspierane jest C, C++, Go, Dart i Rust, ale zapowiedziano ju\u017c wsparcie cho\u0107by dla Javy i JavaScripta (bo jak\u017ceby inaczej).<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>A jak ju\u017c przy systemach operacyjnych jeste\u015bmy - mam dla Was \u015bwietny podcast od CoRecursive <a href=\"https:\/\/corecursive.com\/serenity-os-with-andreas-kling\/\">na temat powstawania Serenity OS<\/a>. Jest to system operacyjny pisana przez jedn\u0105 (!) osob\u0119, \u0142\u0105cz\u0105ca estetyk\u0119 lat 90-tych i nowoczesne podej\u015bcie do tego typu oprogramowania. Je\u015bli za\u015b ciekawi Was, jakie motywacje mog\u0105 kierowa\u0107 kim\u015b, kto chce stworzy\u0107 w\u0142asny system operacyjny, to okazuje si\u0119, \u017ce jednym z nich mo\u017ce by\u0107 cho\u0107by\u2026 walka z uzale\u017cnieniem od narkotyk\u00f3w. Serenity OS to naprawd\u0119 fascynuj\u0105ca historia, dlatego jeszcze raz polecam ods\u0142uchanie tego, oraz innych odcink\u00f3w CoRecursive - jest to m\u00f3j ulubiony podcast o programowaniu.<\/p>\n","innerContent":["\n<p>A jak ju\u017c przy systemach operacyjnych jeste\u015bmy - mam dla Was \u015bwietny podcast od CoRecursive <a href=\"https:\/\/corecursive.com\/serenity-os-with-andreas-kling\/\">na temat powstawania Serenity OS<\/a>. Jest to system operacyjny pisana przez jedn\u0105 (!) osob\u0119, \u0142\u0105cz\u0105ca estetyk\u0119 lat 90-tych i nowoczesne podej\u015bcie do tego typu oprogramowania. Je\u015bli za\u015b ciekawi Was, jakie motywacje mog\u0105 kierowa\u0107 kim\u015b, kto chce stworzy\u0107 w\u0142asny system operacyjny, to okazuje si\u0119, \u017ce jednym z nich mo\u017ce by\u0107 cho\u0107by\u2026 walka z uzale\u017cnieniem od narkotyk\u00f3w. Serenity OS to naprawd\u0119 fascynuj\u0105ca historia, dlatego jeszcze raz polecam ods\u0142uchanie tego, oraz innych odcink\u00f3w CoRecursive - jest to m\u00f3j ulubiony podcast o programowaniu.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":[],"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a88b6fd459c.png\" alt=\"\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a88b6fd459c.png\" alt=\"\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Z jakiego\u015b powodu m\u00f3j m\u00f3zg dostaje sza\u0142u, gdy widz\u0119 powy\u017cszego screena<\/p>\n","innerContent":["\n<p>Z jakiego\u015b powodu m\u00f3j m\u00f3zg dostaje sza\u0142u, gdy widz\u0119 powy\u017cszego screena<\/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\/list","attrs":[],"innerBlocks":[],"innerHTML":"\n<ul><li><a href=\"https:\/\/www.youtube.com\/watch?v=8GGSy1c8D7k\">Testing Fuchsia on a Google Nest Hub!<\/a><\/li><li><a href=\"https:\/\/9to5google.com\/2022\/03\/04\/full-google-chrome-browser-running-on-fuchsia\/\">Here's the full Google Chrome browser running on Fuchsia [Gallery]<\/a><\/li><li><a href=\"https:\/\/fuchsia.dev\/fuchsia-src\/concepts\/fidl\/overview\">FIDL Overview | Fuchsia<\/a><\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"https:\/\/www.youtube.com\/watch?v=8GGSy1c8D7k\">Testing Fuchsia on a Google Nest Hub!<\/a><\/li><li><a href=\"https:\/\/9to5google.com\/2022\/03\/04\/full-google-chrome-browser-running-on-fuchsia\/\">Here's the full Google Chrome browser running on Fuchsia [Gallery]<\/a><\/li><li><a href=\"https:\/\/fuchsia.dev\/fuchsia-src\/concepts\/fidl\/overview\">FIDL Overview | Fuchsia<\/a><\/li><\/ul>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9994","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\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/comments?post=9994"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9994\/revisions"}],"predecessor-version":[{"id":10519,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9994\/revisions\/10519"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media\/7991"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=9994"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=9994"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=9994"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}