Zapraszamy do zamówienia magazynu w prenumeracie. Miesięcznik jest dostępny w formie papierowej, PDF, EPUB i MOBI.
Magazyn też jest dostępny w salonach prasowych Empik do 19 lipca.
BIBLIOTEKI I NARZĘDZIA
Hazelcast – rozproszone struktury danych i przetwarzanie
Hazelcast jest ciekawą biblioteką dla języka Java, umożliwiającą niemal przezroczyste poziome skalowanie aplikacji. Zasada działania biblioteki jest zadziwiająco prosta: Hazelcast sprawia, że zmiany w wybranych kolekcjach (mapach, kolejkach) dokonane w jednej instancji naszej aplikacji są automatycznie widoczne w pozostałych instancjach tej samej aplikacji. Dzięki temu implementacja rozproszonego cachowania czy wzorca producent-konsument staje się dziecinnie prosta.
Tomasz Nurkiewicz
Boost.Corner: biblioteka Date_Time
Dziś na łamach „Programisty” inauguruje nowa stała kolumna: Boost.Corner. W kolejnych artykułach wchodzących w skład tego cyklu przedstawiać będziemy najciekawsze biblioteki wchodzące w skład pakietu Boost: tym razem na warsztat trafi Boost.Date_Time. Wszystkich czytelników zainteresowanych nowoczesnymi technikami programowania w języku C++ serdecznie zapraszamy do lektury!
Rafał Kocisz
Biicode: zarządca zależności dla języków C/C++
Drogi programisto C++, czy nie zdarza Ci się z zazdrością spoglądać na kolegów programujących w Javie, Perlu, Pythonie, Rubym (i w wielu innych językach), którzy mają do dyspozycji szereg wygodnych narzędzi wspomagających zarządzanie zewnętrznymi bibliotekami, modułami czy pakietami oprogramowania? Czy zgrzytasz zębami, tracąc czas na zbudowanie tudzież konfigurację potrzebnej Ci biblioteki 3rd party? Jeśli tak, to mam dobrą wiadomość: biicode przybywa na ratunek! Jeśli chcesz dowiedzieć się więcej o tym, co oferuje to pożyteczne narzędzie, zapraszam do lektury poniższego artykułu.
Rafał Kocisz
Specflow – testowanie aplikacji webowych na platformie .NET
Tworząc aplikacje internetowe, jakość na poziomie klas weryfikujemy za pomocą testów jednostkowych. Jednak aby przetestować interfejs użytkownika i zapewnić prawidłowe działanie systemu na wielu przeglądarkach, potrzebujemy testów funkcjonalnych. W niniejszym artykule zapoznamy się z możliwościami biblioteki Specflow, która pozwala na tworzenie automatycznych testów funkcjonalnych z wykorzystaniem języka C#.
Dariusz Kacban
JĘZYKI PROGRAMOWANIA
Anatomia języka Go >>3 strony tego artykułu do pobrania w .pdf<<
Go jest kompilowanym, współbieżnym, statycznie typowanym językiem programowania z automatycznym odśmiecaniem pamięci. Powstał pod szyldem firmy Google. Autorzy projektu są między innymi odpowiedzialni za powstanie UTF-8, systemu Unix, plan9 oraz wielu narzędzi, z których większość z nas korzysta do dzisiaj.
Adam Wołk
Więcej o tym artykule: >>tutaj<<
Co każdy programista Java powinien wiedzieć o JVM: monitorowanie
W dwóch poprzednich artykułach z niniejszego cyklu omówiliśmy budowę i mechanizmy działania Wirtualnej Maszyny Javy. Dzięki temu wiemy, czego teoretycznie możemy się spodziewać w poszczególnych fazach uruchamiania naszych aplikacji. Ostatnia rzecz, jakiej nam brakuje, to narzędzia, które pozwolą praktycznie zastosować zdobytą wiedzę. Tu bardzo często pojawia się wymówka o braku dostępu do (bardzo drogich) narzędzi, które są przecież niezbędne do analizy wydajności JVM. W tym artykule zobaczymy przegląd narzędzi, które wykorzystuję w swojej codziennej pracy i które mają dwie bardzo istotne zalety. Po pierwsze, są całkowicie bezpłatne, a po drugie, każdy z nas ma je już zainstalowane na swoich serwerach
i stacjach roboczych.
Jakub Kubryński
PROGRAMOWANIE URZĄDZEŃ MOBILNYCH
Programowanie inteligentnych zegarków Apple Watch >>Pobierz fragment tego artykułu<<
W poprzednim artykule (Programista 3/2015) omówiłem technologię Xamarin.Forms, która umożliwia programowanie uniwersalnych aplikacji mobilnych z wykorzystaniem zunifikowanego interfejsu programistycznego oraz jednolitego zestawu komponentów wizualnych. W tym artykule zaprezentuję możliwości bibliotek WatchKit z Xamarin. iOS w kontekście tworzenia aplikacji dla Apple Watch.
Dawid Borycki
Więcej o tym artykule: >>tutaj<<
PROGRAMOWANIE SYSTEMOWE
Moduły dynamiczne w kernelu NetBSD
Zapoznając się z programowaniem w jądrze systemu operacyjnego, dobrze jest zacząć od łagodnego wprowadzenia w kolejne podsystemy, bez zaczynania od inwazyjnego konfigurowania opcji i przeładowywania systemu operacyjnego w oczekiwaniu, czy całość wstanie czy nie. Taką możliwość dają moduły dynamiczne, którym to jest poświęcony niniejszy artykuł.
Kamil Rytarowski
ALGORYTMIKA
Analiza skupień w eksploracji danych
Epoka informacyjna każdego dnia generuje niezliczone ilości informacji gromadzonych w ogromnych zbiorach danych, tzw. Big Data. Skala tego zjawiska sprawia, że uzyskanie użytecznej wiedzy z tak powstałych zbiorów wymaga znajdowania zależności w wielowymiarowych przestrzeniach danych. Z pomocą ku temu przychodzi narzędzie nazywane eksploracją danych (z ang. data mining), którego podstawowym celem jest badanie charakteru i składu zbiorów danych. Analiza skupień zaś należy do jej podstawowych technik.
Konrad Stanik
INŻYNIERIA OPROGRAMOWANIA
Prosty polimorfizm – utrudnienie przy tworzeniu złożonych systemów >>Pobierz fragment tego artykułu<<
Wiele publikacji dotyczących programowania obiektowego posługuje się przykładem „edytora figur geometrycznych”, w którym polimorfizm wykorzystywany jest do rysowania w specyficzny sposób różnego rodzaju figur. Prosty polimorfizm pojawiający się w powyższym przykładzie zdaje się mieć dużą siłę oddziaływania na rzeczywiste systemy informatyczne. Artykuł omawia problemy związane ze zbyt dosłownym naśladowaniem opisanego rozwiązania oraz przedstawia propozycje przełamania niektórych trudności.
Marcin Krasny
Więcej o tym artykule: >>tutaj<<
PYTHON HAS POWER
Sterowanie Arduino przy pomocy Pythona. Część 2
Artykuł ten jest drugą i ostatnią częścią minicyklu poświęconego sposobom sterowania platformą Arduino przy pomocy języka Python. W niniejszym tekście omówione zostaną trochę bardziej zaawansowane przypadki użycia owej platformy.
Michał Janiszewski
LABORATORIUM BOTTEGA
Wzorce silników zdarzeń w C++. Część VI: Testowanie modułowe vs jednostkowe
W kolejnych artykułach przedstawiałem kolejne wzorce, które znacznie porządkują i upraszczają implementację silników obsługi zdarzeń, a w ostatnim przedstawiłem rozwiązanie integrujące wszystkie wcześniej omawiane wzorce w jedną konfigurowalną aplikację. Dotychczas temat testowania przewijał się jedynie w ocenie poszczególnych rozwiązań. W tej części te proste sformułowania nabiorą głębszego sensu, a przy tym przedstawię jeden z ciekawszych frameworków dedykowany do tego typu testów w języku C++.
Roman Ulan
BEZPIECZEŃSTWO
Mechanizm HTTP Public Key Pinning
Bezpieczne połączenia przy użyciu protokołu HTTPS stanowią jeden z podstawowych budulców dzisiejszego Internetu. HTTPS zapewnia poufność, integralność oraz autentyczność komunikacji. Ten ostatni cel jest realizowany dzięki standardowi X.509, który definiuje infrastrukturę klucza publicznego. Model zaufania oparty na X.509 ma jednak pewną fundamentalną wadę, której rozwiązaniem ma być mechanizm HTTP Public Key Pinning (HPKP).
Michał Bentkowski
FELIETON
Styl kodowania
Każdy program można napisać w niemal nieskończonej liczbie wariantów. Jak często przekonujemy się tworząc oprogramowanie, różnorodność w projekcie może stać się poważnym problemem. Potrzebny jest zbiór ścisłych zasad definiujących sposoby pisania programów: styl kodowania. Z jednej strony jest on specyficzny dla danego developera, z drugiej zaś bywa zdefiniowany przez organizację na potrzeby konkretnego projektu. Jak pogodzić te dwie perspektywy?
Grzegorz Kokot
PRAWO
Niezamówiona informacja handlowa, czyli SPAM w prawie polskim
Praktycznie każdy z użytkowników poczty elektronicznej chociaż raz spotkał się w swoim życiu z niechcianą korespondencją e-mailową pochodzącą od nieznanego adresata. Zazwyczaj są to wiadomości zawierające oferty handlowe, zaproszenia do udziału w badaniu, wypełnienia ankiety bądź też zaproszenie na określone wydarzenie.
Kamil Stolarski, Łukasz Kania
STREFA CTF
CONFidence CTF 2015 – PHP Core
CONFidence CTF 2015 to już druga edycja offline’owych zawodów typu Capture The Flag organizowanych przez polski zespół Dragon Sector. Zadania przygotowane przez mistrzów świata (wg rankingu ctftime.org) były wymagające, a niektóre z nich pozostały nierozwiązane mimo obecności nawet najbardziej doświadczonych drużyn. Warto wspomnieć, że w tegorocznej edycji po raz pierwszy pojawiły się nagrody pieniężne, o które pod koniec maja do Krakowa na konferencję Confidence przyjechało walczyć kilkanaście zespołów z całej Europy.
Jarosław "msm" Jedynak, Mateusz "Rev" Szymaniec
KLUB DOBREJ KSIĄŻKI
Python. Programuj szybko i wydajnie
Rafał Kocisz