Praktyczne projekty na GitHubie: od sektorów rozruchowych po obliczenia na GPU

Przetłumaczone automatycznie z angielskiego. Przeczytaj oryginał

Sześcian w trybie wireframe wyrenderowany na Commodore 64

Zastrzeżenie: opisane tu projekty są wynikiem mojej własnej, samodzielnej pracy, wykonanej bez użycia AI. Sam artykuł powstał z pomocą AI.

Większość tego, o czym tu piszę, bierze się z budowania rzeczy. Ten wpis to mapa mojego publicznego kodu na github.com/michalasobczak: czym jest każdy projekt i gdzie przeczytać więcej. Projekty hobbystyczne są w jednym repozytorium, retro-lab, a kod do moich książek w drugim, publications. Kilka projektów ma własny, szczegółowy opis.

Wiele z nich łączy jedna idea: weź jeden mały algorytm, w tym przypadku projekcję 3D, i uruchom go na bardzo różnych maszynach. W przeglądarce, na 8-bitowym komputerze, w sektorze rozruchowym, na mikrokontrolerze i wreszcie na GPU. Każdy port pokazuje coś, co poprzedni ukrywał.

Katalog Rok Język Co to jest Artykuł
retro-lab/x86-bootloader 2005 / 2018 NASM grafika 2D w trybie chronionym, 3D w 512-bajtowym sektorze rozruchowym czytaj
retro-lab/c64 2018 BASIC, C, asembler 6502 renowacja Commodore 64 i renderer 3D czytaj
retro-lab/js3d-engine 2013 / 2018 JavaScript ręcznie napisany silnik 3D na płótnie 2D czytaj
retro-lab/esp8266 2018 Lua ta sama matematyka 3D na mikrokontrolerze czytaj
publications/simple-hpc 2021–2023 Java, OpenCL kod do książki Simple High Performance Computing czytaj
publications/ruby-mikrouslugi-konteneryzacja 2018–2019 Ruby, C kod do książki o Ruby, mikrousługach i konteneryzacji czytaj
publications/jakosc-oprogramowania 2019 Ruby, Lua, Perl, COBOL… kod do książki o jakości oprogramowania czytaj

Blisko sprzętu #

Bootloader x86. Dwa programy uruchamiane z obrazu dyskietki bez systemu operacyjnego. Pierwszy przełącza CPU w 32-bitowy tryb chroniony i animuje grafikę 2D z podwójnym buforowaniem MMX; drugi rysuje projekcję 3D liniami Bresenhama i mieści się w 512 bajtach, które ładuje BIOS.

Projekcja 3D w trybie rzeczywistym wyrenderowana z 512-bajtowego sektora rozruchowego

Commodore 64. C64 z pudełkiem, wyczyszczony i odnowiony, podłączony do laptopa przez grabber USB i zaprogramowany na trzy sposoby: w BASIC-u 2.0, żeby zmierzyć koszt obliczeń, w C z cc65 i bezpośrednim dostępem do VIC-II zamiast biblioteki TGI oraz w asemblerze 6502 z DASM.

Grafika wszędzie #

generic i esp8266. Punkt odniesienia dla wszystkich portów: silnik 3D z 2013 roku z teksturowaniem, oświetleniem zależnym od odległości, sortowaniem algorytmem malarza i wykrywaniem kolizji, napisany bez WebGL. Jego matematyka projekcji działa w Lua na ESP8266 z prędkością 300 wierzchołków na sekundę przy 80 MHz i 600 przy 160 MHz.

Książki i ich kod #

Repozytorium publications zawiera przykłady do moich książek:

  • simple-hpc i opencl: Simple High Performance Computing. Część 1 to elektronika i budowa komputera w symulatorze TINA-TI (napięcie elektryczne, prawo Ohma, symulacja obwodów). Część 5 to OpenCL z poziomu Javy (JOCL): testy przepustowości pamięci, sortowanie, redukcja, Monte Carlo π, projekcja 3D z C64 na GPU, szyfrowanie DES 40 razy szybsze niż na CPU i przetwarzanie tekstu.
  • ruby-mikrouslugi-konteneryzacja: Programowanie w języku Ruby. Mikrousługi i konteneryzacja. Wnętrze Ruby (ObjectSpace, pamięć, współbieżność, rozszerzenia w C), Rack i minimalny Rails, RabbitMQ, testowanie, wdrażanie z Nomadem i GitLabem oraz kompletny projekt mikrousługowy.
  • jakosc-oprogramowania: Jakość oprogramowania. Podręcznik dla profesjonalistów. Przykłady testów w Cucumberze, Minitest i busted (Lua) oraz kod legacy w Perlu i COBOL-u.

Po co to wszystko #

Żaden z tych projektów nie był potrzebny w pracy, a wszystkie się w niej opłaciły. Napisanie sektora rozruchowego uczy, co system operacyjny robi za ciebie. Przeniesienie tej samej matematyki na pięć maszyn uczy mierzyć, zanim zaczniesz optymalizować. Właśnie taką wiedzę wnoszę do pracy nad architekturą i infrastrukturą i właśnie dlatego wciąż buduję rzeczy własnoręcznie.

Wersja Markdown

Wszystkie treści na tej stronie są udostępniane na licencji Uznanie autorstwa – Użycie niekomercyjne – Bez utworów zależnych 4.0 Międzynarodowe (CC BY-NC-ND 4.0). Cytuj jako: Michał Sobczak, „Praktyczne projekty na GitHubie: od sektorów rozruchowych po obliczenia na GPU”, 25 października 2026, https://michalasobczak.pl/pl/posts/hands-on-projects-on-github.html