niedziela, 19 grudnia 2010

Mikołajowych moc prezentów

Sława!
Grudzień nadszedł. Rok chyli się ku końcowi, a niebo śniegiem sypnęło z rękawa, to i Mikołaj gorszy być nie chciał kilka prezentów niespodzianie przed Wigilią nam podrzucił. 
Pierwszym z nich o którym słów parę wspomnę to nowa, jubileuszowa, dziesiąta wersja IntelliJ Idea. Twórcy chwalą się szeregiem nowych możliwości, niestety, trochę wstyd przyznać, nadal nie wykorzystuję szeregu możliwości tego IDE, więc w całkiem sporej mierze muszę wierzyć na słowo, że jest lepiej ;) Na moje dość krótkie doznania z obcowania jednak śmiem stwierdzić, że nowa wersja istotnie sprawia wrażenie sprawniejszej, więc chyba przynajmniej nowy mechanizm indeksowania istotnie działa szybciej. W każdym razie jakoś się do Idei przyzwyczaiłem i pracuje mnie się w niej sympatycznie.

niedziela, 21 listopada 2010

Siećkierowcy tempomatu ustawianie

Sława!
Ostatnimi czasy zajęć wszelakich namnożyło mi się niczym zajęcy na wiosnę, więc i dzienniczek zaniedbany troszeczkę został. Na szczęście Jego, Szanownych Czytelników oraz osoby autora skromnej jedno z nich sposobność do wpisu świeżego uczyniło. Otóż okazji w tym okresie szalonym do obcowania ze świeżymi wersjami rozwojowymi Selenium 2 i WebDriver mam, aż za nadto. A oseski te, jak to oseski cierpią katusze chorób okresu dziecięcego w ilościach, że niejedna orda Tatarzynów Dzikie Pola pustosząca drobną hulajpartią się wydawać może.

wtorek, 2 listopada 2010

Impresji pojubileuszowych garść parę...

Sława!
W ostatni czwartek października odbyło się jubileuszowe, dziesiąte już spotkanie Szczecińskiej JUGi, na którym toż to i sługa Waszmościów uniżony zaszczyt miał się pojawić. Po prawdzie i szczerością przepełnion, stwierdzić muszę, iż rozpisywać o wrażeniach specjalnej potrzeby nie odczuwam antycypując, że Imć Darkowi starczyłoby gromkie „Było Git!”. Los jednak chce inaczej, a skoro słowo się rzekło, to i kobyłka u płota być musi. Obiecałem parę słów krytyki, to przyzwoitość nakazuje się wywiązać. Niestety. ;)
Zacznę więc od zastrzeżenia, że jakikolwiek obraz wrażeń mych skrzywiony wyjdzie, to niech Szanowni Czytelnicy przyjmą łaskawie do wiadomości, że podobało mi się. Naprawdę. Jak bum cyk cyk!
No to teraz ognia Rufusie!

piątek, 15 października 2010

Jubileuszowe X spotkanie Szczecińskiej JUGi

Sława!
Wakacje minęły i oto niczym feniks z popiołu, spotkanie Szczecińskiej JUGi postanowiło wstać z kocyka, otrzepać się z piasku i szerokim gestem zaprosić Nas do siebie. Tym razem powody do radosnej i niczym nieskrępowanej krytyki po swojej prezentacji, w ostatni październikowy czwartek, zamierza dać nam Darek „Lock” Łuksza. O dziwo, nie będzie (wreszcie?) o testowaniu, tylko słów parę o projekcie EGit w którym to się rączo On udziela. Tak więc nie zostaje mi nic innego niż postraszyć Darka, że się zjawię, a Szanownych Czytelników równie gorąco zachęcić do współudziału.
Do zobaczenia w sali 128 WIPS (ZUT), 28.X.2010 o godzinie 18:00

wtorek, 10 sierpnia 2010

Bzycząco pozorowane obiektów wspaniałości.

Sława!
Tak to przypadkiem zupełnym ostatnimi czasy potrzeba mnie naszła napisania paru testów jednostkowych. Ponieważ nieszczęścia parami chadzać lubują, to do potrzeby tej doszła potrzeba upozorowywania obiektów, a że afektem darzę w tym celu podbudowę Mockito, to nie zastanawiając się Mockito w dłoń, hajda na koń, Baśkę uwolnić od zbója! Uwalnianie idzie gładko, Tatarzyn umyka, że kurz wstrzymuje ruch lotniczy na połowie kontynentu, to lecim na Szczecin bez zagrychy. Aż tu nagle jak mi NullPointerException z siurpryzy między oczy nie przydzwoni, aż się moje testy nogami nakryły.
 - O Ty! W ząbek czesany figlarzu! Ładnie to tak zza węgla bez uprzedzenia po zębach przygarowywać? - mu wygarniam, a ten nic, tylko szczerzy się jak głupi do sera i repetę zasuwa. Ale nie takie cwaniaki z nami pogrywać próbowały, czyż nie proszę Szanowego Państwa? Trzeba wziąć ino sprawę rozumowo, a nie sercowem uczuciem. Takoż więc należy się urwipołciowi dokładnie przykapować i detalicznie inspekt przedstawić. Kod mój niniejszym się przedstawia:
ClassImplentingIface ciff = Mockito.mock(ClassImplentingIface.class);

Mockito.when(ciff.doSomething(3)).thenReturn("ReturnedValue");

assert "ReturnedValue" == ciff.doSomething(3);
Gdzie ClassImplementingIface jest klasą w języku groovy, a objawiony wyjątek to:
java.lang.NullPointerException at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) at com.blogspot.pacykarz.Testowa.test(Testowa.groovy:19)
Jak widać wyjątek rzuca się już przy konfiguracji stworzonego pozoranta, a śledztwo szczegółowsze wykazuje, iż próba wywołania jakiejkolwiek metody na nim skutkuje podobnym wyjątkiem. Dogłębniejsze rzucenie wzroku narządem i winnego mamy! Otóż jest nim, jakże zacny i szanowany skądinąd, mechanizm mopowania, którego metody w tej sytuacji też są pozorowane przez Mockito i stąd cały ten ambaras. Jak więc wyjść z twarzą i po honorowemu z zajścia?
Sposób pierwszy i niezawodny, to pozorować zamiast klasy jej interfejs(y). Szparko wszystko zaiwania wygalantowanie, że tylko pozazdrościć. Pozazdrościć jeżeli pozorowana klasa nie implementuje interfejsu, który możemy wykorzystać. Co wtedy? Wtedy niestety są ograniczenia i dwudziesty stopień zasilania. Pochylmy się znów nad egzamplą:
//This working always:
Iface mockedIface = Mockito.mock(Iface.class);
Mockito.when(mockedIface.doSomething(Mockito.anyInt())).thenReturn("ReturnedValue");

assert "ReturnedValue" == mockedIface.doSomething(3);
Mockito.verify(mockedIface, Mockito.times(1)).doSomething(Mockito.anyInt());

//This not working with matchers
ClassNotImplentingIface mockedClass = Mockito.mock(ClassNotImplentingIface.class, Mockito.withSettings().extraInterfaces(GroovyInterceptable));

Mockito.when(mockedClass.doSomething(3)).thenReturn("ReturnedValue");

assert "ReturnedValue" == mockedClass.doSomething(3);
Mockito.verify(mockedClass, Mockito.times(1)).doSomething(3);

//This also not working with matchers, but also returns wrong verifications.
ClassNotImplentingIface spiedClass = Mockito.spy(new ClassNotImplentingIface());

Mockito.when(spiedClass.doSomething(3)).thenReturn("ReturnedValue");

assert "ReturnedValue" == spiedClass.doSomething(3);

//Be aware of given 4 times invocation instead of 1!
Mockito.verify(spiedClass, Mockito.times(4)).doSomething(3);

//This also not working with matchers and returns wrong verifications.
ClassNotImplentingIface mockedClass2 = Mockito.mock(ClassNotImplentingIface.class, new Answer() {
  Object answer(InvocationOnMock invocationOnMock) {
      if (invocationOnMock.getMethod().getName() ==~ /.*get.*MetaClass/) {
          return invocationOnMock.callRealMethod();
      } else {
         return null; /* or other default answer*/
      }
  }
});

Mockito.when(mockedClass2.doSomething(3)).thenReturn("ReturnedValue");

assert "ReturnedValue" == mockedClass2.doSomething(3);

//Be aware of given 4 times invocation instead of 1!
Mockito.verify(mockedClass2, Mockito.times(4)).doSomething(3);
Pierwszym obejściem jest dodanie do pozoranta interfejsu GroovyInterceptable, jeżeli możemy sobie na to pozwolić. Istnieje wtedy duże prawdopodobieństwo, że kod testowy będzie działać, z jednym szkopułem. Nie jest możliwe niestety używanie odpowiedników (matcher) z Hamcrest/Mockito, gdyż przy próbie ich użycia, dobrze nam znajomy NPE podstawia hakiem nogie i to tak dyskretnie, że dostajemy dość mylący komunikat o mieszaniu odpowiedników z surowymi typami.
Obejście drugie polega na szpiegowaniu obiektu. Niestety w tym wypadku nie dość, że również nie możemy skorzystać z odpowiedników, to do tego dostajemy wyniki weryfikacji zwiększone o pewien narzut z mopowania, czego mus być świadomym.
Obejście trzecie zaś to użycie przy tworzeniu pozoranta domyślnej odpowiedzi (np. w sytuacji gdy żaden z powyższych konceptów niemożliwy jest do zastosowania). Podobnie jak w drugim, tutaj także brużdżą odpowiedniki i wyniki weryfikacji, a cały myk zaś polega na obsłużeniu wszystkich żądań o metaklasy przez realną, a nie pozorowaną metodę klasy. Kto wie, może nawet mykiem tym dałoby się obsłużyć zastosowanie odpowiedników? Nie upieram się przy stwierdzeniu, że się nie da.
Ostatnim na dziś, czwartym sposobem, bardzo możliwe, że często może być najrozumniejszym, jest użycie innej podbudowy pozoranckiej dedykowanej dla grówiego, np. GMock czy inszego MockFor.

czwartek, 1 lipca 2010

Gdzie wiosna spaliną oddycha - z konferencyji impresji kilkoro

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 2010, która to odbyła się w miniony łykend (tak, wiem, że już letni, ale Niemen już był, a tytuł jakąś inspirację musi posiadać).
Na konferencję rzeczoną udaliśmy się jeszcze mocniejszą ekipą Firmowo-Jugową niż rok temu, dzięki czemu odsetek Szczecinian w całości prawdopodobnie został na tym samym poziomie co poprzednio. No i tym razem udało się przede wszystkim nie mieć tak masakrycznego spóźnienia, dzięki czemu można było wziąć udział w całości.
No właśnie w całości, więc tym bardziej pewnie warto byłoby parę słów o tym jak było napisać. A z tym mogę mieć pewien problem. Otóż, jakby nie patrzeć było fajnie i wyjazd należy zaliczyć do udanych, ale z drugiej strony jakoś do większej ilości rzeczy mógłbym się przyczepić. Cóż, starokawalerstwo pewnie wychodzi bokiem i się człek marudny staje z każdą wiosną bardziej coraz. No, ale po kolei.
Najpierw parę ogólnych słów o samej konferencji jako takiej. Na pierwszy ogień plusy:
  • Sam fakt istnienia tak fajnej konferencji.
  • Klimatyzowane (?) sale, w których udało się nie zaliczyć tzw. zgonu.
  • Porządny wyszynk (Ambrozji Testera, czyli herbaty w dowolnych ilościach, i to z cytrynką! :D) i jadła wszelakiego moc (kanapeczki, ciasteczka...).
  • Darmowy obiad (jak wiadomo podstawa udanej konferencji).
  • Obfity i w miarę różnorodny program, więc każdy mógł znaleźć coś dla siebie.
  • Kubeczek dostany (co prawda nie konferencyjny, ale darowanemu koniowi. Przy okazji szczególne pozdrowienia i podziękowania dla wielce sympatycznej wolantariuszki za trud pamięci i obdarowanie zrozpaczonego tymże naczynkiem) 
  • Identyfikator z nalepką imienną umiejscowioną rękami Samego Jacka L. (Czujecie? Tymi ręcami!) - jak tu teraz się pozbyć takiej pamiątki? ;)
  • Spoina w lokalu mieszczącym wszystkich chętnych (no i tym razem kulturalnie z zaproszeniami, anie na wydrę totalną ;)) 
Żeby zaś za miło nie było trochę minusów:
  • Niezbyt szczęśliwe rozplanowanie przestrzenne konferencji. Odbywała się ona na dwóch piętrach, zgromadziła całą masę uczestników. Niestety, foyer z gastronomią i stoiskami sponsorów znajdowało się tylko na jednym z pięter. Przez co, co godzinę tłoczyć się trzeba było po schodach to w jedną to w drugą, a i przeciskanie z wrzątkiem w ręku do najwygodniejszych nie należało. Wydaje mi się, że spokojnie można było rozdzielić chociaż częściowo „atrakcje”.
  • Podobnie z obiadem, trochę brakowało miejsca, żeby spokojnie zjeść i pogadać.
  • Nie wiem, czy tylko ja miałem takiego pecha w doborze, ale... większość prezentacji była wyraźnie niedostosowana do przewidzianego na nie czasu. Więc prowadzący często pod koniec zaczynali jechać po łebkach, przeskakiwać, a niestety tak się często składa, że to co najciekawsze to na końcu. Może warto pomyśleć o wydłużeniu sesji? Likwidację pytań z sali? Albo może bardziej zwracać uwagę na proponowaną przez mówiącego koncepcję prezentacji? Nie mam za bardzo konceptu sam jakby to sprawnie rozwiązać ze strony organizatorów (bo ze strony prezentujących, coś podpowiedzieć by się dało). W każdym razie było to pewien zgrzyt, bo to jak widzi się ile prowadzący tnie w trakcie powoduje takie lekkie wrażenie zlekceważenia. Wiem, brzydka myśl ta moja jest, ale cóż, nie będę ukrywał, że się pojawiła.
Właśnie. Prezentacje. Sól każdej konferencji. W zdecydowanej większości wybór trafny i pożywki dla rafinerii oleum pod czaszki sklepieniem dostarczające. W tym roku mój wybór padł na:
  • „Jak zapobiegać biodegradacji kodu” Jakuba Nabrdalika. Pierwsza z serii inspirowanych hitem ostatnich dni, czyli „Clean Code”. Poprowadzona interesująco, z dużą dawką humoru (a przecież z siebieśmy samych się śmieli) i uwagoprzykuwająco pogadanka jak zrobić, co by po czasie się nie narobić, jak do kodu wrócić będzie potrzeba. Świetne rozgrzanie wartościową, acz nie męczącą wiedzą umysłu.
  • „Jak można zarobić na uczciwości, przejrzystości i szacunku do klienta - kontrakty agile w praktyce” Wojciecha Seligi. Na to ostrzyłem sobie zęby od początku i w generalicji nie zawiodłem się. Było ciekawie, interesująco i aż chce się parę pomysłów Szefostwu podpowiedzieć. Szkoda jedynie, że Prezentujący wyraźnie rozminął się z czasem, przez co parę intrygujących zagadnień zostało potraktowanych koniec końców po łebkach, a zdecydowanie szkoda. Ale warto było.
  • „Liftweb - simply functional webframework” Łukasza Kuczery. Niestety. Jeśli o mnie chodzi pomyłka całkowita, a z sądząc po początkowym zainteresowaniu mógł być hit. Cóż, wyszło inaczej. Trudno wskazać mi jakieś plusy. Tremę prowadzącego rozumiem i usprawiedliwiam, ale sama koncepcja prezentacji mi się nie podobała. Za dużo na wstępie o Scali jako języku, przez co właściwie Lift nie został pokazany, tekstu na slajdach często zdecydowanie za dużo, przez co czytelność spadała dramatycznie. Na koniec dobicie nie działającymi przykładami. I zostało tylko poczucie zmarnowanego czasu, zamiast zachwytu nad technologią. Pozostaje nadzieja, że Autor się nie załamie i następna prezentacja to będą himalaje konferowania. Że to jest możliwe przekonacie się dalej i tego Autorowi ze szczerego serca życzę.
  • „Software Craftsmanship - Język wzorców językiem profesjonalistów” Sławomira Sobótki. Hmmm... Dziwna prezentacja. Niby ciekawie, niby dobrze się słuchało, ale zapytajcie mnie dzisiaj o czym była... to nie mam pojęcia! I szczerze mówiąc nie wiem czyja wina. Mówiącego, czy Słuchacza. Jedyne co mi w pamięci zostało, to to, że mi się podobało. Tak więc cała nadzieja w tym, że prezentacje były nagrywane i mają być udostępnione na serwisie Parley (o ile dobrze usłyszałem).
  • „«Clean Tests» by Uncle Paul, czyli jak pisać testy, żeby dobrze Ci służyły” Pawła Lipińskiego. RE-WE-LA-CJA. Brak słów, całkowite pozytywne zaskoczenie, wbicie w fotel, a mózg zlasowany jeszcze nie doszedł do siebie. A pewnie Szanowni PT Czytelnicy dobrze pamiętają, że ubiegłoroczna prezentacja Wujka Pawła oględnie mówiąc mnie nie zachwyciła. Normalnie, cytując klasyka, no, no, nie poznaję kolegi. Treść opowiedziana wartko, z humorem, z akcentowaniem wtedy kiedy trzeba, tego co chce się powiedzieć, utrzymując skupienie widzów jednocześnie ich nie męcząc. A co najważniejsze, to co zostało zaprezentowane wciąż mnie intryguje i nie daje przestać o sobie myśleć, zmuszając do zgłębiania tajników samodzielnie. Dlaczego ja na tej prezentacji nie byłem ze dwa lata temu? Wstrzelenie się w moje potrzeby idealne. Oby tylko mi starczyło zdolności by nauka w las nie poszła...
  • „Jeden rozmiar nie dla wszystkich, czyli NoSQL w środowisku Java” Jarosława Pałki. Nie spodziewałem się wiele, bo trafiłem na nią głównie dlatego, że równolegle nie było nic co by mnie jakoś specjalnie zachęcało, a że sala wygodna i „ileż można słuchać Waldka o Oracle-u?” to zostałem, i mimo pewnych nie dociągnięć, szczególnie z dopasowaniem prezentacji do czasu, nie był to czas zmarnowany. Chociaż z planowanych baz nie relacyjnych udało się pokazać tylko jedną, to i tak posmak nowości oraz sprawne prowadzenie wystarczyło do uznania jej za pozytywny akcent na zakończenie.
Podsumowując. Wyjazd, mimo wspomnianych wpadeczek, udany i zachęcający do najazdu hord pomorskich w sezonie przyszłorocznym. I życzę wszystkim coby było nie gorzej niż teraz. 

niedziela, 20 czerwca 2010

Małe Co Nieco dla ciała, coby przy komputerze nie paść z głodu

Sława!
Na moją niedawną rocznicę urodzin, przygotowałem drobny wypiek własnoręcznie zrobiony. Ciasteczka te, zwane w mej rodzinie kokosankami, zebrały, mam nadzieję, że szczere, całą masę pochwał, tak więc zdecydowałem się na upublicznienie przepisu. Wyrób jest prosty, i już dziecięciem małoletnim będąc przy asyście rodzicielki piekło się blachy tej przekąski. Tak więc do dzieła!
Składniki:
  • 35-40 dag kleiku ryżowego
  • 1 szklanka cukru
  • 1 paczka margaryny
  • 1 łyżeczka proszku do pieczenia
  • 5 średnich jajek
  • zapach kokosowy, ew. 10 dag wiórków kokosowych
  • dżem do przybrania
Wykonanie:
  1. Kleik ryżowy, cukier, łyżeczkę proszku, zapach kokosowy, zmiękłą margarynę i żółtka ugnieść na kruszonkę.
  2. Białka utrzeć na pianę, którą następnie dodać do kruszonki i ugnieść na jednolitą masę.
  3. Z otrzymanej masy formować małe kulki (mniej więcej wielkości orzecha włoskiego).
  4. W kulkach wyrobić palcem dziurki na dżem i je wypełnić.
  5. Piec 30 minut w wygrzanym piekarniku (temperatura piekarnika 155° C).

Spotkanie trzeciego stopnia z wytrzymało dziarską Legendą

Sława!
Tak się złożyło, że kiedy Inni postanowili brać udział w wydarzeniach jawnych (a propos, może ktoś się podzieli wrażeniami?), sportowych lub kulturalnych rangi światowej, skromną mą osobą na wydarzeniu kulturalnym rangi lokalnej być postanowił jam. Wydarzeniem tym, dość sporym jak na Szczecin, była wizyta Żywej Legendy Bluesa czyli koncert Johna Mayalla we Free Blues Clubie.
Będąc szczerym, to wybrałem się głównie za namową Ojca mego i aby zrobić mu tę przyjemność, gdyż blues raczej nie jest moim ulubionym gatunkiem (aczkolwiek cenię sobie bardzo twórczość niejednego bluesmana). Szedłem także lekko z duszą na ramieniu, gdyż moja znajomość twórczości Mayalla raczej definiowała ją jako ciut smętną. Tymczasem rzeczywistość całkowicie przerosła pozytywnie wszelkie moje oczekiwania! Było krótko mówiąc kapitalnie.
Przede wszystkim Gwiazda i Jego zespół okazali się bardzo sympatycznymi i kontaktowymi ludźmi (podczas występu tzw. supportu obecni byli wśród publiczności i można było sobie nawet uciąć pogawędkę), i którym, co było widać gołym okiem, wspólne granie sprawia sporo frajdy. Do tego nagłośnienie fantastycznie zestrojone, wszystko było słychać, a żołądek z uszami nie miały ochoty uciec. No, ale cóż, ich dźwiękowiec nie wie, że powinny się palić zawsze wszystkie diody na konsolecie ;)
Co do samego repertuaru. Mimo iż trasa jest trasą promującą najnowszy album Mayalla p.t. „Tough”, to na moje niewprawne ucho sporo było utworów z lat wcześniejszych. Koncert zaczęty został bardzo energetyczną wersją „All Your Love”, bardziej przypominającą wersję Garego Moore'a, niż klasyczne dla Mayalla wykonanie Bluesbreakersów. Znalazło się miejsce też dla „Chicago Line”, „Help Me” i chyba też dla „So Many Roads” (Większość utworów była zapowiadana, ale cóż... pamięć już nie ta, no i nie znajomość twórczości też wyszła). Z nowych utworów prawie pewien jestem, że znalazły się „Playing With A Losing Band”, „How Far Down”, „Train To My Heart” i „That Good Old Rockin' Blues”. Ale, że to prawidłowe elementy playlisty nic sobie uciąć nie dam. Ważne, że wszystkie zagrane zostały z kopem, wykrokiem, pasją i radością grania dostarczając słuchaczom niezwykle energetyzujących kratochwil. Na takie koncerty aż nogi same niosą!
Szkoda mi więc jedynie, że serce me smutkiem napełnia fakt, iż pewnie polscy (szczecińscy) akustycy jeszcze kupę lat będą wyznawcami chorej szkoły „bas z głośnością na maksa i jeeeedziemy!” psując każdy koncert w tym kraju (mieście), mimo iż jak widać na załączony obrazku jednak można...

wtorek, 25 maja 2010

Review: Groovy In Action

Sława!
Piszę do Waszmościów notkę po angielsku, nie wiem, czy ostatnią na pewno pierwszą. Jednakże niech serca Wasze strachu nie znają, gdyż zamiaru przejścia na mowę tę zagraniczną nie planuję i wyrażanie myśli w rodzimym autoramencie kontynuować mam zamiar tak długo, jak Los łaskawy zapiski te prowadzić pozwoli. Skąd więc ten wybryk nie jaki? Otóż dłużnikiem będąc Szanownych Wydawców niżej opisanej księgi recenzję w mowie przez Nich rozumianej zamieścić zobligowany jestem. Niniejszym ino nadzieję posiadam, iż błędów i wypaczeń językowych sporo popełnionych nie zostało. Miłej lektury!

This note is in English (or Almost-Like-An-English)  language, because this review should be readable and understandable also by Publishers of reviewed book, and this doesn't mean that I switch language of this blog to English. Also, I hope that it isn't too many language errors and mistakes. Enjoy!
Some time ago I decided to use Groovy language in one of my project. Because it is my first Groovy project, I also wanted to read a good book about it. In courtesy of Manning Publications and Szczecin JUG I have opportunity to read first edition of Groovy in Action.
This book is split into three parts. First one is about language, second is about advanced features which coming with Groovy distribution, and third contains some hints and guides, which could help in day-to-day work with Groovy.
Cause, this book is about something new to me, is from „In Action” series and also I am „in action” with my project, I've read (and still reading) it with „in action” style. What it means? It means, that in given time, I'm reading this section of book which exactly I already need, instead of reading it page-by-page. Now I can say that with this book this kind of reading is pleasure. Easy-reading language (this is very important to me, as I'm not native English speaker) combined with easy-understanding examples makes learning about features of Groovy quite easy, interesting and enjoyable. Very good sectioning makes jumping through book (in case of looking forward or backward in our own learning process) content also easy.
What about content of book's part? I've read all of first part, cause knowing features of language is a basement of using it, and the only word which I can say about this part is „Great!”. It contains exactly what is needed to understanding how to use Groovy, what is possible to do with language, and how. After reading it I haven't almost any problems with understanding more advanced examples (found in other parts of the book, or in the web) at language level (logical level is other story ;)).
Second part I read more selective, so there are some sections at which I've took only a look (e.g. like most part of chapter about integrating). But in general, whatever I've read it is still in high level. Although sometimes it was quite hard to understand how something works without little help of external materials. I think, that in some places there could be more examples or more detailed explanation, especially in chapter about builders (This is powerful and useful feature of Groovy, but only reading and making examples from book is not enough to good understanding theirs idea, I think).
And at least, the last, third part. To be honest, I only take a short look at the most part of it. Why? Cause chapters are very specific. Cheat sheets or tips'n'tricks can be (and they are) useful quite often, but advanced Windows scripting or unit testing using JUnit isn't something important for me (as far as I don't script Windows or not use JUnit), so I only took a look, say „hmmm... okay...” and read something other (but if someone needs it, I think these chapters could be handy).
So, to sum up. A few years ago Phil Collins sang about groovy kind of love, today I can say that Groovy is kind of love. And this book is proof of this fantastic feeling (especially first two parts), even with its small weakness, which, I hope, will be polished in incoming second edition.

P.S. The biggest weakness of this book? It isn't in Polish, but maybe in future... Who knows...

poniedziałek, 10 maja 2010

Berliński księżyc nad szczecińskim stolcem

Sława!
Jak może Szanownym Czytelnikom tego bloga wiadomo, do moich ulubionych rozrywek należy lekka i przyjemna sztuka operetki. Dlatego też nie mogłem sobie odmówić, skoro już pojawiła się takowa okazja, obejrzenia inscenizacji sztandarowej pozycji niemieckiego kompozytora Paula Linckego p.t. Frau Luna w naszej kochanej Operze Na Zamku.
Przedstawienie to wystawiane jest w języku oryginału, a więc po niemiecku, i zrealizowane zostało we współpracy z teatrem ze Schwedt. Soliści to głównie artyści niemieccy (z jednym, ale za to jakim, wyjątkiem, gdyż w roli Teofila występuję popularny aktor scen warszawskich Cezary Morawski), natomiast chór i tancerze to znana i lubiana miejscowa trupa.
Operetka zrealizowana, jest dokładnie tak jak tygrysy lubią najbardziej, i jak powinna wyglądać operetka: stroje „z epoki“ są, dekoracje bogate - są, cekiny tam, gdzie trzeba - są, świecące schody rodem z wodewilu, a jakże, także są. Dzieło same w sobie też kwintesencja tego rodzaju rozrywki, sporo humoru (co prawda bariera językowa trochę przeszkadza, ale na szczęście mamy obecnie tłumaczenia wyświetlane w trakcie przedstawienia), wpadające w ucho melodie (w tym dwa bardzo znane standardy - „Das macht die Berliner Luft, Luft, Luft“ i „Schenk mir doch ein kleines bisschen Liebe“) oraz sympatycznie zagrane role, wśród których chciałbym wyróżnić za „sceniczność“ Hansgeorga Ganterta (w roli Egona) oraz Uwe Schmiedla (August), aczkolwiek zaznaczam, iż wszyscy wykonawcy zasługują na oklaski. Podsumowując warta swoich pieniędzy i czasu porcja dobrej, śpiewno-muzycznej rozrywki!

Żwawe sreberko szczurkiem zawijane

Sława!
Jakiś czas temu opisywałem odpowiednik jabłczanej rtęci dla systemu spod znaku okien. Tym razem chciałbym wspomnieć o podobnym projekcie przeznaczonym dla pingwinka.
Jak dotąd korzystając ze swoich systemów linuksowych, używałem aplikacji o wdzięcznej nazwie gnome-do. Jednakowoż korzystając z okazji, że wyszła nowa edycja używanej przeze mnie dystrybucji Ubuntu, podjąłem decyzję o próbie skonfigurowania sobie wreszcie porządnie systemu pingwinkowego na moim dzielnym, pracowitym, aczkolwiek jednak odstającym technologicznie laptopie. Na początek zamieniłem dotąd na nim postawione Ubuntu, na najnowsze wydanie XUbuntu, w którym to lekko ciężarne, niczym tegoroczny bolid F1, Gnome zastąpione jest popularnym szczurkiem, czyli XFCE.
Zamiana ta wymusiła także na mnie rozglądnięcie się, za alternatywą dla wspomnianego gnome-do (muszę przyznać, że bez aplikacji tego typu chyba już nie umiem wygodnie korzystać z komputera). Mój wybór padł na sympatycznie zapowiadające się narządko mieniące się Kupfer. Nazwa może niezbyt zachęcająca, ale sam programik jest całkiem zacny. Lekki, nieźle wyglądający, do tego wyposażony w całkiem pokaźną kolekcję wtyczek, dzięki którym zaparza kawę, krawaty wiąże, przerywa ciąże. Jeśli dodać, że projekt ten posiada własne PPA, przez co łatwo będziemy na czasie z wersjami, nie zostaje mi nic innego jak tylko szczerze polecić.

sobota, 24 kwietnia 2010

Podwójny zastępca całkowitego dowódcy

Sława!
Jak może Szanownym Czytelnikom wiadomo, skromna ma osoba należy do osób wygodnickich niezmiernie, i przy wyborze także oprogramowania stawia bardzo często własną wygodę przed możliwościami, trendami, ideami i innymi aspektami mogącymi na tenże wybór wpłynąć. Stąd chociażby w „konflikcie systemów” siedzę okrakiem niczym baron Münchhausen na kuli armatniej, bo używam na co dzień i Windows i Linuxa (na dziś Ubuntu). Aczkolwiek nie ukrywam, że przynajmniej w zastosowaniach domowych chciałbym zmienić tegoż „łyndołsa” na „łubuntu”, że tak powiem „na stałe” (a przynajmniej jako ten częściej używany system). Tą przeszkodą stającą mi na drodze k’temu celowi jest brak wygodnych „zamienników” dla części aplikacji, których pod Windows używam bardzo często. Wspomniane aplikacje to Miranda IM, foobar2000 oraz Total Commander.
W tym tygodniu wydaje się, że odpadł problem tego ostatniego. Po niezbyt udanych próbach przyzwyczajenia się do gnome-commandera czy Krusadera  nadzieja ma na znalezienie wygodnego odpowiednika zmalała praktycznie do zera. Aż tu nagle, kolega Gozdal, raczył mnie poinformować, że „klon Nortona z którego on osobiście korzysta, jest też dostępny pod Linuxa. Czym prędziej przystąpiłem więc, niczym młoda lekarka na rubieży, do instalacji. Uruchomiłem, wykorzystuję i jak dotąd (odpukać) jestem zadowolony.
 
Wzmiankowaną aplikacją jest niejaki Double Commander. W celu instalacji pod Ubuntu należy pobrać odpowiedni dla nas pakiet .deb ze strony projektu, a następnie zainstalować korzystając z polecenia dpkg -i nazwa_pobranego_pakietu. Ze strony można też pobrać polski plik językowy, który należy (jeśli chcemy wykorzystać) umieścić w katalogu /opt/doublecmd/language.
Tak więc, wygląda na to, że do znalezienia zostały mi już, tylko i aż, wspomniane zamienniki dla Mirandy (Pidgin, Empathy czy Kopete jak na razie, to se można o kant d... potłuc) i foobara2000 (całkiem miło wygląda tandem mpd+sonata, ale nie odtwarza MPC SV8, a to dla mnie wymóg obowiązkowy. Swoją drogą, zdaje się nie ma możliwości odtwarzania tych plików „z gotowca” pod Ubuntu 9.10, a kompilować samemu mi się nie chce...).

piątek, 23 kwietnia 2010

Nie taki diabeł straszny, czyli gorące wrażenia po debiucie.

Sława!
Popołudniem pogodnym, czwartkowym miałem niewątpliwą przyjemność zadebiutować jako spiker na spotkaniu naszej kochanej Szczecińskiej JUG, gdzie wypowiedziałem tytułowe słów parę, a nawet kilka. Ci co nie byli niech żałują, a Ci co byli, mam nadzieję, nie żałują. ;)
Przed spotkaniem z głodną wiedzy (jak się okazało niektórzy głodni byli nie tylko jej ;)) Szanowną Publicznością (oklaski, oklaski, oklaski ;)) odczuwałem pewien niepokój i tremę, które to na szczęście nie zrujnowały wystąpienia, a przynajmniej nie w stopniu większym, niż wredne choróbsko objawiające się chociażby w postaci zakłóceń audiosfery na sali i koncentracji prelegenta, co pewnie miało wpływ na płynność przedstawiania tematu.
Co do reszty, przede wszystkim zadowolony jestem z tego, że udało się pokazać to, co było zaplanowane, i, że mimo pewnych, nazwijmy to potknięć (ot, czasem powiedziało się coś za mało, czasem za dużo względem planu), udało się także zgrabnie, jak nieskromnie sądzę, zmieścić w czasie bez zbytniego przyspieszania i cięcia slajdów przy końcu. Ba, nawet został czas na drobne dyskusje po wystąpieniu, oraz na losowanie nagród. Fajnie też, że udało mi się wylosować nagrodę, dla jednego z bardziej aktywnych uczestników na sali, czyli i Los bywa sprawiedliwy ;).
Co mnie się nie podobało? Frekwencja, czyli coś koło 15 osób, z czego tylko 4 spoza Firmy (jednakże, Jaffa, miło było spotkać po latach, wpadaj częściej :)). Czy to wina podmiotu, reklamy czy innych przyczyn, to temat na całkiem ciekawą dyskusję (tym bardziej, że trochę firm „jawowych” w okolicy jest).
Nie podobało mi się też, tracenie czasem na chwilę wątku przez mą osobę, oraz wpadki z uruchamianiem danych przykładów (omsknie się kursor czasem i nieszczęście gotowe ;)). Cóż, człowiek chciałby być zbyt perfekcyjny czasem... Zostaje mieć nadzieję, że Widzom to nie przeszkadzało zbytnio ;).
Tak więc teraz zostaje poczekać na kolejnego Odważnego (a nawet NieBardzoOdważnegoAleChętnego), mając nadzieję, że będzie to krócej niż okres między dwoma ostatnimi spotkaniami. Propozycje tematów na które moja skromna osoba posłuchałaby parę mądrych słów podałem w wątku na stronie JUGi, gdzie także zamieszczone są materiały z wczorajszego już spotkania.
P.S. Ponowię tutaj też pytanie z powyżej wspomnianego wątku. Czy któraś/któryś z P.T. Czytelników ma jakieś doświadczenia z publikowaniem na SlideShare?

czwartek, 22 kwietnia 2010

Cierpliwości cnotą obdarzeni wynagrodzeń zostali - cz. II

Sława!
Jakiś czas temu miałem okazję informować Szanownych Czytelników mych wypocin o upublicznieniu pierwszej z prezentacji przedstawionej w ramach ubiegłorocznej Konferencji.
Z wiadomych powodów w tym roku nie możemy się rozkoszować uczestnictwem, aczkolwiek, jak poinformował wczoraj Paweł, możemy zaznać krotochwil z małą imitacją w postaci memorabiliów z ubiegłego roku.
Wszystkim, dzięki którym ujrzały one światło dzienne składam serdeczne i gromkie podziękowania, a pozostałą część ludzkości szczerze namawiam na seanse. 

sobota, 17 kwietnia 2010

VIII Spotkanie Szczecińskiej JUG - trema debiutanta

Sława!
Prawie rok po poprzednim spotkaniu (mam nadzieję, że na następne aż tak długo czekać nie będzie trzeba), 22. dnia kwietnia, odbędzie się kolejne, już ósme spotkanie. Tym razem, jak można zauważyć w zapowiedziach, produkować się będzie moja nieskromna osoba. Debiut całkowity na JUG, co gorsza ostatnie publiczne wystąpienie miałem, o ile pamiętam, dobre pięć lat temu z kawałkiem (ściślej mówiąc w trakcie obrony pracy magisterskiej). Biorąc pod uwagę, że wystąpienia takie (w moim odczuciu) nie są moją mocną stronę, więc trema jest nie mała.
Czego się możecie spodziewać? O ile mi się uda zrealizować własne zamierzenia (czyt. nie zeźre trema, czasu wystarczy, w gardle nie zaschnie, nic się, odpukać, nie zepsuje, etc.) chciałbym P.T. Uczestnikom Spotkania zaprezentować możliwości podbudowy testowej o wdzięcznej i dźwięcznej nazwie TestNG (co można wywnioskować z tytułu spotkania ;)), przy czym przyjmując założenie, że przynajmniej większość wspomnianych Uczestników miała styczność z JUnit, nie zamierzam dokonywać porównywania tych dwóch podbudów wprost, licząc na wyciąganie wniosków samodzielnie. Znaczy się, nie spodziewajcie się przykładów jak to samo zrobić w tym i w tamtym. Myślę, że ze względu na specyfikę tych podbudów, a także znaczne podobieństwa i różnice, nie ma to większego sensu i mogłoby raczej co najwyżej zamotać niż wyjaśnić.
Zamierzam również pokazać trochę kodu w działaniu, mimo, że Paweł Szulc na ubiegłorocznej Javarsovii był bardzo zadowolony z efektu wstawiania zrzutów ekranowych do prezentacji, ale w tym wypadku jednak nie będzie jakiś mocno czasochłonnych kompilacji (co innego przekompilowanie i umieszczenie jakiegoś potężnego serwisu sieciowego, tu zrzuty ekranowe pomagają oszczędzić mocno na czasie ;)). Jeśli zostanie czasu nie widzę przeszkód w odpowiadaniu na wątpliwości Słuchaczy przez szybkie podkodowanie tego i owego.
Czego zaś na pewno nie będzie? Niestety, nie uda mi się zaprezentować jednej, bardzo ciekawej i potężnej funkcjonalności dostarczanej przez TestNG ze względów... technicznych (w myśl zasady, że szewc bez butów chodzi, to ja sprzętowo do tyłu jednak jestem...). Jednakowoż coby nie zniechęcać, to co to jest wspomnę na prezentacji dopiero. Dodam tylko, że ten „pominięty” temat to jest dobry materiał na osobną prezentację.
Nie będzie też obcowania z prawdziwym guru, gdyż tak jak P.T. Czytelnikom pewnie wiadomo, prezentacja ta powstawała przez tak zwane „rozpoznanie bojem” i raz, że codziennie się dowiaduję czegoś nowego, a dwa, że mogę się nie zdążyć dowiedzieć przed prezentacją. Szczególnie jeżeli chodzi o jakieś bardziej wymyślne i zaawansowane „sztuczki i kruczki”.
Podsumowując, serdecznie zapraszam, mając jednocześnie nadzieję, że uda mi się spełnić zarówno Wasze jak i moje, własne oczekiwania. A ponieważ zostało jeszcze trochę czasu, to jeśli ktoś ma jakieś uwagi, zachcianki i inne roszczenia co do prezentacji to może je umieścić w komentarzach. Obiecuję, że się nad nimi zastanowię, natomiast nie obiecuję pozytywnego rozpatrzenia. ;)

poniedziałek, 22 marca 2010

Coopera test widoczkowy

Sława!
Tak sobie dzisiaj z głupia frant postanowiłem, przy okazji porządków robienia na domowym, wysłużonym sprzęcie, zrobić teścik porównawczy (Peacekeeper) zainstalowanych przeglądarek internetowych. Do testu stanęły w swych najnowszych stabilnych wersjach IE 8, Firefox 3.6 i Opera 10.51. Wyniki osiągnięte prezentują się następująco:

Wnioski? Ano jeden taki, że nie ma co używać IE ;) (zaznaczam przy tym, że Complex graphics nie jest wliczana do końcowego wyniku). A drugi, że jeśli chodzi o starsze ciut maszyny, raczej nie ma wielkiego znaczenia do wyboru tej czy innej przeglądarki nic innego, niż subiektywna wygoda. Trzeci, że nawet mimo niewykorzystywania w pełni mocy nowego silnika Carakan (nie posiadam SSE2 w procku) dobrze intuicyjnie przeczuwałem, że Opera najlepiej działa ;)

P.S. Wynik podany w komentarzu przez Pawła, trochę mnie zaintrygował. Dlatego też "zmusiłem się" do zrobienie testu dla Chrome 4.1. Cóż, u mnie jednak, Chrome od Fx nie odbiega znacząco.

niedziela, 21 marca 2010

Mleczka kauczukowego swojskie bajanie...

Sława!
Modernizując zainstalowaną u siebie dystrybucję LaTeXa zwaną MikTeX z wersji 2.7 do wersji 2.8, jak to zwykle bywa, nastąpiły drobne kłopoty z włączeniem mu ludzkiej (polskiej) mowy (a raczej piśmiennictwa ;)). Problem normalnie błahy, tym razem stał się nadzwyczaj upierdliwy, a wszystko przez zmienioną deczko architekturę nowej dystrybucji.
Otóż, co troszkę dziwne, mus jest powtórzyć standardowe w tej sytuacji kroki, zarówno w trybie admina jak i zwykłego użytkownika. Tak więc ścieżka postępowania wygląda obecnie tak:
  1. Uruchamiamy program konfiguracyjny dla admina (Maintenance (Admin)|Settings)
  2. Przechodzimy na zakładkę Languages i zaznaczamy ptaszka przy opcji polish
  3. Następnie wybieramy zakładkę Packages i w drzewie dla gałęzi Language Support|Polish zaznaczamy pakiety polski oraz Polish hyphenation patterns
  4. Zatwierdzamy przyciskiem OK. Powinny dociągnąć się brakujące pakiety, a baza formatów zostanie przebudowana.
  5. Uruchamiamy program konfiguracyjny dla zwykłego użytkownika (Maintenance|Settings)
  6. Na zakładce General naciskamy przycisk Update Formats
  7. Zatwierdzamy przyciskiem OK
  8. W większości przypadków dokumenty z pakietem polski powinny się teraz grzecznie kompilować :) 

czwartek, 18 marca 2010

Uprzednio żyżnego pola ryżowego kłopoty

Sława!
Nie tak całkiem odległy czas temu świat obiegła kolejna informacja o kłopotach w samochodach marki Toyota. Tym razem "bohaterem" całego zamieszania była tajemnicze, jak na razie, zablokowanie się pedału gazu w jednym z egzemplarzy modelu Prius. Całe to zamieszanie pewnie przeszłoby obok mnie niezbyt zauważone, gdyby nie jeden drobny fakt.
Mianowicie głównym podejrzanym tej awarii było (nadal jest?) oprogramowanie obsługujące pedały w tymże nowoczesnym pojeździe (taki analog do lotniczej technologii fly-by-wire). Ten fakt oraz późniejsze stanowisko producenta (w skrócie: "to niemożliwe, testowaliśmy") wywołało szereg komentarzy osób związanych z wytwarzaniem oprogramowania i jego testowaniem. Myślę sobie, że każdy mający coś wspólnego z tymi czynnościami znajdzie w nich interesujące spostrzeżenia, a szczególnie w:
  • artykule Davida M. Cummingsa w L.A. Times, gdzie Autor poprzez przykład z własnego doświadczenia (misja Mars Pathfinder) zwraca uwagę, że nieumiejętność powtórzenia danego błędu, nie oznacza, że on nie wystąpił lub, że nie wystąpi kolejny raz. 
  • Oraz dwa wpisy Jamesa Bacha na jego blogu - Porady dla prawnikaAnaliza całej tej historii, w których to Autor wykorzystuje ten przykład do pokazania różnego rodzaju pułapek, które czyhają w procesie produkcji i testowania oprogramowania.
Miłej lektury!

niedziela, 7 marca 2010

Opery odsłona najnowsza

Sława!

Tak ciut niespodziewanie przeglądarka Opera doczekała się nowej odsłony, tym razem oznaczonej numerkiem 10.50.

Nowa odsłona przynosi, co zrozumiałe, nowości. A jakie? A takie:

  • nowe silniki - Carakan (dla JavaScript), Presto (dla HTML, CSS i takich tam) oraz Vega (grafika - cokolwiek to oznacza), mają sprawić, że wszystko to, co oglądamy sobie w sieci będzie szybsze, ładniejsze i w ogóle. No i po tym tygodniu użytkowania muszę przyznać, że istotnie jest lepiej niż było. Mam subiektywne odczucie (ciekawe na ile to efekt placebo?), że przynajmniej niektóre strony chodzą szybciej. Mam obiektywne odczucie, że niektóre nie najlepiej (a właściwie to do d...) napisane strony, pod Operą obecnie chodzą mniej więcej tak, jak chodziło o to twórcom (tu można by pewnie zacząć fajny wątek o poprawnej interpretacji dokumentacji JavaScriptu chociażby, ale nie czuję się na siłach udzielać. Aczkolwiek poczytać by można, byle nie teksty "fanbojowskie" ;))
  • tryb prywatny (aka porno) - czyli wzorem konkurencji, przeglądanie sieci "bez zostawiania śladów" w historii, kaszy i tak dalej. O tyle fajnie rozwiązany, że można sobie go ustawić per karta, lub per okno.
  • widżety poza przeglądarką - czyli widżety również osobne, bez konieczności odpalania samej przeglądarki. Nie wypowiem się, bo nie używam :)
  • zmiany w interfejsie - czyli wizualne przypolerowanie. Opcje które mi się bardziej rzuciły w oko:
    • można sobie ustawić zamiast paska menu, przycisk O, taki analog przycisku Start z Windows.
    • zmieniony sposób powiadamiania użytkownika na zbliżony do znanego z konkurencji (w tym niemodalne powiadomienia)
    • zmieniona lista rozwijalna przy wpisywaniu/wybieraniu adresu
    • zmieniony sposób prezentacji wyszukiwania na stronie

Dla zainteresowanych pełna lista zmian, a dla wszystkich to stwierdzam, że zmiany generalnie na plus, i nadal mi z Nią wygodnie (przykro mi Mozille i inne Chromy ;)).

czwartek, 25 lutego 2010

Historia lubi się powtarzać, albo nowy wygląd fb2k...

Sława!

Ponad rok temu żywot tego dzienniczka zaczął się niewinnie od wpisu dotyczącego pudrowania noska pewnemu odtwarzaczowi muzycznemu. Czas mijał, wychodziły nowe wersje odtwarzacza, a ja też zmieniłem sobie jego wygląd na bardziej mi odpowiadający.

Jednakże odtwarzaczem ciągle jest foobar2000, a autorem skórki ciągle Br3tt. Otóż w roku ubiegłym objawił on cudo zwane XChange (w najnowszej wersji kompatybilny z fbk 1.0), charakteryzujący się przede wszystkim wysoką konfigurowalnością bez zbytniego dłubania w skryptach. Rozmieszczanie komponentów jest bajecznie proste, dzięki czemu nawet największy laik sobie poradzi i dostosuje do swoich potrzeb (oczywiście po przeczytaniu instrukcji obsługi). Zdecydowanie polecam!

P.S. Prezentacja się tworzy, ale sami wiecie. Olimpiada.

wtorek, 9 lutego 2010

Marudzenia, marudzenia aż po horyzontu kres...

Sława!

Tak coś mija czas, a blog ten pokrywa się śnieżnym puchem niczym świat za oknem (Ach! Uwielbiam Prawdziwą Zimę, szkoda tylko, że mrozy ze słońcem tak krótko, a soli na ulicach tak wiele) więc postanowiłem sobie trochę pomarudzić, a może nawet wypłakać się w jakieś ramionko życzliwe ;)

Co tam więc słychać u mnie? Ano jak Szanowni Czytelnicy pewnie wiedzą, zabrało mnie się na poznawanie w praktyce nowych technik, dzięki Leszkowi i wydawnictwu Manning w boju tym zażartym wsparty jestem autoramentem cudzoziemskim, czyli Groovy In ActionPozycja, przyznam się bez bicia, zacna, aczkolwiek na recenzję spod pióra mego trzeba będzie poczekać chwil kilka, aż chociaż po łebkach przelecę rozdziały "o mniej (chwilowo) intrygującej zawartości". W każdym bądź razie, dla mnie, cała ta idea książka za recenzję, którą mogę wykorzystać dzięki Jugowi, jest czymś fantastycznym. Przy okazji, jeśli ktoś zainteresowany czyta, to wiadomo może czy są gdzieś dostępne "brakujące" recenzje z biblioteczki naszego juga? Wiem, wiem, mógłbym spytać pożyczalskich, ale przecież miałem marudzić ;)

Drugi punkt, to sam groovy w akcji (nomen omen, albo nawet lelum polelum). Otóż, jest fajnie. Rzekłbym nawet bardzo fajnie. Najśmieszniejsze, że jakbym miał powiedzieć, co konkretnie fajnego i dlaczego, to miałbym problem, ale jakoś mam subiektywne poczucie mniejszego "bólu" przy kodowaniu tego co sobie wymyśliłem. Niestety, w swoim aktualnym projekcie, napotkałem trochę głupią sytuację, gdzie w jednym miejscu nie mogę sobie umilić życia tak jakbym chciał. I to nie tylko z winy grówiego. Otóż tenże grówi "ozdabia" (opakowuje? Jakoś nie mogę znaleźć odpowiedniego słowa) sobie w pewnych sytuacjach klasy/obiekty Javy takim czymś jak MetaClass. I to właśnie jest źródłem frasunku, bo wykorzystuję klasy od zewnętrznego dostawcy, gdzie przy tej zabawie dostaję w pewnym momencie ClassNotFoundException (zresztą zupełnie zasadny). Cóż, wydaje mi się, że chwilowo, nie chce mi się jakoś myśleć nad "eleganckim" rozwiązaniem problemu, więc zrobię na okrętkę, a później się zobaczy (jak zwykle prowizorka ma szansę zostać najtrwalszym elementem systemu ;)).

A jak już przy zobaczeniu jesteśmy, to wbrew poprzednim wpisom, jednak wcale nie zostałem całkowicie przy Eclipsie. Z niewiadomych przyczyn, jednak mój kod, ni z gruchy, ni z pietruchy, przeprosił się z Ideą, więc w tym jednym projekciku pozwalam sobie wykorzystywać ją. I generalnie jestem zadowolony, chociaż pewnie skończy się na tandemie Eclipse+Idea. Oba środowiska potrafią sobie współdzielić projekty, na ile bezproblemowo to sprawdzanie tego jeszcze przede mną, ale parę opcji wygodniejszych jest jednak w Eclipse (szczególnie ogląd hierarchii klas, chyba, że ktoś wie jak "przypiąć" w Idea podgląd struktury na stałe do jakiegoś elementu?).

Na koniec, skoro już o ideach wspomnieliśmy, to taka drobna uwaga (bo wiem skądinąd, że Leszek z Amorfisem tu zaglądają ;)). W projekciku tymże mym tajemnym używać sobie zamyśliłem TestNG. W tej chwili na podstawowym poziomie, ale już za chwileczkę, już za momencik, bardziej "zaawansowane" zagadnienie trzeba będzie mi rozgryźć. Czy byłby sens, aby przy okazji tego rozgryzania spróbować wypocić jaką drobną prezentacyjkę, co by juga sierotkę trochę odkurzyć?

piątek, 15 stycznia 2010

Zaćmione znikłe asystenty

Sława!

W trakcie moich skoków w bok, które opisuję w poprzednim wpisie, miałem okazję od lat niepamiętnych (czyt. czterech ;)) uruchomić świeżą, nieśmiganą instalację Eclipse, i nawet coś po próbować na szybko pokodować. No więc piszę jakiś szybki całkowicie przykładowy kod, bach CTRL+SPACE i... O! A to co takie fajne? W podpowiedziach na pierwszym miejscu wpis typu Anonymous Inner Type, który po wybraniu od razu tworzy zręb anonimowej klasy z metodami implementowanego interfejsu, żadnego Add unimplemented... nie trzeba bajka. Czemu nie mam w swoim "produkcyjnym" Eclipsie? Tylko podpowiedzi co do samych typów, choć wersja środowiska ta sama?

Rzut oka na "domyślną" konfigurację podpowiadacza (Content Assist) nie rozwiązała problemu, gdyż w "produkcyjnym" środowisku mam nawet trochę więcej i ogólnie, i pozaznaczanych elementów (z tych widocznych na obrazku, zaznaczone mam jeszcze Java Type Proposals). Chcesz się droczyć? To się podroczymy. Trochę ponaciskania, powłączania tego i owego, jakieś Apply po drodze i... Tak! Tak! Zepsuło się, i nie ma już tej zabawki. Restore Defaults. Nie pomogło. Hmmm... Ki diabeł? W końcu wyłączenie wszystkich związanych z jawą podpowiadaczy, zatwierdzenie, powrót do opcji, zaznaczenie od nowa Java Proposals i Java Type Proposals, zatwierdzenie. Nazad do przykładu, trach klawisze, i są oba. No mordka sama się śmiać próbuje już, ale wrodzona marudność powstrzymuje ją od tego i rzecze - te, te, poczekaj na poważnym spróbujmy. No to spróbujemy to samo, i voila! Jest! Teraz się może mordka radować do woli.

Tak to kolejny plus wspominanego przeglądu wyszedł niczym szydło z worka. Możliwość ponoć od dawna w środowisku dostępna, a jakoś jak się zabunkrowała to skutecznie. Ciekawe co jeszcze mi się bumeluje...

czwartek, 14 stycznia 2010

Osiołkowi w żłoby dano...

Sława!

...a tenże osiołek wlazł drugi raz (co najmniej) do tej samej rzeki. Choć ponoć się nie da. Ale po kolei.

Otóż. Tak to się złożyło, że męcząc się już prawie rok z pewnym projektem, który wydawał się zdecydowanie mniej czasochłonny (jak to zwykle bywa ;)), wpadłem jakiś czas temu na genialny (jak to zwykle bywa ;)) pomysł wykorzystania w nim do udogodnienia innym i sobie pracy języka Groovy. Do tego, co ważne, w tandemie z TestNG. No więc, ponieważ dzionka każdego używam (i lubię go używać) Eclipse, zacząłem standardowo od znalezienia wtyków umożliwiających mi to co chcę.

No i vale, zainstalowane. Odpalamy, pierwsza siurpryza, eklipsowy wtyk TestNG nie chce odpalać klas napisanych w Groovym. Minuta, osiem, przeszkoda usunięta. Nie wiadomo dlaczego, wtyk ten, dla tychże klas ustawiał poziom adnotacji na javadoc zamiast JDK. Szybka zmiana i bangla. Niestety, później okazało się, że wtyk grówiowy (?) ma parę błędów, w tym jeden co najmniej mocno denerwujący. Otóż w ówczesnej jego wersji, uparcie twierdził, iż klasa anonimowa zrobiona z interfejsu jest be i w ogóle, bo superklasa nie może być jedynką (czy coś w ten deseń). No żeż, a pies Cię lizał. Skoro jest tyle IDE dookoła, to co ja Cię będę się uparcie i nienażarcie trzymał Ty Eclipsie niewdzięczny. Zaraz sobie coś przygrucham na Twoje miejsce.

Jak pomyślał żem był, tak też zrobił. Co tam panie chwalą? Ano IntelliJ IDEA chwalą. Teraz także w wersji darmowej. No dobra, to sprawdzimy co to. Wsparcie do Groovy jest, do TestNG takoż samo, nic tylko używać. Przyznam się, że pierwsze wrażenie było dziwne. Acz parę chwil poświęconych na zapoznawanie się, i mimo pewnych kłopotów ze zwalczaniem przyzwyczajeń z Eclipse (gł. skróty klawiaturowe używane czasem bezwiednie), jakoś tam praca się zaczęła. Groovy śmiga, TestNG po drobnych komplikacjach też zadziałało (nie wiem dlaczego, póki się nie wyrzuciło z propozycji klas JUnit, nie chciało coś podpowiadać dobrze w edytorze). Trochę braków, błędów i wypaczeń jest, ale też i parę fajnych rzeczy. Generalnie na plus, zaczyna mi się podobać. Więc przenosimy projekcik z Eclipsa, jednocześnie pozbywając się z niego mavena, co by życia sobie nie utrudniać (takie osobiste urazy ;)). Tu podkodować coś, tu coś przypacykować. Alles gut się miraży. Odpalam efekty i... zwiech. Mimo straty paru godzin, niestety nie udało mi się znaleźć dlaczego w pewnym momencie, mój owszem dość specyficzny, kod zawieszał się odpalany spod Idei (to samo odpalane z Eclipse'a czy z linii komend jak bozia przykazała śmiga aż miło). Pewnie kwestia gryzienia się z ideowym biegaczem. Cóż, nikt nie jest doskonały, ale w domciu można Idei spróbować do bardziej normalnych zadań, bo wygląda istotnie obiecująco.

Skoro nie Idea, to co? JDeveloper? Chociaż wspiera pożądane przeze mnie technologie, to nie tak dawno próbowałem się do niego przekonać, i cóż... Na ponowną szansę jeszcze chyba za wcześnie... Tak więc został jeszcze jeden gracz, często wychwalany wręcz pod niebiosa (np. w komentarzach do ankietki na dZone) - NetBeans. Dawałem już mu szansę. Wersjom 4, 5 na 6 kończąc. Nigdy to nie była długa przygoda, bo cóż. Ma coś takiego co mnie odrzuca, ale mając w perspektywie emacsa i terminal ;) postanowiłem znów pozwolić mu się zaprezentować. Nie była to długa prezentacja, niestety, ot przykra niespodzianka, od wersji 6.5 nie ma wsparcia dla TestNG. Dziękuję postoję. Zastanowię się co dalej.

A dalej zostało... Eclipse. W międzyczasie, kiedy zaznawałem swawol z kolejnymi kandydatkami na wymarzone IDE, ta aplikacja poszła do fryzjera i manikiurzystki, co by się odstrzelić na bóstwo. Co prawda nie do końca wyszło tak, żeby mnie olśnić, ale biorąc pod uwagę, że zaktualizowany plugin do grówiego nadal RC, to można co nieco mu wybaczyć. Ważne, że obecnie da się z nim pracować, a czasu "zmarnowanego" na poszukiwania zastępnika nie żałuję, bo zawsze dobrze od czasu do czasu sprawdzić co w trawie piszczy. Kto wie czy wreszcie lepsze nie jest już wrogiem dobrego?

niedziela, 10 stycznia 2010

A miało być tak pięknie...

Sława!

No niestety, jak poinformował Leszek na stronie Szczecińskiego JUGu tegoroczna edycja konferencji Java4People nie odbędzie się. Serce moje napełnione jest więc niekłamanym żalem, bo poza Javarsovią nie ma chyba w kraju innej wartej mojego zainteresowania konferencji (formuły i poziom zarówno Cooluarów jak i GeeCona nie są tym co akurat ten tygrys lubi najbardziej). Miejmy nadzieję, że j4p jeszcze wróci, nawet jeżeli w formie biennale czy triennale.

Bijąc się w pierś, bo nie narzucałem się, szczerze mówiąc, Organizatorom z pomocą (z różnych pobudek, o czym może dalej, jak się nie rozmyślę) pochylam na chwilę głowę nad pewnym zjawiskiem (miejmy nadzieję, że nie regułą). Otóż wydaje się, że nasz jug dotyka podobne obumarcie jak lokalny spin. Że znów nieźle się zaczęło, ale dość szybko zbiór osób które chcą, potrafią i mają co przekazać zaczął się bardzo szybko wyczerpywać. O ile w wypadku spina to nawet mnie nie zdziwiło, bo to trochę taka "nie jasna" organizacja, no to w wypadku juga chyba jest to jednak pewne zaskoczenie.

Przecież Szczecin nie jest jakąś jawową pustynią. Programistów Javy zatrudnia całkiem spora liczba istniejących tu firm, w tym te największe/najbardziej znane. Wydawałoby się, że nie ma bata, to musi wypalić... A wygląda, że i owszem, wypaliło, ale się. Ciekawi mnie co jest tego przyczyną? Czy generalnie nie lubimy się dzielić wiedzą z innymi? Czy może jednak lubimy, ale się boimy? Azali ani nie lubimy, ani nie boimy, ale wystarczy nam to czym się podzielimy z kumplami z pracy? Albo może uważamy, że nie mamy się czym dzielić, bo przecież nic takiego nie umiemy, na niczym takim się nie znamy? A może jednak, do tego wszystkiego nie mamy czasu na "zabawy"?

Cóż, jeśli o mnie chodzi, to ja ewidentnie podpadam pod przypadek, który "nic takiego nie umie i na niczym specjalnym się nie zna". W życiu nie napisałem nawet sieciowego witajświata, takie rzeczy jak Wicket, Seam, ba Tomcat i Apache są tylko jakimś tam echem bijącego gdzieś tam dzwonu, nie będę nawet przez grzeczność wspominał o GWT czy innym JSF. Podobnie bazodanowe zagadnienia - od JDBC do Hibernate, obiło się gdzieś o uszy i tyle. A jak już się coś zdarzyło poznać, to raz, że raczej trudno mówić o jakimś mistrzostwie, a dwa, to jeśli już, są to raczej technologie albo powszechnie znane, albo same w sobie mało interesujące i raczej nie topowe. Skoro tak, to nieraz sobie zadawałem pytanie, czy jest jakiś sens pasożytowania na takim jugu? Teraz zaś zaciekawia mnie ile takich "pasożytów" procentowo było wśród wszystkich zainteresowanych jugiem? Bo może, kurteczka, człowiek (?) się niepotrzebnie krępuje  kalibrując miarkę do (wyobrażonego) poziomu osób, które może i biją wiedzą na głowę, ale nie potrzebują (poza nielicznymi wyjątkami) takich grup do niczego, zamiast się podkalibrować pod tych co na spotkaniach się pojawiali?