Archive for the 'Java' Category

Eclipse, Maven i JasperReports

Sunday, May 20th, 2012

Mamy sobie projekt zarządzany za pomocą Mavena, edytowany w Eclipse w którym to projekcie jesteśmy zmuszeni korzystać z Jasper Reports. Sam silnik JR jest bardzo fajny i mi osobiście strasznie się podoba. W połączeniu z Eclipsem wychodzą niestety wszystkie wady tego ostatniego. Eclipse nie ma dobrego edytora wizualnego. Nigdy nie miał i jest to jego [...]

Rozwiązanie zagadki projektowej numer 2

Friday, May 18th, 2012

W tej zagadce należało rozpatrzyć dwie kwestie. Synchroniczność i asynchroniczność Mając pewną długą operację zazwyczaj musimy zdecydować czy ma być ona wykonana synchronicznie czy asynchronicznie. Oba podejścia są dobre. Wybór zależy zatem od konkretnego przypadku. Ogólnie jeżeli nie mamy jakiś obostrzeń to wybór metody asynchronicznej jest co do zasady odpowiedni. Metoda synchroniczna powinna zostać wybrana [...]

Wstrzykiwanie pól statycznych w Guice

Tuesday, May 15th, 2012

Czasami życie płata nam figla i należy jakoś obsłużyć sytuację, w której dana klasa ma pole statyczne wymagające wstrzyknięcia. Oczywiście takie sytuacje mają miejsce zazwyczaj wtedy gdy trafiamy na jakiś kod zastany, w którym jest burdel i chcemy w miarę niskim pozbyć się operatora new. Okazuje się, że obsłużenie takiej sytuacji w Guice jest dziecinnie [...]

Java Slayer – Google Slayer

Wednesday, May 9th, 2012

Pytanie zrodzone na liście WJUGu: Co stanie się jak będziemy chcieli skompilować takie coś: Listing 1. I co? public class App{ public static void main(String[] args) { System.out.println(sum(1,2,3)); } public static int sum(int…numbers) { int sum = 0; http://google.com for (int i = 0; i < numbers.length; i++) { sum += numbers[i]; } return sum; [...]

Zagadka projektowa 2

Monday, May 7th, 2012

Kolejna zagadka najpierw jednak rozwiązanie poprzedniej zagadki. Który listener lepszy Oba są dobrym rozwiązaniem. Wybór powinien nastąpić w wyniku analizy polegającej na odpowiedzi na pytanie: Kto powinien decydować o tym, że dane zdarzenie zakończyło się sukcesem albo porażką? Jeżeli decyzję powinien podjąć klient to lepszym jest listener z listingu 1. Jeżeli to my decydujemy to [...]

Zagadka projektowa

Saturday, May 5th, 2012

Dziś będzie “lajcik”. Mam dla was zagadkę projektową. Załóżmy, że mamy zaprojektować klasę służącą do komunikacji z pewną usługą. Przy czym usługa ta odpowiada na zadane pytania w taki sposób, że odpowiedź może interesować wiele obiektów w ramach aplikacji. Przykładem może być tu proste wciśnięcie przycisku do którego możemy przypisać wiele listenerów. Generalnie zatem mówiąc [...]

Uzyskiwanie tokena bezpieczeństwa z Facebooka w aplikacji Vaadin

Thursday, May 3rd, 2012

Generalnie Vaadin strzela focha jak mu się chce majstrować przy przekierowaniach w oknie aplikacji. Nie jest to duży foch, ale wymaga od nas trochę pracy. Przygotowania Co należy mieć zanim w ogóle przejdziemy do pracy? Po pierwsze należy zarejestrować się jako deweloper do Facebooka. Następnie w zakładce “Aplikacje” tworzymy nową aplikację. Przechodzimy do jej konfiguracji [...]

Zarządzanie modułami Guice za pomocą ServiceLoader

Wednesday, May 2nd, 2012

Skoro w tytule siedzi nazwa klasy to oznacza, że będzie mocno technicznie. Jednak nie tym razem Opis problemu Generalnie mamy sobie kilkanaście niezależnych modułów Gucie, które łączone w różny sposób tworzą naszą aplikację. Świetnym przykładem tego typu rozwiązań są wszelkie aplikacje oparte o pluginy jak chociażby CMSy czy CRMy. Rzecz w tym, że instalacja wszystkich [...]

IoC Guice, a ręczne tworzenie (specyficznych) obiektów

Tuesday, May 1st, 2012

Pracuję dzielnie nad archetypem – stosem technologicznym dla mojej przyszłej działalności twórczej. Przy okazji naciąłem się na coś co już co najmniej dwa razy przerabiałem i nie powinienem mieć problemów. Na problem ręcznego tworzenia obiektów, których zależności są wstrzykiwane. Po co ręcznie tworzysz obiekty? Nie są to zwykłe obiekty, ale bardzo specyficzne – interceptory. Tworzymy [...]

Nie obfuskuj kodu… nigdy

Monday, April 30th, 2012

Po raz kolejny na 4p pojawił się temat “jaki obfuskator”. I po raz kolejny odpowiedź brzmi “najlepiej żaden”. Generalnie współczesne obfuskatory potrafią robić kilka rzeczy poza samym zaciemnianiem nazw. Te są przydatne: Usuwanie nieużywanego kodu. Usuwanie informacji dla debuggera. Upraszczanie niektórych wyrażeń (shriking). Optymalizacja kodu m.n. wykorzystania zmiennych lokalnych. W efekcie możemy dostać kod mniejszy [...]