Programista 9/2016 (52)
Programista 9/2016 (52)
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.
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.
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.
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.
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/.
Chciałbym podzielić się krótką historią mojej gry, którą niedawno stworzyłem na konkurs zorganizowany przez Gynvaela Coldwinda1. 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.
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.
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?
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ń.
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.
Opinie o tłumaczeniach są różne, także mocno niepochlebne. A jak to wygląda od naszej strony, tłumaczących publikacje programistyczne…?