Programista 2/2023 (107) – kwiecień/maj 2023 – Wave function collapse. Proceduralne generowanie map – SPIS TREŚCI

programistamag.pl 1 rok temu

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.

JĘZTKI PROGRAMOWANIA

Enumeracje w PHP 8.1

Alleluja! W PHP 8.1 pojawiło się długo oczekiwane przez programistów natywne wsparcie dla enumeracji! Nareszcie można ją stosować bez używania imitacji i zewnętrznych bibliotek.

Piotr Jaworski

Testy jednostkowe w języku Go

Testowanie systemu jest bardzo istotną częścią procesu jego wytwarzania – pozwala na sprawdzenie, czy nasza aplikacja działa poprawnie i czy spełnia wymagania. W wielu współcześnie używanych językach programowania wsparcie testowania nie jest częścią ich definicji i jest dostarczane z zewnątrz – najczęściej w postaci jakiejś mutacji frameworka xUnit. W Go jego odpowiednik, pakiet testing, jest częścią biblioteki standardowej, a dostarczane z toolchainem narzędzia pozwalają na zarządzanie testami. W tym artykule, skierowanym zarówno do obecnych, jak i potencjalnych programistów języka Go, przyjrzymy się tematowi testów jednostkowych

Maciej Norberciak

PROGRAMOWANIE SYSTEMÓW OSADZONYCH

Sprzętowy akcelerator krypto kontra procesor M33
Analiza wydajności i efektywności energetycznej

Algorytmy kryptograficzne znajdują szerokie zastosowanie w oparciu o wiele systemów oraz urządzeń. Ponieważ ich uruchomienie na bazie systemu często jest niewydolne ze względu na długi czas przetwarzania danych czy też obciążenie systemu, stosuje się dedykowane układy, takie jak akceleratory kryptograficzne. Urządzenia te są wykorzystywane podczas wymiany informacji w celu zwiększenia efektywności oraz bezpieczeństwa algorytmów kryptograficznych. Jak wzrost wydajności oraz bezpieczeństwa wpływa na zużycie energii?Między innymi na to pytanie postaram się odpowiedzieć, wykorzystując algorytm AES256 CBC uruchomiony na procesorze M33 oraz dedykowanym akceleratorze CryptoCell 312. Zapotrzebowanie energetyczne obu układów będzie obserwowane i mierzone z wykorzystaniem platformy PCA63511.

Dominik Starzyk

ALGORYTMIKA

Wave function collapse
Proceduralne generowanie map

Koncepcja proceduralnego generowania elementów gier komputerowych nie jest niczym nowym. Początkowo był to tylko stosunkowo tani sposób na zwiększenie re-grywalności (ang. replayability, chodzi o to, przez jaki czas gracz powraca do gry po jej ukończeniu), ale rozwiązanie to okazało się z czasem tak dużym źródłem inspiracji, iż niektóre współczesne produkcje wręcz bazują na proceduralnym generowaniu świata. Poznamy dziś algorytm, który pomaga generować losowe obrazy, zachowujące jednak pewien zbiór ograniczeń.

Wojciech Sura

INŻYNIERIA OPROGRAMOWANIA

Wzorce projektowe
Część 2. Wzorce strukturalne i behawioralne

Czasami można mieć wrażenie, iż takie zasady, jak wzorce projektowe, SOLID, KISS, DRY, YAGNI i jeszcze wiele innych, istnieją głównie po to, żeby móc w łatwy sposób odfiltrować kandydatów na rozmowach kwalifikacyjnych. Okazuje się jednak, iż znajdują one zastosowanie również w rzeczywistych projektach, co starałem się pokazać w poprzednim artykule, przedstawiając pierwsze dziesięć z dwudziestu dwóch podstawowych wzorców. Dziś zobaczymy, jak wygląda sytuacja z pozostałą dwunastką.

Wojciech Sura

Z ARCHIWUM CVE

RCE w Apache Struts2

Bezpieczeństwo systemów komputerowych to bardzo złożone zagadnienie. W czasach kiedy każdy aspekt funkcjonowania większego przedsiębiorstwa czy państwa jest zinformatyzowany, konsekwencje wykorzystania przez przestępców znalezionych podatności mogą być katastrofalne. jeżeli połączymy zdalne wykonanie kodu, niską dojrzałość organizacji oraz przechowywanie danych milionów obywateli, otrzymamy naprawdę wybuchową mieszankę.

foxtrot_charlie

PLaNETA IT

Projektowanie interfejsu bibliotek .NET

Nie jestem w stanie wyobrazić sobie żadnej współczesnej aplikacji, która nie korzysta z zewnętrznych bibliotek. Przetwarzanie różnych formatów plików, kooperacja z internetowymi usługami, wizualizacja danych, a choćby silniki ułatwiające projektowanie sztucznej inteligencji – wszystko to znajdziemy w tej chwili w repozytorium NuGet. Jednak napisanie biblioteki nie sprowadza się tylko do systemu klas, skompilowania do zestawu .NET i spakowania do pakietu NuGet – a przynajmniej nie wówczas, gdy zależy nam na tym, by biblioteka była naprawdę dobra.

Wojciech Sura

Nasze dni są policzone

Nie, to nie jest artykuł o algorytmie wyznaczania (kolejnego) końca świata lub o tym, jak gwałtownie ChatGPT zastąpi w przyszłości programistów. Zamiast tego porozmawiamy o tak prostej – wydawałoby się – rzeczy, jaką jest mierzenie czasu. Mam nadzieję, iż to, czego się zaraz dowiemy, skutecznie zniechęci wszystkich, którzy chcieli kiedyś napisać własną bibliotekę do obsługi daty i czasu.

Wojciech Sura

Idź do oryginalnego materiału