23 czerwca 2010

Dziś Dzień Ojca, w piątek urodziny Agatki, a w sobotę Javarsovia 2010

4 komentarzy
Logo konferencji Javarsovia 2010Obecny tydzień upływa mi w cieniu niezwykle fascynujących wydarzeń. Najpierw dzisiejszy Dzień Ojca z prezentami od dzieciaków, w piątek urodziny mojej żony Agatki, a dzień po, w sobotę, konferencja Javarsovia 2010. Ze względu na techniczny aspekt tego bloga, nie będę rozpisywał się o moich rodzinnych sprawach i przejdę do tej bardzo technicznej - nadchodzącej konferencji Javarsovia 2010.

Wydarzenia związane z konferencją niejednego mogłyby przyprawić o zawrót głowy i tylko zaangażowanie "konferencyjnej 8-ki" organizatorów pozwala wierzyć, że to naprawdę może się udać. Do grupy zaangażowanych w organizację konferencji - Kapituły - weszli (w kolejności jak opisani na stronie Kapituła):
  • Michał Margiel
  • Łukasz Lenart
  • Łukasz Żuchowski
  • Bartek Zdanowski
  • Paweł Wrzeszcz
  • Mateusz Zięba
  • Sebastian Pietrowski
  • Jacek Laskowski
Kiedy 4 lata temu rozmawiałem podczas pizzy z Adrianem Nowakiem (z Polish JUG) o organizacji konferencji nikt nie przypuszczał, że tegoroczna 4. edycja będzie gościła ponad 500 uczestników! Możnaby powiedzieć, że liczba uczestników "wyjdzie w praniu" i nikt nie jest w stanie określić, nawet w przybliżeniu, ile faktycznie ich będzie, gdyż przy "bezpłatnych rozdaniach" zawsze znajdzie się grupa, która chce, ale nie korzysta.

Kiedy rozesłaliśmy wici o rejestracji na konferencję Javarsovia 2010 otrzymaliśmy grubo ponad 800 zgłoszeń z potwierdzeniem (wydaje mi się, że było to jednak coś koło 900). Co bardziej istotne, to fakt, że druga tura potwierdzeń, gdzie zarejestrowani otrzymali prośbę o ponowne "klepnięcie" rejestracji, jest obecnie na poziomie 700! W całym tym zliczaniu potencjalnych uczestników należy wziąć pod uwagę, że rozmowy ze sponsorami obejmowały wydatki na "rekordowe" (jak na tamte szacunki) 500 uczestników. Kiedy rejestracja dobiła do tej liczby, zrozumieliśmy, że przyjdzie nam się zmierzyć z czymś naprawdę ogromnym. Coś, co początkowo było zabawą, przy nieubłagalnie, wciąż rosnącym słupku rejestrujących się powoli zmieniało się w organizacyjny koszmar i mnie przyprawił o zimne dreszcze. Nie, nie jest tak źle z nami - trzymamy się dzielnie i tylko sporadyczne (?) wyobrażenie sobie całej rzeszy osób w liczbie 500+, którzy zechcieli uczestniczyć w bezpłatnej konferencji javowej w weekend przypomina nam o obowiązku, jaki przyszło nam spełnić. Obiecywaliśmy wiele dla wielu, ale żeby aż TAK wiele?! Tak samo wiele w nas strachu przed sobotnim wydarzeniem, jak i ciekawości, bo chociażby ja, jeśli byłem na konferencji tak licznej, to była to konferencja zagraniczna i jednocześnie płatna, organizowana przez firmę z osobami, których jedynym zajęciem podczas organizacji konferencji było...organizowanie konferencji. W naszym przypadku wszystko jest na odwrót, więc chociażby to gwarantuje niezwykłe doznania konferencyjne. Bez względu na wynik na pewno będzie wspaniale!

Okazuje się, że owa dzielna grupa 8-miu organizatorów sprostała dotychczasowym wyzwaniom i udało się jej zaprosić dość pokaźną grupę sponsorów. Wielu znanych, ale są i Ci mniej znani:
  • Sponsorzy platynowi: Javart, IBM
  • Sponsorzy złoci: Google, Microsoft, Azul Systems, Oracle
  • Sponsorzy srebrni: Adobe, TouK, ITKontrakt, e-point, tieto
  • Sponsorzy: Sages, Javatech
  • Partnerzy: iStream, SoftwareMill, Helion, OVH.pl, Sun Learning Services Polska
Dzięki ich wsparciu finansowemu budżet pozwolił nam zapewnić właściwe miejsce konferencji, profesjonalną obsługę nagrania całości, aby później udostępnić je w serwisie Parleys, zaoferowanie wyżywienie przez cały czas trwania konferencji, ugoszczenie prelegentów z całej Polski, SPOINę, itp. Aż trudno uwierzyć, że przy, jak to się mawiało, szalejącym kryzysie i wszechobecnych cięciach, konferencja Javarsovia 2010 ma się lepiej niż myśleliśmy jeszcze na długo przed kryzysem. Nikt z nas, organizatorów, ale zapewne i wielu obserwatorów, nie przewidywało takiego obrotu sprawy. Dlatego warto było zaangażować się w przedsięwzięcie, które chcielibyśmy, aby trafiło do Waszych kalendarzy jako ten dzień, który rezerwujemy w kalendarzach i bez względu na wydarzenia wokół jest ono przeznaczone jednemu celowi - świętowaniu integracji polskiej społeczności javowej przez udział w konferencji Javarsovia 2010. Zapraszam w imieniu własnym i pozostałych organizatorów.

Jeśli jest cokolwiek o czym bym technicznie marzył, to niech to będzie dobra zabawa podczas konferencji i aktywny udział uczestników, czy to podczas samych prezentacji, rozmów podczas przerw, czy dyskusji i relacji już po konferencji. Niech Javarsovia stanie się stałym wydarzeniem w naszym kalendarzu technicznym. Mamy (i wielu już doświadczyło tegorocznych ich edycji) GeeCON, NYAC i COOLuary. Niech Javarsovia 2010 stanie się równie ważnym wydarzeniem, bogatym merytorycznie i społecznościowo pro publico bono.

21 czerwca 2010

Recenzja "Dependency Injection, Design patterns using Spring and Guice" z Manning

3 komentarzy
Cóż za niesamowita książka! Jak wspominałem w "Sport to zdrowie", a na mojego nosa jest jednak inaczej, w trakcie oczekiwania na wizytę w gabinecie laryngologicznym dotarłem do końca Dependency Injection, Design patterns using Spring and Guice autorstwa Dhanji R. Prasanna (Manning, sierpień 2009) i jestem nią wprost urzeczony.

Książka naładowana wiedzą dotyczącą koncepcji wstrzeliwania zależności (ang. dependency injection) oraz tematów wspierających jak zarządzanie stanem i wzorców programistycznych - proxy, adapter i provider na przykładach ze Spring Framework i Google Guice (głównie jednak tego drugiego, Guice). Nieoczekiwanie zrozumiałem podstawy do stworzenia trzech specyfikacji Java EE 6 - JSR-299: Contexts and Dependency Injection for the Java EE platform (CDI)JSR 330: Dependency Injection for Java i JSR-316: Java EE 6 Managed Beans, a tym samym zdobyłem garść pożytecznych informacji na tematy, o których jeszcze przed miesiącem mogłem jedynie pomarzyć. Takie akcje lubię najbardziej - robię jedno, a kończę wiele.

Książkę trafiła w moje ręce w ramach programu "Książka dla JUGa za recenzję" i nie potrafię wytłumaczyć, dlaczego zdecydowałem się na jej lekturę. Jest kilka książek, które czekają na mnie, ale akurat padło na nią. Nie żałuję tej decyzji i dziwię się, że nie zabrałem się za nią wcześniej. Ech, gdybym tylko wiedział...Książka trafiła na półkę Biblioteki Warszawskiego JUGa i czeka na kolejnego zainteresowanego zgłębieniem tajników wstrzykiwania zależności oraz podstaw technologicznych stojących za stworzeniem wspomnianych specyfikacji Java EE 6. Dodatkowo można w bardzo przyjemny sposób zapoznać się z Google Guice, co jest o tyle niebezpieczne, że można stać się jego zagorzałym zwolennikiem. To, co mogłem wyczytać o Guice z tej książki z pewnością plasuje mnie w gronie takowych. Ostrzegałem.

Zainteresowanych angielskojęzyczną recenzją zapraszam do mojego artykułu na Wiki - Book review: Dependency Injection.

Jeszcze nie wybrałem kolejnej książki, mimo, że czeka kilka, ale chętnie wysłucham sugestii. Tylko proszę nie wspominać o Clean Code: A Handbook of Agile Software Craftsmanship, bo już zamówiona i pewnie zabrałbym się za nią, gdybym ją miał pod ręką. Wersja polska Czysty kod. Podręcznik dobrego programisty również w drodze.

p.s. Czytałem dzisiaj również bardzo ciekawy artykuł Functional Programming For The Rest of Us nt. programowania funkcyjnego (PF) i wciąż nie mogę otrząsnąć się z wrażenia, jak fascynujący świat kryje się za nim. Chciałbym go skosztować, ale najwyraźniej brakuje mi zapału. Gdyby tak zechciał znaleźć się mentor, któremu udałoby przeciągnąć mnie przez meandry myślenia OO ku PF byłoby cudnie. Clojure preferowany.

p.s. Zostały jedynie 4 dni do naszego społecznościowego święta - konferencji Javarsovia 2010! Koniecznie musimy obgadać to i owo. Gotowym na zaczepki - wystarczy przywitać się (mile widziane komentarze, jakie to fajne rzeczy opisuję na blogu :)), ale można i zagadnąć o cokolwiek ze świata Javy. Chętnie poznam Wasze opinie, które sprawią, że moje pomysły nabiorą rumieńców.

19 czerwca 2010

"Sport to zdrowie", a na mojego nosa jest jednak inaczej

6 komentarzy
Powiedzenie "Sport to zdrowie" każdy zna, ale niewielu pewnie wie, jak niewiele trzeba, aby znaleźć się w sytuacji, która temu przeczy.

Ja przekonałem się o tym 2 dni temu, kiedy to podczas gry w kosza na zewnątrz, mój nos "sparowałem" z łokciem kolegi (możnaby powiedzieć, że kolegów ma się takich, na jakich się zasłużyło :)). I to na sam koniec gry "3 na 3", przy stanie bodajże 27:19 dla mojej trójki. Zdecydowanie należało mi się, bo próba obrony była nieprzepisowa (zwykłem grać zbyt ostro i faule to moje drugie "ja" na boisku). Przez moment zamroczyło mnie i poleciała krew. Pojawiła się opuchlizna i powrót do domu wzdłuż Belgrackiej. Na szczęście udało mi się ukryć rozkrwawiony nos. W zasadzie po kwadransie krew przestała lecieć, ale profilaktycznie (po namowach żony) pojawiłem się o 22:00 u lekarza, a później na prześwietleniu.

Okazało się, że sprawy związane z nosem i potencjalnym złamaniem należą do otolaryngologa, którego w Lux-Medzie na Racławickiej nie było o tej porze. Wysłano mnie na ostry dyżur do szpitala na Banacha. W ten sposób poznałem tajniki i magię publicznej opieki zdrowotnej. Około 23:00 dowiedziałem się, że mój numer 68 będzie wywołany po wcześniejszych 30-tu! Zamarłem. Licząc po kwadrans na pacjenta, 30-tu, nawet 20-tu daje zawrotną godzinę 5-tą lub nawet 7-mą nad ranem. Krwotoku nie ma, oddychać przez nos mogę (aczkolwiek znacznie utrudnione zadanie na tamten moment) i bólu też prawie zero, więc wracam do domu. Zaplanowałem poranną wizytę u otolaryngologa w CM LIM w Mariocie.

Wczesnoporanna wizyta u otolaryngologa skończyło się na stwierdzeniu, że bez opisu prześwietlenia nic nie można zrobić, którego wcześniej w Lux-Medzie nie dostałem (o 22giej bez lekarza opisującego nie było to możliwe). W stanie prawie niezauważalnej, lekkiej opuchlizny na nosie wróciłem do prowadzenia szkolenia WU050PL Developing IBM WebSphere Process Server V6.2 Business Integration Solutions I.

Tak dotrwałem do wieczornej wizyty u otolaryngologa w CM LIM na Domaniewskiej. Krótka wizyta w Lux-Med na Racławickiej celem odebrania opisu, a tam...

  Złamanie dystalnego odcinka kości nosowej, bez przemieszczenia.

Od lekarza dowiedziałem się jednak, że zdjęcie robione było w jednej płaszczyźnie i sądzi, że może być jednak przemieszczenie w płaszczyźnie, której zdjęcie nie obejmuje (zdjęcie robione było z profilu, a przemieszczenie mogło być w płaszczyźnie au face). Dowiedziałem się również, że przy złamaniu nosa "opakują" go tak, że mam z głowy 7 następnych dni (!) Miałem wybór - zostawić sprawy jak są ryzykując, że należy nastawiać, ale może jednak nie jest to aż tak niezbędne, albo nastawianie. Kiedy dodam, że na przyszły tydzień mam zaplanowane 4-dniowe szkolenie z WA36PL Administrowanie WebSphere (Application Server V6.1), to można sobie wyobrazić moją minę. Mamy czwartkowy wieczór, a od poniedziałku jestem wyłączony, więc trzeba załatwić instruktora na szkolenie. Cóż, zdarza się. Z 7-dniowym zwolnieniem z pracy do wykorzystania i kwitkiem do szpitala, postanowiłem dokończyć prowadzenie aktualnego szkolenia i w piątek, w południe pojawić się w szpitalu na ostrym dyżurze laryngologicznym Centralnego Szpitala Klinicznego Wojskowej Akademii Medycznej na Szaserów 128. Zaczęło się nerwowe oczekiwanie. Zabrałem się za dokończenie książki Dependency Injection, design patterns using Spring and Guice z Manning i chwilę po tym, kiedy skończyłem ją czytać, wezwano mnie do gabinetu. Jedna z kilku pozytywnych stron całego wydarzenia.

Miła pani w zielonym kitlu przywitała mnie z uśmiechem, a mnie oblał zimny pot. To już 1,5 doby od urazu i miałem niesamowitego pietra przed potencjalnym bólem przy nastawianiu nosa. Po 5-minutowym badaniu ulżyło mi i mogłem odetchnąć pełną piersią - nastawiania nie będzie! Złamanie jest, ale na tyle niegroźne, że nie ma czego nastawiać. Przemieszczenie, jeśli jest, to tak niewielkie, że wpada w granicę błędu jego wyczuwania pod palcami (tutaj pojawił się specjalny, sądzę, że medyczny, termin na diagnozowanie palcami - pal...coś tam - może mi ktoś przypomnieć, jak to idzie?). Dokładnie na taką diagnozę czekałem. Od razu odwołałem całą akcję szukania zastępstwa na moje szkolenie w przyszłym tygodniu. W ciągu 5 minut wszystko wróciło do normy i jedynie nieznaczne trudności oddychania przez nos i opuchlizna przypominały mi o wydarzeniu sprzed prawie 2 dób.

Jakby tak podsumować całe wydarzenie, to nauczyłem się niemało, więc bilans na plus - przede wszystkim wiem, co znaczy pierwsza pomoc przy uderzeniu w nos z krwawieniem, a również doświadczyłem "zalet" publicznej opieki zdrowotnej i mogłem dokończyć czytanie książki.

Do zapamiętania: przy krwotoku z nosa pochylamy lekko głowę do przodu i pozwalamy, aby krew swobodnie spływała z nosa, aż do jej zatrzymania po około 10 minutach. Jeśli nie, mamy problem i wzywamy karetkę. Z mojego doświadczenia wynika, że gdybym wezwał karetkę, to miałbym temat obsłużony poza kolejnością tego samego dnia - jako "przypadek sprzed chwili". Na pewno jednak nie odchylamy głowy do tyłu licząc na wstrzymanie krwawienia! To jedna z tych rzeczy, która wielu jako pierwsza przychodzi do głowy. Ryzykujemy niekontrolowanym krwotokiem i połykaniu krwi/skrzepów, co jest niezdrowe (a nawet możnaby powiedzieć niesmaczne i podobno wręcz szkodliwe dla wątroby?!). Zdecydowanie za mało wśród nas przeszkolonych z pierwszej pomocy i później są tego skutki.

Koszykówkę mam odwieszoną na nadchodzące 2 tygodnie, a pływanie nawet na miesiąc. Cóż, mam tym samym więcej czasu na siedzenie przed kompem. Teraz może znowu padać - i tak nie wyjdę na kosza :(

11 czerwca 2010

69. spotkanie Warszawa JUG - Łukasz Dywicki z "Spring Dynamic Modules, Blueprint, OSGi - deklaratywne"

0 komentarzy
Warszawska Grupa Użytkowników Technologii Java (Warszawa JUG)Warszawska Grupa Użytkowników Technologii Java (Warszawa JUG) zaprasza na 69. spotkanie, które odbędzie się we wtorek, 15 czerwca o godzinie 18:00 w sali 5440 Wydziału MIM UW przy ul. Banacha 2 w Warszawie.

Temat: Spring Dynamic Modules, Blueprint, OSGi - deklaratywne
Prelegent: Łukasz Dywicki

Celem prezentacji jest przedstawienie OSGi oraz możliwości tego środowiska w połączeniu ze Spring DM oraz Blueprint. OSGi to ważny element dla przyszłości Javy. Spring Framework - najpopularniejszy framework w tym języku. W wyniku połączenia tych dwóch elementów możemy budować elastyczną architekturę, bardziej podatną na zmiany - jej synonimem jest Spring Dynamic Modules.
Podczas prezentacji zostanie przedstawione tradycyjne podejście do OSGi (aktywatory), Spring DM (XML) oraz Blueprint (również XML). Całość przykładów zostanie uruchomiona z użyciem Apache Felix Karaf.

Łukasz Dywicki jest założycielem firmy Code-House. Zawodowy programista od 2005 roku. Programowaniem w Javie zajmuje się od 3 lat. W 2008 roku pracował jako główny programista przy budowaniu magistrali usług w oparciu o Apache ServiceMix w jednym z polskich banków. Łukasz swoją pierwszą styczność z OSGi odnotował podczas prób rozszerzania Eclipse. Od dłuższego czasu zajmuje się ServiceMix 4, który jest zbudowany w całości o OSGi, Spring DM i częściowo o Blueprint (Karaf).

Planowany czas prezentacji to 1h, po których planuje się 15-30-minutową dyskusję.

Wstęp wolny

Zapraszam w imieniu prelegenta i grupy Warszawa JUG!

09 czerwca 2010

Contexts and Dependency Injection (CDI) praktycznie - zestawienie środowiska z JBoss Weld, Arquillian i Apache Maven 2

3 komentarzy
Na moim Wiki pojawił się nowy artykuł dotyczący specyfikacji JSR-299: Contexts and Dependency Injection for the Java EE platform (w skrócie CDI).

W artykule Contexts and Dependency Injection (CDI) praktycznie - zestawienie środowiska z JBoss Weld, Arquillian i Apache Maven 2 przedstawiłem możliwość uruchamiania CDI na poziomie Java SE (bez serwera aplikacyjnego JEE6) z użyciem referencyjnej implementacji JBoss Weld z Apache Maven 2 i Arquillian, który znajduje się w ofercie załogi JBoss do testowania aplikacji korzystających ze specyfikacji Java EE 6.

Nie jest to specjalnie zaawansowany artykuł i taki był jego cel - gładko wprowadzić w temat uruchamiania "czystych" aplikacji CDI bez bagażu JEE6. CDI stanowi swego rodzaju alternatywę dla kontenerów IoC/DI jak Google Guice czy Spring Framework z tą zaletą, że jest ustandaryzowanym rozwiązaniem dostępnym w każdym serwerze JEE6, a czerpiącym ze swoich poprzedników całymi garściami. Obecna lektura książki Dependency Injection wydawnictwa Manning uzmysławia mi jak niewiele różni wszystkie z wymienionych - Guice, Spring i CDI (aczkolwiek samo CDI nie jest przedmiotem książki).

UWAGA: Kody źródłowe nie są jeszcze w repo. Do odwołania jest w trybie do odczytu i nie można nic zatwierdzać.

PROŚBA: Gdyby ktoś zechciał mi zaprezentować/opisać, w jaki sposób skorzystać z Gradle zamiast Maven2 byłbym niezmiernie wdzięczny. Wciąż nie czuję zalet jednego nad drugim.

Pomysły na kolejne tematy z CDI mile widziane. Zabieram sie za "przetrawienie" komentarzy dotyczących CDI z poprzednich, moich wpisów, na bazie których powstaną kolejne. Nawet nie wyobrażacie sobie jakie to szczęście móc dotykać tematów, które krążą koło siebie nierozerwanie i kiedyś stanowiły osobne rozwiązania, a obecnie zaczynają stanowić podstawy specyfikacji JEE6 np. facelets (w JSF2, gdzie CDI to główny gracz) czy dawno przeze mnie niewykorzystywany Apache Wicket (jako samodzielne rozwiązanie z CDI czy alternatywna technologia wizualizacji w JBoss Seam 3). Jednak znajomość ich wszystkich nie pomaga bynajmniej w podjęciu decyzji które i gdzie. Sądzę, że to równie trudna decyzja z i bez ich znajomości. A gdzie tu znaleźć się w sytuacji stworzenia czegoś nowego, alternatywnego do istniejącej oferty projektowej? Trzeba mieć na prawdę zawzięcie, aby nie ugiąć się nad wykorzystaniem istniejącego i stworzeniem nowego.

08 czerwca 2010

4-dniówka na Podlasiu - pływające krowy, grzybobranie, kajaki i przepiękne krajobrazy

4 komentarzy
To dopiero była 4-dniówka! Kompletny odlot wypoczynkowy - bez komputera, dostępu do Internetu i telefonu. Nawet książkę informatyczną udało mi się jedynie "obsłużyć" w 5 rozdziałach.

Dzień 0. Wyjazd


Moja żona Agata ponownie stanęła na wysokości zadania i zorganizowała wyjazd na 4-dniówkę do Gospodarstwa Agroturystycznego Danuty i Bolesława Młynarczuków na Podlasiu, nad Bugiem, w kolonii Wojtkowice Glinna. To już nasza druga wizyta na Podlasiu.

Gospodarstwo Agroturystyczne - Danuta i Bolesław MłynarczukowieMiejsce przepiękne, ale zanim się o tym przekonaliśmy najpierw czekała nas przeprawa przez burzę z piorunami i ulewny deszcz, aby przez las dotrzeć około północy, w środę do gospodarstwa.

Pierwsze wrażenia pozytywne. Domek dwupiętrowy, ale nic poza tym, że mamy miejsce do spania i jutro zamówione śniadanie na 10tą. Kompletna ciemnica na zewnątrz skutecznie odebrała nam przyjemność rozejrzenia się w okolicy. W końcu byliśmy w lesie!

Dzień 1. Pychówką po Bugu


Poranek zaczęliśmy od wielkiego "Ale widok!". Żaby rechotają, ptaki ćwierkają - ogólny zgiełk, a za oknem Bug z wysepką na środku, jak się później okazało - miejsce lęgowe wielu ptaków, których niestety nie tylko wcześniej nie widziałem, ale i nie przypuszczałem, że takowe w ogóle istnieją.

Widok z gospodarstwa na BugŚniadanie podano. Naleśniki! Pierwsza klasa. Po prostu palce lizać. Mimo, że nazwoziliśmy trochę (więcej) prowiantu, to i tak okazało się później, że skończyło się na obżarstwie bolkowym śniadaniem z racuchami, naleśnikami z twarogiem, a później musem jabłkowym, ale i jajecznicy z własnoręcznie zbieranymi kurkami - wszystko "zakrapiane" świeżym mlekiem prosto od krowy (wciąż nie możemy uwierzyć, że nawet najbardziej zatwardziałym przeciwnikom picia mleka prosto od krowy wchodziło bez jakichkolwiek perturbacji żołądkowo-smakowo-toaletowych).

Na pierwszy dzień mieliśmy zaplanowaną podróż Bugiem na pobliską wysepkę, gdzie gniazdują ptaki, najprawdziwszą z najdzikszych łąk (jakby mi ktoś powiedział, co to za kwiaty byłoby cudnie)...

...wizytę u bobrów (niestety nie widzieliśmy żadnego), kąpiel w Bugu, przy nurcie, w którym pływanie naprzeciw po chwili musi zakończyć się zniechęceniem i poddaniem się (taki był silny) i przejście przez łączkę, gdzie mokro, bagniście i pijawkowo. Brrrr, my mieszczuchy mieliśmy niezłą psychiczną przeprawę idąc bosaka po podmokłej łące :)

Przeprawa przez mokradła i łąki zdjęciaJak to gospodarz zwykł mawiać "Wszystko w gratisie" :-)

Na zakończenie dnia wizyta u kotków, krówek i po upalnej pogodzie przychodzi burza. Na wieczór krowy na dojenie (codziennie dwukrotnie mieliśmy świeże mleko - w gratisie oczywiście)...

...a my - obiad, kolacja, paciorek i spać. Nawet się czytać już nie chciało, tyle wrażeń.

Dzień 2. Grzybobranie


Trochę pomęczeni wczorajszymi atrakcjami, już w komplecie - 4ech ode mnie i dalej 2+2+1, co daje 9 osób, poszliśmy na grzyby. Nie mieliśmy złudzeń, że wiele ich nie znajdziemy, co później okazało się...zresztą wszystko na zdjęciach. Kurek od zarą...^H^H^Hbardzo dużo. Jeszcze niewielkie, ale wystarczy, aby na drugi dzień skosztować jajecznicy z kurkami. I to naszymi kurkami!

Dzień 2. GrzybobraniePo zbieraniu grzybów wzięło mnie na fotografowanie fauny i flory :-) Byłbym wdzięczny za nazwy tych stworów (w środku to mech płonnik strojny jak mniemam).

I te roślinki też przydałoby się jakoś nazwać, poza nic-nie-mówiącym "roślinki" (oczywiście ten u góry to grzyb koźlarz).

Dzień 2. W lesieNa zakończenie dnia ponownie obiad, przyprowadzenie krów na dojenie (znowu świeże mleko dla zainteresowanych) - ciekawostką tamtych rejonów są pływające krowy, ale niestety ze względu na stan Bugu kąpiel krówek sprowadzała się jedynie do taplania się na łące...

Pływające krowy...aby dzień zakończyć ogniskiem (drzewo i miejsce w gratisie :)).

Dzień 3. Spływ Bugiem z Drohiczyna


Zmordowani atrakcjami poprzednich dni, świeżym powietrzem, wspaniałym jedzeniem i nic-nie-robieniem, po śniadaniu z racuchami i świeżym mlekiem, wyruszyliśmy na spływ z Drohiczyna.

Trasa wyniosła około 30 km i była niezwykle spokojna - zero kajakarzy (poza nami), spokój, cisza i co rusz jakaś wysepka, którą trzeba było omijać albo z prawej, albo lewej. Trasa bardzo łatwa, rzeka w tym miejscu była bardzo szeroka i bezdrzewowa, więc atrakcji pozostało nam szukać na brzegach.

Wyruszyliśmy w samo południe, aby około 18:30 pojawić się z powrotem na kwaterze. Ci, którzy postanowili posmarować się kremem 30tką wygrali ze słońcem, a pozostali (ukłony w stronę mojej Agatki) niestety zmagają się z nadmierną opalenizną, którą niektórzy nazwaliby w zasadzie oparzeniem 1 stopnia! Takie było słońce. Trzeba było uważać, bo paliło przez całą trasę i w zasadzie nie było możliwości skryć się między drzewami.

Na wieczór grill i ponownie spanie. Ja byłem zmarnowany po tym kajakowaniu - ten błogi spokój i palące słońce wyciągnęło ze mnie ostatki energii. W międzyczasie, na trasie, razem z Karolem poskakaliśmy do wody na jednej z wysepek, więc tym bardziej mnie wygasiło.

Jeszcze nikt głośno tego nie mówił, ale już w powietrzu było czuć, że jutro do domu :(

Dzień 4. Powrót


Ponownie słoneczna pogoda, więc nikomu tak na prawdę nie chciało się wracać do domu. Na mnie i moją rodzinę czekała wizyta w piwnicy, którą właśnie zalało, więc tym bardziej nie mieliśmy chęci ani ochoty na powrót.

Błękit Bugu jakby dodatkowo wnerwiał i zapraszał kolejnych śmiałków, którzy po kilkudniowym leniuchowaniu wracają do swojej codzienności. Mnie tak przewietrzyło, że na samą myśl o przesiadywaniu przed kompem, skręcało. Przyjemnie tak aktywnie spędzić czas w towarzystwie rodziny i znajomych, i 4 dni to zdecydowanie za mało.

Akumulatory naładowane, więc można zarabiać, aby później móc wydawać :-) Zabieram się ponownie za specyfikacje Korporacyjnej Javy, a szczęśliwcom-urlopowiczom życzę tak samo cudnej atmosfery, jakiej ja mogłem skosztować. Jak to zwykł mówić nasz gospodarz - niezwykle pracowity i opiekuńczy gość (nie tylko zajmował się swoim obejściem, ale i nami przynosząc śniadanie, obiad, robiąc za przewodnika, itp.) - tam, gdzie byliśmy to "Brazylia", z tą jednak różnicą, że w Brazylii gratisów nie znajdziemy, a na Podlasiu jak najbardziej :)

Na powrót postanowiliśmy przejechać przez miejscowość Jadów, w której zaplanowaliśmy skosztować najpyszniejszych lodów w okolicy (dzięki Nika!). Podobno robione na naturalnych składnikach i po pierwszych, zaraz stanęliśmy w kolejce po drugie. Na prawdę pyszne.

Jeśli zastanawiasz się, gdzie spędzić kolejny weekend, a może i dłuższy urlop, polecam Gospodarstwo Agroturystyczne Danuty i Bolesława Młynarczuków w Wojtkowicach Glinna 26 (kolonia). Ceny niewygórowane, a okolica wspaniała. Z żoną już planujemy wrześniową kampanię grzybową w tamte okolice. Podlasie zdaje się być wciąż spokojne i dziewicze. Byłem 2 razy i wspominam mile (nie mylić z kilometrami, których nie ma tak wiele, aby dotrzeć na miejsce). Polecam.

02 czerwca 2010

Ruszyła rejestracja na Javarsovia 2010!

0 komentarzy
Logo konferencji Javarsovia 2010Tego wydarzenia nie można pominąć w naszym harmonogramie na czerwiec 2010.

W końcu nadszedł ten moment, na który wielu z pewnością czekało (sądząc chociażby po napływającej korespondencji) - rejestracja uczestników na tegoroczną konferencję Javarsovia 2010 została oficjalnie otwarta! Zapraszamy na stronę Rejestracja.

Konferencja Javarsovia 2010 odbędzie się w Warszawie, w dniu 26 czerwca (sobota) w Centrum Konferencyjno-Kongresowym na ulicy Bobrowieckiej. Zaplanowaliśmy wiele atrakcji, wśród nich jest SPOINA (SPOtkanie INtegracyjne), która będzie miała miejsce po zakończeniu konferencji gdzieś* w Warszawie i potrwa nie krócej niż do północy.

Lista tematów z ich prelegentami jest dostępna na stronie Prezentacje. Pamiętajcie, że mamy jeszcze grono szanownych sponsorów, które również wystawi swoje prezentacje, o których dowiecie się niebawem.

Konferencja Javarsovia 2010 jest całkowicie bezpłatna i każdy jest mile widziany pod jednym warunkiem - należy się zarejestrować, aby zostać właściwie przyjętym i obdarzonym licznymi atrakcjami okołokonferencyjnymi. Zapraszamy do rejestracji!

Być na bieżąco można na wiele sposobów - jest konto javarsovia na twitterze, jest również grupa fan(atyk)ów na Facebooku, albo można podążać za newsami na kanale Aktualności czytnikiem RSS.

[*] "Gdzieś" to nie nazwa miejsca, a raczej jego wytrych, bo się jeszcze ustala

01 czerwca 2010

Dokończenie rozdziału 2. Koncepcje ze specyfikacji Java EE 6 Contexts and Dependency Injection (CDI)

5 komentarzy
Potwierdza się zasada, że jeśli tylko regularnie poświęcić chwilę, np. każdego dnia, na rozpoznawanie nowego, to po jakimś czasie nowe stanie się zwyczajne, aby ostatecznie stać się zrozumiałym. Tak też się dzieje w kontekście mojego poznawania specyfikacji JSR-299: Contexts and Dependency Injection for the Java EE platform (w skrócie CDI). Obłożyłem się specyfikacją, artykułami i przeglądam grupy dyskusyjne, i z każdym dniem wszystko staje się jasne (zgoda, może niekonieczne jasne, ale na pewno jaśniejsze).

Do tej pory zrelacjonowałem ze specyfikacji CDI (wszystkie w kategorii cdi):
  1. Nauka Java EE 6 CDI (JSR-299) - relacja z lektury pierwszych dwóch rozdziałów specyfikacji
  2. Lektura specyfikacji CDI (JSR-299) za mną, NetBeans 6.9 RC1 wydane i JSR-330 Dependency Injection for Java
  3. Rozdział 2. Koncepcje ze specyfikacji Java EE 6 Contexts and Dependency Injection (CDI)
  4. i jeden, dwa z przemyśleniami różnymi.
Dzisiaj, od dawna planowane, dokończenie relacji z rozdziału 2. Concepts.

W ostatnim wpisie w temacie CDI - Rozdział 2. Koncepcje ze specyfikacji Java EE 6 Contexts and Dependency Injection (CDI) - padło pytanie, które dla wielu jest banalne, ale dla pozostałych niekoniecznie:

Co różni instancję klasy stworzoną przez new, a tymi, przekazanymi przez kontener?

W Javie do tworzenia nowych obiektów (instancji) służy operator new. Możnaby przyjąć, że to funkcja specjalnego traktowania, gdzie parametrem wejściowym jest typ, którego instancję tworzymy, opcjonalnie z parametrami opisującymi jego stan początkowy. Tutaj żadnej magii nie ma. I nie będzie w CDI, Seam, Spring Framework, Guice, a nawet Aspect-Oriented Programming (AOP), jeśli będziemy pamiętać, że nie ma (znanego mi) sposobu konstruowania obiektów niż właśnie przez new. Tutaj się pojawia moje niezrozumienie dyskusji na temat różnic między CDI a AOP. Oba wymagają środowiska uruchomieniowego, nazywanego powszechnie kontenerem, w którym będą żyły nasze obiekty. Mówi się jednak, że jakaś różnica jest. Podobnie z orędownikami Spring Framework i jego konfiguracji opartej na XML, a CDI, w którym opieramy się głównie na adnotacjach. Aczkolwiek w obu, Spring Framework i CDI, możemy wykorzystywać XML do opisywania zależności i ich miejsc wstrzeliwania, to jednak i tutaj pojawiają się głosy nad wyższością Spring Framework i jego XML (nawet, jeśli nadto obszerny) a CDI z adnotacjami. Tak czy owak, we wszystkich uruchamiany jest kontener, który tworzy środowisko dla grafów obiektów (wyrażających interakcje między nimi), który w pewnym momencie uruchamia obiekt główny - to coś, co możemy nazwać początkiem naszej aplikacji.

A wracając do relacji z lektury specyfikacji CDI...

Sekcja 2.4 Scopes omawia przestrzeń dostępności ziaren (przez to i ich widoczności). Mówimy o ziarnach z określonym zasięgiem (ang. scoped beans), co oznacza, że tak na prawdę, przynależą one do innego obiektu - zasięgu - którego zniszczenie niszczy obiekty w nim żyjące. Każde ziarno jest przypisane do jednego i tylko jednego zasięgu. Jedynie ziarna o danym zasięgu, tj. występujące w danym obszarze, mogą ze sobą "rozmawiać".

Określenie zasięgu dla ziarna następuje przez adnotacje należące do pakietu javax.enterprise.context, np. @SessionScoped, który znamy ze specyfikacji Java Servlets.

Możemy tworzyć własne zasięgi, co sprowadza się do stworzenia nowej adnotacji oznaczonej meta-adnotacjami @javax.inject.Scope lub @javax.enterprise.context.NormalScope.

Określenie zasięgu ziarna to przypisanie do niego adnotacji zasięgu - na poziomie klasy ziarna, metody/pola produkującego.

Dla zwrócenia uwagi: ziarno musi należeć do jednego i tylko jednego zasięgu. Innymi słowy: nie możemy być jednocześnie w domu i w pracy (aczkolwiek takie anomalie coraz częściej zachodzą w naszym życiu).

Domyślny zasięg określony jest przez stereotypy. O tym za moment.

2.5 Nazwa EL

Domyślnie, ziarno nie ma nazwy, jest bezimienne. Nadanie nazwy następuje przez adnotację @javax.inject.Named. Wartość @Named przypisuje nazwę, a bez niego nazwa domyślna to nazwa klasy rozpoczynając od małej litery. Tylko wtedy ziarno jest widoczne dla JSP, JSF czy innych technologii korzystających z Unified EL.

Adnotację @Named przypisujemy do klasy lub metody/pola produkującego.

2.6 Alternatywy

Ziarnem alternatywnym nazywamy ziarno, które jest zdefiniowane w pliku konfiguracyjnym CDI - beans.xml, a które przesłania ziarno, dla którego jest alternatywnym.

Ziarno alternatywne definiujemy przez adnotację @Alternative na poziomie klasy lub metody/pola produkującego. Adnotacja może być przypisana również niewprost przez stereotyp.

2.7 Stereotypy

Stereotyp to adnotacja oznaczona meta-adnotacją @javax.enterprise.inject.Stereotype określająca rolę ziarna w aplikacji. Jest to sposób na nadanie ziarnom pewnych cech wspólnych, które rozumiane są przez aplikację, np. @Action lub @Secure. Jest to nic innego jak meta-adnotacja i jej interpretacja zależy od samej aplikacji.

Przypisanie stereotypu do ziarna jest możliwe przez udekorowanie klasy lub metody/pola produkującego.

Ziarno może mieć zero lub więcej stereotypów.

Stereotyp może mieć przypisany zasięg, który niewprost jest przypisywany ziarnu po zaaplikowaniu stereotypu.

Stereotyp może mieć przypisane interceptory.

Stereotyp może mieć przypisaną pustą (bez wartości dla atrybutu value) adnotację @Named, co spowoduje, że każde ziarno z tym stereotypem będzie miało domyślną nazwę EL.

Stereotyp może być oznaczony przez @Alternative, co automatycznie sprawia, że ziarna z nim są alternatywnymi do innych ziaren (zastępują/przesłaniają je) - przydatne w mockowaniu.

Stereotyp może mieć stereotypy.

Wbudowany stereotyp @javax.enterprise.inject.Model służy do wskazania ziaren będących modelem w aplikacji MVC, np. opartej na JavaServer Faces (JSF).

Tyle. Tym samym zakończyłem relację rozdziału 2. Concepts. Kolejna relacja po długim weekendzie, w poniedziałek. Wypoczywajcie bez komputerów, ale przy specyfikacjach :-)

Gorąco polecam lekturę na nadchodzące dni, która bardzo delikatnie wprowadza w temat CDI:
p.s. Z ostatniej chwili - Ruszyła rejestracja na Javarsovia 2010! Jakkolwiek nie będzie podczas konferencji Javarsovia 2010 dedykowanej prezentacji nt. CDI, ale i tak poruszane tematy gwarantują dobrą zabawę. Rejestrujcie się! Konferencja jest całkowicie bezpłatna.