Archive for the ‘Interesting Facts’ Category.

Visual Editor dla Eclipse

visual_editorSwego czasu do pisania aplikacji okienkowych w Javie (głównie z musu) korzystałem z NetBeans i jego edytora graficznego, jednak w przypadku ostatniego projektu na laboratoria postanowiłem przetestować pewną alternatywę, czyli Visual Editor dla Eclipse.

Visual Editor jest (jak większość dodatków do Eclipse) wtyczką, która ma na celu automatyczne generowanie kodu wykorzystującego bibliotekę okienek Swing. Niestety okazuje się, że mimo wersji 1.5 dla Eclipse Helios jest to raczej prototyp działający trochę na siłę niż poprawna wersja Release.

Jego największą wadą jest dość wysoka niestabilność, co potrafi owocować widokiem okienek jak na obrazku obok niemal co chwila (tak, korzystałem z wersji x64). Drugą rzeczą, która boli jest to, że zagnieżdżone ve_errorokienko zostawia swoja kotwiczkę jako osobny proces, który siedzi sobie jako zupełnie osobna aplikacja w pasku zadań i skutecznie blokuje możliwość użycia skrótu alt+tab, a w przypadku zmiany edytowanych okienek, powoduje wymienione crashe. Kolejną wadą, trochę drobniejszą, jest generowany kod, który, dla większej ilości komponentów i ich właściwości, niestety wygląda jak makaron  (chociaż organizacja na zasadzie statycznych wartości, tudzież singletonów jest dość fajnym rozwiązaniem.

Z zalet Visual Editora mogę wymienić chyba głównie to że jest, a co do samego wyglądu i integracji z Eclipse, to oprócz osobnego procesu dla okienka i crashów, komponuje się to w miarę wygodnie.

Tak przy okazji narzekania na tworzenie okienek w Javie – dlaczego nikt nie wymyślił obliczania minimalnego rozmiaru okna na podstawie minimalnych rozmiarów zawartych w nim komponentów, to naprawdę ułatwiłoby życie.

MSBuild, czyli windowsowy odpowiednik make

Korzystając z MS Visual Studio, czasami przydałaby się możliwość skompilowania całej solucji korzystając z wiersza poleceń (cmd/PowerShell), tak jak ma to miejsce w przypadku Unixowego make. Okazuje się, że można to zrobić, a służy do tego konsolowy programik MSBuild. Znajduje się on w jednym z katalogów:

C:\Windows\Microsoft.NET\Framework\[wersja] lub
C:\Windows\Microsoft.NET\Framework64\[wersja] (wersja x64).

W każdym z katalogów powyżej wersji 1.1 (czyli od 2.0) znajdują się kompilatory wszystkich języków zarządzanych oraz kilka dodatkowych narzędzi w tym właśnie MSBuild (dla ciekawych, kompilator cl.exe języka C++ znajduje się pod ścieżką [katalog Visual Studio]\VC\bin).

Pytanie: dlaczego porównałem MSBuild do make? Głównie ze względu na sposób użycia, czyli “odpal i idź na kawę” :). Aby zbudować solucję wystarczy, “być” w katalogu z plikiem .sln i uruchomić MSBuild, wtedy program skorzysta z domyślnych ustawień zapisanych w pliku solucji. Można dodatkowo podać jako argumenty

-p:”Configuration=Release;Architecture=x64″

wtedy cała solucja zostanie zbudowana zgodnie z ustawieniami Release pod platformę 64-bitową. Można również budować solucje z innego katalogu, aby to zrobić trzeba podać ścieżkę do pliku .sln.

Cały wyciąg budowania aplikacji opatrzony jest kolorami, więc nie trzeba specjalnie doszukiwać się poszczególnych etapów. Więcej informacji można znaleźć po następującymi linkami:

http://msdn.microsoft.com/en-us/library/ee662426.aspx
http://msdn.microsoft.com/en-us/library/ms164311.aspx

Kontrola rodzicielska

Kontrola rodzicielska w systemie Windows Vista, znana jako UAC, jest mechanizmem chroniącym komputer przed uruchamianiem niebezpiecznych programów. Za każdym razem, gdy użytkownik próbuje uruchomić aplikację, która ingeruje w rejestr, bądź próbuje zapisać coś na dysku UAC prosi o potwierdzenie wykonania tej czynności.

Z początku odnosiłem się do tego sceptycznie, ponieważ za każdym razem gdy coś robiłem, wyskakiwało okienko z prośbą o potwierdzenie. Dlatego też w pewnym momencie wyłączyłem tą usługę. Ostatnio jednak się nad nią ulitowałem i ją uruchomiłem. Teraz muszę przyznać, że jest warta tych komunikatów, ponieważ mając na pendrive’ie wirusa, sposób jest zarazić Vistę z uruchomionym UACiem, wyskakuje piękny komunikat odnośnie jego uruchomienia.

Pomimo, tego że na ludzką głupotę lekarstwa nie ma, polecam uruchomienie Kontroli rodzicielskiej w systemie, gdyż dzięki temu można przynajmniej dowiedzieć się nieco o niebezpieczeństwie czyhającym w programach :).

Optymalizacje

Kod który piszemy nigdy nie jest idealny, zawsze można coś poprawić, przyspieszyć. Dowiedziałem się również, że czasami jednak warto zostawiać kod taki jak jest, np. pętle for:
for(int i = 0; i < cos; i++)
ponieważ kompilator potrafi to zoptymalizować sam, a wszelkie próby działań na własną rękę mogą tylko zaciemnić mu kod. Postanowiłem poszukać co podoba się kompilatorowi msvc i natrafiłem na dość ciekawą stronę: link. Nie jest to może dokładnie to czego szukałem, ale jest to coś, co może się bardzo przydać. Postaram się zagłębić w tę lekturę w chwili wolnego czasu.

Książki za darmo

NVIDIA od jakiegoś czasu udostępnia książki na swojej stronie za darmo. Dotychczas w pełni ukazały się:

Dzisiaj NVIDIA udostępniła pierwsze trzy rozdziały kolejnych perełek, czyli GPU Gems 2. Kolejne rozdziały będą udostępniane po trzy, co tydzień, aż do 25 sierpnia, czyli do wielkiego wydarzenia jakim jest NVISION.

Myślę, że to wspaniały gest ze strony NVIDII, ponieważ te książki są doskonałym źródłem informacji dla ludzi zajmujących się programowaniem grafiki. Co prawda mam już książkę pt. Język Cg, ale pozostałych nie będę musiał kupować :).

SSE i SSE 2 w Visual 2008

Przeglądając opcje projektu w Visual C++ 2008 Express Edition natrafiłem na opcję, która umożliwia kompilatorowi użycie dodatkowych instrukcji procesora z zestawów SSE i SSE2. Niestety nie wiem, które co i jak kompilator może zoptymalizować, ale myślę, że warto ustawić tę opcję na minimum SSE. A nuż coś pomoże. Aby uaktywnić tę opcję należy wejść do opcji projektu -> C++ -> Code Generation -> Enable Enhanced Instruction Set.

Próba uruchomienia programu zoptymalizowanego pod instrukcje wyższego zestawu po prostu się nie powiedzie, ale w dzisiejszych czasach kiedy dostępny jest zestaw instrukcji SSE3, można sobie pozwolić na minimum SSE.

Sztuczny Device Lost w Viście

Zajmując się ostatnio moim silnikiem, natrafiłem na jedną bardzo ciekawą zaletę Visty. Otóż przypadkiem odkryłem jak sztucznie wywołać utratę urządzenia w DirectGraphics. Wystarczy do tego użyć Ctrl + Alt + Del, gdyż Vista w tym momencie przechodzi na ekran wyboru czynności, więc prawdopodobnie przejmuje całkowitą kontrolę nad urządzeniem, czego skutkiem (pewnie ubocznym) jest utrata urządzenia.

Mnie ta sztuczka się bardzo przydała, ponieważ dzięki temu wykryłem, że miałem problem z odzyskiwaniem urządzenia.

Clever

Fotka clever
Od jakiegoś czasu stacja komercyjna TVN emituje program o znaczącej nazwie “Clever – widzisz i wiesz”. Muszę przyznać, że jest on całkiem fajny. Prowadzący doświadczenia “profesor” Halama wyjaśnia zjawiska bardzo przystępnie (może trochę jak do dzieci) i są to ciekawostki warte uwagi. Wszystkie doświadczenia są dobrze zaprezentowane, z drobną dawką humoru. Myślę, że mogę polecić go każdemu :).

O wydajności

Reg spłodził ostatnio ciekawy artykuł o wydajności wczytywania tekstur. Bazuje on na teście, który on sam przeprowadził, co ciekawe, przy którym restartował kompa n-razy. Muszę przyznać, że inicjatywa, choć pracochłonna, na pewno się opłaciła, ponieważ po przeczytaniu artykułu, nie muszę się martwić o to, jak zoptymalizować wczytywanie tego typu plików. Mogę od razu powiedzieć, że najlepszym według mnie formatem będzie DDS z mipmapami generowanymi po załadowaniu (nie wczytywane z pliku) + własny VFS z kompresją danych. Wbrew podsumowaniu Rega nie zastosuję formatu JPEG, ponieważ nie lubię stratnej kompresji :).

Link do artykułu

PS. Więcej takich inicjatyw :).

Geek syndrome

Ostatnio na kanale wywiązała się ciekawa dyskusja na temat dziwnej choroby jaką jest Zespół Aspergera. Postanowiłem się przyjrzeć temu dziwnemu schorzeniu i natychmiast zauważyłem, że niektóre objawy idealnie pasują do mnie.

Oto kilka z nich:
– lubię kolekcjonować różne rzeczy (chociaż na to już się trochę uodporniłem),
– lekka aspołeczność, ale to raczej z przyzwyczajenia, ponieważ jestem jedynakiem,
– informatyka :),
– używam skrótów myślowych i ciężko jest mnie zrozumieć.

Pomimo tego, że kilka z objawów się zgadza, nie czuję, że jest ze mną źle, a przynajmniej mogę poszczycić się doborowym towarzystwem (Einstein, Newton). Niestety wadą tego jest, że nie zwalnia matury z polskiego ;).