Miesiąc: Wrzesień 2012

ThunderWarn

Zainspirowany wpisem Gethioxa pomyślałem o napisaniu monitora nastroju Zeusa pod Windows. Założenia są podobne – pobieranie mapki z burzami oraz jej wyświetlenie na pulpicie. I tutaj jest pierwszy poważny problem – Gethiox rysuje mapę na wyświetlanej tapecie. Chciałem osiągnąć podobny efekt ale bez bazgrania po tapecie – póki co nie mażę po niej ale podobnego efektu nie uzyskałem –  wszystko jest wyświetlane w okienku.

Integracją z pulpitem bym tego nie nazwał…

Myślałem o użyciu ActiveDesktop ale to jest już od dawna niewspierane. Gadżety pulpitu też nie wyglądają na technologię której użycie nie jest równoważne nekromancji. Póki co jest to okienko WPF. Właśnie WPF – nie wiem co mam myśleć o tym wynalazku – niby już dobry czas temu czytałem że jest to zalecana technologia tworzenia UI, w przeciwieństwie do niezalecanego WindowsForms – ale nie mogę oprzeć się wrażeniu że sam MS nie jest za bardzo tym zainteresowany i nie bardzo wiadomo co tym wynalazkiem zrobić (przenieść do Silverlight który miał być rewolucją a potem go zabić, a XAML przepchać dalej do Metro (czy tam Modern UI jak to się teraz nazywa)). Co do samego WPF – większość czasu który spędziłem do tej pory polegało na rozgryzaniu o co w tym bałaganie chodzi. W moim odczuciu jest to dość dziwna technologia, gdzie zrobienie prostych rzeczy jest zdecydowanie zbyt skomplikowane, całość jest przekombinowana a wczytanie obrazka do pamięci (do pamięci, nie trzymając blokady na pliku) jest co najmniej nietrywialne. O banalnym przeniesieniu danych z System.Drawing.Bitmap z GDI+ do tego cuda nie wspominając.

W porównaniu do oryginalnego skryptu  kod jest wykładniczo bardziej skomplikowany. Jest to spowodowane po pierwsze technologią a pod drugie docelową większą funkcjonalnością. W założeniu będą dostępne dodatkowe źródła danych poprzez wtyczki, ostrzeganie przez zbliżająca się burzą i automatyczną ustalanie lokalizacji. Przydało by się trochę piorunów do testów. W chwili obecnej odpowiada w zasadzie inspiracji (mając ~10 razy większą objętość, pomijając kod wygenerowany przez VS). Jest to fajna okazja żeby pobawić się odważniej gałęziami Gita oraz innymi rzeczami. Bardzo chciałem wykorzystać async/await ale na moim Win8 RP, Visual w wersji RTM nie ma zamiaru działać – zamiast tego wykorzystałem więc TPL do obsługi asynchroniczności (nie bez problemów). Bajerami z nowego dotnetu pobawię się kiedy w końcu nowy system będzie miał premierę.

Caly kod dostępny jest na GitHub – https://github.com/Xevaquor/ThunderWarn

Reklamy

Developer’s Adventure – 0x01

Wakacje się skończyły, okres wypoczynku też – czas powrócić do pracy. Praca na WSoC ma w tej chwili bezwarunkowo najwyższy priorytet – został raptem miesiąc na skończenie gry. Kilka dni temu nie było jeszcze właściwie nic – poza asynchronicznym ładowaniem zasobów (jestem z tego cholernie dumny!) i przygotowaniem kodu pod przerzucanie stanów gry. Przez ostatnie trzy dni udało się zintegrować silnik fizyczny Farseer który jest portem Box2D dla XNA, oraz zaimplementować pomniejsze funkcjonalności. Ku mojemu zaskoczeniu nie miałem problemu ze zrozumieniem swojego kodu po pięciotygodniowej przerwie – jednak potrafię uczyć się na błędach i mój kod jest coraz łatwiejszy do czytania.

Przy tej okazji miałem okazję zapoznać się z narzędziem FxCop – służy ono do statycznej analizy kodu pod względem różnego rodzaju błędów, albo potencjalnych błędów. Czasem mam wrażenie że zbytnio się czepia, ale okazało się użyteczne wskazując mi niezauważone miejsca w których mogły wystąpić problemy. Innym narzędziem jest Visual Studio w wersji Ultimate. Oczywiście 90-dniowy trial. Na razie miałem okazję bliżej zapoznać się tylko z profilerem oraz InteliTrace. Jest to tylko niewielki wycinek, a mimo to jestem pod wrażeniem potęgi Visuala. Skoro o narzędziach mowa Developer’s Adventure jest pierwszym projektem w którym ‚na poważnie’ używam Gita. Kilkukrotnie okazał się bardzo pomocny w sytuacjach typu „przecież jeszcze przed chwila to działało”. Nie wiem jak mogłem wcześniej bez tego pisać kod.