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 (>>więcej o tym artykule<<)
Testowanie oprogramowania jest bardzo ważną 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 (>>więcej o tym artykule<<)
Algorytmy kryptograficzne znajdują szerokie zastosowanie w oparciu o wiele systemów oraz urządzeń. Ponieważ ich uruchomienie na bazie oprogramowania 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 (>>więcej o tym artykule<<)
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, że 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, że 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, że 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śli 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, współpraca z internetowymi usługami, wizualizacja danych, a nawet silniki ułatwiające projektowanie sztucznej inteligencji – wszystko to znajdziemy obecnie w repozytorium NuGet. Jednak napisanie biblioteki nie sprowadza się tylko do oprogramowania 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 szybko 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ę, że 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