Pokazywanie postów oznaczonych etykietą code. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą code. Pokaż wszystkie posty

2011-02-01

Notacja węgierska użyta wygodnie

Charles Simonyi stworzył dawno temu (w skali czasu istnienia C/C++) pewne standardy odnośnie nazewnictwa zmiennych i funkcji - zwane notacją węgierską. Tak, tą samą notacją, na którą narzekają tysiące programistów, mających do czynienia z WinAPI czy innymi wynalazkami Microsoftu. Co ciekawe - akurat w WinAPI wspomniana notacja jest używana niepoprawnie. Istnieje możliwość takiego wykorzystania przedrostków, żeby nie przyprawiały o ból głowy - również na innych platformach.

2011-01-14

Zmienne statyczne, czyli dlaczego nie lubię PHP

Rzeczą naturalną dla każdego uczącego się programisty C++ jest design pattern zwany singletonem. Właściwie każdy ma do czynienia z tego typu wzorcem projektowym w trakcie pisania nieco bardziej skomplikowanych aplikacji C++/C#. Przykładowymi singletonami w C# (bardzo często używanymi) są różne instancje klasy System.Text.Encoding, będące predefiniowanymi sposobami kodowania w różnych popularnych (wszelkie odmiany WTFUTF) wersjach. Pisząc w ASP.NET również można użyć singletonów - to, moim zdaniem, największa przewaga ASP.NET nad PHP w dowolnej jego odmianie.

2011-01-12

WYSIWTF - czyli dlaczego nie lubię WYSIWYG

Będąc na etapie pisania (wprawka w ASP.NET) własnego blogasystemu blogowego, dotarłem do bardzo istotnego etapu - tworzenia i edycji postów. Krótko: napisania wygodnego, funkcjonalnego edytora postów, w którym składanie naprawdę dziwnych zależności będzie proste, przyjemne, intuicyjne, szybkie, funkcjonalne, a w wolnej chwili zaparzy kawę. Po krótkich przemyśleniach, szybka, ostateczna decyzja: żadnego WYSIWYG.

2011-01-10

Są błędy, których nie należy poprawiać

There are routes which must not be followed,
Armies which must not me attacked,
Towns which must not be desieged,
Positions which must not be contested.

Sun Tzu - The Art of War / Sabaton - Cliffs of Gallipoli

2010-12-20

Cofnięcie uprawnień administracyjnych

Od czasu Visty istnieje zjawisko zwane UAC. Powoduje ono, przy odrobinie szczęścia, podniesienie uprawnień aplikacji do poziomu administratora po akceptacji użytkownika, w sposób całkowicie przezroczysty dla systemu. Przynajmniej tak być powinno, jednak przezroczystość ta jest fikcyjna. Weźmy dla przykładu aplikację uruchamianą z prawami admina, która potrzebuje poprzez COM (dokładniej: API oparte na COM) skomunikować się z aplikacją działającą w trybie użytkownika. Nie działa. Są też różne inne przypadki (File manager? Installer?) wymagające łatwego uruchomienia aplikacji w trybie użytkownika. Jak to zrobić?

2010-12-08

Zaklinacz kodu

Czasem, gdzieś w komentarzach w kodzie pojawiają się takie określenia jak "White Magic", "Black Magic", "Deep Magic" i inne określenia różnych szkół magii. Nie każdy (zwłaszcza początkujący) koder zna znaczenie tych określeń, będących właściwie skrótami dłuższych, opisowych komentarzy.

Co ciekawe i zaskakujące: bardzo trudno znaleźć w Sieci dokładne wyjaśnienie wspomnianych terminów. Jest dokument, który opisuje wspomniane zagadnienia, jednak przebicie się przez cały, obszerny spis żargonu nie należy do przyjemnych zadań. W związku z tym postanowiłem podsumować kilka wybranych terminów i opisać je szerzej.

2010-10-25

Prostota vs. estetyka

Wzorce projektowe, zalecenia projektowe platformy i wszystkie podobne powstają w jednym celu: mają ułatwić tworzenie i rozumienie kodu pisanego z użyciem danego API. Czy mówimy o operacjach asynchronicznych w Symbianie, czy o tworzeniu obiektu aplikacji jako globalnego - zawsze celem jest zwiększenie przejrzystości i przewidywalności kodu. Są jednak takie sytuacje, gdy trzymanie się wspomnianej przejrzystości zabiera stanowczo za dużo czasu i rozwiązanie najbardziej oczywiste, "podręcznikowe" jest tym najgorszym.

2010-10-14

emit Alert(StackOverflow);

Qt jest dość popularnym API do obsługi okien i nie tylko. Warto wspomnieć, że na jego bazie powstał interfejs graficzny KDE, mnóstwo większych i mniejszych aplikacji jak Skype, Gadu-Gadu, Google Earth, Kate oraz reszta aplikacji z pakietu KDE. API jest przemyślane, wieloplatformowe, kod przenosi się łatwo, ponadto w samym Qt wmontowano chyba wszystko, z czego typowy developer korzysta tworząc natywną aplikację. Jako, że każda platforma i każde API ma swoje niuanse, dzisiaj o przepełnianiu stosu za pomocą sygnałów i slotów - właśnie w Qt.

2010-09-22

Aplikacja sterowana zewnętrznie

Różne są sposoby programowania asynchronicznego. Stosuje się wątki, przetwarzanie porcjami, delegację do osobnych procesów i jeszcze kilka innych technik. Zakładając, że w danym przypadku wydzielamy pewną operację asynchroniczną do osobnego procesu (załóżmy, niech to będzie kompresja), należy mieć nad tym zadaniem pewną kontrolę. Jak można to zrobić?

2010-07-13

Augmented Reality - first look

Dawno, dawno temu, ludzkość marzyła o pełnej integracji komputerów z życiem codziennym. Jak wiadomo, niezbyt się to udało, przynajmniej taki stan mamy na dzień dzisiejszy.

Jedną z technologii związanych z integracją świata wirtualnego i rzeczywistego jest szeroko pojęte Augmented Reality. Działanie AR opiera się na różnych implementacjach i rozwiązaniach, natomiast wspólny jest efekt: nałożenie, w czasie rzeczywistym, dodatkowych informacji wirtualnych na obraz świata rzeczywistego - zależnie od formy albo jako HUD na światłoprzepuszczalnej powierzchni, albo jako modyfikacje obrazu z kamery cyfrowej. Niżej zamieszczam pomysł prostego rozwiązania AR stosowalny, gdy dysponujemy zestawem: GPS + akcelerometr/żyroskop+kompas cyfrowy.

2010-06-14

MFC, WinAPI i wersja systemu

WinAPI jest kompatybilne wstecz. Często powtarzana przez programistów Windows fraza, która generalnie jest prawdziwa. Są jednak pewne wyjątki, okazuje się, że nawet Microsoft robi spore zmiany we własnych headerach, co nieraz znacznie utrudnia utrzymanie kodu.

2010-05-26

C++ to zło?

[Defective C++]

Polecam przejrzeć. Dodatkowo, Reg skomentował to na swoim blogu.

Z mojej strony krótko: z tezami przedstawionymi się zgadzam, do użytku radzę: do normalnego użytku jakiś język zarządzany (C#, VB.NET, Java), jeśli naprawdę potrzebna jest kontrola nad każdym bajtem i (de)alokacją - pure C (a ten moduł w C połączyć z zarządzaną obsługą usera).

2010-05-18

GameMonkey w SpaceFight

SpaceFight się rozwija. Ba, rozwija się całkiem szybko - podstawowa fizyka, HUD i sterowanie istnieją, nawet zasoby są ładowane na podstawie danych, a nie hardkodowanych wartości (no... poza ścieżką do pliku z testową misją). Stąd w końcu pora na język skryptowy podpięty do projektu.

2010-04-22

SpaceFight: dylatacja czasu

Kopia posta z Forum Gamedev.pl (zbyt dużo mówi o grze, żeby pominąć).

Dylatacja czasu i podróże wewnątrzukładowe:
Jako, że mowa o zjawisku udowodnionym naukowo i dokładnie opisanym , osoby nieobeznane odsyłam do wiki. Pewnego rodzaju innowacją byłoby wprowadzenie w moim shooterze podróży wewnątrz układu planetarnego. Jak bym to widział w chwili obecnej: do dyspozycji gracza w czasie misji jest kilka "punktów węzłowych": statek matka, punkt celu misji, możliwe, że 1-2 dodatkowe punkty powiązane z zadaniem, między tymi punktami gracz może "skakać" z prędkością zbliżoną do prędkości światła.

2010-04-14

MVC w obsłudze aktorów (obiektów) gry

Projektując obsługę agentów gry na potrzeby SpaceFight, nieświadomie zaaplikowałem wzorzec MVC (Model-View-Controller) - rozdzielenie aktora na model (czyli obiekt z danymi), widok (encja silnika graficznego/dźwiękowego) i kontroler. Podejście takie skutkuje sporą elastycznością w zakresie działania AI, stąd postaram się klarownie przedstawić koncepcję realizacji MVC w grze.

2010-04-12

SpaceFight - szkic pomysłu

Postanowiłem w końcu spisać pomysł dotyczący SpaceFight (projektu, który katuję już drugi rok), z zamiarem zebrania feedbaku i opinii. Czekam na uwagi, pomysł poniżej:

2010-04-09

Ovi Developers Challenge

Dwa lata pracy przy Symbianie spaczyły mnie wystarczająco - postanowiłem wziąć udział w polskim Ovi Developers Challenge organizowanym przez Nokię. Jako, że konkursów developerskich z nagrodami jest mało (a jeszcze mniej jest programistów znających Symbiana), liczę, że mam jakąś szansę na wygranie przynajmniej telefonu.

2010-04-01

Własny format pliku

Układając własne formaty plików zwracam uwagę przede wszystkim na łatwość parsowania i zapisu pliku. Dokładnie w tej kolejności - plik ma przede wszystkim być łatwy w parsowaniu, dopiero potem łatwy w zapisie. Zależność jest oczywista: w większości przypadów plik jest zapisywany znacznie rzadziej niż wczytywany, poza tym prosty w napisaniu, poprawny parser ułatwia znalezienie błędów w kodzie zapisującym (w drugą stronę jest nieco gorzej). Stąd zmontowałem swego rodzaju prosty szablon dla plików binarnych.

2010-03-19

Wirtualny System Plików

Jako, że piszę silnik połączony z grą, niemal koniecznością stało się użycie jakiegoś VFS. "Gotowca" nie chciałem - większość operuje na ANSI nazwach plików, do tego różnie sobie radzą z przezroczystością systemu plików (archiwa, rzeczywisty FS, priorytety itp.). Stąd powstało moje własne rozwiązanie - system SFFS z obsługą (własnych) archiwów SFA.

2010-03-16

Windows Phone 7 SDK

Mała uwaga: blog się niebawem przeniesie. Migracja z Wordpress na ASP.NET. Powód: chcę większą kontrolę nad samym blogiem.

Z racji zainteresowań (nie tylko) zawodowych, Windows Phone 7 SDK pojawiło się u mnie na dysku, gdy tylko się o tym dowiedziałem. Paczka zawiera nie tylko samo SDK, a też (w zestawie?) .NET Framework 4, XNA 4.0, nowy Silverlight, IDE Visual Studio 2010 Express (wersja tylko do mobile development). Czyli spora paczka. Sama instalacja jest nudna (pomijając kilka zapisów w EULA typu zakaz testowania na fizycznych urządzeniach czy zakaz dystrybucji Location API do Chin i Korei Północnej), za to sam pakiet zmienił się sporo w porównaniu do poprzednich.