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.
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.
Grunt to task manager stworzony głównie z myślą o front-endzie. Masz daość ręcznego składania projektu? Grunt wykona za Ciebie wszystkie nudne i powtarzalne zadania.
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ą...
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).
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.
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.
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.
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.
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.
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…
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.
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.
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.
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.
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.