Myśli, porady, tutoriale na temat środowiska Eclipse (i nie tylko)...

czwartek, 31 lipca 2008

Kurs podstawowy, część I

W zeszłym roku miałem przyjemność prowadzić zajęcia ze studentami. Podczas zajęć studenci korzystali głównie z Eclipse'a do wykonywania swoich zadań związanych z kodem. Okazało się jednak, że to co dla mnie jest zaletą Eclipse'a - liczba funkcji i możliwości jakie daje, dla osób, które wcześniej nie miały z Eclipsem do czynienia, była wadą, gdyż nie potrafili oni odnaleźć się w tym środowisku. Postanowiłem zatem stworzyć pewien przewodnik, który pomógłby początkującym użytkownikom Eclipse'a ogarnąć jego możliwości i spokojnie zacząć pracę. Doszedłem do wniosku, że nagranie filmów wideo będzie najszybszym i najprostszym sposobem przedstawienia tych informacji, ale jeśli znajdę troche dodatkowego czasu, to zrobię też wersję statyczną.
Jeśli będziecie mieli jakieś uwagi, albo pomysły, o czym warto powiedzieć początkującym użytkownikom Eclipse'a, to czekam na komentarze.

Dzisiaj pierwsza cześć kursu - ściągniemy i uruchomimy Eclipse'a po raz pierwszy.

Kurs Podstawowy I - ściąganie i pierwsze uruchomienie from Jakub Jurkiewicz on Vimeo.

Część druga jest TU.

Mylyn na żywo (po polsku i angielsku)

Jednym z najczęściej czytanych postów na blogu są te, które dotyczą Mylyna. Postanowiłem zatem pokazać Wam "na żywo" w jaki sposób korzystać w podstawowej funkcjonalności jakie daje nam ten projekt. Poniżej znajdziecie wideo - niestety jakość nie jest najlepsza, jeśli więc znacie jakiś dobry sposób, żeby umieścić w sieci filmy w dobrej jakości to proszę dajcie znać.


Mylyn w praktyce from Jakub Jurkiewicz on Vimeo.

Dzisiaj znalazłem też świetna prezentację głównego twórcy Mylyna. Myślę, że warto na tę prezentację spojrzeć, nawet jeśli korzystacie już z tego narzędzia - ja sam dowiedziałem sie o kilku funkcjach, o których do tej pory nie miałem pojęcia.

środa, 16 lipca 2008

Widok "Display" - po co, jak i dlaczego?

Wczoraj pisałem trochę o warunkowych punktach wstrzymań, zostańmy jeszcze chwilę w tematyce szukania błędów w naszym kodzie. Chciałem Wam dzisiaj pokazać w jaki sposób można wykorzystać mało znany widok Display. Poniżej znajduje się krótki film, w którym staram się zaprezentować możliwości tego widoku. Co prawda jakość nie jest porywająca, ale mam nadzieję, że da się oglądać.


Widok "Display" - po co, jak i dlaczego? from Jakub Jurkiewicz on Vimeo.

wtorek, 15 lipca 2008

Warunkowe punkty wstrzymań

Każdy programista wcześniej, czy później staje przed koniecznością skorzystania z opcji debug w swoim ulubionym narzędziu. Pewnie nie raz już analizowaliście w ten sposób swój kod w Eclipsie, ciekaw jednak jestem, czy jesteście w pełni świadomi jakie możliwości niesie ze sobą mechanizm odpluskwiania (ang. debugging) w Eclipsie? Jedną z najciekawszych opcji jest możliwość tworzenia warunkowych punktów wstrzymań (ang. breakpoint). Wyobraźmy sobie, że w naszym kodzie mamy pętlę,w której przeglądamy 1000 obiektów i wiemy, że błąd występuje tylko dla obiektów o określonej wartości...czy będziemy 900 razy klikali Resume, aby w końcu zatrzymać się w odpowiednim miejscu? czy może chwilowo wstawimy instrukcję warunkową, która pozwoli nam się zatrzymać, znajdziemy błąd, a potem...zapomnimy tę instrukcję usunąć? Na pomoc przychodzi nam Eclipse! Jeśli klikniemy na punkcie wstrzymań prawym klawiszem myszy (na pasku edytora Javy, lub w widoku Breakpoints)


i wybierzemy opcję Breakpoint Properties..., zobaczymy, że ostnieje sekcja Enable Condition.


W polu edycji dostępny jest asystent kodu (ang. code assist), więc bez problemu możemy korzystać ze skrótu Ctrl+Spacja i odwoływać się do obiektów i metod dostępnych w kodzie, w zasięgu danego punktu wstrzymań. Po dodaniu warunku:

zauważymy, że nasz punkt wstrzymać wygląda teraz trochę inaczej:
Jeśli przyjrzymy się uważniej sekcji pozwalającej definiować warunek dla punktu wstrzymać, zauważymy tam dwie opcje:

  • condition is 'true' - punkt wstrzymań zatrzyma się, jeśli podany przez nas warunek przyjmie wartość prawdziwą
  • value of condition changes - punkt wstrzymań zatrzyma się, jeśli podany przez nas warunek zmieni swoją wartość z "prawda" na "fałsz" lub na odwrót
Jeśli po raz pierwszy zaglądacie do właściwości punktów wstrzymań, to pewnie zauważyliście również inne opcje...o nich jednak napiszę innym razem.

poniedziałek, 14 lipca 2008

Zasady tworzenia interfejsu użytkownika dla wtyczek

W zeszłym tygodniu po raz kolejny wpadłem na zestaw zasad tworzenia interfejsu użytkownika dla wtyczek do Eclipse'a. Ostatnio jednak znalazłem wersję uaktualnioną, na którą warto spojrzeć nawet jeśli znacie tę pierwotną wersję. Jeśli tworzycie rozszerzenia, to warto zapoznać się z tym dokumentem, aby tworzony przez Was interfejs był przyjazny i zgodny z zasadami, jakimi kierują się twórcy Eclipse'a.

wtorek, 8 lipca 2008

IBM Rational Team Concert, czyli programowanie w jazzowych klimatach

Jakiś czas temu pisałem, że IBM otwiera swoją nową platformę Jazz dla wszystkich chętnych.

Była to wówczas wersja beta, od prawie dwóch tygodni dostępna jest już oficjalna wersja tej platformy oraz pierwszego narzędzia, które z niej korzysta, czyli IBM Rational Team Concert (RTC). Ciągle jednak każdy może osobiście wypróbować Jazza, gdyż dostępna jest wersja darmowa Express-C.


Zacznijmy może jednak od możliwości jakie dają nam Jazz oraz RTC. Czym jest sam Jazz? Jest to platforma wspomagająca zespoły programistyczne w realizacji projektów. Jazz skupia się na małych i średnich zespołach wykorzystujących zwinne metodyki, ale jego możliwości pozwalają również na zastosowania w innych warunkach. Najważniejsza funkcjonalność to:

  • Zarządzanie procesem
    W momencie definiowania nowego projektu możemy określić, czy chcemy korzystać z jednego z predefiniowanych procesów - do wyboru mamy Eclipse Way, OpenUp, Scrum, Agile Process oraz Simple Team Process (a także Cloudburst Sample Process, który służy wyłącznie do celów edukacyjnych). Po wyborze procesu możemy ten proces dostosować jak tylko nam sie to podoba. Oprócz takich rzeczy jak liczba kamienii milowych (ang. milestones), iteracji (ang. iterations), możemy definiować w jaki sposób ma się odbywać rozwój oprogramowania w poszczególnych fazach, np. możemy określić, że w czasie tzw. gry końcowej (ang. end game) każda zmiana kodu w repozytorium wymaga zatwierdzenia przez kierownika. Możemy określać kto może wykonywać poszczególne czynności w czasie trwania projektu, które czynności sa zabronione, a które wymagają zatwierdzenia. Możemy również definiować dodatkowe ograniczenia, np. że każda zmiana wprowadzana do repozytorium musi mieć przyporządkowaną jednostkę pracy (ang. work item).
  • Użytkownicy i zespoły
    W ramach naszego projektu definiujemy użytkowników oraz role jakie każdy z nich pełni (role te potem mają odzwierciedlenie przy precyzowaniu procesu). Użytkownicy mogą być podzieleni na zespoły, np. możemy mieć zespół zajmujący się interfejsem użytkownika, inny od komunikacji z bazą danych, a jeszcze inny od logiki biznesowej. Każdy zespół może definiować swoje własne procesy, według których chce podążać - można oczywiście też narzucić zespołom pewne wytyczne, których nie będzie można zmienić.
    Co więcej, RTC znacznie ułatwia pracę zespołów rozproszonych - zespoły takie nie są już traktowane jako coś wyjątkowego, ale jako normalność. Jakie ułatwienia znajdziemy w RTC? Chociażby możliwość integracji Jabbera, możliwość podglądu, kto w zespole nad czym pracuje, jak wygląda jego/jej obciążenie, jest również system powiadomień o zmianach (np. że ktoś właśnie dodał coś do repozytorium, albo że jakiś build sie nie powiódł). Wszystko to jest widoczne w specjalnym widoku Team Central, który daje nam podgląd na to co się dzieje w zespole.
  • Kontrola wersji
    Jazz oferuje własny system kontroli wersji (ang. version control system). Oprócz podstawowej funkcjonalności umożliwia on m.in. wstrzymywanie zmian (ang. suspend) - wyobraźmy sobie sytuację, gdy pracujemy nad nowa funkcjonalnością, nagle dzwoni to nas kierownik projektu, że klient odkrył krytyczny błąd, który musi być natychmiast naprawiony (bo inaczej oczywiście klient zrezygnuje z naszego produktu). Kierownik oczywiście nie zrozumie, że chcielibyśmy najpierw dokończyć to co robimy aktualnie, zapisać zmiany do repozytorium i dopiero później możemy się zająć błędem. Jazz daje nam możliwość wstrzymania zmian (stan naszego kodu wróci do ostatniego pobranego z repozytorium), wprowadzenia poprawek do starego kodu, zapisanie zmian do repozytorium oraz późniejszy prosty powrót do wprowadzonych przez nas wcześniej już zmian. Dodatkowo dzięki kilku poziomom, na których trzymany jest kod, możemy dzielić się swoja praca z innymi członkami zespołu bez potrzeby zapisywania naszych zmian do centralnego repozytorium, np. jeśli chcemy aby ktoś nam pomógł w znalezieniu błędu. Trzeba też dodać, że wszystkie zmiany zapisywane do repozytorium łączone są w zbiory zmian (ang. change sets), które później mogą być dołączane do różnych artefaktów (np. do jednostek pracy, buildów, itp.) oraz w prosty sposób przeglądane i cofane w razie potrzeby.
    Nasz kod możemy podzelic na komponenty, aby w łatwy spssób wydzielać kod, który później może być reużywany. Możemy tez tworzyć tzw. zrzuty (ang. snapshots) naszego kodu, do kórych możemy później w prosty sposób powracać.
  • Jednostki pracy, czyli zarządzanie zadaniami
    Jazz jako zadanie traktuje tzw. jednostki pracy (ang. work items), które mogą być odpowiednio dostosowywane do naszych potrzeb (jest to powiązane z zarządzaniem procesem), np. możemy określić jakie rodzaje jednostek pracy są nam potrzebne (np. defekt, nowa funkcjonalność, itp.), w jakich stanach może się znaleźć jednostka pracy (np. otwarty, zamknięty, naprawiony, itp.) oraz kiedy może byc wprowadzona zmiana stanu (np. możemy zdefiniować, że ze stanu naprawiony jednostka pracy może przejśc w stan ponownie otwarty, ale już nie w stan nowy). Możemy też definiować własne zapytania (ang. query) o jednostki pracy, które możemy zapisywać i współdzielić z całym zespołem. W ramach jednostek pracy mogą odbywać się dyskusje, mogą do nich być dołączane inne artefakty (np. zbiory zmian, wyniki buildów, linki, itp.). Jednostki pracy są również traktowane jako elementy podstawowe przy planowaniu kolejnych iteracji oraz przy szacowaniu obciążenia użytkowników.
  • Mechanizm budowania
    Dostępny jest również mechanizm budowania (ang. build) rozwijanych aplikacji (możemy w tym celu wykorzystać popularne narzędzie jak ANT, czy Maven), którego integracja z resztą RTC pozwala na proste wywoływania nowych żądań budowania, wyświetlanie wyników oraz na powiadamiania o wynikach.
  • Raportowanie
    Dzięki RTC (oraz wbudowanemu Birtowi) w łatwy sposób możemy generować raporty dotyczące naszego projektu.
Jeśli chodzi o architekturę to RTC składa się z dwóch podstawowych elementów - z serwera oraz klienta. Serwer do swojego działania wymaga bazy danych (domyślnie dostarczona jest darmowa baza danych Derby, można jednak korzystac równiez z DB2 oraz Oracle'a) oraz serwera aplikacji (domyślnie dostępny jest Tomcat, możemy jednak wykorzystać też Websphere'a). Jako ciekawostkę eclipsową mogę dodać, że serwer zbudowany jest z pomocą Equinoxa. Klient RTC to Eclipse ze zbiorem wtyczek (można zainstalować RTC jako aplikacje RCP, lub też skorzystać z możliwości wykorzystania istniejącej instancji Eclipse'a - sprawdziłem, działa na Eclipse Ganymede). Dodatkowo oprócz klienta desktopowego mamy możliwość dostepu przez interfejs webowy, pełen Ajaxa, bardzo przyjemny i intuicyjny.

IBM Rational Team Concert jest w chwili obecnej dostępny w trzech wersjach:
  • darmowej Express-C
  • oraz dwóch płatnych Express i Standard.
Wersja Express-C dostępna jest w postaci spakowanych plików zip, które wystarczy rozpakować, następnie uruchomić serwer odpowiednim skyrptem (plik startup.bat dla Windowsa oraz startup.sh dla Linuksa), później zostaje jeszcze uruchomić klienta. W przypadku wersji płatnych do instalacji wykorzystywany jest IBM Instalation Manager, który wszystko zanstaluje i pozwalo na proste uruchamianie serwera oraz klienta (możemy dodatkowo zainstalować sobie bazę danych DB2 Express, z którą może pracować nas serwer).

Trzeba przyznać, że już teraz RTC może się pochwalić bardzo wysoka jakością. Bierze sie to chyba stąd, że samo RTC było rozwijane za pomocą RTC, więc błędy były rozwiązywane na bieżąco.

Jazz oraz RTC to nie tylko narzędzie, ale też już spora społeczność. Na forum, które znajdziecie na oficjalnej stronie Jazza na pytania odpowiadają inni użytkownicy, a także programiści Jazza. Na tej samej stronie znajdziecie też materiały szkoleniowe, tutoriale oraz porady w jaki sposób wykorzystac Jazza oraz RTC w 100%.

Z tego co ostatnio ogłosił IBM Rational na IBM Rational Software Developement Conference, to wszystkie jego narzędzia będę wcześniej czy później zintegrowane z Jazzem, aby móc maksymalnie wykorzystywać jego możliwości oraz aby stworzyć pełną zintegrowana platformę do wytwarzania oprogramowania.

Pewnie dość nieudolnie udało mi się opisać funkcjonalność, które niosą ze sobą Jazz oraz IBM Rational Team Concert, dlatego też zachęcam do ściągnięcia darmowej wersji Express-C lub próbnej wersji Standard oraz wypróbowania tego wszystkiego o czym pisałem a także tego, o czym zapomniałem napisać!

wtorek, 1 lipca 2008

Szkoła Letnia Eclipse 2008 - rejestracja rozpoczęta!

Jako jeden z organizatorów zapraszam Was serdecznie na Szkołę Letnią Eclipse 2008. Całe wydarzenie odbędzie się w laboratoriach Politechniki Poznańskiej w dniach 22 - 26 września. O co chodzi? W kilku słowach...będzie to trzecia edycja szkolenia, które organizujemy dla studentów II roku informatyki na Politechnice Poznańskiej, od zeszłego roku jednak szkolenie jest otwarte również dla osób spoza PP, zapraszamy więc wszystkich chętnych! W ciągu pięciu dni eksperci od Eclipse'a będą pokazywać jak budować wtyczki oraz jak stworzyć własną aplikację RCP. Dowiecie się także szczegółów na temat EMF'a, RAP'a, OSGi oraz innych technologii około eclipsowych (więcej szczegółów w Programie). Szkolenie ma postać wykładów przeplatanych laboratoriami (ok. 15 minut prezentacji, a później ćwiczenie tego, co zostało zaprezenotwane), więc na pewno nie będziecie sie nudzić! Jeśli macie ochotę to zapraszamy do rejestracji (liczba miejsc jest ograniczona) i do zobaczenia we wrześniu!