Programista 8/2014 (27)
Programista 8/2014 (27)
Dyspozytor (ang. dispatcher) jest wzorcem służącym do przekazywania otrzymanych wiadomości do kodu je obsługującego. Przychodzące wiadomości są w postaci zserializowanej. Do użytkownika trafić mają w postaci zdeserializowanych obiektów końcowych. Problem nie jest nowy – towarzyszy programistom praktycznie od zawsze. Pojawianie się szkicu standardu C++14 umożliwiło rozwiązanie go w sposób prosty i przenośny. Niniejszy artykuł przedstawia koncepcję implementacji frameworka dyspozytora, przy użyciu możliwie najmniejszej ilości kodu po stronie użytkownika.
Kompilator Clang od środka
Kompilator Clang z dnia na dzień zdobywa coraz większą popularność wśród programistów języka C++ ze względu na swoją nowoczesną budowę, zestaw dodatkowych narzędzi oraz co najważniejsze – produkowanie kodu wynikowego wydajnościowo przybliżonego lub lepszego od konkurencji. Naturalne wydaje się więc zadanie pytania, jaka jest jego budowa i jak właściwie przebiega proces kompilacji. Artykuł odkrywa przed czytelnikiem ogół tajników działania kompilatorów języka C++, bazując na projekcie Clang w wersji 3.5.
Część 3: Przewijanie obszaru roboczego
Często spotykaną funkcjonalnością niestandardowych komponentów jest możliwość podglądu fragmentu pewnego większego obszaru. Może nim być część mapy, obrazu albo wirtualnego obszaru roboczego. Wiele standardowych komponentów również funkcjonuje na podobnej zasadzie – choćby pole listy: wyobrażamy sobie, że elementów jest bardzo dużo, a użytkownik w danym momencie może obejrzeć tylko kilka z nich. Poznamy dziś rozwiązania, które pomogą zaimplementować taki właśnie mechanizm.
Wyjątki w C++ od strony programisty wyglądają stosunkowo prosto – ot, zamykamy fragment kodu w bloku try, definiujemy jeden lub kilka bloków catch przechwytujących wyjątki danego typu i na tym nasza robota skończona; od teraz jeśli podczas wykonywania naszego kodu zostanie użyte throw, wykonanie programu zostanie „magicznie” przeniesione do odpowiedniego bloku catch (jeśli taki istnieje). Patrząc od środka, cały proces jest dużo bardziej złożony i warto na niego rzucić okiem, choćby z ciekawości.
Model Phonga omówiony w poprzedniej części tego cyklu, czy ogólniej oświetlenie wirtualnej sceny w grach, to jeden z filarów grafiki trójwymiarowej czasu rzeczywistego – zdecydowanie ułatwia postrzeganie obiektów na scenie jako trójwymiarowych brył. W rzeczywistym świecie cieniom własnym towarzyszą jednak także cienie rzucane na podłoże i inne przedmioty. Nie są tylko wizualnym smaczkiem – mają decydujący wpływ na ocenę wysokości obiektów względem podłoża i tym samym ich odległości od kamery.
Chociaż GSM jest standardem, który powstał dość dawno, to zyskał on dużą popularność wśród odbiorców. Dziś już każdy korzysta z dobrodziejstw tej komunikacji. Grono użytkowników jest naprawdę wielkie, dlatego też projektując system informatyczny z myślą o kliencie, warto zawrzeć w nim element natychmiastowej komunikacji, pewniejszy i szybszy niż e-mail. Usługi GSM mogą mieć wszechstronne zastosowanie, takie jak masowe wysyłki SMS, przypomnienie o opłaceniu faktury czy powiadomienie o nagłym skoku na giełdzie.
Wzorzec obserwatora i pokrewne
Artykuł omawia sposoby powiadamiania o zmianie stanu obiektu. Omawiane są uniwersalne i sprawdzone w praktyce rozwiązania: aktywne oczekiwanie, wzorzec obserwatora, publikowanie-subskrybowanie oraz reaktor.
Python Has Power to akcja skierowana do programistów PHP. W serii artykułów specjaliści STX Next przybliżą Ci język Python. Poznasz najciekawsze zagadnienia, funkcje, a także (o czym jesteśmy przekonani) zakochasz się w Pythonie. W obiektywny sposób pokażemy, jak PHP developer może zostać SuperHero i co może zyskać w przypadku przekwalifikowania się na Pythona. Zapraszamy – www.PythonHasPower.com!
Część 2: Wzorzec Reactor i jego implementacja z wykorzystaniem współdziałających wzorców
W poprzednim artykule przedstawiłem wzorzec Reactor niemalże wyłącznie z imienia i nazwiska – w oparciu o koncepcyjną implementację. Natomiast w ninejszym pokażę nieco bardziej profesjonalną (i nieco bardziej złożoną) odsłonę tego wzorca, wykorzystując inne współdziałające wzorce oraz stosując w pełni zasady GRASP i SOLID.
Niedawno miałem okazję uczestniczyć w świetnym wykładzie zorganizowanym przez wrocławską grupę użytkowników Javy (Wrocław JUG), a prowadzonym przez Roberta C. Martina znanego może bardziej pod pseudonimem Wujek Bob. Robert jest amerykańskim programistą i konsultantem z zakresu programowania, który zawodowo zajmuje się tą tematyką od przeszło czterdziestu lat; założył firmę Object Mentor inc., prowadzącą szkolenia z zakresu programowania w C++, Javie, stosowania OOP i wzorców projektowych, a także metodologii agile oraz programowania ekstremalnego. Jest też autorem kilku książek – między innymi „Czysty kod. Podręcznik dobrego programisty”.
DEF CON CTF 2014
Średnio co około dwa tygodnie gdzieś na świecie odbywają się komputerowe Capture The Flag - zawody, podczas których kilku-, kilkunastoosobowe drużyny starają się rozwiązać jak najwięcej technicznych zadań z różnych dziedzin informatyki: kryptografii, steganografii, programowania, informatyki śledczej, bezpieczeństwa aplikacji internetowych itd. Zazwyczaj w serii „Zdobyć flagę...” publikujemy rozwiązanie zadania pochodzącego z jednego z minionych CTFów, jednak w tym miesiącu wyjątkowo skupimy się na samym CTFie, a także infrastrukturze, którą należało przygotować, by z powodzeniem wziąć w nim udział.
Jeśli uważasz, że biznes, z którym współpracujesz, nie wie, czego chce, to trafiłeś w idealne miejsce. W serii artykułów poznasz metody współpracy z osobami z biznesu. Nauczysz się prowadzić rozmowę, odkrywać potrzeby i precyzować oczekiwania. Zaczynamy!