Programista 11/2014 (30)
Programista 11/2014 (30)
Reverse engineering – czyli inżynieria wsteczna – to zbiór technik wykorzystywanych do analizy zamkniętego oprogramowania w celu wydobycia niedostępnych z pozoru informacji jak np. użyte algorytmy, ukryte hasła dostępu (np. do baz danych), informacje o tym, jak szyfrowane są jakieś pliki aplikacji itp.
Popularna ostatnimi czasy architektura mikrousług (ang. microservices) wystawia na pierwszy plan integrację sieciową między wieloma komponentami. Wszechobecność zewnętrznych usług i API również nie ułatwia zadania. W tak złożonych środowiskach błędy nie są wyjątkiem, a codziennością, którą trzeba zarządzać i testować. Hystrix to biblioteka w Javie zwiększająca stabilność w systemach, nawet w obecności błędów.
Za sobą mamy już pomysł, architekturę i kilka detali implementacyjnych. Nadszedł wreszcie czas, abyśmy pomyśleli o tym, w jaki sposób narysować naszą kontrolkę na ekranie. Dziś dowiemy się, jakimi narzędziami dysponujemy podczas renderowania kontrolki, oraz poznamy kilka sztuczek przydatnych podczas implementowania tego procesu.
MonoGame, podobnie jak wcześniej XNA, pretenduje do bycia platformą do programowania gier. To oznacza, że poza wsparciem dla tworzenia grafiki 3D musi także umożliwiać interakcję użytkownika z grą, czyli wspierać obsługę kontrolerów gry. W przypadku MonoGame obsługiwane są myszka, klawiatura i gamepad. Tym kontrolerom będzie poświęcona ta część naszego cyklu.
W drugiej części naszego cyklu zajmiemy się animacją przeciwnika oraz animacją ataku, jaki przeprowadzić może gracz. Atak zostanie przeprowadzony za pomocą broni, którą znajdziemy i umieścimy w ekwipunku.
Mniej więcej pół roku temu, w magazynie Programista (numer 6/2014), opublikowałem artykuł zatytułowany Swift: rewolucja czy ewolucja?. Celem tego artykułu było przedstawienie nowego języka programowania od Apple, który poczynając od ósmej wersji systemu operacyjnego pod znaku nadgryzionego jabłuszka, miał stać się preferowanym narzędziem do wytwarzania aplikacji na urządzenia mobilne giganta z Cupertino.
Urządzenia ubieralne stanowią nową generację urządzeń mobilnych, które są noszone przez użytkownika na jego ciele. Takie rozwiązanie stwarza nowe możliwości interakcji z użytkownikiem i wymaga dodatkowych interfejsów programistycznych. W jednym z moich poprzednich artykułów (Programista 9/2014(28)) opisałem interfejs Mirror API służący do programowania aplikacji dla Google Glass. Natomiast w tym artykule omówię inną technologię dedykowaną urządzeniom ubieralnym, jaką jest Android Wear.
Czy zwykły PC może być wydajnym routerem lub switchem? Co różni te urządzenia od „zwykłego” komputera? Okazuje się, że całkiem mało, jeśli tylko postąpimy „nieroztropnie” i postanowimy stworzyć swój własny stos sieciowy… Innych już dawno zmusił do tego wykładniczy wzrost ruchu w sieci i powszechne użycie światłowodów.
Utrzymanie aktualnego tempa zwiększania szybkości pracy procesorów wykonanych w technologii krzemowej nie jest możliwe w dłuższej perspektywie. W celu zwiększenia wydajności pracy systemów zaczynają dominować rozwiązania równoległe, składające się z dziesiątek oraz setek rdzeni. Wymaga to nowych podejść co do architektury oraz zasady działania projektowanych systemów. Jednymi z bardziej wymagających wydajnościowo są stosy protokołów sieciowych. Niniejszy artykuł przedstawia pomysł realizacji równoległego, wydajnego oraz skalowalnego stosu TCP/IP.
Jak wiadomo – najlepszą formą nauki jest zabawa. Dlatego nasza propozycja ćwiczenia mającego na celu doskonalenie umiejętności programowania w Pythonie polegać będzie na stworzeniu algorytmu podejmującego decyzję podczas gry w pokera. Zachęcamy do stworzenia kilku wersji algorytmu, których skuteczność będzie można następnie skonfrontować poprzez symulację rozgrywki pokerowej.
Wielu z Was zapewne słyszało o nowych możliwościach, jakie otwiera przed programistami standard C++14. Nie każdy jednak wie, jak na dzień dzisiejszy wygląda proces zarządzania rozwojem tego popularnego języka programowania. Odpowiedzi na to i wiele innych pytań udziela człowiek, który miał gigantyczny wpływ na rozwój nie tylko informatyki, ale i wszystkich gałęzi życia czerpiących z tej dziedziny wiedzy. Tym człowiekiem jest Bjarne Stroustrup: twórca C++.
Rozmowa ze Scott'em Meyers'em
5 listopada br. w Centrum Kongresowym przy wrocławskiej Hali Stulecia odbyła się konferencja CODE::DIVE, na której jako gość honorowy wystąpił Scott Meyers: jeden z czołowych ekspertów na świecie w dziedzinie rozwoju oprogramowania w języku C++, autor znanej serii książek Effective C++. Scott zaprezentował dwa wykłady: jeden na temat pamięci podręcznej procesorów i jej znaczenia w kontekście wytwarzania oprogramowania, drugi zaś dotyczący mechanizmów języka C++11/C++14 wspierających programowanie systemów osadzonych. Obydwie prezentacje zebrały tłumy widzów. Nas też tam nie zabrakło, a co ważne – po jednym z wykładów udało nam się namówić Scott'a na wywiad, który przedstawiamy poniżej.
Aexol specjalizuje się w tworzeniu aplikacji mobilnych. Firma została założona w 2011 roku przez Artura Czemiela, absolwenta DRIMAGINE 3D Animation & VFX Academy, od zawsze zainteresowanego technologią 3D. Swoją pasję początkowo rozwijał w branży filmowej. Artur jest współautorem efektów specjalnych do filmu Cezarego Pazury pod tytułem „Weekend”, filmu „Hexaemeron” nagrodzonego Finest Art award Fokus Festiwal oraz nominowanego do nagrody dla najlepszego filmu krótkometrażowego animowanego flEXiff 2010 Australia. Doświadczenie zdobyte w branży postprodukcji filmowej oraz na rynku aplikacji mobilnych stanowiło podłoże dla pomysłu stworzenia silnika AexolGL – narzędzia mającego ułatwić pracę firmie Aexol oraz innym programistom na całym świecie.
Testy jednostkowe mogą bardzo pozytywnie wpłynąć na jakość tworzonego systemu. Napisano o nich wiele książek i artykułów, wygłoszono setki prelekcji i nagrano niezliczoną liczbę kursów. Przez wiele lat zgłębiałem ten temat i z czasem stał się on moją pasją, najbardziej fascynującym aspektem zawodu programisty. Ze zdumieniem obserwowałem, jak z nabieraniem doświadczenia, z każdym kolejnym projektem, wszystkie części układanki zaczynały powoli układać się w logiczną całość. Postaram się w przystępny sposób podzielić wiedzą zdobytą na placu boju.
MBT – Model Based Testing – jest metodą testowania oprogramowania w oparciu o model SUT (System Under Test) – tzn. model testowanego oprogramowania. W niniejszym artykule przedstawiona zostanie idea testowania opartego o model testowanego oprogramowania.
Wprowadzenie do tematyki prawa autorskiego
Trudno o bardziej istotne dla programistów i innych osób związanych z branżą IT normy prawne niż te regulujące tzw. własność intelektualną. Wśród nich najbardziej podstawowe są przepisy normujące ochronę praw autorskich i utworów wytworzonych przez twórców.
Hack.lu 2014 CTF – Get your gatling at Garrettling!
Średnio co około dwa tygodnie gdzieś na świecie odbywają się komputerowe Capture The Flag – zawody, podczas których kilku lub 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. W serii „Zdobyć flagę…” co miesiąc publikujemy wybrane zadanie pochodzące z jednego z minionych CTFów wraz z jego rozwiązaniem.
Czyli o motywacji wewnętrznej
Każdy lider chciałby mieć zmotywowane osoby w zespole – takie, które same się rozwijają, które chętnie biorą odpowiedzialność, a następnie robią wszystko, żeby się wywiązać ze swoich zadań. Nie zniechęcają się, nawet kiedy wykonują żmudne, powtarzalne zadania, pracując przez kilka lat z przestarzałymi technologiami, i nie poddają się mimo tego, że organizacja mocno ogranicza możliwości ich działania. Do tego jeszcze cały czas szukają sposobów, jak udoskonalić proces, którego są częścią, i popychają innych do rozwoju. Któżby nie chciał mieć takich ludzi.