28 kwietnia 2010

Stambuł wciąż zdumiewa (najczęściej) pozytywnie - polecam podróż

1 komentarzy
Herb StambułuMerhaba!

Stambuł nie przestaje mnie zdumiewać. Najbardziej chyba sposób, w jaki jeździ się na ulicach. Dzisiaj udało mi się naliczyć bodaj 6 jadących obok siebie samochodów na ulicy, która mogłaby w Polsce pomieścić co najwyżej 4 i miałaby pasy. Tutaj nie i zdaje się, że jest to rozwiązanie, bez którego całe miasto po prostu stanęłoby. Jazda "zderzak w zderzak" przechodzi moje najśmielsze wyobrażenia jak blisko można jeździć, a kiedy dzisiaj taksówkarz wyjął komórkę i od czasu do czasu spoglądał na mnie obrócony o 180 stopni, zamarłem. Od razu chciało mi się nauczyć tureckiego "Uważaj!" (wciąż go nie umiem). Spokój, opanowanie i brak pasów Twoimi przyjaciółmi. Do tego zaczynam się przyzwyczajać.

Stambuł nocąA skoro o języku, to próbuję się go uczyć i nawet kupiłem audiokurs do nauki tureckiego Turecki, Kurs podstawowy z Edgard. Sprawdza się i wciąż wożę go ze sobą i praktykuję. Potrafię powiedzieć dzień dobry, do widzenia, proszę, dziękuję, cześć, woda i myślałem, że jestem na dobrej drodze, aby władać nim w stopniu 10 słów w ciągu 2,5 tygodnia, ale kiedy przeczytałem, że turecki jest językiem aglutynacyjnym, to stwierdziłem, że to za wysokie progi i na najbardziej podstawowych słówkach się skończy. Ta właściwość języka sprawia, że zdania mogą przybrać formę pojedynczego słowa (!) Nawet nasze "sz" staje się u nich pojedynczym znakiem. Jak to określił jeden z turków, z którym pracuję (równy gość nota bene) - po co komplikować sobie życie? I ma rację! Kiedy przysłuchuję się rozmowom po turecku słychać w nim francuski, a czasami nawet japoński (szczególnie, kiedy rozmawiają kobiety), a pisownia przypomina mi niemiecki z tymi umlautami (znajomość ich wymowy skraca cierpienia nauki).

Kebaby idą codziennie na kolację, więc napodróżowałem się tramwajem za nimi po tzw. starym mieście wokół Błękitnego Meczetu i dalej przy brzegu Morza Marmara u wejścia do cieśniny Bosfor. Wczoraj zjadłem tam grilowane rybki za 5 YTL nad samym brzegiem, co wydało mi się niezwykle egzotyczne (a przez myśl przeszła mi nawet myśl, że trochę nierozważne, ale szybko mi przeszło).

Stambuł nocąWidoki są zapierające dech w piersiach, ale trudno byłoby szukać w nich piękna, raczej swego rodzaju zdumienie, jak udało im się uzyskać ten krajobraz. Wszędzie pełno małych domków, wśród których co jakiś czas góruje para minaretów (wieże meczetów). Mówi się, że rząd w ogóle nie kontroluje napływu ludności do Stambułu w poszukiwaniu pracy i buduje się dla nich domy gdzie popadnie, często, a w zasadzie jak zrozumiałem, zwykle bez pozwoleń. Kiedy wczoraj szedłem mostem nad zatoką Złoty Róg nie mogłem uwierzyć własnym oczom - w oddali domki, woda i meczety tworzyły obraz jak u Disney'a - taki lekko rozmazany czym dalej, co sprawiało, że było takim nierealnym, a te większe meczety dopełniały obrazu. Kiedy teraz sobie o tym pomyślę, nie mogę uwierzyć, że to widziałem. Wszędzie pełno małych domków, górzyste tereny, co jakiś czas meczet, mały, duży i pełno ludzi. Wszystko szare z podświetlonymi meczetami wieczorem. Wszystko to zlewało się w coś na kształt obrazu na ścianie. Ciekawe, czy na zdjęciach będzie to widać?!

Teraz mogę powiedzieć, że chciałbym przyjechać tutaj z rodziną i pokazać im te widoki, i zaraz po tym mógłbym już wracać. Może się kiedyś uda. Wystarczy kilka dni, tydzień. Przelot samolotem bezpośrednio z Warszawy do Stambułu to 2h, więc...pozostaje uzbierać trochę funduszy harując przez cały rok na wyjazd. Zamiast leżeć plackiem nad Morzem Śródziemnym można przechodzić swoje w Stambule. Zaczynam dostrzegać zalety (przysłowiowej zachodniej) emerytury, kiedy się ma odpowiednie podparcie finansowe i można podróżować (nie, nie, nie jestem na emeryturze, a podparcia finansowego też ni widu ni słychu).

Hosca kal!

26 kwietnia 2010

Zdumiewająco szybka instalacja i uruchomienie WebSphere AS V8 Alpha na 64-bitowym RedHat EL 5.5

5 komentarzy
Pisałem już o moim niedawnym postanowieniu związanym z nauką JEE6 z pomocą NetBeans 6.9 i WAS8 (w Nauka JEE6 z WAS8 w NetBeans 6.9 przez rozwój wtyczki j2ee.websphere?), z czym związany był kolejny krok instalacji WAS8 na RedHat Enterprise Linux 5.5 w wersji 64-bitowej. Skąd pomysł na nietypową, 64-bitową wersję RHEL? Cóż, to jest jedyna platforma, na której WAS nie udostępnia graficznego instalatora (!) Za Installing the product on distributed operating systems using the GUI:

The option to launch the Profile Management Tool is only available when a 32-bit version of WebSphere Application Server is installed.

Zresztą tak było od wieków i jak widać szybko się nie zmieni. Doświadczając niedogodności, które są nieobce wielu klientom WASa, zwykłem wybierać najtrudniejszy rodzaj platformy do przeprowadzenia instalacji i późniejszej administracji WASa. Czy to WAS, czy WPS, czy ILOG JRules, idę na całość i wybieram 64 bity z opcją instalacji automatycznej (wydawać by się mogło, że prostszej, ale "automatycznie" znaczy przygotuj wcześniej właściwy plik z odpowiedziami, co dla wielu stanowi wyzwanie same w sobie i nici z prostoty :-)).

Pobrałem właściwe pakiety instalacyjne - IBM Installation Manager for Linux (IM) oraz WebSphere Application Server V8.0 Network Deployment for Linux (wersja udostępniająca tworzenie domeny administracyjnej nazywanej celą, w której możliwe jest również tworzenie klastrów).

To miałem już za sobą, jeszcze przed wyjazdem do Turcji. Dzisiaj wystarczyło jedynie stworzyć obraz VMware z RHEL 5.5 i rozpocząć instalację WAS8. Całość opisana jest we wspomnianym wcześniej dokumencie Installing the product on distributed operating systems using the GUI, co sprowadza się do rozpakowania IM, jego instalacji - tutaj uwaga, bo root uruchamia inny skrypt instalacyjny niż zwykły użytkownik (coś czego nie pamiętam, aby istniało w poprzednich wersjach IM), a później zdefiniowaniu nowego repozytorium z pakietami instalacyjnymi WAS8. Proste, nieprawdaż? Trochę zrzutów ekranu może poprawić nastrój niezdecydowanym, a planującym podobną akcję.

Mamy dwie opcje instalacji WAS8 z pomocą IM - w trybie z połączeniem do Sieci (online) i bez (offline). Repozytoria zdalne są zdefiniowane w IM, więc jeśli się ich nie wyłączy, uruchomienie instalacji pozwoli na wybór wersji WASa - samodzielny WAS lub wersja ND.

W moim przypadku, kiedy instalowałem z pobranymi paczkami instalacyjnymi miałem jedynie WAS ND.

Wybieramy odpowiednią wersję i na kolejnym ekranie wskazujemy katalog domowy produktu - domyślnie /opt/IBM/WebSphere/AppServer.

Następnie wybór opcji instalacyjnych - wybrałem instalację przykładowych aplikacji - Sample applications.

A na kolejnym ekranie, wybór platformy 32-bitowej vs 64-bitowa. Nie pamiętam, aby przy poprzednich wersjach był taki wybór. Jak napisano w dokumentacji "This panel displays only if you are using a 64-bit operating system that has a corresponding 32-bit image".

Później już tylko pozostaje zatwierdzić wybór w panelu podsumowującym...

z zajętością końcowej instalacji na dysku...

i bodajże po...5 minutach (!) WAS8 jest *prawie* gotowy do uruchomienia. To była pierwsza większa niespodzianka przy tej instalacji (kilka mniejszych to wybór platformy 32- vs 64-bitowej oraz różne polecenia do uruchomienia IM dla root vs nie-root).

Przez "prawie" mam na myśli konieczność stworzenia profilu, co z manageprofiles i przygotowanym plikiem odpowiedzi w profileTemplates/default jest niezwykle proste.
[root@localhost AppServer]# ./bin/manageprofiles.sh -create -templatePath profileTemplates/default
INSTCONFSUCCESS: Success: Profile AppSrv01 now exists. Please consult /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/AboutThisProfile.txt for more information about this profile.
[root@localhost AppServer]# pwd
/opt/IBM/WebSphere/AppServer
[root@localhost AppServer]# ./bin/manageprofiles.sh -listProfiles
[AppSrv01]
[root@localhost AppServer]# cat profiles/AppSrv01/logs/AboutThisProfile.txt
Application server environment to create: Application server
Location: /opt/IBM/WebSphere/AppServer/profiles/AppSrv01
Disk space required: 200 MB
Profile name: AppSrv01
Make this profile the default: True
Node name: localhostNode01
Host name: localhost
Enable administrative security (recommended): False
Administrative console port: 9060
Administrative console secure port: 9043
HTTP transport port: 9080
HTTPS transport port: 9443
Bootstrap port: 2809
SOAP connector port: 8880
Run application server as a service: False
Create a Web server definition: False
Kolejną niespodzianką był czas uruchomienia WAS8 - niespełna 30 sekund! Jeśli ktokolwiek nazwie WASa "kobyłą", to mógłby mieć na myśli, albo inny produkt, albo...wypowiedź ocenzurowana.
[root@localhost AppSrv01]# ./bin/startServer.sh server1
ADMU0116I: Tool information is being logged in file
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/server1/startServer.log
ADMU0128I: Starting tool with the AppSrv01 profile
ADMU3100I: Reading configuration for server: server1
ADMU3200I: Server launched. Waiting for initialization status.
ADMU3000I: Server server1 open for e-business; process id is 7358
[root@localhost AppSrv01]# cat logs/server1/SystemOut.log
************ Start Display Current Environment ************
WebSphere Platform 8.0.0.0 [ND 8.0.0.0 kk1009.04] running with process name localhostNode01Cell\localhostNode01\server1 and process id 7358
Host Operating System is Linux, version 2.6.18-194.el5
Java version = 1.6.0, Java Compiler = j9jit24, Java VM name = IBM J9 VM
was.install.root = /opt/IBM/WebSphere/AppServer
user.install.root = /opt/IBM/WebSphere/AppServer/profiles/AppSrv01
Java Home = /opt/IBM/WebSphere/AppServer/java/jre
ws.ext.dirs = /opt/IBM/WebSphere/AppServer/java/lib:/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/classes:/opt/IBM/WebSphere/AppServer/classes:/opt/IBM/WebSphere/AppServer/lib:/opt/IBM/WebSphere/AppServer/installedChannels:/opt/IBM/WebSphere/AppServer/lib/ext:/opt/IBM/WebSphere/AppServer/web/help:/opt/IBM/WebSphere/AppServer/deploytool/itp/plugins/com.ibm.etools.ejbdeploy/runtime
Classpath = /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/properties:/opt/IBM/WebSphere/AppServer/properties:/opt/IBM/WebSphere/AppServer/lib/startup.jar:/opt/IBM/WebSphere/AppServer/lib/bootstrap.jar:/opt/IBM/WebSphere/AppServer/lib/jsf-nls.jar:/opt/IBM/WebSphere/AppServer/lib/lmproxy.jar:/opt/IBM/WebSphere/AppServer/lib/urlprotocols.jar:/opt/IBM/WebSphere/AppServer/deploytool/itp/batchboot.jar:/opt/IBM/WebSphere/AppServer/deploytool/itp/batch2.jar:/opt/IBM/WebSphere/AppServer/java/lib/tools.jar
Java Library path = /opt/IBM/WebSphere/AppServer/java/jre/lib/amd64/compressedrefs:/opt/IBM/WebSphere/AppServer/java/jre/lib/amd64:/opt/IBM/WebSphere/AppServer/bin::/usr/lib
************* End Display Current Environment *************
[4/26/10 18:12:50:916 CEST] 00000000 ManagerAdmin I TRAS0017I: The startup trace state is *=info.
...
[4/26/10 18:13:17:887 CEST] 00000000 WsServerImpl A WSVR0001I: Server server1 open for e-business
To musi cieszyć każdego, komu przyszło lub przyjdzie dotykać WASa. Widać, że produkt się rozwija i czasy uruchomienia są coraz bardziej imponujące (jeśli do tej pory nie były ;-)).

Teraz uruchomienie konsoli administracyjnej http://localhost:9060/ibm/console i kolejna niespodzianka. Nowiutki ekran logowania!

Niby nic szczególnie funkcjonalnego, ale oko cieszy. Dla mnie cacy.

Powyższy ekran już znajomy dla adminów WAS7 (nie zauważyłem jakiejkolwiek zmiany w stosunku do tej wersji), ale sam komunikat o wersji WASa ujął mnie za serce - 8.0.0.0. Niesamowite!

Tym samym kolejny krok ku nirwanie technologicznej szczęśliwości związanej z JEE6 i WAS8 zrobiony. "That's one small step for [a] man, one giant leap for mankind" :-)

Kolejne zadanie to przestudiowanie nowej specyfikacji Java Servlet 3.0 i uruchomienie przykładowej aplikacji webowej bez deskryptora. Zaplanowałem już wykręcić jakiś maluczki skrinkast. Z nadzieją na ciekawe pomysły, co miałby zawierać i ile miałby trwać, zamieniam się w słuch...

25 kwietnia 2010

Nauka JEE6 z WAS8 w NetBeans 6.9 przez rozwój wtyczki j2ee.websphere?

1 komentarzy
Jak każdy użytkownik NetBeans IDE wie, albo przynajmniej wiedzieć powinien, od wersji 6.8 w grupie wspieranych serwerów aplikacyjnych brakuje IBM WebSphere Application Server (WAS). Mimo, że wtyczka do tego serwera istnieje i wspiera wersje 6.0 oraz 6.1, to jak to się wyrażono (nie pamiętam jednak źródła) ze względu na brak aktywnego rozwoju wtyczki i kilka problemów z nią związanych zdecydowano się na wstrzymanie dystrybucji wtyczki z najnowszymi wersjami NetBeans IDE, a więc NetBeans 6.9 nie ma i nie planuje się, aby miał ją dystrybuowaną domyślnie (lub chociażby dostępną w repozytorium do instalacji przez Update Installer). W ten sposób szeroka grupa użytkowników obu rozwiązań musi posiłkować się rozwiązaniami alternatywnymi - zamiast NetBeans IDE korzystać z IBM Rational Application Developer lub zrezygnować z bezpośredniego uruchamiania projektów na rzecz uruchamiania ich ręcznie. Manufaktura pamiętająca ubiegły wiek.

Nie potrafię wytłumaczyć tej sytuacji, a kiedy dopowiem, że Eclipse również nie przychodzi ze wsparciem dla WASa, to już w ogóle trudno mi ją zrozumieć. Nawet przesiadka na Eclipse nie wchodzi w rachubę. Pewnie chodzi o "zasoby", które każda ze stron chciałaby poświęcić na rozwój narzędzi, czy to NetBeans IDE, czy Eclipse. Jakkolwiek w przypadku tego pierwszego szybko to nie nastąpi (szczególnie po przejęciu przez Oracle, gdzie strategicznych serwerów przybyło - GlassFish, Oracle WebLogic Server, JBoss Application Server i Apache Tomcat), to w przypadku drugiego było to dla mnie niebywałym zaskoczeniem.

W swojej DziRze (parafrazując wymowę nazwy produktu JIRA), czyli Dzienniku Rzeczy do Zrobienia (możnaby napisać DziRzeZ, ale to pachnie bluźnierstwem i ekskomuniką) pojawiło się zadanie/projekt Nauka JEE6 z WAS8 w NetBeans 6.9. Testuję tym samym metodykę GTD (ang. Getting Things Done), gdzie każde zakończone zadanie jest początkiem kolejnego i tak zaczęło się od instalacji NB 6.9 Beta, która ukazała się kilka dni temu, później przeszukiwanie Sieci za źródłami wtyczki do obsługi WASa i w końcu mam...

W moim NetBeans 6.9 pojawiła się parka serwerów IBM WebSphere Application Server 6.0 oraz 6.1. Niestety brakuje wsparcia dla 7.0 (obsługa Java EE 5) oraz 8.0 (obsługa Java EE 6).

Już kiedyś zab(ie)rałem się za pisanie wtyczki do NetBeans IDE dla Apache Geronimo, ale jak to zwykle bywa, inne rzeczy były ważniejsze i cała para związana z rozwojem wtyczki poszła w gwizdek. Pomyślałem sobie, że warto byłoby powrócić do tematu inną ścieżką. W końcu na tapecie jest nauka JEE6 z rozpoznaniem WAS 8, co w połączeniu z nieprzeciętnym wsparciem dla tej technologii przez NetBeans IDE mogłoby być przyczynkiem do rozwoju aktualnej wtyczki dla WAS 6.0/6.1 i już po nabraniu wprawy, przejściu do wtyczki dla Apache Geronimo. Wydaje się być trochę przekombinowane, ale póki co sprawy idą gładko.

Przeszukałem Sieć i dobrałem się do źródeł wtyczki NB dla WAS, które dostępne są w repozytorium Git - http://hg.netbeans.org/main/ w podkatalogu j2ee.websphere. Wykonujemy kilka poleceń...
devmac:oss jacek$ mkdir netbeans
devmac:oss jacek$ cd netbeans
devmac:netbeans jacek$ hg clone http://hg.netbeans.org/main/ .
devmac:netbeans jacek$ export ANT_OPTS="-Xmx512m -XX:MaxPermSize=256m"
devmac:netbeans jacek$ ant
...
BUILD SUCCESSFUL
Total time: 47 minutes 10 seconds
, aby po zaimportowaniu do NetBeans...

i uruchomieniu projektu, cieszyć się wsparciem NB dla WAS. Jakby przy okazji (aczkolwiek w moim przypadku był to cel, a nie efekt uboczny) mamy gotowe środowisko do rozwoju, tj. lektury kodu źródłowego wtyczki NetBeans IDE dla WebSphere Application Server.

Jakbym tak jeszcze wiedział, jak lokalne zmiany publikować w GitHub, albo Google Code w postaci "sforkowanych" projektów byłoby na prawdę cacy. Ktoś mógłby użyczyć pomocnej dłoni? Byłbym zobowiązany.

23 kwietnia 2010

Raczej nietechnologiczne dylematy poranne o nieprawdziwości danych służbowych w społecznościówkach, Hello World i brush up on...

3 komentarzy
Ech, możnaby to spuentować jednym prostym "Jak ja kocham moją Agatkę", ale nie byłoby to tak zaskakujące, jak temat porannych dywagacji między Jackiem i Agatką (kolejność nawiązuje do tytułu popularnej dawniej dobranocki) nt. aktualności danych w serwisach społecznościowych. Wszystko zaczęło się od moich...hmmm...sądzę, że możnaby je nazwać...narzekaniami na problem aktualności danych w serwisie GoldenLine, ale faktycznie dotyczyły dowolnej społecznościówki. Przypisano mnie do zadania prowadzenia rozmów ze sponsorami konferencji Javarsovia 2010 i dostrzegam, jakim wyzwaniem jest dotarcie do osób decyzyjnych. Wiele stron w Sieci jest nieaktualizowanych do tego stopnia, że kontakt z działem marketingu czy przesłanie zapytania przez formularz kontaktowy kończy się...

This is an automatically generated Delivery Status Notification.

Delivery to the following recipients failed.


Porażka! Gdzie jak gdzie, ale właśnie w Sieci dane kontaktowe powinny być aktualne i firmy powinny zadbać o rzetelną obsługę treści na ich stronach. I sądzę, że jest to obowiązek, a nie przywilej. Cóż, rzeczywistość jest nieznacznie odmienna od moich oczekiwań i czasami (raczej bardzo rzadko) potykam o takie kwiatki.

Skorzystałem z techniki podejrzanej u mojej Agatki przeszukiwania serwisów społecznościowych, aby dotrzeć do decydentów (nie mylić z dysydentami) - osób władnych w podjęciu decyzji o udziale firmy w Javarsovia 2010 w roli sponsora. I tu pojawia się mój, raczej nietechnologiczny dylemat poranny:

Czy można publikować nieprawdziwe dane służbowe o pracy w firmie, w której się już nie pracuje?

Czy wolno byłemu pracownikowi korzystać z marki firmy w serwisie społecznościowym, czy gdziekolwiek publicznie, aby rozgłaszać, że wciąż się w niej pracuje, mimo że już tak dawno nie jest?! Temat może wydawać się błahy, ale pikanterii mógłby dodać fakt, że delikwent mógłby zostać zwolniony dyscyplinarnie i ciągnie się za nim sprawa, głośna i publiczna, a w serwisie wciąż widnieje "Aktualny pracowadca: XYZ na stanowisku ABC". Czy firma może zażyczyć sobie zdjęcia takiego wpisu, jego aktualizacji, albo cokolwiek? Na ile można sobie pozwolić z posługiwaniem się logo i nazwą firmy? Czy mógłbym napisać w profilu, że jestem ABC w firmie XYZ mimo, że faktycznie nim nie jestem? I już na zakończenie serii dylematów związanych ze społecznościówkami, czy publikując dane w serwisie społecznościowym o swojej przynależności służbowej mamy w obowiązku obsłużenia wiadomości-zapytania, gdy piszemy do pracownika, a nie osoby prywatnej? Dobrze, że odwiozłem Agatkę i dyskusja nie trwała dłużej.

Już bardziej technicznie natchnęło mnie, kiedy wracając do domu myślałem o moich przyszłych scrinkastach. Kiedy tak zastanawiałem się co i jak, wciąż krążył koło mnie przysłowiowy "Hello World" jako pierwszy przykład w danej technologii. Od razu przypomniałem sobie moje wcześniejsze dywagacje nt. zbytniego przykładania wagi do technologii zamiast strony biznesowej, klienckiej, gdzie funkcjonalności aplikacji wyznaczają technologię i jej realizację, a nie na odwrót. I to właśnie było olśniewające (jak to słońce, które świeciło mi na Pileckiego) - narzekamy na strywializowane przykłady zastosowania technologii bez praktycznego przełożenia, a to właśnie wynika z naszego lekceważenia powodów, dla których się ich uczymy - realizowania projektów, a nie nauki kolejnej, pewnie fascynującej i bogatej funkcjonalnie technologii - języka programowania, techniki programistycznej, szkieletu aplikacyjnego, wzorca. Wszystko cacy, ale gdzie jest tego wartość, jeśli nie możemy wykorzystać ich w projektach, gdzie faktycznie stykamy się z problemami wdrożenia i wyboru tej czy innej ciekawostki technologicznej. I właśnie to jest powód, dla którego nasze przykłady użycia technologii kończą się na powitaniu świata, a paradoksalnie jego pożegnaniu, bo tyle widziano jej wdrożenia u klienta. Smutne.

p.s. Przeglądając kanał z tweetami trafiłem na niezwykle ciekawy zwrot czasownikowy (ang. phrasal verb) - brush up on sth. Za Cambridge International Dictionary of Phrasal Verbs:

to practise and improve your skills or your knowledge of something that you learned in the past but have partly forgotten

He was hoping to brush up on his Italian before our trip.
Paul's challenged me to a game of tennis so I thought I'd better brush up on my technique.

21 kwietnia 2010

Początki z OSGi oraz Javarsovia 2010 z Clojure?

5 komentarzy
Dobrze mieć szerokie znajomości technologiczne (osobowe i te związane bezpośrednio z samymi produktami), kiedy idzie o stawkę bycia na bieżąco, a zarządzanie czasem nie należy do największych atutów. Tak się też stało z OSGi 4.2, kiedy miałem możliwość lektury świeżo wydanych specyfikacji z serii OSGi Service Platform Release 4 Version 4.2, aby mieć całościowy pogląd na sprawy na potrzeby konferencji 4Developers w Poznaniu (wpis OSGi Service Platform Release 4 Version 4.2 Enterprise Specification wydane, jak i moja prezentacja na 4Developers) i tak też było wczoraj, kiedy zostałem zapytany o...Apache Felix Karaf:

12:26:27 PM Nieznajomy... siema
12:31:54 PM halo tam
12:32:14 PM Jacek.Laskows... cześć
12:32:16 PM co tam?
12:33:06 PM Nieznajomy... miałeś może kiedyś do czynienia z Apache Felix Karaf?
12:34:26 PM Jacek.Laskows... tak
12:34:34 PM OSGi
12:34:46 PM a co Ciebie zainteresowało w nim?!
12:34:48 PM Nieznajomy... tak
12:34:50 PM Jacek.Laskows... to za nisko dla Ciebie
12:34:58 PM prawie jak assembler
12:35:03 PM a ty na poziomie przeglądarki :)
12:35:19 PM Nieznajomy... hehe
12:35:19 PM no bez przesady :)
12:35:25 PM raz tak raz tak
12:35:49 PM wiesz jak to integrować z ecplipsem?
12:36:00 PM Jacek.Laskows... a do czego zmierzasz?
12:36:07 PM bo w Eclipse masz Equinox
12:36:11 PM a to prawie to samo
12:36:30 PM Nieznajomy... chciałbym na początek jakieś hallo word napisać
12:36:35 PM Jacek.Laskows... ach
12:36:37 PM a to proste
12:36:40 PM czekaj...
12:36:50 PM Nieznajomy... czytam na ten temat ale niewiele jest...
12:37:08 PM Jacek.Laskows... http://www.jaceklaskowski.pl/wiki/Tworzenie_pakiet%C3%B3w_OSGi_z_Apache_Maven_2
12:37:23 PM i kilka innych w kategorii OSGi
12:37:25 PM u mnie
12:38:13 PM Nieznajomy... no właśnie tam pamiętałem że o Mavenie wykłady dawałeś dla studentów kiedyś :)
12:38:40 PM Jacek.Laskows... możesz prosto utworzyć pakunek (bundle) w Eclipse
12:38:44 PM gdzieś u mnie na blogu o tym było
12:38:45 PM momento
12:39:25 PM Nieznajomy... bo zacząłem czytać jakieś manuale ale one są tak pisane że sie odechciewa dalej czytać...
12:39:38 PM Jacek.Laskows... zatem zróbmy tak
12:39:48 PM Ty mi napiszesz, co chcesz osiągnąć - efekt końcowy
12:40:09 PM Nieznajomy... końcowego jeszcze nie znam
12:40:26 PM na początek uruchomić to w Ecplipse
12:40:57 PM jakieś coś prostego... np coś co odczyta ruch na sockecie
12:41:36 PM może byc?
12:48:11 PM Jacek.Laskows... pisz na priv
12:48:15 PM opisz wszystko
12:48:19 PM i daj mi trochę czasu
12:48:29 PM powinienem znaleźć trochę czasu w nadchodzących dniach
12:50:14 PM Nieznajomy... no ok, a tymczasem od czego sugerujesz mi zacząć
12:50:30 PM bede potrzebować M2 w Ecplipse?
... // tu mnie trochę wyrwało z dyskusji...
2:11:49 PM Jacek.Laskows... http://jlaskowski.blogspot.com/2009/10/tworzenie-pakunkow-osgi-w-eclipse-ide.html


A dalej już telefonicznie, bo czułem, że zaczęliśmy tracić grunt pod nogami z nawałem technologii i brakiem zrozumienia potrzeb. Po kilku minutach, zaproponowałem następujące kroki, które należy wykonać, aby przejść przez początkowe niezrozumienie OSGi i przejść na poziom bardziej zaawansowany Apache Felix Karaf.
  1. Lektura wpisu wyżej - Eclipse IDE w roli wspierającego budowanie pakunków OSGi
  2. Stworzenie aplikacji do nasłuchiwania na porcie.
  3. ZOSGifikowanie aplikacji z punktu 2.
  4. Uruchomienie na Apache Felix.
  5. Uruchomienie na Apache Felix Karaf.
  6. IMPREZKA
Coś jeszcze? Zamierzam jego poczynania spisywać na bieżąco, aby przy kolejnej tego typu dyskusji mieć wszystko w jednym miejscu. Jak się podoba? Uwagi mile widziane.

A w kontekście Javarsovii, to po mojej prośbie o wystąpienie z Clojure w roli głównej dostałem wiadomość do skrzynki od Daniela Janusa, że będzie, ale...

Nie jestem pewien, jaki poziom szczegółowości byłby dobry. Czy coś ogólnego, jak "Clojure i jego wykorzystanie w praktyce", czy szczegółowego jak "Dwa światy: szybkie i bezbolesne budowanie aplikacji Swingowej w Clojure" lub "O frameworkach webowych w Clojure"? Raczej wprowadzenie, czy raczej coś praktycznego z krótkim wprowadzeniem? Jaki poziom znajomości tematu zakładać u słuchaczy?

pozdrawiam,
Daniel


Możecie mi doradzić, co odpowiedzieć? Ja jestem za wszystkimi trzema, ale gdybym miał wybierać ten jeden, to pewnie postawiłbym na "Dwa światy: szybkie i bezbolesne budowanie aplikacji Swingowej w Clojure". A jak u Was z wyborem? Piszcie, aby być usłyszanymi. Sama konferencja Javarsovia 2010 jest całkowicie bezpłatna, ale szkoda byłoby zmarnować sobotę na odsiedzenie na prezentacji, która nie odpowiadałaby naszym oczekiwaniom. Mając Daniela możemy spędzić go bardzo poznawczo i...pod nasze dyktando! :)

20 kwietnia 2010

Zgłaszanie prezentacji na Javarsovia 2010...jeszcze tylko do 8 maja

0 komentarzy
Panie i Panowie,

Na stronie konferencji Javarsovia 2010 od kilku dni widnieje zaproszenie do składania tematów prezentacji, które brzmi:

Zapraszamy do zgłaszania tematów prezentacji na najbliższą Javarsovię 2010.

Mile widziane są tematy dotyczące nowości technologicznych wokół Javy, Java EE i wirtualnej maszyny Javy (JVM) oraz wszystkiego, co związane z nurtem Agile, ze szczególnym naciskiem na stronę praktyczną. Czekamy także na propozycje warsztatów oraz paneli dyskusyjnych.

Na zgłoszenia czekamy do 8 maja.

Więcej informacji znajdziecie na stronie Call for Papers.


Przypominam, że konferencja odbędzie się w Warszawie, 26 czerwca 2010 przez caluteńką sobotę, a może nawet część piątku i kawałek niedzieli (dla najbardziej wytrwałych). Frekwencję planuje się na poziomie 400-500 uczestników, co powinno być wystarczającym bodźcem do wystąpienia i zaistnienia na polskiej scenie javowej. Skojarzenie prelegenta z tematem, to pierwszy krok ku informatycznej nirwanie bezkresu strumienia zgłoszeń, zleceń i innych niespodzianek finansowo-technologicznych. Wiem co piszę, aczkolwiek bezkres kredytów nie pozwala mi jeszcze dostrzec wspomnianego bezkresu finansowej szczęśliwości.

Gdybym ja był na Waszym miejscu nie wahałbym się ani chwili, aby zgłosić swój temat, a nawet dwa (zawsze to większa szansa na przejście przez sito kwalifikacyjne). Idealne miejsce, aby popróbować się z nielekką sztuką prezentacji oraz zapaść w pamięci polskiej społeczności javowej jako mówca i znawca tematu.

p.s. Bardzo, ale to bardzo życzę sobie, aby pojawił się praktyczny temat związany z językiem funkcyjnym i gdyby to był Clojure byłbym niezwykle zachwycony. Podkreślam stronę praktyczną, a nie naukową wystąpienia. Pomogę, jeśli będzie potrzeba, np. w roli recenzenta.

Pozdrawiam,
Jacek

18 kwietnia 2010

Pył wulkaniczny i mój 17-godzinny powrót z Turcji

4 komentarzy
Piątek, 16 kwietnia był moim ostatnim dniem z 3-dniowej wizyty w Stambule, Turcji. Pierwsza tura już za mną, ale zanim szczęśliwie przyszło mi skosztować weekendu w domu, najpierw odbyłem ponad 17-godzinną podróż z powrotem, najpierw samolotem o 16:10 ze Stambułu do Budapesztu, a później o 19:56 pociągiem do Warszawy, aby ostatecznie z niewielkim, 20-minutowym spóźnieniem, kilka minut przed 8-mą wsiąść do taksówki na Ursynów. Ech, to była pełna przygód podróż do Turcji, a kolejne 2 jeszcze przede mną. Jeśli ich przebieg będzie tak intensywny w przeżycia, zejdę na serce, nie podczas robienia kariery korporacyjnej, ale dużo wcześniej :-)

W pierwszy dzień, w środę spędziłem wieczór z poznanym niemcem, gdzie zjedliśmy kebab w restauracji - Altin kapi. Zdecydowanie nie polecam, mimo wyglądu, który mógłby świadczyć, że podawane tam dania będą wysokich lotów. Tak niestety nie było - zimne, wysuszone i jakieś bezsmakowe. Później, w czwartek, dałem się namówić własnej pokusie zjedzenia kebaba za bagatela 5,75 tureckich lir, co na nasze przekłada się na jakieś 5,75 YTL * 1,8 PLN = 11 PLN. Cena na tyle niska, że kiedy powiedziałem o moim "wyczynie" turkom spojrzeli na mnie z niedowierzaniem i zdecydowanie odradzili kolejne takie eskapady. Pamiętam ich miny i pełen niepokoju wygląd, kiedy pytali, czy wszystko, aby ze mną w porządku - zdrowotnie (i pewnie i mentalnie). Dla nich kebab musi kosztować nie mniej niż 15 YTL, więc mój był...zdecydowanie poniżej normy. Dla mnie był jednak bardzo smaczny i przy kolejnej okazji jeszcze raz podejmę się wyzwania (będę jednak mierzył w kebaby za 10-15 YTL).

Chyba musiała ich niezmiernie zmartwić ta moja determinacja zjedzenia ichniejszego kebabu, bo w piątek, przed odjazdem zaprosili mnie na obiad do restauracji, gdzie za 25 YTL zjadłem kebaba, który był faktycznie smaczniejszy. Jeju, ale te kebaby są smaczne u nich. Oczywiście znajdłem go z maślanką, bo jakkolwiek nie polecają, jako podstawowego napoju do tego dania, to wielu tak jadło, więc i ja tak wziąłem.

Moja nauka tureckiego postępuje i wzbudza coraz większe zainteresowanie (aka rozbawienie). Znam już w wymowie rachunek (fisz), dziękuję (teszekilesz), dzień dobry (ginajdyn), do wiedzenia (hoszczekal), woda (su), a owe zsiadłe mleko to ajran. Litera przypominająca 'i' bez kropki czytana jest jak nasze 'i', a z kropką czytanie jest jak nasze 'y'. Sądzę, że moje, informatyczne ciągłe doskonalenie przydaje się przy nauce kolejnego języka, tym razem tureckiego, bo daje się łatwo zapamiętywać. Kolejna zaleta ciągłego samodoskonalenia.

Dowiedziałem się również, że cały ruch uliczny w Stambule jest monitorowany kamerami, które dostępne są w telefonie komórkowym za...5 YTL (nasze 10 PLN). W ten sposób wybrałem z taksówkarzem drogę, która była przejezdna, podczas gdy pierwszy wybór mógłby nas sporo kosztować czasowo. Bajka!

Napisałem na twitterze, że jestem w Stambule i poszukuję miejsca na dobre jedzenie. Nie minęła godzina, kiedy dostałem wiadomość, że warto pójść do sieci restauracji Gelik i spróbować denizer kebab oraz mushroom pilav. Kolejny raz przekonałem się o możliwościach twittera. Kolejna, nieznana mi wcześniej, pomocna dłoń.

Kiedy opuszczałem Stambuł w piątek o 16:10 zjawiłem się na lotnisku około 14tej. Już było wiadomo, że będą problemy z przelotem do Polski (i innych krajów europejskich na północy). Powód: wybuch wulkanu na Islandii i latający na wysokości 6km pył wulkaniczny grubości 1km, który niszczy silniki samolotów pasażerskich, które latają na wysokości 10-11km. Dostałem przelot do Budapesztu z informacją, że dalej się już nie da i będę musiał samodzielnie rozwiązać problem (czytaj: czekać cierpliwie na otwarcie lotnisk). Miałem do wyboru - zostaję kolejny tydzień, z weekendem w Turcji, albo wracam...jakoś. Zdecydowałem podjąć się wyzwania i wsiadłem do samolotu do Budapesztu. W międzyczasie widziałem odprawę tajlandki (wyczytałem na jej paszporcie) ubranej w czador. Zastanawiałem się, jak nastąpi sprawdzenie jej tożsamości i poza zdjęciem bez nakrycia głowy na okładce paszportu, na prośbę strażnika musiała na chwilę opuścić zakrycie twarzy (nie zdjąć, ale opuścić, aby tylko on widział jej twarz).

Wyruszyłem. Do Budapesztu doleciałem około 18:00, gdzie dowiedziałem się całkowicie przypadkowo, podczas rozmowy ze znajomym z Polski, że mam pociąg o 19:58 bezpośrednio do Warszawy, a później kolejny o 20:10 z przesiadką. Chwila zastanowienia i jadę pociągiem! Płacę kartą, więc krótka rozmowa z taksówkarzem i podjeżdża taka, w której mogę nią płacić. I tu uwaga - karta American Express nie jest akceptowana. W Turcji zresztą również nie była. Pamiętam, że jak byłem we Włoszech, było podobnie. Warto pamiętać o tym, aby mieć jedną kartę debetową do wybierania gotówki z bankomatu, a drugą, kredytową i to najlepiej nie-AmEx, na bieżące, większe wydatki. Po 30 minutach byłem na stacji kolejowej. To, co się tam działo nie było przyjemne. Mnóstwo ludzi, pełno kolejek i brak jakiejkolwiek informacji, gdzie możnaby kupić bilety na międzynarodowe przejazdy oraz czy można w kasach płacić kartą. Dwie młode dziewczyny obsługiwały rozgorączkowanych i żądnych odpowiedzi pasażerów, i widać było obu stron zniecierpliwienie. W końcu numerki do kas biletowych się skończyły, a te które się pojawiały na wyświetlaczu były jakieś od czapy. Dobrze, że zdecydowałem się pójść do kolejki do kas biznesowych, gdzie mogłem płacić kartą...teoretycznie. "Teoretycznie", bo niestety po 1,5h stania w kolejce nie doczekałem się na swoją kolej kupienia, bo podjechała ta właściwa do Warszawy i postanowiłem kupić bilet w pociągu.

Kuszetka zajęta, więc pozostała mi opcja znalezienia miejsca siedzącego w wagonie 2-iej klasy. Siedzę. Pozostała ekipa to jak się później okazało student drugiego roku ekonomii Uniwersytetu Gdańskiego, który wracał również ze Stambułu drogą lądową z konferencji wokół programu Erasmus (był w drodze od 24 godzin!) oraz trójką podróżników z Trójmiasta i jednej słowaczki. Bez biletu, z nadzieją kupienia go w pociągu płacąc kartą i z niepewnością, że zająłem komuś miejsce wyruszyłem do Warszawy. I tu zaskoczenie #1 - w pociągu międzynarodowym nie ma Warsu, czy innego miejsca, gdzie możnaby zjeść! Kolejne zaskoczenie #2 - w nocnych kursach nie można płacić kartą. A jeszcze kolejne zaskoczenie #3, że przejazd przez dany kraj (w moim przypadku Węgry, Słowacja, Czechy i Polska), to kontrola "krajowa", więc i na Węgrzech i kolejnych krajach negocjowaliśmy płatność "w łapę". Dziękuję moim współtowarzyszom podróży za zapłacenie za mnie na Węgrzech (w forintach) i Słowacji (w euro). Jestem wciąż pod wrażeniem ich hojności i niezmiernie wdzięczny. Wciąż nie mogę uwierzyć, że miało to miejsce. Po prawie 17 godzinach dojechałem do Warszawy, aby około 8-mej być w domu.

Miałem planowany wyjazd powrotny do Stambułu w niedzielę o 13:05 LOTem, ale Okęcie zamknięte, więc siedzę w domu. Już wiem, że w poniedziałek się również nie da. Pewnie dopiero we wtorek. Pył wulkaniczny krąży w atmosferze, a ja siedzę z żonką i dziećmi w Wawie :-)

15 kwietnia 2010

Witamy w Stambule, Turcja

6 komentarzy
Pojawiłem się na 2 dni (czw, pt) w Stambule, Turcja i nie powiem, abym czuł się swobodnie. Jakoś tak wszystko trochę odmienne, tajemnicze. Może to przez ten język, którego w ogóle nie można rozszyfrować. Wcale nie brzmi znajomo.

Mieszkam w hotelu Holiday Inn Istanbul City, więc miasto mam na wyciągnięcie ręki i jakkolwiek jest to "największe miasto Turcji i jedno z największych miast świata, największa aglomeracja w Europie" (za Wikipedia.pl), to niekoniecznie jest to ta liczność, która daje mi się we znaki. Zresztą nie sądzę, aby taką garstkę osób nazywać "największą aglomeracją". Jest trochę ludzi na ulicach, ale bardziej zdumiony jestem wielkością restauracji (z Doner Kebab oczywiście), sklepów i innych miejsc użyteczności publicznej. One mogą wprowadzić człowieka w klaustrofobię. Niewielkie i niekoniecznie odpowiadające normom naszego Sanepidu :]

Swój pobyt w Turcji rozpocząłem od spotkania z gościem z Niemiec, który najpierw zapytał o przelicznik USD do YTL, abym później pomógł mu w dotarciu do hotelu. Kiedy rozstaliśmy się przy bankomacie, okazało się, że w Stambule są dwa Holiday Inn (Airport i City), więc kiedy zobaczyłem, że męczy się bidula podczas rozmowy z taksówkarzem i usłyszałem Holiday Inn, do którego ja również jechałem, zaproponowałem wspólną podróż. Okazało się, że tam gdzie ja jechałem i on jechać powinien. W tej sytuacji zabawne było to, że okazało się również, że jakkolwiek byłem w swoim hotelu, to faktycznie powinienem zamówić ten z Airport. Rozgarniętym co nie miara. Później jeszcze wspólna kolacja na mieście z gościem i on wraca do Germany, a ja zostaję na jeszcze jeden dzień. Zjedliśmy w wykwintnie wyglądającej restauracji, ale wykwintność była jedynie w wystroju, bo samo jedzenie do bani - letnie i jakoś nie przypominające smakiem tutejszego jedzenia (pewnie się nie znam i stąd rozbieżność). Nie pamiętam niestety nazwy.

Dzisiaj za to zjadłem pierwszego kebaba z niby budki, niby restauracji, gdzie w Polsce do takiego miejsca nie zawitałbym wcale i...miłe wrażenie. Obsługa życzliwa, kebab smaczny, ogólnie polecam. Niepozorne, ale jedzenie doskonałe. Miejsca są inne niż w Polsce, czy w ogóle Europie, a pędzące samochody na ulicach, wciąż trąbiące na wszystko i wszystkich, dodają pikanteri sytuacji. Wszędzie język, który przypomina mieszankę węgierskiego z hebrajskim. Tutaj też pełne zaskoczenie, bo Finowie, Węgrzy i Turcy, to ta sama grupa językowa. Podobnie zaskoczyło mnie, kiedy dowiedziałem się, że naszemu polskiemu najbliżej do...chorwackiego (!) Kto by pomyślał, że nie do ukraińskiego, litewskiego czy słowackiego i czeskiego.

Chyba zaczynam odczuwać przepełnienie stosu i bliskim OOME :) Szczególnie fanie wyglądają minarety. Do taksówki lepiej nie wchodzić, bo nie tylko, że w niektórych tylko można zapiąć pasy, to jeszcze jazda zderzak w zderzak przy prędkości 120 km/h. Jeszcze brakuje tej muzyczki z radio, jak w jednej reklamie. Dopełniłoby to moje szczęście. Kiedy dzisiaj wsiadłem do taksówki, nie dosyć, że nie można było zapiąć pasów, to jeszcze taksówkarz zaczął palić papierosa, a kiedy chciał go wyrzucić przez lekko uchyloną szybę, trochę popiołu znalazło się automagicznie na mojej koszuli i spodniach (nie wiem, czy przypadkiem i nie na włosach). Bosko! :) Ach, a czy wspomniałem, że taksówkarze nie tylko, że nie mówią po angielsku czy chociażby niemiecku, to jeszcze niejednokrotnie nie znają wielu miejsc w Stambule. Nic dodać, nic ująć, kiedy nie chce się chodzić, a chce się pozwiedzać - wystarczy wsiąść do taksówki i powiedzieć "Marszałkowska!" :)

Mimo wszystko poleciłbym zwiedzenie tego miasta i poczucie jego klimatu. Jest trochę duszno, więc należy przygotować się z przewiewnymi ciuchami. Nie mam bladego pojęcia, co powinienem zwiedzić, ale w weekend trzeba będzie doczytać Wikipedię i trochę innych publikacji, aby kolejny tydzień spędzić bardziej krajoznawczo.

Czy chciałbym przyjechać tutaj z rodziną? Hmmm, niekoniecznie - bardziej poleciłbym (i poleciałbym) do Hiszpanii, albo Portugalii. Dzisiaj przeczytałem na jednym z portali o Turcji, że można do Stambułu dojechać autobusem za grosze z Bułgarii, więc najpierw przelot do niej, później trasa do Turcji autobusem, a później z powrotem przez Rumunię do Polski. Może być całkiem ciekawa trasa. Tylko, co z ciuchami - taszczyć na plecach?!

Nauczone słowa: tamam - tak, w porządku, a fisz (w wymowie) to rachunek. Już dwa razy udało mi się wzbudzić radość, kiedy je wypowiedziałem. Jeszcze tylko proszę i dziękuję, i będzie gites.

I jeszcze jedno znalezisko, YouTube.com w Turcji zdaje się być nieosiągalnym miejscem.

13 kwietnia 2010

"Witam, jak Pan zaczynał naukę Javy?" - że też wciąż się pojawia?!

22 komentarzy
Właśnie dostałem do mojej skrzynki pocztowej:

Witam, jak Pan zaczynał naukę Javy? Może Pan polecić jakieś książki lub dobre materiały do nauki w internecie (najlepiej po polsku) ?

Na szczególną uwagę zasługuje "najlepiej po polsku". Może mi to ktoś wytłumaczyć? Tyle się słyszy tez, że programowanie wymusza znajomość angielskiego, ale niewielu wskazuje, jak zaradzić początkującym. Mi coraz trudniej zrozumieć tego typu pytania i nie jest to, jak sądzę, wynikiem nonszalancji do rzeczy podstawowych (o, co to, to nie! Zresztą ostatnie posty z tym na czele "Reszta jest niczym więcej jak...złożeniem" - przemyśleń rozwojowych ciąg dalszy (na bazie szkolenia ZB300 o IBM WebSphere ILOG JRules V7.0) powinny być dobrym potwierdzeniem), ale raczej...zresztą sami przeczytajcie, co odpowiedziałem:

To było wieki temu i książek nie było. Nawet Internet był w powijakach, więc niewiele trzeba było się uczyć, aby być dobrym :-) I tak z czasem po trochu przyszło mi poznać dużo. Teraz jest zdecydowanie trudniej, bo dużo trzeba przyjąć na raz i trudno to przełkąć. Zacząłbym od lektury Java Tutorial [1], albo polskiego przewodnika po Javie, którego celem jest SCJP [2]. Po nich będziesz wiedział, gdzie dalej szukać.

Pytaj, kiedy coś niejasne, a najlepiej na grupach typu pl.comp.lang.java albo forum Warszawa JUG - http://warszawa.jug.pl. Ja już pewnie na poziom Javy i jej nauki nie zejdę - zbyt wiele ciekawszych rzeczy wyżej na stosie technologicznym Javy.

[1] http://java.sun.com/docs/books/tutorial/
[2] http://getscjp.pl/

Jacek


A jaka jest Wasza odpowiedź na tak postawione pytanie? Chętnie stworzyłbym jedną właściwą i rozsyłał na żądanie, albo lepiej stworzył stronę na Wiki, którą każdy mógłby edytować pro publico bono (ech, jak ja lubię ten zwrot :)). Wszelkie pomysły na dalsze obsłużenie tematu mile widziane.

Przy okazji, ilu z Was potrzebuje polskich przewodników po języku i technologiach Java, i nie uważa zagranicznych publikacji jako wystarczających? Chyba nie zawęziłem pytania tak, aby JA mógł odpowiedzieć wyłącznie nadawca - sprawca tego wpisu?! Może ankieta?

p.s. Oczywiście namiary na ten wpis wysłałem również pytającemu. Niech wie, co się czyta w naszym światku :P

12 kwietnia 2010

66. spotkanie Warszawa JUG - Bartek "koziołek" Kuczyński z "Vaadin, czyli po co nam kolejny framework webowy?"

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

Temat: Vaadin, czyli po co nam kolejny framework webowy?
Prelegent: Bartek "koziołek" Kuczyński

Celem prezentacji jest przedstawienie Vaadin - frameworku aplikacji webowych opartego o Google Web Toolkit (GWT). Autor zaprezentuje podstawowe możliwości narzędzia oraz omówi różnice w stosunku do innych frameworków. Przedstawiony zostanie związek z GWT oraz sposób integracji aplikacji Vaadin ze Spring Framework i niezależnymi gadżetami GWT.

Bartek "koziołek" Kuczyński jest absolwentem Wydziału Fizyki UW, specjalizacja fizyka komputerowa. Od kilku lat zajmuje się zawodowo programowaniem w JEE/JSE. Zainteresowany problematyką elastyczności aplikacji oraz szeroko rozumianymi dobrymi praktykami w programowaniu. Ostatnio odkopuje stare technologie (COBOL/ALGOL/Linc) i przywraca je do życia w nowoczesnych projektach.

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

Wstęp wolny

Zapraszam w imieniu prelegenta i grupy Warszawa JUG!

11 kwietnia 2010

"Reszta jest niczym więcej jak...złożeniem" - przemyśleń rozwojowych ciąg dalszy (na bazie szkolenia ZB300 o IBM WebSphere ILOG JRules V7.0)

6 komentarzy
Ucichło na moim polskojęzycznym blogu na rzecz aktywności na innym, angielskojęzycznym, gdzie przedstawiam swoją ścieżkę badawczą produktu IBM WebSphere ILOG JRules V7.0. Tam komercyjnie, tu raczej niekoniecznie. Dużo czytania, szkolenia, ale wciąż niewiele praktycznego poznania tematu, co może ma tę zaletę, że pozwala mi na chwilę zastanowienia nad sensownością stosowania jednej technologii nad drugą, albo sposobami na ich trafniejsze zastosowanie w projektach.

Obecnie zmagam się ze zrozumieniem reguł biznesowych i ich organizacji w projekcie. Jestem na poziomie nowicjusza, który opanował używane słownictwo (nomenklaturę) typu rule project, BOM, XOM, vocabulary, rule, ruleset, ruleflow, agenda, working memory i in. Wciąż czuję brak doświadczenia praktycznego i dostrzegam, że podobnie jak to ma miejsce w poznawaniu nowej technologii, albo czegoś niekoniecznie technologicznego, jak nauka języka obcego, poznawanie nowego nie będzie efektywne, jeśli nie idzie za tym praktyka. Ćwiczenia to podstawa dobrej nauki. Należę do tych osób, które często dopiero przez ćwiczenia są w stanie zrozumieć problem (empiryczne podejście) i rzadko zdarza mi się poznawać technologię począwszy od jej teorii. Najpierw dużo praktykuję, a dopiero czytam teorię, albo uzupełniam ją na bieżąco. Zawsze jednak to praktyka wyznacza u mnie zrozumienie tematu.

Ostatnio zauważyłem zmianę w swoim podejściu poznawania nowego - najpierw studiuję dostępną dokumentację - README, Release Notes, Getting started, 5-minute Tutorial, itp. Te dokumenty znane są z nazwy każdemu, ale niewielu ma na nie siły. Jest ich zbyt wiele, a ich jakość czy przystępność wyjaśniania problemu niekoniecznie odpowiednia. Tak czy owak, z takim sceptycznym podejściem skończyłem jakiś czas temu i dużo, bardzo dużo czytam - książki, podręczniki, instrukcje, dokumentacja produktowa, wpisy na blogach, własne oraz innych i tweety. Mnóstwo tego. Pozwoliłem sobie na nieznaczne usprawnienie procesu absorbowania wiedzy i jeśli tytuł jest nieodpowiedni w ogóle nie zabieram się za lekturę (kiedyś powiedziałbym, że wiele tracę, bo nieumiejętność dopasowania tytułu do treści jest sztuką samą w sobie, ale obecnie przy takim natłoku informacji jest to jeden ze sposobów na jej wstępne filtrowanie).

Wracając do mojej nauki ILOG JRules 7, wszedłem w skórę osoby, która jest kompletnym nowicjuszem i rozpoczyna swoją przygodę z produktem. Już dawno się tak nie czułem. Bardzo odświeżające doświadczenie. Zacząłem od czytania, później słuchania (szkolenie zdalne, bez instruktora, coś ala podcast ze slajdami, ale niestety nie jest to skrinkast - coś pomiędzy) i instalacji produktu z prototypowaniem. Kiedy się tak uczę tych wszystkich nowych technologii zaczynam dostrzegać pewne podobieństwa między nimi i nie piszę tutaj o podobieństwach funkcjonalnych, ale ich wewnętrznej reprezentacji, która nieprzypadkowo związana jest w moim mniemaniu z najprostszą reprezentacją jakiegokolwiek rozwiązania javowego - na klasie w Javie.

Kiedy tak sobie rozważam, jak mógłbym stworzyć dane rozwiązanie zaczynam rozumieć działanie produktu i nowe słownictwo staje się synonimem dla już znanego, co znacząco wpływa na moje szybsze zrozumienie problemu. Szukam w nim wzorców i problemów, które znam i dla których znam rozwiązanie. Bardzo pomocna technika. Wymaga to dużej znajomości alternatywnych rozwiązań, ale z każdym kolejnym jest coraz prościej. Czuję, że jest łatwiej.

I tak dzisiaj zmagałem się z regułami i ich parametrami wejściowymi i wyjściowymi, gdzie przypomniało mi się, że już gdzieś czytałem, że zaleca się wynosić poza wyrażenie if warunek, na którym działa. Ów warunek to w tym przypadku właśnie reguła biznesowa. Skoro wynieśliśmy warunek poza ifa, to najprawdopodobniej stworzyliśmy nową metodę, która przyjmuje parametry wejściowe i zwraca wynik typu boolean. Nic nadzwyczajnego. Ale czy, aby na pewno?! Ile wokół nas kodu, w którym umieszczamy skomplikowane warunki bezpośrednio w ifie (i dobrze, jeśli stosujemy stałe z dobrze dobranymi nazwami, aby zrozumieć ich sens), a możnaby pokusić się o ich wyniesienie poza? To powoduje, że kiedy warunek trafi do zewnętrznej metody, może również trafić do oddzielnej klasy, a to już krok od wdrożenia zewnętrznej usługi, która pozwoli na dynamiczną zmianę wartości, na której działa warunek, co z nadchodzącymi parametrami wejściowymi wyliczy wynik. Może trochę przesadziłem z wynoszeniem warunku poza ramy klasy do zewnętrznej usługi, ale jeśli nie potraktujemy usługi jako czegoś spoza JVM, a np. klasy ze wzorcem Strategia, mamy piękne rozwiązanie, którego sens przyszło mi zrozumieć, bo...chciało mi się poznać kolejny produkt z półki, na którą wcześniej nie chciało mi się zaglądać - rozwiązania klasy Business Rule Management System (BRMS). Wszystko jakoś samo składa się w spójną całość.

Coraz częściej nachodzi mnie myśl, że najważniejszymi składowymi naszej technologicznej edukacji powinna być ciągła nauka rzeczy niezwykle podstawowych z mojego punktu widzenia - wzorce projektowe czy algorytmy, ale z umiarem, bez konieczności zgłębiania algorytmów, których zastosowanie nie przyjdzie nam wcale zasmakować (z wzorcami - wszystkie i dogłębnie). Myślę tutaj raczej o podejściu do nauki, której być może wartość nie docenimy bezpośrednio w projektach, ale podczas przygotowywania się do nich. Możnaby przyrównać to do przygotowywania się do zawodów sportowych, gdzie praktykuje się technikę, która raz wyuczona procentuje podczas samego starcia (w naszym przypadku podczas projektu).

Pamiętam rozmowę z pewnym doktorem na Uniwersytecie Warszawskim, któremu zadałem pytanie o te wszystkie podstawowe elementy edukacji uniwersyteckiej, gdzie często wiedza nie idzie z wymaganiem rynku. Zarabiamy w końcu na realizowaniu ich w drakońskich warunkach - mało czasu, ludzi i wiedzy, często nawet i wymagań klienta. Zyskują Ci, którzy wiedzą jaki szkielet aplikacyjny zastosować i to mogłoby wydawać się, że jest najbardziej cenione na rynku pracy. Za to się płaci, bo to konkretna wiedza. Tylko, czy osoba znająca rozwiązanie X będzie przygotowana do poznania i zrozumienia rozwiązania Y? Tu nie wystarczy wyłącznie chęć, ale i umiejętność znalezienia wspólnego mianownika, którym są właśnie rzeczy podstawowe - zastosowanie wzorców projektowych do obsługi danego problemu projektowego, co powinno wpłynąć pozytywnie na zrozumienie czegoś bardziej skomplikowanego. Właśnie ta umiejętność rozłożenia problemu na czynniki pierwsze jest dla mnie wielce pożądaną umiejętnością u specjalistów, których dążeniem jest poziom eksperta.

Stąd też podoba mi się podejście Chlebika, które charakteryzuje się rozpoznaniem technologii przez budowanie kompletnych aplikacji. Mam jednak wrażenie, że w takim podejściu brakuje wyznaczania technologii i szkieletów aplikacyjnych przez cechy wymagań funkcjonalnych. Nie potrafię jeszcze konkretnie nakreślić, czego mi tam jednak brakuje. Mam wrażenie, że jest to jedynie krok ku czemuś większemu, czegoś co nazwałbym wiedzą ekspercką. Posłużę się czymś bardziej namacalnym. Czy poznanie kolejnej specyfikacji z Java EE 6, np. Contexts and Dependency Injection for the Java EE Platform (CDI) przysłuży się czemuś? Tak. Czy poznanie JBoss Seam będzie miało ten sam aspekt poznawczy? W dużej mierze tak. A może wartoby zerknąć na Spring Framework czy Service Component Architecture (SCA)? Również tak. Wymaga to jednak wiele czasu. Mimo, że porównuję technologie (specyfikacje) do gotowych rozwiązań (szkieletów aplikacyjnych), to znalezienie wspólnego mianownika jest odpowiedzią na pytanie "Dlaczego?" i znaczenie uprości zrozumienie ich wszystkich, mianowicie wzorca Inversion of Control (IoC) czy konkretnej jego realizacji Dependency Injection (DI). I to jest sedno sprawy - zrozumienie IoC/DI to zrozumienie działania pozostałych. Czyż to nie budujące?! Reszta jest niczym więcej jak...złożeniem w imię uproszczenia obsługiwanej problematyki (często jednak z mizernym skutkiem).

p.s. Smutny dzień dzisiaj, po wczorajszej katastrofie lotniczej, więc może mnie ten nastrój i spacer Nowym Światem natchnął?! Warto przystanąć i zastanowić się czasem, czy to, co robimy, ma dla nas wartość. Wielce prawdopodobne, że w tej pogoni, kilka rzeczy robimy bezwiednie i niepotrzebnie. Bardzo nieprzyjemne uczucie, kiedy się tego dowiadujemy, jednakże paradoksalnie każdemu życzę doświadczyć tego przynajmniej raz - po chwili refleksji przychodzi radość, a tej nigdy za wiele.

05 kwietnia 2010

65. spotkanie Warszawa JUG - Adam Lider z "Consumer-Driven Contracts i rozproszone serwisy w praktyce"

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

Temat: Consumer-Driven Contracts i rozproszone serwisy w praktyce
Prelegent: Adam Lider

Celem prezentacji jest przedstawienie metod tworzenia i rozwoju systemów opartych na rozproszonych serwisach. Autor pokaże typowe problemy oraz czyhające pułapki przy budowaniu takich systemów, postara się wyjaśnić ich przyczyny oraz zaprezentuje możliwe rozwiązania. Prezentacja oparta będzie na fragmencie wyjętym z dużego systemu typu "social location platform" i zawiera próbki implementacji niektórych rozwiązań.
Zagadnienia: Rozproszone serwisy, Consumer-Driven Contracts, Java, JSON, DSL, Continuous Integration

Adam Lider jest programistą specjalizującym się w tworzeniu serwisów oraz rozwiązań integracyjnych z wykorzystaniem platformy Java/JEE. Zainteresowany aspektami testowalności, metodami wytwarzania oprogramowania, a ostatnio również tworzeniem języków aplikacyjnych na JVM. 6 lat w zawodzie wypełnionych głównie pracą nad projektami komercyjnymi z małym epizodem start-up'owym.

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

Wstęp wolny

Zapraszam w imieniu prelegenta i grupy Warszawa JUG!

04 kwietnia 2010

Świąteczny powrót do...technologicznej normy (w myśl "Getting things done"?)

3 komentarzy
Święta pełną parą i wierzę (bo co innego można robić w święto kościelne?!), że większość z nas nawet nie rozważa sesji przed kompem jako właściwe zajęcie i korzysta z dobrodziejstw wolnego czasu na wspólne biesiadowanie z rodziną, a więc wyciszenia pełną parą. Lepiej korzystajmy z tej chwili, bo nie prędko może się pojawić następna.

Po ostatnim "wyskoku" 1-kwietniowym "Fsharp, dotNet i okolice...dojrzałem - zarzucam JEE na rzecz ciekawiej zapowiadającej się platformy .Net", gdzie zadeklarowałem odejście w stronę .Net dostałem kilka ciekawych komentarzy, z których jeden szczególnie mnie zaintrygował autorstwa Macieja Moczkowskiego:

Hej, oczywiscie ze dalem sie nabrac... Chyba dlatego, iz sam zaczynam dochodzic do podobnej konkluzji. Nie chodzi mi zupelnie o mowienie co jest lepsze i nie zamierzam Javy porzucac. Ale po wielu latch pracy z Java EE czuje sie troche wypalony - juz nie pociaga mnie tak jak kiedys to ze ukazal sie 123ci framework web'owy dla Java EE;) Za to coraz bardziej ciagnie mnie by zobaczyc druga strone medalu - jak radzi sobie platforma .NET.
Tak wiec wkrecony, ale troche zawiedzony...


Jemu zawdzięczam przedświąteczne olśnienie i skierowanie na właściwe tory - użycie technologii do rozwiązywania problemów, dla których ona została stworzona.

Brzmi znajomo, ale mam wrażenie, że wielu z nas zatopiło się w niekończącej się gonitwie za nowinkami technologicznymi...nie mając czasu na ich wykorzystanie w produkcji. Czyż to nie paradoks naszej profesji, gdzie zamiast stawać w szranki z problemami stworzenia aplikacji realizującej pewne potrzeby...ekhm...biznesowe (ale bez tego nadymania korporacyjnego, tylko faktyczne potrzeby człowieka i zaprzęgnięcia do tego komputera) zmagamy się z bezkresem problemów technologicznych?!

Ten komentarz uzmysłowił mi, że rozwiązywanie problemów technologicznych tworząc aplikację jest zdecydowanie ciekawszym zajęciem niż nauka kolejnych technologii bez ich produkcyjnego wykorzystania. To jest właśnie sens naszej nauki kolejnych technologicznych bajerów, skrótów klawiszowych, kolejnych środowisk i języków. Cóż nam po kolejnej znajomości (nie tylko technologicznej), jeśli sprowadza się do kolejnej pozycji w naszym technologicznym serwisie społecznościowym? Cóż nam po znajomości Java EE, OSGi, Spring Framework, SuperExtra Framework 5.9...tu wstaw kolejne cacko...kiedy ta znajomość nie przekłada się na...przysłowiowy spokój ducha. Z własnych obserwacji siebie: znając więcej nie pozwoliło mi na posiadanie więcej czasu realizując problemy szybciej (!) Wręcz przeciwnie, miałem wciąż nieodparte poczucie utraty czegoś wartościowego, bo nie udało mi się jeszcze poznać Scali, języków funkcyjnych w ogólności, itp. Warto od czasu do czasu zadać sobie pytanie: "Po co?!"

Trzeba mi było prawie 5 lat publicznych dywagacji w postaci bloga, wystąpień technologicznych, artykułów, rozmów, aby w końcu dojrzeć i dojrzec sens tego pytania. Przywołany do tablicy Maciej Moczkowski natchnął mnie i wskazał właściwą drogę rozwoju. Nie kolejna, nowa technologia, ale kolejna, nowa...aplikacja. Dopiero jej stworzenie może być oznaką przejścia do grona znawców tematu i stanowić cenny nabytek w zespole realizującym zadanie dla klienta za właściwe benefity we właściwym czasie bez zbędnego stresu.

Maciej jest tylko przykładem. Kolejnym mógłby być Adam Warski, którego obserwowałem przez ostatnie tygodnie, jak tworzył aplikację w Scali na potrzeby konferencji Javarsovia 2010. Przyglądałem się, jak my, użytkownicy, kapituła konferencji, prowadzimy go przez chaszcze funkcjonalne, w których on odnajdował drogę tnąc je wykorzystanymi technologiami. Nie ma znaczenia, czy technologia była najwłaściwsza i czy znał się na Scali i Lift przed podjęciem zadania. Nie jest też ważne, czy właściwie wykorzystał dane mu narzędzia, czy stosował TDD, BDD, czy XYZ. Najważniejsze, że dobrnął do końca i ukończył ją na czas. Pewnie, że znajomość dodatkowych narzędzi mogło sprawić, że to zadanie będzie jeszcze bardziej wartościowe, ale zbyt często dążenie do celu przesłaniają nam kwestie drugiego rzędu, właściwie bez znaczenia. Najważniejsze jest umiejętne zbalansowanie potrzeb i przyjemności. Dzisiaj, w święto, ma to niebagatelne (wagowo) znaczenie :-)

01 kwietnia 2010

Fsharp, dotNet i okolice...dojrzałem - zarzucam JEE na rzecz ciekawiej zapowiadającej się platformy .Net

17 komentarzy
Ostatnie wpisy całkowicie odbiegały od moich ciągot programistycznych i bardziej skłonne były kierować czytelnika w stronę rozważań architektonicznych, projektowych. Jak ujął to mój kolega i stały czytelnik Notatnika:

Jak tak dalej pójdzie to będę Twój każdy post komentował. Przynajmniej dopóki nie przyprawisz mnie o przysłowiowy zawał :)

Przyznam się, że ostatnio obserwuje u Ciebie dużą zmianę. Pamiętam jeszcze jak przed podjęciem pracy w IBM spotkałem się z Tobą na Gigaconie. Wówczas opowiadałeś o Geronimo 2, który właśnie pojawiał się na rynku. To był pierwszy certyfikowany (oczywiście poza Glasfishem) serwer JEE 5. No i ta niezapomniana prezentacja z małpą.

Kiedy przyszedłem do IBM i pojawiłem się na pierwszej Javarsovii pamiętam jak powtarzałeś, że nie musisz identyfikować się z firmą, w której pracujesz. Że ograniczasz się do tego, co trzeba zrobić z klientami. A poza tym rozpoznajesz i bawisz się technologiami. Twój blog zaś był pełen rozwiązań niezależnych.

Teraz nastąpił niebywały przełom. Zaczynasz promować rozwiązania IBM. "Chełpisz" się nieco swoimi certyfikatami. A blog? Jest raczej pełen rozważań architekta rozwiązań niż programisty.

A że widzę, że taka droga też Ci odpowiada i daje możliwości rozwoju to serdecznie gratuluje :)


Dużo w tym uwag skłaniających do głębszej refleksji, której przez ostatnie dni było u mnie co nie miara. Trudno było mi się z tym pogodzić, ale coraz bardziej dostrzegam przytłaczające skomplikowanie technologii z obszaru "Java i okolice". Ostatni komentarz Michała Piotrowskiego, bardziej znanego jako chlebik, do wpisu "IBM WebSphere Application Server V8.0 Alpha ze wsparciem dla Java Enterprise Edition 6.0" jakby potwierdza ten trend:

Twój wpis Jacku prezentuje dokładnie to, co najbardziej mnie w Javie wkurza, a juz zwlaszcza w wersji EE. Sam spojrz ile podales nazw/linkow/technologii - w glowie sie kreci.

I nie wiem czy wlasnie ten entuzjazm dla nowych technologii nie napedza tego ciaglego gonienia za nowoscia u producentow tychze. Co i rusz powstaje cos nowego, dalej, szybciej i niby lepiej, a tak naprawde to czlowiek sie tylko denerwuje, gdyz ma poczucie, ze cos mu ucieka. Ale w sumie ja mlody jestem, moze sie nie znam.


Jakby tego było mało, Łukasz Rybka dorzucił coś od siebie w temacie, w relacji 4Developers 2010, czyli mogło być lepiej...:

Na samym końcu zawitał Jacek Laskowski ze swoją prelekcją na temat "Modele komponentowe SCA, OSGi, Distributed OSGi i OSGi Enterpise a Java EE". Na temat tej prelekcji nie będę nic pisać, gdyż temat jest dla mnie całkowicie obcy i większości z tego co Jacek mówił nie rozumiałem. Może kiedyś :)

czy później w odpowiedzi do mojego komentarza:

Odniosłem wrażenie, że znacząca większość osób obecnych na Twoim wykładzie wiedziała lub już miała styczność z OSGi - mnie w tym gronie nie było. Ale zdawałem sobie z tego sprawę jak szedłem na prelekcje, a mimo to poszedłem, bo lubię słuchać o rzeczach, których poziom mnie przewyższa znacznie mając nadzieję, że wrócę do tego tematu kiedyś mając jakiś obraz sprawy uzyskany dzięki takiej prelekcji :)

Wszystko to sprawiło, że uczucie zmęczenia i wypalenia technologicznego wzmagało się we mnie, aby ostatecznie sprowokować mnie do podjęcia decyzji, która będzie niemałym zaskoczeniem, a może nawet przyprawić o zawał serca, więc...jeśli ostrzeżony/-a, wciąż czytasz...kończę praktykowania Java EE, OSGi i wszystkiego co javowe na rzecz...technologii .Net (!) Tak, nie przesyłyszeliście się D.O.T.N.E.T. Kilkakrotnie spoglądałem w stronę tych rozwiązań i programowanie w C# wspominam jako bardzo ciekawe i pouczające doświadczenie, a niedawne próby z F# przekonały mnie do słuszności tej decyzji (pomijając, że jest ona moja, więc z gruntu słuszna w moim rozumowaniu :)).

Tym samym kończę wpisy na tym blogu, nie bez przyczyny zatytułowanego Notatnik Projektanta Java EE i zapraszam na nowy blog Notatnik Projektanta .Net. Do zobaczenia w innym świecie!