REKLAMA

Programista 3/2019 (82) – czerwiec 2019 – Debugowanie od kuchni – 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

Wprowadzenie do Protocol Buffers

Protocol Buffers jest narzędziem stworzonym przez firmę Google w celu ustandaryzowania  serializacji ustrukturyzowanych danych do binarnego formatu. Rozwiązanie to ma bardzo  szerokie zastosowanie między innymi w komunikacji sieciowej, przechowywaniu danych  oraz wymianie informacji między różnymi technologiami. Kodowanie używane przez Protocol  Buffers umożliwia zmianę formatu serializowanych danych z zachowaniem wstecznej  kompatybilności pozwalającej na odczytanie starej wersji formatu przez kod używający  nowej wersji oraz nowej wersji formatu przez aplikacje skompilowaną dla starej wersji.

Piotr Jastrzębski

JĘZYKI PROGRAMOWANIA

Adnotacje typów w Pythonie

Od swojego początku Python jednoznacznie kojarzony był z duck typingiem i dynamicznym typowaniem. Świat został wywrócony do góry nogami wraz z PEPem 484 i premierą Pythona 3.5. Wtedy to zaczęto wykorzystywać nienowe już adnotacje funkcji (PEP 3107) do opisywania typów (ang. type hints). Celem tego artykułu jest wprowadzenie czytelnika w świat adnotacji, a także pokazanie zalet oraz ograniczeń tego stosunkowo młodego narzędzia w świecie Pythona.

Sebastian Buczyński

PROGRAMOWANIE SYSTEMÓW OSADZONYCH 

Bootloader AVR-NFC, czyli zbliżeniowe aktualizacje oprogramowania (>>więcej o tym artykule<<)

Jakiś czas temu podjąłem się zlecenia polegającego na przeprogramowaniu gotowego urządzenia opartego na mikrokontrolerze ATmega. Zakres zleconych prac obejmował napisanie nowego firmware od zera, po czym wdrożenie miało w pierwszym etapie objąć kilkadziesiąt urządzeń. Ponieważ napisanie bezbłędnego kodu w pierwszym podejściu raczej nie było zbyt realistyczne, przez następne kilka dni kwestia spodziewanych problemów w tej materii spędzała mi sen z powiek. Aż w końcu...

Michał Leszczyński

Debugowanie od kuchni (>>więcej o tym artykule<<)

Pisanie kodu nieodzownie jest powiązane z błędami – czy to syntaktycznymi, czy też, nieco trudniejszymi do wykrycia, błędami logicznymi. O ile ten pierwszy przypadek jest dość łatwy do znalezienia i naprawy, ponieważ pomaga nam w tym kompilator, tak już ten drugi może przyprawić o ból głowy. By nam nieco tego bólu oszczędzić, powstało wiele narzędzi oraz metodyk odpluskwiania kodu. Czy jednak kiedykolwiek zastanawialiśmy się, co tak naprawdę kryje się pod maską debuggera? Czemu on w ogóle działa – i jak działa – oraz co zrobić, gdy pracujemy w bardziej wymagających środowiskach i nie mamy dostępu do całego zaplecza narzędzi debugujących? W poniższym artykule postaram się rzucić nieco światła na powyższe zagadnienia, zaczynając od sprzętu, przechodząc przez kernel, a na przestrzeni użytkownika kończąc.

Michał Krawczyk

INŻYNIERIA OPROGRAMOWANIA

Design oprogramowania: dlaczego popada w ruinę i co wspólnego ma z tym powiązanie i spójność?

Kiedy i dlaczego nasz design zaczyna popadać w ruinę? Co ma to wspólnego z powiązaniem (ang. coupling) i spójnością (ang. cohesion) klas? Często wydaje nam się, że doskonale wiemy, jak zdefiniować oba pojęcia. Okazuje się jednak, że nasz kolega lub koleżanka mogą mieć całkowicie odmienne na ten temat wyobrażenie. Istnieje bowiem wiele ich typów, o których najczęściej albo się nie wspomina, albo po prostu nie zauważa. Zobaczmy, dlaczego niejednokrotnie mamy problem z ich zrozumieniem i dlaczego każdy z nas może mieć ich inną wizję.

Tomasz Stolarczyk

TESTOWANIE I ZARZĄDZANIE JAKOŚCIĄ

Pokrycie kodu – dlaczego korzystamy z niego źle i jak to zmienić?

Pokrycie kodu (ang. Code Coverage) jest jedną z wielu statystyk, które możemy zbierać w odniesieniu do kodu. I jak każda statystyka, z definicji nie jest zła. Niestety programiści często zaczynają traktować ją jako cel sam w sobie, a nie narzędzie pozwalające na zweryfikowanie jakości testów i kodu aplikacji.

Sebastian Malaca

FELIETON

99+ Notifications. Życie w chaosie informacyjnym

Codziennie przyjmujesz dawkę kofeiny, którą masz zamiar przetworzyć na działający kod. Wracasz do pracy i czujesz, jak cię osaczają: na monitorze, na touchscreenie twojego telefonu. Są wszędzie. Powiadomienia! Jak zombies, atakują zbędnymi informacjami i wysysają energię zdobytą z utylizacji ziarenek kawy. Za chwilę dowiesz się, jak skutecznie przeprowadzić kontratak w miejscu, w którym się nie spodziewasz.

Michał Cisz

PLANETA IT

Jak zacząć przygodę z blockchain? (>>więcej o tym artykule<<)

Na temat tego, jak ważną rolę w dzisiejszym świecie odgrywa blockchain, toczą się dyskusje. Jego rola w przyszłości wydaje się być jednak ugruntowana, a wątpliwości nie ulega, że zastąpi on utarte rozwiązania w wielu dziedzinach. Tam, gdzie kluczowe jest bezpieczeństwo i transparentność, sprawdza się świetnie już dzisiaj. Blockchain znajduje zastosowanie m.in w kryptowalutach, systemach finansowych, IOT, a wszędzie tam, gdzie jest użyty, całkowicie zmienia standardy. Blockchain udowadnia, że możliwe jest pogodzenie bezpieczeństwa, przejrzystości i decentralizacji. A przecież całkiem niedawno jedyną implementacją tej idei był Bitcoin. Wpływ, jaki blockchain może mieć na naszą przyszłość, może budzić pewne obawy. Na pewno jednak zachęca do bycia częścią tej globalnej rewolucji.

Jakub Kozioł

Aplikacja mobilna iTaxi dla kierowców – case study

Jak wyglądał proces tworzenia nowej aplikacji mobilnej dla kierowców iTaxi? Z jakimi wyzwaniami zmierzył się zespół, który pracował nad oprogramowaniem? Które momenty były zaskakujące, a które zabawne? O tym w naszym case study!

Katarzyna Małecka, Anna S. Orłowska, Sylwia Okraska

KLUB DOBREJ KSIĄŻKI

Game Engine Black Book. Doom

Rafał Kocisz