czwartek, stycznia 28, 2010

Problem z Selenium

Selenium server w wersji 1.0.1
Firefox w wersji 3.6

Dzisiaj przekonałem się, że zautomatyzowane testy, w ramach nieustającej integracji to nie taka prosta sprawa. Jak w przypadku IE (tfu, tfu - kysz, kysz) wszystko działa dobrze i tak jak powinno, to w przypadku Firefoxa Selenium raczyło mnie takim oto uroczym błędem:
Today, I realized that automated tests, withing continuous integration build are not easy task to do. When it comes to IE, everything works well and as it was expected, but in Firefox it ends with very nice error:
RuntimeException: Firefox refused shutdown while preparing a profile
No pięknie, z tego co widać w menedżerze zadań, przeglądarka się uruchamia jednak nie wykonuje żadnych testów. Pogrzebawszy w Internecie, znalazłem rozwiązane, niestety nie jestem w stanie podać linka do źródła - zagubił mi się gdzieś.
When I opened task manager, I can see that browser is up and running, but it refuse to make any tests. After short intercourse with Internet I found solution, but I'm unable to put a link to it because I lost it somewhere in the meantime.

Winnym całego zamieszania jest niedawny update Firefoxa do wersji 3.6, zaszyte wewnątrz Selenium pluginy do przeglądarki są przycięte do wersji 3.5., przy uruchamianiu pojawia się okienko z informacją o niezgodnych pluginach i na tym przeglądarka zawisa. Aby to naprawić (tymczasowo), należy przejrzeć katalogi wewnątrz jara selenium zaczynające się od customProfileDir..., i w każdym pliku install.rdf zamienić odwołanie 3.5.* na 3.6.*, lub jak kto woli 4.*. Po zmianie należy te pliki wrzucić z powrotem do pakietu serwera i dzięki temu wszystko powinno działać prawidłowo.
Guilt for this whole mess is the last update for Firefox to version 3.6. Inside of Selenium there is a pack of browser plugins which will work in Firefox 3.5, but not higher than that. When browser starts it shows window, that some plugins are to old and it hangs in this window waiting for user reaction. To fix this (temporary), you should browse inside server package (jar), inside of directories starting at customProfileDir.., and inside of every single plugin directory, in each install.rdf file change required version from 3.5.* to 3.6.* or when it is necessary to 4.*. After change files should be inserted inside of jar archive, and after this everything should work correctly.

sobota, stycznia 23, 2010

GUI

Intuicyjny interfejs - Święty Graal projektowania interfejsu. Główna bolączka Linuchowych dystrybucji, tworzonych przez programistów zapaleńców. Większość moich kolegów uważa tworzenie interfejsu graficznego aplikacji za uwłaczającą, durną robotę. Zapominają o tym, że większość aplikacji jest używana przez nie-programistów, którzy zderzeni z nielogicznym interfejsem dostają po prostu świra.

Poniżej jest przykład dwóch interfejsów, tę po lewej mam w domu, tę po prawej w pracy. Od razu widać którą projektowali inżynierowie dla inżynierów, a która zrobiona została dla ludzi. Warto o tym pamiętać, gdy następnym razem ktoś wpadnie na pomysł, żeby aplikację zamykać wciskając guzik "Start".



piątek, stycznia 22, 2010

Nazwa projektu

Nazwa projektu w Blackberry Eclipse Plugin nie może zaczynać się od liczby. Zostanie to po cichu zamienione na podkreślenie-liczba podczas generowania różnych plików (między innymi dla debuggera), jednak wynikowy plik .cod nadal będzie zaczynał się od cyfry. Skutecznie uniemożliwia to wszelkie debuggowanie.
Project name in the Blackberry Eclipse Plugin cannot start with number. It will be automagically changed into underscore-number during generation of some files (especially for debugger), but resulting .cod file still will start with number. This make debugging almost impossible.

czwartek, stycznia 21, 2010

Leśny domek



W czasie ostatniego pobytu na prowincji na skraju lasu znalazłem opuszczone zabudowania. Co prawda, znam je od dość dawna, jednak teraz, pokryte śniegiem i lodem oraz otoczone bezlistnymi gałęziami wygląda to naprawdę złowieszczo. Ciekawe jaka się za tym wszystkim historia kryje?

sobota, stycznia 16, 2010

Pan Kleks na sankach

Będąc starym dziadem nie nawykłem do wykazywania jakiejkolwiek aktywności fizycznej, jednakże, potrzeba chwili, natchnienie oraz leżąca odłogiem górka pchnęły mnie do czynienia szalonych rzeczy.
Sanki w dłoń, łuki w juki ostrogi na nogi. Kto żyw zjeżdża z górki na pazurki. Widać było, że górka pomimo swojej dawnej świetności teraz jest mało uczęszczana, większość dzieciarni spędza tę zimę przed komputerem. Tylko takim starym prykom jak ja chce się zjeżdżać jeszcze na sankach. Niestety szybko zapadł zmrok i zabawa skończyła się szybciej niż się zaczęła.


poniedziałek, stycznia 11, 2010

Prolog, XPCE, pce_main_loop

SWI-Prolog w wersji 5.9.5-121-gcd55e6b

Jest bardzo dobry podręcznik do XPCE. Jest w nim opisane, jak konstruować okna, ramki, menu i całą resztę okienkowego szyku. Jednak trudno jest znaleźć schemat, szablon standardowego punktu startowego aplikacji. Dokumentacja wspomina predykat pce_main_loop/1, jednak nie ma z nim wielu przykładów (help też milczy na jego temat), poniżej jest przykład jego użycia.

:- [load]. main :- pce_main_loop(main). main(Argv):-    new(W, mainwindow),    send(W, status, full_screen).

Pierwsza linia ładuje plik load.pl, standardowo dołączający wszystkie pliki potrzebne do uruchomienia programu. Predykat main/0 służy do uruchomienia aplikacji przy wykorzystaniu kompilatora:

pl --goal=main --stand_alone=true -o bin/application -c application.pl

To polecenie można umieścić w pliku Makefile, po to by wyprodukować samodzielną zdolną do uruchomienia binarną wersję aplikacji.

Uruchomiona przy pomocy main. aplikacja będzie działała tak długo, jak długo będą działały jakiekolwiek utworzone okienka. Wraz z zamknięciem ostatniego z nich XPCE wyda polecenie halt które zakończy sesję Prologa. Chcąc testowo uruchomić nasz program wystarczy wydać polecenie main(_)., uruchomi to aplikację, jednak nie zamknie środowiska wraz z zamknięciem ostatniego utworzonego okienka.

SWI-Prolog version 5.9.5-121-gcd55e6b

There is a very good manual for XPCE. It has very descriptive in place where their describe creating windows, frames, menus and all this visual stuff, but there is hard to find a schema for standard entry point for XPCE application. Manual mention pce_main_loop/1, but there is no example usage (help is missing description for it too). Here is an example of usage:

:- [load]. main :- pce_main_loop(main). main(Argv):-    new(W, mainwindow),    send(W, status, full_screen).

First line consults load.pl, it is a standard file which will load all files required for program startup. main/0 predicate is used for compilator as a standard entry point:

pl --goal=main --stand_alone=true -o bin/application -c application.pl

This command may be a part of Makefile, and may be used to create standalone, executable binary program version.

Application started with main. will be working as long as there will be any XPCE object existing which has been created inside of main/1. When last of it will be closed XPCE will call halt and whole Prolog session will be over. To run application in test mode you have to just call main(_)., it will run application, but Prolog session will remain after close of last window.

sobota, stycznia 02, 2010

Granice świąt

Znowu mnie wzięło na wspomnienia, chyba się robię starą nudną dupą. Ostatnio pisałem o tym, że większość przyjemnych zdarzeń ma dla mnie przypisany swój indywidualny charakterystyczny zapach. Tak jak wyprawa na Kasprowy powiązana jest z zapachem kremu na odmrożenia, tak święta Bożego Narodzenia kojarzą mi się z zapachem woskowej pasty do podłogi oraz obieranych pomarańczy. Tym razem jest coś, co nie jest zapachem, a służy do wyznaczania granicy, wiem kiedy się zaczynają, a kiedy kończą święta.

Wydarzeniem które rozpoczyna je, dla mnie, to chwila z którą choinka zostaje ubrana. Czasem ta chwila jest bardzo wcześnie, na początku grudnia albo i nawet pod koniec listopada. Lubię czuć świąteczną atmosferę, a te migoczące prądożerne lampeczki wyjątkowo dobrze mnie w tym wspomagają. Chwila w której święta definitywnie i nieodwołalnie się kończą to koncert noworoczny z Wiednia. Pamiętam jak oglądałem go, będąc jeszcze gówniarzem, razem z ojcem i było to w czasach gdy w TV było tylko kilka programów, a Kevin tak bardzo nie nużył. Teraz, gdy jestem już na swoich włościach, obwieszczam koniec świąt oglądając ten koncert.

Zastanawiające jest, jak bardzo świeckie się robi Boże Narodzenie...