Programista 7/2016 (50)
Programista 7/2016 (50)
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.
7/2016 (50)
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.
7/2016 (50)
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?
7/2016 (50)
czyli jak eing6atya9zcću$indź@urtu
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.
7/2016 (50)
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.
7/2016 (50)
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.
7/2016 (50)
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 JavaScript na konkretnej platformie desktopowej wraz z zestawem bibliotek umożliwiających spójny dostęp do systemowych interfejsów programistycznych.
7/2016 (50)
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.
7/2016 (50)
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.
7/2016 (50)
W niniejszym artykule przedstawiamy kilka podstawowych zasad, których stosowanie pozwala niskim kosztem zwiększyć ogólny poziom bezpieczeństwa aplikacji webowej.
7/2016 (50)
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…
7/2016 (50)
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.
7/2016 (50)
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.
7/2016 (50)
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.
7/2016 (50)