Zapraszamy do zamówienia magazynu w prenumeracie. Magazyn jest dostępny w formie papierowej, PDF, EPUB i MOBI.
Jeżeli Twoja prenumerata obejmuje ten numer "Programisty", to wraz z nim dostajesz też specjalne wydanie "Zdobyć flagę" w formie elektronicznej. Więcej informacji:>>tutaj<<
Spis treści miesięcznika "Programista" nr 35:
BIBLIOTEKI I NARZĘDZIA
Gulp.js – system automatyzacji pracy
Gulp.js to system do automatyzacji pracy, który oparty jest o platformę Node. js. Głównym zadaniem Gulp.js jest wspomaganie wytwarzania oprogramowania poprzez zautomatyzowanie wielu czynności, takich jak wgrywanie plików na serwer bądź usuwanie plików tymczasowych.
Sebastian Rosik
Więcej o tym artykule: >>tutaj<<
Własny monitoring dla stron WWW
Przyjrzymy się Go, językowi, któremu przyświeca cel bycia prostym i zrozumiałym. Cała składnia języka może zostać zapisana na raptem kilkudziesięciu stronach. Centrum wiedzy o Go znajduje się na oficjalnej stronie: golang.org. Odwiedź Go Tour (tour.golang.org), aby nauczyć się Go.
Jego składnia jest na tyle prosta, że każdy, kto rozumie koncepty: zmiennej, pętli, funkcji, interfejsu i wątku, jest w stanie poznać język w 2-4 godziny. W Internecie znajduje się również strona Go Playground (tzw. piaskownica), gdzie można wkleić kod i wysłać do uruchomienia na zdalny serwer: play.golang.org.
Paweł Szczur
JĘZYKI PROGRAMOWANIA
Niezdefiniowane zachowanie w C
Pisząc programy w języku C, zapominamy czasem, iż zarówno sam język, jak i kompilatory mogą zachować się nieprzewidywalnie, co z kolei może znacznie wpłynąć na poprawność wykonania skompilowanego programu. Część takich zachowań została opisana w standardzie języka, jednakże nie zawsze zachowania te są dokładnie zdefiniowane.
Marek Zmysłowski, Marcin Towalski, Christiaan Esterhuizen
Więcej o tym artykule: >>tutaj<<
Co każdy programista Java powinien wiedzieć o JVM: zarządzanie pamięcią
Powód istnienia bohatera wielu javowych historii, nazywanego Odśmiecaczem Pamięci (Garbage Collector), jest zaskakująco prosty i oczywisty: nasze aplikacje do działania potrzebują pamięci, a ta z reguły ma ograniczony rozmiar i nie da się jej zapełniać w nieskończoność. A zarządzanie pamięcią jest na co dzień dla większości programistów znacznie mniej ciekawe niż zabawa nowymi frameworkami, w związku z czym zdecydowanie wolimy, aby pracami porządkowymi zajął się ktoś inny. I tę właśnie rolę strażnika porządku przejmuje od nas główna postać niniejszego artykułu.
Jakub Kubryński
PROGRAMOWANIE URZĄDZEŃ MOBILNYCH
Efektywne tworzenie mobilnych aplikacji wieloplatformowych
Jako zespół odpowiedzialny za tworzenie aplikacji na urządzenia mobilne często stajemy przed pytaniem, w jaki sposób moglibyśmy dostarczać większą wartość dla naszych klientów w ramach tego samego budżetu. Całkiem niedawno stanęliśmy przed wyzwaniem zapewnienia wsparcia „24/7” dla aplikacji natywnej, w której rozwoju uczestniczyliśmy.
Rafał Świerkot
PROGRAMOWANIE SYSTEMOWE
Bootloadery – jak to się robi?
Droga, która procesor przebywa od włączenia do uruchomienia systemu operacyjnego, jest długa, kręta i pełna pułapek. Poniższy artykuł nakreśla jej przebieg, ze szczególnym uwzględnieniem niełatwych początków uruchamiania systemu. Aplikacja Hello World była pisana na wiele sposobów, a tutaj pojawi się kolejny: Bare Metal.
Maciej Czekaj
PROGRAMOWANIE GIER
Irrlicht 3D krok po kroku – kurs silnika graficznego, część 3
To już ostatnia część cyklu, który ma na celu przybliżenie darmowego silnika graficznego Irrlicht. W poprzednich numerach omówione zostały: kompilacja, dodawanie sceny, wczytywanie modeli postaci, obsługa klawiatury oraz zarządzanie kamerami. W tej części nadszedł czas na animację oraz materiały, źródła światła i kolizje.
Marcin Załuski
PRZETWARZANIE RÓWNOLEGŁE I ROZPROSZONE
ZeroMQ – nowoczesna komunikacja
W największym skrócie: ZeroMQ to pakiet do realizacji komunikacji w środowisku rozproszonym, na które to środowisko składają się różne aplikacje, między którymi przesyłane są komunikaty. Trzeba też dodać, iż komunikaty mogą posiadać dowolną strukturę, oraz, dzięki istnieniu wielu portów ZeroMQ do różnych języków programowania, można łączyć ze sobą aplikacje pisane w czasem całkowicie odmiennych językach programowania. Co bardzo istotne, ZeroMQ to niewielki pakiet (podstawowe API liczy niewiele ponad pięćdziesiąt funkcji), który łatwo zaimportować do własnego projektu, jeśli projektowana aplikacja/aplikacje wymagają wzajemnej komunikacji.
Marek Sawerwain
Więcej o tym artykule: >>tutaj<<
PYTHON HAS POWER
Sterowanie Arduino przy pomocy Pythona. Część 1
Artykuł ten jest pierwszą częścią mini-cyklu poświęconego sposobom sterowania platformą Arduino przy pomocy języka Python. W części tej omówione zostaną zarówno podstawy korzystania z samej platformy Arduino, jak i podstawowe sposoby sterowania nią przy pomocy Pythona.
Michał Janiszewski
PRAWO
Legalne ściąganie plików z internetu – jak to jest naprawdę?
Korzystając z Internetu, z pewnością nie raz zastanawiałeś się, czy ściągając z serwerów hostingowych bądź sieci torrent najnowszy odcinek ulubionego serialu, płytę ulubionego wykonawcy bądź też książkę na kindla, postępujesz zgodnie z obowiązującym prawem i nie narażasz się na negatywne konsekwencje. Jeszcze parę lat temu, gdy na świecie nie było serwisu YouTube, zaś koneserzy muzyki skrzętnie gromadzili na dyskach swoich komputerów pliki mp3, w sieci można było natrafić na miejskie legendy mówiące o tym, jak to za każdą ściągniętą mp3 trzeba zapłacić 5 zł, zaś za każdy ściągnięty film 20 zł.
Kamil Stolarski, Łukasz Kania
FELIETON
Dlaczego programowanie to przyszłość?
Postęp wiedzy i technologii towarzyszy człowiekowi od zawsze. Stał się rzeczywistością, do której przywykliśmy, i w pewnym sensie przestaliśmy na niego zwracać uwagę. Spowszedniał, wyszarzał, czasem uznajemy go za rzecz naturalną i nam należną. Jakość życia statystycznego człowieka „ma” się poprawiać. Tego wymagamy od naukowców, uznajemy za ich obowiązek. A co, jeśli ludzkość osiągnęła poziom wiedzy, której złożoność staje się zbyt duża, a granice poznania są już bardzo bliskie? Czy jesteśmy skazani na technologiczną stagnację? Jaką rolę, jeśli w ogóle, może w postępie odegrać programowanie?
Grzegorz Kokot
Jak oswoić pierwszą pracą. Czyli początek zawodowej drogi w programistycznej dżungli
O różnicach wynikających z pracy w firmach i korporacjach powstało już wystarczająco dużo artykułów, mitów oraz przepowiedni. Niezależnie jednak od miejsca, w którym znajdziemy się na początku swojej zawodowej drogi, będziemy musieli przejść przez pewien rodzaj procedur, a dodatkowa wiedza z pewnością nam nie zaszkodzi. Jak odnaleźć się w nowym miejscu, nie stracić wiary w siebie, a przy tym tworzyć przejrzysty kod?
Michał Kowalik
LABORATORIUM BOTTEGA
Wzorce silników zdarzeń w C++. Część V: „Put all things together” – orkiestracja poprzednich rozwiązań w jedną konfigurowalną, skalowalną aplikację.
W poprzednich artykułach przedstawiałem kolejne wzorce, które znacznie porządkują i upraszczają implementację silników obsługi zdarzeń. Pierwszym był Reactor – prosty, jednowątkowy, drugi to ThreadPool – wielowątkowa alternatywa dla reaktora, trzeci: Half Sync/Half Async – zrównoważone połączenie obu poprzedników. Każdy z nich miał jasno nakreślony zbiór wad i zalet, na bazie których należy dobrać odpowiedni wzorzec do klasy problemu, który przyszło nam implementować. Przez klasę problemu mam na myśli nie tylko złożoność podstawowej funkcjonalności (np. protokołu, który implementujemy), ale też zbiór wymagań niefunkcjonalnych – skalę, w jaką mamy się wpasować (np. ilość obsługiwanych klientów). W tej części pokażę, jak złożyć dotychczasowe rozwiązania w jedną aplikację sterowaną prostą konfiguracją.
Roman Ulan
KLUB LIDERA IT
Jak pogodzić prace techniczne i nietechniczne w roli lidera?
Stając się liderem technicznym, bardzo często jesteśmy w sytuacji, w której cały czas wykonujemy pewne zadania techniczne, które musimy łączyć z nietechnicznymi, wynikającymi z roli lidera. Jest to nie lada orzech do zgryzienia – to tak jak połączyć ogień i wodę. Niektórzy twierdzą, że się nie da, my jednak spróbujemy znaleźć kilka sposobów, które pomogą poradzić sobie w takich sytuacjach.
Michał Bartyzel, Mariusz Sieraczkiewicz
STREFA CTF
Zdobyć flagę... Codegate CTF Finals 2015 – yocto
Codegate to obecnie jeden z najtrudniejszych CTFów, który w bardzo dużym stopniu ukierunkowany jest na aspekt binarno-eksploitacyjny, czyli coś, co „tygryski lubią najbardziej". Na finały do Seulu polecieliśmy w składzie: Redford, valis, q3k i mak (czyli autor niniejszego artykułu). Niestety, nie udało nam się przywieść z powrotem niczego poza dobrymi wspomnieniami, a było o co walczyć – pierwsza nagroda wynosiła blisko 180 tysięcy złotych.
Maciej "mak" Kotowicz
Wraz z tym numerem "Programisty" dostajesz też specjalne wydanie "Zdobyć flagę". Więcej informacji: >>tutaj<<
KLUB DOBREJ KSIĄŻKI
Zwinne wytwarzanie oprogramowania. Najlepsze zasady, wzorce i praktyki
Rafał Kocisz