Recenzje archiwalne

Recenzja numeru 6/2007

Okładka numeru 6/2007 SDJ

Tym razem w gazecie będzie coś, co wiąże się tematycznie z witryną GameCreator :-) a dokładniej: artykuł na temat programowania z użyciem biblioteki DirectX 9a. Oczywiście są też teksty o innej tematyce ;-)

Aktualności

W aktualnościach tym razem będzie o powstaniu Citizendium, czyli "moderowanej" Wikipedii ;-J Będzie też o znalezionych dziurach w OpenOffice, protestowi jego dystrybutorów przeciwko standaryzacji Microsoftowego formatu OpenXML, nowym module wirtualizacji VMI w jądrze Linuxa, pierwszych próbach naśladowania wodotrysków Beryla/Compiza z Linuxa dla Windows [niestety wciąż nie dorównują mu wydajnością ;-P], czy wydaniu szkicu licencji GPL 3.

Płyta CD-ROM

Na płytce w tym numerze: przeglądarka Opera 9.2 dla tych, którzy nie mają Internetu i nie mogą jej sobie ściągnąć [tak, to była ironia ;-D], pełna wersja programu Password Manager do zarządzania hasłami, program antywirusowy dla Visty, oraz archiwum numerów SDJ z roku 2005. Ciekawym bajerem jest też multimedialny kurs MCSA.

Artykuły

Pierwszy artykuł omawia ciekawą bibliotekę do obsługi baz danych, której można użyć z poziomu języka Java lub platformy .NET. Jest ona ciekawą alternatywą dla bibliotek typu Hibernate czy JDBC ze względu na kilka interesujących rozwiązań. Przede wszystkim pozwala na lepsze uporządkowanie kodu i oddzielenie poleceń SQL od kodu aplikacji. Oprócz tego pozwala mapować tabele bazy danych na klasy obiektów i używać ich w bardzo wygodny sposób. Autor prezentuje sposoby użycia tej biblioteki na prostych, praktycznych przykładach, więc cały artykuł jest napisany w przystępny sposób.

Tuż po nim jest flagowy artykuł bieżącego numeru, czyli artykuł na temat DirectX, więc poświęcę mu trochę więcej miejsca.

Artykuł na temat DirectX

Mimo chwytliwego tytułu ["Vademecum programowania Direct3D"] trochę mnie ten artykuł rozczarował poziomem merytorycznym, gdyż wygląda to tak, jakby autor był "świeży" w temacie, nie tylko DirectX, ale grafiki 3D w ogóle. Początek artykułu to typowe "lanie wody" - krótka historia grafiki 3D, niezbyt zresztą dokładna więc zupełnie nieprzydatna. Mało tego - zawiera dziwne stwierdzenia, jak np. to, że zdaniem autora "Efektu Dooplera nie rejestrujemy" [zmysłami] - widać autor nigdy nie słyszał zmian w wysokości dźwięku oddalającej się karetki pogotowia ;-P Nie słyszał też pewnie, że od DirectX w wersji 8 moduł graficzny tej biblioteki nie nazywa się już "Direct3D", lecz "DirectX Graphics".

Dalej jest ciąg dalszy lania wody, czyli kupka definicji pojęć z grafiki 3D. Pojęć, które zapewne znają nawet gracze, a co dopiero programiści grafiki ;-) [tekstura, piksel, wierzchołek, trójkąt, siatka]. Wszystko byłoby git, gdyby nie to, że w tym autor też popełnia błędy i niedociągnięcia. Myli światło rozproszone [ang. diffuse] ze światłem otaczającym [ang. ambient]. Flexible Vertex Format [z ang. "elastyczny format wierzchołka"] to jego zdaniem "zmienny format wierzchołka", co jest bardzo dziwne, bo format wierzchołka się wcale nie zmienia w czasie działania programu, tylko można go sobie dowolnie [elastycznie] definiować [wybierać, z czego będzie się składał]. Wydumał też sobie figurę "nieodbijającą światła" [domyślam się, że chodziło mu o siatki, dla których nie wykonuje się obliczeń oświetlenia]. A macierze jego zdaniem służą do "przechowywania danych o przestrzeni" [pewnie miał na myśli transformacje macierzowe ;-J] i jego zdaniem muszą być 4x4, bo macierze 3x3 "nie umożliwiają wykonania np. translacji" [owszem, umożliwiają, jednak wymaga to stosowania dodawania macierzy, zamiast mnożenia, dlatego wprowadza się macierze 4x4 i używa przestrzeni jednorodnej, by wszystkie obliczenia na macierzach dało się sprowadzić do ich mnożenia]. Ech... a z tym "dramatyzmem perspektywy" to już porządnie dowalił do pieca :-P [ciekawe jak było w oryginale, czyżby "Perspective frustum"? :-P].

W artykule zabrakło tego, o czym miał być, czyli opisu programowania w DirectX Graphics ;-P Poza informacją, gdzie można ściągnąć SDK, przykładową aplikacją i kodem źródłowym na płytce nie ma ani słowa na temat budowy biblioteki DirectX i sposobów jej używania, więc nie wiem skąd wziął się tytuł "Vademecum programowania Direct3D" ;-P Jest za to dwa razy opis głównych funkcji typowego programu i przykładowej aplikacji oraz odwołanie do ilustracji, której nigdzie nie ma :-|

No cóż... To by było na tyle z szumnie zapowiadanego w poprzednim numerze "programowania gier i grafiki" :-\

Pozostałe artykuły

Kolejny artykuł opisuje tworzenie pluginu dla Eclipse, który będzie służyć jako graficzny edytor danych. Został on oparty na przykładzie Shape Diagram Editor. W tym celu użyte zostały biblioteki GEF [ang. Graphical Editing Framework] i Draw2D. Poszczególne klasy, składające się na działający przykład, zostały opisane. Brakuje tylko rysunku z diagramem UML, zamiast którego jest drugi raz rysunek 1 ;-P

W następnym artykule opisany został sposób użycia pakietu CruiseControl.NET do ciągłego integrowania ze sobą efektów pracy kilku programistów .NET [taki model pracy nazywa się Continuous Integration]. Autor pokazuje, jak przygotować serwer CC.NET do działania i skonfigurować go do pracy z Visual Studio 2005. Jako system kontroli wersji i repozytorium, użyte zostało [jak nietrudno zgadnąć ;-P] oprogramowanie Subversion. Na przykładzie tworzenia prostej aplikacji autor pokazuje, jak tworzyć oprogramowanie w takim środowisku, tworzyć unit-testy i budować poszczególne wersje pośrednie posługując się skryptami budującymi MSBuild.

W bieżącym numerze jest także ciąg dalszy serii "Rozszerzanie wzorców J2EE". Tym razem będzie pierwsza część testowej aplikacji, a dokładniej jej warstwy biznesowej. Aplikacja testowa będzie wykorzystywać przytoczone wcześniej wzorce, takie jak ApplicationService i Data Transfer Object. Dzięki nim możliwe jest ładowanie i wykonywanie usług w warstwie biznesowej.

Kolejny artykuł jest kontynuacją artykułu o przechowywaniu interfejsów WWW w bazie danych. Tym razem będzie o przechowywaniu plików multimedialnych w bazie danych, na przykładzie bazy Oracle. Autor opisuje, jak przy pomocy pól typu BLOB, CLOB i BFILE przechowywać w bazie dane multimedialne, oraz jak stworzyć prosty interfejs WWW służący do uploadowania, przeglądania i pobierania plików multimedialnych z bazy danych. Artykuł jest napisany przystępnie, a przykłady kodu do obsługi bazy danych zostały dokładnie omówione.

W artykule "UML - potrzeba standaryzacji notacji" poruszony został ważny problem, który niedawno zaczął dawać o sobie znać - mianowicie wzrastająca ilość różnic pomiędzy różnymi językami modelowania, bazującymi na UML. Autor wyjaśnia, czym charakteryzuje się dobry model i jaką funkcję pełni modelowanie w procesie wytwarzania oprogramowania. Pokazuje zyski z ujednolicenia języka opisu modeli, oraz co i kiedy zaczęło "zgrzytać" w czasie rozwoju języka UML.

Ostatni z artykułów opisuje zagadnienia związane z tzw. "programowaniem ekstremalnym" [ang. Extreme Programing], czyli szybkim tworzeniem oprogramowania w trudnych warunkach pracy zespołowej. Autor opisuje, jak to jest, gdy dwóch "wariatów" pisze jeden kod i co z tego może wyjść ;-) Pokazuje także, że programowanie ekstremalne nie musi się wiązać z ciągłym poganianiem programisty napiętymi jak barani wór terminami ;-) [a wręcz pomóc może rozluźnienie tych terminów]. Programiści gonieni terminami piszą "jak popadnie", czego efektem jest zazwyczaj kod spaghetti ;-P Przeglądy kodu i niewielka dawka planowania czasu [choćby dobrze znana lista "do zrobienia"] jednak się przydaje, podobnie jak tworzenie dokumentacji [choćby automatyczne].

Sprawy literacko-językowe

Tym razem poziom składu gazety znowu się nieco pogorszył. Wkradło się parę literówek i niepoprawnie odmienionych wyrazów. Najbardziej jednak wkurzał mnie brak niektórych ilustracji, lub powtórzenie tej samej ilustracji dwa razy. Nie wiem na ile jest to wina wydawcy, a na ile autorów artykułów, jednak niezależnie od tego obniża to ogólną ocenę czasopisma. W prasie fachowej takie rzeczy nie powinny się zdarzać.


Subskrybcja

Buttony
Button1 Button2 Button3 Button4 Button5 Button6 Button7 Dodaj swój button