REKLAMA

Programista 8/2015 (39) – Zrozumieć programowanie – spis treści

Zapraszamy do zamówienia magazynu w prenumeracie. Miesięcznik jest dostępny w formie papierowej, PDF, EPUB i MOBI.

Magazyn programistów i liderów zespołów IT

Wraz z prenumeratą możesz też otrzymać w prezencie trzy dowolne wydania archiwalne. Wybierz swoje wydania archiwalne "Programisty": http://programistamag.pl/magazyny/

Numer ten będzie dostępny w Empikach od 21 września.

Przedpremierowe fragmenty książki Gynvaela Coldwinda "Zrozumieć programowanie" 

W numerze tym prezentujemy przedpremierowo obszerne, wyczerpujące fragmenty książki pt. „Zrozumieć programowanie”, która po 20 października ukaże się nakładem Wydawnictwa  Naukowego PWN. Opublikowane u nas zagadnienia: Synchronizacja, Muteksy i sekcje krytyczne, Typy stałoprzecinkowe, Przekierowania. (>>więcej o tym artykule<<)

BIBLIOTEKI I NARZĘDZIA

Boost.Corner: biblioteka CircularBuffer

Bufor cykliczny to przydatna struktura danych, nieobecna niestety w standardowej bibliotece języka C++. Na szczęście pakiet Boost C++ Libraries wypełnia tę lukę, oferując łatwą w obsłudze, sprawdzoną i zgodną ze standardem implementację bufora cyklicznego w ramach komponentu Boost.CircularBuffer. Niniejszy artykuł prezentuje możliwości tej biblioteki.

Rafał Kocisz

Czy „self” jest nowym „this” w JavaScript?
O byciu nowicjuszem…

Minęło już trochę czasu, od kiedy jeden z moich kolegów zadał mi pytanie: „Dlaczego wszędzie w kodzie używamy var self = this;?”. Pamiętam, że wtedy, jeszcze jako JavaScript-nowicjusz, dumnie odpowiedziałam: „Jak to dlaczego? Przecież kontekst się zmienia!”. Teraz wiem, że wtedy sama do końca nie rozumiałam, co to tak naprawdę znaczy. Oswojenie się z mechanizmami języka JavaScript, w szczególności z pojęciami zasięgu leksykalnego (ang. lexical scope) i kontekstu (ang. context), zajęło mi trochę czasu, a jeszcze więcej potrzebowałam, żeby wyrobić sobie własną opinię o tym, czy naprawdę var self = this; jest niezbędne.

Marta Dycjan

BIBLIOTEKI I NARZĘDZIA

Zaawansowane funkcje systemu Windows 10: śledzenie twarzy

Interfejs programistyczny uniwersalnej platformy Windows dostarcza narzędzia umożliwiające tworzenie adaptywnych aplikacji na platformy desktopowe, mobilne, a także dla urządzeń wbudowanych. Ponadto SDK Windows 10 dostarcza szereg zaawansowanych funkcjonalności, takich jak chociażby rozpoznawanie pisma odręcznego, syntezacja mowy, a nawet śledzenie ludzkiej twarzy na obrazach, składających się na sekwencję wideo. W tym artykule od podstaw zaimplementujemy aplikację, której celem będzie akwizycja obrazów z kamery internetowej. Obrazy te zostaną następnie poddane analizie w celu rozpoznania i śledzenia twarzy.

Dawid Borycki

PROGRAMOWANIE SYSTEMOWE

Kod Schrödingera
czyli maszyna abstrakcyjna języka C (>>więcej o tym artykule<<)

Język C uważany jest za niskopoziomowy i „bliski sprzętowi”. Tymczasem model języka C opiera się na abstrakcyjnej maszynie, która z dużą swobodą realizuje program, często działając wbrew potocznym intuicjom na temat kodu. Abstrakcyjna maszyna C „materializuje się” w postaci efektów ubocznych programu, przypominając tym samym słynny paradoks kota Schrödingera, który tym bardziej jest w pudełku, im bardziej tam zaglądamy.

Maciej Czekaj

ALGORYTMIKA

Symfonia problemów

W niniejszym artykule postaram się opisać wybrane algorytmy rozpoznawania wysokości dźwięków w nagraniach. Opowiem, w jaki sposób prawidłowo obliczyć widmo dźwięku, jak znaleźć w nim odpowiednie wzorce i jak wyznaczyć na ich podstawie ton podstawowy, a także dlaczego nie da się tego zrobić automatycznie. Zadanie jest dużo trudniejsze niż z początku mogłoby się wydawać…

Juliusz Stasiewicz

INŻYNIERIA OPROGRAMOWANIA

Depedency Injection – od teorii do praktyki

Przeglądając strony różnych projektów, bardzo często spotyka się argumentację przekonującą do używania danego frameworku, podobną do stwierdzenia: „Ten framework jest fajny, ponieważ pozwala na dependency injection (wstrzykiwanie zależności)”. Celem tego artykułu jest wytłumaczenie, że wspomniany koncept, pomimo groźnie brzmiącej nazwy, jest czymś naturalnym dla programowania obiektowego. Średniozaawansowany programista może natomiast zweryfikować swoją wiedzę na ten temat.

Paweł Paczuski

TESTOWANIE I ZARZĄDZANIE JAKOŚCIĄ

Test Driven Development w Ruby przy użyciu rspec

Jaki jest nadrzędny cel programisty? Można by powiedzieć: pisanie kodu bez błędów. Jest to oczywiście zadanie niemożliwe do zrealizowania, z pomocą przychodzi nam jednak metodyka TDD, która minimalizuje ryzyko wystąpienia błędu na produkcji. Artykuł ma na celu omówienie podstaw programowania tą techniką i przedstawienie wynikających z tego korzyści.

Jacek Zachariasz

PYTHON HAS POWER

Ionic – Aplikacje hybrydowe

Ionic to framework do budowania cross-platformowych aplikacji mobilnych z wykorzystaniem HTML, CSS oraz JavaScript. W niniejszym artykule chciałbym pokazać, w jaki sposób zacząć swoją przygodę z aplikacjami mobilnymi z Ionic, a także, jak w 15 minut można stworzyć własną, prostą aplikację mobilną.

Damian Kałek

BEZPIECZEŃSTWO

Niebezpieczeństwa przetwarzania XML (>>więcej o tym artykule<<)

Format danych XML jest uniwersalnym językiem znaczników, z którym obecnie mamy styczność praktycznie codziennie. Jest przecież podstawą takich formatów jak .docx czy .odt, opierają się na nim również SOAP, XMLRPC czy też formaty przesyłania wiadomości RSS i Atom, XMPP/Jabber, jak również metadane (Adobe XMP) w obrazkach. W tym artykule omówimy kilka najpopularniejszych problemów bezpieczeństwa, które wiążą się z przetwarzaniem plików XML.

Michał Bentkowski

FELIETON

Potęga wskaźnika do funkcji

Jednym z pierwszych naprawdę trudnych pojęć, z jakim musi spotkać się każdy programista języka C lub C++, jest wskaźnik do funkcji. Definiowanie i posługiwanie się nim stanowi na początku duży problem i jest źródłem, zresztą słusznie, sporej niechęci. Wskaźnik jest konstrukcją niebezpieczną. Źle używany może powodować bardzo trudne do wykrycia błędy. Niemniej każdy programista C++ używa wskaźnika do funkcji o wiele częściej, niż ma tego świadomość, a dobry programista C musi ich użyć, aby napisać dobry program w tym języku. Na czym polega ukryta potęga wskaźnika do funkcji?

Grzegorz Kokot

PRAWO

Czy linkowanie materiałów w Internecie jest naruszeniem prawa autorskiego?

Postawione w tytule artykułu pytanie zastanawia zapewne niejednego użytkownika Internetu. Niestety okazuje się, że w Polsce odpowiedź na nie wciąż nie jest jednoznaczna i to mimo wyrażenia w tej kwestii stanowiska przez Trybunał Sprawiedliwości (Unii Europejskiej).

Kamil Stolarski, Konrad Majewski

STREFA CTF

CONFidence CTF 2015 – Turbo CrackMe

W sezonie letnim odbywa się relatywnie mało turniejów, co tworzy doskonałą okazję do opisania zadań z przeszłych CTFów, w tym tych, które sami tworzyliśmy. Zadanie z niniejszego artykułu pochodzi z organizowanej w Krakowie konferencji CONFidence 2015, o której wspominaliśmy już dwukrotnie na łamach Strefy CTF. Samo zadanie, nazwane Turbo CrackMe, warte było 100 punktów i należało do kategorii RE (Reverse Engineering); wszystkie pliki zadania można znaleźć pod adresem: http://gynvael.coldwind.pl/download.php?f=re100_gyn.zip

Gynvael Coldwind

KLUB DOBREJ KSIĄŻKI

Zrozumieć JavaScript. Wprowadzenie do programowania

Rafał Kocisz