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
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