REKLAMA

Programista 05/2016 (48) – Kontrola integralności – 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.

48

Numer ten od 21 czerwca jest dostępny w sieci salonów Empik.

PROGRAMOWANIE URZĄDZEŃ MOBILNYCH

Programowanie aplikacji iOS z wykorzystaniem RubyMotion i RubyMine (>>więcej o tym artykule<<)

Chociaż niektóre z narzędzi programistycznych umożliwiających tworzenie aplikacji dla platformy iOS nierzadko wymagają cierpliwości, to oprogramowanie dla tej platformy wyznacza złote standardy funkcjonalności, użyteczności, popularności oraz jakości wykonania i stabilności. Podobnie sytuacja wygląda w przypadku samych urządzeń mobilnych z systemem iOS. Z tego powodu tworzenie aplikacji mobilnych dla platformy iOS stanowi bardzo atrakcyjną i pożyteczną umiejętność. Aby ułatwić programowanie takich aplikacji, belgijska firma HipByte dostarcza narzędzie RubyMotion. Pozwala ono tworzyć wieloplatformowe natywne aplikacje mobilne dla najpopularniejszych platform (iOS, Android) oraz dla tvOS, OS X i watchOS z wykorzystaniem języka Ruby, co w połączeniu ze środowiskiem RubyMotion firmy JetBrains umożliwia stosunkowo szybkie i wygodne tworzenie aplikacji mobilnych. Zaprezentuję to w ramach tego artykułu na przykładzie aplikacji dla systemu iOS 9.3.

Dawid Borycki

PROGRAMOWANIE SYSTEMOWE

Kontrola integralności, czyli jak się upewnić, czy 2+2 nadal wynosi 4 (>>więcej o tym artykule<<)

W życiu każdego programu nadchodzi moment, kiedy musi opuścić przytulne miejsce na dysku programisty i wyruszyć w świat, podbijając serca użytkowników swoją funkcjonalnością i interfejsem. Świat jest jednak niebezpiecznym miejscem, przepełnionym ludźmi, którzy będą chcieli zobaczyć, co jest w środku, jak działa i czy przypadkiem nie mogą mieć tego za darmo. Zakładając, że nasz program nie jest z gatunku Open Source, możemy „nauczyć” go kilku technik obrony. Jedną z nich jest tytułowa kontrola integralności, pozwalająca na wykrycie popularnych sposobów analizy i modyfikacji oprogramowania.

Michał "Z" Żuberek

Którędy zmierza program, czyli wskaźnik stosu i rejestr statusu mikrokontrolera AVR od podszewki

Mikrokontrolery AVR szeroko stosowane i często wykorzystywane zarówno przez ekspertów, jak i amatorów mają swoje tajemnice. Programistom w języku C przychodzą z pomocą kompilatory, które w odpowiedni sposób tłumaczą kod na logikę mikrokontrolera. Jeśli jednak ktoś chciałby sięgnąć głębiej w zakamarki tego układu lub zwyczajnie zacząć programować w języku Asemblera, należałoby najpierw pojąć „sposób myślenia” według architektury AVR. Aby pomóc czytelnikowi w tym zadaniu, niniejszy artykuł opisuje specjalne rejestry mikrokontrolera, dzięki którym wykonywany program nie musi być liniowy: może zmieniać bieg, przeskakiwać instrukcje i wracać z powrotem do poprzednich instrukcji lub zwyczajnie wykonać ten sam fragment kodu raz jeszcze. Posłużymy się konkretnym przykładem modelu AT90S2313, architekturę którego opisuje w szczegółach [2] oraz nota katalogowa [3]. Wstępny logiczny projekt tego modelu zawarty został w artykule o IPCore w numerze 9/2015 „Programisty” [1].

Zyta Szpak

Zrozumieć emulację (>>więcej o tym artykule<<)

Koncept emulacji znany jest w IT co najmniej od lat 60-tych, gdy to w firmie IBM powstał emulator na najnowszy wówczas mainframe System/360. Dzięki temu emulatorowi użytkownicy nowych komputerów mogli bez żadnych obaw uruchamiać na nich oprogramowanie napisane na poprzednią generację sprzętu. Była to zapowiedź tego, jak ważna okaże się emulacja i wirtualizacja w nabierającym rozpędu rynku IT. Pomimo że dzisiaj korzystamy codziennie z rozwiązań bazujących na tych technologiach, to stosunkowo mało jest o nich informacji w formie przyjaznej początkującym. W niniejszym artykule postaram się przybliżyć podstawy tajników emulacji na przykładzie Chip-8.

Artur Łącki

PROGRAMOWANIE GIER

Debugowanie aplikacji korzystających z silnika fizycznego PhysX

PhysX Visual Debugger (PVD) jest darmową aplikacją wydaną przez firmę NVIDIA. Służy do wizualizacji danych pobieranych w czasie rzeczywistym z aplikacji korzystającej z silnika PhysX. Umożliwia także zapisywanie danych z przebiegu działania aplikacji i ich późniejsze analizowanie w celu wykrycia błędów aplikacji. Pomaga również w optymalizacji kodu.

Radosław Skoroch, Jacek Matulewski

TESTOWANIE I ZARZĄDZANIE JAKOŚCIĄ

Dobre praktyki w tworzeniu aplikacji przyjaznej testerom

Testowanie nietestowalnego, czyli jak testować aplikację, która przeczy dobrym praktykom.

Tomasz Lewczyk, Wojciech Tański

Automatyczne testowanie aplikacji mobilnych za pomocą narzędzi Xamarin

Różnorodność parametrów dostępnych urządzeń mobilnych wymaga od dostawców oprogramowania zoptymalizowania widoków aplikacji do różnych rozmiarów i rozdzielczości ekranów. Jednakże proces ten wymaga testowania aplikacji w różnych urządzeniach, co z kolei rodzi potrzebę zakupu wielu różnych urządzeń, jak również niezależnego instalowania kolejnych wersji aplikacji na poszczególnych urządzeniach lub emulatorach. Naturalnie taki tradycyjny sposób prowadzenia testów aplikacji mobilnych prowadzi do szeregu problemów. W szczególności czas realizacji testów rośnie liniowo z liczbą urządzeń oraz rozwojem kolejnych wersji aplikacji. Aby rozwiązać ten problem, Xamarin dostarcza odpowiednie narzędzia, między innymi usługę Test Cloud, która wspiera testowanie aplikacji mobilnych z wykorzystaniem dużej liczby fizycznych urządzeń. Celem tego artykułu jest zaprezentowanie wybranych funkcjonalności narzędzi Xamarin na potrzeby prowadzenia automatycznych testów aplikacji mobilnych.

Dawid Borycki, Tomasz Soroka

PYTHON HAS POWER

Menadżery zależności. Zagrożenia i rozwiązania z przykładami ze świata Node.js

Gwałtowny rozwój Internetu oraz usług oferowanych przez rozwiązania chmurowe doprowadził do powstania nowych form rozwoju oprogramowania, a także do znacznego przyspieszenia procesów wytwórczych. Dzięki dostępowi do bogatych repozytoriów bibliotek oraz rozszerzeń coraz częściej tworzenie aplikacji przypomina składanie ich z klocków. Jednakże zbytnia ufność podkładana w tych rozwiązaniach może prowadzić do pewnych zagrożeń.

Łukasz Piotr Łuczak

PROGRAMOWANIE BAZ DANYCH

Integracja danych w środowisku SAS Data Integration Studio – wprowadzenie

Integracja danych to proces, który w sposób krytyczny decyduje o ilości, rodzaju i jakości danych ładowanych do baz danych. Niniejsza publikacja rozpoczyna cykl prezentacji środowiska Data Integration Studio firmy SAS Institute i ma na celu przybliżyć czytelnikowi tematykę integracji danych oraz sposób jej realizacji na tej platformie. W artykule opisano techniki definiowania metadanych wykorzystywanych w projektowaniu i wykonywaniu procesów, których celem jest pobranie danych z różnych źródeł i zapisanie ich w docelowych zasobach.

Piotr Muryjas

NoSQL MySQL, czyli HandlerSocket

MySQL to bardzo zaawansowane narzędzie, które umożliwia przetwarzanie zawartych w nim informacji. Może analizować dane, biorąc pod uwagę dziesiątki warunków zadanych przez użytkownika. Każda kolejna wersja pozwala nam zadawać coraz to bardziej skomplikowane zapytania i daje coraz większe możliwości – ale jak mawiał Milton Friedman: „There ain't no such thing as a free lunch” – wszystko to prowadzi do relatywnie niskiej wydajności w przypadku prostych operacji zmiany lub pobrania danych. W poniższym artykule sprawdzimy, jak to wygląda w rzeczywistości na podstawie prostego skryptu PHP.

Łukasz Barulski

PLANETA IT

Pudełka w CSS i ich właściwości

Tłumacząc specyfikacje CSS (1 i 2.1 i niektóre moduły z CSS3), napotkałem wiele problemów terminologicznych i związanych ze zrozumieniem tekstu. Specyfikacje CSS mogą być trudne do zrozumienia nawet dla specjalisty. W tym artykule chciałbym zaproponować rozwiązanie chyba najbardziej rozpowszechnionego problemu związanego z tłumaczeniem terminologii CSS.

Łukasz Piwko

STREFA CTF

0CTF 2016 Quals – People’s Square

0CTF to zawody organizowane przez 0ops – najlepszą chińską drużynę według rankingu CTFtime.org. Tegoroczny finał w Szanghaju był poprzedzony internetowymi kwalifikacjami, w których wzięły udział 874 drużyny z całego świata. Kwalifikacje wygrała drużyna LC↯BC będąca fuzją 2 mocnych rosyjskich zespołów, polscy liderzy z Dragon Sector uplasowali się na miejscu 7., a nasz zespół zajął miejsce 13. W trakcie zawodów trafiliśmy na ciekawy problem kryptograficzny, którego rozwiązaniem postanowiliśmy podzielić się z czytelnikami.

Jarosław Jedynak, Stanisław Podgórski

KLUB DOBREJ KSIĄŻKI

Software Craftsman. Profesjonalizm, czysty kod i techniczna perfekcja

Rafał Kocisz