<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>grzenow</title><link>http://www.grzenow.com/pl/</link><description>Recent content on grzenow</description><generator>Hugo</generator><language>pl</language><lastBuildDate>Wed, 15 Jan 2025 00:00:00 +0000</lastBuildDate><atom:link href="http://www.grzenow.com/pl/index.xml" rel="self" type="application/rss+xml"/><item><title>Projekty z Głębokich Sieci Neuronowych</title><link>http://www.grzenow.com/pl/projects/deep-neural-networks/</link><pubDate>Wed, 15 Jan 2025 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/deep-neural-networks/</guid><description>&lt;p&gt;Jest to zbiór projektów zrealizowanych w ramach przedmiotu Głebokie Sieci Neuronowe, obejmujący:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Perceptrony wielowarstwowe&lt;/strong&gt;:&#10;&lt;ul&gt;&#10;&lt;li&gt;Implementacja algorytmu &lt;em&gt;ProxyProp&lt;/em&gt; (Proximal Backpropagation), opisanego w tej &lt;a href="https://arxiv.org/pdf/1706.04638v3" class="external-link" target="_blank" rel="noopener"&gt;pracy&lt;/a&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Rozpoznawanie obrazów&lt;/strong&gt;:&#10;&lt;ul&gt;&#10;&lt;li&gt;Implementacja kilku transformacji oraz metod &lt;a href="https://arxiv.org/pdf/1911.09665" class="external-link" target="_blank" rel="noopener"&gt;&lt;em&gt;AdvProp&lt;/em&gt;&lt;/a&gt; i &lt;a href="https://openreview.net/pdf?id=QzcZb3fWmW" class="external-link" target="_blank" rel="noopener"&gt;&lt;em&gt;SparseTopK&lt;/em&gt;&lt;/a&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Przetwarzanie języka naturalnego&lt;/strong&gt;:&#10;&lt;ul&gt;&#10;&lt;li&gt;Implementacja &lt;a href="https://arxiv.org/pdf/2002.05202v1" class="external-link" target="_blank" rel="noopener"&gt;&lt;em&gt;SwiGLU&lt;/em&gt;&lt;/a&gt; i &lt;a href="https://arxiv.org/pdf/2410.05258" class="external-link" target="_blank" rel="noopener"&gt;&lt;em&gt;Differential Attention&lt;/em&gt;&lt;/a&gt; dla architektury Transformera opartego wyłącznie na dekoderze.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Uczenie ze wzmocnieniem&lt;/strong&gt;:&#10;&lt;ul&gt;&#10;&lt;li&gt;Implementacja &lt;em&gt;Proximal Policy Optimization&lt;/em&gt; (PPO) oraz &lt;em&gt;Random Network Distillation&lt;/em&gt; (RND) dla środowisk &lt;a href="https://github.com/facebookresearch/minihack" class="external-link" target="_blank" rel="noopener"&gt;MiniHack&lt;/a&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/grzenow4/DNN" class="external-link" target="_blank" rel="noopener"&gt;Kod źródłowy&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Allezon</title><link>http://www.grzenow.com/pl/projects/allezon/</link><pubDate>Mon, 09 Sep 2024 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/allezon/</guid><description>&lt;p&gt;&lt;strong&gt;Allezon&lt;/strong&gt; to platforma do zbierania i analizy danych, stworzona w dwuosobowym zespole, zdolna do obsługi 1000 zapytań na sekundę dla milionów użytkowników i produktów.&lt;/p&gt;&#10;&lt;p&gt;Moją rolą było wdrożenie aplikacji, implementacja architektury rozproszonej z zastosowaniem load balancingu oraz zapewnienie skalowalności, aby efektywnie obsługiwać duży ruch na stronie.&lt;/p&gt;&#10;&lt;p&gt;Szczegółowy opis znajduje się &lt;a href="https://github.com/grzenow4/PARSR/blob/main/TaskDescription.md" class="external-link" target="_blank" rel="noopener"&gt;tutaj&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/grzenow4/PARSR" class="external-link" target="_blank" rel="noopener"&gt;Kod źródłowy&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Projekty z obliczeń superkomputerowych</title><link>http://www.grzenow.com/pl/projects/hpc-projects/</link><pubDate>Tue, 25 Jun 2024 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/hpc-projects/</guid><description>&lt;p&gt;Podczas pierwszego roku studiów magisterskich uczęszczałem na przedmiot &amp;ldquo;Obliczenia superkomputerowe&amp;rdquo;, podczas którego napisałem dwa ciekawe projekty: jeden z wykorzystaniem CUDA, a drugi z użyciem MPI.&lt;/p&gt;&#10;&lt;h3 id="dopasowywanie-w-bazie-danych-wariantów-genomowych"&gt;&#10; Dopasowywanie w bazie danych wariantów genomowych&#10; &lt;a class="heading-link" href="#dopasowywanie-w-bazie-danych-wariant%c3%b3w-genomowych"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h3&gt;&#10;&lt;p&gt;Celem było stworzenie systemu dopasowywania wariantów genomowych z pliku do bazy danych (dbNSFP). Rozwiązanie składa się z dwóch etapów: indeksowania bazy danych i dopasowywania, przy czym dopasowywanie zostało zoptymalizowane za pomocą CUDA.&lt;/p&gt;</description></item><item><title>Logic in Computer Science</title><link>http://www.grzenow.com/pl/projects/logic-in-computer-science/</link><pubDate>Fri, 24 May 2024 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/logic-in-computer-science/</guid><description>&lt;p&gt;Jest to zbiór projektów zrealizowanych w ramach przedmiotu Logika dla Informatyków, obejmujący:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Logikę zdaniową w Haskellu (Część 1):&#10;&lt;ul&gt;&#10;&lt;li&gt;Spełnialność formuł, tautologie, dysjunkcyjna postać normalna (DNF), SAT solver oparty na DNF.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Logikę zdaniową w Haskellu (Część 2):&#10;&lt;ul&gt;&#10;&lt;li&gt;Koniunkcyjna postać normalna (CNF), równoważnie spełnialna CNF (ECNF), SAT solver oparty na algorytmie Davisa-Putnama.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Rozwiązywanie SAT za pomocą biblioteki Z3 w Pythonie (Część 1):&#10;&lt;ul&gt;&#10;&lt;li&gt;Generowanie wszystkich spełniających przypisań, formuły kamyczkowe, problem hetmanów.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Rozwiązywanie SAT za pomocą biblioteki Z3 w Pythonie (Część 2):&#10;&lt;ul&gt;&#10;&lt;li&gt;Problem najkrótszego wspólnego nadciągu (SCS), przejścia fazowe dla problemu k-SAT.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Rozwiązywanie SMT za pomocą Z3 w Pythonie:&#10;&lt;ul&gt;&#10;&lt;li&gt;Twierdzenie Łosia, funkcja 91, Sudoku solver.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Intuicycjonistyczna logika zdaniowa w Agdzie:&#10;&lt;ul&gt;&#10;&lt;li&gt;Dowody dla koniunkcji i alternatywy, prawa de Morgana, słabe prawo Pierce&amp;rsquo;a.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Intuicycjonistyczna logika pierwszego rzędu w Agdzie:&#10;&lt;ul&gt;&#10;&lt;li&gt;Dowody dla kwantyfikatorów ogólnych i egzystencjalnych, relacje.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/grzenow4/LDI-lab" class="external-link" target="_blank" rel="noopener"&gt;Kod źródłowy&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Kompilator Latte</title><link>http://www.grzenow.com/pl/projects/latte-compiler/</link><pubDate>Sun, 21 Jan 2024 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/latte-compiler/</guid><description>&lt;p&gt;Jednym z większych projektów na pierwszym roku studiów magisterskich było stworzenie kompilatora dla języka &lt;a href="https://www.mimuw.edu.pl/~ben/Zajecia/Mrj2022/Latte/" class="external-link" target="_blank" rel="noopener"&gt;Latte&lt;/a&gt;, rozszerzonego o takie funkcjonalności jak tablice, struktury oraz obiekty z pojedynczym dziedziczeniem. Kod w języku Latte jest parsowany przy użyciu narzędzia &lt;a href="https://hackage.haskell.org/package/BNFC" class="external-link" target="_blank" rel="noopener"&gt;BNFC&lt;/a&gt; i kompilowany do architektury x86 asemblera.&lt;/p&gt;&#10;&lt;p&gt;Kompilator reprezentuje monada &lt;code&gt;Reader-Writer-State&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-haskell" data-lang="haskell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;data&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Reader&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Rd&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; { func &lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;String&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;TType&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; , clss &lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;String&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;ClassEnv&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;type&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Writer&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt; [&lt;span style="color:#ff7b72"&gt;AsmInstr&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;data&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;State&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;St&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; { nextlab &lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Int&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; , newloc &lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Int&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; , env &lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;String&lt;/span&gt; (&lt;span style="color:#ff7b72"&gt;TType&lt;/span&gt;, &lt;span style="color:#ff7b72"&gt;String&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; , rodata &lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;Map&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;String&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;String&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; , rspOff &lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;Int&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;gdzie&lt;/p&gt;</description></item><item><title>Kompilator Instant</title><link>http://www.grzenow.com/pl/projects/instant-compiler/</link><pubDate>Sat, 28 Oct 2023 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/instant-compiler/</guid><description>&lt;p&gt;&lt;strong&gt;Instant&lt;/strong&gt; to język programowania, który obsługuje dwa typy instrukcji:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;wyrażenie&lt;/code&gt; - wypisuje wartość &lt;code&gt;wyrażenie&lt;/code&gt; na standardowe wyjście,&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;zmienna = wyrażenie&lt;/code&gt; - przypisuje wartość &lt;code&gt;wyrażenie&lt;/code&gt; do zmiennej &lt;code&gt;zmienna&lt;/code&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Wyrażenia mogą składać się z liczb całkowitych, zmiennych oraz operacji arytmetycznych między nimi.&lt;/p&gt;&#10;&lt;p&gt;Celem projektu było stworzenie kompilatora do języka &lt;strong&gt;Instant&lt;/strong&gt; generującego kod dla architektur JVM i LLVM.&lt;/p&gt;&#10;&lt;p&gt;Szczegółowy opis znajduje się &lt;a href="https://github.com/grzenow4/MRJP-Instant-Compiler/blob/main/Instant.md" class="external-link" target="_blank" rel="noopener"&gt;tutaj&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/grzenow4/MRJP-Instant-Compiler" class="external-link" target="_blank" rel="noopener"&gt;Kod źródłowy&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Interpreter Latte</title><link>http://www.grzenow.com/pl/projects/latte-interpreter/</link><pubDate>Wed, 10 May 2023 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/latte-interpreter/</guid><description>&lt;p&gt;Jednym z większych projektów, które zrobiłem podczas studiów licencjackich, jest niewątpliwie interpreter prostego języka programowania &lt;a href="https://www.mimuw.edu.pl/~ben/Zajecia/Mrj2022/Latte/" class="external-link" target="_blank" rel="noopener"&gt;Latte&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Interpreter napisałem w Haskellu, a grmatyka jest parsowana do tego języka za pomocną narzędzia &lt;a href="https://hackage.haskell.org/package/BNFC" class="external-link" target="_blank" rel="noopener"&gt;BNFC&lt;/a&gt;. Zaimplementowane funkcjonalności są szczegółowo opisane na GitHubie (odnośnik na dole) wraz z dużą liczbą przykładów, więc tutaj przedstawiam skrótowy opis szczegółów implementacji.&lt;/p&gt;&#10;&lt;p&gt;Kod języka Latte jest automatycznie parsowany przez BNFC, a następnie przekazany do statycznej analizy typów. Monada reprezentująca stan TypeCheckera wygląda następująco:&lt;/p&gt;</description></item><item><title>Egzekutor</title><link>http://www.grzenow.com/pl/projects/executor/</link><pubDate>Sat, 11 Feb 2023 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/executor/</guid><description>&lt;p&gt;&lt;strong&gt;Egzekutor&lt;/strong&gt; to projekt z zakresu programowania współbieżnego. Jest to program, który wykonuje zadania, monitoruje ich ostatnie wypisane wyjścia (w trakcie działania), a także ubija je.&lt;/p&gt;&#10;&lt;p&gt;Obsługa procesów została zsynchronizowana w taki sposób, aby Egzekutor od razu informował o zakończeniu zadania oraz na bieżąco usuwał kończące się procesy lub wątki, które tworzy. Wszystko to odbywa się bez stosowania aktywnego oczekiwania, by nie marnować zasobów CPU.&lt;/p&gt;&#10;&lt;p&gt;Szczegółowy opis projektu można znaleźć pod poniższym linkiem.&lt;/p&gt;</description></item><item><title>Sokoban</title><link>http://www.grzenow.com/pl/projects/sokoban/</link><pubDate>Thu, 08 Dec 2022 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/sokoban/</guid><description>&lt;p&gt;&lt;strong&gt;Sokoban&lt;/strong&gt; to gra logiczna napisana w ramach kursu programowania funkcyjnego w Haskellu.&lt;/p&gt;&#10;&lt;p&gt;Gra została zaimplementowana w Haskellu na platformie &lt;a href="https://code.world/" class="external-link" target="_blank" rel="noopener"&gt;CodeWorld&lt;/a&gt;, gdzie można ją uruchomić klikając w ten &lt;a href="https://code.world/haskell#Plg7ON0XRfShvcgT0D7DElw" class="external-link" target="_blank" rel="noopener"&gt;link&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Sterowanie:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Spacja&lt;/strong&gt; - rozpoczęcie gry&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;WSAD / Strzałki&lt;/strong&gt; - poruszanie się&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;U&lt;/strong&gt; - cofnięcie ruchu&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;B&lt;/strong&gt; - poprzedni poziom&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;N&lt;/strong&gt; - następny poziom&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;R&lt;/strong&gt; - reset poziomu&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Esc&lt;/strong&gt; - reset gry&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/grzenow4/Sokoban" class="external-link" target="_blank" rel="noopener"&gt;Kod źródłowy&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Polynomial degree</title><link>http://www.grzenow.com/pl/projects/polynomial-degree/</link><pubDate>Tue, 10 May 2022 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/polynomial-degree/</guid><description>&lt;p&gt;&lt;strong&gt;Polynomial degree&lt;/strong&gt; to projekt napisany w czystym asemblerze. Polega on na zaimplementowaniu funckji&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;int&lt;/span&gt; &lt;span style="color:#d2a8ff;font-weight:bold"&gt;polynomial_degree&lt;/span&gt;(&lt;span style="color:#ff7b72"&gt;int&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;const&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;*&lt;/span&gt;y, &lt;span style="color:#ff7b72"&gt;size_t&lt;/span&gt; n);&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Argumentami funkcji są wskaźnik &lt;code&gt;y&lt;/code&gt; na tablicę liczb całkowitych $y_0,y_1,\ldots,y_{n-1}$ i &lt;code&gt;n&lt;/code&gt; zawierający długość tej tablicy. Wynikiem funkcji jest najmniejszy stopień wielomianu $w(x)$ jednej zmiennej o współczynnikach rzeczywistych, takiego że&#10;$w(x+k\cdot r)=y_k$&#10;dla pewnej liczby rzeczywistej $x$, pewnej niezerowej liczby rzeczywistej $r$ oraz $k=0,1,\ldots,n-1$.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Przykłady:&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Dla $y=[-3,0,3]$, wynikiem będzie wielomian stopnia 1.&lt;/li&gt;&#10;&lt;li&gt;Dla $y=[1,4,9,16]$, wynikiem będzie wielomian stopnia 2.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/grzenow4/polynomial-degree" class="external-link" target="_blank" rel="noopener"&gt;Kod źródłowy&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Pacman Rivals</title><link>http://www.grzenow.com/pl/projects/pacman-rivals/</link><pubDate>Fri, 14 Jan 2022 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/pacman-rivals/</guid><description>&lt;p&gt;&lt;strong&gt;Pacman Rivals&lt;/strong&gt; jest grą wieloosobową napisaną w 4-osobowym zespole. Jest to klasyczna gra Pac-Man wzbogacona o tryb wieloosobowy oraz mechanikę PvP.&lt;/p&gt;&#10;&lt;p&gt;Gra polega na zebraniu jak największej liczby monet oraz unikaniu kontaktu z duszkami chodzącymi po mapie. Co jakiś czas na mapie pojawiają się różne bonusy zapewniające graczowi więcej punktów za monety, przenikanie przez ściany, nieśmiertelność i wiele innych.&lt;/p&gt;&#10;&lt;p&gt;Projekt został napisany w C++ za pomocą biblioteki &lt;a href="https://www.sfml-dev.org/" class="external-link" target="_blank" rel="noopener"&gt;SFML&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/grzenow4/pacman-rivals" class="external-link" target="_blank" rel="noopener"&gt;Kod źródłowy&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Wielomiany Rzadkie Wielu Zmiennych</title><link>http://www.grzenow.com/pl/projects/ipp-polynomials/</link><pubDate>Mon, 21 Jun 2021 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/ipp-polynomials/</guid><description>&lt;p&gt;Jest to rozbudowany projekt napisany w języku C, którego celem jest implementacja podstawowych operacji na wielomianach rzadkich wielu zmiennych, takich jak dodawanie, odejmowanie, mnożenie oraz potęgowanie.&lt;/p&gt;&#10;&lt;p&gt;Drugą część projektu stanowi kalkulator wielomianów wykorzystujący odwrotną notację polską. Umożliwia on wykonywanie operacji arytmetycznych oraz wypisywanie aktualnego wielomianu znajdującego się na stosie.&lt;/p&gt;&#10;&lt;p&gt;Implementacja została zoptymalizowana pod kątem efektywnej alokacji dynamicznej, minimalizując zbędne alokacje i kopiowanie pamięci. Ponadto, program zapewnia pełne zwalnianie zaalokowanej pamięci, zapobiegając jej wyciekom. Całość została udokumentowana w formacie Doxygen.&lt;/p&gt;</description></item><item><title>Pętlik</title><link>http://www.grzenow.com/pl/projects/petlik/</link><pubDate>Tue, 19 Jan 2021 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/projects/petlik/</guid><description>&lt;p&gt;&lt;strong&gt;Pętlik&lt;/strong&gt; to mały język programowania, którego składnię opisuje gramatyka z symbolem początkowym &lt;code&gt;Program&lt;/code&gt;:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;Program → CiągInstrukcji&#10;CiągInstrukcji → ε | CiągInstrukcji Instrukcja&#10;Instrukcja → Zwiększ | Powtarzaj&#10;Zwiększ → Zmienna&#10;Powtarzaj → &amp;#39;(&amp;#39; Zmienna CiągInstrukcji &amp;#39;)&amp;#39;&#10;Zmienna → &amp;#39;a&amp;#39; | ... | &amp;#39;z&amp;#39;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Instrukcje:&lt;/strong&gt;:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;Zwiększ&lt;/code&gt;: równoważna instrukcji &lt;code&gt;++zmienna&lt;/code&gt; języka C.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Powtarzaj&lt;/code&gt;: równoważna instrukcji języka C:&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;while&lt;/span&gt; (zmienna &lt;span style="color:#ff7b72;font-weight:bold"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;0&lt;/span&gt;) {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;--&lt;/span&gt;zmienna;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ...&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Projekt składa się z dwóch części:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Kompilatora optymalizującego, generującego kod na maszynę wirtualną.&lt;/li&gt;&#10;&lt;li&gt;Interpretera kodu tej maszyny.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;strong&gt;Instrukcje maszynowe:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title/><link>http://www.grzenow.com/pl/resume/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/resume/</guid><description>&lt;h1 id="grzegorz-nowakowski"&gt;&#10; Grzegorz Nowakowski&#10; &lt;a class="heading-link" href="#grzegorz-nowakowski"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="work-experience"&gt;&#10; Work Experience&#10; &lt;a class="heading-link" href="#work-experience"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;dl&gt;&#10;&lt;dt&gt;07.2025-present&lt;/dt&gt;&#10;&lt;dd&gt;&lt;strong&gt;Software Engineer II&lt;/strong&gt;; Google&#10;&lt;ul&gt;&#10;&lt;li&gt;Developing and extending NodeOS (Google internal Linux-based OS) capabilities&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/dd&gt;&#10;&lt;dt&gt;08.2024-06.2025&lt;/dt&gt;&#10;&lt;dd&gt;&lt;strong&gt;Linux Intern&lt;/strong&gt;; Samsung Electronics&#10;&lt;ul&gt;&#10;&lt;li&gt;Contributing to the development of the Tizen operating system&#10;&lt;ul&gt;&#10;&lt;li&gt;Writing Rust bindings for Tizen components&lt;/li&gt;&#10;&lt;li&gt;Developing Tizen C libraries&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Working on operating system upgrade&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/dd&gt;&#10;&lt;dt&gt;07.2023-02.2024&lt;/dt&gt;&#10;&lt;dd&gt;&lt;strong&gt;Technology Development Intern&lt;/strong&gt;; Point72&#10;&lt;ul&gt;&#10;&lt;li&gt;Developing a distributed analytical platform as part of the Risk Tech team&#10;&lt;ul&gt;&#10;&lt;li&gt;Creating a standalone documentation server&lt;/li&gt;&#10;&lt;li&gt;Improving the performance of the project&amp;rsquo;s core&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Delivering a presentation on Rust features to the team&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/dd&gt;&#10;&lt;dt&gt;10.2022-06.2023&lt;/dt&gt;&#10;&lt;dd&gt;&lt;strong&gt;Bachelor&amp;rsquo;s Thesis Intern&lt;/strong&gt;; ScyllaDB&#10;&lt;ul&gt;&#10;&lt;li&gt;Integrating Rust to the Seastar framework&#10;&lt;ul&gt;&#10;&lt;li&gt;Implementing a macro similar to &lt;em&gt;tokio::test&lt;/em&gt;&lt;/li&gt;&#10;&lt;li&gt;Implementing the &lt;em&gt;seatstar::submit_to&lt;/em&gt; function&lt;/li&gt;&#10;&lt;li&gt;Exposing basic file I/O functionality&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Creating a simple Seastar TCP server using C++ coroutines&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/dd&gt;&#10;&lt;/dl&gt;&#10;&lt;h2 id="education"&gt;&#10; Education&#10; &lt;a class="heading-link" href="#education"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;dl&gt;&#10;&lt;dt&gt;10.2023-09.2025&lt;/dt&gt;&#10;&lt;dd&gt;&lt;strong&gt;MSc, Computer Science&lt;/strong&gt;; University of Warsaw&#10;&lt;p&gt;&lt;em&gt;Thesis title: NP-hard Metrics for Evaluating Participatory Budgeting Rules&lt;/em&gt;&lt;/p&gt;&#10;&lt;/dd&gt;&#10;&lt;dt&gt;10.2020-07.2023&lt;/dt&gt;&#10;&lt;dd&gt;&lt;strong&gt;BSc, Computer Science&lt;/strong&gt;; University of Warsaw&#10;&lt;p&gt;&lt;em&gt;Thesis title: Seastar as a Rust Asynchronous Runtime&lt;/em&gt;&lt;/p&gt;&#10;&lt;/dd&gt;&#10;&lt;/dl&gt;</description></item><item><title>Kontakt</title><link>http://www.grzenow.com/pl/contact/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/contact/</guid><description>&lt;p&gt;W razie jakichkolwiek pytań napisz do mnie na adres:&#10;&lt;a href="mailto:g.nowakowski.dev@gmail.com" &gt;g.nowakowski.dev@gmail.com&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>O mnie</title><link>http://www.grzenow.com/pl/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.grzenow.com/pl/about/</guid><description>&lt;p&gt;Cześć, nazywam się Grzegorz i witam Cię na moim blogu.&lt;/p&gt;&#10;&lt;p&gt;Ukończyłem studia informatyczne otrzymując zarówno tytuł licencjata, jak i magistra. Pracuję jako inżynier oprogramowania, z zamiłowaniem do silnie typowanych języków, takich jak Haskell, ale nie zajmuję się tym zawodowo.&lt;/p&gt;&#10;&lt;p&gt;Podczas studiów uczęszczałem na przedmiot Algorytmiczna Ekonomia, który obejmował takie tematy jak teoria gier koalicyjnych oraz teoria wyboru społecznego. Szczególnie zafascynowała mnie ta druga dziedzina, do tego stopnia, że postanowiłem napisać moją pracę magisterską w tym temacie.&lt;/p&gt;</description></item></channel></rss>