REKLAMA

Programista 09/2016 (52) – Praktyczna inżynieria wsteczna – 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.

52_600px

BIBLIOTEKI I NARZĘDZIA

IPython. Wygodna interaktywna powłoka Pythona

Podczas pierwszego spotkania z Pythonem zwykle poznaje się jego wbudowany interpreter. Niestety powłoka ta jest mało przyjazna zarówno dla nowicjuszy, jak i dla wymagających użytkowników. W artykule przedstawione zostało rozwiązanie tego problemu – interaktywna konsola IPython. Opisano najciekawsze, ułatwiające pracę funkcjonalności, a także procesy instalacji oraz konfiguracji. Wspomniano o IPython Notebooku, czyli projekcie Jupyter, oraz o alternatywach dla IPythona, również w innych językach (>>więcej o tym artykule<<).

Dominik Czarnota

XCTest
Automatyczne testowanie kodu źródłowego oraz UI aplikacji iOS 10

Istnieje wiele definicji jakości oprogramowania. Niektóre z nich mierzą współczynnik, w jakim dany projekt programistyczny zgadza się z wymaganiami, a inne analizują zadowolenie użytkownika. Niezależnie od wybranej definicji kluczowym aspektem jakości oprogramowania jest oczywiście poprawność jego działania. Z tego powodu testowanie stanowi istotny element procesu wytwarzania oprogramowania. Szczególnie w kontekście technik ciągłej integracji, która wymaga łączenia nowych funkcjonalności. Poprawne wykonanie tego procesu wymaga, aby nowe funkcjonalności nie prowadziły do regresji. Aby to zapewnić, można skorzystać z testów automatycznych. W tym artykule opiszę platformę XCTest, dedykowaną testowaniu aplikacji iOS.

Dawid Borycki

PROGRAMOWANIE SYSTEMOWE

Systemy heterogeniczne

Na rynku systemów komputerowych można spotkać wiele różnorakich rozwiązań, których celem jest udoskonalenie systemu. Niektóre z nich mają za zadanie zwiększyć wydajność układu, inne zmniejszyć moc pobieraną przez system. Oczywiście nie sposób wymienić wszystkich przykładów z uwagi na fakt, że rozwiązań takich jest wiele i ciągle pojawiają się nowe. Jednym z nich jest umieszczenie kilku różniących się od siebie architektur w jednym układzie scalonym. Niniejszy artykuł przybliża tematykę systemów heterogenicznych i podzielony jest na kilka części. Pierwsza opisuje przypadek systemu, gdzie zastosowano zarówno architekturę ARMv7, jak i Cortex-M3. Kolejna przybliża Linuksowy koncept sterowników typu MISC (ang. Miscellaneous device drivers), który może być użyty do zarządzania rdzeniem Cortex-M3 z poziomu rdzenia ARMv7. Ostatnia część skupia się na wskazówkach dotyczących komunikacji międzyprocesorowej (>>więcej o tym artykule<<).

Grzegorz Jaszczyk

Inżynieria wsteczna w praktyce

W niniejszym artykule przedstawiono fragmenty książki "Praktyczna inżynieria wsteczna: Metody, techniki i narzędzia" (Wydawnictwo Naukowe PWN 2016), której autorami są: Tomasz Bukowski, Grzegorz Antoniak, Tomasz Kwiecień, Mateusz Krzywicki, Marcin Hartung, Gynvael Coldwind, Hasherezade, Maciej Kotowicz, Michał Kowalczyk, Robert Święcki, Piotr Bania oraz Mateusz Jurczyk. Zaprezentowane wycinki pochodzą z trzech odmiennie różnych rozdziałów. Pierwszy z nich („Python – obfuskacja i inżynieria wsteczna” – Gynvael Coldwind), jest opracowaniem inżynierii wstecznej konkretnej technologii (CPython) i wskazuje zarówno jak wyglądają niskopoziomowe aspekty tej implementacji, jak i opisuje zasady działania dostępnych bundlerów, kompilatorów oraz metod obfuskacji. Drugi cytowany rozdział („W pogoni za flagą – eksploitacja na systemach Windows i Linux” – Mateusz Jurczyk) jest natomiast studium przypadku prezentującym konkretne zastosowanie inżynierii wstecznej i doskonale wpasowującym się w ramy znanej z Programisty „Strefy CTF”. Trzeci, a zarazem ostatni fragment („Łamanie zaawansowanych technik przekierowania API” – Michał Kowalczyk) opisuje w detalach mechanizm importów w plikach PE. Pełen spis treści można znaleźć na stronie Wydawnictwa Naukowego PWN (>>więcej o tym artykule<<).

Gynvael Coldwind, Mateusz Jurczyk, Michał Kowalczyk

PROGRAMOWANIE GIER

Shift – gra w 1234 bajtach

Chciałbym podzielić się krótką historią mojej gry, którą niedawno stworzyłem na konkurs zorganizowany przez Gynvaela Coldwinda. Gra nosi tytuł „Shift” i jest prostą zręcznościówką napisaną w języku JavaScript. Całość, zgodnie z tematem przewodnim konkursu, mieści się w 1234 bajtach, stanowi zatem objętościowo około 20% tego artykułu.

Tomasz Wesołowski

Jak napisać grę i zmieścić się w 1234 bajtach

Niniejszy tekst ma przybliżyć powstawanie gry „eeel-1234” na konkurs „Gra w 1234 bajtach”. W grę można zagrać online pod adresem: http://cinu.pl/stuff/eeel-1234/.

Marcin Probola

PROGRAMOWANIE BAZ DANYCH

Zapewnienie jakości danych w środowisku SAS Data Integration Studio

Dane ładowane do hurtowni danych muszą spełniać wysokie wymagania jakościowe. Powinny one poprawnie opisywać rzeczywistość, aby rezultaty późniejszych analiz były wiarygodne dla ich odbiorców. W artykule zostaną przedstawione techniki oceny i poprawy jakości danych z wykorzystaniem narzędzia SAS Data Integration Studio (DIS) firmy SAS Institute.

Piotr Muryjas

ALGORYTMIKA

Uczenie nie tylko maszynowe

Ostatnimi czasy uczenie maszynowe jest jednym z popularniejszych haseł. Co się pod nimi kryje? Gdzie można je stosować? I od czego zacząć rozwiązywanie konkretnego problemu?

Marta Bech

LABORATORIUM BOTTEGA

Projektując nasz Kod Powszedni

Programistyczna codzienność: kurtka, kapcie, kawa. Po tym porannym rytuale zasiadamy do ulubionego IDE, rozprostowujemy palce i zaczynamy tworzyć kolejne linie kodu. W tyle głowy kołatają nam się dobrze utrwalone zasady: DRY, GRASP oraz SOLID. I właśnie ta ostatnia jest bohaterem moich dzisiejszych rozważań.

Jakub Marchwicki

BEZPIECZEŃSTWO

Protokół WebSocket

Czy wykorzystanie WebSockets związane jest z nowymi zagrożeniami bezpieczeństwa? Na co zwrócić szczególną uwagę? Przygotowany artykuł ma na celu wyjaśnić, jak działa wspomniany protokół, oraz przedstawić najważniejsze zagrożenia związane z jego zastosowaniem. Po przyswojeniu wiedzy teoretycznej, przyjdzie również czas na przećwiczenie zdobytych informacji w praktyce.

Marcin Piosek

PLANETA IT

Jakość tłumaczeń książek programistycznych

Opinie o tłumaczeniach są różne, także mocno niepochlebne. A jak to wygląda od naszej strony, tłumaczących publikacje programistyczne…?

Łukasz Piwko