Kiedy ArrayList to nie ArrayList

April 16th, 2010

Bawiąc się serializacją obiektów do XML trafiłem na XStream. W przeciwieństwie do standardowej pary XMLDecoder/XMLEncoder serializuje wszystkie pola a nie tylko te które posiadają gettery/settery. Generowany XML jest także zdecydowanie bardziej przejrzysty:


<?xml version="1.0" encoding="UTF-8"?>
<java version="1.6.0_13">
<object class="TestClass">
<void property="text">
<string>żółć</string>
</void>
<void property="check1">
<boolean>false</boolean>
</void>
<void property="check2">
<boolean>false</boolean>
</object>
</java>

vs

<TestClass>
<text>żółć</text>
<check1>false</check1>
<check2>true</check2>
</TestClass>

Natrafiłem jednak na problem – XStream nie potrafił zapisać zwykłej listy, a przynajmniej ignorował zawartość:

<select class="java.util.Arrays$ArrayList">
<a/>
</select>

Na ten sam problem trafił już wcześniej Jim Barritt i udało mu się znaleźć przyczynę . Jak się okazało lista zwracana przez Arrays.asList() to nie zwykłe java.util.ArrayList ale zupełnie inna klasa o nazwie ArrayList będa inner class w java.util.Arrays. XStream do serializacji używa wielu rożnych konwerterów i niestety nie wie, że CollectionConverter powinien być użyty także dla tej klasy. Niestety dla mnie to oznacza dyskwalifikację XStreama -  nie mam czasu szukać przyczyny ewentualnej błędnej serializacji.

Profesjonalne cięcie XHTML część 2

March 3rd, 2010

Jak się okazało klient postanowił dalej korzystać z super specjalistów opisanych tutaj Profesjonalne cięcie XHTML . Tym razem domagałem się, żeby dostarczone pliki HTML się walidowały. Najwyraźniej popełniłem błąd. Teraz zamiast wielokrotnie użytego tego samego id w dokumencie i takich reguł css:

#center_box_advice_desc {
 width:180px;
 position:absolute;
 left:115px;
 top:30px;
 color:#5C5C5C;
}

otrzymałem kod gdzie wszystkie id są unikalne a reguły wyglądają tak:

#center_box_advice_desc,
#center_box_advice_desc_1,
#center_box_advice_desc_2,
#center_box_advice_desc_3{
 width:180px;
 position:absolute;
 left:115px;
 top:30px;
 color:#5C5C5C;
}

Email w formacie HTML

February 11th, 2010

Osobiście uważam pocztę w HTMLu zamiast jedynego słusznego czystego tekstu za wynaturzenie, podobne do odpowiadania nad cytowanym tekstem ale niestety czasem nie ma to żadnego znaczenia. Więc jeśli już ktoś was do tego zmusi kilka rad: Read the rest of this entry »

Valgrind znajduje wycieki pamięci w programach uzywających GLib

December 19th, 2009

Chcemy sprawdzić swój program i widzimy coś takiego:

#valgrind --leak-check=full ./a.out
==19197== 992 bytes in 2 blocks are possibly lost in loss record 9 of 10
==19197==    at 0x4C213A6: memalign (vg_replace_malloc.c:532)
==19197==    by 0x4C21402: posix_memalign (vg_replace_malloc.c:660)
==19197==    by 0x7ADFD80: ??? (in /lib/libglib-2.0.so.0.2200.3)
==19197==    by 0x7AE1622: g_slice_alloc (in /lib/libglib-2.0.so.0.2200.3)
==19197==    by 0x7A9E731: g_array_sized_new (in /lib/libglib-2.0.so.0.2200.3)
==19197==    by 0x400B73: iowait_init (iowait.c:6)
==19197==    by 0x400DFF: main (main.c:7)

Read the rest of this entry »

Poprawianie błędnej wartości sekwencji

August 14th, 2009

Wczoraj, podczas refaktoryzacji starego kodu, przy wstawianiu wierszy do tabeli otrzymałem następujący błąd:

ERROR: duplicate key violates unique constraint “mytable_pkey”

Wydawało mi się to dziwne, w końcu struktura tabeli była następująca:
Read the rest of this entry »

Zend_Form_Multi – dodawanie opcji

August 11th, 2009

Bawiąc się Zend_Form ze zdziwieniem zauważyłem, że wygenerowanie comboboxa z tysiącem elementów trwa aż 150 ms. Ze zdziwieniem okazało się że jest identycznie jak w przypadku QuickForma – wszystkie opcje są przetwarzane pojedynczo, pod kątem ewentualnych … tłumaczeń. Odpowiedzialny fragment: Read the rest of this entry »

Integracja/Automatyzacja

July 30th, 2009

Komputery są po to by robić różne nudne rzeczy za nas. Przykładowo jeśli mają być przesyłane dane z jednego systemu do drugiego to powinno się to dziać automatycznie. Okazało się, że mimo istnienia cudownej prezentacji, która zapewnia jak przydatny jest zewnętrzny system nikt dotychczas nie integrował go ze swoim oprogramowaniem. Dlatego wybór technologi pozostawiono nam. Przedstawiono także przykładowy plik XML z danymi. Uznałem, że nie ma sensu bawić się w jakieś XMLRPC czy jakieś inne kobyły, wystarczy, że pliki xml będą przesyłane jako załączniki na wybrany adres.
No i są przesyłane. Nawet są prawidłowo przetwarzane przez nasz system. Więc w czym problem? Te maile są wysyłane … ręcznie. Na 3 maile – 3 różne godziny wysłania i 3 … różnych nadawców …

W sumie nie powinienem narzekać – przynajmniej po naszej stronie nikt nie musi już codziennie wgrywać tych plików xml za pomocą formularza. Wiwat automatyzacja.

Profesjonalne cięcie XHTML

July 23rd, 2009

W sumie to nie mój problem, ja to tylko podpinam, ale:

Nieustannie rozwijamy się i [..] wdrażamy nowinki technologiczne

Widzę bardzo duże możliwości do rozwoju. Read the rest of this entry »

Oko Kaszub

June 29th, 2009

Trasa jak zwykle tutaj . Jak widać zamiast pojechać bezpośrednio do celu szukałem trasy alternatywnej*. Sama wieża obserwacyjna jest jednak zdecydowanie za niska. Druty będące częścią konstrukcji także przeszkadzają w swobodnym podziwianiu panoramy.

*tzn. zgubiłem się. Na swoje usprawiedliwienie mogę dodać że most w Bolszewie jest nieprzejezdny, przynajmniej teoretycznie, bo mieszkańcy rozcięli blokującą dostęp blachę.

Czar dwóch kółek

June 7th, 2009

To mój trzeci dłuższy wypad po praktycznie 6 letniej przerwie. Link do trasy. Według Googli – 48 km, według mojego licznika – 64 :P Licznik jest zapewne bliższy prawdy, ponieważ pomiędzy zajezdnią autobusową a Źródłem Marii, a następnie z stamtąd aż do Alei Niepodległości nie miałem większego pojęcia gdzie się znajduje, więc nie jestem tego dokładnie zaznaczyć na mapie. Przestrzegam przed trzymaniem się blisko morza na odcinku Sopot-Gdynia – trasa jest po prostu ciężka a w niektórych miejscach po prostu znika bo ziemia się osunęła.
Wielkopolska w Gdyni to naprawdę niezły kawał … górki, nie to co np. króciutka Łostowicka. Kawałeczek za leśniczówką Gołębiewo jest ładny i długi asfaltowy zjazd. Moje dwa kółka osiągnęły całe 40km/h tylko pod wpływem grawitacji, gdyby nie zakręty może udało by się uzyskać więcej. Albo wręcz przeciwnie, miałbym kolizję z sarną akurat przebiegającą na końcu tego odcinka =). Kiedy w końcu dojechałem do Oliwy naprawdę cieszyłem się z widoku cywilizacji, a moją uwagę zwróciło niecodzienne rozwiązanie komunikacyjne. A biorąc pod uwagę, że licznik łącznie pokazuje całe 160 km widać, że jazda na rowerze nie wymaga absolutnie żadnej kondycji. Choć pewnie wiekszość ludzi przejechała by tą trasę szybciej niż w 4 godziny.

Wyprawa wspomagana przez “Helloween – As Long As I Fall” w cokolwiek dziwnej wersji
zgrabnie zmontowanej ze scenami z bliżej nieustalonego anime z gatunku “magical girls” (sic!)