Archiwum kategorii: ‘Programowanie’

Generyczna klasa zbioru (2010-7-23)

W projekcie, nad którym pracuję potrzebowałem przyzwoicie działającej klasy reprezentującej zbiór. Zbiór nie do końca w sensie teoriomnogościowym (o właściwościach takiego można przeczytać np. tu), posiadający jedną bardzo ważną cechę: przechowywanie unikalnych elementów.

Short Tip #09: GetHashCode() dla wektora (2010-7-19)

Specyfika pewnej części projektu, nad którym obecnie pracuję wymagała zastosowania tablicy haszującej. Struktury danych, które są przechowywane w tablicach (jedna tablica na typ) wyglądają następująco: Okazało się, że metoda GetHashCode() domyślnie wygenerowana przez IDE dla klasy Vector3 jest niewystarczająca – błędy pojawiły się już przy próbie wczytania wierzchołków, krawędzi i trójkątów prostego sześcianu. Chwila zastanowienia […]

SRP – Single Responsibility Principle w praktyce (2010-7-15)

O Single Responsibility Principle, pierwszej zasadzie S.O.L.I.D.-nego oprogramowania napisano sporo, jednak prawie wszystkie artykuły, które czytałem odnosiły się do tematu od bardzo teoretycznej strony. Poniżej przedstawiam jak najbardziej „produkcyjne” zastosowanie SRP, które powstało przy pisaniu części aplikacji odpowiedzialnej za ładowanie prostych modeli z formatu OBJ.

Short Tip #08: problem z gl.h (2010-6-23)

Nagłówki biblioteki OpenGL, jak wiadomo, są dołączane do każdego kompilatora. Do tej pory działały bez zarzutu, tym większe było moje zdziwienie, gdy przy wczorajszej próbie kompilacji pewnego open-source’owego projektu oczom moim ukazało się to: Z 2289 błędów kompilacji, 2288 kierowało mnie właśnie do pliku gl.h Po chwili googlania rozwiązanie okazało się trywialne:

Short Tip #07: C# i "?" po raz kolejny (2010-5-25)

W jednej z notek z serii „Short Tip” pisałem o użyciu operatorów ? i ??. Tym razem znak zapytania pojawi się w innym kontekście. Pierwsze założenie (plus wyjaśnienie, tak na wszelki wypadek): zakładam, że znane są pojęcia (i rozróżnienie na) Value types i Reference types. W dużym skrócie: Value types (czy „typy wartościowe” to dobre […]

Bezpieczne kasowanie informacji (2010-5-18)

Usuwanie danych z dysku przez „Przenieś do Kosza” i „Opróżnij Kosz” może dawać namiastkę pozbycia się danych. Każdy program do odzyskiwania danych poradzi sobie z taką metodą szybciej, niż zdążylibyśmy powiedzieć „nigdy nie posiadałem na dysku tych ściśle tajnych informacji„. Co jednak w przypadku, gdy chcemy wyrzucić pliki raz na zawsze? Najprostszą (i jednocześnie bardzo […]

Short Tip #06: Diagnoza, zwiad i rozpoznanie (2010-5-4)

Oprócz standardowych metod Debugowania aplikacji w Visual Studio (breakpoint’y + klawisze F10 i F11) czasami przydaje się wypisanie informacji do konsoli. W projekcie Windows Forms można to zrobić za pomocą następującego fragmentu kodu: W XNA można: informacje o stanie aplikacji na każdym etapie jej tworzenia wyświetlać za pomocą HUD-a (tu pozdrowienia dla pracoholików) skorzystać ze […]

Odwrotne zadanie kinematyki (2010-5-4)

Odwrotne zadanie kinematyki jest zagadnieniem niełatwym, a jednocześnie tak niezbędnym w przemyśle, że trudno byłoby sobie wyobrazić proces produkcyjny bez jego zastosowania. W tej notce skupię się na przypadku w miarę prostym: robot o ramieniu składającym się z dwóch części (jeden przegub), poruszający się w dwóch wymiarach.

Short Tip #05: Singleton pattern (2010-4-30)

Wzorzec Singleton jest chyba najprostszym ze stosowanych „nazwanych” wzorców. Jego koncepcja jest bardzo prosta: w cyklu działania aplikacji może być utworzona TYLKO JEDNA instancja danego obiektu i powinna być ona dostępna z każdego miejsca w kodzie. W implementacji klasy (przykładowa implementacja poniżej) są ważne następujące elementy: prywatna, statyczna instancja klasy singletona konstruktor, który jest albo […]

Skala szarości i sepia (2010-4-17)

Na początku miałem zamiar zrobić z tego tematu krótki tekst, który w sam raz nadawałby się na Short Tip. Jednak testowy projekt rozrósł się na tyle (a przy okazji doszedłem do paru ciekawych wniosków), że grzechem byłoby niepoświęcenie temu „śledztwu” kilku minut i słów więcej.