Zapraszamy do zamówienia magazynu w prenumeracie. Magazyn jest dostępny w formie papierowej, .pdf, .ePUB i .mobi
BIBLIOTEKI I NARZĘDZIA
Podstawy WPF, część 4 – MVVM
Windows Presentation Foundation wynosi projektowanie interface'u użytkownika na zupełnie nowy poziom. Dzieje się tak w dużej mierze za przyczyną języka XAML, który bez żadnych dodatkowych bibliotek czy rozszerzeń pozwala na opisanie wyglądu okien i stron, przygotowanie tematów graficznych dla aplikacji, wprowadzenie animacji, stylowanie elementów wyświetlanych w listach, czy wręcz zaprojektowanie własnych kontrolek praktycznie od zera. A to wszystko deklaratywnie, bez napisania pojedynczej linijki kodu. Kiedy jednak mamy już przygotowany interface użytkownika, trzeba zakasać rękawy i zacząć go oprogramowywać. W tej części podstaw WPFa chcemy więc opowiedzieć o wzorcu, który jest w tym frameworku promowany w szczególny sposób: o MVVMie.
Wojciech Sura, Damian Jarosch
Projektowanie komponentów wizualnych. Część 1: Wstęp
Przeważająca większość frameworków udostępnia pewien domyślny zestaw kontrolek wizualnych, przy pomocy których możemy zbudować interface naszej aplikacji. Wśród nich znajdziemy takie komponenty, jak przycisk, pole wyboru, pole opcji, lista itd. W przypadku przeciętnych aplikacji biznesowych, w których interakcja z użytkownikiem sprowadza się do wprowadzania lub edycji danych, jest to zestaw w zupełności wystarczający. Sytuacja komplikuje się jednak nieco, gdy nasza aplikacja potrzebuje edytora lub podglądu jakiegoś specyficznego rodzaju danych. Z pomocą przychodzą wtedy internetowe repozytoria, w których możemy odnaleźć brakującą kontrolkę. Istnieje również inna opcja – możemy spróbować napisać taką kontrolkę samodzielnie. W nadchodzącej serii artykułów postaram się przybliżyć czytelnikom ten temat.
Wojciech Sura
Automatyzacja za pomocą GruntJS
Grunt to task manager stworzony głównie z myślą o front-endzie. Masz dość ręcznego składania projektu? Grunt wykona za Ciebie wszystkie nudne i powtarzalne zadania.
Kacper Cyran
JĘZYKI PROGRAMOWANIA
Swift: rewolucja czy ewolucja?
Na tegorocznym WWDC Apple zafundowało wszystkim swoim developerom sporą niespodziankę w postaci... nowego języka programowania! Swift, bo o tym właśnie języku tu mowa, to dla wielu programistów duży znak zapytania. W niniejszym artykule postaram się przybliżyć czytelnikowi ten temat oraz udzielić odpowiedzi na pytanie postawione w tytule: czy Swift należy postrzegać w kategoriach rewolucji, czy po prostu mamy do czynienia z nieuchronną ewolucją...
Rafał Kocisz
PROGRAMOWANIE GRAFIKI
Przetwarzanie geometrii przy pomocy mechanizmu Transform Feedback OpenGL 4.3
Architektura OpenGL od początku swojego istnienia ulega ciągłym modyfikacjom. Wraz z kolejnymi wersjami standardu pojawiają się nowe możliwości przetwarzania zarówno geometrii, jak i obrazu. Siłę standardu można zawdzięczyć wielu elementom architektury. Jednak bardzo istotny wpływ na jego popularność miało zunifikowanie formatu danych wyjściowych oraz danych wejściowych dla każdego etapu przetwarzania. Pozwoliło to na projektowanie algorytmów, w których wynik poprzednich obliczeń służy jako źródło dla następnych. Rekurencyjny charakter architektury OpenGL jest dostępny zarówno po stronie procesora obrazu Fragment Shader (FS), jak i procesorów geometrii: Vertex Shader (VS), Tesselation Shader (TS) oraz Geometry Shader (GS).
Piotr Sydow
Budowa oprogramowania do analizy i przetwarzania trójwymiarowych obrazów medycznych
Obrazy medyczne stanowią niewyczerpalne źródło inspiracji naukowych. Artykuł ten jest próbą krótkiej opowieści o mojej niekończącej się przygodzie z takimi obrazami oraz o tym, jak próbowałem i wciąż próbuję zamknąć różne pomysły i idee w jednym dedykowanym oprogramowaniu. Oprogramowanie to wykorzystane zostało w projekcie „Interactive fusion system of multiple 3D data as a surgical preoperative strategy and educational tool“ tworzonym wspólnie z mgr Andrzejem Rutkowskim oraz naukowcami z Wydziału Nauk Medycznych Uniwersytetu Warmińsko- Mazurskiego, które otrzymało główną nagrodę na targach wynalazczości w Brukseli w 2013 roku.
Michał Chlebiej
PROGRAMOWANIE GIER
Unity3D – prototyp gry sieciowej
Na popularność środowiska Unity3D składa się kilka elementów, ale z pewnością jednym z nich jest dość przystępne API, które upraszcza typowe zadania, jakie napotyka się, tworząc aplikacje oparte o grafikę 3D. To nie wszystko; interfejs programistyczny do obsługi komunikacji w sieci również został uproszczony. Autorzy Unity3D przygotowali bowiem bardzo przystępny zestaw klas, który pozwala stosunkowo szybko zrealizować prototyp gry sieciowej, np. typu FPS.
Marek Sawerwain
Przewodnik po MonoGame, część 2: komponenty gry
Budowanie gry, nawet stosunkowo prostej, to spore wyzwanie dla programisty, szczególnie jeżeli działa w pojedynkę, a liczba linii kodu ciągle rośnie. Bardzo łatwo zgubić się w zawiłościach skomplikowanej logiki gry, obsługi poszczególnych jej trybów czy interakcji graczy w grze wieloosobowej. Każdy programista wie, że aby uniknąć utraty orientacji we własnym projekcie, powinien podzielić kod na klasy, które będą realizować autonomiczne zadania i które łatwiej jest testować. Z klas można budować większe całości bez konieczności kontrolowania niezliczonej liczby zmiennych. To elementarz programowania obiektowego. W MonoGame poza klasami mamy także do dyspozycji tzw. komponenty gry. Są to specjalne klasy, które są odświeżane i rysowane automatycznie.
Jacek Matulewski
TESTOWANIE I ZARZĄDZANIE JAKOŚCIĄ
Gerrit Code Review
Przeglądy kodu źródłowego są popularną techniką umożliwiającą zapewnienie wysokiej jakości kodu źródłowego. Czy warto ją stosować? Co dają nam przeglądy kodu i jak je wykonywać, by były one efektywne? W tym artykule opisano podejście do tej praktyki prezentowane przez Gerrita – coraz popularniejszej aplikacji ułatwiającej przeprowadzanie przeglądów kodu źródłowego.
Wojciech Frącz
PROGRAMOWANIE SYSTEMÓW OSADZONYCH
Biblioteka .NET Micro Framework. Programowanie firmware dla urządzenia STM32F4 Discovery
Platforma .NET Framework jest szeroko wykorzystywana do programowania aplikacji desktopowych, internetowych oraz mobilnych. Ponadto najmniejsza wersja tej biblioteki, czyli .NET Micro Framework (NMF), umożliwia programowanie systemów i urządzeń wbudowanych, czyli obszaru zarezerwowanego do niedawna wyłącznie dla natywnych technologii programistycznych. W drugiej części mini-serii artykułów dotyczących platformy NMF zaprezentujemy jej przykładowe wykorzystanie na rzeczywistym urządzeniu elektronicznym – zestawie uruchomieniowym STM32F4 Discovery.
Dawid Borycki
RECENZJA
MegiTeam – hosting od programistów dla programistów
Zastanawiałem się ostatnio, jakie wartości (w sensie zawodowym) są najcenniejsze dla nowoczesnego programisty. Odpowiedzi, które w pierwszej kolejności przyszły mi do głowy, to: zwinność, elastyczność, dostępność i czas. Każdy niemalże programista, którego znam, cierpi na notoryczny brak czasu. A rzeczywistość technologiczna, która nas otacza, wymusza życie (i pracę) w ciągłym pośpiechu. Nowe projekty, nowe technologie, nowa wiedza, nowi ludzie – i tak w kółko: oto mantra programisty Anno Domini 2014…
Rafał Kocisz
Artykuł do pobrania: tutaj
WYWIAD
Polacy górą! Relacja z finałów Hello World Open 2014
Kolejny sukces Polaków na międzynarodowych zawodach! Polski team „Need For C” podczas finałów w Helsinkach w zeszłym miesiącu pokonał ponad 2,5 tysiąca drużyn z całego świata, tym samym zgarniając tytuł zwycięzcy i ponad 20 tysięcy złotych.
PROGRAMOWANIE ROZWIĄZAŃ SERWEROWYCH
IBM Mainframe
W tym roku serwery mainframe obchodzą 50 rocznicę istnienia. Jest to dobry powód, aby przybliżyć je czytelnikom Programisty. Oczywiście w tak krótkim opracowaniu nie da się zawrzeć wszystkich informacji, a te przedstawione niżej stanowią jedynie wstęp do całej technologii oraz szeregu rozwiązań składających się na tę technologię. Jak zdefiniować mainframe? Nie da się zrobić tego jednoznacznie, ponieważ mainframe to zbiór cech biznesowych i funkcjonalności, a nie hardware i software, z których się składa.
Dawid Morawiec
LABORATORIUM BOTTEGA
Brakujący element Agile Część 5: Spotkania
W tym artykule przedstawię techniki prowadzenia efektywnych i skutecznych spotkań. Jako programista zdaję sobie sprawę, że spotkania są, mówiąc kolokwialnie, jednym z najbardziej znienawidzonych aspektów naszej pracy. Z mojego doświadczenia wynika, że główną przyczyną jest ich chaotyczna struktura spowodowana brakiem przygotowania. Każdy dobrze zorganizowany projekt, iterację czy release produktu poprzedzamy planowaniem oraz zarządzamy ich przebiegiem. W przypadku spotkań dominuje tzw. podejście „na żywioł”. Z tego powodu tracimy masę czasu, chodząc na bezcelowe spotkania oraz prowadząc dyskusje o nieistotnych kwestiach.
Paweł Badeński
STREFA CTF
Zdobyć flagę… CONFidence DS CTF 2014 – web200
Ś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. W serii „Zdobyć flagę…“ co miesiąc publikujemy wybrane zadanie pochodzące z jednego z minionych CTFów wraz z jego rozwiązaniem.
Krzysztof "vnd" Katowicz-Kowalewski
KLUB LIDERA IT
Jak całkowicie odmienić sposób programowania, używając refaktoryzacji (część 10)
Większość programistów wie, co to refaktoryzacja, zna zalety wynikające z jej stosowania, zna również konsekwencje zaniedbywania refaktoryzacji. Jednocześnie wielu programistów uważa, że refaktoryzacja to bardzo kosztowny proces, wymaga wysiłku i brak na nią czasu w szybko zmieniających się warunkach biznesowych. Zapraszam do kolejnej części artykułu poswięconego zagadnieniu refaktoryzacji.
Mariusz Sieraczkiewicz
KLUB DOBREJ KSIĄŻKI
Agile. Szybciej, łatwiej, dokładniej
Rafał Kocisz