Co nowego w Sencha GXT 3?

sencha-logo

Długo oczekiwana kolejna wersja Ext GWT ukazała się niedawno pod nową nazwą: Sencha GXT 3. Obsunięcie wydania było dość spore, bo jak dobrze pamiętam, pierwsze wzmianki o GXT 3 mówiły jeszcze o wakacjach 2011. Czy warto było czekać? Jakie zmiany przynosi nowa wersja? Zaraz się o tym przekonamy.

GXT 3 miało w założeniach skupić się na integracji z rozwiązaniami, które pojawiły się w GWT 2.x. Ext GWT 2 pojawiło się jeszcze za czasów GWT 1.5, gdzie takie dobrodziejstwa jak RequestFactory, UiBinder, Autobean, Code Splitting czy wiele innych, były dopiero w zamysłach twórców GWT. Ext GWT wprowadzało więc własne rozwiązania, niektóre dość ciekawe, np. wsparcie Java Beans za pomocą BeanModel’i. Z czasem jednak w GWT pojawiały się natywne mechanizmy, które rozwiązywały poszczególne problemy na nieco niższym poziomie, chociażby mechanizm Autobean, który jest silnie wykorzystywany przez GWT RequestFactory. Kod Ext GWT był jednak tak zaprojektowany, że korzystanie z nowych udogodnień było bardzo trudne albo zupełnie niemożliwe.

Czytaj więcej »

Rowerem jeździć znowu czas zacząć

Trochę późno, ale tak się złożyło, że dopiero teraz mogłem przywieźć rower do Warszawy. Jeszcze nie miałem nawet kiedy zrobić pozimowego przeglądu. A muszę, bo czasami przerzutki odmawiają posłuszeństwa i łańcuch skacze przy mocniejszych wdepnięciach. Stojak serwisowy niedługo będę miał, więc się tym zajmę, a tymczasem wybrałem się na spokojną przejażdżkę do pracy. Samochód odpocznie, a ja zaoszczędzę na paliwie i trochę się rozruszam. Same korzyści! :)

Przy okazji postanowiłem przetestować swoją Motorolę Defy i sprawdzić, jak współgra z testowaną przeze mnie kiedyś aplikacją Move! Bike Computer. Trasa zapisała się prawidłowo, wyeksportowałem więc ją do formatu kml i wrzuciłem na portal bikemap.net.
Czytaj więcej »

Integracja Shiro, Guice i GWT

shiro-logo.jpg

Jako że w związku z nadchodzącym dłuższym weekendem majowym (ręce do góry, kto nie bierze urlopu?), nastroje dziś są mocno weekendowe, będzie szybko i przyjemnie :) Poprzednio opisywałem w jaki sposób użyć Shiro w aplikacji GWT. Obecna wtedy wersja Shiro (1.1.0) nie wspierała natywnie Guice‘a, dlatego konfigurację oparliśmy na standardowych plikach shiro.ini oraz web.xml. Oczywiście wersję 1.1.0 da się zintegrować z Guice’m, co wymaga jednak użycia kilku tricków. Jeśli jesteś zainteresowany właśnie tą wersją Shiro, to w sieci można znaleźć kilka dobrych poradników.

Od jakiegoś czasu Shiro dostępne jest w wersji 1.2.0, w której to Guice jest już oficjalnie wspierany. Niestety na oficjalnej stronie Shiro nie wszystko zostało dokładnie wytłumaczone, dlatego chcę zaprezentować Ci najprostszy sposób połączenia tych dwóch framework’ów. Użyjemy do tego poprzednio stworzonej aplikacji, tak aby skupić się tylko na integracji z Guice’m. Czytaj więcej »

Jak szybko zrobić zakupy w Google Play?

google-play-logo

No właśnie, do tej pory jakoś moja Motorola Defy żyła bez płatnych aplikacji i dobrze jej z tym było. A było tak przede wszystkim przez to, że wiele gier i aplikacji wydawana jest w obu w pełni funkcjonalnych wersjach: jednej darmowej z reklamami i drugiej płatnej bez reklam. Z wyskakującymi tu i ówdzie reklamami jakoś da się żyć, jeśli tylko w zamian dostajemy niezbędną dla nas funkcjonalność. Gorzej, jeśli wersja darmowa nie spełnia wymagań, wtedy po prostu szukałem jakiegoś zamiennika.

Od jakiegoś czasu przewijało mi się jednak kilka płatnych tytułów, które kosztują niewiele (cena oscylująca w granicach kilku PLN) i które nabyłbym bez zastanowienia. Nie mogłem jednak tego zrobić, bo nie dorobiłem się jeszcze normalnej karty kredytowej (pewnie z lenistwa :) ). Wczorajszego wieczoru coś mnie jednak tknęło, aby zobaczyć czy da się taką kartę załatwić od ręki, tak abym jeszcze przed końcem dnia nabył możliwość kupna aplikacji w Google Play. Karta mogła być czysto wirtualna, bo nie potrzebuje płacić nią w fizycznych sklepach. Gdyby mi się nie udało, pewnie zostawiłbym temat znowu na najbliższe kilka miesięcy, na szczęście jednak sprawy potoczyły się inaczej.

Czytaj więcej »

Jak pogodzić maven’a z maven’em? (m2e vs maven-eclipse-plugin)

maven-logo

W projektach opartych o Maven‘a często do integracji ze środowiskiem Eclipse używany jest plugin maven-eclipse-plugin. Za pomocą tego pluginu spod konsoli można wygenerować wszystkie niezbędne pliki projektu wymagane przez IDE. Z drugiej strony Eclipse musi zostać wyposażony w plugin do integracji z Maven’em, dzięki czemu będzie poprawnie rozpoznawał zależności, zapewni graficzne wsparcie edycji plików *.pom i dołoży klika innych przydatnych rzeczy. Wybór nie jest tu duży i zazwyczaj pada na wtyczkę m2eclipse (oprócz tego dostępny jest jeszcze Eclipse IAM).

Załóżmy więc, że wygenerowaliśmy pliki projektu za pomocą polecenia mvn eclipse:eclipse. Jeśli spróbujemy zaimportować taki projekt w IDE, z pewnością zauważymy, że m2eclipse nie jest w stanie poprawnie rozpoznawać zależności projektu. Gdy podejrzymy w edytorze tekstu plik .project, zobaczymy tam komentarz, który jednoznacznie wskazuje na problem:

NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse.

Jak zatem przerobić taki projekt, aby był poprawnie rozpoznawany przez m2eclipse? Wystarczy kilka drobnych zmian w plikach .project i .classpath. Czytaj więcej »

Apache Shiro – uwierzytelnić lepiej?

shiro-logo.jpg

Jakiś czas temu opisywałem, jak szybko zaimplementować uwierzytelnianie w aplikacji GWT przy pomocy JAAS’a. Wtedy byłem trochę zafascynowany tym ostatnim i nie dostrzegałem wielu jego wad. Prosty moduł uwierzytelniania (mniej więcej taki, jaki wtedy stworzyliśmy) nie przysparza jeszcze większych trudności, jednak każde dodatkowe wymagania sprawiły, że JAAS coraz bardziej zaczął mnie zniechęcać. Nie twierdzę, że jest zły, tylko jego silna integracja z mechanizmami serwerów aplikacji sprawia, że aplikacja staje się mało przenaszalna i praktycznie przed każdym wdrożeniem na inny serwer moduł logowania trzeba implementować od nowa. Najgorsze w tym wszystkim jest to, że niektóre serwery udostępniają łatwe i przyjazne API do rozszerzania funkcjonalności uwierzytelniania, a inne z kolei utrudniają bądź wręcz to uniemożliwiają. Jeśli wiemy, że nasza aplikacja od początku do końca będzie współpracować z jednym tylko serwerem – problem znika, nie mniej i tak się namęczymy z implementacją kilku rzeczy.

Użerając się wciąż z JAAS’em w końcu postanowiłem spróbować czegoś innego. Padło na Apache Shiro – framework ułatwiający implementację uwierzytelniania, autoryzacji, szyfrowania i zarządzania sesjami w aplikacjach Java. Shiro wywodzi się ze starej biblioteki JSecurity i obecnie jest aktywnie rozwijane przez wielu deweloperów. Może być użyte w zwykłych aplikacjach Java oraz aplikacjach webowych, a mocna modularyzacja kodu pozwala na łatwe podstawianie swoich implementacji do tego co potrzebujemy. Przy okazji zawiera też wiele podstawowych metod uwierzytelniania, z których można skorzystać praktycznie od razu. Dodatkowo jeśli nasza aplikacja musi obsługiwać mechanizmy serwerowe, w Shiro można napisać własną implementację modułu logowania JAAS.

Czytaj więcej »

Castillo de Solisticio – dobre wino w dobrej cenie!

procenty

Dziś będzie zupełnie z innej beczki. Jako że od czasu do czasu lubię rozkoszować się jakimś lepszym trunkiem, często eksperymentuje z różnymi alkoholami. Zazwyczaj jest też tak, że te lepsze można dostać w całkiem przyzwoitej cenie, która nie zrujnuje budżetu domowego. W przypadku win najczęściej celuję w przedział 15-20zł, czasami więcej, jeśli jakieś wino zainteresuje mnie szczególnie. Uwierz, za te pieniądze można kupić naprawdę dobry trunek.

Ostatnimi czasy gustuję w alkoholach pochodzących z Hiszpanii. Słoneczny, ciepły klimat szczególnie sprzyja powstającym tam winom. Dlatego coraz częściej w hipermarketach podchodzę do półki z winami pochodzącymi właśnie z tego kraju. Będąc niedawno w Makro wypatrzyłem czerwone wino Castillo de Solisticio, rocznik 2005 - w cenie 19zł. W tej kwocie naprawdę ciężko jest dostać tak długo leżakujące wino, w dodatku wytwarzane w procesie produkcji zwanym Reserva. W zakupie utwierdziła mnie etykieta na odwrocie butelki, wskazująca na produkcję wina na rynek nie tylko polski. Pod etykietą znalazła się jedynie mała nalepka z tłumaczeniem na nasz język. Czytaj więcej »

1812 – Serce Zimy na Androida już jest!

sz_logo_heart_transparent_mini

Ukazała się już pełna wersja znakomitej polskiej produkcji – gry pod tytułem: 1812 – Serce Zimy. Dla niewtajemniczonych, jest to interaktywny audiobook, czyli gra opierająca się prawie wyłącznie na dźwiękach. Gra swoją premierę miała 27 października 2011 i była początkowo dostępna jedynie na platformę iOS. Zgodnie z zapowiedzią twórców, pod koniec listopada ukazała się na wszystkie pozostałe obsługiwane platformy, łącznie z Androidem.

Muszę przyznać, że odkąd uruchomiłem wersję demo dostępną o wiele wcześniej, z niecierpliwością oczekiwałem wersji pełnej. Demo oferowało około kilkudziesięciu minut rozrywki, które prezentują przedsmak tego, co można zobaczyć (a raczej usłyszeć) w pełnym wydaniu. Niesamowitym uczuciem było położenie się wieczorem z założonymi na głowę słuchawkami i wczucie się w rolę Korwina Giedyminowicza. Bardzo podoba mi się świat kreowany przez grę, gdzie wydarzenia historyczne (inwazja wojsk Napoleona na Rosję) świetnie zostały połączone z elementami fantasy. Doskonale dobrana obsada, a szczególnie Piotr Fronczewski w roli narratora, przypomniała mi dawne lata spędzone nad świetnym grami RPG, a szczególnie Baldur’s Gate, w którym również można było usłyszeć Fronczewskiego.

Na uwagę zasługuje niska promocyjna cena produktu: 12,18zł przy płatności przelewem i 23,37zł przy płatności SMS. Gra dostępna jest w tej cenie do końca bieżącego roku.

Zainteresowanych zapraszam więc na oficjalną stronę gry i zachęcam do zakupu. Ja już kupiłem!

Google otwiera kod GPE!

Logo GWT

Google na swoim blogu poświęconym GWT ogłosiło, że udostępniło kody źródłowe Google Plugin for Eclipse, łącznie ze źródłami GWT Designer‘a. Kod został wydany na licencji Eclipse Public License (EPL) v1.0.

Co to dla nas oznacza? Od tej chwili każdy może mieć wgląd do źródeł obu projektów, każdy może też dołączyć do ekipy programistów. Można więc się spodziewać, że rozwój obu narzędzi nieco przyspieszy, a poprawki błędów będą pojawiały się szybciej. W przyszłości powstaną też być może komercyjne rozwiązania będące forkami powyższych projektów, mającymi jednak lepsze wsparcie od strony firm je produkujących.

Na uwagę zwraca też fakt ciekawej polityki Google’a, które rozwija projekt o zamkniętym kodzie i otwiera go dopiero w momencie uzyskania pożądanej funkcjonalności. Podobnie jest przecież z poszczególnymi wersjami Androida.

Implementacja weryfikacji obrazkowej CAPTCHA w GWT i JAAS

Istotnym problemem stron internetowych są nieproszone boty, które często uprzykrzają życie nie tylko administratorom serwisu, ale też użytkownikom, którzy chcieliby mieć dostęp do treści jak najwyższej jakości. Nic przecież tak nie drażni jak mnogość bezsensowych komentarzy z reklamami przy wpisie, dla którego np. toczyła się ciekawa dyskusja. Od lat podejmuje się próby rozróżnienia użytkownika będącego po drugiej stronie i stwierdzenia, czy mamy do czynienia z człowiekiem czy komputerem. Jednym ze sposobów jest zastosowanie CAPTCHA. Czy jest to sposób w pełni skuteczny? Jak się domyślasz, bądź wiesz – nie, jednak z pewnością eliminuje zdecydowaną większość mało zaawansowanych botów. Ważne jest też, aby CAPTCHA nie była zbytnim utrudnieniem dla właściwego użytkownika, bo nic tak nie irytuje, jak kilkukrotne odświeżanie obrazka, aby w końcu trafić na ten w miarę czytelny.

W niniejszym wpisie nie będę rozwodził się na temat skuteczności CAPTCHA, jak i przekonywał do używania tego typu zabezpieczenia lub nie. Nie chcę też sugerować konkretnego rodzaju zabezpieczenia, bo przecież oprócz najpopularniejszych  obrazków z mało czytelnymi literami i cyframi, istnieją jeszcze zabezpieczenia głosowe, czy takie polegające na wykonaniu jakiegoś zadania matematycznego, bądź inne bardziej wyrafinowane. Po prostu dostałem zadanie w firmowym projekcie polegające na implementacji weryfikacji obrazkowej i zanim się do tego zabiorę, postanowiłem nieco wcześniej rozeznać się w temacie.

Czytaj więcej »