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

wtorek, 30 października 2007

Barcamp i Eclipse w Poznaniu!

Spotkasz mnie na Barcamp PoznańDzisiaj dotarła do mnie wiadomość, że Łukasz Olek (doktorant na Politechnice Poznańskiej i jednocześnie szef Eclipse Support Center) będzie miał prezentację związaną (mniej lub bardziej) z Eclipsem na najbliższym poznańskim Barcampie 10 listopada. Spotkanie zaczyna się o godzinie 13:00 w klubie Johny Rocker. Myślę, że będzie ciekawie, więc zapraszam na spotkanie :)

niedziela, 28 października 2007

Programowanie zadaniowe, czyli czym jest Mylyn? (Część II)

We wcześniejszym wpisie pzedstawiłem podstawowe mechanizmy tworzenia i wyszukiwania zadań, więc teraz pora zabrać się za pracę z zadaniami. Po wybraniu zadania, nad którym chcemy pracować w otwartym edyotrze tego zadania klikamy przycisk Activate (ostatnia ikonka po prawej stronie u góry na zakładce Overview – rysunek niżej).

lub też w widoku Task List klikamy tutaj:

Jest też opcja, żeby w tym samym widoku kliknąć Activate i w nowym oknie wybrać interesujące nas zadanie wpisując jego nazwę:

Po aktywacji zadania zauważymy, że niektóre elementy interfejsu użytkownika zmieniły swoją zawartość, a niektóre wręcz stały się puste (np. widok Package Explorer). Czemu? Zaczął działać kontekst, a ponieważ wcześniej nie pracowaliśmy nad tym zadaniem, więc kontekst jest pusty. Co w takiej sytacji zrobić? Najłatwiej jest chwilowo zrezygnować z funkcjonalności jaką daje nam kontekst, pozwolić Mylynowi zebrać potrzebne informacje, a później wrócić do kontesktu, aby łatwiej i szybciej pracować. Do włączania i wyłączania kontekstu służy przycisk:

Przycisk ten wyłącza korzystanie z kontekstu w danym widoku (np. w widokach Package Explorer, Outline, itp.). Po chwili pracy możemy wrócić do kontesktu i zobaczymy, że widoki wypełniły się informacjami związanymi z naszym zadaniem (poniżejprzykład widoku Package Explorer).

Jeśli teraz otworzymy sobie nasze zadanie w edytorze i przejdziemy na zakładkę Context to zobaczymy, że zakładka ta wypełniła się informacjami na temat naszego kontekstu:

Za pomocą zaznaczonego powyżej suwaka możemy wpływać na czułość naszego kontekstu, czyli na ilość elementów w nim przechowywanych. Dodatkowo za pomocą opcji znajdujących się pod suwakiem możemy:
  • dołączyć obecny kontekt do zadania znajdującego się w repozytorium (tak aby inny programista mógł z niego skorzystać) – opcja Attach context...
  • pobrać kontekst dołączony do repozytorium zadań – opcja Retrieve Context...
  • skopiować obecny kontekst do innego zadania – opcja Copy Context to...

Oczywiście po wykonaniu zadania oznaczamy je jako zakończone (w przypadku pracy z Bugzillą na zakładce Bugzilla zaznaczamy Resolve as Fixed).

Podczas pracy z Mylynem natrafimy pewnie na sporo ikon, które mogą być dla nas niezrozumiałe – z myślą o tym twórcy Mylyna przygotowali zestaw ikon wraz z wyjaśnieniem, która ikona co oznacza. Legenda dostępna jest z menu widoku Task List:

A sama legenda wygląda tak:

To chyba najważniejsze kwestie związane z pracą z Mylynem. Ja osobiście zdecydowanie polecam to narzędzie – sami się przekonacie jak bardzo potrafi ono przyspieszyć Waszą pracę i pomóc w pracy zespołowej.

wtorek, 23 października 2007

Zostawcie myszki w spokoju! (czyli o skrótach klawiszowych w Eclipsie)

Chyba każdy programista w swoim życiu zawodowym zaczyna doceniać skróty klawiszowe oferowane przez środowisko, w którym pracuje. A w pewnym momencie trudno jest bez tych skrótów klawiszowych się obejść i gdy przychodzi moment, że trzeba zacząć pisać w innym środowisku to czujemy się jak bez ręki. Dlatego też dzisiaj chciałem się z Wami podzielić skrótami klawiszowymi, z których najczęściej korzystam podczas pracy w Eclipsie.

1) Ctrl+3 - skrót wprowadzony w Eclipse 3.3, który znacznie zmienia sposób pracy w Eclipsem! Wypróbujcie go sami, a zaczniecie się zastanawiać, czemu wcześniej nikt czegoś takiego nie wymyślił?! ;) Co daje nam ten skrót? Po wciśnięciu Ctrl+3 pojawia nam sie żółte okienko, które pozwala nam na szybki dostęp do perspektyw, widoków, komend, preferencji itp. - wystarczy tylko zacząć wpisywać hasło związane z tym co chcemy zrobić. Poniżej przedstawiam zrzuty ekranu pokazujące jak mniej więcej to działa:

















Próbowałem nawet wrzucić kawałek filmiku pokazującego, jak to działa w praktyce, ale coś z jakością kiepsko wyszło. No ale jeśli ktoś chce spojrzeć to proszę bardzo (ale żeby nie mówić potem, że nie ostrzegałem;) ):


2) Ctrl+Shift+F pozwala na szybkie formatowanie naszego kodu. Wiadomo, że trzymanie się ogólnie przyjętych standardów kodowania (lub też takich przyjętych w firmie, w której pracujemy) pomaga pisać kod łatwiejszy do analizy i do zrozumienia. Eclipse za pomoca skrótu Ctrl+Shift+F pozwala szybko sformatować kod zgodnie ze zdefiniowanym przez nas standardem kodowania. Oto przykład (po lewej przed formatowaniem, po prawej po zastosowaniu skrótu):










3) Ctrl+Shift+O - pewnie nie raz zdarza nam się, że w klasie mamy niepotrzebnie importowane klasy, w końcu nie chce nam się linijka po linijce kasować importów, prawda? Programiści Eclipse'a pomyśleli o tym i dlatego oddali w nasze ręce skrót Ctrl+shift+O, który usuwa nie używane importy,a także dodaje te których nam brakuje (w przypadku niejednoznaczności zapyta nam się, którą klasę chcemy zaimportować).

4) Ctrl+/ - czy nie byłoby pięknie jednym skrótem zakomentować większy fragment kodu? W Eclipsie jest to proste - wystarczy zaznaczyć wybrany fragment kodu i wcisnąć Ctrl+/. Co jeśli chcemy potem ten fragment kodu odkomentować? Wystarczy tę samą operację powtórzyć.

5) Ctrl+Shift+T - czasami chcemy zobaczyć jak wygląda jakaś klasa, znamy jej nazwę, ale nie do końca wiemy w jakim pakiecie się znajduje, co wtedy? Wciskamy Ctrl+Shift+T i w nowym oknie wpisujemy nazwę żądanej przez nas klasy i wciskamy enter - otworzy się edytor z podaną przez nam klasą.


6) Ctrl+1 - tzw. "quick fix". W edytorach Eclipse'a często możemy spotkać małe żaróweczki wskazujące nam ostrzeżenia lub błędy - jeśli umieścimy nasz kursor na linii, przy której pojawiła się żarówka, i wciśniemy Ctrl+1 pokaże nam się okienko z podpowiedzią co możemy zrobić aby naprawić błąd.

7) Ctrl+PgUp oraz Ctrl+PgDn - pozwalają w łatwy sposób przemieszczać się między otwartymi edytorami

8) Alt+Lewo oraz Alt+Prawo - pozwalają przemieszczać się między tymi miejscami w edytorach, które były ostatnio zmieniane

9) Alt+Góra oraz Alt+Dół - pozwalają przenosić dowolną linijkę kodu (lub cały blok, który zaznaczymy) w górę lub w dół

10) F4 - wyświetla hierarchię wskazanego przez nas typu (wystarczy umieścić kursor w edytorze na wybranym przez nas typie)

To tyle na dzisiaj, kolejna dziesiątka pewnie za kilka dni się pojawi :)

Osoby, które już teraz chciałyby przyjrzeć się dostępnym skrótom i/lub je przedefiniować mogę spojrzeć do preferencji Eclipse'a na zakładkę General->Keys:

niedziela, 21 października 2007

Programowanie zadaniowe, czyli czym jest Mylyn? (Część I)

Razem z pojawieniem się Eclipse’a w wersji 3.3 do projektów związanych z tym wydaniem (zwanym Europa) został włączony Mylyn (wcześniej znany jako Mylar – nazwa została zmieniona z powodów możliwych problemów z prawami autorskimi). Projekt ten chwali się, że dzięki jego pomocy będziemy programować z szybkością myśli! Czym jest Mylyn i czemu tak wiele osób się nim zachwyca (wystarczy popatrzeć na blogi osób piszących o Eclipsie – w prawie każdym z nich znajdziecie wzmiankę o Mylynie)? Mylyn zmienia sposób pracy nad kodem:

  • po pierwsze dostarcza integrację z popularnymi systemami zarządzania zadaniami (takimi jak: Trac, Jira, Bugzilla...). Dodatkowo Mylyn potrafi synchronizować się w tle i na bieżąco informować nas o zmianach dokonanych w interesujących nas zadaniach.
  • po drugie (i ważniejsze!) wprowadza koncepcję „kontekstu” w stosunku do pracy nad projektem. Mylyn na bieżąco obserwuje naszą pracę i na tej podstawie filtruje widoki dostępne w Eclipse i wyświetla tylko te informację z których korzystamy. Dzięki temu nie musimy za każdym razem przebijać się przez dziesiątki projektów, setki plików i tysiące metod, zamiast tego widzimy tylko to nad czym pracujemy. Co ciekawsze zebrany automatycznie przez Mylyna kontekst możemy przekazać innej osobie, aby ułatwić jej pracę nad zadaniem (dzięki temu ta osoba będzie wiedziała, którymi fragmentami kodu trzeba się zająć).

Jak zacząć pracę z Mylynem? Trzeba rozpocząc od jego instalacji, np. za pomocą update managera (tutaj znajdują się adresu stron z aktualizacjami – ang. update site). Po zainstalowaniu wszystkich wtyczek możemy rozpoczą pracę z Mylynem. Jeśli w naszej pracy stosujemy system do zarządzania zadaniami to najlepiej od razu podłączyć się do niego. W widoku Task Repositories (żeby go otworzyć klikamy Window->Show View->Other->Mylyn->Task Repositories) na wolnej przestrzeni klikamy prawym przyciskiem i wybieramy opcję Add Task Repository, a następnie podajemy wszystkie potrzebne informacje.

Od tej chwili możemy tworzyć zadania, które automatycznie będą dodawane do naszego zewnętrznego systemu zadań. Oczywiście jeśli nie korzystamy z żadnego systemu to możemy tworzyć zadania lokalne.

Aby tworzyć nowe zadanie klikamy na wybranym repozytorium prawym przyciskiem i wybieramy opcję New Task.

Po kliknięciu otworzy sie edytor umożliwiający wypełenienie właściwości nowego zadania.

W zależności od tego, czy jest to zadanie lokalne, czy zdalne zakładki na dole edytora mogą się od siebie różnić i mieć inną zawartość. Wspólne zakładki to Planning oraz Context. Ta druga jest szczególnie interesująco, bo pozwala sprawdzić co znajduje się aktualnie w kontekście, zapisać kontekst, a także zmienić ilość elementów znajdujących się w nim.

Oczywiście możemy też wyszukiwać zadania, które znajdują się na serwerze. W tym celu tworzymy zapytania (ang. query) – klikamy prawym przyciskiem myszy na interesującym nas repozytorium zadań i wybieramy opcję New Query.

Zapytani możemy tworzyć w oparciu o specjalnie przygotowany formularz, lub tez na podstawie adresu URL, w którym znajdują się parametry wyszukiwania.

Po zakończeniu pracy z kreatorem nowego zapytania w widoku Task List w odpowiedniej kategorii (nazwie naszego zapytania) pojawi się lista zapytań odpowiadających naszym kryteriom. Zadania możemy oczywiście otwierać (klikając na nich dwukrotnie), przeglądać oraz zmieniać ich właściwości.

Wiemy już jak łączyć się z repozytoriami zadań, jak tworzyć nowe zadania oraz jak wyszukiwać zadania już istniejące. W kolejnym wpisie postaram się opisać jak pracować z zadaniami oraz jak korzystać z kontekstu.

środa, 17 października 2007

RCP w 5 minut (Część II)

W poniedziałkowym wpisie pokazałem jak w prosty sposób stworzyć przykładową aplikację RCP oraz w jaki sposób ją potem uruchomić. Dziś pójdziemy kawałek dalej i wyeksportujemy nasz projekt jako pełnowartościowy produkt.

Zaczniemy od stworzenia definicji produktu. Klikamy File->New->Other->Product Configuration, podajemy nazwę naszego pliku (np. rcp.product), wskazujemy nasz projekt i klikamy Finish.

W naszym projekcie powinien pokazać się nowy plik. Jeśli nie został otworzony automatycznie w edytorze, to otwieramy go dwukrotnie na nim klikając (otworzy nam sie specjalny edytor).

Na zakładce Overview możemy podać nazwę produktu (Product Name), np Moja aplikacja RCP, wybieramy aplikację, którą chcemy aby była uruchamiana (podobnie jak to miało miejsce przy nowej konfiguracji uruchamiania, którą tworzyliśmy w poprzedniej części) – wybieramy z listy nazwę naszej wtyczki plus słówko application na końcu (w moim przypadku jest to com.blogspot.eclipse-po-polsku.example.rcp.application). Musimy również zdefiniować Product ID – wybieramy naszą wtyczkę.

Na zakładce Configuration specyfikujemy jakie wtyczki będą składały się na nasz produkt. Oczywiście podajemy tutaj naszą wtyczkę – klikamy przycisk Add i z listy wybieramy nazwę naszego pluginu (w moim przypadku com.blogspot.eclipse-po-polsku.example.rcp), a następnie dodajemy wszystkie pluginy od których zależy nasza wtyczka. Nie musimy tego robić ręcznie, wystarczy kliknąć przycisk Add Required Plug-ins i wszystkie wymagane pluginy zostaną wykryte i dodane automatycznie.

Zakładka Launching pozwala nam zdefiniować jaka maszyna wirtualna będzie używana, jakie argumenty mają być podawana przy starcie naszej aplikacji, a także jak będzie się nazywał nasz plik uruchomieniowy oraz jaką będzie miał ikonkę. Możemy dla sprawdzenia podać jakąś swoją nazwę, np. moje_rcp.

Jeśli chcemy, aby nasza aplikacja miała swój własny splashscreen to powinniśmy do naszego pluginu wgrać plik o nazwie splash.bmp, a nazwę pluginu podać na zakładce Splash. Jeśli na naszą aplikację składa się wiele wtyczek, wówczas wystarczy w jednej z nich umieścić nasz plik ze spashscreenem, a nazwę tej wtyczki podać właśnie na tej zakładce.

Zakładka Branding pozwala jeszcze lepiej dostosować wygląd naszej aplikacji – możemy podać ikonki, które się będą pojawiały, zmienić tekst oraz obraz wyświetlający się w okienku About aplikacji oraz wyspecyfikować co ma się pojawiać jako tzw. Welcome page, czyli coś jak intro dla naszej aplikacji (mamy z tym do czynienia, gdy po raz pierwszy uruchamiamy Eclipse’a lub gdy uruchamiamy go z nowym workspace’m) – postaram się poświęcić temu, któryś z kolejnych wpisów.

Możemy teraz bez problemu wyeksportować naszą aplikację. Na zakładce Overview odnajdujemy link Eclipse Product export wizard i klikamy na niego.

W nowym okienku podajmy nazwę katalogu, w którym pojawią się pliki naszej aplikacji (Root directory) oraz katalog, do którego aplikacja będzie wyeksportowana (Directory). Jeśli chcemy możemy też dołączyć kod źródłowy naszej aplikacji (opcja Include source code). Klikamy Finish i czekamy aż nasza aplikacja zostanie wyeksportowana.
W podanym przez nas katalogu powinny pojawić się pliki i katalogi naszej aplikacji:

Klikamy na pliku uruchomieniowym (w moi przypadku moje_rcp.exe) i nasza aplikacja powinna zostać uruchomiona.

Możemy teraz sprawdzić ile zasobów zajmuje nasza aplikacja: 13,3 MB na dysku oraz 35,5 MB pamięci RAM, co chyba daje niezły wynik biorą pod uwagę, że sporo funkcjonalności mamy „za darmo”.
Możecie się zastanawiać, co w przypadku jeśli chcemy wyeksportować naszą aplikację na inne platformy niż ta, na której aktualnie pracujemy? Wystarczy zainstalować sobie RCP delta pack i bez problemu możemy eksportować naszą aplikację również na inne platformy.

To tyle na dzisiaj. Jeśli macie jakieś pytania lub wątpliwości to pytajcie.

Prezentacja z JUGa

Na stronie poznańskiego JUGa możecie znaleźć moją poniedziałkową prezentację pod tytułem "Eclipse RCP, czyli jak bez trudu stworzyć aplikację desktopową?".

poniedziałek, 15 października 2007

RCP w 5 minut (Część I)

Postanowiłem jeszcze przed prezentacją pokazać Wam jak w prosty sposób stworzyć testową aplikację RCP, żebyście mogli sami zobaczyć jakie to proste i co tak naprawde możemy zrobić z Eclipse RCP.
Ktoś może się zastanawiać czym jest Eclipse RCP? Postaram się dziś umieścić prezentację, która powinna to zagadnienie rozjaśnić :-)

Na początek uruchamiamy Eclipse'a i tworzymy nowy projekt plug-in, czyli klikamy New->Plug-in Project, otworzy nam się kreator tworzenia nowej wtyczki (ang. plug-in). Podajemy nazwę i klikamy Next.

Na drugiej stronie podajemy informacje o nazwie, dostawcy, itp (albo zostawiamy wartości domyślne). Ważniejsze jest, żeby na samym dole zaznaczyć opcję Yes przy polu Would you like to create a rich client application? (rysunek poniżej)

Klikamy Next. Na ostatniej stronie wybieramy wzór z jakiego chcemy skorzystać (oczywiście nie musimy tego robić, jednak na potrzeby naszego przykładu wybieramy RCP Mail Template) i klikamy Finish.

Zostaniemy zapytani czy przejść do perspektywy Plug-in Developement, odpowiadamy Yes. W widoku Package Explorer powinien pojawić się nowy projekt. Możemy teraz przejrzeć się co w nim jest – zostały wygenerowane odpowiednie klasy, ale ważniejsze od nich są dwa pliki MANIFEST.MF (w katalogu META-INF) oraz plugin.xml, w których to zapisane są najważniejsze informacje o naszym pluginie (więcej o tym, w którymś z najbliższych wpisów).

W zasadzie nasza wtyczka jest teraz gotowa do uruchomienia. Aby ją przetestować klikamy prawym klawiszem myszy na projekcie i wybieramy Run As->Open Run Dialog... W nowym oknie klikamy po lewej stronie znajdziemy Eclipse Application, które zaznaczamy i wybieramy przycisk u góry New launch configuration.

Otworzy nam się nowa karta, na której możemy podać nazwę i ustawić potrzebna nam opcje. Na zakładce Main wybieramy opcję Run an application a z listy rozijalnej wybieramy: „com.blogspot.eclipse-po-polsku.example.rcp.application” (wpis ten zależy od nazwy jaką nadaliśmy naszemu projektowi). Na zakładce Plug-ins z rozwijalnej listy wybiermay plug-ins selected below only, nastepnie klikamy przycisk Deselect All. Na liście wybieramy tylko nasza wtyczkę i klikamy Add Required Plug-ins. Sprawdzamy konfiguracje klikając przycisk Validate Plug-ins, powinniśmy zobaczyć: Klikamy Apply, a potem Run. Powinna uruchomić się nowa aplikacja wyglądająca mniej więcej tak:

Jest to tylko przykład, więc ta aplikacja nie robi nic pożytecznego, ale możemy zobaczyć jak może wyglądać odchudzony Eclipse służący jako platforma dla RCP.

W kolejnym wpisie postaram się powiedzieć jak z naszej przykładowej aplikacji stworzyć pełnowartościowy projekt.

Prezentajca o Eclipse RCP na JUG Poznań

Dzisiaj w ramach spotkań poznańskiej grupy JUG (Java User Group) o godzinie 18:00 w budynku Poznańskiego Centrum Superkomputerowo Sieciowego (PCSS) będę opowiadał o tym czym jest Eclipse RCP. Wszystkich zainteresowanych zapraszam. Postaram się później umieścić samą prezentację oraz odpowiedzi na ciekawsze pytania od publiczności :)

wtorek, 9 października 2007

Eclipser-blog

Jeśli ktoś Was jest zainteresowany anglojęzycznym blogiem o Eclipsie, ale pisanym przez Polaków to zapraszam na: eclipser-blog. Razem ze kolegami z zespołu piszemy o naszych perypetiach z Eclipsem, o nowych odkryciach i doświadczeniach :) Czasami będę się starał zamieszczać tutaj przetłumaczone posty, w razie gdyby polskie wersje kogoś interesowały.

niedziela, 7 października 2007

Startujemy!

Od kilku lat jestem dość mocno związany z Eclipsem - od samego początku było to moje ulubione środowisko do pisania aplikacji w Javie, później włączyłem się w rozwój projektu UC Workbench, który oparty jest właśnie na Eclipsie, aż w końcu trafiłem do centrum firmy IBM, którego zadaniem jest pomaganie klientom w ich problemach z Eclipsem. Od rozpoczęcia pracy w IBM Eclipse Support Center (które powstało przy Politechnice Poznańskiej) zacząłem też być aktywnym członkiem społeczności Eclipse'a - staram się udzielać na newsgroup'ach, piszę patche, komentuję bugi, współtworzę bloga, a także współorganizowałem szkolenie o nazwie Szkoła Letnia Eclipse. Jednocześnie od samego początku mojego zainteresowania się tym środowiskiem zauważyłem, że w internecie można znaleźć mnóstwo materiałów na jego temat, są to jednak materiały w języku angielskim, brakuje natomiast materiałów na jego temat w języku polskim.
Właśnie sympatia do Eclipse'a, świadomość jego wielkich możliwości i brak materiałów w naszym ojczystym języku spowodowała, że postanowiłem stworzyć blog, na którym będę się starał opisywać różne aspekty Eclipse'a. Na początku chciałem stworzyć cały serwis poświęcony tej tematyce, doszedłem jednak do wniosku, że nie mam zbyt dużo czasu, aby na to poświęcić, więc wybrałem bloga.
Liczę, że jeśli będziecie mieli jakieś uwagi do tego co piszę to wyrazicie je w komentarzach, lub też w mailach bezpośrednio do mnie.
Na dzisiaj to tyle, a w przyszłym tygodniu powinien pojawić się pierwszy wpis bardziej techniczny ;)