2008-03-27

MacBook Pro i Cortland

Od około dwóch tygodni mam MacBooka Pro. Laptop jest bliski ideału: szybki, cichy, bardzo dobrej jakości ekran, miłe drobiazgi jak wbudowana kamera czy pilot na podczerwień i oczywiście Mac OS X. Jedyne czego bym jeszcze chciał, to nieco dłuższa praca na baterii - teraz wytrzymuje około 3.5-4 godziny.

Nie obyło się jednak bez zgrzytów: pierwszy egzemplarz który kupiłem miał plamkę przy prawej krawędzi wyświetlacza. Niewielką (jakieś 2-3 piksele), ale widoczną na jasnym tle - najprawdopodobniej uszkodzenie powłoki antyodblaskowej. Tutaj wielkie brawa dla Cortlandu - po trzech dniach od zgłoszenia dostałem nowego laptopa z idealnym ekranem. Dodatkowo drugi MacBook miał już w komplecie Leoparda (pierwszy tylko Tigera). Po pewnym czasie korzystania z nowego sprzętu zauważyłem, że zasilacz wydaje podejrzane dźwięki - dość głośne buczenie i trzeszczenie. Napisałem maila do Cortlandu (tak, jestem uciążliwym klientem) i bez jakichkolwiek problemów dostałem nowy zasilacz. Sprawia lepsze wrażenie, ale jednak nie jest tak bezgłośny jak iBookowy. Może po prostu ten-typ-tak-ma.

Podsumowując: wygląda na to, że jakość Apple to już nie to samo co 3 lata temu, kiedy kupowałem iBooka. Szkoda. Jednocześnie obsługa w Cortlandzie jest naprawdę świetna i mam nadzieję że w razie ewentualnych problemów (odpukać) będzie dalej tak samo.

2008-03-19

Komponent Spring jako ServletFilter

Nic odkrywczego, ale filtrów nie ma w przykładach zawartych w dystrybucji Spring i nie ma o nich słowa w Reference Documentation. Pamiętam że jakiś czas temu popełniłem takowy, ale parę dni temu chcąc znowu użyć tej samej konstrukcji nie pamiętałem szczegółów. Starzeję się. Dlatego, celem utrwalenia zdobytej (ponownie) wiedzy, powstał ten wpis.

Aby możliwe było użycie komponentu Spring jako filtru musi on implementować interfejs javax.servlet.Filter i to wszystko. Potem dopisujemy go w konfiguracji XMLowej lub adnotujemy jak każdy inny bean. Cała sztuczka jest w pliku web.xml aplikacji:

<filter>
<filter-name>nazwa</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

Klasa DelegatingFilterProxy będzie delegować wywołania metody doFilter(...) do beana o takiej samej nazwie jak nazwa filtra. Jeżeli chcemy, aby filtr miał inną nazwę, to trzeba dodać parametr targetBeanName:

<filter>
<filter-name>nazwaFiltra</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetBeanName</param-name>
<param-value>nazwaBeana</param-value>
</init-param>
</filter>

Należy pamiętać, że pomimo tego iż bean implementuje interfejs Filter, to jego metody init(...) i destroy(...) domyślnie nie są wywoływane. Aby to zmienić musimy ustawić w konfiguracji kontekstu Spring atrybut targetFilterLifecycle na true:

<bean id="nazwaBeana"
class="klasaBeana"
p:targetFilterLifecycle="true">
...
</bean>

2008-03-14

Wydajność ASUSa A696

Czytając recenzję ETENa Glofiisha X800 na stronie PDAclub.pl trafiłem na ciekawy test wydajności grafiki i procesora PDA. Wykorzystany do tego celu został odtwarzacz The Core Pocket Media Player i "standardowy" trailer Matrixa. W zamieszczonej tam tabelce nie ma ASUSa A696, więc nie pozostało nic innego jak przeprowadzić test samemu.

TCPMP ma kilka sterowników wideo i wyniki różnią się dość znacznie w zależności od wybranej wersji. W przypadku A696 najlepiej wypada Intel XScale, pozostałe dwa (DirectDraw i GDI) są około 20% wolniejsze. Dodatkowo na wynik testu wpływa to, czy PDA ma podłączony zasilacz czy nie - jak można się domyślić zasilany z baterii procesor nie działa z pełną mocą (jednak różnica w teście jest niewielka, około 5%). Testy przeprowadziłem na wersji 0.71 odtwarzacza, z podłączonym zasilaczem i z kartą pamięci SanDisk Extreme III 2GB. Każdy test był powtórzony 3 razy, w tabeli poniżej jest średnia uzyskanych wyników:

 z pamięci wewnętrznejz karty SD
Intel XScale334%316%
DirectDraw259%249%
GDI271%259%

Porównując powyższe wartości z tymi na PDAclub.pl widać, że A696 plasuje się wśród najlepszych PDA z procesorem Intel PXA270 416MHz - jedynie Palmax GPS ma lepszy wynik.

2008-03-09

CXF nie działa ze Spring 2.5.2

A konkretnie CXF 2.0.4-incubator nie działa ze Spring Framework 2.5.2 (w wersjach wcześniejszych jest w porządku). Powodem jest zmiana sposobu konfiguracji kontekstu Spring. Dotychczas w konstruktorze
ClassPathXmlApplicationContext(String[] configLocations, boolean refresh, ApplicationContext parent)
parametr configLocations mógł mieć wartość null - był w takiej sytuacji zastępowany pustą tablicą. W wersji 2.5.2 nie jest już zastępowany, a w metodzie setConfigLocations (wykorzystywanej przez powyższy konstruktor) następuje próba odczytania rozmiaru tablicy i rzucany jest wyjątek NullPointerException. Błąd został zgłoszony kilka dni temu (numer SPR-4531) i jak na razie nie ma reakcji ze strony autorów - pozostaje cofnięcie się do wersji 2.5.1.

[aktualizacja 2008.03.10]


Nieoceniony Juergen Hoeller zainteresował się tym bugiem - w dzisiejszym night buildzie wersji 2.5.3 ma być poprawiony. Rewelacja po raz drugi (pierwsza była tutaj).

[aktualizacja 2008.03.12]


Nie miałem czasu aby sprawdzić od razu, dopiero dzisiaj ściągnąłem najnowszy build. Oczywiście błąd jest poprawiony.

2008-03-02

Firefox 3

Zmieniłem na domowych komputerach domyślną przeglądarkę na Firefoxa 3 beta 3. Zarówno na Mac OS X jak i na Windows działa bez najmniejszych problemów. Co prawda nie wszystkie rozszerzenia zostały uaktualnione, ale najważniejsze dla mnie - Firebug - w wersji 1.1 beta działa z Firefoxem 3.

Głównym powodem migracji były testy szybkości, z których wynika że wersja 3 beta 3 jest około 2 razy szybsza od 2.0.0.12. Na Windows tego nie widzę, zapewne dlatego że komputer jest względnie szybki (Athlon 2500+), ale na dość leciwym iBooku (PowerPC G4 1 GHz) wzrost prędkości jest odczuwalny. Poza tym nowy Firefox przechodzi bezbłędnie test ACID2 i ma bardzo ładny domyślny temat na Mac OS X - wygląda na to, że na dobre pożegnam się z Safari.
© The Useful Pot To Keep Things In
Maira Gall