Przejdź do treści

Full Stack Developer

Bartosz Bryniarski

Cześć! Nazywam się Bartosz Bryniarski, jestem doświadczonym Full Stack Web Developerem z ponad 20-letnim stażem w branży IT. Posiadam umiejętności w technologiach frontendowych (HTML, CSS, vanilla JavaScript, AJAX) oraz backendowych (PHP, Symfony, Laravel, Python, Java, Spring Boot). Tworzę również aplikacje mobilne na Androida i iOS w React Native (Expo) oraz Flutterze. Specjalizuję się także w pracy z różnymi bazami danych, takimi jak PostgreSQL, MySQL i SQLite, w konteneryzacji (Docker) oraz skalowaniu aplikacji, a także w zarządzaniu systemami sieciowymi opartymi na Windows, Linux i Unix.

Jestem absolwentem studiów inżynierskich z inżynierii komputerowej, a także studiów magisterskich na specjalności Internet rzeczy i sieci przyszłości. Ukończyłem również kilka studiów podyplomowych związanych z programowaniem, testowaniem oprogramowania, cyberbezpieczeństwem i informatyką śledczą. Dzielę się swoją wiedzą jako wykładowca akademicki, nauczyciel programowania w szkole średniej oraz prywatnej.

Wolny czas lubię spędzać jako przewodnik górski, a moje pasje to turystyka górska, biegi ultra, motoryzacja i fotografia. Na moim blogu dzielę się wiedzą i doświadczeniem z zakresu programowania, systemów operacyjnych i cyberbezpieczeństwa. Pomagam czytelnikom lepiej zrozumieć te zagadnienia i stawiać czoła wyzwaniom technologicznym. Jeśli interesujesz się tematyką IT, to zapraszam do odwiedzenia mojego bloga i poznania mnie bliżej.

bartosz@bryniarski.pl

Najnowsze wpisy

Wszystkie wpisy →

Dlaczego nowe projekty zaczynam bez jQuery – i dlaczego to nie jest atak na jQuery

Front-endJavaScripthtml/css

Nie piszę o was, piszę o sobie sprzed lat. Kiedy pojawiło się PHP, trzymałem się CGI i Perla tak długo, że na PHP spojrzałem dopiero koło wydania czwartego. Ten sam odruch – nauczyłem się czegoś raz i tak będę pisał dalej – dziś każe ludziom zaczynać nowe projekty od jQuery. Przegląd tego, po co naprawdę braliśmy tę bibliotekę i co z tego jest już w gołej przeglądarce, z uczciwym rozdziałem o tym, kiedy jQuery wciąż ma sens.

Czytaj dalej →

Grafy w praktyce: BFS, DFS, Dijkstra i A*, czyli jak wyznacza się trasę

algorytmyPython

Ostatnia część serii o strukturach danych. Trzy algorytmy przeszukiwania na jednej mapie: BFS liczy kroki, Dijkstra koszt, A* dokłada heurystykę i przestaje błądzić. Do tego reprezentacja grafu, DFS i sortowanie topologiczne, struktura zbiorów rozłącznych z odwrotną funkcją Ackermanna oraz odpowiedź na pytanie, dlaczego prawdziwa nawigacja nie liczy Dijkstry na żywo, tylko przelicza mapę wcześniej.

Czytaj dalej →

Kopce i kolejki priorytetowe: heapq, schedulery i token bucket

algorytmyPython

Piąta część serii o strukturach danych. Kopiec binarny zapisany w zwykłej tablicy, budowa w czasie liniowym i trzy operacje, które z niego wynikają. Po co utrzymywać częściowy porządek zamiast pełnego, jak wybrać dziesięć największych elementów bez sortowania miliona, czym jest heapq.merge przy danych większych niż pamięć i jak z kolejki priorytetowej robi się scheduler oraz ogranicznik ruchu.

Czytaj dalej →

B-drzewa: dlaczego indeks w bazie nie jest zwykłym drzewem

algorytmyMySQLbazy danych

Czwarta część serii o strukturach danych. Co się zmienia, gdy dane przestają mieścić się w pamięci: dlaczego drzewo binarne o wysokości 30 jest na dysku katastrofą, jak B-drzewo mieści setki kluczy w jednym węźle i schodzi do trzech poziomów przy miliardzie wierszy. Strona 16 KB w InnoDB, indeks klastrowy i wtórny, reguła lewego prefiksu w indeksie złożonym oraz pięć sytuacji, w których indeks nie pomoże.

Czytaj dalej →

Drzewa poszukiwań: BST, AVL i czerwono-czarne

algorytmyPython

Trzecia część serii o strukturach danych. Jak drzewo poszukiwań binarnych trzyma porządek bez przesuwania tablicy, dlaczego na danych posortowanych degeneruje się do listy i wykonuje dokładnie tyle samo porównań co sortowanie bąbelkowe, oraz jak temu zaradzić rotacjami. AVL kontra drzewa czerwono-czarne, animacja obu przypadków i odpowiedź na pytanie, po co komu drzewo, skoro jest szybszy słownik.

Czytaj dalej →

Wyszukiwanie liniowe i binarne: dwie pętle, w których łatwo się pomylić

algorytmyPython

Druga część serii o strukturach danych. Kiedy wyszukiwanie liniowe wystarcza, kiedy opłaca się posortować dane, jak napisać wyszukiwanie binarne bez pętli nieskończonej i skąd wziął się błąd przepełnienia, który siedział w bibliotece standardowej Javy przez dziewięć lat. Do tego moduł bisect, wyszukiwanie wykładnicze i rachunek, po ilu zapytaniach sortowanie zwraca się z nawiązką.

Czytaj dalej →

Portfolio

Autorskie platformy edukacyjne i projekty Full Stack – od egzaminów zawodowych po narzędzia matematyczne.

Zobacz portfolio →