środa, 9 grudnia 2009

IT Academic Day

"Nie samą Javą developer żyje" - takie słowa usłyszałem kiedyś w trakcie rozmowy na na którejś z konferencji poświęconej Javie i technologiom z nią związanym. Dlatego postanowiłem wczoraj (8 grudnia) wybrać się na konferencję firmy Microsoft, która odbywała się na Politechnice Gdańskiej - "IT Academic Day - Politechnika Gdańska". Sam cykl "IT Academic Day" jest cyklem objazdowych, jednodniowych konferencji firmy z Redmond mającej na celu przybliżenie studentom kierunków informatycznych platformę .NET i zaprezentowanie jej nowych możliwości.

Dzięki uprzejmości Doktora Ravindry Chhajlany, z którym mamy tego dnia zajęcia z Javy mogliśmy w ramach zajęć udać się na sąsiedni wydział i zanurzyć się choć na chwilę w platformie .NET 4.0. A więc po kolei:

Rejestracja użytkowników - po przybyciu na Wydział Elektroniki, Telekomunikacji i Informatyki byłem lekko zaskoczony: żadnych informacji o konferencji, żadnych plakatów, drogowskazów. Gdyby nie informacja ze strony imprezy nie mielibyśmy w ogóle pojęcia, że się jakakolwiek impreza tego dnia odbywa. Dopiero portierka poinformowała nas gdzie mamy się udać. Po przyjściu znowu zostałem niemile zaskoczony - stał tłum ludzi, ale nic się nie działo. Rejestracja powinna zacząć się jakiś czas temu, ale nie widać było żadnych oznak, by tak faktycznie było. Na całe szczęście po chwili zaczęto rejestrować uczestników i ku mojej uldze poszło to bardzo sprawnie. Na dobry początek konferencji każdy dostawał pamiątkowy długopis (Windows 7), notatnik, ankietę, identyfikator oraz z płytę z najnowszym oprogramowaniem antywirusowym firmy Kaspersky.

Po oficjalnym rozpoczęciu (którego dokonał Dziekan Wydziału ETI zgodnie z tradycją wszystkich tego typu imprez na Wydziale ETI) przyszedł czas na chyba najbardziej wyczekiwaną prelekcję tego dnia - "Szyfrowanie - jak to działa? Kryptografia wczoraj i dzisiaj". Zaczęło się bardzo obiecująco, bo od krótkiej zagadki. Należało jak najszybciej odszyfrować wiadomość podaną przez prowadzącego. Potem Bartosz tłumaczył w bardzo prosty sposób czym jest szyfrowanie, na jakiej zasadzie działają algorytmy szyfrujące (jak AES) etc. Niestety w moim odczuciu prelekcja była prowadzona zbytnio w stylu wykładu akademickiego przez co nie była tak przystępna jak być mogłaby.

Następnym punktem programu było podzielenie się wrażeniami z różnych edycji konkursu dla programistów .NET Imagine Cup trójki studentów z Politechniki Białostockiej. Całość była utrzymana w luźnej atmosferze, była masa ciekawych historyjek, sporo śmiechu - ot taki miły punkt dla rozluźnienia przed bardziej technicznymi wystąpieniami.

Prelekcja "Procesor wielordzeniowy pod pełną kontrolą z wykorzystaniem możliwości Microsoft Parallel Extensions to the .NET Framework." Marcina Iwanowskiego była przeze najbardziej wyczekiwaną tego dnia. Byłem ciekaw co też Microsoft przygotował dla programistów zabawiających się programowaniem równoległym. I nie zawiodłem się! Prowadzący bardzo fachowo, ale przystępnie opowiadał o nowym frameworku do .NET, porównywał go z poprzednimi rozwiązaniami w .NET 3.5. Udało mi się dojść do głosu i zadać prowadzącemu pytanie na temat Threadpool w .NET 4.0 - nie znał odpowiedzi, ale obiecał poprosić kolegów z firmy, którzy zajmują się aspektami technicznymi, aby wyjaśnili niejasności. Taka postawa bardzo miło mnie zaskoczyła! Do tego atrakcyjność prezentacji wzrastała z każdym kolejnym przykładem pokazywanym (czy to już gotowe programy, czy to kodowanie na żywo). Ogólnie była to chyba najlepsza prezentacja całej konferencji.

Kolejny punkt programu niestety nie był już tak ciekawy. Pod zwodniczym tytułem "User Experience" tak naprawdę kryło się pokazanie podstawowych możliwości Windows Presentation Foundation (WPF). Było by dobrze, gdyby prowadzący wiedział co tak naprawdę chce nam przekazać. Już po kilku minutach przyznał się, że nie wie do kogo kierować tą prezentację, więc mówił wielkimi ogólnikami przez co skończył całość ponad pół godziny przed czasem. To szybsze skończenie prezentacji przesunęło cały harmonogram imprezy, ale nie ma tego złego :)

Ostatnia prezentacja - "Innowacje w Microsoft" Jana Kleczkowskiego okazała się luźnym przeglądem "nowych" technologii firmy Microsoft (nowych w cudzysłowie, bo pokazywano takie "nowinki" jak Internet Explorer 8). Była to kolejna prezentacja utrzymana w luźnej konwencji, co było dobrym pomysłem na koniec imprezy. Wiele kontrowersji wzbudziła prezentacja filmiku "Microsoft Future Vision":


Zakończenie imprezy było krótkie - zebrano ankiety, wylosowano nagrody (niestety nie załapałem się na koszulkę :() i podziękowano za przybycie.

Podsumowując całą imprezę wyszła dobrze. Może i było parę niedoróbek, ale w ogólnym rozrachunku na pewno nie będę żałować czasu spędzonego na IT Academic Day :)

Poniżej kilka fotek, które udało mi się zrobić mimo kiepskiego oświetlenia w sali:


Pozdrawiam!

czwartek, 26 listopada 2009

Zasada dobrego harcerza

Witam!

Przeglądając blogi polskiej społeczności Javowej natknąłem się ostatnio na bardzo ciekawy wpis na blogu Piotra Paradzinskiego - IT Researches mówiący o dobrych cechach programisty. Pojawiło się tam pojęcie "Zasady dobrego harcerza" (ang. "The Boy Scout Rule"). Mówi ona o tym, byśmy pozostawiali miejsce naszego pobytu w stanie lepszym, niż je zastaliśmy. Oczywiście można tą zasadę zastosować do naszego codziennego życia programisty. Przykładowo, gdy korzystamy z jakiegoś modułu/biblioteki, postarajmy się ją trochę poprawić: czy to przez poprawienie/dopisanie dokumentacji, czy to przez poprawniejsze/bardziej intuicyjne nazwanie zmiennych etc. Sam często łapię się na tym, że jak po raz któryś korzystam z wcześniej napisanego kawałka kodu staram się go ulepszyć, bo znam już jego słabsze strony. Dzięki temu w późniejszym czasie pracuje mi się z nim łatwiej i przyjemniej i żyje w przekonaniu, że jest mniej awaryjny. Nie mówimy tu o drastycznych zmianach, tylko takich małych, które nie zabiorą nam zbyt wiele czasu a przyniosą w przyszłości znaczne korzyści.

Szersze omówienie tematu można znaleźć na stronie O'REILLY commons.

Pozdrawiam, Łukasz

środa, 11 listopada 2009

Eclipse and Java Using the Debugger

Witam!

"Eclipse and Java Using the Debugger" jest trzecim z rzędu video tutorialem, który przerobiłem z serii "Eclipse And Java: Free Video Tutorials". Mimo iż w często się słyszy, że Debuggera nie powinno się używać, a zamiast tego powinno się pisać testy jednostkowe (o czym mam nadzieję napisać coś więcej w przyszłości) to jednak wydaje mi się, że początkujący programista powinien poznać to narzędzie. Osobiście długo unikałem wszelkiej maści debuggerów (C, C++, C#), ale nie można przed tym wiecznie uciekać :)

W kursie, o którym mowa, zawarto wiele podstawowych informacji. Czasem ma się wrażenie, że prowadzący narzuca zbyt wolne tępo, ale może to wynikać z mojej przerwy w kursie i dłuższej już pracy z Eclipsem. Jednak jak sam się na własnej skórze przekonałem warto przeczekać "wolniejsze momenty", bo bardzo łatwo może nam coś umknąć i potem będzie trzeba szukać tego po całym filmie. Tutorial jest podzielony na dwie części:
  • podstawy (odcinki 1 - 4)
  • techniki zaawansowane (5 - 7)
Z pierwszej części co warto sobie zanotować (przyswoić) na przyszłość to na pewno skróty klawiaturowe:
  • Ctrl + R = Run to line - wykonuje wszystkie instrukcje między aktualną pozycją a pozycją kursora,. Dzięki temu nie musimy używać wielu breakpoint'ów, wystarczy przejść w odpowiedni kawałek kodu i przeskakujemy nie interesujący nas w danej chwili fragment programu
  • Alt + Shift + Up - zaznaczenie kolejnego elementu kodu
  • Alt + Shift + Down - odznaczenie kolejnego elementu kodu

Z istotnych własności debuggera warto pamiętać, że gdy wykonamy jakieś zmiany na kodzie, który aktualnie debuggujemy, Eclipse automatycznie zrestartuje aktualną sesję z nową wersją kodu.

Ostatnią bardzo ciekawą i przydatną funkcją tego narzędzia jest "Drop to frame". Zawsze zastanawiałem się, dlaczego nie zaimplementowano żadnej opcji powracania do wcześniejszego stanu sesji, zamiast restartowania sesji i przechodzenia wszystkich kroków od nowa? Otóż okazuje się, że w obrębie danego bloku możemy powracać do kodu, który już się wykonał (a przez to przywracać wcześniejszy stan aplikacji). W tym celu zaznaczamy przechodzimy kursorem w wybrane miejsce i naciskamy przycisk "Drop to frame" (obok pozostałych przycisków pozwalających sterować przebiegiem procesu debuggowania). W tym momencie wszystkie zmienne zostaną zmienione do stanu wcześniejszego, a my możemy w bardzo szybki i wygodny sposób przeanalizować ponownie wybrany fragment kodu.

Część zaawansowana tutorialu trochę mnie zawiodła. Oczywiście pojawiły się ciekawe informacje jak np. Hit Count, Conditional Breakpoint, Watchpoints, czy akternatywne JRE przeznaczone z myślą o debuggowaniu i umożliwiające śledzenie działania metod systemowych (na przykładzie LinkedList). Jednakże ostatnie dwie lekcje (o referencjach do obiektów oraz metodach rekurencyjnych) były nużące i poza niewielką liczbą informacji o debuggerze opiewały samą Javę i jej cechy. Oczywiście jest to tutorial nie tylko do Eclipse, ale także do samej Javy, lecz uważam, że takie lekcje powinny się znaleźć w innym kursie.

Ogólnie kurs oceniam na 7/10. Mogłoby być lepiej, ale i tak nie uważam czasu nad nim spędzonego za zmarnowany i polecam przejrzenie go każdemu, kto jest nowy (i nie tylko) w Eclipse.

Warty zaznaczenia jest fakt, że prowadzący korzysta z Eclipse w wersji 3.3. W najnowszej wersji Galileo istnieją pewne różnice w interfejsie, lecz sama funkcjonalność pozostaje niezmieniona.

Na koniec stadardowo garść linków:

Pozdrawiam, Łukasz.

Reaktywacja i zmiany na blogu

Witam serdecznie po sporej przerwie!

Wiele się działo przez ostatnie trzy miesiące. Wielu rzeczy się nauczyłem, wiele rzeczy poznałem i wiele rzeczy się wydarzyło. Niestety w tym całym natłoku zajęć nie starczyło czasu na rozwijanie bloga, a szkoda. Teraz nadszedł czas, by to wszystko naprawić.

Zaczynamy od zmienionego wyglądu bloga! Wiem, że to niewiele i że styl nie jest doskonały, ale tak to jest, gdy korzysta się z gotowych szablonów i nie ma się czasu/umiejętności na ich dostosowywanie. Osobiście skorzystałem z serwisu Blogger Templates. Ale i tak efekt jest znacznie lepszy niż przy poprzedniej szacie graficznej. Wraz z nowym szablonem dodałem nowy moduł - "Subskrybuj", który osobiście bardzo lubię na innych blogach, a który znacznie ułatwia zarządzanie kanałami RSS/Atom.

Na razie to tyle zmian. Przyszedł czas na zapoznanie się dokładne z Debuggerem Eclipse'a ("Eclipse and Java Using the Debugger") i o tym właśnie będzie kolejny wpis.

Pozdrawiam!

wtorek, 18 sierpnia 2009

Żółty pas na JavaBlackBelt!

Witam!
Ostatnie dni stały się bardzo pracowite. Staram się zdobywać jak najwięcej wiedzy posiąść i pracować nad mini-projektami (nie tylko programistycznymi). Dzięki ogromnej pomocy Mateusza Mrozewskiego nauczyłem się ostatnio więcej o programowaniu (w teorii jak i praktyce) więcej niż przez ponad semestr na studiach.
Ale co innego studia a co innego praca nad konkretnym problemem :)

Rendy Pausch powiedział w trakcie słynnego "Ostatniego wykładu" takie słowa: "Mury stają na naszej drodze do celu nie po to, żeby nam przeszkodzić w dotarciu do tego celu, a żeby pokazać nam jak bardzo zależy nam na tym celu.". Takim murem był ostatnio egzamin "OO for Java - Basic" na JavaBlackBelt.com.
Dziś wieczór coś mnie podkusiło i postanowiłem jeszcze raz podejść do niego. I wiecie co? Zdałem!!
Taki mały sukces bardzo mnie podbudował i utwierdził w przekonaniu, że warto zdobywać wiedzę, warto się uczyć a jak się człowiek uczy, to bardzo szybko można dostrzec rezultaty.

Dodatkowo z tej okazji dodałem dwa nowe elementy na blogu:
  • pole z etykietami
  • pole z moim aktualnym statusem na JavaBlackBelt
Oba te pola znajdują się w lewym pasku nawigacyjnym.

Na zakończenie standardowa garść linków:

Pozdrawiam!


czwartek, 6 sierpnia 2009

Using the Eclipse Workbench

Witam!

Tak bardzo spodobał mi się toturial "Eclipse and Java for Total Beginners", że postanowiłem ściągnąć i zapoznać się z dwoma innymi video kursami Marka Dexter'a - "Using the Eclipse Workbench" i "Eclipse and Java Using the Debugger". Na pierwszy ogień poszedł Workbench i oto kilka moich przemyśleń:
  • skróty klawiszowe naprawdę przyspieszają pracę z Eclipsem
  • Eclipse jest edytorem o ogromnej ilości funkcjonalności, które użytkownik może skonfigurować według swojego wyobrażenia
  • domyślne ustawienia Eclipsa są bardzo wygodne i sprawiają wrażenie prostych (i takie są w rzeczywistości!). To często problem, gdy uruchamiamy jakiś program (jak np. IDE) i pojawia się nam okno z ogromną ilością nieznanych funkcji i kontrolek i nie wiemy co zrobić. Tutaj tak nie jest! :)
W rozdziale piątym jest mowa o używaniu zdefiniowanych już skrótów klawiszowych w celu przyspieszenia codziennej pracy z programem. Nie jest ich tak wiele, ale mało też nie, dlatego postanowiłem je spisać i umieścić je tutaj (wraz z opisem):
  • Ctrl + S = Save (!!)
  • Ctrl + Shift + L = Key assist (!!)
  • Ctrl + M = Maximalize
  • Ctrl + Z = Undo
  • Alt + Up Arrow = Move's line up
  • Alt + Down Arrow = Move's line down
  • Ctrl + Alt + Up Arrow = Copy line(s) up // niestety u mnie skrót ten nie chciał zadziałać
  • Ctrl + Alt + Down Arrow = Copy line(s) down // niestety u mnie skrót ten nie chciał zadziałać
  • Ctrl + Left Arrow = Move to previous word
  • Ctrl + Right Arrow = Move to next word
  • Ctrl + Shift + Left Arrow = Add previous word to selection
  • Ctrl + Shift + Right Arrow = Add next word to selection
  • Ctrl + D = Delete current line
  • Ctrl + Shift + Delete = Delete to the end of line
  • Ctrl + F = Find / Replace
  • Ctrl + J = Incremental find next
  • Ctrl + Shift + J = Reverse incremental find
  • Ctrl + Shift + Q = Quick Diff
  • Ctrl + 3 = Quick Access
  • Ctrl + E = Quick Switch Editor
Z początku ilość skrótów może przytłaczać, ale należy pamiętać, że czeka nas wiele lat pracy z Eclipsem (lub podobnym IDE, jak np. NetBeans) i w toku pracy nauczymy się je wykorzystywać nawet o tym nie myśląc :)

Pozdrawiam!

Garść linków:

Code Conventions

Witam!

W trakcje przerabiania kolejnych przykładów z "Thinking in Java" B. Eckel'a zacząłem ponownie zastanawiać się nad tym jak powinienem formatować kod programu. Szybki mail do Mateusza i już mam odpowiedź!

Po pierwsze bardzo wartościową lekturą jest "Code Conventions for the Java Programming Language" - oficjalna dokumentacja Sun Microsystems Inc. omawiająca ich standard formatowania kodu. Lektura łatwa i przyjemna, bo do dosłownie każdego punktu dołączony jest minimum jeden przykład (a często jest ich więcej, by pokazać jak należy, a jak nie należy robić). Dokument jest wydany w kilku wersjach (HTML, PDF, PostScript) tak więc każdy znajdzie coś dla siebie. Co prawda do niektórych wytycznych będzie mi się ciężko przyzwyczaić (jak np. brak spacji między nazwą metody a nawiasem z argumentami w definicji klasy) ale uważam, że warto - zaoszczędzę sobie wiele wysiłku w przyszłości na zmianę długo utrwalanych, złych nawyków i będzie mi łatwiej pracować w zespole.

Ponieważ zacząłem używać Eclipse'a Mateusz podpowiedział mi ciekawą funkcję tego IDE. Jeśli użyjemy skrótu klawiszowego Ctrl + Shift +F (lub w menu wybierzemy Source -> Format) program automatycznie sformatuje nasz projekt według oficjalnych wytycznych. Jeśli dodamy do tego możliwość konfigurowania w znacznym stopniu szablonów (Windows -> Preferences -> Java -> Code Style) wychodzi, że w bardzo krótkim czasie i małym nakładem pracy będziemy mieli kod czytelniejszy i wygodniejszy do edycji. Viva CASE programs! ;)

Garść linków:
P. S. Chciałem z tego miejsca gorąco podziękować za pomoc Mateusza, gdyż jest on nieocenionym nauczycielem! Dziękuję!

niedziela, 2 sierpnia 2009

Eclipse and Java for Total Beginners

Witam serdecznie!

Przyszedł czas na pewne zmiany na blogu. Do tej pory sądziłem, że dobrym pomysłem będzie opisywanie w podobny sposób jak Jacek Laskowski rozdziałów książek, które będę przerabiał. Okazało się to głupotą i ogromną stratą czasu! Tak więc od teraz nie będzie takich postów, chyba że gdzieś znajdę jakiś krótki, ciekawy rozdział, który naprawdę będzie warty omówienia w całości.

Druga zmiana to podejście do samej nauki Javy. Do tej pory byłem przekonany, że najlepszym sposobem na nauczenie się fundamentów Javy będzie pisanie w najprostszym notatniku i kompilacja z linii komend, żebym wiedział dokładnie co się dzieje. Po korespondencji z Mateuszem Mrozewskim postanowiłem nauczyć się podstaw Eclipse'a i swojego pierwszego frameworka - jUnit'a. Stało się tak dlatego, że dostałem od Mateusza projekt Eclipsowy, który pokazywał jak w prosty sposób można testować swoje programy już na początku nauki Javy. Niestety nie znałem Eclipse'a więc nie za wiele mogłem zwojować, ale...

Po chwili wyszukiwania w Google znalazłem kurs video pt. "Eclipse and Java for Total Beginners". Jest to seria 16 odcinków krok po kroku pokazujących jak obsługiwać Eclipse i jak programować w Javie autorstwa Marka Dextera. Pierwsze cztery odcinki są przeznaczone dla osób nie znających żadnego języka programowania. Kolejne to podstawy jUnit oraz TDD (Test-Driven Development). Samo podejście TDD jest dość dziwne w odbiorze z początku, ale osobiście bardzo do mnie przemawia po wykonaniu kilku prostych testów. Cały kurs trwa 3,5 godziny i uważam, że nie jest to czas w żadnych razie stracony.

Pozdrawiam i do kolejnego razu!

czwartek, 23 lipca 2009

Rozdział 2. "Zmienne, operatory i instrukcje"

Witam po długiej przerwie!

Czas najwyższy zabrać się za podstawy programowania w Javie. Jak wcześniej wspomninałem zajmiemy się najpierw książką Marcina Lisa, lecz postanowiłem przerobić jedynie kilka z jej rozdziałów:
  • Rozdział 1. "Krótkie wprowadzenie" (już omówiony)
  • Rozdział 2. "Zmienne, operatory i instrukcje" (będący przedmiotem rozważań w tym poście)
  • Rozdział 3. "Obiekty i klasy"
  • Rozdział 4. "Wyjątki"
Dlaczego jedynie 4 z 11 rozdziałów? Ano dlatego, że są one esencją podstawowych wiadomości jakie potrzebuje osoba chcąca pisać programy w Javie zgodnie z ideą programowania zorientowanego obiektowo, lecz nie wchodząc zbyt szczegółowo w samą teorię OOP. Dzięki tej wiedzy znacznie łatwiej (i szybciej) będziemy mogli przejść do najważniejszej dla Javisty książki na początku jego wędrówki - "Thinking in Java." w wydaniu IV (polskim). Do tego chciałbym przeplatać te posty różną dodatkową wiedzą, a więc całość będzie krótsza, spójniejsza i bardziej oparta na kodzie i przykładach niż na teorii.

A więc do roboty!! :)

Pierwsza część rozdziału 2 opowiada o zmiennych typu prostego. Możemy je podzielić na:
  • typy całkowitoliczbowe (takie jak byte, short, int i long) - do przechowywania liczb całkowitych
  • typy zmiennopozycyjne (float i double) - do przechowywania liczb posiadających część ułamkową
  • typ boolean - logiczny typ przyjmujący jedynie dwie możliwe wartości: true oraz false
  • typ char - służący do reprezentacji znaków Unicode (choć czasem używa się go do operacji arytmetycznych)

Zmienne deklarujemy w następujacy sposób:
typ_zmiennej
nazwa_zmiennej;

Natomiast odpowiednią wartość nadajemy poprzez zapis:
nazwa_zmiennej = wartość;

Programy pokazujące operowanie na zmiennych typu prostego mają numery od 1 do 3.

Następnym istotnym i występującym obecnie chyba w każdym języku programowania elementem są tablice. Dzięki tablicy możemy deklarować wiele zmiennych tego samego typu i połączyć je w taki sposób, że odwoływanie się do kolejnych zmiennych będzie bardzo szybkie i proste. Struktura deklaracji tablicy wygląda następująco:
typ_zmiennej nazwa_tablicy[] = new typ_zmiennej[rozmiar_tablicy];

Natomiast odwołanie się do i-tego elementu tej tablicy:
nazwa_tablicy[index];

przy czy index jest liczony od 0 do rozmiar_tablicy - 1!!

Tablice takie (w przeciwieństwie do niektórych kontenerów, o których już za kilka postów) mają stałą, z góry ustaloną wielkość. Nasuwa się więc pytanie co się stanie, gdy zechcemy odwołać się do elementu nieistniejącego (przekraczającego rozmiar)? Nie możemy wykonać takiego odwołania, ponieważ już na etapie kompilacji kompilator rozpozna taką sytuację i przekaże nam na ten temat stosowną informację! Czyż to nie piękne? ;)

W omawianym rozdziale znajdziemy informacje takie jak operacje arytmetyczne na zmiennych, dzielenie modulo operatory inkrementacji i dekrementacji (zarówno pre jak i post), operatory logiczne, przypisania. Ja chciałbym się natomiast skupić na kilku ważnych rzeczach:

1) Operator warunkowy:
warunek ? wartość1 : wartość2;

Jest bardzo użytecznym operatorem. W przypadku, gdy warunek będzie prawdziwy operator zwróci wartość 1, natomiast jeśli fałszywy wartość 2. Jest to prosta konstrukcja, która dosyć często potrafi sprawić, że kod jest krótszy i czytelniejszy.

2) Instrukcja warunkowa if...else oraz if...else if:

if (wyrażenie_warunkowe) {
// instrukcje do wykonania, jeśli warunek jest prawdziwy
}
else {
// instrukcje do wykonania, jeśli warunek jest fałszywy
}

if (warunek1) {
// instrukcje 1
}
else if (warunek2) {
// instrukcje 2
}
else if (warunek3) {
// instrukcje 3
}
else {
// instrukcje 4
}

Instrukcje w klamrach są blokami kodu, nie koniecznie pojedyńczymi instrukcjami. W pierwszym przypadku sytuacja jest analogiczna do operatora warunkowego. Jeśli warunek jest prawdziwy wykona się pierwszy blok kodu, jeśli fałszywy drugi blok. Czasem jednak jest tak, że dana sytuacja/problem może mieć więcej niż dwa rozwiązania. Wtedy stosujemy drugą konstrukcję. Przy konstruowaniu złożonych instrukcji warunkowych if...else nalezy pamiętać, że jeśli prawdziwe są dwa warunki, to wykonany zostanie jedynie tej występujący wcześniej.

3) Instrukcja wyboru switch:

switch (a) {
case 1:
instrukcje1;
break;
case 50:
instrukcje2;
break;
case 23:
instrukcje3;
break;
default:
instrukcje4;
}


Switch jest bardzo podobny do instrukcji if...else if lecz jest bardziej praktyczny w przypadku, gdy jako warunek logiczny występuje sprawdzenie, czy dana liczba całkowita ma określoną wartość (kolejne przypadki, ang. case). Instrukcja break podowuje wyjście z bloku switch (ale o tym za chwilę).

4) Pętla for:

for (wyrażenie_początkowe; wyrażenie_warunkowe; wyrażenie_modyfikujące) {
// instrukcje do wykonania
}


Pętla for wykonuje określoną (przynajmniej taka jest dobra praktyka) ilośc razy instrukcje wewnątrz jej bloku. Wyrażenie początkowe, warunkowe i modyfikujące mogą znajdować się poza nawiasem, lecz należy wtedy bardzo uważać, by nie spowodować, że pętla będzie się wykonywać w nieskończoność (co jest częstym błędem początkujących programistów w każdym języku programowania, tak więc nie ma co się przejmowac, a jedynie starać się uczyć na błędach :)).

5) Pętle while i do...while:

while (wyrażenie_warunkowe) {
// instrukcje
}


do {
// instrukcje
} while (wyrażenie_warunkowe);

W przypadku obu tych pętli zazwyczaj ilość iteracji nie jest z góry znana, więc pętla, jak sama nazwa wskazuje, będzie wykonywać się do momentu spełnienia warunku. Pętla do...while będzie wykonana zawsze conajmniej raz, ponieważ sprawdzenie warunku wyjścia z pętli jest sprawdzane dopiero po wykonaniu bloku instrukcji.

6) Pętla foreach:

for (typ val : tablica) {
// instrukcje
}


Pętla ta jest nowością w Javie od wersji 1.5. Jest ogromną zaletą i przeznaczeniem jest przejrzenie wszystkich elementów tablicy i wykonywanie instrukcji na nich. Dzięki temu nie musimy znać rozmiaru tablicy, by przejrzeć wszystkie jej elementy! Typ val musi być zgodny z typem tablicy.

7) Instrukcje break i continue:
  • break - służy do natychmiastowego przerwania wykonywania pętli
  • continue - powoduje przerwanie bieżącej iteracji pętli i rozpoczęcie kolejnej

Postarałem się w dosyć krótki i spójny sposób zebrać najważniejsze informacje z tego rozdziału. Mam nadzieję, że następnym razem wyjdzie trochę mniej książkowo i będę operował na większej ilości kodu w samej treści postu. Bardzo gorąco zachęcam do zapoznania się z kodami źródłowymi zadań rozdziału 2, gdyż to one pokazują prawdziwe działanie i istotę rzeczy omawianych w tym cyklu postów. Znaleźć je można pod adresem: http://github.com/Smoczysko/Java.Cwiczenia-praktyczne/ -> Rozdział 2.

Pozdrawiam i do następnego razu!

poniedziałek, 6 lipca 2009

Podsumowanie COOLuarów i Java Guide

Witam serdecznie!

Na łamach dWorld.pl Grzegorz Duda (organizator konferencji COOLurary) zamieścił podsumowanie imprezy z jego perspektywy. Lektura krótka, zwięzła i przyjemna więc zachęcam do przeczytania. Artykuł znajdziecie pod tyn adresem. Co ciekawe, w treści artykuły znalazły się odnośniki do moich spostrzeżeń na temat imprezy jak i do galerii zdjęć, które umieszczałem na grupie dyskusyjnej Trójmiejskiej Grupy Użytkowników Java (TJUG).

Dodatkowo zachęcam wszystkich bardzo gorąco do wzięcia udziału w konkursie Java Guide!

Pozdrawiam serdecznie!

P.S. Wiem, że powinienem napisać coś na temat pierwszych rozdziałów książki o ćwiczeniach z Javy, ale niestety choroba bardzo skutecznie mi to uniemożliwiła. Mam nadzieję, że ten stan się bardzo szybko zmieni.

poniedziałek, 29 czerwca 2009

COOLuary V.2 - Dzień drugi


Poprzedni post o pierwszym dniu COOLuarów V.2 zacząłem od słów, że każda konferencja jest inna. Po zakończeniu drugiego dnia konferencji mogę powiedzieć, że na COOLuarach każdy dzień jest inny...

Niedziela nie zapowiadała się zbyt ciekawie. Zimny wiatr, okropna mgła, jednym słowem - nic zachęcającego. Za to po przybyciu do hotelu moje wszelkie wątpliwości co do tego, czy dzień spędzę udanie odeszły jak to mówią jak ręką odjął. Filiżanka kawy (albo i dwie? :) ), ciasteczko, rozmowy o dniu wczorajszym, zadawanie pytań, których wczoraj nie udało mi się zadać. Tak jak wspomniałem, drugi dzień konferencji różnił się znacząco od pierwszego. Tego dnia miała miejsce sesja sponsora (forma e-point.pl) i dwie sesje trzygodzinnych warsztatów.

Pierwsza była sesja firmy e-point na temat "Nie samą Javą Developer żyje...". Początkowo bardzo sceptycznie podchodziłem do tej prelekcji, nie wiedziałem czego się spodziewać, ale wystarczyło posłuchać przez 5 minut i już człowiek sam zastanawiał się, dlaczego do tej pory nie zauważał pewnych niuansów przy tworzeniu oprogramowaniu. Do tego bardzo mi się podobała postawa prowadzącego, który podkreślał kilka razy, że jeśli ktoś ma jakiekolwiek pytania po konferencji to może do niego śmiało pisać na podanego na slajdach maila. Prelekcja udana, pouczająca i pozytywnie nastawiająca na dalsze atrakcje.

Na pierwszą sesję warsztatów wybrałem się do Sławomira Gintera, który prowadził wprowadzenie do Google Aps Engine. Jedynym minusem był fakt, że nie było przez większość czasu internetu (w końcu jeden z uczestników warsztatów obdarował nas swoim mobilnym internetem i mogliśmy zobaczyć Google Aps Engine on-line) i musieliśmy pracować offline bez deploy'owania aplikacji. Podobało mi się bardzo jak prowadzący odpowiadał na każde, nawet najprostsze pytania i nie czuło się żadnego wywyższania. Potem rozmowa zeszła ogólnie na Google i rozwiązania tej firmy. Z dwóch warsztatów, na których byłem ten był najlepszy!

Po obiedzie udaliśmy się na troszkę opóźnione (tak mi się wydaje) warsztaty z Flex i Flash dla programistów Java. Zawsze zastanawiałem się jak można połączyć Flash'a i Jave, by robić dobre aplikacje, a tu Jakub Neuman odpowiedział bardzo prosto na wszystkie moje pytania prezentując nam technologię Flex i Adobe AIR! Co najfajniejsze w tym wszystkim to to, że prowadzący przestrzegał przed wszystkimi kłopotami jakie napotkał przy integracji Flash/Flex z Javą i pokazywał najprostsze sposoby radzenia sobie z nimi!

Po zakończeniu drugiej sesji warsztatów przyszedł czas na losowanie kolejnej porcji książek wydawnictwa Helion (niestety i tym razem nie udało mi się, a była w puli książka, na którą ostrze sobie ząbki już od dawna) i podsumowanie całej imprezy. Na całe szczęście odbyło się bez zbędnych przemówień a jedynie rozmowie z uczestnikami co im się podobało, a co nie. Potrójne oklaski dla Grzegorza (który jak najbardziej sobie na nie zasłużył) i powrót do domu.

Podsumowując imprezę w skrócie:
+ świetni ludzie, masa nowych znajomości nawiązanych
+ genialny pomysł z obiadami (które mi osobiście uratowały w niedzielę życie)
+ bardzo dobre przygotowanie, żadnych nieprzyjemnych niespodzianek, profesjonalna obsługa
+ wysoki poziom merytoryczny imprezy
+ duży nacisk postawiony na nowe (często świeżynki w fazie beta) technologie
+ idea UnConference już sama w sobie jest rewelacyjna, ale należy pogratulować organizatorom za jej świetne wdrożenie na arenę polską
- brak WiFi
- warsztaty były prowadzone świetnie, ale było by idealnie, gdyby kilka dni przed konferencją na stronie pojawiły się materiały i informacje dotyczące warsztatów, aby każdy użytkownik mógł się przygotować do nich. Cudownie by było, gdyby organizatorzy dogadali się z jakąś miejscową kafejką internetową i na czas warsztatów wypożyczyli komputery (na których materiały ze strony i odpowiednie oprogramowanie już by było zainstalowane). Osobiście nie miałbym nic przeciwko, gdyby podniosło by to o załóżmy 10zł koszt konferencji. Ale ponieważ większość uczestników miała swoje laptopy nie był do jakiś dokuczliwy problem.

Chciałem z tego miejsca bardzo podziękować Grzegorzowi Dudzie, Michałowi, Sławkowi Ginterowi, Cyprianowi, Jakubowi Neumanowi, e-Point'owi i reszcie, z którą spędziłem naprawdę udane dwa dni bardzo serdecznie podziękować! Było mi bardzo miło Was poznać i porozmawiać! :)

Na koniec porcja zdjęć z konferencji:

sobota, 27 czerwca 2009

COOLuary V.2 - Dzień pierwszy


Każda konferencja jest inna - skupia się na innych odbiorcach, innych technologiach etc. Ale łączy je jedno - mają pewien szablon. Mamy ułożoną wcześniej agendę, według której odbywają się wszystkie prelekcje, zmiany w programie rzadko są dobrze odbierane. W trakcie prelekcji traci się masę czasu na autoprezentację prelegenta i firmy dla której pracuje etc. Tak nie jest na COOLuarach, one są inne...

Już od samego początku impreza bardzo pozytywnie mnie zaskoczyła. Co prawda nie szybko dotarłem z kolejki do Hotelu DAL, ale gdy przy rejestracji dostałem masę gratisów, w tym koszulkę, którą mogłem sobie wybrać (bez zastanowienia wziąłem czarną JavaFX ;) ) uśmiech zawitał na moich ustach i już ich nie opuszczał. Chwila na kawę, ciastko i przeczytania broszur, które dostałem by za chwile iść na pierwszy wykład. A po prawdzie pierwszy i jedyny.

Wprowadzenie do UnConference zrobił główny organizator - Grzegorz Duda. Cała idea polega na tym, że tak naprawdę tą imprezę tworzą uczestnicy i ich rozmowy w kuluarach (stąd nazwa). Każdy podaje temat (przyklejając go na specjalną tablice, co samo w sobie jest rewelacyjne!), o którym chciałby porozmawiać po czym są one zbierane i tworzy się spójny, w miarę zwarty plan. Taka sesja polega na tym, że przy stole siadają wszyscy zainteresowani i zaczyna się rozmowa, wymiana doświadczeń, spostrzeżeń, a nierzadko pytania o rozwiązania problemów. Jedna rzecz jest niesamowita - każdy mówi każdemu po imieniu i na nikogo nie patrzy się dziwnie jeśli danemu uczestnikowi rozmowy brakuje wiedzy na dany temat!

Pierwsza sesja na jakiej byłem to było Google Aps Engine. Dosyć krótka rozmowa, bo nikt tego tak naprawdę porządnie ndzisiaie przetestował, więc po chwili już zeszło na Jave i jej przyszłość, jej wady i zalety etc. Ciekawa bardzo dysputa, chyba najlepsza w całym dniu pierwszym.

Na drugą sesję nie poszedłem, bo spędziłem ją na rozmowie one on one z Cyprianem, który studiuje informatykę na Uniwersytecie Gdańskim i miał ciekawe podejście do wchodzenia w świat Javy jak i do samego sensu certyfikowania. To była rozmowa, której brakowało mi na dwóch poprzednich konferencjach i za którą serdecznie dziękuje!

Następna w planie była godzinna przerwa obiadowa, w czasie której zaserwowano nam obiad w restauracji hotelowej, za co należą się wielkie brawa do organizatorów!

Dalej był Maven i Ant i rozmowa jak uniknąć problemów wynikających z podejść jakie proponują oba te rozwiązania. Dzięki java4people w Szczecinie byłem wstanie zrozumieć co nieco więcej i Maven stał się kolejną rzeczą na liście TODO tych wakacji :)

Sesja sponsora - e-Point - okazała się strasznie trudna, ponieważ rozmawiano o naprawdę trudnych i wymagających specjalistycznej wiedzy rzeczach, ale nie powiem, żeby to był czas stracony. Jak to mawia mój opiekun naukowy: "Jak się uczyć, to od najlepszych!" i dzisiaj zrozumiałem, co ma na myśli. Choć temat może być ciężki, człowiek zawsze dowie się czegoś nowego, jakiejś ciekawostki tudzież wskazówki na przyszłość do tego na co nakierowywać się w nauce na podstawie doświadczeń starszych, bardziej doświadczonych kolegów.

Ostatnia sesja miała być o certyfikowaniu i JavaBlackBelt, ale niestety połączono wiele tematów i nie wyszło to, co zamierzono. Za to rozmawialiśmy o Scrumie - metodyce prowadzenia i zarządzania projektami (Co Wikipedia mówi o Scrum'ie?). Brzmiało to na tyle ciekawie, że postanowiłem poczytać o tym w internecie i może uda się choć trochę scrumowego podejścia wprowadzić do Sekcji Informatycznej albo do własnych projektów? Było by cudownie :) A certyfikaty nie zając - nie uciekną. Jutro sam przykleję własną karteczkę z tematem (na innej konferencji, wśród innych ludzi nie miałbym odwagi) i zobaczymy co z tego wyjdzie...

Na sam koniec było wypełnianie ankiet, rozmowa z organizatorem o plusach i minusach imprezy, ustalenia końcowe oraz losowanie nagród niespodzianek. Nie poszczęściło mi się, ale może jutro się uda? Czas pokaże :)

czwartek, 25 czerwca 2009

Rozdział 1. "Krótkie wprowadzenie"

Na początku pierwszego rozdzialu książki Marcina Lisa - "Java. Ćwiczenia praktyczne" - autor tłumaczy jak zainstalować JDK na Windowsie i Linuxie. Ja zaniecham tego, ponieważ co wersja systemu to inna instalacja. Ale zazwyczaj sprowadza się to poprostu do ściągnięcia odpowiedniej paczki/instalatora ze strony producenta (Sun Microsystems) i intuicyjnej instalacji za pomocą prostego GUI Wizard.

Dalej mamy standardowy już program - "Hello World!". Pokazuje on nam jak wygląda podstawowa składnia programu w Javie:

public class Main {
public static void main (String args[]) {
System.out.println("Pierwszy program w Javie!");
}
}

Do tego omawiana jest bardzo krótko istota B-codu, maszyny wirtualnej (ang. Virtual Machine) oraz kompilacji, ale chciałbym na dzień dzisiejszy pominąć tą tematykę i powiedzieć tylko tyle, że po zapisaniu powyższego kodu do pliku Main.java wykonujemy następujące dwie czynności w bashu/powłoce/wierszu poleceń:
  1. kompilujemy program poleceniem*: javac Main.java
  2. uruchamiamy program poleceniem*: java Main.

Efektem wywołania drugiego polecenia będzie pojawienie się napisu "Pierwszy program w Javie!". Udało się nam napisać pierwszy program w Javie!

Gratuluję i do zobaczenia w rozdziale 2!

* - założyłem tutaj, że ścieżka środowiskowa (ang. path) zostały ustawione tak, by z każdego miejsca w komputerze można było wywołać polecenia java, javac i javadoc (o którym wspomne nieco później).

Początek przygody z Javą!

Nareszcie przyszedł od dawna wyczekiwany czas wakacji! Egzaminy już za mną, wszystko już załatwione, tak więc czas zająć się czymś miłym i przyjemnym. Ponieważ pogoda za oknem nie dopisuje, tak więc postanowiłem zabrać się nareszcie za książkę Marcina Lisa "Java. Ćwiczenia praktyczne" wydawnictwa Helion. Książka jest warta uwagi z kilku powodów:
  • jest tania - 19zł to naprawdę malutko
  • jest książką w stylu "przykład goni przykład", czyli każda nowa informacja jest ćwiczona przy pomocy kilku przykładów praktycznych
  • jest bardzo dobrze napisana, jak zresztą inne książki Marcina Lisa
  • jest bardzo dobra dla osób, które nie znają się na programowaniu wcale, albo znają jakiś inny język i w krótkim czasie muszą przestawić się na Jave.
  • nie trzeba tej książki czytać od A-Z (sam postanowiłem przerobić jedynie najważniejsze rozdziały, aby łatwiej było przyswajać wiedzę z "Thinking in Java" Bruce Eckel'a)
Ponieważ zarówno w tej książce, jak i w każdej następnej będę starał się przerobić jak najwięcej przykładów postanowiłem jak najdłużej wstrzymywać się od korzystania z IDE (ang. Integrated Development Enviroment - Zintegrowane Środowisko Programistyczne) jakich jak NetBeans czy Eclipse (przynajmniej do czasu zabaw z GUI w AWT i Swing). Dzięki temu mam nadzieję, że w bardzo dobry sposób opanuję podstawy, a jest to mój najważniejszy cel na dzień dzisiejszy. Zresztą zawsze lubiłem powiedzenie, że "praktyka czyni mistrza" :)

Brak IDE postanowiłem sobie wynagrodzić bardzo dobrym edytorem tekstu dla programistów (nie tylko Javy) - jEdit. Co ciekawe, jEdit jest programem w całości napisanym w języku Java! Jego najnowsza odsłona umożliwia dołączanie tzw. pluginów, które w dosłownie dowolny sposób potrafią przerobić jEdit'a tak, by był jak najbardziej dla nas wygodny.

Mamy już edytor, ale nie da się niestety na ten moment ani skompilować ani uruchomić żadnego programu. Pierwsze zadanie realizuje JDK (Java Development Kit), a drugie JRE (Java Runtime Enviroment). Nie będę się specjalnie rozpisywał na temat tych dwóch narzędzi, powiem jedynie, że na tym etapie są one niezbędne do pracy z językiem Java, a można je pobrać ze strony producenta, firmy sun Microsystems (link na końcu postu).

Ponieważ książki, które będę omawiał na łamach posiadają liczne przykłady, które czasem trzeba modyfikować (np. przy okazji wyjścia nowego JDK), a hostingi stron WWW i plików są bardzo niestałe (w każdej chwili plik może zniknąć ze strony) postanowiłem zarządzać nimi przy pomocy Systemu Kontroli Wersji Git i umieszczać w repozytorium GitHUB.com. To bardzo wygodny i prosty sposób, a dzięki łatwym w obsłudze narzędziom możliwy jest bardzo szybki dostęp do wybranego fragmentu kodu.

Na zakończenie chciałem podać pewną ciekawostkę, którą wyczytałem w książce Marcina Lisa. Otóż Java początkowo miała nazwę Oak (ang. dąb) i była językiem przeznaczonym do sterowania urządzeniami RTV i AGD. To właśnie temu Java zawdzięcza swoją jedną z największych zalet - multiplatformowość (czy jak kto woli "przenoszalność").

Garść linków:

Do zobaczenia w rozdziale 1!

sobota, 13 czerwca 2009

infoShare 2009

Minęły już przeszło dwa tygodnie, ale wspomnienia o infoShare 2009 są wciąż żywe. Nareszcie zakończyłem najtrudniejszy okres zaliczeniowy na uczelni i mogę się podzielić swoimi wrażeniami z imprezy.

Konferencja ta była drugą taką imprezą w moim życiu, a pierwszą dwudniową (java4people była imprezą jednodniową). Niestety odbywała się w tygodniu, ale po kolei...

W czwartek (28 Maja) z samego rana pojechałem na konferencję. Całe szczęście, że było to blisko, bo w Gdańsku, na Politechnice Gdańskiej, czyli tam gdzie się uczę obecnie. Na miejscu trochę się zdziwiłem, bo nie było żadnych informacji gdzie iść etc. - dopiero po chwili wyszło z budynku (nowy budynek wydziału Elektroniki, Telekomunikacji i Informatyki) dwóch ludzi z kartkami informacyjnymi. Szybka rejestracja (mimo sporej kolejki!), miła obsługa, torba pełna gratisów. Potem pierwszy wykład na temat "Czy w Polsce może powstać Dolina Krzemowa" Marka Hołyńskiego z PTI. Tematyka ciekawa, historyjki opowiadane przez prowadzącego ciekawe, ale niestety główny cel prelekcji - odpowiedź na tytułowe pytanie - z braku czasu (zmarnowanego po części na kolejne historyjki) została zawarta w dosłownie dwóch zdaniach i niestety było to małe rozczarowanie.

Kolejna prelekcja miała tytuł "System antyspamowy Poczty Wirtualnej Polski - jak chronimy Twoją skrzynkę przed zalewem niechcianych wiadomości?" trzech pracowników Wirtualnej Polski (WP.pl): Andrzeja Butkiewicza, Tomasza Potęgi i Pawła Sasina. Jeszcze przed samym wykładem na sale weszła obsługa rozdając każdemu kartkę z przykładowym mailem - spamem (zdjęcie w galerii). W trakcie wykładu omawiane były różne rodzaje i Ci, których typ spamu był omawiany odpadali z zabawy. Ci, którzy zostali na koniec dostali zestawy promocyjne z Wirtualnej Polski. Dodając do tego jeszcze świetne prowadzenie prelekcji, ogromną charyzmę i masę humoru mogę śmiało powiedzieć, że w skali 10-punktowej wykład WP dostaje 10!

Po prezentacji Wirtualnej Polski przyszedł czas na Eye-Tracking w wykonaniu Piotra Jardanowskiego z firmy Symetria. Bardzo podobało mi się, że cały proces jak i historia Eye-Trackingu zostala w bardzo przystępny sposób "podana jak na tacy". Sporo przykładów, sporo też konkretów. Firma Symetria przywiozła na konferencję zestaw eye-trackera i można było sprawdzić na samym sobie jak to działa. Niestety z braku czasu nie udało mi się przetestować tego cudeńka.

Rzecz na którą czekałem od bardzo dawna - "Nowe inicjatywy Suna czyli słów kilka na temat projektów (Sun Glassfish Portfolio oraz openDS)" Marcina Kozaka z firmy sun Microsystems Poland - musiała przejść mi koło nosa... Niestety musiałem być obecny na wykładzie u siebie na wydziale i nie mogłem się na tej prelekcji pojawić.

Po wykładzie trafiłem na końcówkę "Tworzenia natywnych aplikacji mobilnych" Kamila Brzezińskiego z Gadu-Gadu, ale już 5 minut siedzenia tam zniechęciło mnie do słuchania - prelegent sam się przyznał, że robił ten wykład pół roku temu i nie pamięta co wtedy przygotował - żenada...

"Polskie barcampy i rynek startupów - czy zwiększenie dostępności finansowania zaowocuje globalnymi przedsięwzięciami?" Krzyśka Kowalczyka z UBIK Business Consulting był tematem najbardziej tajemniczym i niestety najmniej dla mnie interesującym, tak więc nie będę się wypowiadał na jego temat.

"Dobre, Złe i Brzydkie" - Automatyczne sposoby poprawy jakości oprogramowania Patrycji Węgrzynowicz z NASK'u był wykładem ciekawym i to nawet bardzo. Uświadomił mi kilka rzeczy:
  • testowanie jest ważnym zagadnieniem, które muszę zacząć stosować z przyzwyczajenia, nie z przymusu, gdy coś się psuje
  • Design Patterns (Wzorce Projektowe) są ciekawym narzędziem programistycznym i warto będzie go zbadać w te wakacje przy okazji szerszego poznawania Javy
  • korzystanie z narzędzi gotowych, IDE etc. nie umniejsza poziomowi programisty ani jego umiejętnościom, a wręcz przeciwnie
To był ostatni wykład dnia pierwszego. Następnego dnia, znowu z powodu zajęć, mogłem być tylko na wykładzie "Bezpieczna wirtualizacja = wirtualizacja bezpieczeństwa" Michała Jarskiego z Check Point Software Technologies oraz "Czasem dobrze pozarządzać" Agnieszki Zielonki - Sujkowskiej z ODiTK. Oba wykłady zrobiły na mnie ogromne wrażnie zarówno oprawą jak i przekazem. dodatkowo na wykładzie Pani Agnieszki dowiedziałem się (na podstawie testu, który nam - uczestnikom - zrobiła), że jestem osobą pomiędzi czasami, która patrzy na wszystko z perspektywy przyszłości (to prawda!) i dostałem płytę z muzyką relaksacyjną autorstwa prelegentki.

Podsumowując:
+ bliskość, dobra lokalizacja
+ duże urozmaicenie tematyki
+ spora liczba gratisów i zestawów promocyjnych
+ doświadczeni i ciekawi prelegenci
+ caterring w przerwach kawowych i obiadowych
+ darmowe wejście
- wiele niedopatrzeń organizatorskich
- praktycznie brak przerw, co było bardzo męczące (i następstwem tego była coraz mniejsza frekwencja w późniejszych godzinach)
- mało czasu na rozmowy w kuluarach

A oto galeria z imprezy:


Pozdrawiam serdecznie, Łukasz "Smok" Rybka

środa, 10 czerwca 2009

Pierwszy egzamin na JavaBlackBelt



Sporo się ostatnio działo: konferencja infoShare 2009 na Politechnice Gdańskiej, sesja, kolokwia. Za każdym zaliczonym kolokwium przychodzą dwa kolejne - urok uczelni wyższej. Ale żeby nie rozpoczynać wpisu tak bardzo pesymistycznie, to wpomnę o JavaBlackBelt.

JavaBlackBelt.com to strona, na której można sprawdzić poziom swojej wiedzy z zakresu Javy, programowania zorientowanego obiektowo i wielu różnych (jak np. system kontroli wersji CVS). Całość jest zorganizowana w tytułowe pasy - po zdobyciu odpowiedniej ilości punktów za zdane egzaminy otrzymuję się rangę - pas - ideologicznie zbliżony do pasów z Karate czy Teakwondo (początkowo każdy ma pas biały i 0 punktów). Możemy płacić za egzaminy, albo iść darmową ścieżką, która zaczyna się od Java SE - Basic Egzam. Dlaczego o tym wszystkim piszę? Otóż z dwóch powodów:

1) Strony tego rodzaju pozwalają nam nie tylko na sprawdzanie swojej wiedzy, ale także na jej zgłębianie. Wykonując kilka razy ten sam błąd w końcu się nauczymy dobrze. Poza tym na JavaBlackBelt.com każde pytanie, które jest zadawane ma dokładne wyjaśnienie swojej prawidłowej odpowiedzi wraz z odnośnikami internetowymi do dokumentacji i innych baz wiedzy.

2) Dwa dni temu zdałem pierwszy egzamin z Java SE - Basic z wynikiem 75%. Nie jest to rewelacyjny wynik, ale zważywszy na krótki okres, w którym zajmuję się Javą sądzę, że jest to niezłe osiągnięcie. Oto screen:

Czeka mnie jeszcze zamieszczenie krótkiej relacji z infoShare 2009 i wrzucenie galerii i zajmę się omawianiem książki Marcina Lisa "Java. Ćwiczenia praktyczne" wydawnictwa Helion.

Dla zainteresowanych kilka linków:

Pozdrawiam i dziękuję za uwagę,
Łukasz "Smok" Rybka

wtorek, 14 kwietnia 2009

Wspomnienia z java4people 2009

Minęło już 10 dni ale wspomnienia pozostają wciąż żywe...

Konferencja java4people była pierwszą w moim życiu konferencją i pierwszym zetknięciem z profesjonalną Javą. To w takim razie po co tam pojechałem? Ano po to, żeby przekonać się jak to jest na konferencji, dowiedzieć się czegoś więcej niż tylko to czego uczy się na uczelni, nawiązać znajomości. Wszystkie te trzy cele zostały wypełnione w 100%! Ale od początku...

Piątek, 3 Kwietnia, dworzec główny w Gdyni, informacja PKP - "Nie proszę Pana, nie ma takiego połączenia. Nie proszę Pana, nie pojedzie Pan.". Okazało się, że pociąg, na który dzień wcześniej kupiłem bilet nie kursuje już i moje całe plany poszły w łeb. Znalazłem połączenie pośrednie i zamiast jechać 4,5 godziny pospiesznym jechałem ponad 6 Szybką Koleją Miejską (SKM) i Osobowym. Tak nieprzyjemnej podróży pociągiem jeszcze nigdy nie miałem... W dodatku na miejscu byłem ponad 2 godziny później niż planowałem i nie było mowy rozejrzeć się po mieście (pierwsza moja wizyta w Szczecinie) tylko trzeba pędzić do schroniska. Tam oczywiście też prosto być nie mogło, bo okazało się, że moja rezerwacja przepadła - żenada... Ale przeskoczmy te kolejne niemiłe godziny i skupmy się na konferencji.

Około 8:30 przybyłem na Uniwersytet Szczeciński (nie było problemów dzięki dobrej informacji na stronie) gdzie powitała mnie miła Pani w akredytacji. Jak każdy uczestnik dostałem zestaw do ochrony mojego laptopa i koszulkę z konferencji. Tego bym się nie spodziewał szczególnie, że konferencja była całkowicie darmowa. Już od pierwszych momentów widać było profesjonalizm ale i bardzo przyjazną atmosferę.

Pierwszy wykład Pawła Szulca - Testowanie Enterprise JavaBeans 3.0. Temat dla mnie trochę obcy ale było bardzo ciekawie. Niektóre rzeczy były bardzo przystępnie przekazywane, dzięki czemu taki żółtodziób z samą podstawą teoretyczną był w stanie coś wynieść z wykładu.

Gdy w domu jeszcze przed wyjazdem czytałem agendę konferencji sądziłem, że drugi wykład będzie totalną magią dla mnie. Tematyka "Comet, Bayeux i mechanizm Publish-Subscribe poprzez HTTP", którą prezentował Waldemar Kot była dla mnie tak abstrakcyjna jak życie na Marsie. I tu największe zaskoczenie konferencji - było to tak profesjonalnie prowadzone, że nie dało się nie załapać choćby samej ideologii. A temat protokołu Bayeux strasznie mnie zaciekawił. Oczywiście jak przy testowaniu EJB 3.0 nie można się spodziewać, że wyjdzie się i będzie się widziało wszystko, ale nie o to tu przecież chodzi.

Dłuższa przerwa była kolejnym miłym zaskoczeniem - mnóóóóstwo pizzy w różnych smakach na obiad popijanych colą to dla informatyka wymarzony posiłek :)

Przyszedł czas na najbardziej przeze mnie wyczekiwany wykład - "System kontroli wersji GIT" Andrzeja Śliwy. Miałem wrażenie, że uczestniczę w połączeniu panelu dyskusyjnego i uczelnianego wykładu, a połączenie to było idealne, szczególnie, że było wspomagane ciągłymi pokazami praktycznymi. Każdy problem, o który pytała publika prowadzący rozwiązywał na naszych oczach w bardzo prosty i przystępny sposób. Jak to zawsze bywa wywiązała się zażarta dysputa między zwolennikami GIT'a a SVN/CVS (to bardzo różni profesorów uczelnianych - zwolenników starych rozwiązań i studentów wolących szybsze i nowocześniejsze rozwiązania), która w pewnym momencie była bardzo nieprzyjemna i uciążliwa, ale widać było że dla prowadzącego to nie pierwszyzna i zaraz było to łagodnie załatwione.

Ostatni wykład Jacka Laskowskiego pt. "Zwinne i lekkie aplikacje webowe z Grails " nie był dla mnie czymś rewelacyjnym. Po pierwsze nie znam języka Groovy, Ruby ani im podobnym i było dla mnie problemem zrozumienie często o czym mowa. Po drugie, gdy Jacek pokazywał jak to działa w praktyce było wiele problemów technicznych, pomyłek i niedopracowania przez co spora część czasu (który i tak był przedłużony o ponad 20 minut) była poświęcona zastanawianiu się czemu to nie działa i mówieniu, że "trzeba ten serwer jeszcze mocniej trzepnąć w głowę".

Niestety przez to, że miałem pociąg o 17, a następny o 5:53 następnego dnia to musiałem zrezygnować z ostatniego wykładu. Ale nie wszystko stracone, bo całość konferencji była kręcona, a filmy w przeciągu 1,5 miesiąca zostanie udostępniona w internecie (gdy się to stanie napisze o tym na tym blogu).

Podsumowując konferencję oceniam na 5! Świetna organizacja, wysoki poziom i rewelacyjna atmosfera, za które należą się Leszkowi Gruchale i Pawłowi Stawickiemu gorące podziękowania! To była moja pierwsza konferencja w życiu, ale dzięki java4people nie będzie ona ostatnia. Już teraz nie mogę się doczekać CooLuarów w Gdańsku 23-24 Maja. Poniżej moja galeria z wyjazdu, a pod nią strona konferencji, na której znajduje się jeszcze jedna galeria i materiały z prelekcji.



Garść linków:
Pozdrawiam, Smok!

poniedziałek, 13 kwietnia 2009

google-code-prettify

Witam ponownie!

Drugi wpis na blogu miał być o java4people - konferencji o tematyce Java w Szczecinie. Jednak nim to nastąpi należy przystosować bloga do celów programistycznych.

Wiadomym jest, że bez pisania programów człowiek nie nauczy się programowania. A przy pisaniu programów powstaje sporo kodu źródłowego, który należy poprawnie sformatować również na stronie, która go opisuje. W tym celu wykorzystam wspomniany w tytule google-code-prettify. Jest to moduł javascriptowy pozwalający, który kod umieszczony między znacznikami lub automatycznie formatuje tak, by był czytelny i łatwy do skopiowania do naszego IDE. Nie będę opisywał dokładniej instalacji (w tym celu podałem dwa linki poniżej), pokaże jedynie jak to działa w praktyce:

Kod bez żadnego formatowania poza spacjami/tabulacjami:

import java.util.*;

public class HelloWorld {
public static void main(String[] args) {
System.out.println("Witaj świecie. Dzisiaj jest: ");
}
}


Używając google-code-prettify i znacznika pre:

import java.util.*;

public class HelloWorld {
public static void main(String[] args) {
System.out.println("Witaj świecie. Dzisiaj jest: ");
}
}


Przy okazji testowania tego skryptu doszedłem do wniosku, że może ten styl bloga (jego szata graficzna) nie jest najodpowiedniejsza do przedstawiania kodów źródłowych (kolorowanie składni). Możliwe, że będzie to zmienione jeszcze przed następnym postem (tym razem napewno o java4people).

A oto obiecane linki:
Pozdrawiam, Smok!

Edit: Po dalszych testach skryptu udało się uzyskać odpowiednie kolorowanie składni. Problem leżał w kodzie html Bloggera.

niedziela, 12 kwietnia 2009

Początki

Witam.

Podobno początki zawsze są trudne i w tym przypadku nie jest inaczej. Długo się zbierałem, żeby rozpocząć w ogóle pisanie tego bloga. Pomysł jak zawsze jest, możliwości są, ale czego brak? Brak czasu, wiary w siebie, determinacji. Ale skoro już to piszę, to znaczy, że jest nieźle.

Należało by się przedstawić - nazywam się Łukasz i jestem 21 letnim studentem drugiego roku Informatyki Stosowanej na Politechnice Gdańskiej. Informatyka jest moim głównym hobby, choć nie jedynym, ale nie będę się zbytnio rozgadywać na ten temat w tym momencie.

A więc o czym będzie ten blog? Jestem początkowym programistą Javy i swoją drogę z tym językiem programowania chciałbym opisać na tym blogu. Po co? Bo wiem, że często szuka się rozwiązań na najprostsze problemy, ale trudno je znaleźć, bo ludzie takich rzeczy często nie publikują w internecie, sądząc, że to zbyt proste. Ja uważam, że nie ma rzeczy zbyt prostych.

No tak, ale wielu się pewnie podrapie po głowie i zdziwi, że skoro jestem na 2 roku studiów informatycznych, to dlaczego dopiero teraz uczę się Javy i to w dodatku od podstaw? Otóż na moich studiach Jave ma się dopiero na 3 roku, wcześniej (w kolejności) C, C++ i C#. Do tego ostatniego nie jestem przekonany, C dosyć długo wałkowałem i coś w nim umiem, ale szaleństw nie ma jak to mówią, a na uczelni jesteśmy teraz na etapie C++. Przerabiamy teraz przedmiot Metody Numeryczne, na który potrzebowałem dosyć prostego języka programowania, zorientowanego obiektowo, którego IDE (ang. Integrated Development Environment - zintegrowane środowisko programistyczne) przy tworzeniu GUI (ang. Graphic User Interface - graficzny interfejs użytkownika) jest łatwe i intuicyjne. Dodatkowo za Javą przemawiało to, że jest multiplatformowa (nieważne na jakiej konfiguracji sprzętowej, nie ważne na jakim systemie operacyjnym chcemy uruchomić program, tak długo jak jest tam zainstalowana Wirtualna Maszyna - ang. Virual Machine VM).

Ale nie jest to jedyny powód. Są jeszcze dwa:
1) Szwagier, który jest od lat informatykiem, jakiś czas temu zdał egzaminy na Sun Certified Java Developer (SCJD)
2) Konferencja java4people, ale o niej w następnym poście.

Trochę się rozpisałem, nawet chyba trochę za dużo jak na pierwszy raz. Jeszcze dzisiaj powinien się pojawić jeszcze jeden post, w którym w skrócie opiszę konferencję java4people i jej wpływ na mnie.

Garść linków:

Pozdrawiam, Smok!