ś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ę!