Monday, December 29, 2008

Monday, December 22, 2008

Wzorce projektowe - Fabryki. Rysunkowy tutorial



Kreacyjne wzorce projektowe dostarczają programistą szeregu metod pozwalających na sprawne zarządzanie tworzeniem obiektów w systemie. W tutorialu omawiam kilka z nich, prezentując strukturę w postaci diagramów UML, implementację oraz obszary zastosowań.

Jeśli chcesz przypomnieć sobie jak czytać diagramy UML w odniesieniu do kodu Java przeczytaj najpierw wcześniejsze tutoriale:
















Friday, December 12, 2008

Light? heavy?

Sporo już powiedziano o relacji pomiędzy Spring a EJB. Jedni twierdzili, że to konkurencyjne rozwiązania, inni zgodzili się, że wzajemnie się uzupełniają. Moje prywatne zdanie jest takie, że Spring wyrósł na obrzydzeniu do EJB2.x i jego podstawowymi zaletami były: nieinwazyjność, lekkość, elastyczność i coś co nazywam sobie lepkością czyli umiejętność integracji i "przylepiania się" do istniejących rozwiązań. Pojawienie się EJB3 trochę rozmyło granice. Oto bowiem dostaliśmy eleganckie rozwiązanie korporacyjne z niezależną od kontenera częścią do trwałego przechowywania danych i innymi bajerami. Co prawda całość była nieco w tyle, za rozwiązaniami z community, ale aura standardu słodziła niedogodności. W takiej sytuacji moim zdaniem pomiędzy Spring a EJB istniały 2 zasadnicze:
  • EJB wymaga osobnego kontenera, Spring nie
  • jeśli używasz EJB to bierzesz całą technologię, cało wielgachną maszynerię którą oferuje, w Springu bierzesz tyle ile potrzebujesz
Ostatecznie każde z nich znalazło swoją niszę i dobrze się tam miało. Szczególnie punkt nr 2 stanowił o przewadze Spring w systemach działających na jednej maszynie, nie wymagających rozproszonych transakcji, asynchroniczności, itd., itd. Bardzo podoba mi się w Sunie to, że uczy konsekwentnie się uczy. Uczy się diabelnie dużo od społeczności OpenSource, czego efektem było właśnie rzeczone EJB3. Wydarzyły się też dwie ważne rzeczy, które rzucają nowe światło na relację Spring - EJB. Po pierwsze Interface21 vel SpringFramework vel. SpringSource dostało kupę forsy od inwestora (słyszałem o $10mln). Sprawiło to, że chcąc używać Springa za darmo będziemy korzystać tylko z głównych wydań bez późniejszych poprawek, aż do kolejnego wydania głównego...chyba, że opłacimy subskrypcję:) Trochę głupio, ale trudno mieć im za złe, że chcą zarobić pieniądze na swojej pracy. Sęk w tym, że będąc najpierw projektem OO naruszyli pewną barierę psychologiczną. Bardzo Springowi pomagało bycie darmową "alternatywą" dla EJB, do tego użyteczną i świetnie napisaną. To było coś w stylu Robin Hooda - w tej roli bezinteresowny Spring Framework, a z przeciwnej strony Szeryf z Nottingham - czyli EJB Samo Zło. I w całej sytuacji najlepsze jest to, że Robin wybudował sobie własny zamek i ściąga jeszcze większą daninę niż Szeryf, walcząc zażarcie o każdą piędź Lasu Sherwood. Po drugie: Przeglądając nowości w JEE6 i EJB3.1 jeszcze bardziej podoba mi się kierunek, w którym Sun zmierza. Moją uwagę zwróciła koncepcja profili, której ideą jest, aby można było użyć tylko taką cześć platformy, która jest akurat potrzebna. Czyli można będzie odchudzić sobie korporacyjną Javę np. z asynchroniczności i rozproszonych transakcji jeśli zajdzie taka potrzeba. Ja tu widzę światełko w tunelu do zapewnienia tej użytecznej możliwości, którą posiada Spring czyli: bierzesz tyle ile potrzebujesz. Jest więcej ciekawych (bardzo ciekawych: żeby zwrócić uwagę na adnotację @Singleton i specyfikację WebBeans) rzeczy w EJB3.1, ażeby się nie powtarzać zamieszczam na końcu linki do artykułów. Jak to dalej będzie ze EJB i Springiem? Może JEE6 albo JEE7 da nam wszystko czego potrzebujemy? A może jakiś nowy pomysł SprigSource okaże się tak rewolucyjny, że zdeklasuje alternatywy na długie lata? A może jeszcze inaczej? Któż to może wiedzieć w czasach kryzysu:) Literatura http://blog.dywicki.pl/2008/09/28/spring-commercial-source-replaces-open-source/ http://springinpractice.wordpress.com/2008/12/02/new-stuff-in-spring-30/ http://springinpractice.wordpress.com/2008/12/03/new-stuff-in-spring-30-part-2/ http://www.theserverside.com/tt/articles/article.tss?l=NewFeaturesinEJB3-1 http://www.theserverside.com/tt/articles/article.tss?l=NewFeaturesEJB31 http://www.theserverside.com/tt/articles/article.tss?l=NewFeaturesEJB31-3 http://www.theserverside.com/tt/articles/article.tss?l=NewFeaturesinEJB3-Part4

Tuesday, December 9, 2008

Weekendowe Warsztaty: Wzorce Projektowe w Paraktyce

Zapraszam na „Weekendowe Warsztaty: Wzorce Projektowe w
Paraktyce".

Każdy uczestnik ma swój komputer (notebook), aby realizować ćwiczenia.
Osią warsztatów jest projekt, który jest sukcesywnie rozwijany -
dodawane są nowe funkcjonalności. Rozbudowa systemu jest pretekstem do
wprowadzania kolejnych wzorców.

Warsztaty mają charakter praktyczny i ostatecznie prowadzą do stworzenia
systemu opartego o wzorce, zachowując pragmatyzm przy ich użyciu. Przede
wszystkim stawiamy na podkreślenie aspektu współpracy między wzorcami,
gdyż największa ich siła ujawnia się dopiero wtedy.

ZOBACZ PROGRAM
http://www.bnsit.pl/files/Wzorce_projektowe_java_i_refaktoring.pdf

KIEDY?: 13, 14 grudnia br.

CZAS TRWANIA: 2 x 8 godzin (sobota, niedziela), od 9 do 17

GDZIE?: W centrum Łodzi; wybór konkretnej sali zależy od ilości uczestników

CZEGO POTRZEBUJESZ?:
* Notebook z kartą Wi-Fi
* Zapału i chęci do poznania czegoś nowego

JAK SIĘ ZGŁOSIĆ?:
* przesłać mail na adres bnsit@bnsit.pl z tematem WARSZTATY
* wpłacić zaliczkę (do piątku 12 grudnia br.) w wysokości 100zł na
konto mBank 12 1140 2004 0000 3902 5596 2724, w tytule przelewu proszę
wpisać swoje imię i nazwisko; dane adresowe firmy znajdziesz w stopce maila
* pozostała część opłaty wnoszona jest przed rozpoczęciem zajęć w sobotę
* w przypadku, gdy nie zgłosi się wystarczająca ilość uczestników, aby
uruchomić szkolenie, otrzymasz zwrot zaliczki w ciągu 3 dni roboczych

TWOJA INWESTYCJA: 800 zł

Na dodatkowe pytania odpowie Michał Bartyzel m.bartyzel{{{orangutan}}}bnsit.pl

Java i UML - Diagram sekwencji. Rysunkowy tutorial



Diagram sekwencji jest, obok diagramu klas, najczęściej używanym diagramem UML. Pozwala ma modelowanie dynamicznych aspektów systemu.
W artykule zamieszczam bardzo zwięzły rysunkowy tutorial, obrazujący sposób korzystania z diagramu sekwencji. Dodatkowo dodałem przykłady pokazujące relację pomiędzy diagramem, a kodem w języku Java.







Tuesday, December 2, 2008

Ad.pilotażowego programu "Coaching dla programisty"

W związku z pytaniami zamieszczam więcej szczegółowych informacji nt. programu.

CEL: Praktyczne zweryfikowanie hipotezy: "Każdy może stać się dobrym programistą"

ADRESACI: Osoby, które:
* znają język Java
* posiadają niewielkie doświadczenie w pracy w tym języku (np.: język Java poznany na studiach, certyfikat SCJP, samodzielna nauka języka, pisanie programów na zaliczenia albo jako hobby)
* chcą pracować jako programiści Java/JEE
* potrafią prezcyzyjnie określić swój cel zawodowy w perspektywnie najbliższych 2 lat

KOSZT: bns it nie pobiera opłaty od uczestników programu

ZOBOWIĄZNIA UCZESTNIKA:
* ukończenie programu
* systematyczna praca
* prowadzenie bloga programistycznego, na którym uczestnik będzie regularnie opisywał swoje doświadczenia, spostrzeżenia, porady dla innych, itp.

ZOBOWIĄZANIA BNS IT:
* zapewnienie wykwalifikowanego trenera
* prowadzenie zajęć i ocenianie postępów

JAK APLIKOWAĆ:
* przysłać zgłoszenie na adres m.bartyzel {maupeczka} bnsit.pl
* w treści maila proszę umieścić frazę [COACHING]
* do zgłoszenia proszę dołączyć kod źródłowy programu napisanego w języku Java (np. program, z którego jesteś najbardziej dumny/a albo taki, który napiszesz specjalnie dla mnie:))
* do zgłoszenia proszę dołączyć linki do 3 ofert pracy, którymi jesteś zainteresowany
* do zgłoszenia proszę dołączyć informację: w jakich miastach rozważasz pracę jako programista, kiedy orientacyjnie planujesz zacząć pracę
* na każde zgłoszenie odpowiemy do 20 grudnia
* zastrzegamy sobie prawo do przyjęcia tylko wybranych kandydatów/kandydatek

FORMA ZAJĘĆ:
* zajęcia odbywają się zdalnie za pośrdednictwem komunikatora
* sesje odbywają się 1 lub 2 razy w tygodniu w odzinach
ustalonych indywidualnie z trenerem
* ogólny plan zajęć można przedstawić następująco:
- sformułowanie celu do osiągniecia
- stworzenie harmonogramu prac
- systematyczna praca nad przygotowaniem się do osiągnięcia postawionego celu
- osiągnięcie celu
- koniec uczestnictwa w programie

CZAS TRWANIA:
* zależy od czestnika oraz postawionego celu
* szacunkowo można zakładać od 3 miesięcy w górę

DALSZE PERSPEKTYWY:
* Po pozytywnym ukończeniu programu "Coaching dla programisty":
- osiągniesz postawiony przez siebie cel

* Do poniższych rzeczy się nie zobowiązujemy, ale też nie wykluczamy, że:
- być może przygotujemy Cię do rozmowy kwalifikacyjnej
- być może polecimy Ci firmę rekruterską
- być może być może zorganizujemy Ci spoktanie z potencjalnym pracodawcą
- być może zaproponujemy Ci pracę w jednym z projektów projektów prowadzonych przez nas
- być może...:)

i jeszcze krótka notatka dot. przykładowego kodu, o który proszę:
1. To nie musi być ukończony i działający program. Chciałbym się zorientować co do sposobu pisania
2. Interfejs użytkownika jest dla mnie na chwilę obecną najmniej ważny
3. Przykładowe aplikacje:
* System ankietujący - ma umożliwiać przygotowanie, wysłanie i zebranie odpowiedzi na pytania zawarte w ankiecie
* System aukcyjny - ma umożliwiać przeprowadzanie aukcji internetowych

A TERAZ UWAGA! Ponieważ wiem, że programiści mają tendencję do perfekcjonizmu i wykonanie zadanie mogło by kogoś pochłonąć na kilka najbliższych lat:) proszę ustawić sobie czasomierz i przesłać mi tyle ile da się napisać W CIĄGU 36 GODZIN(oczywiście nie trzeba siedzieć przed komputerem 3 dni z rzędu:) można rozłożyć pracę na tydzień albo 2)