Ostatnio pojawiły się w końcu zdjęcia z ubiegłorocznej konferencji Java Developer Day. Podczas ich przeglądania przypomniała mi się wypowiedź Jacka Laskowskiego na sesji Java Underground na temat dlaczego warto się udzielać w grupach, projektach (javowych). Podsumowując krótko jednym z argumentów Jacka było to, że przestajemy być anonimowi choćby w momencie szukania pracy - można się pochwalić udziałem w jakimś projekcie Open Source lub prowadzeniem wykładów.
Swoją drogą to zastawiam się czy potencjalni pracodawcy w ogóle wiedzą co to są JUGi albo jak przekłada się "popularność" w JUGach na "kojarzenie" takiego delikwenta przez tych pierwszych?
Ja chciałem na pytanie tytułowe odpowiedzieć w trochę inny, trochę nietypowy sposób. Mianowicie w bardziej materialny, czyli jakie korzyści (materialne) ja uzyskałem do tej pory z "udzielania się".
Poniżej krótkie zestawienie.
Prelekcja nt NetBeans Platform na PJUG w Krakowie - licencja IntelliJ IDEA 7 (wtedy licencja kosztował chyba około 179$)
Artykuł do JavaExpress - wylosowałem wejściówkę na JDD08 (380pln).
Prelekcja nt NetBeans Platform na SJUG w Katowicach - licencja IntelliJ IDEA 8 (225$)
Preferencyjna cena dla aktywnych członków JUG na COOLuary (20pln).
Na COOLuarach wylosowałem wejściówkę na 4Developers (229pln).
Książek, USB flashy, długopisów nie liczę ;). Choć taka
Spring Framework. Profesjonalne tworzenie oprogramowania w Javie to kolejne 89pln - a ja wylosowałem taką na spotkaniu z Alefem Arendsenem (więc książka jest z jego autografem).
Poznani nowi, wspaniali ludzie - bezcenne ;)
Podsumowując - robiąc to co lubię, ucząc się cały czas - niejako efektem ubocznym "udzielania się" w społecznościach Javowych są za zeszły rok "profity" w wysokości co najmniej 2000pln. Aż sam się zdziwiłem jak to policzyłem.
piątek, 30 stycznia 2009
Dlaczego warto się udzielać w JUGach?
Autor: Marek Kliś o 19:23 5 komentarze
Etykiety: inne, java, komunikacja, konferencje, Prelekcje
sobota, 24 stycznia 2009
Co tam słychać w COOLuarach...
Właśnie wróciłem z pierwszej w Polsce UnConference poświęconej Javie czyli z COOLuarów. Jeśli ktoś nie by to niech żałuje. Naprawdę jest czego.
Dzień został podzielony na pięć godzinnych sesji, w każdej sesji było dostępnych pięć stolików. Po krótkim wstępie Grzegorza na temat konferencji i jej wyglądu, zaczęło się ustalanie agendy. Wbrew moim obawom tablica dość szybko zapełniła się żółtymi karteczkami z propozycjami tematów.
W pierwszej sesji wziąłem udział w dyskusji na temat narzędzi niezbędnych w pracy programisty. Dyskusja dotyczyła głównie IDE oraz maven vs Ant. Temat zresztą sam zgłosiłem ;)
W drugiej sesji były już tylko dwa stoliki. Spring przy jednym, refaktoryzacja przy drugim. Ja wziąłem udział w tej pierwszej choć z relacji żałuję, że jednak nie w tej drugiej gdyż dyskusja zeszła raczej na temat plusów i minusów nowej polityki firmy Spring w sprawie opłat za dostęp do ich produktów.
Po przerwie obiadowej przysiadłem się do stolika Scali. Tutaj jednak mogłem uczestniczyć tylko biernie gdyż temat ten nie był mi znany.
Przedostatnia sesja dotyczyła ogólnie szkieletów dla aplikacji webowych z głównym pytaniem co sądzimy o JavaServer Faces. Pierwsze zdanie w tej dyskusji Wiktora od razu zbiło pytających z tropu gdyż "JavaServer Faces nie należy w ogóle używać" :) Ogólnie wniosek chyba był taki, że ruby (z rails) i groovy (z grails) górą ;)
Ostatnia sesja to temat javy w wydaniu desktopowym oraz JavaFX ogólnie. Temat nie wywołał zażartej dyskusji. Pewnie wszyscy czekali już na końcowe losowanie nagród ;)
Wielkie podziękowania należą się Grześkowi gdyż odwalił kawał dobrej roboty przygotowując COOLuary. Mam nadzieję, że konferencja ta zagości na stałe w kalendarzu wydarzeń javowych.
Na koniec nie wypada mi się nie pochwalić, że udało mi się wylosować wejściówkę na konferencję 4Developers ;)
Autor: Marek Kliś o 21:33 4 komentarze
Etykiety: java, konferencje
sobota, 20 grudnia 2008
Własny komponent na pasku statusu w NetBeans
W jaki sposób dodać coś własnego do paska statusu aplikacji napisanej przy pomocy platformy NetBeans (czyli np do NetBeans IDE)?
W tym celu musimy stworzyć klasę implementującą interfejs StatusLineElementProvider. Interfejs ten definiuje tylko jedną metodę Component getStatusLineElement(). Metoda zwraca komponent, który ma być umieszczony na pasku statusu.
Stwórzmy więc jakiś przykładowy projekt modułu z komponentem dla paska statusu.
Aplikacja ma ustawioną polską platformę dlatego nazwy bibliotek netbeansowych są po polsku. Menu aplikacji po uruchomieniu również. Należy zwrócić uwagę na biblioteki jaki są dodane do modułu MyStatusLine.
W tym przypadku komponentem jest zwykły JPanel z JLabelem (label z jakimś tekstem i ikoną). Po przejściu do źródła klasy StatusLineElement musimy dopisać implementację interfejsu StatusLineElementProvider.
package org.myorg.status;
import java.awt.Component;
import org.openide.awt.StatusLineElementProvider;
public class StatusLineElement extends javax.swing.JPanel implements StatusLineElementProvider {
public StatusLineElement() {
initComponents();
}
public Component getStatusLineElement() {
return this;
}
...
}
Aby nasza aplikacja "dowiedziała" się o nowym komponencie musimy ją o tym poinformować tworząc w katalogu META-INF/services plik o nazwie takiej jak implementowany przez nas interfejs czyli org.openide.awt.StatusLineElementProvider. Treścią tego pliku będzie pełna nazwa klasy implementującej ten interfejs czyli org.myorg.status.StatusLineElement.
Po uruchomieniu aplikacji na pasku powinien znajdować się nasz komponent.
Autor: Marek Kliś o 19:00 0 komentarze
Etykiety: NetBeans
sobota, 13 grudnia 2008
Progress API
Progress API jest malutką ale użyteczną biblioteką wchodzącą w skład platformy NetBeans i oferującą programiście dostęp do paska postępu przydatnego przy długich zadaniach wykonywanych w tle.
To co nas będzie interesowało to ProgressHandleFactory oraz ProgressHandle.
public void startMyTask() {
Runnable runnable = new Runnable() {
public void run() {
ProgressHandle handle = ProgressHandleFactory.createHandle(
"Moje długie zadanie");
int count = 57;
handle.start(count);
for(int i = 0; i < count; i++){
handle.progress(i);
if(i > (count/2)){
handle.progress("Połowa zadania już za nami");
}
try {
Thread.sleep(200);
} catch (InterruptedException ex) {
Exceptions.printStackTrace(ex);
}
}
handle.finish();
}
};
(new Thread(runnable)).start();
}
Uruchomienie powyższej metody spowoduje pokazanie się paska postępu w prawym dolnym rogu aplikacji.

Po kliknięciu na pasek postępu możemy zobaczyć także informacje szczegółowe na temat wykonywanego zadania.

handle.start(count) uruchamia pasek postępu informując go z ilu kroków będzie się składać zadanie. handle.progress(i) informuje ile kroków już mamy za sobą, handle.progress("Połowa zadania już za nami") dodaje opis do widoku szczegółowego zadania, handle.finish() kończy i ukrywa pasek.
Autor: Marek Kliś o 21:47 2 komentarze
Etykiety: NetBeans
czwartek, 4 grudnia 2008
Styczniowe COOLuary
Właśnie zauważyłem na Developers World wpis na temat przyszłorocznej konferencji pod dość ciekawą nazwą COOLuary. Patrząc na zasady oraz agendę konferencji stwierdzam, że szykuje się coś naprawdę ciekawego. A i cena nie jest powalająca. 30 pln za udział w całodniowej konferencji z obiadem to wg mnie przystępna cena. Założyłem po cichu, że zostanę potraktowany jako "aktywny członek" ;)
Ja się zapisuję.
Autor: Marek Kliś o 08:10 0 komentarze
Etykiety: konferencje
środa, 3 grudnia 2008
NetBeans na skróty w edytorze
Chciałbym dzisiaj przybliżyć kilka pomocnych (według mnie) skrótów klawiszowych w edytorze NetBeans.
1. Ctrl+/ dodawanie/usuwanie komentarza z linijek wchodzących w skład zaznaczonego obszaru.
2. Ctrl+E usuwanie linii kodu wchodzących w skład zaznaczonego obszaru. Bez zaznaczenia usunięcie tylko jednej linii.
3. Alt+Shift+Up/Down przesunięcie linii (lub zaznaczonego fragmentu) w górę/dół.
4. Ctrl+Shift+Up/Down skopiowanie linii (lub zaznaczonego fragmentu) powyżej/poniżej.
5. Alt+Insert Generator kodu.
6. Ctrl+R Zmiana nazwy.
7. Ctrl+F3 Szukanie wystąpień słowa.
7a. F3/Shift+F3 Następne/poprzednie wystąpienie szukanego słowa.
8. Alt+F7 Wyszukiwanie użycia metody/zmiennej.
9. Alt+Shift+F Formatowanie kodu.
10. Ctrl+Tab Przełączanie pomiędzy otwartymi edytorami.
11. Shift+Esc Przełączenie aktualnego okna pomiędzy dużym a małym rozmiarem.
12. Ctrl+O Wyszukiwanie klasy do edycji.
13. Ctrl+Q Powrót do ostatnio edytowanego miejsca.
14. Ctrl+Shift+I Dodanie brakujących importów.
14a. Alt+Enter Rozwinięcie menu dla podpowiedzi np dla "żaróweczki".
15. Ctrl+I Wyszukiwanie. Z pola wyszukiwanie mamy możliwość uruchomienia różnych akcji.
16. Ctrl+; Dodanie ";" na końcu linii. Szkoda tylko, że nie sprawdza czy linia jest już zakończona ";".
16a. Ctrl+Shift+; Dodanie ";" na końcu linii, wstawienie nowej linii i przejście na jej początek.
17. Nie jest skrótem klawiszowym. Stanięcie na deklaracji typu zwracanego przez metodę podświetla nam wszystkie możliwie punkty wyjścia z tej metody.
A według Ciebie jakie skróty powinny się jeszcze znaleźć w tym krótkim zestawieniu?
Autor: Marek Kliś o 19:47 5 komentarze
Etykiety: NetBeans
sobota, 29 listopada 2008
Polska platforma NetBeans jeszcze raz czyli problemy z lokalizacją
We wpisie opisałem pojawienie się polskiego tłumaczenia platformy. Wszystko było pięknie tak jak to opisałem do momentu aż nie spróbowałem zrobić wersji dystrybucyjnej aplikacji zbudowanej na polskiej platformie (Build ZIP Distribution). Po rozpakowaniu zipa i uruchomieniu aplikacji okazało się, że polskie menu gdzieś zniknęło. Jak się okazało jest za to odpowiedzialny błąd znany już we wcześniejszej wersji NetBeans'a. Błąd ten dotyczy wszystkich tłumaczeń platformy.
Pozostały mi więc dwie możliwości: albo przy każdym budowaniu aplikacji kopiować pliki z potrzebnymi tłumaczeniami albo napisać zadanie anta które uzupełni zipa za mnie. Wybrałem opcję drugą i okazało się, że zadanie to nie jest tak trudne jak mi się na początku wydawało. W tym celu do pliku build.xml odpowiedzialnego za zadania anta związane z naszym projektem dodałem zadanie "build-localized-zip". Zadanie to dodaje do pliku archiwum (stworzonego w zadaniu build-zip - opis tego zadania znajduje się w pliku harness/suite.xml w katalogu platformy, na której budujemy aplikację) pliki z polskimi tłumaczeniami. Minusem tego rozwiązania jest to, że zostaną dodane wszystkie "polskie" pliki a nie tylko z tych modułów, które wykorzystujemy. Biorąc pod uwagę, że na dzień dzisiejszy przetłumaczona jest tylko część modułów platformy nie powinno to stanowić problemu.
<project name="TestPlatform" basedir="."><br />
<description>Builds the module suite TestPlatform.</description>
<import file="nbproject/build-impl.xml"/>
<target name="build-localized-zip" depends="clean,build-zip"
description="Zbudowanie polskiej dystrybucji">
<zip destfile="${dist.dir}/${app.name}.zip" update="true">
<zipfileset dir="${netbeans.dest.dir}" prefix="${app.name}">
<include name="**/locale/*_pl.jar"/>
</zipfileset>
</zip>
</target>
</project>
Teraz wystarczy uruchomić nasze nowe zadanie i nowa dystrybucja naszej aplikacji będzie już "uzbrojona" w polskie menu.

Autor: Marek Kliś o 00:15 0 komentarze
Etykiety: NetBeans
