REKLAMA

Programista 4/2019 (83) – lipiec/sierpień 2019 – Jaka siła drzemie w PowerShellu – SPIS TREŚCI

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.

BIBLIOTEKI I NARZĘDZIA

Jaka siła drzemie w PowerShellu? (>>więcej o tym artykule<<)

W poniższym artykule postaram się udowodnić na podstawie przykładowego kodu, że PowerShell to bardzo praktyczne i potężne narzędzie. Napiszemy wspólnie nowocześnie wyglądającą aplikację graficzną, której zadaniem będzie połączenie się z bazą danych Oracle. Dodatkowo zaimplementujemy możliwość odblokowania lub zmiany hasła dla użytkownika tej bazy.

Michał Zbyl

PROGRAMOWANIE SYSTEMÓW OSADZONYCH

OPC-UA jako podstawa komunikacji Industry 4.0

OPC-UA – kolejny hype, czy już dojrzały protokół Ethernet? Pretendent standardu komunikacji, mogący zażegnać trwającą już niemal 30 lat wojnę Fieldbus i zastąpić obecne własne rozwiązania producentów.

Rafał Slany

PROGRAMOWANIE APLIKACJI WEBOWYCH

Programowanie reaktywne. Do widzenia MVC? (>>więcej o tym artykule<<)

Programowanie reaktywne w ostatnich latach staje się coraz bardziej popularne. Czym jest? Jakie problemy rozwiązuje, a jakie tworzy? Czy to koniec programowania w oparciu o wzorzec MVC? Odpowiedzi można znaleźć w poniższym artykule. Nakreślone zostaną również różnice między programowaniem deklaratywnym a imperatywnym. Dowiemy się też, w jaki sposób programowanie reaktywne może pomóc w utworzeniu kodu, który w lepszy sposób oddaje intencje programisty, przez co jest łatwiejszy w utrzymaniu.

Michał Jawulski

Nowoczesne aplikacje webowe z NestJS

Wielu programistów przywykło już do faktu, że środowiskiem języka JavaScript jest nie tylko przeglądarka. Mimo innego zamiaru twórcy języka sprawdza się on świetnie także w innych miejscach. Tworzenie multiplatformowych aplikacji, działających na serwerach lub naszych desktopach, z użyciem NodeJS nie jest już niczym nowym – wręcz przeciwnie. Coraz więcej firm wykorzystuje to środowisko do wytwarzania nowoczesnych aplikacji sieciowych. Jeżeli my też chcemy zacząć przygodę z aplikacjami internetowymi oraz NodeJS, to naturalnym wyborem staje się najpopularniejszy z frameworków – express, za pomocą którego programista może stworzyć REST API lub wyrenderować stronę HTML. Ale czy na pewno nie mamy lepszych alternatyw? Celem tego artykułu będzie pokazanie, dlaczego warto zainteresować się nowym frameworkiem: NestJS oraz jak może on nam pomóc w codziennej pracy.

Konrad Dysput

PRZETWARZANIE RÓWNOLEGŁE I ROZPROSZONE

Hazelcast – coś więcej niż rozproszony cache

Przetwarzanie równoległe i konieczność synchronizacji wątków nigdy nie była najprostszym zadaniem. Sprawa komplikuje się jeszcze bardziej, gdy konieczność synchronizacji nie dotyczy pojedynczej instancji aplikacji, a całego klastra. W poniższym artykule zaprezentuję, jak produkt pozornie zupełnie innego przeznaczenia może rozwiązać wspomniane zagadnienie.

Wojciech Kurda

PROGRAMOWANIE W CHMURZE

AWS IoT Core. Telemetria i zdalna kontrola urządzeń IoT

Internet of Things (IoT) jest jedną z głównych technologii, które mają umożliwić cyfrową rewolucję. Z tego powodu tworzenie takich rozwiązań staje się coraz bardziej popularne. Dlatego najwięksi gracze na rynku IT dostarczają wiele rozwiązań i usług, które umożliwiają stosunkowo szybkie tworzenie bezpiecznych aplikacji Internet of Things. W tym artykule pokażę, w jaki sposób utworzyć rozwiązanie IoT w oparciu o usługi Amazon Web Services IoT Core.

Dawid Borycki

ALGORYTMIKA

Wybrane algorytmy i struktury danych. Część 6

Algorytmy, które omawialiśmy w poprzednich częściach artykułu, operowały na strukturach danych wykazujących się rosnącym stopniem zaawansowania. Pracowaliśmy najpierw na tablicach, potem na listach, drzewach i na końcu na grafach. Tymczasem okazuje się, że struktura wcale nie musi być specjalnie zaawansowana, by można było skonstruować dla niej ciekawe algorytmy. Dziś przyjrzymy się tym z nich, które operują na zwykłych ciągach znaków.

Wojciech Sura

BEZPIECZEŃSTWO

Reproducible Builds (>>więcej o tym artykule<<)

W dzisiejszych czasach użytkownicy bardzo rzadko budują oprogramowanie ze źródeł. Dużo częściej korzystają z systemów do zarządzania pakietami. Takie systemy wykorzystują wcześniej przygotowane artefakty, które są pobierane i rozpakowywane na komputerach użytkowników. To podejście znacząco skraca czas potrzebny do instalacji bądź aktualizacji oprogramowania. Należy jednak zwrócić uwagę na pewną znaczącą kwestię dotyczącą bezpieczeństwa: skąd użytkownik ma pewność, że instalowane przez niego oprogramowanie zostało zbudowane bez żadnych złośliwych modyfikacji?

Mariusz Zaborski

STREFA CTF

Writeup Gothic – CONFidence 2019 Finals

W jednym z poprzednich numerów opisywaliśmy zadanie Watchmen z CTF na konferencji Confidence, który po roku przerwy odbył się kolejny raz. Tym razem zmienił się organizator – zamiast drużyny Dragon Sector (która zajmuje się organizowaniem Dragon CTF na konferencji PWNing) konkurs został opracowany przez zespół p4. Na zawodników czekało 18 zadań, od bardzo prostych do całkiem trudnych. Jak to zwykle na zawodach organizowanych przez p4 bywa, najwięcej zadań (aż 6) należało do kategorii „reverse engineering”. W tym numerze omówimy dwa zadania opierające się na, odpowiednio zmodowanej, kultowej w Polsce grze Gothic w wersji Demo.

Jarosław Jedynak

FELIETON

Jak nie nauczyć się programować?

W mojej karierze programisty zdarzyło się kilka epizodów, w czasie których uczyłem programowania. Prowadziłem kółko programistyczne w moim liceum, uczyłem pojedyncze osoby, obecnie prowadzę również serię warsztatów w pracy, w ramach których uczę programowania w C# testerów manualnych. Niestety spośród wszystkich osób, które uczęszczały na moje zajęcia, tylko nielicznym udało się przejść przez cały proces zwycięsko i stali się programistami. Czy to ja byłem takim słabym nauczycielem? A może trzeba mieć jakieś specjalne umiejętności, by zrozumieć tajniki programowania? Gdzie leży problem?

Wojciech Sura

KLUB DOBREJ KSIĄŻKI

Programowanie w języku Rust

Paweł "KrzaQ" Zakrzewski