Zapraszamy do zamówienia magazynu w >>prenumeracie<<. Miesięcznik jest dostępny w formie papierowej, PDF, EPUB i MOBI oraz AZW3. Do prenumeraty papierowej zawsze dołączamy wydania elektroniczne.
Numer ten do 20 kwietnia znajdziecie też na półkach w salonach Empik.
JĘZYKI PROGRAMOWANIA
C++ != C – problemy, rozwiązania i możliwości. Część 1 (>>więcej o tym artykule<<)
C++ nie jest jedynie C z klasami. Niestety, to, co kiedyś było siłą C++, czyli kompatybilność z językiem C, obecnie stanowi o jego słabości. Artykuł nie omawia standardowych kontenerów, zasad programowania obiektowego, używania klas i polimorfizmu. Skupia się natomiast na elementach, które najtrudniej wyeliminować oraz przyswoić inżynierom korzystającym z nowoczesnego C z klasami.
Dawid Bedła
PROGRAMOWANIE ROZWIĄZAŃ SERWEROWYCH
Technologia ACPI w kontekście serwerów ARMowych
Dobrze znane i szeroko stosowane energooszczędne procesory ARM zaczynają wychodzić poza ramy zastosowań, których byliśmy świadkami. Dotychczas dominowały w urządzeniach mobilnych, przemysłowych oraz wysoce specjalizowanych i zintegrowanych układach, gdzie niski pobór prądu pozwolił osiągnąć spółce z Cambridge wielki sukces. To właśnie łatka eko-architektury sprawia, że ARM zaczyna być poważnym graczem także na rynku serwerów, które obecnie wykorzystywane są na szeroką skalę w centrach obliczeniowych. Jednostkowy zysk energetyczny przekłada się na niemałe oszczędności w makro skali serwerowej farmy. Wiele firm, mających długoletnie doświadczenie w projektowaniu ARMowych systemów, próbuje ugryźć kawałek tortu, który do tej pory należał do firmy Intel, procesorowego giganta i monopolisty rynku serwerowego.
Tomasz Nowicki
Budowa aplikacji .NET wykorzystującej system Microsoft Dynamics CRM jako repozytorium danych
Microsoft Dynamics CRM jest systemem służącym do zarządzania relacjami z klientami (Customer Relationship Management), stworzonym przez naszą ulubioną firmę z Redmond. W artykule tym postaram się przybliżyć czytelnikom ideę tworzenia oprogramowania w oparciu o ww. platformę, a także zaprezentować przykładową aplikację .NET, integrującą się z nią za pomocą udostępnionych interfejsów.
Piotr Gaszewski
PROGRAMOWANIE W CHMURZE
Algorytmy w chmurach. Część 2: SWIM
Co wspólnego mają ze sobą gry MMO (ang. massive multi-player online), sieci wymiany plików BitTorrent, rozproszone bazy danych oraz aplikacje typu SaaS (ang. Software As A Service) działające w chmurze, takie jak np. dokumenty online? Ciężko odpowiedzieć na takie pytanie bez porównania konkretnych produktów, jednak niezależnie od ich implementacji muszą one sobie radzić m.in. z wielką liczbą węzłów/użytkowników łączących się za pomocą sieci Internet, losowo się dołączających, jak i odłączających od rozgrywek, czatów, zasobów itp. Innymi słowy, systemy te zarządzać muszą listą „uczestników” grupy, informując przy tym każdego jej członka o pojawieniu się, odejściu oraz ewentualnej awarii innych węzłów.
Sławomir Zborowski
PROGRAMOWANIE RÓWNOLEGŁE I ROZPROSZONE
RabbitMQ – otwarty system pośredniczący w wymianie wiadomości w środowisku rozproszonym (>>więcej o tym artykule<<)
RabbitMQ jest czymś w rodzaju firmy pocztowej, która jest organizacją złożoną nie tylko z placówek pocztowych, ale i całej infrastruktury służącej do przekazywania wiadomości z jednego miejsca na drugie, od nadawcy do odbiorcy. W RabbitMQ nadawca zwany jest producentem (ang. producer), odbiorca konsumentem (ang. consumer), a wspomniana firma pocztowa to w dużym uproszczeniu kolejka wiadomości (ang. message queue). Wiadomości są przesyłane w środowisku rozproszonym, co oznacza, że „nasza firma pocztowa” będzie odpowiedzialna za dostarczanie pakietów danych pomiędzy różnymi aplikacjami, często złożonymi systemami.
Tomasz Kuter
INŻYNIERIA OPROGRAMOWANIA
CQRS pragmatycznie (>>więcej o tym artykule<<)
CQRS – Command Query Responsibility Segregation – to bardzo popularny temat wśród programistów od ładnych kilku lat. Wokół niego urosło tyle dodatkowych pojęć i zależności, że aktualnie ciężko jest zacząć zgłębiać to zagadnienie. W artykule przedstawię, czym naprawdę jest CQRS i jak to „ugryźć”. Przykłady kodu napisane są w C#, jednak powinny być zrozumiałe dla programistów każdego języka.
Maciej Aniserowicz
TESTOWANIE I ZARZĄDZANIA JAKOŚCIĄ
Pomiar efektywności chmur obliczeniowych jako sposób na optymalizację wykorzystania zasobów
Popularność i dojrzałość rozwiązań chmurowych sprawia, że obecnie coraz więcej nowo powstających platform i serwisów korzysta z gotowych rozwiązań, oferowanych przez dostawców usług na poziomie IaaS/PaaS/SaaS. Czy jednak wykorzystanie usług chmurowych zawsze oznacza wysoką wydajność i niezawodność? Czym się kierować przy wyborze odpowiedniego dostawcy? Czy istnieje sposób na obniżenie kosztów utrzymania wirtualnej infrastruktury? Jak świadomie podjąć decyzję dotyczącą strategii rozwoju działu IT w obszarze outsourcingu usług w chmurze?
Mariusz Zyśk
PYTHON HAS POWER
Python 3 i biblioteka asyncio
Kiedy stajemy przed koniecznością napisania wielozadaniowego programu, pierwsza myśl to wątki, a druga to typowe dla programów wielowątkowych problemy. Jeśli zadania spędzają większość czasu w oczekiwaniu na operacje wejścia- wyjścia, to możemy znacznie uprościć skrypt, korzystając właśnie z paczki asyncio. Od wersji 3.4 Python posiada ją w swojej bibliotece standardowej.
Paweł Lis
BEZPIECZEŃSTWO
DoS przez wyrażenia regularne
Amerykański programista, Jamie Zawinski, napisał kiedyś słynne słowa o wyrażeniach regularnych: „Niektórzy ludzie, gdy napotykają na problem, myślą sobie: »Wiem! Użyję wyrażeń regularnych«. I teraz mają dwa problemy”. W tym artykule przekonamy się, jak prawdziwe są to słowa, jeżeli wyrażenie regularne zostało napisane w sposób niewłaściwy, umożliwiając tym samym przeprowadzenie ataku Denial-of-Service na aplikację.
Michał Bentkowski
PRAWO
Dlaczego ocena zgodności projektu rozwiązania informatycznego jest ważna?
Ocena zgodności (ang. compliance) powinna zawsze poprzedzać wprowadzenie rozwiązania informatycznego na rynek. Najlepiej, by była wykonywana na etapie projektowania czy jeszcze w fazie koncepcyjnej. Wtedy ewentualne zmiany są najbardziej optymalne do wprowadzenia. Wiążą się z najmniejszymi kosztami.
Beata Marek
PLANETA IT
O układach raz jeszcze
Okazuje się, że czytelnikom magazynu „Programista” leżą na sercu kwestie związane z terminologią programistyczną, czego dowodem są maile, które od czasu do czasu otrzymuję. Poniżej przedstawiam kolejny (podaję nazwisko za zgodą autora) i mój komentarz do niego.
Łukasz Piwko
STREFA CTF
32C3 CTF – aes
32C3 CTF to coroczne zawody organizowane podczas jednej z największych na świecie konferencji dotyczących bezpieczeństwa, na którą w zeszłym roku przyjechało aż 13 tysięcy uczestników. Zawody te cieszą się dużą popularnością z uwagi na ciekawe (a zarazem naprawdę trudne) zadania, świetną organizację oraz termin – są to ostatnie zawody w roku, więc ich wynik może zadecydować o finalnej pozycji drużyny w rankingu CTFtime.org na dany rok.
Michał "Redford" Kowalczyk
KLUB DOBREJ KSIĄŻKI
Efektywny JavaScript. 68 sposobów wykorzystania potęgi języka
Rafał Kocisz
DODATEK SPECJALNY "PRACUJ W IT 2016"
Prenumeratorzy znajda przy tym wydaniu w Panelach Prenumeratora specjalny dodatek.