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.
BIBLIOTEKI I NARZEDZIA
std::format: nowoczesne i bezpieczne formatowanie napisów w języku C++ (>>więcej o tym artykule<<)
Czy pisząc program w języku C++/ miałeś/aś kiedyś dylemat, jakiej biblioteki użyć do formatowania tekstu? Czy spoglądałeś/aś zazdrośnie na inne języki programowania oferujące bardziej nowoczesne narzędzia służące do realizacji tego zadania? W niniejszym artykule znajdziesz opis mechanizmu std::format, który stanowi bardzo ciekawą alternatywę dla nieco przestarzałych, standardowych rozwiązań służących do formatowania tekstu w C++: biblioteki Iostreams oraz funkcji printf().
Rafał Kocisz
JĘZYKI PROGRAMOWANIA
Generyki w Go
Przez ponad 10 lat od chwili powstania język Go nie wspierał bezpośrednio paradygmatu programowania generycznego [1]. Nie powstrzymało to nikogo od pisania dobrego, produkcyjnego kodu i nie przeszkadzało w powstaniu takich użytecznych i powszechnie stosowanych narzędzi, jak (napisane w całości w Go) Docker, Kubernetes, Terraform, Vault, Consul, Podman, age czy SOPS. Generyki pojawiły się dopiero w wersji 1.18 języka i spotkały się z mieszanymi reakcjami społeczności – od „dlaczego tak późno?” do „dlaczego w ogóle?” Artykuł, skierowany do obecnych i przyszłych programistów Go, omawia, jak zrealizowano wsparcie dla generyków w tym języku, pokazując typowe przypadki użycia, problemy i pułapki, z którymi można się spotkać w codziennej praktyce developerskiej.
Maciej Norberciak
INŻYNIERIA OPROGRAMOWANIA
Jak robić dobry code review (>>więcej o tym artykule<<)
Robienie dobrych code review to umiejętność, którą warto opanować. W artykule omówimy, jakie są zalety i wady tego procesu i w jakich projektach warto go stosować. Zastanowimy się, jakie podejście warto przyjąć, robiąc review kodu, w jaki sposób najlepiej to robić, na jakich aspektach kodu możemy się skupić i wreszcie – w jakiej formie pisać komentarze z naszymi uwagami do kodu, aby służyły one dla dobra projektu, a cały ten proces był okazją do owocnej komunikacji między członkami zespołu, a nie źródłem konfliktów.
Adam Sawicki
Jak zaprojektować opartego na AI chatbota dla użytkownika, który nie wie, czego szukać?
Jak pomóc osobie, która nie wie, czego szuka? Z pomocą przychodzi sztuczna inteligencja, która pozwala „czytać między wierszami i synonimami”. Na przykładzie chatbota MindMatch, pomagającego znaleźć odpowiedniego psychoterapeutę i styl terapii, pokazujemy, jak można wykorzystać AI do chatbotów pełniących rolę wyszukiwarek dla niepewnych swoich potrzeb użytkowników.
Zofia Smoleń
TESTOWANIE I ZARZĄDZANIA JAKOŚCIĄ
Klucz do sukcesu testów funkcjonalnych, czyli o danych testowych
Mogłoby się wydawać, że przygotowanie danych do testów funkcjonalnych to banalna sprawa. Przecież jedyne, co musimy zrobić, to zasilić bazę danych odpowiednimi rekordami, prawda? W tym artykule opowiem o tym, dlaczego nie zawsze będzie to proste zadanie oraz jakie techniki pozwolą na zachowanie możliwie wysokiej spójności danych testowych.
Szymon Milewski
BEZPIECZEŃSTWO
Sztuka emulacji malware – czyli jak dogadać się z botnetem (>>więcej o tym artykule<<)
Tytuł artykułu może budzić zrozumiałe wątpliwości czytelnika. Po co emulować malware? Czy nie wystarczy, że uruchamia się on na naszych komputerach? W dodatku po co to właściwie robić? I co można w ten sposób uzyskać? W tym artykule skoncentrujemy się na odpowiedziach na te pytania, a także zarysujemy szkic systemu, który będzie w stanie automatyzować te działania w większej skali.
Jarosław Jedynak
Jak pisać bezpieczne programy?
Prawdopodobnie spotkaliście się z wyciekiem danych lub włamaniem do systemu komputerowego. Być może nie zdarzyło się to bezpośrednio w projektach, nad którymi pracujecie, ale chociażby w jednej ze znanych wam firm. Jeśli nie macie najmniejszego pojęcia o tym, w jaki sposób dochodzi do tego rodzaju wycieków, ten artykuł jest zdecydowanie dla was! Dowiecie się w nim na konkretnych przykładach, w jaki sposób pisać programy, aby nie otwierać niepotrzebnie furtek do ataku na waszą aplikację. Zacznijmy od tego, co moim zdaniem jest najważniejsze podczas pisania aplikacji, czyli…
Dawid Pilarski
Z ARCHOWUM CVE
Podniesienie uprawnień dzięki Visual Studio
W serii „Z archiwum CVE” prezentujemy ciekawe, a czasami wręcz legendarne podatności i tłumaczymy, w jaki sposób atakujący może wykorzystać niedopatrzenia i błędy w oprogramowaniu lub konfiguracji, aby osiągnąć niezamierzony przez autora stan wyjściowy programu lub całego systemu. Do tej pory królowały głównie podatności występujące w systemach z rodziny GNU/Linux oraz Unix. Często były to błędy z dość długą historią. W ostatnim numerze omówiony został przykład innego, sławnego edytora – VIM Tym razem postaram się przybliżyć czytelnikowi podatność skatalogowaną pod numerem CVE-2024-20656, która została naprawiona przez Microsoft na początku roku 2024. Umożliwia ona podniesienie uprawnień użytkownika do NT AUTHORITY\SYSTEM poprzez wykorzystanie jednej z usług pomocniczych w środowisku developerskim Microsoft Visual Studio.
foxtrot_charlie