Miesięczne archiwa: Październik 2011

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 »

Jak się pozbyć piernika z Defy?

Motorola Defy ukazując się na rynku miała na pokładzie zainstalowanego lekko już wysłużonego Androida Eclair. Po jakimś czasie pojawiła się oficjalna aktualizacja do Froyo (2.2.2), która dostępna jest do chwili obecnej. Nic się nie zanosi jednak aby w najbliższym czasie Defy dostała aktualizację do Gingerbread’a (piernika). Tego ostatniego dostała przecież Defy+. Jak się jednak szybko okazało, ROM z Defy+ bez problemu pasuje do Defy, o ile ta posiada lepszy moduł aparatu (pisałem o tym w poprzednim wpisie). Jako świeży użytkownik Defy szybko zabrałem się do aktualizacji. Z pośpiechu popełniłem jednak kilka błędów, przed którymi chciałbym ustrzec nowych nabywców urządzenia.

Na początku zaznaczę, że aktualizacja do Froyo przebiegła bez najmniejszych kłopotów. Automatyczna aktualizacja wbudowana w Androida oczywiście nie zadziałała, jednak zastosowanie narzędzia Motorola Software Update umożliwiło szybkie i bezproblemowe wgranie nowej wersji systemu (aplikacja sama pobiera i wgrywa nową wersję). Co ważne, wszystkie nasze dane zgromadzone na telefonie zostają, więc nie musimy robić kopii zapasowej. Po krótkim zapoznaniu się z systemem postanowiłem zabrać się za Gingerbread’a.

ROM z Defy+, to Android w wersji 2.3.4, który pochodzi z telefonów wprowadzonych na rynek Wielkiej Brytanii. Nie posiada języka polskiego, jednak jego ogromnym atutem jest wbudowana nakładka MotoBlur. ROM można znaleźć w postaci pliku SBF , który to wgrywamy poprzez aplikację RSD Lite. Zabrałem się do tego dość szybko i szczerze mówiąc nie zdążyłem nawet przeczytać pojawiających się na forach ostrzeżeń. ROM nie umożliwia rootowania oraz downgrade’u oprogramowania!!! No to zrobiło się ciekawie :)

Czytaj więcej »

Nowy nabytek – Motorola Defy

Od dłuższego już czasu nosiłem się z zamiarem zakupu nowego telefonu. Jak to jednak zwykle bywa, wybór jest ciężki. Podstawowe kryteria, którymi się kierowałem to przystępna cena (nie chciałem wydawać na telefon więcej niż 1000zł, a im mniej tym lepiej), oraz system Android. Ważne były też parametry sprzętowe, ale te są często adekwatne do ceny. Każde ciekawe rozwiązania w danym modelu działały tylko na jego korzyść, a ja szukałem czegoś wyjątkowego. Również wielkość nie pozostawała bez znaczenia, gdyż niezbyt podobała mi się perspektywa noszenia paletki pingpongowej w kieszeni.

Jako że do tej pory byłem zadowolony ze swojego wysłużonego już Touch Diamond’a, w pierwszej kolejności zwróciłem się w stronę oferty firmy HTC. Niestety zawiodłem się trochę, gdyż wszystkie ciekawsze modele znacznie wykraczały poza założenia cenowe, a reszta albo reprezentowała zbyt niski poziom sprzętu, albo była po prostu brzydka. Oklepane Samsungi z serii Galaxy również nie wzbudzały we mnie większego zainteresowania. Okazało się, że dość ciekawą ofertę prezentuje LG, gdzie model Optimus P970 wpasowywał się prawie idealnie w moje wymagania. No właśnie, prawie, bo zabrakło mu trochę dobrego wyglądu :)

Traf chciał, że padło na Motorolę Defy. Firma ta od zawsze robiła dobrze wykonane telefony ale z mało intuicyjnym interfejsem. Odkąd w ich smartfonach pojawił się Android, problem interfejsu zniknął. Sama Defy cechuje się całkiem niezłymi parametrami, dobrym wyglądem oraz „wszystkoodpornością”, a tym samym można ją kupić w miarę atrakcyjnej cenie.

Czytaj więcej »

Relacja wiele-do-wielu i Criteria API w JPA 2.0

Jakiś czas temu zapowiadałem pojawienie się artykułu na temat relacji wiele-do-wielu zrealizowanej za pomocą RequestFactory w GWT. Od tamtej pory trochę wody w Wiśle upłynęło, a ja z braku czasu nie miałem kiedy napisać o swoich poczynaniach. Jako że miniony weekend znalazłem trochę czasu i spędziłem go pod znakiem GWT, postanowiłem nadrobić zaległości.

Zdecydowałem się jednak rozdzielić temat RequestFactory od tematu JPA i opisać te dwa zagadnienia osobno. Podyktowane jest to przede wszystkim chęcią rozpisania się trochę o tym pierwszym, a i w związku z JPA chciałbym przedstawić kilka ciekawostek. Materiału trochę jest, więc zebranie tego wszystkiego razem tylko wydłużyłoby czas oczekiwania na nowy wpis. Sam projekt, a raczej kontynuacja tego rozpoczętego przy pierwszych bojach z RequestFactory i rozwijanego dalej podczas opisu możliwości walidacji encji w JPA i GWT, jest już prawie na ukończeniu i można go pobrać z repozytorium.

Relacja wiele-do-wielu (many-to-many) jest chyba najtrudniejszą relacją do zamodelowania i zrozumienia dla początkujących programistów. Jako jedyna po stronie bazy danych wymaga utworzenia osobnej tabeli (tzw. intersekcji) łączącej rekordy dwóch głównych tabel. Z tego też powodu zazwyczaj sprawia najwięcej trudności przy mapowaniu tabel na encje za pomocą JPA (podobnie zresztą w czystym Hibernate). Upraszczając problem, relację wiele-do-wielu można rozłożyć na dwie relacje jeden-do-wielu (one-to-many) i dołożyć mapowanie osobnej encji pełniącej rolę intersekcji. Wtedy jednak w encjach głównych dostaniemy bezpośredni dostęp za pomocą kolekcji jedynie do encji intersekcji, a nie do siebie nawzajem. Jak więc poprawnie napisać mapowanie wiele-do-wielu używając adnotacji @ManyToMany?
Czytaj więcej »