poniedziałek, 28 grudnia 2009

Szczyt wszechrzeczny krokiem raźnym nadchodzący...

Sława!

Koniec roku nam się zbliża, i jak to zwykle od lat nastu, na przełomie lat (roków?) miejsce mieć swe będzie trójkowy Top Wszechczasów. Niestety, muszę przyznać, że od odejścia red. Marka Niedźwiedzkiego, z roku na rok, mam co raz więcej zastrzeżeń, a może nawet i niesmaku, co do szczegółów jego realizacji. Ściślej mówiąc, do doboru propozycji w "zestawie do głosowania". Jest tam tyle pozycji dla mnie osobiście niezrozumiałych i co najmniej dziwnych (o które podejrzewam w dużej mierze red. Stelmacha - którego swoją drogą ostatnio, niestety, słucha mi się z coraz większą irytacją), że nawet poważnie się zastanawiałem nad bojkotem tegorocznej edycji. Cóż, może jak tym razem nie zapomnę, to mi się skrobnie parę gorzkich żalów do red. Barona.

W każdym razie, na razie, topiąc smutki w szklanecce... oranżady o smaku landrynkowym, postanowię sobie (i Szanownym Czytelnikom, o ile są takowi ;)) przedstawić pięć (no, sześć) utworów, na które bym zagłosował, gdyby były w zestawie, albo gdyby mi się chciało głosować listem/kartką pocztową.

Na pierwszy ogień pozycja z jednej z moich ulubionych płyt, a która, nie wiadomo dlaczego, została usunięta z propozycji. Panie i Panowie, Lemmy i Jego Mötorhead z utworem Ace of Spades:

W drugim szeregu podąża zaś utwór, co do którego nie mam większych złudzeń, że kiedykolwiek by się w takim zestawieniu w Polsce pojawił. A to dlatego, że jest on praktycznie nieznany, nad czym szczerze ubolewam. Dobrze, że chociaż dzięki umiarkowanemu sukcesowi innej piosenki, płyty tego zespołu są u nas do kupienia. A więc Héroes Del Silencio i Parasiempre:

Środkiem tego króciuteńkiego zestawienia niech będzie utwór, będący o ile dobrze pamiętam rekordzistą Poczekalni, dzięki któremu mogłem odkryć i docenić dźwięki produkowane przez stołeczną kapelę Riverside - Conceiving You:

Czwartym miejscem zadowoli się zapewne utwór, może nie przesadnie stary, aczkolwiek troszeczkę zapomniany. Dla mnie natomiast bijący inne dokonania The Cure, przecież świetne wielce, takie chociażby jak Lullaby czy On Friday I'm In Love na głowę. Jednym zdaniem - Ostatni Dzień Lata:

Na piątym zaś, ni cholery niezrozumiałe dla mnie, jakim cudem pomijane, zarówno w Topie Wszechczasów jak i w Polskim Topie, dwa utwory grupy Hey z genialnej płyty ?. Dla mnie pomijanie ich notoryczne, jest tym bardziej dziwne, że w zestawach trójkowych znajdują się znacznie gorsze (tzn. gorsze jak na Hey ;)) i mniej "sukcesowe" pozycje z innych płyt. A rozchodzi mi się oczywiście o ListAnioła (chociaż mógłbym tu umieścić każdą pieśń z zamieszczonych na wspomnianym albumie):

czwartek, 17 grudnia 2009

Cierpliwości cnotą obdarzeni wynagrodzeń zostali...

Sława!

Ponieważ tak się złożyło, że od jakiegoś czasu "technicznie" zajmuję się tak mało medialnymi, a do tego raczej dość dobrze powszechnie znanymi, rzeczami, o których to już tysiące, albo i miliony, słów powiedziano, to i nie dziwota, iż ostatnie wpisy takie raczej kulturalne. A, że i raczej szykują się prędzej kolejne w tej m(an)ierze (przynajmniej do czasu, aż, lelum polelum, mi radocha z komputra wróci ;)) niż o berach, bojkach i innych bitach, to coby smak przełamać, taka lekka wstaweczka wiadomościowa się dziś trafi.

Otóż, po miesiącach niecierpliwego oczekiwania, udostępniona została pierwsza z prezentacji jakie zostały zarejestrowane podczas tegorocznej Konferencji. Prelegentowi, kamerzystom, montażystom, dźwiękowcom i wszystkim innym osobom maczającym palce w Produkcji składam niniejszym podziękowania i gratulacje za wysokiej jakości materiał. Pozostałych natomiast szczerze namawiam do zapoznania się. Warto!

sobota, 28 listopada 2009

Taneczno-wokalne kratochwil doznawanie

Sława!

Ponieważ nie samymi bitami i bajtami człowiek żyje, to w ciągu kilkunastu ostatnich dni miałem niewątpliwą przyjemność, wbity w garnitur, zażywać krotochwil w przybytku kultury jakim jest nasza Opera na Zamku.

Na pierwszy kęs trafił balet Córka Źle Strzeżona. Jak ktoś ładnie to określił "taka ramotka", ale bardzo, bardzo przyjemna. Wszystko (no prawie, bo, zapewne ze względów lokalowych, niestety muzyka nie jest "na żywo") jest "jak trzeba" - porządne stroje, normalna scenografia, zgrabne baletnice ;) Jak w porządnym balecie gwiazdą przedstawienia jest główna solistka (tutaj wręcz stworzona do tej roli Ksenia Nałmiec), dzięki której można zrozumieć czemuż to takie uwielbienie dla nich wśród Rosjan płci męskiej... ;) Gwiazda ma porządne wsparcie w reszcie solistów (na szczególne pochwały według mnie zasługuje Władysław Gołowczuk w roli Alaina), a i "drugi plan" trzyma fason. Tak więc, nie zostaje mi nic innego, jak polecić, naprawdę warto!

Na drugi ząb zaś wzięte zostało danie bardziej wytrawne, mianowicie opera Paria Stanisława Moniuszki. Tym razem przedstawienie przygotowane w mniej "klasycznej" formie scenograficznej, ale trzeba przyznać, że pasującej i nie powodującej zgrzytania zębami. No i orkiestra gra. Gra, pod dyrekcją Warcisława Kunca, aż miło, muszę przyznać, że wcześniej mi nie znana opera, od strony orkiestrowej  zrobiła na mnie mocne wrażenie (kapitalna uwertura!). Od strony wokalnej też ciężko coś zarzucić, słuchało się bardzo fajnie, szczególnie dwóch głównych głosów męskich - Tomasza Kuka (tenor) w roli Idamora i Janusza Lewandowskiego (bas) w roli Akebara. Ba, nawet głosy damskie, za którymi generalnie (jak za większością wysokich dźwięków) szczególnie nie przepadam, wypadły dla mojego ucha bardzo przyjaźnie. Podsumowując, nie ma to tamto, jak kto jeszcze nie był, ten niech szykuje sobie czas i bilety. Przegapić po prostu szkoda.

niedziela, 8 listopada 2009

Morsem wystukane, rozpaczy pełne o odsiecz wołanie...

Sława!

Tak ze dwa piątki temu światło dzienne tego świata ujrzało nowe dziecko, nie ma co tego ukrywać, mojego ulubionego zespołu (taka miłość od pierwszego usłyszenia w trójkowym brumie), czyli Miłość! Uwaga! Ratunku! Pomocy! grupy Hey. Płyta jak najbardziej bardzo udana (choć dla mnie osobiście, na dzień dzisiejszy ciut słabsza od Echosystemu), pokazująca bardziej spokojną stronę grupy i słusznie zbierająca pochlebne recenzje tu i ówdzie (zresztą, czyż promujący singiel nie mówi sam za siebie?).

Właśnie, recenzje. To co mnie zaciekawiło, to wszechobecne stwierdzenie o jakiejś wielkiej i nieoczekiwanej odmianie stylu grupy, zupełnie... ...jak przy co najmniej trzech poprzednich płytach, a jakby dobrze poszperać, to może i przy choćby takiej Karmie by się takie słowa znalazły. Otóż, ja nie mogę się pozbyć wrażenia, że MURP jest taką poprawką po niezdanym egzaminie z muzyki. Czyli po płycie Music! Music!. Płycie pełnej dobrych piosenek (a jednej nawet genialnej), a jednak w całości ciężko strawnej. W wypadku MURP praca domowa jednak odrobiona wzorowo, nie tylko piosenki z osobna, ale i całość daje wiele frajdy ze słuchania. Więc szczerze z całego serca polecam.

P.S. - Swoją drogą ciekawy ten powrót grup rockowych do syntezatorów, niczym chociażby Queen jakieś trzydzieści lat temu. Całe szczęście, że Hey nie poszedł tak daleko jak Editors, którzy tak bardzo chcą być Joy Division, że na ostatnim albumie stali się New Order (acz, żeby nie było, nawet da się tego słuchać ;)).

P.S.2 - Przy okazji, niejeden recenzent nowego albumu Heya porównuje ich do Radiohead. Ja tam Radiohead nie trawię, więc pewnie dlatego bardziej jakoś taka Faza Delta mi się skojarzyła pokrętnie z Garbage ;)

P.S.3 - A ponieważ MURP powstał w miasteczku westernowym, to grzechem byłoby nie wspomnieć o najlepszym, inspirowanym westernami albumie rockowym - Ace of Spades...

P.S.4 - A tak w ogóle, kończąc post skrypty, czy Hey nagra jeszcze kiedyś tak genialną płytę jak Pytajnik? Mam cichą nadzieję, że tak.

środa, 9 września 2009

Antidotum na zatrucie Clupea harengus membras...

Sława!
Jeszcze zanim zaczął się boom i swoista moda, dzięki nieocenionym kolegom z liceum zacząłem korzystać z serwisu Nasza-Klasa. Mimo pewnych mniej lub bardziej upierdliwych niedostatków, korzystanie to miało więcej plusów niż minusów.
Niestety zarządcy tego serwisu przeczytali chyba o jedną gównianą książkę o markietingu czy innej psychologii tłumu za dużo i pojawiła im się dziwnie ostatnio popularna (patrzaj choćby Google czy inszy Microsoft, i wielu innych drobniejszych naśladowców) chęć uszczęśliwiania użytkownika (klienta) na siłę, bo jak wiadomo "klient gupi jest" (niestety, ale dla mnie głupi to są wyznawcy tej maksymy (minimy?)).
Tenże głupi klient ma obecnie używać nowej funkcji jaką jest niejaki "śledzik", czy mu ona do czegoś potrzebna czy nie. Rozumiem, że chce się promować swój nowy produkt, ale robienie tego w tak prymitywny i chamski, powiedzmy to szczerze, sposób przynosi raczej odwrotny skutek od zamierzonego.
Na nasze szczęście jednak właśnie "Ci głupi" użytkownicy znaleźli sposób na wyłączenie tego czegoś. Sposoby te możemy znaleźć choćby na blogu Mr Black Hat, gdzie serdecznie zapraszam.
Od siebie dodam tylko lekką modyfikację umieszczonego tam sposobu dla Opery. Otóż ja bym proponował raczej takie podejście: 
  1. Otwieramy edytor tekstowy, np. notatnik i wpisujemy: #sledzik_box{display:none;}
  2. Zapisujemy plik w dowolnej lokalizacji, o dowolnej nazwie, ale z rozszerzeniem .css (np. sledzikssie.css)
  3. Otwieramy Operę, wchodzimy na Naszą Klasę (wystarczy strona główna, bez logowania), klikamy prawym przyciskiem myszy i z menu wybieramy Preferencje dla witryny...
  4. Wybieramy zakładkę Wyświetlanie
  5. W polu Mój arkusz stylów podajemy ścieżkę do pliku stworzonego w punkcie 1.
  6. Naciskamy Ok, i po odświeżeniu strony śledzik nie powinien już się nam odbijać...

czwartek, 3 września 2009

Norweska śpiewająca iksińska...

Sława!

Tak zbierając się na napisanie czegoś bardziej konstruktywnego, postanowię sobie wspomnieć, że wyszła nowa wersja mojej ulubionej przeglądarki, czyli dziesiąta już Opera :)

Szczerze mówiąc nie wiem, czy ma coś szczególnego między poprzednią wersją, a tą. Ważne, że nadal fajnie mi się z niej korzysta.

sobota, 11 lipca 2009

Nie łaciate nadawanie oknom stylu...

Sława!

Dzięki nieocenionemu serwisowi Shell Extensions City dowiedziałem się o nowej inicjatywie twórców UxTheme Patch, czyli UxStyle. W przeciwieństwie do poprzedniego rozwiązania UxStyle nie dokonuje żadnych zmian w plikach systemu, natomiast działa jako usługa systemowa (podobnie jak bodajże StyleXp). Dzięki temu możemy się wreszcie rozkoszować bezpiecznie stylami wizualnymi w swoim systemie.

Jeżeli usługa nie uruchamia się po ponownym uruchomieniu komputera powinny pomóc następujące polecenia wydane z linii komend:

sc config uxpatch group= "File System"

sc config UnsignedThemes group= UIGroup

niedziela, 5 lipca 2009

Sen o Warszawie - Javarsovia 2009, subiektywnych wrażeń garstka

Sława!

Podróż odespana (pociąg-konferencja-pociąg) więc można wydobyć z siebie parę słów podsumowania tegorocznego wyjazdu na konferencję Javarsovia 2009, na którą to w ramach rewizyty wybrała się silna reprezentacja naszego JUGa (i Firmy przy okazji ;)). Może najpierw proste podsumowanie co się udało zdziałać:

  • spóźnić się dwie godziny (podziękowania dla PKP)
  • posłuchać jak zwykle porywającego Jacka Laskowskiego, tym razem o rumunach (butach, nie lokomotywach) ;)
  • być na następujących prezentacjach:
  • zjeść darmowy obiad
  • wkręcić się na wydrę (Podziękowania serdecznie dla Waldiego za "inspirację") na SPOINę i zintegrować się troszeczkę z chłopakami z Łodzi (życzymy sukcesu w reanimacji Łódzkiego JUGa! A i pardon za to piwo ;))
  • ograć Wycieczkę w Teksas Hold'ema ;)

Nie udało się niestety:

  • ograć Wycieczki w Teksas Hold'ema ;)
  • Być na pierwszym "cyklu" prezentacji (w nim sobie upatrzyłem Testy wspaniałe zdobywają Warszawę Szczepana Fabera)
  • Wygrać niczego (ale do tego jestem przyzwyczajony ;))
  • Uniknąć ostrzału kapslami przez Szalonego Barmana w trakcie SPOINy ;)

Teraz może troszkę bardziej o wrażeniach z samych prezentacji.

Takoż więc, na dzień dobry poszedłem posłuchać sobie o nowym GC, i było całkiem, całkiem. Udało się dowiedzieć trochę konkretów o czymś, czym z reguły zbytnio się człek nie interesuje jak nie musi. A techniczne szczegóły działania maszyny wirtualnej Javy jednak warto poznawać. Potem można, przy odrobinie szczęścia, uniknąć niezbyt miłych niespodzianek.

Następnie Paweł Szulc brawurowo opowiedział pokrótce o Wickecie. Co to jest, z czym to się je i w ogóle. Prezentacja przygotowana pod tych, co to albo nic o tym nie wiedzą, albo dopiero zaczynają wiedzieć, więc jak najbardziej dla mnie. Aż się nie chce wierzyć, że montowana po nocy tuż przed konferencją.

Poobiednią sesję zacząłem od prezentacji o Drools, głównie dla tego, że tytuł brzmiał jakoś najbardziej interesująco z propozycji na ten okres. Zarówno temat, jak i prowadzący, byli dla mnie anonimowi, więc szedłem trochę z duszą na ramieniu, i jak się okazało zupełnie nie potrzebnie. Bardzo ciekawy temat, fajnie zaprezentowany i kolejna pozycja na karteluszku pod kategorią "warto się kiedyś zainteresować".

Z wyborem kolejnego wykładu było równie ciężko, ale tym razem z innego powodu, wszystko zapowiadało się interesująco, zarówno kusiła kryptografia, jak i praca z odziedziczonym kodem. Ostatecznie najbardziej kuszący okazał się Waldek Kot (w dużej mierze dzięki bardzo ciekawej, niedawnej dyskusji na pl.comp.lang.java!) o wirtualizacji, i muszę przyznać, że jestem co raz bardziej na tak, jeżeli chodzi o prezentowane rozwiązania, bo robią wrażenie!

No i na koniec zdecydowałem się posłuchać o ewolucji architektury. Szczerze mówiąc, najmniej mi się podobało, i nie wiem na ile był to wynik zmęczenia, a na ile sposobu prezentacji tego tematu. Jeśli o mnie chodzi chyba trochę "za sucho" było, jakoś nie mogłem się do końca "wkręcić" i czegoś mi brakowało. Cały problem w tym, że za bardzo nie wiem czego, może jakiś przykładowych sytuacji do zobrazowania problemów?

Podsumowując, wyjazd bardzo udany (choć lokalny patriotyzm każe powiedzieć, że jednak na Java4People było fajniej ;)) i zostaje podziękować Organizatorom za tegoroczne Wydarzenie i życzyć, żeby za rok nie było gorzej!

P.S. A ponieważ lubię Warszawę z turystycznego punktu widzenia, to w ramach promocji parę obrazków i niezapomniany Czesław Niemen:

P.S. 2 - Czystym przypadkiem jak mniemam Jerry Weinberg akurat opublikował wpis na swoim blogu o kryteriach wyboru konferencji. Do refleksji.

niedziela, 28 czerwca 2009

NSIS - Ekslibrisowa ekwilibrystyka czyli piszemy własną bibliotekę

Sława!

Dziś chciałbym jakże szanownym Czytelniczkom i Czytelnikom zaprezentować parę wskazówek jak pisać własne biblioteki/pliki nagłówkowe dla NSIS. Po cóż, a po coż to się męczyć z czymś takim? - zapyta ktoś bardziej marudny. Ha! Otóż marudo moja kochana, po piersze primo zawsze warto wydzielać sobie wieloużywalne kawałki własnego kodu, żeby potem nie wymyślać koła po raz kolejny. A po drugie primo, w wypadku NSISa główny plik projektu przy większej komplikacji ma tendencje do bardzo szybkiego rozrostu, toteż pogubienie się w kodzie jest tylko kwestią czasu. I właśnie aby czas ten wydłużyć warto jednak powydzielać sobie funkcję do bibliotek.

Od czego zacząć? Wydaje mi się, że od wydzielenia, przynajmniej koncepcyjnie, tego co chcemy sobie zamknąć w funkcję w ramach biblioteki (a może bibliotek), oraz wymyśleniu sobie nazw zarówno dla funkcji, jak i dla biblioteki. Należy pamiętać, że nie powinny być zbyt lakoniczne, ani też za długie, bo na dzień dzisiejszy narzędzia wspierające pisanie w NSIS nie podpowiadają składni zawartej w bibliotekach. Jeżeli już wymyśliliśmy sobie to i owo, możemy przystąpić do dzieła (a może nawet Dzieła).

Załóżmy, że nową bibliotekę nazwaliśmy sobie PNG (od Przebłysk Naszego Geniuszu) i zawierać będzię ona jedną funkcję o nazwie, jakżeby inaczej, Funkcja. Jedną bo ma posłużyć za przykład, kolejne sobie możemy dorobić już siłą rozpędu. Dodajmy także, że będziemy chcieli jej używać zarówno w instalatorach jak i deinstalatorach.

Zaczynamy więc od następujacego szkieletu:

!ifndef PNG
    !define PNG

    !verbose push
    !verbose 3

    !ifndef PNG_DELIM
        !define PNG_DELIM '.'
    !endif
    
    !ifndef PNG_UN
        !define PNG_UN
    !endif

 #Includes
 
    !ifndef NFUPREFIX
        !include nfUtils.nsh
    !endif

#Installer-----------------------------------------------------------------------------------------

#Callers-----------------------------------------

#Bodies------------------------------------------

#Unistaller----------------------------------------------------------------------------------------

#Callers-----------------------------------------

#Bodies------------------------------------------

    !verbose pop
!endif

Gdzie, PNG_DELIM określa delimiter między nazwą biblioteki, a nazwą funckji - przyjąłem założenie, że używać będziemy ich w sposób podobny do nsArray, czyli poprzez zapis ${PNG.Funkcja}. Definicja PNG_UN jest podstawą pewnej sztuczki przy wspieraniu deinstalatorów, o czym później może parę słów (Ale niczego nie obiecuję). W sekcji #Includes dodajemy niezbędne polecenia include dołączające zewnętrzne biblioteki (np. LogicLib). Warto dołączać je tutaj, żeby być pewnym, że żadnej nie zabraknie. Włączona tu została biblioteka nfUtils, wspomagająca tworzenie własnych bibliotek. Wreszcie sekcje #Callers zawierać będą "wołacze" do funkcji, czyli to co umożliwi użycie wspomnianego zapisu ${PNG.Funkcja}, a #Bodies już właściwe ciała funkcji.

Uzupełnijmy więc te sekcje dla cześci "instalacyjnej":

#Callers-----------------------------------------

;Funkcja
;
;parametr
;   parametr
;
;zwraca
; wynik
!macro PNG${PNG_DELIM}Funkcja_Call _parametr _wynik
    Push ${_parametr}
    Call PNG${PNG_DELIM}Funkcja
    Pop ${_wynik}
!macroend

#Bodies------------------------------------------
!macro PNG${PNG_DELIM}Funkcja
    !ifndef ${PNG_UN}PNG${PNG_DELIM}Funkcja
        !define ${PNG_UN}PNG${PNG_DELIM}Funkcja '!insertmacro ${PNG_UN}PNG${PNG_DELIM}Funkcja_Call'

        ;$1 - wynik
        ;$0 - parametr
        ${nfu.Function} ${PNG_UN}PNG${PNG_DELIM}Funkcja in $0 out $1 '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''
         # Ciało funkcji
   
        ${nfu.FunctionEnd}
    !endif
!macroend

W ciale funkcji w $0 znajdzie się przekazywany parametr, natomiast zawartość $1 przy wyjściu z funkcji będzie umieszczona na stosie. Po zakończeniu funkcji wartości $0 i $1 będą takie same jak przed jej wykonaniem. Jeżeli chcemy używać w ciele innych zmiennych $0-9 należy samemu obsłużyć podobne zachowanie za pomocą operacji na stosie.

Zostało więc uzupełnienie sekcji dla deinstalatora, tu już chyba nie ma większej magii:

#Callers-----------------------------------------
!macro un.PNG${PNG_DELIM}Funkcja_Call _parametr _wynik
    Push ${_parametr}
    Call un.PNG${PNG_DELIM}Funkcja
    Pop ${_wynik}
!macroend

#Bodies------------------------------------------
!macro un.PNG${PNG_DELIM}Funkcja
    !undef ${PNG_UN}
    !define ${PNG_UN} 'un.'
    !insertmacro PNG${PNG_DELIM}Funkcja
    !undef ${PNG_UN}
    !define ${PNG_UN}
!macroend

I to było by na tyle. Wnikliwsza analiza, wykaże, że cała zabawa polega na sprytnym wykorzystaniu poleceń preprocesora NSIS do wpływania na proces generowania "wynikowego" źródła do kompilacji, podkładając mu odpowiedni kod w miejsce używanych definicji. Dlatego też, możemy używać naszej biblioteki podobnie jak LogicLib czy nsArray poprzez ${PNG.Funkcja} 'parametr' $Wynik

sobota, 27 czerwca 2009

Parę słów o kontekstem gnanym testowaniu

Sława!

Najnowszy wpis na blogu Jamesa Bacha przypomniał mi, że już dawno miałem wspomnieć parę słów o, nazwijmy to szumnie metodologią, testowaniu gnanym kontekstem (Context-driven-testing). Idea stojąca za tym podejściem jest chyba najbliższa moim intuicyjnym wyczuciom na czym testowanie powinno polegać, i staram się jakoś lepiej lub gorzej wprowadzać sobie w życie, i może coś z tego wyjdzie. Całość opiera się na siedmiu podstawach, które pozwolę sobie przetłumaczyć (pewnie nie najlepiej, ale co mi tam, najwyżej ktoś mądrzejszy mnie poprawi i szlag trafi cały zachwyt ;)):

  1. Wartość każdego postępowania (podejścia, praktyki) zależy od jego kontekstu.
  2. W danym kontekście są dobre praktyki, ale nie ma tej najlepszej.
  3. Ludzie pracujący razem, są najważniejszą częścią w kontekście każdego projektu.
  4. Rozwój projektów, w miarę czasu, często nie podąża przewidywalnymi ścieżkami.
  5. Produkt jest Rozwiązaniem. Jeśli zadany problem nie jest rozwiązany, produkt nie działa.
  6. Dobre testowanie oprogramowania jest wymagającym (i stawiającym wyzwania) procesem intelektualnym.
  7. Tylko rozsądkiem i wprawą, zaprzątniętymi razem podczas całego projektu, jesteśmy zdolni do wykonania właściwych czynności we właściwym czasie, aby skutecznie testować nasze produkty.

Tylko tyle, i aż tyle, bo jak pokazuje nie raz bliższa lub dalsza praktyka, nie wszystkim poszczególne punkty wydają się prawdziwe, a szkoda.

Po więcej informacji (w języku angielskim) zapraszam na stronę http://www.context-driven-testing.com/ , gdyż na prawdę warto się zapoznać. Nawet jeżeli uznacie, że sobie można o kant czterech rozbić.

niedziela, 31 maja 2009

VII spotkanie Szczecin JUG - parę słów komentarza

Sława!

Krytykować jest łatwo, więc dlaczego by się krępować? Sami widzicie, że nie ma co. Więc przystępuję do Dzieła Zniszczenia. Dzieło Zniszczenia zacznę od słów podziękowania i gratulacji dla szczecińskiego ZDiTM za świetny rozkład jazdy tramwajów, dzięki czemu zaoszczędziłem jakieś 20-25 minut wstępu, pewnie nudnego jak zawsze ;)

Jak już dotarłem na miejsce spotkania, na moje szczęście (bo kto lubi teorie? ;)) kończyła się część teoretyczno-wprowadzająca i kolega Michał powoli przechodził do clou programu, czyli Selenium i Jameleon.

Niestety jak na mój gust, za bardzo przegadane, za mało przykładów "na żywo" (I nie mówię tu nawet o pisaniu testów na żywca, ale aż prosiło się o przykłady testów ciut bardziej wykorzystujących możliwości narzędzia). Także wydaje mi się, że za mało pokazał czystego Selenium, i dopiero w porównaniu z nim, podejście oparte o Jamelona.

Dlaczego tak mi się wydaje? Po reakcjach publiki, która trochę nie bardzo chyba załapała o co w tym Jameleonie jest fajnego (lub nie). Bo bądźmy szczerzy, da się taki sam efekt (mniejszym lub większym kosztem) uzyskać podpinając Selenium RC pod JUnit lub TestNG. A Jameleon na pierwszy rzut oka wygląda trochę dziwnie, i łatwo się zrazić do niego, na zasadzie "a po co mi taka kobyła?". I takiego porównania jak to samo wygląda w jednym i drugim podejściu, i jakie korzyści i jakie wady przynosi stosowanie jednego i drugiego narzędzia mi generalnie zabrakło. Ale poza tym to było całkiem, całkiem, i nawet, o dziwo, trochę pytań było po prezentacji.

Więc, mimo wszystko, brawa (tym bardziej, że łatwo się piszę komentarze, jak samemu się nic nie prezentuje).

P.S. Oczywiście znów nic nie wygrałem ;)

P.S. 2 - W związku z P.S. poprzednim i naciskami Leszka, może by się skusić na prezentacje? Tylko o czym by tu...

sobota, 23 maja 2009

VII spotkanie Szczecin JUG - edycja II

Sława!

Tak z cichacza, Szczeciński JUG zaprasza na kolejne spotkanie, tym razem niejaki Michał Gozdalik ma zamiar pomarudzić, to znaczy poopowiadać o testowanie serwisów webowych. Agenda zapowiada się całkiem, całkiem:

  • Fakty i mity testowania aplikacji 
  • Miejsce testów w procesie wytwarzania aplikacji 
  • Automatyzacja testów
  • Narzędzia wspomagające automatyzację testów
  • Selenium
  • Jameleon

Dodatkowo Michał to mój kolega z boiska ;) więc zostaje mi tylko zaprosić każdego co się napatoczy do sali 128 WI PS (ZUT) na godzinę 18:00 dnia 28.V br.

I skleroza się potrafi przydać...

Sława!

W tym mijającym tygodniu udało mi się zmarnować dwa dni na leczeniu skutków własnej sklerozy. Otóż, nie wbijając się za bardzo w szczegóły, aplikacja którą obecnie "tworzę" w Pracy, postanowiła sobie losowo działać lub nie. Przyczyna prozaiczna i oczywista, więc jej znalezienie musiało potrwać i urodzić całą masę dziwnych i zakręconych teorii z gatunku "dlaczego?". Na szczęście kwadrans gapienia się w umieszczony w dokumentacji napis EventDispatcherThread wreszcie uruchomiło zapadkę w mózgu...

Aczkolwiek przy okazji odkryłem sobie ciekawe narzędzie jakim jest VisualVM. Na razie tylko się wstępnie "pobawiłem" i już dzięki ciekawej opcji jak możliwość zapisania aktualnego stanu JVM do późniejszej analizy rozwiązałem sobie następny problem w całkiem przyjemny sposób.

Całość polegała na przepatrzeniu wartości w obiektach w konkretnej sytuacji. Dzięki VisualVM udało się zrobić to przyjemniej niż przy użyciu standardowego debuggera Eclipse. Ot, uruchomiłem aplikację, doszedłem do tego żądanego stanu, dokonałem zrzutu java heap i zapisałem sobie wynik, zamknąłem aplikację co by się nie marnowały zasoby, a potem na spokojnie korzystając z wygodnego interfejsu z filtrami odnalazłem sobie to co chciałem raz dwa.

Z resztą zapraszam do zapoznania się z krótką prezentacją na temat możliwości (znaleziona na oficjalnej stronie VisualVM):

niedziela, 17 maja 2009

Mniej niż Zero...

Sława!

Dziś trochę tak marudząco ponarzekam na niesprawiedliwość świata. Niesprawiedliwość tego świata oczywiście i jak zwykle, dotyczy tego, że, biedactwo, nie posiadam tego jedynego talentu który decyduje, czy powinno się co najwyżej dziękować Losowi, że pozwolił rowy kopać chociaż, czy, że jednak można próbować zdobywać Wykształcenie i wszelkie profity z tym związane. (No, chyba, że się miało szczęście urodzić w Jedynie Słusznych Krajach ;))

"A cóż to za talent?" spytałby kto. I dlaczego mnie naszło na wywnętrznianie się. Talent ten to oczywiście talent do języków ludzkich wszelakich, a naszło mnie, bo ostatnio namieszanie sieje jeden wpis na zagramanicznym blogu. I efekty tego namieszania utwierdzają mnie w przekonaniu, że gdzieś "po drodze" moja własna przekora wywiodła mnie na manowce (prawdopodobnie przy końcu podstawówki), nie tylko w kwestiach zawodowo-przyszłościowych ale i moralnych.

Otóż, trzeba sobie otwarcie to przyznać, mam jakąś cholerną dyslingulię, czyli kompletny brak zdolności językowych, co oznacza, że oprócz braków w języku ojczystym, właściwie kompletnie nie znam języka angielskiego (nie licząc paru cytatów z Plutonu). Do tego, debil, wymarzyłem sobie, że się wpakuję w informatykę (i co gorsza marzenie to zrealizowałem!). Teraz, po lekturze choćby tego wpisu, chyba czas zapakować się do zoo czy innego cyrku, jako dziwactwo i wybryk Natury.

Czemuż to czemuż? Bo stwierdzenie i pytanie padło takie:

"Trudno mi sobie wobraźć pracę w moim zawodzie bez znajomości tego języka choćby w czytaniu. Niedawno odbyta konferencja GeeCON2009 w Krakowie (za którą nota bene wielkie brawa dla organizatorów) uświadomiła mi, że tak naprawdę polscy programiści, znają język angielski bardzo dobrze. Jaki jest więc sens pisania po polsku?"

Za pytaniem takim staje Widmo, zagląda w oczy i się śmieje zdradziecko prosto w twarz. "Mam Cię". Im więcej ludzi z Wiedzą odpowie na nie "żaden", tym gorzej dla mnie. Mając bardzo ograniczone zdolności rozumienia tekstów niepolskich (słowniki trochę pomagają, ale to idzie się pociąć...), każda taka odpowiedź redukuje kolejną gałąź w wodociągu Wiedzy. Aż koniec końców źródełko wyschnie, i klops. Chyba, że jakimś cudem, uda mi się zdobyć jakąś bardzo niszową i wysokopłatną zdolność, która pozwoli dotrwać do emerytury...

Cóż, czas przyzwyczajać się do zmywaka, bo tylko przy nim kariera możliwa...

P.S. Co do moralności. To cóż, trzeba jakoś braki ukrywać. A ukrywa się kłamiąc, oszukując, myląc tropy i całą gamą innych nieczystych zagrań...

piątek, 1 maja 2009

Czarną wstęgą mknąc za horyzont w swym Gran Torino

Sława!

Zdarzyło mi się celowo zbłądzić do najstarszego kina na świecie, aby zapoznać się z najnowszym filmem mojego ulubionego aktora, czyli z Gran Torino Clinta Eastwooda.

I powiem krótko - warto było. Tu i ówdzie słychać co prawda głosy, że film banalny, nic nowego i w ogóle do bani, ale można je spokojnie puścić mimo uszu. Dlaczego? Bo kino to kino, i basta. Ma służyć Opowieści, Treści, a nie li tylko formowym eksperymentom. A Opowieść snuta przez Eastwooda bardzo do mnie przemówiła, na emocjach wszelkich zagrała, i łezkę na końcu wydusiła. A że jednocześnie snuta bardzo, ale to bardzo sprawnie, tym zadowolenie z seansu większe.

O czym zaś Opowieść ta? A nic wielkiego, ot o Godności, Miłości (w pewien zakamuflowany sposób), i o odwadze Starania Się. Starania się, aby być Dobrym Człowiekiem i Prawdziwym Mężczyzną, dochowywać wierności Wartościom. O tym jakie trudne to wszystko może być w dzisiejszym, idącym wiecznie na łatwiznę świecie. Opowieść stanowiącą swoiste domknięcie eastwoodowego etosu Brudnego Harrego, niczym Bez Przebaczenia domykające Trylogię o Bezimiennym.

Urodzinowe arią wyśpiewane sto lat!

Sława!

Zdarzeń codziennych natłok, praca wre, pot, łzy i krew wylewane w walce o byt i pełen portfel ;), a tu niespodzianie jakże miła siurpryza i ku świętowaniu okazja. Moja Ulubiona Przeglądarka Internetowa skończyła właśnie 15 lat! Wszystkiego najlepszego!

niedziela, 5 kwietnia 2009

Konferowanie, konferowanie i po konferowaniu...

Sława!

W minioną sobotę miałem niewątpliwą przyjemność uczestniczenia w naszej, kochanej, lokalnej konferencji Java4People (wiadomo, darmowy obiad ;)). Zaczęło się miło, bo ochrzanem od Leszka za spóźnianie się (oj, ledwie ze trzy minutki ;)), na szczęście potem było lepiej. O naprawdę wysokim poziomie prelegentów niech świadczy fakt, że takiemu "byłemu" programiście Javy, co to szybko się nudzi i mało rozumie, jak ja, ani razu się nie ziewnęło ;) Ale może po kolei.

Na pierwszy ogień poszedł Paweł Szulc z prezentacją na temat testowania EJB. To co mnie ucieszyło w niej szczególnie, to przede wszystkim pokazanie, że testowanie własnego kodu nie gryzie, i nawet w "takim" EJB da się to prosto zrobić. A dlaczego mnie to ucieszyło? Bo może dzięki temu będę ja, lub ktoś mi podobny mniej roboty ;) Wbrew ogólnej opinii robienie reopen na zadaniach w jirze mnie nie jara szczególnie ;)

Drugim rzutem, przyatakował Waldek Kot o kometach i miasteczkach w Normandii, coś nowego, interesująco się zapowiadającego i wraz z upowszechnianiem się technologii "odwrotnego ajaksu" czuję nosem kolejne wyzwania (no, może wyzwanka) przy testach funkcjonalnych aplikacji sieciowych.

Po nim chwila wytchnienia, zużyta na relaksujący spacerek do cukierni, aby coś przekąsić (ha! nie lubię pizzy i wolę Pepsi, nic dziwnego, że już nie pracuję jako programista ;)), a po przerwie kolejna fala prelegentów.

Zaczął ją Andrzej Śliwa rzucając parę słów o gitach. Ciekawe, ciekawe, w święta chyba sobie popróbuję trochę, bo możliwości to to ma fajnych parę.

Następnie Jacek Laskowski jak zwykle dał popis, z niezwykłym polotem prezentując atrakcyjne szynki. Aż szkoda, że sieć to Zło ;), bo korci rzucić wszystko i zostać fanboyem Grailsów, tymbardziej, że, jak pokazał Szanowny Prowadzący, niespodziewane wyjątki, błędy i wypaczenia nie są czymś strasznym... ;)

Ostatnim próbującym uśpić więcej niż jednego prelegenta (tak, tak, trudno w to uwierzyć, ale Jackowi L. się jednego uśpić, i obudzić, udało ;)) odważnym był Maciek Majewski, tym razem nietypowo, bo... o aplikacjach sieciowych. Konkretniej o wiosennych pływach, a wiadomo, że wiosną wszystko pływa żwawiej.

Potem losowanie nagród, chwilka sprzątania, i można było wpaść na integrację (pozdrawiamy Lublin, Warszawę, Wrocław i kogo tam jeszcze przywiało), napić, najeść się, lulków napalić, karczmy ledwo nie rozwalić... Oby za rok, było co najmniej równie fajnie (czyli, Leszku, wreszcie coś wygram, zgoda? ;)).

P.S. Jak widać po pierwszych komentarzach temu Panu i temu też się podobało, więc chyba coś być na rzeczy musi... ;)

czwartek, 2 kwietnia 2009

NSIS - obsługa różnych typów plików konfiguracyjnych

Sława!

Czasami zdarza się, że robiąc instalator do swojej aplikacji, chcemy jednocześnie zawrzeć w nim podstawową konfigurację swojego produktu tak, aby po procesie instalacji nadawał się on w większości przypadków już do użycia. Jeżeli dla tego produktu konfiguracja taka sprowadza się do wypełnienia dwóch, trzech pól i zapisania ich wartości w docelowym pliku, nie nastręcza to zbytnich trudności. Ot, wystarczy zrobić plik *.ini strony, skrobnąć funkcję obsługi i voila. Pikuś, morda, gitara gra. :)

Problemik (ale przecież, jak zawsze w naszym wypadku, tyci, tyciunki ;)) może się zacząć robić wtedy, kiedy tych produktów zaczyna być więcej, albo tych pól do konfiguracji zaczyna się mnożyć ponad jedną stronę, albo...

Wtedy przydałoby się oczywiście jakoś sobie pracę usprawnić. Jednym z możliwych rozwiązań, jest wykorzystanie do tego celu plików... *.ini. Otóż okazuje się, że każdy z elementów strony, jak i strona jako całość może mieć również właściwości niestandardowe, które można wykorzystać do przechowywania informacji potrzebnych dla naszych uniwersalnych funkcji/makr obsługujących konfigurację.

Załóżmy, że plik konfiguracyjny jest plikiem XML, wtedy do pól dodawać możemy informację o XPath skąd i gdzie potrzebujemy pobrać i zapisać wartości. W naszym pliku ini znaleźć się może więc coś takiego.

[Settings]
NumFields=3
TargetFile=config.xml

[Field 3]
Type=GroupBox
Left=3
Top=4
Right=145
Bottom=135
Text=Configuration

[Field 1]
Type=Label
Left=9
Top=15
Right=110
Bottom=24
Text=SMTP server:

[Field 2]
Type=Text
Left=9
Top=26
Right=141
Bottom=36
State=smtp.host
MinLen=1
Flags=
XPath=/mail-module/mail-sender/smtp-host

Natomiast kod odpowiedzialny za inicjalizowanie wyświetlania strony miałby postać mniej więcej taką:

${xml::LoadFile} '$TARGETDIR\$TARGETFILE' $0
${If} $0 == 0
   ReadIniStr $NUMFIELDS $INIFILE "Settings" "NumFields"

   ${For} $R9 1 $NUMFIELDS
      ${xml::RootElement} $0 $1
      ReadIniStr $XP  $INIFILE 'Field $R9' 'XPath'

      ${If} $XP != ""
         ${xml::XPathNode} $XP $0

         ${If} $0 == 0
            ${xml::GetText} $1 $0
         ${EndIf}

         ${If} $0 == 0
            WriteINIStr $INIFILE 'Field $R9' 'State' '$1'
         ${Else}
            MessageBox MB_OK|MB_ICONEXCLAMATION 'Error during reading:$\r$\nFile: $TARGETDIR\$TARGETFILE$\r$\nXpath: $XP'
         ${EndIf}
      ${EndIf}
   ${Next}

   InstallOptions::initDialog /NOUNLOAD $INIFILE
   Pop $HWND

   InstallOptions::show /NOUNLOAD
${Else}
   MessageBox MB_OK "Can't find file: $TARGETDIR\$TARGETFILE"
   Abort
${EndIf}

Na analogicznej zasadzie konstruujemy funkcje zapisujące do pliku XML, używając mniej więcej czegoś takiego:

ReadIniStr $NUMFIELDS $INIFILE "Settings" "NumFields"

${For} $R9 1 $NUMFIELDS
   ReadIniStr $XP  $INIFILE 'Field $R9' 'XPath'

   ${If} $XP != ''
      ReadIniStr $0 $INIFILE "Field $R9" "State"
                  
      ${xml::RootElement} $1 $1
      ${xml::XPathNode} $XP $1
      ${xml::SetText} $0 $1
      ${xml::SaveFile} '$TARGETDIR\$TARGETFILE' $1
   ${EndIf}
${Next}

Dzięki temu tworzenie kolejnych konfiguracji sprowadzi się jedynie do ustawienie odpowiednich wartości w plikach *.ini. Jeżeli jeszcze wydzielimy sobie wieloużywalny kod do plików nagłówkowych, tworzenie instalatorów na pęczki będzie niczym bułka z masłem na śniadanko. :)

niedziela, 22 marca 2009

Berlin smutkiem zniebieściały...

Sława!

Łykend nietypowo jak na mnie zaczął się od tzw. Wydarzenia Kulturalnego, mianowicie miałem niekłamaną przyjemność posłuchać na żywo jednego z najlepszych gitarzystów nieklasycznych naszych czasów, czyli Garego Moore'a.

Koncert, w ramach trasy promującej najnowszy album Bad for You Baby, odbył się w całkiem przyjemnej berlińskiej sali Tempodrom. Zgodnie z oczekiwaniami moimi, mediana wieku przybyłych była bliżej wieku moich rodziców niż mojego, ale trzeba przyznać, że były też persony mocno średnią wieku zaniżające :) Natomiast niezgodnie z oczekiwaniami, okazało się, że nie tylko polscy (szczecińscy) akustycy są... głusi. Na szczęście ciut zbyt głośne ustawienie ogólne i rezonująco-skrzekliwe ustawienie wysokich tonów nie zdołały zepsuć mocno wrażenia. Ale minusik zostaje.

Na rozgrzewkę zaserwowany został Alvin Youngblood Hart z  zespołem, który dał czterdziestominutową dawkę fajnego, gitarowego bluesrocka (z naciskiem bardziej na rocka). Na ile się zorientowałem, zaprezentował materiał ze swojego, zdaje się ostatniego, albumu Motivational Speaker. Muzyczka fajna, z przytupem a nawet wykrokiem :)

A potem oczywiście Gwiazda Wieczoru, Gary. W swoim dwugodzinnym występie zagrał zarówno utwory z najnowszej płyty (m.in. tytułowe Bad For You Baby, Mojo Boogie, WalkinThru the Park czy I Love you more than youll ever know, jak i trochę starszych kawałków, chociażby Oh, Pretty Woman, Too Tired,czy All Your Love) udowadniając, że na gitarze "wymiata" jak niewielu.

I mimo dwóch bisów - The Blues Is Alright i Parisienne Walkways jakoś tak szybko się skończyło. Na tyle, że, chyba najbardziej powszechnie znany jego utwór musiałem sobie dograć we własnym zakresie...

czwartek, 19 marca 2009

Radio w foobar2000

Sława!

Dziś o słuchaniu radia za pomocą znanego i lubianego foobara. Jeżeli chodzi o tzw. internetowe, nie ma problemu. Standardowo odtwarzacz ten obsługuje strumienie Shoutcast, ot wystarczy użyć opcji Add location. Żeby móc skorzystać ze strumieni "microsoftowych" należy użyć dodatkowego komponentu - foo_input_mslive. Obsługa Last.Fm też jest zapewniana przez komponent - foo_lastfm_radio. Obsługa obu jest też dość banalna, że nie ma się co rozpisywać :)

Natomiast jeżeli chodzi o obsługę radia eterycznego, czyli za pomocą karty FM (TV), to nie udało mi się znaleźć odpowiedniego komponentu, a szkoda...

środa, 4 marca 2009

7 spotkanie Szczecin JUG

Sława!

W oczekiwaniu na Konferencję Leszek zaprasza w imieniu podwójnym swoim, na 7 spotkanie szczecińskiego JUGu, tym razem o podstawach EJB. Może uda mi się coś z tego zrozumieć ;)

P.S. Niestety spotkanie zostało przez Leszka odwołane (a raczej przesunięte na bliżej nieokreśloną przyszłość). Buuu!!!!

sobota, 28 lutego 2009

Recenzja: Perfect Software and other illusions about testing.

Sława!

Trochę trwało, bo i zajęć różnorakich innych było, ale wreszcie się udało zakończyć lekturę dość świeżej pozycji autorstwa Geralda M. Weinberga pod tytułem Perfect Software and other illusions about testing. Pozycja ta, zgodnie z tytułem odnosi się do zagadnień związanych z testowaniem oprogramowania, a jej autor posiadający ponad półwieczne doświadczenie w szeroko pojętej branży programistycznej jest cenionym konsultantem i autorem książek o równie szeroko rozumianym wytwarzaniu oprogramowania.

Wracając do książki. Pisząc krótko jest to napisany bardzo przystępnym językiem i okraszony anegdotkami z życia (z których najbardziej zapadła mi w pamięć ta, okraszająca tezę, że nie ma złych programów, gdzie testerzy używali programu, w zamierzeniach autora mającego służyć do obliczeń fizycznych, jako niezawodnego narzędzia do... wywalania w kosmos systemu operacyjnego) swego rodzaju poradnik o używaniu testów (wszelakich jako całości). Poradnik do tego bardzo nietechniczny, głównie bazujący na naturze ludzkiej i konsekwencjach z nią związanych, i to ją przeważnie ustawiający jako źródło sukcesów i porażek.

Natomiast bardziej szczegółowo, mamy do czynienia ze 169 stronami podzielonymi na 18 rozdziałów na których Autor m.in. rozprawia się z różnorakimi mitami dotyczącymi testowania, wskazuje na pokusy czyhające na osoby w proces ten zaangażowane (zarówno powodowane ludzkim lenistwem, jak i dążeniem do perfekcji), a które mogą proces ten pogorszyć czasem dość znacząco, na możliwe różnice w motywacjach i celach poszczególnych członków projektów IT i na inne przeszkody w osiągnięciu celu głównego, czyli tworzone oprogramowanie działa, klienci walą drzwiami i oknami z wyrazami podziękowania, a wytwórcy nie dość, że się nie pozabijali wzajemnie to jeszcze ze sobą rozmawiają ;). Każdy z rozdziałów podzielony jest na wstęp prezentujący poruszany problem, przykłady w raz ze wskazówkami na ominięcie kłopotów, podsumowanie oraz listę najczęstszych pomyłek, błędów i wypaczeń związanych z zagadnieniem. Całość, napisaną jak już wspomniałem bardzo przystępnie, czyta się przyjemnie i szparko, a materiał daje nieźle do myślenia i mam nadzieję, że wyniesione nauki przydadzą się w życiu. Tak czy siak, polecam. Wszystkim jako lekturę nie tylko do poduszki, a wydawcom pod rozwagę, bo z przyjemnością zapoznał bym się jeszcze raz, tym razem w ludzkim języku.

Gerald M. Weinberg  - Perfect Software And Other Illusions About Testing

Dorset House Publishing, 2008, 200 stron

Rozdziały:

  1. Why do we bother testing?
  2. What testing cannot do
  3. Why not just testing everything?
  4. What's the difference between testing and debugging?
  5. Meta-testing
  6. Information immunity
  7. How to deal with deffensive reactions
  8. What makes a good test?
  9. Major fallacies about testing
  10. Testing is more than banging keys
  11. Information intake
  12. Making meaning
  13. Determining significance
  14. Making a response
  15. Preventing software testing from growing more difficult
  16. Testing without machinery
  17. Testing scams
  18. Oblivious scams

czwartek, 26 lutego 2009

Lokalnej konferencji nowa edycja rusza...

Sława!

Jak podał na swoim blogu Leszek Gruchała ruszyła rejestracja na konferencję java4people '2009.

Rejestrując się rzuciłem więc okiem na agendę, i muszę przyznać zapowiada się interesująco. Zaczyna się od "mojej" działki, czyli testowania, a konkretniej Paweł Szulc przedstawić ma zamiar testowanie EJB. Z EJB jestem co prawda zielony jak sałata na kanapce, ale obecnie, gdzie tylko widzę słówko "test" we wszelkich odmianach i mutacjach to lecę jak pszczoła do miodu, a jeżeli do tego prelegent umie ciekawie pogadać, a ten akurat umie, to czas na pewno stracony nie będzie. Następnie na ruszt technikę Comet przyprószoną protokołem Bayeux położy Waldemar Kot. O ile dobrze pamiętam, nie miałem przyjemności posłuchania "na żywo", ale posty na pl.comp.lang.java zawsze czyta się z przyjemnością. Kolejną godzinkę lepiej pominąć milczeniem, aby potem w skupieniu wysłuchać Andrzeja Śliwę o systemie GIT, o którym ostatnio można napotkać wiele pozytywnych opinii. Po nim nastąpi, jak dla mnie, gwóźdź programu czyli wystąpienie Jacka Laskowskiego.  Osobiście mam wrażenie, że Jacek potrafiłby zainteresować najbardziej nudnym tematem, więc skoro Grails na taki nie wygląda, to aż strach pomyśleć co to będzie się działo. Pewnie piski, histeria i tłumy mdlących fanek ;) Dlatego też trochę mi żal kończącego dzień Maćka Majewskiego i jego prezentacji o Spring Webflow, ale z drugiej strony przynajmniej publika rozgrzana będzie ;) Tak więc do zobaczenia!

sobota, 21 lutego 2009

Okna rtęcią zapełnione...

Sława!

Jedną z nielicznych jak dla mnie (wiem, wiem nie znam się ;)) zalet komputerków zwanych Makintoszami jest aplikacyjka zwana Quicksilver. W skrócie jest to taki miły gadżet, dzięki któremu np. uruchomienie aplikacji jest możliwe po wywołaniu globalnym skrótem klawiaturowym okienka w którym zaczynamy wpisywać jej nazwę, a okienko podpowiada możliwości spośród których możemy wybrać odpowiednią. Dla mnie jest to rozwiązanie znacznie szybsze niż przekopywanie się przez standardowe menu programów, czy też dokopywanie się do odpowiedniej ikonki na pulpicie (gdybym ich używał ;)).

Zapragnąłem więc swego czasu mieć coś takiego pod Windows, gdyż Win+R nie jest dokładnie tym, co tygrysy lubią najbardziej. A ponieważ chcieć znaczy móc, z otchłani internetu wyłowić się udało aplikacyjkę wabiącą się Launchy. Nie jest ona do końca klonem makintoszowej aplikacji, ale spełnia swoją rolę bardzo dzielnie i szybko. Daje całkiem niezłe możliwości konfiguracji, dzięki czemu możemy dość precyzyjnie określić zakres indeksowanych elementów, zachowanie, no i przede wszystkiem skrót wywołujący okienko (co wcale nie jest oczywiste dla twórców podobnych gadżetów). Krótko mówiąc polecam spróbować.

środa, 18 lutego 2009

Zamieszczanie kodów źródłowych w bloggerze

Sława!

Próbując odrobinkę sobie "upiększyć" swoje wypociny natrafiłem byłem na następujący wpis How to display code (nicely) in Blogger posts, więc długo się nie zastanawiając postanowiłem wykorzystać znajdujący się tam przepis i dodać to cudo. Jak można zresztą zauważyć niżej, wyżej, gdziekolwiek obok :)

Oczywiście nie było tak pięknie jakby nie trzeba czegoś poprawić, inaczej będziemy mieli brzydkie, za duże odstępy między liniami, aby temu zapobiec wszędzie zamiast:

<LINK href="http://alexgorbatchev.com/pub/sh/2.0.278/...">

wpisujemy łącza do nowszej wersji podświetlacza:

<LINK href="http://alexgorbatchev.com/pub/sh/2.0.287/...">

Mamy więc możliwość wstawiania teraz takich choćby o to cosiów:

private class SampleCode {
System.out.println("Kod w (pseudo)Java");
}

Co poza tym można uzyskać, i w jaki sposób, można się dowiedzieć ze strony projektu SyntaxHighlighter gdzie serdecznie odsyłam

niedziela, 15 lutego 2009

NSIS i usługi Windows

Sława!

Dziś w ramach akcji ratowania doświadczenia przed sklerozą własną, zapiszę sobie jak z poziomu NSIS (podbudowa do tworzenia instalatorów dla aplikacji Windows), a nóż widelec i potomność będzie miała z tej notatki pożytek jakowyś.

Takowoż więc do obsługi usług potrzebujemy wtyczki Service Control Management (nsSCM). Wtyczka ta umożliwia na następujące operacje na usługach:

  • Install - zarejstrowanie usługi
  • Start - uruchomienie usługi
  • Stop - zatrzymanie usługi
  • QueryStatus - odpytanie o aktualny stan usługi
  • Remove - wyrejestrowanie usługi

Używanie jest banalnie proste, gdyż poza rejestrowaniem usługi, sprowadza się do wywołania odpowiedniej funkcji wtyczki z podaniem nazwy usługi, a następnie zczytania wyniku operacji. Jakiś przykład? Proszę bardzo, niech będzie nim wyłączenie/włączenie usługi w zależności od jej aktualnego stanu.

Zaczniemy od odpytania o stan usługi poleceniem:

nsSCM::QueryStatus /NOUNLOAD nazwa_usługi

Polecenie to, oprócz informacji o powodzeniu/błędzie wywołania, zwróci nam stan usługi. Możliwe wartości to:

  • 1 - usługa zatrzymana
  • 2 - usługa w trakcie uruchamiania
  • 3 - usługa w trakcie zatrzymywania
  • 4 - usługa uruchomiona
  • 5 - usługa w trakcie wznawiania
  • 6 - usługa w trakcie wstrzymywania
  • 7 - usługa wstrzymana

Załóżmy, że będziemy uruchamiać usługę, jeżeli jest zatrzymana lub wstrzymana, natomiast zatrzymywać jeżeli uruchomiona, pozastałe stany poprostu zignorujemy. Do zatrzymania usługi wykorzystamy kod:

nsSCM::Stop nazwa_usługi

Do uruchomienia natomiast:

nsSCM::Start nazwa_usługi

Tak więc nasz kod powinien uzyskać postać podobną do poniższej:

nsSCM::QueryStatus nazwa_usługi
Pop $0
${If} $0 == "success" Pop $1    ${Switch} $1       ;Usługa jest zatrzymana       ${Case} 1       ;Usługa jest wstrzymana       ${Case} 7          ;Uruchamiamy usługę          nsSCM::Start <nazwa_usługi>          Pop $2          ${If} $2 == "success"             MessageBox MB_OK "Usługa uruchomiona"          ${Else}             MessageBox MB_ICONEXCLAMATION|MB_OK "Błąd uruchamiania"          ${EndIf}       ${Break}       ;Usługa jest uruchomiona       ${Case} 4          ;Wstrzymujemy usługę          nsSCM::Stop <nazwa_usługi>          Pop $2          ${If} $2 == "success"             MessageBox MB_OK "Usługa zatrzymana"          ${Else}             MessageBox MB_ICONEXCLAMATION|MB_OK "Błąd zatrzymywania"          ${EndIf}       ${Break}    ${EndSwitch} ${EndIf}
Widzimy, więc, że usługi nie gryzą (przynajmniej nie za często ;)) i zostało nam tylko napisać aplikację, dzięki której możliwości nsSCM będziemy mogli wykorzystać, a to przecież dla nas pryszcz, co nie? ;)

poniedziałek, 2 lutego 2009

Musepack (MPC) SV8 w Ubuntu 8.10 (Intrepid Ibex)

Sława!

Korzystając z chwili wolnego, urlopem czasem zwanym, postanowiłem wziąć się wreszcie porządnie za podkonfigurowanie swojego łubunciaka, tak, żeby już nic nie brakowało (ale, jak to zwykle bywa, aż tak dobrze to nie ma ;)). Jednym z zadań, było "zmuszenie" go do odtwarzania plików MPC w najnowszej wersji tego kodeka czyli SV8. Ponieważ i tak na razie nie znalazłem godnego zastępcy dla foobara, to korzystam chwilowo z rozwiązań "dostarczonych" z Ubuntu na tacy, a te wykorzystują niejakiego gstreamera do obsługi multimediów. Gstreamer w najnowszych wersjach umie już się zaopiekować SV8, niestety pakiety "oficjalne" jeszcze (?) nie są dostępne (na pewno będą dla edycji The Jaunty Jackalope) dla Koziorożca. W celu ich pozyskania musimy skorzystać z "alternatywnego" dostawcy, tym razem z pomocą przychodzi Mieszko Slusarczyk znany też jako spitfire i jego PPA na launchpad.net.

Tak więc musimy dodać to prywatne repozytorium do repozytoriów apt-a. W tym celu uruchamiamy System|Źródła oprogramowania, następnie wybieramy Oprogramowanie osób trzecich i naciskamy przycisk Dodaj. Gdy zostaniemy poproszeni o podanie Wiersza APT kopiujemy następującą linijkę:

deb http://ppa.launchpad.net/mieszkoslusarczyk/ppa/ubuntu intrepid main

Następnie dodajemy klucz GPG repozytorium za pomocą polecenia w terminalu:

gpg --no-default-keyring --keyring /tmp/awn.keyring --keyserver keyserver.ubuntu.com --recv DA7FD571199ED01A8EE11139C5BD7775071013EE && gpg --no-default-keyring --keyring /tmp/awn.keyring --export --armor DA7FD571199ED01A8EE11139C5BD7775071013EE | sudo apt-key add - && rm /tmp/awn.keyring

Teraz możemy uruchomić Synaptica, odświeżyć ewentualnie mu listę pakietów, i zaznaczyć do aktualizacji pakiety gstreamera. Należy przy tym pamiętać, że do odtworzenia mpc potrzeba jest posiadania zainstalowanego pakietu gstreamer0.10-plugins-bad !

sobota, 31 stycznia 2009

"Naprawianie" rozszerzenia do Thunderbirda

Sława!

Pewnego, niezbyt odległego w przeszłości pięknego wydawać by się mogło dnia, niczym grom z jasnego nieba szlag trafił mi używane rozszerzenie SignatureSwitch do Thunderbirda. Objawy dziwne, bo wszystko niby cacy, a nie działa. No to pierwsza myśl - "kurde, znowu namieszałem coś w opcjach!". Więc otwieram, patrzę, wszystko wydaje się w porządku. Hmmm... No to może klasycznie - reinstalacja rozszerzenia. Skutek zerowy. No to wio, przeszukiwać internet w poszukiwaniu odpowiedzi. Hmmm... jałowo coś...

I nagle olśnienie! Przecież odinstalowanie rozszerzenia nie usuwa jego ustawień z profilu! A więc wracam do Thunderbirda, tam w opcjach zaawansowanych odpalam Edytor ustawień,  w pole filtra wpisuję signatureswitch,  a następnie na wszystkich wpisach extensions.signatureswitch.* używam opcji Resetuj.

Restarcik programu, chwila oczekiwania nerwowego i... Bocian! Bocian! Bociuś! Jesteśmy uratowani!

sobota, 17 stycznia 2009

VI spotkanie szczecińskiego juga - subiektywne wrażenia

Sława!

W ostatni wieczorny czwartek (by nie rzec czwartkowy wieczór) wybrałem się na VI spotkanie w ramach Szczecińskiej Grupy Użytkowników Java. Spotkanie zapowiadało się interesująco, bo po temacie "Dlaczego nie Glassfish?" można było sobie obiecywać dość niebanalne podejście, czyli wskazanie przeciw zamiast za. A posłuchać, że inni "som gupi" zawsze milej niż kolejnych cukierkowych laurek i inszych peanów na cześć ;) Tym bardziej, że osoba prowadzącego wydawała się wręcz do takiego podejścia stworzona (bez urazy XyCu ;)).

Niestety, jak to często w życiu bywa, rzeczywistość rozmija się z oczekiwaniami. Już na pierwszym slajdzie widniał zmieniony temat "A może Glassfish?" i prezentacja była bezpieprznym, standardowym okazaniem czym ta biedna rybka jest. Na tyle bezpieprznym, że parę osób wymiękło w trakcie nie czekając na koniec pokazu instalacji... Debiana, którą istotnie można by pominąć przygotowując wcześniej sobie maszynę wirtualną, ale dla mnie osobiście stanowiło to pewien rozrywkowo-melancholijny przerywnik. Reszta była no taka dość standardowa na prezentacje tego typu. Ot parę słów co to ma, jak wygląda na tle konkurencji, uruchomienie jakiś prostych przykładów i takie tam. Mnie tam się nawet podobało, bo zadziałał dyskretny urok nowości (w świecie jawy warzonej jestem zielony niczym trawa przed pochodem pierwszomajowym), ale odniosłem wrażenie, że niektórzy się ponudzili i/lub rozczarowali.

Więc tak sobie myślę, że z jednej strony prezentacja nic porywającego, ale z drugiej strony jak takie rzeczy pokazywać? Liczyć na aktywność widzów i ewentualną dyskusję o wyższości jednych świąt nad drugimi? No ale żeby taka dyskusja wynikła to się muszą znaleźć osoby jakoś tam chyba obeznane z tematem "bardziej", a wydało mi się, że zdecydowana większość uczestników spotkania była w temacie podobnie zielona jak moja skromna osoba. To może pokazać "napisanie" aplikacji wykorzystującej wszelkie ciekawe "możliwości" takiego serwera? Tylko czy wtedy nie staje się to bardziej "wykładem" o przykładowym EJB czy inszej EE, a nie o samym serwerze? A może pokazać na żywo różnice między kilkoma serwerami dokonując np. ich instalacji, wstępnej konfiguracji, wdrożenie przykładowego Witaj Świecie? A może coś innego? Tylko co?

czwartek, 15 stycznia 2009

Poświąteczno-noworoczne odchamianie się

Sława!

Tak się zdarzyło, że miałem możliwość wybrać się na szeroko reklamowany musical "Rent". A ponieważ musicali Ci u Nas niedostatek, skwapliwie się do Opery Na Zamku wybrałem, zarówno pędzony głodem kultury jak i ciekawością jak to wszystko wyszło...

Ano wyszło jak wyszło. Spektakl bardzo nierówny, zarówno w warstwie muzycznej, tekstowej (nie znam oryginału, więc nie będę za bardzo oceniał tłumaczenia) jak i wykonawczej. Mamy więc obok całkiem fajnych kawałków (choćby Seasons of love gdzie wykonawczyni partii solowej (Beata Andrzejewska?) kradnie całe szoł), takie o których się zapomina w trakcie ich słuchania, lub niezjadliwe pomyłki (jak hepening(?) niejakiej Maureen). Tekstowi brakuje moim zdaniem polotu, lekkości, dopieszczenia, wydaje się jakiś taki hmmm... nieociosany i chyba tłumacz zbytnio chciał się trzymać wiernie oryginałowi, co nie wyszło na zdrowie (jeden "Te Wajda!" to zdecydowanie za mało). Do tego prawie całkowity brak popisów tanecznych, nie wiem czy "tak miało być" czy też wymuszone to umiejętnościami wykonawców, ale musical prawie bez tańca?

Właśnie, co do obsady, jak już wspomniałem, też nierówno. Mamy więc świetnego w roli Angel Filipa Cembalę (aż szkoda, że rola nie większa), niezłą jako Mimi Paulinę Łabę (wydaje mi się, że rola skutecznie hamowała ją w pokazaniu pełni możliwości) i... tyle. O reszcie mogę powiedzieć, że co najwyżej pokazała niezłe głosy (Dorota Pawłowska - Joan, Piotr Charczuk - Collins czy Janusz Kruciński - Roger), natomiast taneczność jakaś taka... No czegoś mi brakowało. O "chórze" ciężko coś stwierdzić, bo nie mieli za bardzo kiedy się wykazać, choć parę osób z niego zostawiło na mnie lepsze wrażenie niż niektórzy z głównych ról, a wokalnie jedno dziewczę (wspomniane już) zmiotło po prostu resztę ze sceny.

Podsumowując, spektakl rewelacją nie jest, ot solidna produkcja na solidne 3+, no może 4-. Niby braków sporo, ale dwie i pół godzinki zleciało całkiem przyjemnie, więc jak ktoś chce i nie oczekuje Bóg wie czego, to czasu raczej na nim nie zmarnuje.

sobota, 3 stycznia 2009

Wypacykowany Foobar2000

Sława!

Jak powszechnie wiadomo (przynajmniej wśród użytkowników foobara ;)) foobar2000 jest sprawnym, ergonomicznym, wszystkomającym i mało zasobożernym odtwarzaczem dźwięków, że niepotrzebne żadne inne cuda i cudeńka (no może z wyjątkiem Wine czasami ;)).

Jednakowoż "domyślny" wygląd foobara, choć bardzo wygodny, czasem aż korci, żeby go przybajerować, co by kumplom używającym Winampa, Amaroka czy co tam akurat używają szczęka opadła, a ich zazdrość napełniała nasze serca i pierś dumą i poczuciem wyższości (a sam foobar nasz ram ;)). Niestety, zadania do samodzielnego wykonania do najłatwiejszych nie należy, choć jak ktoś ma chęć spróbować to zapraszam, mnie się nie chce. A ponieważ mnie się nie chce, to trzeba znaleźć kogoś komu się chciało. I, o dziwo, znalazł się taki jeden naiwny w kraju Franków, gdzieś między kanałem La Manche a Lazurowym wybrzeżem, i spłodził dziełko o wdzięcznej, choć bardziej kojarzącej się z Holandią, nazwie Curaçao. Wygląda to chociażby jak na załączonym obrazku:

Fajny, nie (Swoją drogą polecam widoczną płytę, Bohaterowie w świetnej formie!)? Też chcecie mieć taki? No to do roboty!

Najpierw wpadamy na stronę Br3tta - http://br3tt.online.fr/ - gdzie znajdziemy wszystko (no prawie, ale o tym później) co potrzebne. A więc ściągamy samą konfigurację, czcionki oraz potrzebne komponenty (uwaga! "paczki" są w formacie 7z, musimy mieć je czym otworzyć), a także nie omieszkamy zapoznać się z instrukcjami. Jeżeli chcemy cieszyć się z wizualizacji, musimy niestety zainstalować Winampa (wystarczy sam rdzeń plus wybrane wizualizacje). Na uwagę zasługuje też fakt, że będziemy mogli dzięki załączonej w paczce wtyczce Last.FM słuchać stacji tej usługi bezpośrednio z foobara (patrz poniższy obrazek). Jednak jeśli chcemy także pozbyć się aplikacji LastFM, a używamy funkcji "scrobble" musimy zaciągnąć jeszcze komponent foo_audioscrobbler.

Mając już wszystko przygotowane to zgodnie z instrukcjami najpierw przygotowujemy samego foobara do zmiany "wyglądu", rozpakowujemy do odpowiednich katalogów zawartości paczek, instalujemy czcionki i możemy odpalać! Piękny nie? Nie? Gdzie są te fajne okładki i zdjęcia wykonawców? Cóż... Pamiętamy instrukcje ze strony Br3tta? No to ustawiamy sobie ładnie ścieżki w foobarze, a następnie tylko zgodnie z tym co ustawiliśmy umieszczamy tam choćby ściągnięte z internetu fotki i voila! Zostało tylko dokonfigurować zgodnie z własnymi potrzebami zarówno "wygląd" jak i wtyczki których może dotąd nie używaliśmy (Last.FM, Lyrics Panel czy Playback Statistics)  i możemy już spraszać przyszłych zazdrośników...