REKLAMA

Programista 10/2017 (65) – Jak napisać wokselowy silnik gry – spis treści

Zapraszamy do zamówienia magazynu w >>prenumeracie<<. Miesięcznik jest dostępny w formie papierowej, PDF, EPUB i MOBI oraz AZW3. Do prenumeraty papierowej zawsze dołączamy wydania elektroniczne. Wydanie dostępne jest też w salonach Empik do końca grudnia 2017 r.

BIBLIOTEKI I NARZĘDZIA

Lemon oraz re2c: starcie drugie – kompilacja

Analiza leksykalna oraz gramatyczna, jaką przeprowadziliśmy w pierwszej części artykułu poświęconemu narzędziom Lemon oraz re2c (Programista 9/2017), pozwala na względnie łatwą budowę interpretera, a nawet kompilatora naszej wersji języka Basic. W tej części postaramy się zbudować kompilator dla prostego modelu CPU oraz interpreter instrukcji dla tegoż CPU. Pozwoli nam to na pełne wykonywanie naszych programów w Basicu.

Marek Sawerwain

JĘZYKI PROGRAMOWANIA

Tworzenie aplikacji ze Spring Boot

Zaprojektowanie nawet prostej aplikacji z użyciem języka Java jest zazwyczaj bardzo czasochłonne. Konieczne jest utworzenie wielu plików konfiguracyjnych, których zawartość jest tożsama dla każdego innego projektu (ang. boilerplate code). Spring Boot, projekt firmy Pivotal (spring.io), to szkielet tworzenia aplikacji opierający się o Spring Framework, który upraszcza proces projektowania oprogramowania.

Marcin Warycha

PROGRAMOWANIE APLIKACJI WEBOWYCH

Transmisja danych dźwiękiem w JavaScript od podstaw. Część 3: Własny stos sieciowy (>>więcej o tym artykule<<)

W pierwszej części tej serii (Programista 8/2016) omówiliśmy szczegółowo zasadę działania prostego i intuicyjnego algorytmu Dyskretnej Transformaty Fouriera. W tej części pokażemy, jak ten sam algorytm przetestować na prawdziwych próbkach audio przy użyciu Web Audio API omówionego w części drugiej (Programista 2/2017). Oprócz tego przeanalizujemy metody modulacji cyfrowej oraz stworzymy krok po kroku prostą implementację stosu sieciowego bazującego na modelu OSI oraz TCP/IP. Umożliwi nam on zrealizowanie aplikacji przesyłającej wiadomości tekstowe między dwoma urządzeniami tylko za pomocą dźwięku.

Robert Rypuła

PROGRAMOWANIE GIER

Przygoda z wokselowym silnikiem gry – część 2 (>>więcej o tym artykule<<)

W poprzednim numerze omawialiśmy zagadnienia związane z grafiką komputerową oraz wokselami. Tamta wiedza była wystarczająca do stworzenia silnika graficznego, jednak by stworzyć silnik gry, potrzeba czegoś więcej – w szczególności dużo mniej teorii i dużo więcej narzędzi. Jak reprezentować obiekty w grze, jak wprowadzić interakcję między obiektami oraz jak to wszystko złożyć w całość w optymalny sposób? Po odpowiedzi na te oraz więcej pytań zapraszam do lektury artykułu.

Michał Krawczyk

ALGORYTMIKA

Wyznaczanie złożoności obliczeniowej algorytmów

Aby ocenić efektywność i jakość algorytmu, należy wyznaczyć za pomocą pewnych miar ilość zasobów komputerowych, jakie są potrzebne do wykonania tych algorytmów. W literaturze oraz w Internecie można znaleźć materiały dotyczące złożoności obliczeniowej, jednak nie zawsze jest to przedstawione w prosty i zrozumiały sposób, a takie postawienie i rozwiązanie problemu jest głównym celem artykułu.

Marek Żukowicz

BEZPIECZEŃSTWO

LLVM LibFuzzer (>>więcej o tym artykule<<)

Fuzzing jest obecnie jednym z najskuteczniejszych sposobów na detekcję błędów bezpieczeństwa w oprogramowaniu. Jest to prosta technika testowania, polegająca na przekazywaniu programowi nieprawidłowych danych i sprawdzaniu poprawności reakcji na nie. Od 2014 roku, kiedy po raz pierwszy został zaprezentowany fuzzer opierający się na badaniu pokrycia kodu, czyli American Fuzzy Lop, na rynku pojawiło się wiele rozwiązań tego typu. W tym artykule postaram się omówić bibliotekę pozwalającą na integrację fuzzera z własnym projektem oraz techniki pozwalające zmaksymalizować efektywność wyszukiwania błędów.

Kamil Frankowicz

TESTOWANIE I ZARZĄDZANIE JAKOŚCIĄ

Dlaczego programiści potrzebują testerów …

i dlaczego testerzy potrzebują programistów

Będąc młodym pracownikiem i szukając swojej drogi w IT, w sieci napotkałem opis, kim dla pewnego programisty jest tester: „Dobry tester to i błąd znajdzie, i go zdebuguje, a ten najlepszy to sobie go nawet sam naprawi”. Długo zastanawiałem się, czy to realny obraz, czy jedynie jakiś miks sarkazmu z ignorancją. Po pewnym czasie dowiedziałem się, że postrzeganie testerów przez programistów ma pełną skalę barw. Działa to też w drugą stronę.

Radosław Smilgin

STREFA CTF

HITCON Quals 2017 – Baby RubyEscaping, Real Ruby Escaping

Kwalifikacje na HITCON, główną imprezę odbywającą się na Tajwanie, były jednym z trudniejszych CTFów w tym roku. Zadania były zróżnicowane, chociaż ich wspólnym elementem było to, że ich autorzy bardzo starali się zadbać o to, by były frustrujące. Ostatecznie, mimo zaciętej rywalizacji, naszej drużynie udało się zająć pierwszą pozycję, zdobywając zwycięską flagę w ciągu ostatnich pięciu minut zawodów.

Mateusz "mlen" Lenik

PLANETA IT

Kurs angielskiego dla programistów. Lekcja 10

Przedstawiam dziesiątą, ostatnią już, lekcję minikursu angielskiego dla programistów. Tym razem tematem przewodnim są zintegrowane środowiska programistyczne. Zachęcam do wielokrotnego wykonywania ćwiczeń, aby dobrze utrwalić sobie przyswojony materiał.

Łukasz Piwko

KLUB DOBREJ KSIĄŻKI

Zawód: Programista

Mariusz "maryush" Witkowski