sobota, 25 grudnia 2010

Co nowego w IntelliJ IDEA 10

Witam!

Dwa tygodnie temu wróciłem po długim (5-tygodniowym) urlopie do pracy. Pierwsze co zwróciło moją uwagę to aktualizacja obecnie używanego przeze mnie IDE - IntelliJ IDEA - do wersji 10. Od dłuższego czasu, jeszcze przed pójściem na urlop, było dosyć głośno na temat nowej wersji naszego ulubionego edytora. Największy nacisk miał zostać położony na wydajność aplikacji, ale nie miało to być jedyne udostkonalenie, które miała wnieść najnowsza wersja. Poniżej prezentuje liste rzeczy, które najbardziej spodobały mi się w IDEA 10:
  1. Poprawiona wydajność - na stronie z informacjami o nowościach w wersji 10 firma JetBrains informuje, że nowa IDEA uruchamia się w czasie dwukrotnie szybszym niż poprzednia wersja, podobnie jak indeksowanie projektu. Liczby trochę przesadzone, ale 30-35% szybsze działanie, które osobiście odnotowałem od samego początku pracy z nową wersją edytora robi naprawdę duże wrażenie.
  2. Odczepiane okna - to opcja, której bardzo brakowało mi po przesiadce z Eclipsa na IntelliJ IDEA. W nowej wersji brak ten został uzupełniony i możemy ustawiać okna edytora dowolnie, wedle uznania. Jest to bardzo ważne, kiedy pracuje się na dwóch monitorach. Mała rzecz, a cieszy :) Wiele osób bardzo narzekało, że w jednym oknie nie da się zmieniać w prosty sposób kolejności zakładek - teraz jest to równie proste jak w innych znanych IDE. Poniżej filmik prezentujący nową opcję:
  1. Zakładki - to ciekawy sposób na zaznaczenie istotnego w danym momencie fragmentu kodu. Dzięki temu nie ma konieczności przeglądania od nowa całego kodu, aby znaleźć interesujący nas fragment. Poniżej prezentacja nowej funkcji:
  1. Instant Autocompletion - polega na podpowiadaniu składni bez konieczności ciągłego wciskania kombinacji Ctrl + Space. Choć pokazano, że przyspiesza to prace przy pisaniu kodu (szczególne wrażenie zrobiło na mnie podpowiadanie składni XPath) to znając życie bardzo dużo osób zrezygnuje z tej funkcji całkowicie po relatywnie krótkim czasie. Mi na razie się podoba i jest wygodne, więc póki się nie zirytuje, póty zostaje :)
  1. Integracja z Apache Maven - obsługa Mavena w IntelliJ IDEA jest tzw. out-of-the-box, czyli nie potrzeba żadnych dodatkowych paczek, aby z niego korzystać. W nowej odsłonie edytora dodano indeksowanie zdalnych repozytoriów, pomoc przy refaktoryzacji pliku POM, etc.

  1. Productivity Guide - to dodatek trochę dla zabawy, choć w połączeniu z rozszerzeniem Key Promoter może być bardzo pomocne. Idea jest bardzo prosta - IDEA zlicza ilość wykorzystania ułatwień, jakie dostarcza edytor i zestawia je w przejrzysty sposób. W ten sposób możemy łatwo dowiedzieć się o nowych skrótach klawiszowych, których jeszcze nie znaliśmy, a mogą nam się bardzo przydać. Dodatkowo każde z udoskonaleń jest opisane wraz ze skrótem klawiszowym oraz stosownym zrzutem ekranu.



Czas powiedzieć co mi się nie podoba w nowej odsłonie IntelliJ IDEA:
  1. Sposób tworzenia branchy/tagów w Subversion - nie udało mi się jeszcze zrobić branchu w repozytorium SVN'a przy pomocy IDEA'i w sposób zadawalający. W Eclipse wystarczyło wskazać folder, do którego chce przekopiować katalogi z głowy trunk'a lub wskazanego innego folderu w repo, natomiast IDEA dodaje do przygotowanej przeze mnie lokalizacji folder o nazwie, którą pobiera ze źródłowego URL'a i dopiero tam kopiuje pliki - bardzo niewygodne.
  2. Nie wszystkie nowe opcje działają w Community Edition - przykładowo nowe możliwości w obsłudze Maven'a nie są dostępne w wersji CE, co jest bardzo rozczarowujące.
  3. Problem z pluginami - po aktualizacji z wersji 9 do 10.0 okazało się, że muszę instalować wszystkie rozszerzenia na nowo. Dziwne, bo sądziłem, że skoro wskazałem lokalizację poprzedniej wersji, gdzie znajdowały się pliki konfiguracyjne, IDEA sama się zorientuje, że trzeba trochę oprogramowania doinstalować...
W momencie pisania tego postu IDEA poinformowała mnie o dostępności nowej wersji, 10.01 build 99.32 (IDEA 10 to build 99.18), w której wprowadzono liczne poprawki. Taki stan rzeczy bardzo cieszy. Widać, że oprogramowanie się rozwija i to w bardzo dobrą stronę, czas więc zacząć zbierać na wersję Ultimate Edition :)

Z miłych zaskoczeń przy aktualizacji oprogramowania: od niedługiego czasu jestem szczęśliwym posiadaczem nowego laptopa - HP Pavilion dv7-3130ew. Zainstalowana w nim karta WiFi jest firmy Broadcom, a z tego co wcześniej się orientowałem, jej instalacja pod Ubuntu bywa problematyczna. Jakież wielkie było moje zaskoczenie, gdy po pierwszym uruchomieniu Ubuntu 10.10 system zapytał mnie, czy nie chce zainstalować sterownika karty graficznej, karty WiFi oraz tunera cyfrowego DVR. Zgodziłem się i od tej pory nie mam z tym najmniejszych problemów - doskonały wzór dla twórców oprogramowania, co znaczy program user-friendly :)

To tyle na ten moment, czas wracać do świątecznego stołu i cieszyć się chwilami wytchnienia spędzonymi z rodziną :)

Pozdrawiam i życzę wszystkim wesołych świąt!!!

poniedziałek, 6 grudnia 2010

Cytaty #7

Witam!

Dzisiaj usłyszałem bardzo mądre słowa człowieka, który żył dawno temu, lecz jego słowa są aktualne także dzisiaj i jestem pewien, że będą za kolejnych 100, 200, czy 500 lat. Mowa tu o Williamie Faulkner'ze. Był to amerykański powieściopisarz, poeta, laureat Nagrody Nobla w dziedzinie literatury. A oto co powiedział w 1958r. Jean Stein'owi:
Always dream and shoot higher than you know you can do. Don't bother just to be better than your contemporaries or predecessors. Try to be better than yourself (...).
I chociaż Faulkner mówił wtedy o pisarzach, to jednak nie ma chyba branży, w której słowa te nie miały by swojej racji. Bardzo często pracujemy lub uczymy się w towarzystwie ludzi z dużym doświadczeniem lub sporym talentem i notorycznie próbujemy być lepsi od nich. Niestety bardzo często okazuje się, że jest to zgubna motywacja - osoby te także stają się coraz lepsze, coraz trudniej być od nich lepszym. Za to samo bycie jutro lepszym od siebie samego, niż jest się dzisiaj, jest doskonałą motywacją dającą wciąż nowe, coraz lepsze wyniki.

Natchniony tą myślą wracam do pracy :)
Pozdrawiam i do następnego razu!

sobota, 4 grudnia 2010

Nowy blog o Tapestry

Witam serdecznie!

Pierwszy projekt z użyciem frameworku Spring 3 za mną, teraz prace skoncentrowane na zapoznawaniu się z językiem Jython i pisaniu pracy inżynierskiej. Chociaż ostatnio coraz częściej spotykam się z opinią, że znajomość, choćby podstawowa, Springa to podstawa, to uważam używanie go do małych aplikacji za strzelanie do muchy z armaty. Znacznie pozytywniejsze wrażenie odniosłem odnośnie frameworka Tapestry (w wersji 5.2) po prezentacji Michała Grucy na spotkaniu Trójmiasto Java User Group pt. "Przegląd możliwości szkieletu aplikacyjnego Tapestry 5". Od tamtego momentu czekam z niecierpliwością na możliwość poznania w praktyce podstaw tego cudeńka. Ponieważ przez najbliższych kilka tygodni nie zapowiada się na to, żebym miał ku temu możliwość pocieszam się wpisami na blogu Michała, które wreszcie zgodził się upublicznić. I tak oto mam ogromną przyjemność zaprezentować "Reliable IT Solutions" - polski blog o podstawach programowania z użyciem Tapestry dla początkujących i nie tylko. A o to co sam autor o nim pisze i jak definiuje cel swojego młodego przedsięwzięcia:
Jestem jeno skromnym programistą, który stara się uczynić świat lepszym, poprzez promowanie dobrych nawyków i lepszych technologii. Mam nadzieję, że poprzez tego bloga, uda mi się dotrzeć do kilku osób i uczynić ich życie lepszym, by nie popełniały tych samych błędów, które ja musiałem popełnić.
Pozdrawiam i zachęcam do czytania wpisów Michała!

wtorek, 9 listopada 2010

Dlaczego lubię Jersey'a

Witam!

Jest wtorkowy wieczór a ja zamiast siedzieć gdzieś z kolegami w PUB'ie, lub z dziewczyną w kinie, spędzam swój "wolny czas" pisząc kod do projektu grupowego, którego termin oddania zbliża się nieubłaganie. To dlaczego jestem taki uśmiechnięty? Otóż przyszedł ten moment, kiedy nareszcie trzeba zbudować RESTful Web Service. Dlaczego mnie to cieszy? Bo pisanie RESTowych usług jest bardzo proste i przyjemne, a to za sprawą frameworka Jersey :) Nie będę się rozwodził przesadnie nad tym dlaczego tak go lubię, gdyż pisać na ten temat można naprawdę długo i wiele. Wystarczę, że przytoczę artykuł, na który natknąłem się w czasie szukania informacji o wstrzykiwaniu obiektu sesji do RESTowej metody:
This framework looks like it will have long legs in the Java community.
Osobiście zgadzam się całkowicie z tą opinią. Wiele jest narzędzi do budowania RESTful Web Services, ale nie spotkałem jeszcze nikogo, kto dla osoby początkującej nie zalecił właśnie frameworka Jersey. Jak się później okazuje jest to miłość od pierwszego wejrzenia i wielu ludzi pozostaje przy tym rozwiązaniu, a to mówi samo za siebie :)

Pozdrawiam i do następnego razu!

piątek, 5 listopada 2010

Cytaty #6

Witam!

Sporo czasu minęło od ostatniego wpisu z cytatem (od zwykłego wpisu zresztą też). Jakiś czas temu przeglądałem materiały z Atlassian TV i natrafiłem na ciekawy materiał jednego z developerów firmy Atlassian o tym jak sprawna automatyzacja pozwoliła ułatwić i przyspieszyć prace nad projektem. Podsumowując swoją opowieść George Barnett powiedział:
Automation is key.
Ta prosta sentencja dała mi wiele do myślenia. W swojej nowej pracy jako Junior Software Developer bardzo często z braku wiedzy, doświadczenia jak i znajomości technologii bardzo często wiele rzeczy robię "na piechotę". Podobnie jest z projektami na uczelni, a także własnymi mini-projektami. Pierwsze objawienie przyszło w momencie rozpoczęcia pierwszego poważniejszego projektu w ramach praktyk. Później w trakcie pracy z kolegą ze studiów nad projektem grupowym doszedłem do wniosku, że nawet najprostsza automatyzacja może bardzo ułatwić nam pracę (zwykłe przerobienie projektu, by można było nad nim pracować za pomocą Apache Maven uczyniła dosłownie cuda). Następnym krokiem w drodze ku oświeceniu był artykuł na devBlogach pt. "Jak efektywnie realizować zadania, kiedy jesteś tylko szeregowym programistą", który zaprowadził mnie do artykułu Joela Spolsky'ego "The Joel Test: 12 Steps to Better Code". Te wszystkie rzeczy uświadomiły mi, że nie tylko poznawanie nowych frameworków, wzorców projektowych, praktyk poprawiających efektywność pracy programistycznej etc. sprawiają, że moja praca może być lepsza. Dlatego w tym tygodniu wraz z moimi wykładowcami postanowiliśmy w formie testu przeprowadzić inspekcję kodu w sposób zautomatyzowany - kilka wybranych grup będzie poddawać rewizji kod innych grup w standardowy sposób - przy pomocy kodu wydrukowanego na kartkach, a pozostali będą używać do tego tandemu Atlassian FishEye + Crucible. Jakie będą tego wyniki? Napiszę już niedługo :)

Tym czasem pora wrócić do pisania kodu.
Pozdrawiam i do następnego razu!

czwartek, 21 października 2010

O dokumentacji słów kilka

Witam serdecznie!

Przez natłok pracy w ostatnim czasie nie mam możliwości być całkowicie na bieżąco z nowinkami ze świata informatyki (i nie tylko), przez co mam pewne zaległości na takich serwisach jak devBlogi, czy infoQ. Próbując trochę nadrobić zaległości z pierwszego serwisu trafiłem na bardzo pocieszający wpis - "Ostateczne programistyczne kata", które jest tłumaczeniem artykułu Jeffa Artwood'a. Dlaczego pocieszający? Ponieważ w bardzo bezpośredni sposób uzasadnia sensowność i starania wkładane w prowadzenie tego bloga, oto cytat:
Prowadź bloga. Ja sam zacząłem pisać tego bloga na początku 2004 roku właśnie jako formę ćwiczenia. Zaczynając skromnie, później okazało się, że jest to jedna z najbardziej znaczących rzeczy, które zrobiłem w swojej zawodowej karierze. Ty również powinieneś prowadzić bloga.
Kolejne "objawienie" przyszło w momencie czytania artykułu "Pisanie dobrej dokumentacji: co napisać". Jakiś czas temu wspominałem, że w trakcie praktyk jednym z moich obowiązków było utrzymywanie i rozwijanie dokumentacji projektu. Dodajmy do tego jeszcze artykuł "Pisanie dobrej dokumentacji: styl" i okazuje się, że tak naprawdę niewiele wiem o pisaniu dokumentacji! Pokazuje to także jak obszerną (o wiele obszerniejszą niż sądziłem kilka miesięcy temu!) dziedziną jest informatyka :)

Na dzisiaj to tyle blogowania, czas zabrać się za pracę inżynierską :)
Pozdrawiam i do następnego razu!

niedziela, 17 października 2010

Przemyślenia praktykanta #6 - podsumowanie

Witam serdecznie!

Ponad trzy tygodnie po terminie, ale jak mówi polskie przysłowie "lepiej późno niż wcale" ;) Długo zastanawiałem się nad tym co mógłbym napisać w podsumowaniu praktyk, kiedy większość przemyśleń umieściłem w poprzednich wpisach.

20) Agile/Scrum jest idealny dla początkujących programistów - bałem się bardzo ilości dokumentacji, planów projektów itp. na początku pracy z ekipą ze Spartezu. Bałem się z dwóch przyczyn: tego, że będą zbyt zaawansowane technicznie oraz czasu, który będę musiał na nią poświęcić przez co nie zdążę zrobić nic znaczącego w trakcie praktyk. Z tymi obawami związany jest kolejny punkt...

21) Praktyki 3-miesięczne to strzał w dziesiątkę - moje praktyki trwały dokładnie 60 dni i od samego początku czułem, że wydłużenie standardowego czasu (20 dni) będzie strzałem w dziesiątkę. Praktyki są tak bogate w nową wiedzę i doświadczenia, że grzechem byłoby z tej możliwości nie skorzystać maksymalnie jak się da. Dzięki wydłużonemu czasowi miałem możliwość nadrobienia wielu zaległości w postawach znajomości Javy ale i zwykłej wiedzy informatycznej (a także trochę psychologii itp. :)) oraz spokojnie popracować nad konkretnym projektem. Jednym z rezultatów mojej pracy był plugin do Atlassian JIRA oraz pluginu GreenHopper, który miał swoją premierę na Atlassian Plugin Exchange prawie miesiąc temu!

22) Praca informatyka to ciągła nauka - ale nie mam tutaj na myśli tylko nauki nowego języka, czy tez technologii. Praktycznie każdego dnia uczyłem się pokory oraz poznawałem granice swoich umiejętności, by za chwile je przekraczać i stawać się coraz lepszy. Praktyki to specyficzny okres, gdyż granic takich jest bardzo dużo, mało jeszcze tak naprawdę wie się o programowaniu i pracy w prawdziwym zespole. Krzywa uczenia się w trakcie praktyk jeśli ma się szczęście pracować w zespole skłonnym do pomocy niedoświadczonemu programiście rośnie w zawrotnym tempie. Jeszcze kilka tygodni temu nie podejrzewałbym siebie o możliwości tak szybkiej nauki :)

23) Praktyki wakacyjne mogą (i są!) świetną zabawą - kiedy pracuje się w zespole takim, w jakim ja miałem przyjemność przychodzenie do biura staje się czystą przyjemnością, każdy dzień zaskakuje nas czymś nowym, interesującym, ale także jest kolejną okazją do dobrej zabawy. W pokoju w którym siedziałem w drugiej części praktyk (razem z siedmioma innymi osobami) aż wrzał od śmiechu, dowcipów etc. Oczywiście, ważny jest umiar i zachowanie proporcji praca-zabawa, lecz oczywistym jest także, że "nikt" nie wysiedzi 8 godzin non-stop kodując i mając z tego dużą przyjemność (a przynajmniej ja tak nie mam), a chwile poświęcone na rozrywkę różnego rodzaju bardzo dobrze wpływają na morale zespołu oraz chęć do dalszego zmagania się z kolejnymi problemami.

Podsumowując to wszystko - praktyki uważam za bardzo udane, gdyż otworzyły mi bardzo szeroko oczy, były okazją do poznania zawodu "zza kulis" oraz były ciekawą i przyjemną formą spędzenia czasu. Co dalej? Rozpocząłem okres próbny jako Junior Software Developer i próbuję to pogodzić ze studiami (semestr pracy inżynierskiej) oraz innymi obowiązkami, na razie ze słabym skutkiem. Ale jestem wciąż dobrej myśli i jeśli wszystko pójdzie dobrze będę dalej publikować swoje przemyślenia i spostrzeżenia, tyle że tym razem jako początkujący programista, nie praktykant ;)

To wszystko na dziś, pozdrawiam i do następnego razu!