niedziela, 19 grudnia 2010
Mikołajowych moc prezentów
niedziela, 21 listopada 2010
Siećkierowcy tempomatu ustawianie
wtorek, 2 listopada 2010
Impresji pojubileuszowych garść parę...
piątek, 15 października 2010
Jubileuszowe X spotkanie Szczecińskiej JUGi
wtorek, 10 sierpnia 2010
Bzycząco pozorowane obiektów wspaniałości.
ClassImplentingIface ciff = Mockito.mock(ClassImplentingIface.class); Mockito.when(ciff.doSomething(3)).thenReturn("ReturnedValue"); assert "ReturnedValue" == ciff.doSomething(3);
java.lang.NullPointerException at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) at com.blogspot.pacykarz.Testowa.test(Testowa.groovy:19)
//This working always: Iface mockedIface = Mockito.mock(Iface.class); Mockito.when(mockedIface.doSomething(Mockito.anyInt())).thenReturn("ReturnedValue"); assert "ReturnedValue" == mockedIface.doSomething(3); Mockito.verify(mockedIface, Mockito.times(1)).doSomething(Mockito.anyInt()); //This not working with matchers ClassNotImplentingIface mockedClass = Mockito.mock(ClassNotImplentingIface.class, Mockito.withSettings().extraInterfaces(GroovyInterceptable)); Mockito.when(mockedClass.doSomething(3)).thenReturn("ReturnedValue"); assert "ReturnedValue" == mockedClass.doSomething(3); Mockito.verify(mockedClass, Mockito.times(1)).doSomething(3); //This also not working with matchers, but also returns wrong verifications. ClassNotImplentingIface spiedClass = Mockito.spy(new ClassNotImplentingIface()); Mockito.when(spiedClass.doSomething(3)).thenReturn("ReturnedValue"); assert "ReturnedValue" == spiedClass.doSomething(3); //Be aware of given 4 times invocation instead of 1! Mockito.verify(spiedClass, Mockito.times(4)).doSomething(3); //This also not working with matchers and returns wrong verifications. ClassNotImplentingIface mockedClass2 = Mockito.mock(ClassNotImplentingIface.class, new Answer() { Object answer(InvocationOnMock invocationOnMock) { if (invocationOnMock.getMethod().getName() ==~ /.*get.*MetaClass/) { return invocationOnMock.callRealMethod(); } else { return null; /* or other default answer*/ } } }); Mockito.when(mockedClass2.doSomething(3)).thenReturn("ReturnedValue"); assert "ReturnedValue" == mockedClass2.doSomething(3); //Be aware of given 4 times invocation instead of 1! Mockito.verify(mockedClass2, Mockito.times(4)).doSomething(3);
czwartek, 1 lipca 2010
Gdzie wiosna spaliną oddycha - z konferencyji impresji kilkoro
- Sam fakt istnienia tak fajnej konferencji.
- Klimatyzowane (?) sale, w których udało się nie zaliczyć tzw. zgonu.
- Porządny wyszynk (Ambrozji Testera, czyli herbaty w dowolnych ilościach, i to z cytrynką! :D) i jadła wszelakiego moc (kanapeczki, ciasteczka...).
- Darmowy obiad (jak wiadomo podstawa udanej konferencji).
- Obfity i w miarę różnorodny program, więc każdy mógł znaleźć coś dla siebie.
- Kubeczek dostany (co prawda nie konferencyjny, ale darowanemu koniowi. Przy okazji szczególne pozdrowienia i podziękowania dla wielce sympatycznej wolantariuszki za trud pamięci i obdarowanie zrozpaczonego tymże naczynkiem)
- Identyfikator z nalepką imienną umiejscowioną rękami Samego Jacka L. (Czujecie? Tymi ręcami!) - jak tu teraz się pozbyć takiej pamiątki? ;)
- Spoina w lokalu mieszczącym wszystkich chętnych (no i tym razem kulturalnie z zaproszeniami, anie na wydrę totalną ;))
- Niezbyt szczęśliwe rozplanowanie przestrzenne konferencji. Odbywała się ona na dwóch piętrach, zgromadziła całą masę uczestników. Niestety, foyer z gastronomią i stoiskami sponsorów znajdowało się tylko na jednym z pięter. Przez co, co godzinę tłoczyć się trzeba było po schodach to w jedną to w drugą, a i przeciskanie z wrzątkiem w ręku do najwygodniejszych nie należało. Wydaje mi się, że spokojnie można było rozdzielić chociaż częściowo „atrakcje”.
- Podobnie z obiadem, trochę brakowało miejsca, żeby spokojnie zjeść i pogadać.
- Nie wiem, czy tylko ja miałem takiego pecha w doborze, ale... większość prezentacji była wyraźnie niedostosowana do przewidzianego na nie czasu. Więc prowadzący często pod koniec zaczynali jechać po łebkach, przeskakiwać, a niestety tak się często składa, że to co najciekawsze to na końcu. Może warto pomyśleć o wydłużeniu sesji? Likwidację pytań z sali? Albo może bardziej zwracać uwagę na proponowaną przez mówiącego koncepcję prezentacji? Nie mam za bardzo konceptu sam jakby to sprawnie rozwiązać ze strony organizatorów (bo ze strony prezentujących, coś podpowiedzieć by się dało). W każdym razie było to pewien zgrzyt, bo to jak widzi się ile prowadzący tnie w trakcie powoduje takie lekkie wrażenie zlekceważenia. Wiem, brzydka myśl ta moja jest, ale cóż, nie będę ukrywał, że się pojawiła.
- „Jak zapobiegać biodegradacji kodu” Jakuba Nabrdalika. Pierwsza z serii inspirowanych hitem ostatnich dni, czyli „Clean Code”. Poprowadzona interesująco, z dużą dawką humoru (a przecież z siebieśmy samych się śmieli) i uwagoprzykuwająco pogadanka jak zrobić, co by po czasie się nie narobić, jak do kodu wrócić będzie potrzeba. Świetne rozgrzanie wartościową, acz nie męczącą wiedzą umysłu.
- „Jak można zarobić na uczciwości, przejrzystości i szacunku do klienta - kontrakty agile w praktyce” Wojciecha Seligi. Na to ostrzyłem sobie zęby od początku i w generalicji nie zawiodłem się. Było ciekawie, interesująco i aż chce się parę pomysłów Szefostwu podpowiedzieć. Szkoda jedynie, że Prezentujący wyraźnie rozminął się z czasem, przez co parę intrygujących zagadnień zostało potraktowanych koniec końców po łebkach, a zdecydowanie szkoda. Ale warto było.
- „Liftweb - simply functional webframework” Łukasza Kuczery. Niestety. Jeśli o mnie chodzi pomyłka całkowita, a z sądząc po początkowym zainteresowaniu mógł być hit. Cóż, wyszło inaczej. Trudno wskazać mi jakieś plusy. Tremę prowadzącego rozumiem i usprawiedliwiam, ale sama koncepcja prezentacji mi się nie podobała. Za dużo na wstępie o Scali jako języku, przez co właściwie Lift nie został pokazany, tekstu na slajdach często zdecydowanie za dużo, przez co czytelność spadała dramatycznie. Na koniec dobicie nie działającymi przykładami. I zostało tylko poczucie zmarnowanego czasu, zamiast zachwytu nad technologią. Pozostaje nadzieja, że Autor się nie załamie i następna prezentacja to będą himalaje konferowania. Że to jest możliwe przekonacie się dalej i tego Autorowi ze szczerego serca życzę.
- „Software Craftsmanship - Język wzorców językiem profesjonalistów” Sławomira Sobótki. Hmmm... Dziwna prezentacja. Niby ciekawie, niby dobrze się słuchało, ale zapytajcie mnie dzisiaj o czym była... to nie mam pojęcia! I szczerze mówiąc nie wiem czyja wina. Mówiącego, czy Słuchacza. Jedyne co mi w pamięci zostało, to to, że mi się podobało. Tak więc cała nadzieja w tym, że prezentacje były nagrywane i mają być udostępnione na serwisie Parley (o ile dobrze usłyszałem).
- „«Clean Tests» by Uncle Paul, czyli jak pisać testy, żeby dobrze Ci służyły” Pawła Lipińskiego. RE-WE-LA-CJA. Brak słów, całkowite pozytywne zaskoczenie, wbicie w fotel, a mózg zlasowany jeszcze nie doszedł do siebie. A pewnie Szanowni PT Czytelnicy dobrze pamiętają, że ubiegłoroczna prezentacja Wujka Pawła oględnie mówiąc mnie nie zachwyciła. Normalnie, cytując klasyka, no, no, nie poznaję kolegi. Treść opowiedziana wartko, z humorem, z akcentowaniem wtedy kiedy trzeba, tego co chce się powiedzieć, utrzymując skupienie widzów jednocześnie ich nie męcząc. A co najważniejsze, to co zostało zaprezentowane wciąż mnie intryguje i nie daje przestać o sobie myśleć, zmuszając do zgłębiania tajników samodzielnie. Dlaczego ja na tej prezentacji nie byłem ze dwa lata temu? Wstrzelenie się w moje potrzeby idealne. Oby tylko mi starczyło zdolności by nauka w las nie poszła...
- „Jeden rozmiar nie dla wszystkich, czyli NoSQL w środowisku Java” Jarosława Pałki. Nie spodziewałem się wiele, bo trafiłem na nią głównie dlatego, że równolegle nie było nic co by mnie jakoś specjalnie zachęcało, a że sala wygodna i „ileż można słuchać Waldka o Oracle-u?” to zostałem, i mimo pewnych nie dociągnięć, szczególnie z dopasowaniem prezentacji do czasu, nie był to czas zmarnowany. Chociaż z planowanych baz nie relacyjnych udało się pokazać tylko jedną, to i tak posmak nowości oraz sprawne prowadzenie wystarczyło do uznania jej za pozytywny akcent na zakończenie.
niedziela, 20 czerwca 2010
Małe Co Nieco dla ciała, coby przy komputerze nie paść z głodu
- 35-40 dag kleiku ryżowego
- 1 szklanka cukru
- 1 paczka margaryny
- 1 łyżeczka proszku do pieczenia
- 5 średnich jajek
- zapach kokosowy, ew. 10 dag wiórków kokosowych
- dżem do przybrania
- Kleik ryżowy, cukier, łyżeczkę proszku, zapach kokosowy, zmiękłą margarynę i żółtka ugnieść na kruszonkę.
- Białka utrzeć na pianę, którą następnie dodać do kruszonki i ugnieść na jednolitą masę.
- Z otrzymanej masy formować małe kulki (mniej więcej wielkości orzecha włoskiego).
- W kulkach wyrobić palcem dziurki na dżem i je wypełnić.
- Piec 30 minut w wygrzanym piekarniku (temperatura piekarnika 155° C).
Spotkanie trzeciego stopnia z wytrzymało dziarską Legendą
wtorek, 25 maja 2010
Review: Groovy In Action
This note is in English (or Almost-Like-An-English) language, because this review should be readable and understandable also by Publishers of reviewed book, and this doesn't mean that I switch language of this blog to English. Also, I hope that it isn't too many language errors and mistakes. Enjoy!
This book is split into three parts. First one is about language, second is about advanced features which coming with Groovy distribution, and third contains some hints and guides, which could help in day-to-day work with Groovy.
Cause, this book is about something new to me, is from „In Action” series and also I am „in action” with my project, I've read (and still reading) it with „in action” style. What it means? It means, that in given time, I'm reading this section of book which exactly I already need, instead of reading it page-by-page. Now I can say that with this book this kind of reading is pleasure. Easy-reading language (this is very important to me, as I'm not native English speaker) combined with easy-understanding examples makes learning about features of Groovy quite easy, interesting and enjoyable. Very good sectioning makes jumping through book (in case of looking forward or backward in our own learning process) content also easy.
What about content of book's part? I've read all of first part, cause knowing features of language is a basement of using it, and the only word which I can say about this part is „Great!”. It contains exactly what is needed to understanding how to use Groovy, what is possible to do with language, and how. After reading it I haven't almost any problems with understanding more advanced examples (found in other parts of the book, or in the web) at language level (logical level is other story ;)).
Second part I read more selective, so there are some sections at which I've took only a look (e.g. like most part of chapter about integrating). But in general, whatever I've read it is still in high level. Although sometimes it was quite hard to understand how something works without little help of external materials. I think, that in some places there could be more examples or more detailed explanation, especially in chapter about builders (This is powerful and useful feature of Groovy, but only reading and making examples from book is not enough to good understanding theirs idea, I think).
And at least, the last, third part. To be honest, I only take a short look at the most part of it. Why? Cause chapters are very specific. Cheat sheets or tips'n'tricks can be (and they are) useful quite often, but advanced Windows scripting or unit testing using JUnit isn't something important for me (as far as I don't script Windows or not use JUnit), so I only took a look, say „hmmm... okay...” and read something other (but if someone needs it, I think these chapters could be handy).
So, to sum up. A few years ago Phil Collins sang about groovy kind of love, today I can say that Groovy is kind of love. And this book is proof of this fantastic feeling (especially first two parts), even with its small weakness, which, I hope, will be polished in incoming second edition.
P.S. The biggest weakness of this book? It isn't in Polish, but maybe in future... Who knows...
poniedziałek, 10 maja 2010
Berliński księżyc nad szczecińskim stolcem
Żwawe sreberko szczurkiem zawijane
sobota, 24 kwietnia 2010
Podwójny zastępca całkowitego dowódcy
piątek, 23 kwietnia 2010
Nie taki diabeł straszny, czyli gorące wrażenia po debiucie.
czwartek, 22 kwietnia 2010
Cierpliwości cnotą obdarzeni wynagrodzeń zostali - cz. II
sobota, 17 kwietnia 2010
VIII Spotkanie Szczecińskiej JUG - trema debiutanta
Zamierzam również pokazać trochę kodu w działaniu, mimo, że Paweł Szulc na ubiegłorocznej Javarsovii był bardzo zadowolony z efektu wstawiania zrzutów ekranowych do prezentacji, ale w tym wypadku jednak nie będzie jakiś mocno czasochłonnych kompilacji (co innego przekompilowanie i umieszczenie jakiegoś potężnego serwisu sieciowego, tu zrzuty ekranowe pomagają oszczędzić mocno na czasie ;)). Jeśli zostanie czasu nie widzę przeszkód w odpowiadaniu na wątpliwości Słuchaczy przez szybkie podkodowanie tego i owego.
Czego zaś na pewno nie będzie? Niestety, nie uda mi się zaprezentować jednej, bardzo ciekawej i potężnej funkcjonalności dostarczanej przez TestNG ze względów... technicznych (w myśl zasady, że szewc bez butów chodzi, to ja sprzętowo do tyłu jednak jestem...). Jednakowoż coby nie zniechęcać, to co to jest wspomnę na prezentacji dopiero. Dodam tylko, że ten „pominięty” temat to jest dobry materiał na osobną prezentację.
Nie będzie też obcowania z prawdziwym guru, gdyż tak jak P.T. Czytelnikom pewnie wiadomo, prezentacja ta powstawała przez tak zwane „rozpoznanie bojem” i raz, że codziennie się dowiaduję czegoś nowego, a dwa, że mogę się nie zdążyć dowiedzieć przed prezentacją. Szczególnie jeżeli chodzi o jakieś bardziej wymyślne i zaawansowane „sztuczki i kruczki”.
Podsumowując, serdecznie zapraszam, mając jednocześnie nadzieję, że uda mi się spełnić zarówno Wasze jak i moje, własne oczekiwania. A ponieważ zostało jeszcze trochę czasu, to jeśli ktoś ma jakieś uwagi, zachcianki i inne roszczenia co do prezentacji to może je umieścić w komentarzach. Obiecuję, że się nad nimi zastanowię, natomiast nie obiecuję pozytywnego rozpatrzenia. ;)
poniedziałek, 22 marca 2010
Coopera test widoczkowy
P.S. Wynik podany w komentarzu przez Pawła, trochę mnie zaintrygował. Dlatego też "zmusiłem się" do zrobienie testu dla Chrome 4.1. Cóż, u mnie jednak, Chrome od Fx nie odbiega znacząco.
niedziela, 21 marca 2010
Mleczka kauczukowego swojskie bajanie...
- Uruchamiamy program konfiguracyjny dla admina (Maintenance (Admin)|Settings)
- Przechodzimy na zakładkę Languages i zaznaczamy ptaszka przy opcji polish
- Następnie wybieramy zakładkę Packages i w drzewie dla gałęzi Language Support|Polish zaznaczamy pakiety polski oraz Polish hyphenation patterns
- Zatwierdzamy przyciskiem OK. Powinny dociągnąć się brakujące pakiety, a baza formatów zostanie przebudowana.
- Uruchamiamy program konfiguracyjny dla zwykłego użytkownika (Maintenance|Settings)
- Na zakładce General naciskamy przycisk Update Formats
- Zatwierdzamy przyciskiem OK
- W większości przypadków dokumenty z pakietem polski powinny się teraz grzecznie kompilować :)
czwartek, 18 marca 2010
Uprzednio żyżnego pola ryżowego kłopoty
- artykule Davida M. Cummingsa w L.A. Times, gdzie Autor poprzez przykład z własnego doświadczenia (misja Mars Pathfinder) zwraca uwagę, że nieumiejętność powtórzenia danego błędu, nie oznacza, że on nie wystąpił lub, że nie wystąpi kolejny raz.
- Oraz dwa wpisy Jamesa Bacha na jego blogu - Porady dla prawnika i Analiza całej tej historii, w których to Autor wykorzystuje ten przykład do pokazania różnego rodzaju pułapek, które czyhają w procesie produkcji i testowania oprogramowania.
niedziela, 7 marca 2010
Opery odsłona najnowsza
Sława!
Tak ciut niespodziewanie przeglądarka Opera doczekała się nowej odsłony, tym razem oznaczonej numerkiem 10.50.
Nowa odsłona przynosi, co zrozumiałe, nowości. A jakie? A takie:
- nowe silniki - Carakan (dla JavaScript), Presto (dla HTML, CSS i takich tam) oraz Vega (grafika - cokolwiek to oznacza), mają sprawić, że wszystko to, co oglądamy sobie w sieci będzie szybsze, ładniejsze i w ogóle. No i po tym tygodniu użytkowania muszę przyznać, że istotnie jest lepiej niż było. Mam subiektywne odczucie (ciekawe na ile to efekt placebo?), że przynajmniej niektóre strony chodzą szybciej. Mam obiektywne odczucie, że niektóre nie najlepiej (a właściwie to do d...) napisane strony, pod Operą obecnie chodzą mniej więcej tak, jak chodziło o to twórcom (tu można by pewnie zacząć fajny wątek o poprawnej interpretacji dokumentacji JavaScriptu chociażby, ale nie czuję się na siłach udzielać. Aczkolwiek poczytać by można, byle nie teksty "fanbojowskie" ;))
- tryb prywatny (aka porno) - czyli wzorem konkurencji, przeglądanie sieci "bez zostawiania śladów" w historii, kaszy i tak dalej. O tyle fajnie rozwiązany, że można sobie go ustawić per karta, lub per okno.
- widżety poza przeglądarką - czyli widżety również osobne, bez konieczności odpalania samej przeglądarki. Nie wypowiem się, bo nie używam :)
- zmiany w interfejsie - czyli wizualne przypolerowanie. Opcje które mi się bardziej rzuciły w oko:
- można sobie ustawić zamiast paska menu, przycisk O, taki analog przycisku Start z Windows.
- zmieniony sposób powiadamiania użytkownika na zbliżony do znanego z konkurencji (w tym niemodalne powiadomienia)
- zmieniona lista rozwijalna przy wpisywaniu/wybieraniu adresu
- zmieniony sposób prezentacji wyszukiwania na stronie
Dla zainteresowanych pełna lista zmian, a dla wszystkich to stwierdzam, że zmiany generalnie na plus, i nadal mi z Nią wygodnie (przykro mi Mozille i inne Chromy ;)).
czwartek, 25 lutego 2010
Historia lubi się powtarzać, albo nowy wygląd fb2k...
Sława!
Ponad rok temu żywot tego dzienniczka zaczął się niewinnie od wpisu dotyczącego pudrowania noska pewnemu odtwarzaczowi muzycznemu. Czas mijał, wychodziły nowe wersje odtwarzacza, a ja też zmieniłem sobie jego wygląd na bardziej mi odpowiadający.
Jednakże odtwarzaczem ciągle jest foobar2000, a autorem skórki ciągle Br3tt. Otóż w roku ubiegłym objawił on cudo zwane XChange (w najnowszej wersji kompatybilny z fbk 1.0), charakteryzujący się przede wszystkim wysoką konfigurowalnością bez zbytniego dłubania w skryptach. Rozmieszczanie komponentów jest bajecznie proste, dzięki czemu nawet największy laik sobie poradzi i dostosuje do swoich potrzeb (oczywiście po przeczytaniu instrukcji obsługi). Zdecydowanie polecam!
P.S. Prezentacja się tworzy, ale sami wiecie. Olimpiada.
wtorek, 9 lutego 2010
Marudzenia, marudzenia aż po horyzontu kres...
Sława!
Tak coś mija czas, a blog ten pokrywa się śnieżnym puchem niczym świat za oknem (Ach! Uwielbiam Prawdziwą Zimę, szkoda tylko, że mrozy ze słońcem tak krótko, a soli na ulicach tak wiele) więc postanowiłem sobie trochę pomarudzić, a może nawet wypłakać się w jakieś ramionko życzliwe ;)
Co tam więc słychać u mnie? Ano jak Szanowni Czytelnicy pewnie wiedzą, zabrało mnie się na poznawanie w praktyce nowych technik, dzięki Leszkowi i wydawnictwu Manning w boju tym zażartym wsparty jestem autoramentem cudzoziemskim, czyli Groovy In Action. Pozycja, przyznam się bez bicia, zacna, aczkolwiek na recenzję spod pióra mego trzeba będzie poczekać chwil kilka, aż chociaż po łebkach przelecę rozdziały "o mniej (chwilowo) intrygującej zawartości". W każdym bądź razie, dla mnie, cała ta idea książka za recenzję, którą mogę wykorzystać dzięki Jugowi, jest czymś fantastycznym. Przy okazji, jeśli ktoś zainteresowany czyta, to wiadomo może czy są gdzieś dostępne "brakujące" recenzje z biblioteczki naszego juga? Wiem, wiem, mógłbym spytać pożyczalskich, ale przecież miałem marudzić ;)
Drugi punkt, to sam groovy w akcji (nomen omen, albo nawet lelum polelum). Otóż, jest fajnie. Rzekłbym nawet bardzo fajnie. Najśmieszniejsze, że jakbym miał powiedzieć, co konkretnie fajnego i dlaczego, to miałbym problem, ale jakoś mam subiektywne poczucie mniejszego "bólu" przy kodowaniu tego co sobie wymyśliłem. Niestety, w swoim aktualnym projekcie, napotkałem trochę głupią sytuację, gdzie w jednym miejscu nie mogę sobie umilić życia tak jakbym chciał. I to nie tylko z winy grówiego. Otóż tenże grówi "ozdabia" (opakowuje? Jakoś nie mogę znaleźć odpowiedniego słowa) sobie w pewnych sytuacjach klasy/obiekty Javy takim czymś jak MetaClass. I to właśnie jest źródłem frasunku, bo wykorzystuję klasy od zewnętrznego dostawcy, gdzie przy tej zabawie dostaję w pewnym momencie ClassNotFoundException (zresztą zupełnie zasadny). Cóż, wydaje mi się, że chwilowo, nie chce mi się jakoś myśleć nad "eleganckim" rozwiązaniem problemu, więc zrobię na okrętkę, a później się zobaczy (jak zwykle prowizorka ma szansę zostać najtrwalszym elementem systemu ;)).
A jak już przy zobaczeniu jesteśmy, to wbrew poprzednim wpisom, jednak wcale nie zostałem całkowicie przy Eclipsie. Z niewiadomych przyczyn, jednak mój kod, ni z gruchy, ni z pietruchy, przeprosił się z Ideą, więc w tym jednym projekciku pozwalam sobie wykorzystywać ją. I generalnie jestem zadowolony, chociaż pewnie skończy się na tandemie Eclipse+Idea. Oba środowiska potrafią sobie współdzielić projekty, na ile bezproblemowo to sprawdzanie tego jeszcze przede mną, ale parę opcji wygodniejszych jest jednak w Eclipse (szczególnie ogląd hierarchii klas, chyba, że ktoś wie jak "przypiąć" w Idea podgląd struktury na stałe do jakiegoś elementu?).
Na koniec, skoro już o ideach wspomnieliśmy, to taka drobna uwaga (bo wiem skądinąd, że Leszek z Amorfisem tu zaglądają ;)). W projekciku tymże mym tajemnym używać sobie zamyśliłem TestNG. W tej chwili na podstawowym poziomie, ale już za chwileczkę, już za momencik, bardziej "zaawansowane" zagadnienie trzeba będzie mi rozgryźć. Czy byłby sens, aby przy okazji tego rozgryzania spróbować wypocić jaką drobną prezentacyjkę, co by juga sierotkę trochę odkurzyć?
piątek, 15 stycznia 2010
Zaćmione znikłe asystenty
Sława!
W trakcie moich skoków w bok, które opisuję w poprzednim wpisie, miałem okazję od lat niepamiętnych (czyt. czterech ;)) uruchomić świeżą, nieśmiganą instalację Eclipse, i nawet coś po próbować na szybko pokodować. No więc piszę jakiś szybki całkowicie przykładowy kod, bach CTRL+SPACE i... O! A to co takie fajne? W podpowiedziach na pierwszym miejscu wpis typu Anonymous Inner Type, który po wybraniu od razu tworzy zręb anonimowej klasy z metodami implementowanego interfejsu, żadnego Add unimplemented... nie trzeba bajka. Czemu nie mam w swoim "produkcyjnym" Eclipsie? Tylko podpowiedzi co do samych typów, choć wersja środowiska ta sama?
Rzut oka na "domyślną" konfigurację podpowiadacza (Content Assist) nie rozwiązała problemu, gdyż w "produkcyjnym" środowisku mam nawet trochę więcej i ogólnie, i pozaznaczanych elementów (z tych widocznych na obrazku, zaznaczone mam jeszcze Java Type Proposals). Chcesz się droczyć? To się podroczymy. Trochę ponaciskania, powłączania tego i owego, jakieś Apply po drodze i... Tak! Tak! Zepsuło się, i nie ma już tej zabawki. Restore Defaults. Nie pomogło. Hmmm... Ki diabeł? W końcu wyłączenie wszystkich związanych z jawą podpowiadaczy, zatwierdzenie, powrót do opcji, zaznaczenie od nowa Java Proposals i Java Type Proposals, zatwierdzenie. Nazad do przykładu, trach klawisze, i są oba. No mordka sama się śmiać próbuje już, ale wrodzona marudność powstrzymuje ją od tego i rzecze - te, te, poczekaj na poważnym spróbujmy. No to spróbujemy to samo, i voila! Jest! Teraz się może mordka radować do woli.
Tak to kolejny plus wspominanego przeglądu wyszedł niczym szydło z worka. Możliwość ponoć od dawna w środowisku dostępna, a jakoś jak się zabunkrowała to skutecznie. Ciekawe co jeszcze mi się bumeluje...
czwartek, 14 stycznia 2010
Osiołkowi w żłoby dano...
Sława!
...a tenże osiołek wlazł drugi raz (co najmniej) do tej samej rzeki. Choć ponoć się nie da. Ale po kolei.
Otóż. Tak to się złożyło, że męcząc się już prawie rok z pewnym projektem, który wydawał się zdecydowanie mniej czasochłonny (jak to zwykle bywa ;)), wpadłem jakiś czas temu na genialny (jak to zwykle bywa ;)) pomysł wykorzystania w nim do udogodnienia innym i sobie pracy języka Groovy. Do tego, co ważne, w tandemie z TestNG. No więc, ponieważ dzionka każdego używam (i lubię go używać) Eclipse, zacząłem standardowo od znalezienia wtyków umożliwiających mi to co chcę.
No i vale, zainstalowane. Odpalamy, pierwsza siurpryza, eklipsowy wtyk TestNG nie chce odpalać klas napisanych w Groovym. Minuta, osiem, przeszkoda usunięta. Nie wiadomo dlaczego, wtyk ten, dla tychże klas ustawiał poziom adnotacji na javadoc zamiast JDK. Szybka zmiana i bangla. Niestety, później okazało się, że wtyk grówiowy (?) ma parę błędów, w tym jeden co najmniej mocno denerwujący. Otóż w ówczesnej jego wersji, uparcie twierdził, iż klasa anonimowa zrobiona z interfejsu jest be i w ogóle, bo superklasa nie może być jedynką (czy coś w ten deseń). No żeż, a pies Cię lizał. Skoro jest tyle IDE dookoła, to co ja Cię będę się uparcie i nienażarcie trzymał Ty Eclipsie niewdzięczny. Zaraz sobie coś przygrucham na Twoje miejsce.
Jak pomyślał żem był, tak też zrobił. Co tam panie chwalą? Ano IntelliJ IDEA chwalą. Teraz także w wersji darmowej. No dobra, to sprawdzimy co to. Wsparcie do Groovy jest, do TestNG takoż samo, nic tylko używać. Przyznam się, że pierwsze wrażenie było dziwne. Acz parę chwil poświęconych na zapoznawanie się, i mimo pewnych kłopotów ze zwalczaniem przyzwyczajeń z Eclipse (gł. skróty klawiaturowe używane czasem bezwiednie), jakoś tam praca się zaczęła. Groovy śmiga, TestNG po drobnych komplikacjach też zadziałało (nie wiem dlaczego, póki się nie wyrzuciło z propozycji klas JUnit, nie chciało coś podpowiadać dobrze w edytorze). Trochę braków, błędów i wypaczeń jest, ale też i parę fajnych rzeczy. Generalnie na plus, zaczyna mi się podobać. Więc przenosimy projekcik z Eclipsa, jednocześnie pozbywając się z niego mavena, co by życia sobie nie utrudniać (takie osobiste urazy ;)). Tu podkodować coś, tu coś przypacykować. Alles gut się miraży. Odpalam efekty i... zwiech. Mimo straty paru godzin, niestety nie udało mi się znaleźć dlaczego w pewnym momencie, mój owszem dość specyficzny, kod zawieszał się odpalany spod Idei (to samo odpalane z Eclipse'a czy z linii komend jak bozia przykazała śmiga aż miło). Pewnie kwestia gryzienia się z ideowym biegaczem. Cóż, nikt nie jest doskonały, ale w domciu można Idei spróbować do bardziej normalnych zadań, bo wygląda istotnie obiecująco.
Skoro nie Idea, to co? JDeveloper? Chociaż wspiera pożądane przeze mnie technologie, to nie tak dawno próbowałem się do niego przekonać, i cóż... Na ponowną szansę jeszcze chyba za wcześnie... Tak więc został jeszcze jeden gracz, często wychwalany wręcz pod niebiosa (np. w komentarzach do ankietki na dZone) - NetBeans. Dawałem już mu szansę. Wersjom 4, 5 na 6 kończąc. Nigdy to nie była długa przygoda, bo cóż. Ma coś takiego co mnie odrzuca, ale mając w perspektywie emacsa i terminal ;) postanowiłem znów pozwolić mu się zaprezentować. Nie była to długa prezentacja, niestety, ot przykra niespodzianka, od wersji 6.5 nie ma wsparcia dla TestNG. Dziękuję postoję. Zastanowię się co dalej.
A dalej zostało... Eclipse. W międzyczasie, kiedy zaznawałem swawol z kolejnymi kandydatkami na wymarzone IDE, ta aplikacja poszła do fryzjera i manikiurzystki, co by się odstrzelić na bóstwo. Co prawda nie do końca wyszło tak, żeby mnie olśnić, ale biorąc pod uwagę, że zaktualizowany plugin do grówiego nadal RC, to można co nieco mu wybaczyć. Ważne, że obecnie da się z nim pracować, a czasu "zmarnowanego" na poszukiwania zastępnika nie żałuję, bo zawsze dobrze od czasu do czasu sprawdzić co w trawie piszczy. Kto wie czy wreszcie lepsze nie jest już wrogiem dobrego?
niedziela, 10 stycznia 2010
A miało być tak pięknie...
Sława!
No niestety, jak poinformował Leszek na stronie Szczecińskiego JUGu tegoroczna edycja konferencji Java4People nie odbędzie się. Serce moje napełnione jest więc niekłamanym żalem, bo poza Javarsovią nie ma chyba w kraju innej wartej mojego zainteresowania konferencji (formuły i poziom zarówno Cooluarów jak i GeeCona nie są tym co akurat ten tygrys lubi najbardziej). Miejmy nadzieję, że j4p jeszcze wróci, nawet jeżeli w formie biennale czy triennale.
Bijąc się w pierś, bo nie narzucałem się, szczerze mówiąc, Organizatorom z pomocą (z różnych pobudek, o czym może dalej, jak się nie rozmyślę) pochylam na chwilę głowę nad pewnym zjawiskiem (miejmy nadzieję, że nie regułą). Otóż wydaje się, że nasz jug dotyka podobne obumarcie jak lokalny spin. Że znów nieźle się zaczęło, ale dość szybko zbiór osób które chcą, potrafią i mają co przekazać zaczął się bardzo szybko wyczerpywać. O ile w wypadku spina to nawet mnie nie zdziwiło, bo to trochę taka "nie jasna" organizacja, no to w wypadku juga chyba jest to jednak pewne zaskoczenie.
Przecież Szczecin nie jest jakąś jawową pustynią. Programistów Javy zatrudnia całkiem spora liczba istniejących tu firm, w tym te największe/najbardziej znane. Wydawałoby się, że nie ma bata, to musi wypalić... A wygląda, że i owszem, wypaliło, ale się. Ciekawi mnie co jest tego przyczyną? Czy generalnie nie lubimy się dzielić wiedzą z innymi? Czy może jednak lubimy, ale się boimy? Azali ani nie lubimy, ani nie boimy, ale wystarczy nam to czym się podzielimy z kumplami z pracy? Albo może uważamy, że nie mamy się czym dzielić, bo przecież nic takiego nie umiemy, na niczym takim się nie znamy? A może jednak, do tego wszystkiego nie mamy czasu na "zabawy"?
Cóż, jeśli o mnie chodzi, to ja ewidentnie podpadam pod przypadek, który "nic takiego nie umie i na niczym specjalnym się nie zna". W życiu nie napisałem nawet sieciowego witajświata, takie rzeczy jak Wicket, Seam, ba Tomcat i Apache są tylko jakimś tam echem bijącego gdzieś tam dzwonu, nie będę nawet przez grzeczność wspominał o GWT czy innym JSF. Podobnie bazodanowe zagadnienia - od JDBC do Hibernate, obiło się gdzieś o uszy i tyle. A jak już się coś zdarzyło poznać, to raz, że raczej trudno mówić o jakimś mistrzostwie, a dwa, to jeśli już, są to raczej technologie albo powszechnie znane, albo same w sobie mało interesujące i raczej nie topowe. Skoro tak, to nieraz sobie zadawałem pytanie, czy jest jakiś sens pasożytowania na takim jugu? Teraz zaś zaciekawia mnie ile takich "pasożytów" procentowo było wśród wszystkich zainteresowanych jugiem? Bo może, kurteczka, człowiek (?) się niepotrzebnie krępuje kalibrując miarkę do (wyobrażonego) poziomu osób, które może i biją wiedzą na głowę, ale nie potrzebują (poza nielicznymi wyjątkami) takich grup do niczego, zamiast się podkalibrować pod tych co na spotkaniach się pojawiali?