Po przesiadce na monitor typu widescreen (w moim przypadku 22-calowy) zaczyna się doceniać sens istnienia takiego wynalazku jak pasek boczny Windows. Na takim ekranie zmniejszenie obszaru przeznaczonego na okna nie tylko przeszkadza, ale wręcz pomaga w uniknięciu zeza rozbieżnego ;) A że przy okazji taki pasek może wyświetlać chociaż częściowo przydatne informacje – tym lepiej…
Zawsze jednak można chcieć więcej. Dlatego też przez te kilka ostatnich dni, kiedy to przygotowywałem do użytku dołączony do wspomnianego wcześniej monitora komputer (o czym pewnie wspomnę jeszcze później ;]), zainteresowałem się też tworzeniem swoich własnych gadżetów do umieszczenia na sidebarze. Zaprezentuję więc, co na ten temat odkryłem.
Jak wiadomo, pasek boczny Windows to właśnie skupisko takich gadżetów, które coś przydatnego pokazują i czasem są też interaktywne. Domyślnie mamy tu zegar, kalendarz, miernik zużycia procesora i pamięci, itp. Nie są więc one jakoś specjalnie zachwycające; lepiej byłoby mieć tutaj coś bardziej spersonalizowanego. A skoro umiemy kodować, to może dałoby się samemu taką wtyczkę napisać?… Okazuje się, że to całkiem proste – chociaż w nieco innym sensie niż mogłoby się z początku wydawać.
Prostota polega na tym, że tworzenie takich wtyczek nie wymaga programowania w klasycznym sensie. Są one bowiem głównie… zbiorami dokumentów HTML, czyli małymi stronami WWW. To, co widać na pasku bocznym jest zwyczajnie renderowane przez silnik przeglądarki IE7. (Pod tym względem pomysł przypomina trochę ActiveDesktop z Windows 95).
Naturalnie jest tutaj trochę dodatkowej roboty, polegającej m.in. na przygotowaniu manifestu, czyli dokumentu XML z opisem plików składających się na nasz gadżet – łącznie ze wskazaniem, który z plików HTML stanowi jego zasadniczą zawartość. Ponadto możliwe jest też utworzenie oddzielnego dokumentu (też HTML) z ustawieniami na gadżetu – sidebar udostępnia przy tym proste API, które pozwala na ich wczytywanie i zapisywanie. Podobnie jest z tzw. flyoutem, czyli częścią pluginu “wystającą” poza pasek boczny; tutaj też możliwe jest jej pokazywanie i ukrywanie.
Te bardziej zaawansowane funkcje wymagają już używania skryptów (np. JavaScript), ale nawet z niewielką ich znajomością można osiągnąć ciekawe efekty. Oto jeden z nich, jaki przy okazji poznawania tematu popełniłem – bardzo prosty gadżet, który umieszcza na pasku okienko na wpisywanie poleceń YubNuba (przydatnej usługi sieciowej, o której kiedyś pisałem):
Yubnub Gadget (43.1 KiB, 1,723 downloads)
Oprócz wsparcia dla wielkiej i wspaniałej wersji 10 biblioteki DirectX, system Windows Vista ma przynajmniej jeszcze jeden feature związany z programowaniem gier (i przy okazji z graniem w nie). Nie jest on aczkolwiek aż tak szeroko znany, chociaż wszystkie niezbędne narzędzia potrzebne do korzystania z niego są zawarte – nomen omen – w DirectX SDK.
To Eksplorator gier – małe, dosyć niepozorne, ale w gruncie rzeczy całkiem potężne narzędzie – w tym sensie, że potrafi ono czasami… zablokować dostęp do niektórych plików na dysku :) To aczkolwiek robota kontroli rodzicielskiej, czyli funkcji bardzo ściśle z wspomnianym Eksploratorem związanej. Ale po kolei.
Eksplorator gier (dostępny przez Start > Gry) to program, za pomocą którego możemy przeglądać gry zainstalowane na naszym komputerze. Prezentuje on nam ich nazwy, loga, gatunki, wymagania sprzętowe (w postaci Indeksu wydajności Windows), klasyfikację treści (wymagany wiek, zawartość przemocy, wulgaryzmów, itp.) i oczywiście pozwala także rzeczone gry uruchamiać – o ile nie zabrania tego ewentualna kontrola rodzicielska. Niby proste, chociaż na pierwszy rzut oka można by przypuszczać, że aplikacja ta dysponuje jakąś sztuczną inteligencją lub zdolnościami paranormalnymi. No bo skąd właściwie bierze ona te wszystkie informacje?…
Prawda jest naturalnie taka, że wszystkie te dane muszą być podane przez twórców gier. W tym celu należy stworzyć tzw. Game Definition File (GDF), który jest plikiem XML opisującym różne parametry gry. Do niego możemy też dołączyć kilka grafik, a następnie całość należy zlinkować jako zasoby (resources) do jakiegoś pliku wykonywalnego – .exe lub .dll. Część tych czynności jest wspomagana przez Game Definition File Editor – niewielkie narzędzie dostarczane wraz z DirectX SDK począwszy od zeszłego roku. Potrafi ono mianowicie wyprodukować skrypt zasobów (plik .rc), który możemy dołączyć np. do projektu w Visual C++, skompilować do .res i z linkować z naszą grą.
Lecz niestety nie jest to koniec zabawy :) Cały ten system, dzięki któremu Eksplorator posiada informacje o zainstalowanych grach, działa częściowo w oparciu o COM, a sama gra wymaga rejestracji w systemie w dość specjalny sposób, zanim będzie ona widoczna w programie. Ten sposób spokojnie można nazwać “ręcznym”, bo obejmuje on:
IGameExplorer
.VerifyAccess
z podaniem pliku GDF.AddGame
z kilkoma parametrami, m.in. wspomnianym plikiem i ścieżką do katalogu instalacyjnego gry.Urocze, prawda? ;-) Żeby było śmieszniej, wszystkie te czynności powinny być wykonane w trakcie instalacji gry (a dokładniej: na sam jej koniec), co wymaga intensywnej grzebaniny w używanym programie instalacyjnym (w celu wywołania funkcji z pomocniczej biblioteki DLL) lub po prostu napisania małego programiku, który zostanie odpalony na końcu setupu i wszystkim się zajmie. O ile mi wiadomo, ani InstallShield, ani Windows Installer, ani freeware’owy Inno Setup nie wspierają natywnie procesu rejestracji gier w podobny sposób jak chociażby instalacji czcionek w systemie.
“A więc po co to wszystko?”, można zapytać. Ano chociażby po to, żeby nasza cudna produkcja jakoś się wyróżniała :] Obecnie gry retailowe w większości rejestrują się Eksploratorze, lecz z pewnością czyni tak mniejszość gier typu casual czy share/freeware. Możemy więc choć trochę zabłysnąć w oczach przyszłego użytkownika (chociaż zasadniczo zalecam świecenie innymi zaletami).
Na koniec – jeśli zdecydujemy pobawić się całym tym mechanizmem – warto pamiętać o tym, że Eksplorator gier to rzecz istniejąca jedynie na Viście, więc tylko na tym systemie powinniśmy przeprowadzać proces rejestracji.
Wszyscy wiedzą, że przesiadka na Vistę ma jedną niezaprzeczalną zaletę. Jeśli mianowicie dysponujemy odpowiednią kartą graficzną, to możemy cieszyć się całym bogactwem Shader Model 4 oraz dziesiątej wersji DirectX. Nadal jednak niewiele gier posiada jakieś efekty (oczywiście w(y)łączalne) uzyskiwane przy pomocy nowej wersji biblioteki. Najwyraźniej Microsoft nieumyślnie wpadł tutaj w rodzaj błędnego koła, które zapobiega powszechnemu wykorzystaniu DirectX 10.
Nie pomaga tu też za bardzo specjalna wersja “dziewiątki”, czyli tak zwany Direct3D 9Ex. Cóż to za zwierz?…
Jest to mianowicie pewne rozszerzenie znanej i lubianej wersji biblioteki, które wprowadza nowe możliwości, częściowo zbieżne z tym, czego można doświadczyć w D3D10. Wśród nich mamy chociażby:
pSharedHandle
. Był on opisany jako zarezerwowany i należało w jego miejsce przekazywać NULL
. Rezerwacja ta jednak nie przepadła i w 9Ex jest on wykorzystywany do współdzielenia zasobów między urządzeniami – nawet takimi, które są w oddzielnych procesach. Mogę sobie wyobrazić zastosowanie tego mechanizmu chociażby do przełączania trybów graficznych bez konieczności ponownego tworzenia wszystkich tekstur, buforów, itp.IDirect3DDevice9Ex
. Jest wśród nich na przykład WaitForVBlank
, służąca do ręcznej synchronizacji pionowej.Wszystkie te możliwości prezentują się całkiem nieźle. Żeby jednak z nich korzystać, muszą być spełnione dwa warunki. Po pierwsze, sprzęt musi wspierać tak zwany WDDM (Windows Device Driver Model), co w przypadku popularnych kart graficznych dotyczy z grubsza tych, które udostępniają Shader Model 3.
A drugi warunek?… Niejako wynika on z pierwszego, bowiem WDDM jest częścią systemu Windows Vista. Aplikacje wykorzystujące Direct3D 9Ex będą więc działały wyłącznie na tym systemie. To pewnie trochę zniechęcające, prawda? Ale cóż, Microsoft próbuje jak może ;-)
Nie ma systemów bezproblemowych, więc po kilkutygodniowym “miodowym” okresie z Vistą zdarzył mi się w końcu pewien drobny problem. Nie był on specjalnie kłopotliwy i w gruncie rzeczy należał do zabawnych… gdyby nie to, że zdecydowanie zbyt dużo działo się tu samo.
Zacznijmy od tego, że – jak powszechnie wiadomo – w zasobniku systemowym (system tray) widoczne są między innymi ikonki dotyczące dźwięku i głośności oraz sieci i łączności. Ta pierwsza pokazuje z grubsza aktualną głośność – lub ewentualne wyciszenie, zaś druga stan sieci i jej aktywność. Dobrze jest więc mieć je na wierzchu.
Dlatego też niespecjalnie spodobało mi się, gdy pewnego dnia podczas uruchamiania systemu nie pojawiły się one na pasku tak jak zwykle. Ponieważ ich widoczność można kontrolować, otworzyłem okienko Właściwości paska zadań, lecz ku mojemu zdziwieniu odpowiednie pola wyboru okazały się nie tylko odznaczone, ale też… nieaktywne.
Oczywiście standardowe magiczne inkantacje stosowane w takich wypadkach – czyli restart systemu oraz sprawdzenie, czy wszystkie aktualizacje są zainstalowane – nie przyniosły rezultatu. Podobnie konsultacja z bardziej doświadczonymi użytkownikami systemu (cześć Asmodeusz :)) – głównie dlatego, że perspektywa przywracania stanu komputera sprzed tygodnia nie przedstawiała się szczególnie zachęcająco :)
Tym czego nie zrobiłem, było przeszukanie zasobów Internetu w poszukiwaniu rozwiązania. Okazało się to jednak zbytecznie, że problem ten naprawił się sam, i to nawet nie bardzo wiadomo kiedy. Przypadkiem zajrzałem po prostu ponownie do okienka Właściwości paska zadań i menu Start, żeby stwierdzić, iż pola wyboru Głośność i Sieć są wprawdzie nadal oznaczone, ale już jak najbardziej dostępne.
Z jednej strony to dobrze, że problemy które pojawiają się nagle i nie wiadomo skąd, nie wymagają samodzielnego rozwiązywania. Z drugiej strony wypadałoby wiedzieć, jakie są ich przyczyny. Tego nie udało mi się ustalić, ale wykonana poniewczasie analiza wyników wyszukiwania w sieci wykazała, że w razie nawrotów choroby należy wykonać następujące kroki:
IconStreams
oraz PastIconStreams
, aż szukana fraza nie będzie już występowała w Rejestrze.Cóż, jeśli genialna Vista potrafiła to wszystko wykonać z własnej inicjatywy, to wypada tylko być pełnym podziwu :) Podejrzewam jednak, że zarówno w tajemnicze pojawienie się, jak i zniknięcie problemu, zamieszane są nieznane siły wyższe, których pochodzenia nigdy nie poznamy. Są po prostu takie rzeczy, które się nie śniły filozofom i informatykom – zwłaszcza w odniesieniu do Windows ;P
Po tygodniu używania systemu operacyjnego nazwie Windows Vista (w wersji Home Premium) mogę, jak sądzę, opisać swoje pierwsze wrażenia. Wbrew licznie powtarzanym opiniom i ostrzeżeniom okazało się, że te dziesięć miesięcy, które minęło od czasu premiery, wystarczyły, by system ten nadawał się już do używania na zupełnie normalnych komputerach.
Dwa najczęściej pojawiające się stwierdzenia na temat Visty to prawdopodobnie: bardzo duże wymagania co do sprzętu, “odpłacone” niską wydajnością oraz paranoiczny wręcz poziom zabezpieczeń obecnych w systemie, uniemożliwiający zrobienie czegokolwiek bez ciągłego, dodatkowego potwierdzania swoich zamiarów. Opinie te nie są oczywiście całkiem wyssane z palca, ale ich bezsprzeczna prawdziwość jest według mnie wysoce wątpliwa.
Vista wymaga oczywiście od systemu więcej niż jej poprzednik, lecz nie są to różnice aż tak drastyczne. Rzeczywiście pamięć operacyjna rzędu 1GB to rozsądne minimum, lecz tak naprawdę podobna jej ilość jest niezbędna, by wygodnie pracować także w Windows XP. Empirycznie stwierdzam bowiem, że system wraz z normalnym pakietem aplikacji działających w tle zajmuje w przypadku Visty tylko ok. 200MB RAMu więcej. Taki wzrost w ciągu 6 lat – które w świecie IT są całą epoką – to chyba nie jest bardzo dużo?…
Swego czasu głośno było też o tym, iż Vista wymaga karty graficznej wspomagającej wyświetlanie grafiki 3D do zwykłego działania. No cóż, ona nie tylko jej wymaga (co dzisiaj chyba nie jest zbyt wygórowanym żądaniem), ale też całkiem poprawnie wykorzystuje. Skutek jest taki, że GUI – mimo że “na oko” jest bardziej skomplikowane: te wszystkie cienie, animacje “rozdymania”, itd. – wyświetla się szybciej, a czas odpowiedzi jest wyraźnie niższy. Naturalnie jednak mógłbym to złożyć na karb faktu, że moja Vista jest świeżutka niczym trawka na wiosnę, a XP najlepsze miesiące ma już za sobą… A swoją drogą muszę też przyznać, że wygląd stylu interfejsu nowego systemu całkiem mi odpowiada. O ile Lunę (styl Windows XP) wyłączyłem właściwie natychmiast jako zbyt cukierkową, o tyle Aero wydaje mi się zgrabne i spójne. Co ważne jego kolorystykę można łatwo dopasować i trochę przeszkadza jedynie niezmienna czerń paska zadań.
A co z przeładowaniem mechanizmami bezpieczeństwa? Otóż na początku faktycznie mogą dać się one we znaki. Zwłaszcza w trakcie doprowadzania systemu do stanu używalności, czyli instalowania niezbędnych programów. System będzie bowiem prosił o potwierdzenie uruchomienia każdej aplikacji instalacyjnej – lecz na tym koniec; na pewno nie jest prawdą, że klikania wymaga każda zmiana dokonywana np. w Rejestrze. Poza tym mechanizm ten można oczywiście łatwo wyłączyć (Panel sterowania > Konta użytkowników > Kontrola konta użytkownika), a potem – jeśli bardzo chcemy – włączyć ponownie, gdy już zakończymy niezbędne czynności przygotowujące system do pracy. Sam aczkolwiek pozostawiłem ostrzeżenia permanentnie wyłączone. Jeśli bowiem przez pięć lat “nie udało mi się” popsuć Windowsa XP, to raczej nie potrzebuję aż takiej troski :)
Pozostaje jeszcze kwestia kompatybilności wstecz, która też najwyraźniej jest rozdmuchana. Przykładem jest choćby liczący sobie ponad dwa lata modem kablowy, który bez problemu zainstalowałem z użyciem sterowników przeznaczonych dla… Windows 2000. Zaś jeśli chodzi o programy, to sprawa zgodności wyskoczyła jedynie w trakcie instalacji Visual Studio 2005 i to od razu z sugerowanym przez system rozwiązaniem (którym była instalacja SP1), podanym w gustownym okienku komunikatu. I chociaż nadal nie lubię aplikacji, które starają się myśleć za użytkownika i robią mnóstwo rzeczy za jego plecami, akurat ten przypadek “inwencji” systemu oceniam jak najbardziej pozytywnie. W końcu unikanie problemów jest zawsze w naszym interesie.
A z Vistą tych kłopotów – wbrew obiegowym opiniom – nie ma znów, jak widać, aż tak wiele… Istnieje aczkolwiek niezerowe prawdopodobieństwo, że kiedyś przekonam się, iż jest inaczej ;P Cóż, miejmy nadzieję, że to tylko niczym nieuzasadniony pesymizm :)