Programista 2/2023 (107)
Programista 2/2023 (107)
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.
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.
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 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.
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, ż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ń.
O możliwościach rozwoju w Fast White Cat
Zapraszamy do lektury wywiadu z Bartłomiejem Szubertem, który jako Vice Head of Development w Fast White Cat specjalizuje się w programowaniu Magento, m.in. rozwijając projekty w technologii PWA Studio. Wcześniej zdobywał umiejętności jako Full Stack Developer i Tech Lead.
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ą.
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ę.
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.
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.