Programista 1/2022 (100)
Programista 1/2022 (100)
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.
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.
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.
Na początku grudnia, przez trzy dni, Katowice były stolicą europejskich programistów. Od 10 do 12 grudnia odbywał się w Spodku Hack Yeah 2021, największy w Europie hackathon, w którym wzięło udział ponad 1500 miłośników nowych technologii. Na wykonanie jednego z 10 zadań każdy zespół miał 40 godzin. Łączna pula nagród wyniosła 570 tys. zł.
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.
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.
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.
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.
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.
Automatyczne rozpoznawanie tablic rejestracyjnych
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?
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.
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.
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.
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.
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.