REKLAMA

Programista 1/2022 (100) – styczeń/luty 2022 – wydanie 100 – SPIS TREŚCI

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

Własny system plików z FUSE

Ukrycie szczegółów systemu plików za warstwą abstrakcji jest znaczącym uproszczeniem dla użytkownika, są to pliki – reprezentujące pojedyncze jednostki danych, a także foldery – zbiory plików.

Paweł "Krzaq" Zakrzewski

eXpressApp Framework przyjacielem programisty
Jak zbudować aplikację biznesową w 2 godziny

W poniższym artykule omówimy proces tworzenia aplikacji biznesowej z wykorzystaniem eXpressApp Framework firmy DevExpress na przykładzie prostej aplikacji pozwalającej wystawiać faktury i prowadzić rozrachunki z klientami. Przedstawimy kluczowe elementy i zasady definiowania modeli biznesowych, kontrolerów oraz dopasowywania tych mechanizmów do specyficznych potrzeb użytkownika.

Jacek Kosiński, Patryk Wyprzał

JĘZYKI PROGRAMOWANIA

Metody magiczne w PHP

Nieznajomość metod magicznych u programistów PHP powinna być karalna. Czytając ten artykuł, dowiesz się, co ma wspólnego przeciążanie metod i właściwości z metodami magicznymi, jak przydają się one w debugowaniu i jak zachować odrobinę prywatności w udostępnianiu danych klasy

Piotr Jaworski

Dedukcja argumentów szablonu dla klas w C++17

Standard C++17 wprowadza mechanizm automatycznego wykrywania typów argumentów szablonów klas (Class template argument deduction – CTAD). Argumenty szablonu są określane na podstawie konstruktora klasy. Zmiana ta ułatwia codzienną pracę programisty oraz pozwala pisać bardziej ogólny i przejrzysty kod. Warto więc poznać CTAD lepiej, by uniknąć nieoczywistych błędów.

Jakub Woźniczka

PROGRAMOWANIE SYSTEMOWE

Kprobe od środka. Przeprawa przez jądro Linuxa (>>więcej o tym artykule<<)

Współczesne jądro systemu Linux ma kilka mechanizmów debugowania i profilowania, takich jak DTrace, ftrace, ktap, LTTng, perf, sysdig, SystemTap czy ostatnio popularny eBPF. Większość z nich wykorzystuje m.in. kprobe do wstawiania próbek w jądrze systemu. Jednak żaden z nich nie daje takich możliwości jak kprobe w przypadku, gdy potrzebujemy wpłynąć na przebieg wykonywania kodu. Ma to jednak swoją cenę, gdyż kprobe jest jednym z najmniej przyjaznych sposobów profilowania kernela. Jak już wspomniano wcześniej, kprobe jest podstawą pod różne mechanizmy debugowania i profilowania jądra systemu, dlatego warto wiedzieć, jak ten mechanizm działa oraz jakie ma możliwości i ograniczenia.

Marek Maślanka

Hello World pod lupą (>>więcej o tym artykule<<)

Pierwszym krokiem w klasycznej ścieżce edukacji przyszłych programistów jest stworzenie programu wypisującego – najczęściej w konsoli – tekst „Hello, World!”. Sam program jest z definicji banalny, ale to, co dzieje po jego uruchomieniu – już nie do końca. W tym artykule prześledzimy ścieżkę wykonania mini-programu „Hello World” napisanego w Pythonie, zaczynając od pojedynczego wywołania wysokopoziomowej funkcji print, poprzez kolejne poziomy abstrakcji interpretera, systemu operacyjnego i sterowników graficznych, a kończąc na wyświetleniu odpowiednich pikseli na ekranie. Skupimy się przy tym na systemie Windows. Jak się okaże, ścieżka ta sama w sobie nie jest ani prosta, ani krótka, ale zdecydowanie bardzo ciekawa.

Adam Sawicki, Mateusz Jurczyk, Gynvael Coldwind

PROGRAMOWANIE APLIKACJI WEBOWYCH

API Platform – tworzenie API GraphQL

API Platform to doskonałe narzędzie do szybkiego tworzenia nowoczesnych webowych interfejsów aplikacji. W poprzednich wydaniach magazynu wykorzystaliśmy tę platformę do stworzenia API w architekturze REST. Dziś wykorzystamy ten framework do tworzenia API GraphQL – nowoczesnego języka zapytań stworzonego na potrzeby Facebooka.

Adrian Chojnicki

PRZETWARZANIE RÓWNOLEGŁE I ROZPROSZONE

Architektury Big Data i procesowanie strumienia danych w czasie rzeczywistym na bazie Kafka Streams (>>więcej o tym artykule<<)

Sposób, w jaki postrzegamy i analizujemy dane, uległ sporym zmianom w ostatnich latach. Jeszcze do niedawna były one zazwyczaj kojarzone z pojedynczą maszyną i systemami o scentralizowanej architekturze. Dzisiaj często są współdzielone między wieloma maszynami czy odległymi centrami danych w rozproszonej architekturze. Zmianie uległ sposób ich przetwarzania, gdzie terminy takie jak Lambda czy Kappa opisują architekturę użytą przy projektowaniu i budowaniu systemów przetwarzających dane Big Data.

Marcin Miklasz, Bartłomiej Szczotka,  Konrad Kowalczyk

ALGORYTMIKA

Problem ANPR
Automatyczne rozpoznawanie tablic rejestracyjnych (>>więcej o tym artykule<<)

Na wlocie do Wrocławia od strony Warszawy znajdują się dwie bramki. Na pierwszej z nich zainstalowano dwie kamery oraz radary mierzące prędkość, zaś na drugiej, nieco dalej, umieszczono tablice wyświetlające napisy przy pomocy diod LED. Gdy kierowca przejedzie przez pierwszą bramkę zbyt szybko, na tablicy odpowiadającej jego pasowi ruchu pojawi się ostrzeżenie wraz z numerem rejestracyjnym jego samochodu. Jak to możliwe?

Wojciech Sura

LABORATORIUM BOTTEGA

W co grają ludzie?
Jak zrozumieć ukryte struktury i algorytmy komunikacji międzyludzkiej przy pomocy Analizy Transakcyjnej

Opracowana przez Erica Berne’a koncepcja Analizy Transakcyjnej ma zaskakująco wiele wspólnego z kodem i architekturą systemów. To właśnie ten fakt sprawia, że jest tak skutecznym sposobem rozwijania umiejętności miękkich (ang. soft skills) u programistów, liderów technicznych i konsultantów. Oparta na schematach i modelach strukturalnych, Analiza Transakcyjna jest narzędziem generycznym i stanowi podstawę do zrozumienia niemal wszystkich pozostałych teorii dotyczących kompetencji miękkich. Ucząc się tej jednej, zdobywamy klucz do pozostałych.

Kamil Rogulski, Sławomir Sobótka

BEZPIECZEŃSTWO

Analiza złośliwego oprogramowania: packery i obfuskacja

W pierwszej części artykułu (Programista 5/2021) wkroczyliśmy w fascynujący świat inżynierii wstecznej, a także przeanalizowaliśmy próbkę ransomware z rodziny Mapo. Dzisiaj pójdziemy dalej w tę stronę i weźmiemy na warsztat kolejną próbkę złośliwego oprogramowania. Ponownie będzie to ransomware, tym razem z rodziny Cryptomix. Naszym celem będzie analiza metody szyfrowania i ocenienie szansy na odzyskanie zaszyfrowanych plików.

Jarosław Jedynak

Z ARCHIWUM CVE

OpenSSL Heartbleed

OpenSSL jest najpopularniejszą biblioteką kryptograficzną na świecie. Jednym z podstawowych jej zastosowań jest obsługa protokołu TLS/SSL, powszechnie wykorzystywanego w Internecie. Niestety jakość kodu tej biblioteki pozostawia wiele do życzenia, co jest dość zaskakujące, biorąc pod uwagę fakt, że jest ona jednym z fundamentów zapewniających bezpieczeństwo sieci. O wątpliwej jakości kodu świadczy błąd CVE-2014-0160, potocznie nazywany Heartbleed, umożliwiający wykradanie poufnych informacji. W 2014 roku podatność ta zdobyła nagrodę Pwnie Awards w kategori najlepszy błąd po stronie serwera. Heartbleed zapoczątkował całą serię nowych inicjatyw mających na celu poprawę jakości kodu biblioteki OpenSSL.

Mariusz Zaborski

PLANETA IT

DeFi – chwilowy trend czy prawdziwa rewolucja?

W czasach, gdy tradycyjne waluty tracą coraz bardziej na wartości, a interesy banków przekładane są ponad prywatną własność, należy zadać sobie pytanie, czy można coś z tym zrobić. Może istnieje jakaś technologia, przy pomocy której udałoby się stworzyć rozwiązania, które nie wykluczałyby nikogo i dawały równy dostęp do świata finansów dla każdej pojedynczej osoby? Okazuje się, że dzięki technologii blockchain stworzenie takiego mechanizmu jest jak najbardziej możliwe. Co więcej, takie rozwiązania już istnieją i określane są jako DeFi (Decentralized Finance), czyli zdecentralizowane finanse.

Przemysław Trepka

PRAWO

Konsekwencje Polskiego Ładu dla programistów

Wejście w życie od 1 stycznia 2022 r. pakietu zmian podatkowych określanych jako Polski Ład skutkować będzie dla całej branży IT wzrostem obciążeń podatkowo-składkowych. Dotyczyć to będzie zarówno firm i ich właścicieli, jak też pracowników oraz kontraktorów B2B. Konsekwencją będzie dalszy wzrost kosztów pracowniczych, co zwłaszcza w aktualnej sytuacji na rynku pracowniczym może nieść ze sobą poważne skutki dla dalszego rozwoju całej branży w Polsce.

Jakub Szkutnik