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 NARZĘDZIA
Komendy i warunki
Efektywne zarządzanie komendami w aplikacjach desktopowych
Architektura każdej aplikacji desktopowej powiązana jest ściśle z koncepcją komend, czyli poleceń, które może jej wydawać użytkownik. Ich implementacja może być nieskomplikowana albo bardzo wyszukana, ale każdy wybór pociąga za sobą istotne konsekwencje. Przyjrzyjmy się, które z podejść przyniesie nam najwięcej korzyści.
Wojciech Sura
XAF przyjacielem programisty
Kontrola dostępu i ewidencja działań użytkowników
W poprzednim artykule dotyczącym XAF (Programista 1/2022) przedstawiliśmy, jak za pomocą frameworka XAF zbudować prostą aplikację biznesową. Dzisiaj chcemy pokazać, w jaki sposób można ją uzupełnić o kontrolę dostępu i rejestrowanie historii zmian danych przez użytkownika. Artykuł polecamy też programistom C#, którzy nie są zainteresowani samym XAF – opisywany moduł Security Module można bowiem wykorzystać w dowolnym projekcie tworzonym w C# [11], [13].
Jacek Kosiński, Patryk Wyprzał
JĘZYKI PROGRAMOWANIA
C++23 – podgląd nowości w nadchodzącym standardzie (>>więcej o tym artyule<<)
Wszystko wskazuje na to, że nowy standard C++ zostanie opublikowany zgodnie z planem w roku 2023. Bez wielkiej niespodzianki będzie on nosił miano C++23. W tym artykule opiszę najciekawsze i najistotniejsze ze zmian, których możemy spodziewać się w przyszłym roku.
Paweł "Krzaq" Zakrzewski
Szablony C++ w akcji – silnie typowane, nazwane parametry
Czy pisząc program w języku C++, natknęliście się kiedyś na wywołanie typu foo(true, false, true)? Nie mogliście sobie poradzić ze stworzeniem API, potrzebującego wielu parametrów o domyślnych wartościach, które będzie wygodne w użyciu? W tym artykule przedstawimy jedno z możliwych rozwiązań tego problemu zaimplementowanego w bibliotece indicators autorstwa p-ranav (repozytorium p-ranav/indicators na platformie GitHub).
Dawid Pilarski
PROGRAMOWANIE SYSTEMÓW OSADZONYCH
Pokaż, na co cię stać – USB Power Delivery
W dobie rosnących możliwości przesyłu danych oraz energii, przy jednoczesnej standaryzacji i ujednolicaniu wszelakich połączeń, niezbędny jest mechanizm, który to wszystko zbiera w całość. Z pomocą przychodzi protokół USB Power Delivery (PD) korzystający z portu USB typu C. W artykule postaram się przybliżyć, co takiego dzieje się w tej małej wtyczce, że daje nam możliwości, o których mało kto słyszał.
Dawid Niedźwiecki
PRZETWARZANIE RÓWNOLEGŁE I ROZPROSZONE
SIMD – wrzucamy 6-ty bieg na CPU (>>więcej o tym artykule<<)
SIMD (ang. Single Instruction, Multiple Data) jest typem architektury komputerowej, w której w danej chwili jedna instrukcja wykonywana jest jednocześnie na wielu strumieniach danych. Architektura ta jest charakterystyczna dla procesorów wektorowych i spotykana jest powszechnie w GPU kart graficznych. Nie jest jednak do nich ograniczona – dobrodziejstwa SIMD dostępne są również w procesorach z rodziny x86, ARM i innych, kryjąc się pod takimi nazwami marketingowymi, jak SSE, AVX czy NEON.
Marcin Ławicki
ALGORYTMIKA
Synchronizacja czasu z wykorzystaniem Precision Time Protocol
Istnieje wiele sposobów synchronizacji czasu pomiędzy urządzeniami. Jednym z nich jest wykorzystanie Precision Time Protocol. W poniższym artykule zapoznamy się z tym protokołem, poznamy podstawowe pojęcia oraz prześledzimy przykładowy przebieg synchronizacji.
Marek Więcek
Autonomiczny samochód
Implementujemy wirtualnego kierowcę przy pomocy sieci neuronowych i algorytmu ewolucyjnego (>>więcej o tym artykule<<)
Czy wam również zdarzyło się użyć jakiegoś sformułowania, które umieszczone w odpowiednim kontekście było całkowicie sensowne, ale wyrwane z tegoż kontekstu brzmiało całkowicie absurdalnie? Moim dotychczasowym faworytem jest komentarz w kodzie: „Metoda niszczy wszystkie światy” (chodziło o usunięcie scen – światów – w autorskim silniku renderującym 3D). Wczoraj do kolekcji dołączył kolejny wpis; zapytany przez żonę, dlaczego siedzę do późna przy komputerze, odpowiedziałem: „Nie mogę zmusić moich zmutowanych kierowców do przejechania całej trasy”. Zdanie to, choć brzmi niedorzecznie, jest jednocześnie całkiem niezłym wprowadzeniem do tematyki, którą chcę poruszyć w niniejszym artykule.
Wojciech Sura
INŻYNIERIA OPROGRAMOWANIA
Walidacja architektury jako integralna część procesu wytwarzania oprogramowania
Jak dbałość o architekturę może stać się naturalną składową rozwoju oprogramowania? Czy przykładamy taką samą wagę do utrzymania architektury jak do jakości naszego kodu? Warto zadać sobie pytanie, w jaki sposób automatyzacja tego procesu może wspierać nas w codziennym developmencie. W tym artykule odpowiemy na postawione pytania oraz przedstawimy narzędzia dostępne dla środowiska Node.js.
Konrad Jarzyna
Z ARCHIWUM CVE
PwnKit
Większość nowoczesnych systemów operacyjnych implementuje szereg mechanizmów, których zadaniem jest utrudnienie przeprowadzenia niepożądanych działań przez zwykłego użytkownika. Droga od ustalonego przyczółka, którego samo zdobycie może nie być trywialne, po pełną kompromitację systemu nie powinna być usłana różami. Wręcz przeciwnie, wykonywanie jakichkolwiek działań mogących zakłócić pracę systemu zwykle wymaga pokonania kilku znaczących barier.
foxtrot_charlie