Ci tłumacze…

W freeciv, jak i w oryginalnym Civilisation, można budować cuda świata, w trybie poszerzonym o cuda nowożytne. I tak można zbudować Kompanię Handlową A.Smith’a, Wyprawę Darwin’a, Tamę Hoover’a, College Isaac’a Newton’a, Katedrę J.S. Bach’a itp., ale za to Wieżę Eiffla, Pracownię Leonarda, Wyprawę Magellana i Teatr Szekspira. I, o dziwo!, Obserwatorium Kopernika ;)

Kto czuje że ma odpowiedni autorytet żeby pójść się czepiać?

Sąsiedzi

Z dołu nadlatuje coś co chyba teoretycznie ma być muzyką. Właściwie słyszę linię basu. Jeden takt, składający się z trzech dźwięków, powtórzony kilka razy. Chwila przerwy. To samo od początku. Przypomina mi to odcinek „Świata według Bundych”, w których cała rodzinka przebrała się za Village People i w kółko grali jeden kawałek, bo tylko ten potrafili. Publiczność oczywiście wkrótce szlag trafił. Mnie też chyba coś trafi.

Sobotanoc

Wczoraj w nocy sąsiedzi z parteru urządzili sobie IMPRĘ. Taką z gatunku „darcie mord, tamtamy i brzęk tłuczonych butelek”. W pewnym momencie usłyszałem jak jeden z yteligentuf zaczął coś perorować: „(…) kurwa (…) kurwa no (…) kurwa (…)” [wyciąłem fragmenty nieistotne, zresztą bardzo krótkie]

Trochę po północy nadeszła tak-jakby-burza. Lunął deszcz i na chwilę darcie mord ustało. Deszcz przestał padać i darcie mord, tamtamy i brzęk tłuczonych butelek powróciły. Trochę potem znów spadł deszcz i znów na chwilę się uciszyło.

Podejrzewam, że nie mogę w takiej sytuacji powiedzieć „Boże! Widzisz to i nie grzmisz?” :>

Update: czas na śniadanie ;) A potem freeciv! Chyba znów się uzależniłem…

Sytuacja Awaryjna™

Przedmuchanie wiatraczka średnio pomogło. Parę razy mi się wyłączył (wiatraczek zaczyna skrzypieć -> tarcie i te sprawy -> spowolnienie wiatraczka -> PANIKA! AAAA!!! COŚ SIĘ MOŻE POPSUĆ!! WYŁĄCZAM KOMPUTER!!!) Po którymś restarcie nie zastartował init(1). Po następnym restarcie z zapasowym jądrem zaczęły wyskakiwać ostrzeżenia z reiser4. Uhm… Poważna sprawa. Szybki backup zmian od poprzedniego backupa (czyli od poprzedniego wieczora), dodatkowo przerzucenie na komputer mamy kilkunastu GB, których nie miałem cierpliwości backupować regularnie. W trakcie operacji wyłączył się kolejne parę razy ;) Jak na razie „ruska metoda” – łup! w obudowę – jakoś działa ;) fsck.reiser4 zapełnił lost+found 86 plikami, 3 wpisy w katalogach zostały usunięte jako celujące w nicość (w tym /etc/motd – heh). Po ponownym zamontowaniu jako rw wykonanie ls / spowodowało śliczny kernel panic ;) Widocznie jakieś cache nie zostało odświeżone czy cuś, fsckowanie głównej partycji to nie byle co, a po restarcie działa jak na razie dobrze.

fsck.reiser4 był pisany chyba przez jakiegoś Japończyka i komunikaty nie zawsze są bardzo garamtyczne, a już w ogóle rozwalił mnie zwrot „cleanuping” ;)

A jednak Windows lepszy! ;)

Wróciłem z biura, zasiadłem przy komputerze cały uradowany, że w końcu udało mi się zlokalizować reanimowany projekt Kalyxo (pod nazwą Ekhis), a tu słyszę, że wiatraczek znów wydaje jakieś mózgowiercące dźwięki. Cóż, chcąc niechcąc musiałem wyłączyć sprzęt i dokonać rytualnego przedmuchania karty graficznej (wydłubałem z wiatraczka ogromny kłąb kurzu – nic dziwnego, że się męczył).

I tu właśnie pojawia się niezaprzeczalny atut Windows – o wiele szybciej się zamykają niż Linux ;)

Lokalny genericsowy guru przemawia ;)

Co powiecie na klasę, która bierze Collection<?>, czyli dowolną kolekcję zupełnie dowolnych obiektów, i owija ją tak, żeby wyglądała jak Collection<T> gdzie T jest pewnym konkretnym typem (generycznym, rzecz jasna), do tego niekoniecznie występującym w pierwotnej kolekcji? Konwersja jest oczywiście dokonywana „w locie” i jest ekstremalnie niewydajna dla operacji innych niż iteracja ;) Klasa przyjmuje dwa generyczne parametry: typ „źródłowy” i typ „docelowy”; ignoruje wszystkie obiekty inne niż typu „źródłowego” a obiekty tegoż typu przerabia za pomocą obiektu pewnej klasy pomocniczej na obiekty typu „docelowego”.

Jeszcze muszę napisać wersję dla Map.

Albo co powiecie na klasę Parameters – poszerzone Properties, która to klasa może przechowywać wartości dowolnych znanych jej typów dokonując dowolnej konwersji pomiędzy nimi, a ponadto może zarezerwować niektóre klucze do specjalnej walidacji? Na przykład: wstawiamy pod danym kluczem wartość jako Integer a potem wyciągamy tą samą wartość spod tego samego klucza jako String i dostajemy ładnie przerobioną liczbę w postaci ciągu znaków. Inny klucz rezerwujemy jako nasz specjalny i mówimy, że może przechowywać tylko liczby, do tego z określonego przedziału. Może nie wyląda na nic specjalnego, ale półtora dnia się głowiłem jak to zrobić, żeby było jako-tako elegancko :]

Czy to nie wygląda przerażająco?

public <T> void setValue(Class<? super T> ct, String key, T value) throws ParametersException;

public <T> T getValue(Class<? extends T> ct, String key, T ifNull) throws ParametersException;

Jestem z siebie dumny ;)