REKLAMA

Programista 1/2019 (80) – kwiecień 2019 – Wyrównanie pamięci w C++ – 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

Architecture: GynVM, czyli o rozszerzaniu możliwości radare2 słów kilka. Część 1 – przygotowanie środowiska

Na rynku dostępnych jest wiele narzędzi wspomagających inżynierię wsteczną oprogramowania lub – szerzej mówiąc – plików binarnych. Zarówno ich możliwości, jak i ceny są bardzo zróżnicowane. Projekt radare2 (w skrócie r2) służył do analizy i deasemblacji kodu. Przy tym pozostawał do niedawna jedną z najbardziej rozbudowanych opcji darmowego oprogramowania wydawanego na licencji open source. Wszystko to, pomimo wielu niedociągnięć i błędów, które mogą skutkować różnymi podatnościami, zaprezentowanymi między innymi przez Kamila Frankowicza z zespołu CERT.pl. Radare2 udostępniając zarówno interfejs graficzny (Cutter ), jak i CLI oraz rozbudowane API, pozwala na automatyzację pracy i wspiera szeroką gamę architektur – to również jedno z podstawowych narzędzi w arsenale wielu graczy podczas potyczek  w zawodach CTF. Niedawno opublikowane oprogramowanie Ghidra wyposażone jest między innymi w dekompilator, którego kod źródłowy właśnie trafił do repozytorium Github, co może wywołać sporo zamieszania w świecie analizy wstecznej i zmusić developerów radare2 do większego wysiłku.

foxtrot_charlie

JĘZYKI PROGRAMOWANIA

Wyrównanie pamięci w C++: koniec (problemów) jest bliski! (>>więcej o tym artykule<<)

Kwestie związane z wyrównaniem pamięci (ang. memory alignment) potrafią mieć niebagatelny wpływ na wydajność kodu, a czasami także na jego stabilność. Jeszcze do niedawna standard języka C++ dość wstrzemięźliwie określał narzędzia, za pomocą których programista mógł specyfikować wyrównanie struktur danych. Lukę uzupełniały same kompilatory, dostarczając – z definicji nieprzenośnych – rozszerzeń i atrybutów. Przenośność można było uzyskać poprzez mozolne i ostrożne implementowanie własnych mechanizmów alokacji pamięci. Dopiero standard C++17 został wzbogacony o elementy umożliwiające przenośne specyfikowanie wymagań dotyczących wyrównania pamięci.

Bartosz Szreder

PROGRAMOWANIE URZĄDZEŃ MOBILNYCH

Eksport kodu źródłowego z projektu Android do pliku HTML przy użyciu skryptu bash

W trakcie nauki programowania lub podczas testowania różnych rozwiązań zwykle tworzymy wiele małych projektów. Później, podczas pracy nad czymś poważniejszym, może pojawić się potrzeba zrobienia czegoś, „co już kiedyś chyba pisaliśmy”. Przeszukiwanie starych projektów będzie łatwiejsze, jeśli dla każdego z nich stworzymy prostą stronę HTML z odpowiednimi linkami. W tym artykule chciałbym zaproponować takie rozwiązanie.

Maciej Wojdak

PROGRAMOWANIE APLIKACJI WEBOWYCH

WebXR – immersyjna rzeczywistość na stronach internetowych

Wirtualna czy rozszerzona rzeczywistość – swego czasu zapowiadane jako rewolucja, która wpłynie na każdy aspekt naszego życia. Korporacje stanęły do wyścigu zbrojeń, dzięki czemu w nasze ręce trafiły takie narzędzia jak HoloLens, Oculus Rift czy Playstation VR. Ostatecznie pomimo całego szumu, jaki występował wokół tych pojęć – wciąż pozostają one niszą lub ciekawostką na stoiskach firm IT podczas targów pracy. Czym zatem w tym wszystkim jest pojęcie WebXR i jakie problemy pomoże nam rozwiązać?

Igor Podlawski

WYWIAD

Rozmowy o Soft Skillach w IT z Michałem Bartyzelem

Chcesz być bezpieczny? Zacznij od zmiany myślenia. Rozmowa z Piotrem Koniecznym

Ucz się i idź na staż, by rozwijać przyszłość!

ALGORYTMIKA

BTree – jak działa i dlaczego nadaje się do baz danych (>>więcej o tym artykule<<)

BTree jest uporządkowaną strukturą danych podobną do zrównoważonego binarnego drzewa przeszukiwań. Podstawowa różnica polega na tym, że węzły w BTree mogą posiadać więcej niż dwoje dzieci. Drzewiasta forma sprawia, że podstawowe operacje, takie jak wstawianie, usuwanie i wyszukiwanie elementu, zajmują czas proporcjonalny do wysokości drzewa, czyli O(log(liczba elementów w strukturze)). Zwiększone rozgałęzienie BTree sprawia, że jego wysokość jest zdecydowanie mniejsza niż wysokość zrównoważonego binarnego drzewa przeszukiwań zawierającego te same elementy. Sprawia to, że – mimo tej samej klasy złożoności operacji na tych strukturach danych – BTree w wielu zastosowaniach, takich jak bazy danych czy systemy plików, charakteryzuje się znacząco większą wydajnością.

Piotr Jastrzębski

Wybrane algorytmy i struktury danych. Część 5

Z perspektywy algorytmów i struktur danych żywot przeciętnego programisty jest dosyć nudny, bo zamyka się przeważnie na generycznej wersji List.
Tymczasem my zostawiliśmy ten typ już daleko za sobą i zdążyliśmy poznać znacznie więcej ciekawych struktur, jak na przykład listy, kopce, tablice haszujące czy drzewa. Czas wykonać kolejny krok – tym razem poznamy jedną z najbardziej elastycznych struktur danych, jaką jest graf.

Wojciech Sura

INŻYNIERIA OPROGRAMOWANIA

Event Storming – pierwszy krok do DDD? (>>więcej o tym artykule<<)

Chaos w projekcie. Odwieczne starcia programistów z ludźmi „od biznesu”. Legacy takie, że strach patrzeć. Greenfield robiony na hura. Takie sytuacje znamy wszyscy. A gdyby tak spróbować do analizy wymagań projektowych podejść w sposób nieco inny, nastawiony na wymianę informacji między programistami a biznesem? To właśnie myśl przewodnia Event Stormingu. Z tego artykułu dowiemy się, czym jest Event Storming, jak przebiega i jakie korzyści może wnieść do naszego projektu.

Justyna Klimaszewska-Stępniewska

Model C4, czyli cztery kroki do udokumentowania architektury oprogramowania

Czy można zobrazować i udokumentować architekturę oprogramowania w zaledwie czterech krokach? Zgodnie z założeniami modelu C4 większość systemów można przedstawić za pomocą maksymalnie czterech diagramów w sposób na tyle szczegółowy, że umożliwi on implementację architektury
systemowej przez zespoły programistyczne. Postanowiliśmy sprawdzić te założenia – przedstawiamy zarówno zasady dokumentowania architektury, jak i szczegółowy przykład użycia C4 w praktyce.

Krzysztof Grel, Justyna Klimaszewska-Stępniewska

STREFA CTF

Writeup Watchmen – CONFidence 2019 Teaser

Niedawno – po roku przerwy – odbył się kolejny CTF z marką CONFidence. Tym razem zmienił się organizator – zamiast drużyny Dragon Sector1 (który zajmuje się organizowaniem Dragon CTF na konferencji PWNing3) konkurs został przygotowany przez zespół p4. Na zawodników czekało 16 zadań z różnych kategorii. Najliczniej reprezentowana była kategoria „reverse engineering” i to na zadaniu właśnie z tej kategorii skupimy się w poniższym artykule.

Jarosław Jedynak

KLUB DOBREJ KSIĄŻKI

C++. Podróż po języku dla zaawansowanych. Wydanie II

Rafał Kocisz