Programista 2/2024 (112)
Programista 2/2024 (112)
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().
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.
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.
W dzisiejszych czasach coraz więcej entuzjastów elektroniki i programowania znajduje fascynujące wyzwanie w eksperymentowaniu z układami FPGA (Field-Programmable Gate Array). Choć początkowo kojarzone głównie z zastosowaniami przemysłowymi i projektami o dużym budżecie, FPGA stają się coraz bardziej dostępne również dla hobbystów. To niesamowite narzędzie, które otwiera przed nami nieograniczone wręcz możliwości tworzenia własnych układów cyfrowych. W tym artykule dowiemy się, dlaczego te programowalne układy są tak ekscytujące dla pasjonatów elektroniki i jak można zacząć z nimi przygodę.
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.
Bezpieczeństwo firmy i niezakłócona płynność finansowa to fundamenty niezbędne do budowania jeszcze silniejszej pozycji na rynku. Czynniki te są wypadkową decyzji podejmowanych przez członków zarządu. Decyzji, które nie zawsze są efektem pogłębionej analizy.
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.
Popularne rozwiązania oparte na AI, takie jak ChatGPT czy Google Gemini (do niedawna Bard), bardzo zmieniły codzienną pracę programistów. Podczas procesu kodowania korzysta się z nich przy sprawdzaniu i poprawianiu błędów czy tworzeniu testów. Automatyzacja pracy przy użyciu AI zaostrzyła jednak apetyt na coraz bardziej zaawansowane sposoby jej wykorzystania. Projekt CodeAI, realizowany przez Capgemini Polska, pozwala wykorzystywać sztuczną inteligencję w bezpieczny i efektywny sposób.
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.
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…
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.