Zapraszamy do zamówienia magazynu w >>prenumeracie<<. Miesięcznik jest dostępny w formie papierowej, PDF, EPUB i MOBI oraz AZW3.
Nakład wydań drukowanych "Programisty" nr 50 się wyczerpał. Numer dostępny jest tylko w postaci elektronicznej.
Magazyn "Programista" nr 50 jest do 25 września w sieci salonów Empik.
KONKURS
Zaprogramuj robota z okładki (>>więcej o tym artykule<<)
Na okładce 50. wydania magazynu „Programista” znalazł się robot wraz z grą „Wieże Hanoi”. Robot poza tym, że wygląda fenomenalnie (a przynajmniej mam nadzieje, że tak jest i tak właśnie będę sobie to powtarzał), posiada jeszcze jedną ważną właściwość: w wersji elektronicznej okładki jest programowalny. W związku z tym ogłaszamy jubileuszowy konkurs, gdzie to właśnie Wy – Czytelnicy – możecie zaprogramować ruchy robota w taki sposób, by ułożył on znajdującą się przed nim Wieżę Hanoi.
Sebastian Rosik
BIBLIOTEKI I NARZĘDZIA
Docker. Wprowadzenie do technologii lekkich Linuksowych kontenerów
Technologie kontenerowe w ostatnich latach szybko zyskują na popularności. Ich zastosowanie z dnia na dzień staje się coraz szersze – począwszy od automatyzacji i testowania w małych aplikacjach, a skończywszy na ogromnych usługach online dostarczanych przez takich gigantów jak Google, Facebook czy Netflix. Niniejszy artykuł jest wprowadzeniem do zagadnienia kontenerów na przykładzie Dockera – popularnej i ogólnodostępnej implementacji.
Sławomir Zborowski
PROGRAMOWANIE SYSTEMOWE
Nowy gracz, czyli ARMv8 z lotu ptaka
W ciągu ostatnich kilku lat dokonał się olbrzymi postęp w dziedzinie procesorów z rodziny ARM. Do istniejących obszarów zastosowań, takich jak urządzenia NAS, telefony komórkowe, tablety, routery, doszedł zupełnie nowy – serwery. Tak! Po raz pierwszy dotychczas 32-bitowa rodzina procesorów rozrosła się o nową, 64-bitową architekturę ARMv8. Jakie zatem są korzyści?
Wojciech Macek
Zaciemnianie kodu, czyli jak eing6atya9zcću$indź@urtu (>>więcej o artykule<< )
Pani w szkole zawsze powtarzała, że kod musi być ładny i prosty do zrozumienia, bo to ułatwia pracę nam i innym. Nie myślała jednak o tym, że „inni” nie ograniczają się tylko do ludzi z naszego zespołu, ale obejmują także wszystkich próbujących sprawdzić, w jaki sposób działa nasz algorytm wyboru najlepszego kapelusza na podstawie zawartości naszej szafy i ostatnich wpisów na blogach modowych, lub też w jaki sposób sprawdzamy, czy wprowadzony klucz licencyjny jest poprawny. W niniejszym artykule chcielibyśmy zaprezentować metody obfuskacji, które sprawią, że analiza naszego kodu nie sprowadzi się do prostego użycia deasemblera/dekompilatora, ale pochłonie znacznie więcej czasu, pieniędzy, krwi i potu atakującego. >>pobierz fragment<<
Ariel "ariel" Wasteskeen, Michał "Z" Żuberek
PROGRAMOWANIE APLIKACJI WEBOWYCH
Responsywne szablony e-mail. Dlaczego warto zadbać o szablony naszych maili
„Era mobile” zrewolucjonizowała podejście do wielu technologii używanych w Internecie. Niektóre z nich nie sprostały wyzwaniu, a w przypadku innych dokonała się mniejsza lub większa rewolucja. E-mail jako jedna z najstarszych form przekazywania informacji nie stanowi w tym wypadku wyjątku. Oczywiście wiadomości tekstowe zawsze pozostaną takie, jakie były – jednak wysłanie bardziej złożonej treści w HTML wcale nie jest już takie proste, jak kiedyś. Oczywiście poprawnie skonstruowany szablon e-mail dzisiaj działa nadal, jednak musimy mieć świadomość tego, że z coraz większym prawdopodobieństwem wiadomość tekstowa zostanie odczytana nie na dużym ekranie komputera, a na kilkucalowym wyświetlaczu telefonu.
Paweł Kosiński
PROGRAMOWANIE BAZ DANYCH
ETL w środowisku SAS Data Integration Studio – poziom zaawansowany
Dane w systemach informatycznych często przechowywane są w odrębnych zasobach, co wynika z ich architektury lub modelu danych. Uzyskanie pełnego i zrozumiałego opisu rzeczywistości wymaga ich zintegrowania do postaci dystrybuowanej do miejsc docelowych. W artykule zaprezentowano techniki pobierania danych z wielu źródeł, podziału tabeli na podzbiory oraz łączenia tabel z wykorzystaniem narzędzia SAS Data Integration Studio (DIS) firmy SAS Institute. Dodatkowo rozszerzono opis zarządzania kontentem zadań o techniki sterowania strumieniem przetwarzania.
Piotr Muryjas
PROGRAMOWANIE APLIKACJI DESKTOPOWYCH
Electron. Programowanie wieloplatformowych aplikacji desktopowych przy użyciu technologii webowych
Zróżnicowany rynek urządzeń mobilnych wymusił powstanie szeregu narzędzi do tworzenia wieloplatformowych aplikacji mobilnych i webowych. Chociaż tego typu biblioteki i narzędzia programistyczne powstają głównie z myślą o aplikacjach mobilnych i internetowych, to analogiczny problem braku uniwersalności występuje również dla platform desktopowych. W tym przypadku jedno z możliwych rozwiązań polega na zastosowaniu środowiska Electron, które dostarcza pliku wykonywalnego dynamicznie interpretującego kod HTML/CSS oraz Java- Script na konkretnej platformie desktopowej wraz z zestawem bibliotek umożliwiających spójny dostęp do systemowych interfejsów programistycznych.
Dawid Borycki
BEZPIECZEŃSTWO
Fuzzing (>>więcej o tym artykule<< | >>pobierz fragment<<)
Fuzzing jest z zasady prostą metodą testowania oprogramowania, polegającą na przekazywaniu programowi nieprawidłowych danych, a następnie sprawdzaniu, czy aplikacja poprawnie na nie zareagowała. Technika ta przeżywa obecnie drugą młodość jako niezwykle skuteczny sposób na odkrywanie błędów bezpieczeństwa, a my w tym artykule postaramy się omówić, co leży u jej podstaw.
Gynvael Coldwind, Mateusz ''j00ru'' Jurczyk
Skarbiec w obłokach. Bezpieczne przechowywanie kluczy w Microsoft Azure
Chmura obliczeniowa na pierwszy rzut oka wydaje się być środowiskiem, w którym nikomu i niczemu nie można ufać. Czy implementacja zabezpieczeń opartych o kryptografię jest w takim środowisku z góry skazana na niepowodzenie? Na szczęście z pomocą mogą nam przyjść sprzętowe moduły kryptograficzne (HSM) oferowane od niedawna w środowisku Microsoft Azure.
Marcin Hoppe
Jak w prosty sposób zwiększyć bezpieczeństwo aplikacji webowej
W niniejszym artykule przedstawiamy kilka podstawowych zasad, których stosowanie pozwala niskim kosztem zwiększyć ogólny poziom bezpieczeństwa aplikacji webowej.
Michał Bentkowski
LABORATORIUM BOTTEGA
MySQL pod obstrzałem
Historia bazy danych MySQL sięga wczesnych lat 90., gdy dość popularnym rozwiązaniem była oferowana przez Hughes Technologies baza miniSQL. W tamtym czasie mySQL, gdyż także pod taką nazwą znany jest produkt HT, nie był demonem prędkości, a brak wsparcia dla indeksów czy trudności z obsługą wielu połączeń klienckich jednocześnie odbijały się czkawką w bardziej zaawansowanych aplikacjach. Rozwiązanie tych problemów miał Michael „Monty” Widenius, autor interfejsu do niskopoziomowego łączenia się z ISAM storage i indeksowania danych, który szybko skontaktował się z Davidem Hughesem, aby wspólnie zaoferować rynkowi nowy produkt…
Mariusz Gil
FELIETON
Jaka jest twoja estymata?
Rozwijając oprogramowanie, często działamy w projektach jak w systemie naczyń połączonych. Czas wykonania pojedynczego zadania wpływa na przebieg planowania całości. W związku z tym programista proszony jest o podanie estymacji złożoności zadania. Idealnie byłoby podać dokładną wartość czasu, jaki potrzebny jest na wykonanie prac tak, aby wycena kosztów i zysków była jak najbardziej precyzyjna. Dzięki temu decyzja „go” lub „no-go” dla projektu byłaby prosta. Ale w rzeczywistości estymacja czasu pracy z założenia musi być obarczona błędem. Jakie są tego konsekwencje? Jak ustrzec się błędnych decyzji? Przyjrzyjmy się, jakie mamy możliwości.
Grzegorz Kokot
STREFA CTF
Confidence CTF 2016 – Blackbox
CONFidence CTF to zawody organizowane przez Dragon Sector – najlepszą polską drużynę według rankingu CTFime.org, która zdobyła mistrzostwo świata w 2014 roku. Finały, jak co roku, odbyły się na konferencji CONFidence w Krakowie i były poprzedzone internetowymi kwalifikacjami. Również jak co roku przybyły drużyny z całego świata, by zmierzyć się ze sobą. W trakcie zawodów trafiliśmy na nietypowe zadanie, które udało nam się po długiej walce rozwiązać. Tak nam się spodobało, że postanowiliśmy je opisać w ramach Strefy CTF.
Jarosław Jedynak, Adam Krasuski
PLANETA IT
Loadery, launchery i inne niesforne słowa
Niektóre angielskie określenia sprawiają w tłumaczeniu na język polski wyjątkowe problemy. Do grupy tej zaliczają się m.in. słowa „loader” i „launcher”. W artykule tym analizuję kilka tego typu przypadków.
Łukasz Piwko
KLUB DOBREJ KSIĄŻKI
Język Go. Poznaj i programuj
Rafał Kocisz