Spotkanie po latach

Wczoraj w programie telewizyjnym (BTW: zna ktoś coś lepszego?) wypatrzyłem
na TV 4 film z czerwonym kółeczkiem o 23:00: Żony cudzych mężów (nawet
Google nie wiele mi na temat tego filmu powiedziało). Fajnie się złożyło, bo
akurat dwudziesta trzecia dochodziła, a ja miałem ochotę na coś
nieprzyzwoitego. Wkrótce się jednak okazało, że program kłamie. Zamiast
zapowiadanego filmu był inny: Spotkanie po latach. Ale też z czerwonym
kółeczkiem. :-)

Pierwsze co się rzuciło w oczy/uszy to gra aktorska – nie powalała,
wzbudzając pierwsze skojarzenia z typowym porno, ale też szybko przestała
przeszkadzać. Za to była jakaś konkretna fabuła, może nic ambitnego, ale była
i trzymała się kupy. Na sceny erotyczne nie trzeba było czekać – w filmie
ich nie brakowało. Seks był udawany, ale bardzo przyjemnie pokazany. Dziewczyny
ładne, całkiem naturalne, tylko jedna ze sztucznym biustem. Czasem brakowało
jakiś ostrzejszych szczegółów, ale za to były pokazane inne, których bardzo
brakuje w zwykłym pornolu: pocałunki, rozbieranie, w ogóle jakieś przejścia
między fabułą a akcją. Właściwie jeszcze nie było filmu erotycznego
(wliczając takie jakich telewizja nie pokazuje) który spełniłby wszystkie nasze
oczekiwania w tych kwestiach, ale ten był blisko. Żonce też się bardzo
podobało.

Fajnie, że teraz na coś takiego trafiliśmy, bo ostatnim pornolem
z wypożyczalni byliśmy trochę zniesmaczeni. W sumie lepszy sztuczny, ale ładny
seks w TV, niż sztuczne panienki w najbardziej wyszukanych (w tym
filmie posuniemy się jeszcze dalej niż w poprzednich…
) scenach według
zupełnie niewyszukanego scenariusza (każdy oglądacz pornoli zwykle wie jaka
będzie kolejna scena, a pierwsza i ostatnia w jednej sesji są właściwie
pewne).

Committed revision 666.

Mam dosyć sztywnego trzymania się niektórych zasad dobrego stylu
programowania. Pisząc CJC starałem się
w ogóle nie używać zmiennych globalnych, bo przecież każdy wie, że tak trzeba.
No i dało się, jednak z tak zrobionego kodu nie byłem zadowolony. Mam tam
takie trzy obiekty, właściwie singletony, do których dostęp potrzebny był
w bardzo wielu miejscach. No i dostęp ten odbywał się właściwie na dwa
sposoby: albo referencja do takiego obiektu była przekazywana w konstruktorze i potem
zapisywana w atrybucie obiektu który tego potrzebował, albo dostęp odbywał się
przez inne obiekty (np.: self.plugin.app.screen) –
jedno i drugie nie wyglądały najlepiej. Standardowym, Javowe,
rozwiązanie, w postaci statycznej metody zwracającej instancję singletona,
niespecjalnie mi pasowało – to takie niepythonowe odwoływać się do
klasy, gdy tylko jej instancja jest potrzebna. Do tego to więcej pisania by
było, a przecież miałem API uprościć.

W końcu zdecydowałem się na rozwiązanie proste i skuteczne –
zrobiłem moduł cjc_globals z trzema zmiennymi globalnymi. I wszystko
byłoby dobrze, gdyby nie komunikat przy commicie, wyraźnie sugerujący, że
za moją decyzją stoi Zło: Committed revision 666.
;-)

Tańczący z pendrive’ami

Dzisiejsza moja robota wygląda mniej-więcej tak:

  • dłubanie w skryptach,
  • podpięcie pendrive’a,
  • cat usb.img > /dev/sdc,
  • wyciągnięcie pendrive’a, podpięcie do drugiej maszyny,
  • reboot,
  • przejrzenie komunikatów na konsoli,
  • dłubanie w skryptach,
  • przepięcie z powrotem pendrive’a,
  • cat usb.img

Jestem chyba przy setnej iteracji, ale już prawie działa
;-). No, prawdę mówiąc, to prawie działa już chyba od dwóch
godzin, tylko definicja prawie się zmienia… ;-).

Taki drobny „WTF?”

Dotychczas takie rzeczy spotykałem właściwie tylko na The Daily WTF,
jako fajne ciekawostki. Sam raczej unikałem grzebania w cudzym kodzie, najwyżej
zastanawiałem się jakie WTF przeżywają ci co przejmują lub kiedyś przejmą mój kod. ;-)

W obecnej robocie robię pewien system, w którym jako interfejs użytkownika
służy aplikacja webowa w Javie zbudowana na Strutsie. Do niedawna nawet mnie specjalnie
nie interesowało w jakiej to technologii i co to ten Struts. Ważne, że byłem
w stanie to uruchomić w swoim systemie i robiło to co trzeba – tworzyło różne pliki
i uruchamiało różne skrypty. Jednak ostatnio wyszło parę drobiazgów, które
należałby jak najszybciej naprawić.

Niestety Javowiec zajmujący się tą częścią kodu jest niedysponowany
(zdaje się, że się żeni) i nie dał rady tego zrobić, ani w najbliższym czasie
nie zrobi. Sprawa zrobiła się pilna, więc sam się za to zabrałem –
w sumie dobrze wiedzieć co w systemie siedzi. Najpierw poczytałem co to ten
Struts i gdzie mam szukać odpowiedniego kodu, potem zabrałem się za
poprawki…

Pierwsza rzecz banalna: zrobić stronę z komunikatem. Właściwie statyczną.
Znalazłem szablon wyświetlający coś podobnego. Skopiowałem. W środku znalazłem
miejsce na nagłówek i treść. Wypełniłem. Uruchomiłem aplikację… i treść jest,
bardzo brzydko ułożona (brak marginesów), ale jest. Nagłówka brak. Zaglądam do
źródła strony… kod paskudny, ale nagłówek jest. Zaglądam do CSS, a tam coś
takiego:

#titleBox p {
    background #FFFFFF;
    ....
    color: white;
}

No i miałem problem… co się stanie, jak zmienię kolor nagłówków na czarny…

Nie było źle… okazało się, że w całym interfejsie było dużo więcej opisów
niż wcześniej było widać, wyjaśniła się kwestia wolnej przestrzeni we
wszystkich formularzach. Ale oczywiście layout się popsuł, trudno to nawet było
wyjaśnić tą drobną zmianą koloru, ale poprawić było trzeba. No to podłubałem
jeszcze trochę w tym CSS i jest ok… ufff..

Potem chciałem dodać jeszcze parę komunikatów, w szczególność w przypadku
niepowodzenia pewnego skryptu… Zajrzałem do kodu a tam nie jest sprawdzany
kod wyjścia żadnego polecenia. A ja za cholerę nie wiem jak to ładnie w tym
Strutsie obsłużyć. Na razie poszedłem na łatwiznę i wszystkie niepowodzenia
przekierowuję na statyczną stronę z Operation failed. Przy okazji wyszła
kupa innych problemów… tym razem to już chyba tylko Javę można za to skląć,
ech…

Update: Zacząłem czytać dzisiejszy The Daily WTF i poprawiłem tytuł wpisu :-)

Konikowo

Dzisiaj, jak co tydzień, pojechaliśmy do Szałszy na konie. Tym razem bez
dziecka, a więc mogłem i ja się załapać na jazdę. Dostała mi się Bestia,
koń w sam raz dla początkującego. Co najlepsze, to tym razem trafił mi się
prawdziwy trening pod okiem instruktora (chociaż wciąż z naciskiem na
rekreację), zamiast masz konia i jedź.

Niestety instruktor nadal ma lepsze zdanie na temat moich umiejętności niż
ja i nalegał, żebym zagalopował. Zignorowałem tę prośbę, ale poza tym
słuchałem wszystkich poleceń (wykonanie ich zależało już nie tylko ode mnie –
koń miał czasem swoje zdanie ;-)). Posłuchałem też jak powiedział
teraz chwilkę ćwiczebnym. Gdy krzyknął i Bestia galopem naprzód
marsz
to już koń posłuchał, a mnie pozostało zatrzymać go
;-). Z drugiej strony, nie wykluczone, że w galopie bym sobie
spokojnie poradził. Po prostu dzisiaj nie miałem ochoty tego sprawdzać.

Po prawie godzinnej jeździe, większość czasu kłusem, zszedłem przyjemnie
zmęczony, ale nawet nie obolały (bardziej obolały byłem wcześniej, po czyszczeniu
Bestii). Ale boleć mnie jeszcze będzie… pojutrze.

Po koncercie

No to byliśmy wczoraj na koncercie tych czterech Pepiczków z Pragi, jak
sami siebie nazwali. Było świetnie.

Ich ubiory z czasów prawdziwych Beatlesów
wprowadzały właściwą atmosferę jak tylko pojawili się na scenie. Historyczny sprzęt
(gitary, wzmacniacze lampowe) dawał to właściwe, charakterystyczne brzmienie.
Wykonane przez nich piosenki nie odbiegały bardzo od oryginałów. Do tego
niesamowite poczucie humoru lidera zespołu (całkiem dobrze mówiącego po
polsku). To wszystko gwarantowało wspaniałą zabawę.

Żonka stwierdziła, że czuła się jakby
była na koncercie prawdziwych Beatlesów. Polecam!

Jak wszyscy, to wszyscy

Taki teścik (która religia jest dla Ciebie)

You scored as atheism.

You are… an atheist, though you probably already knew this. Also, you
probably have several people praying daily for your soul. Instead of simply
being „nonreligious,” atheists strongly believe in the lack of existence of a
higher being, or God.

atheism
79%
Satanism
58
Buddhism
58
Paganism
54
agnosticism
54
Christianity
29
Judaism
17
Islam
17
Hinduism
0