Scott Tiger Tech Blog

Blog technologiczny firmy Scott Tiger S.A.

Archiwum dla Luty, 2012

Dynamiczne tworzenie obiektów w GWT + MVP4G

Autor: Krzysztof Nielepkowicz o 22. lutego 2012

    GWT jest dość udanym produktem, jednak ma swoje ograniczenia – głównie w dziedzinie refleksji. Najbardziej przydatną cechą jest tworzenie nowych obiektów oraz wnioskowanie typów obiektów. O ile w stosunku do drugiego problemu sprawę, w większości przypadków, rozwiązuje java generics to rozwiązanie pierwszego problemu za pomocą GWT.create(<class literal>) jest mocno ogranczone. Szczególnie bolesny staje się ten problem w aplikacjach gdzie część obiektów jest tworzonych z łańcuchów znaków – np pochodzących z formularzy które są generowane na podstawie klasy obiektów. Prosty scenariusz przewiduje iż chcemy wyświetlić w tabeli obiekty z bazy danych – tu z pomocą przychodzi MyBatis umożliwiający  mapowanie rekordów na obiekty, ale pojawia się wymaganie wprowadzania nowych rekordów przez generowaną formatkę (nikomu nie będzie się chciało pisać 50 formularzy dla każdej klasy osobno – nie uwierzę!). Formatka zawiera etykietowane pola/comboboxy/slidery – jednak zwracać potrafi tylko zestawy typów prymitywnych. Dla ułatwienia formatka zwraca jedynie tablicę stringów, by nowy „rekord” umieścić w tabelce (CellTable jest parametryzowana typem i wymaga obiektów) musimy uzyskać obiekt. Wiemy jakiej klasy chcemy mieć owy obiekt – pierwszą myślą jest stworzenie nowego obiektu za pomocą konstruktora bezparametrowego a następnie ustalenie pól tego  obiektu. Naturalnym rozwiązaniem wydaje się zastosowanie GWT.create( class clazz) – tu czeka nas niemiła niespodzianka – metoda ta przyjuje jedynie literały klas. Nie zadziała w momencie gdy parametrem jest obiekt Class<T>! Krótkie poszukiwania naprowadziły mnie na trop dwóch bibliotek GWT Reflection oraz GWT ENT. Pierwszy projekt niestety już od dłuższego czasu nie jest rozwijany, drugi wydawał się rokować większe nadzieje – niestety w połączeniu z GWT 2.4 owa biblioteka powoduje błędy, rozwiązaniem okazało się wrócenie do GWT wersji 2.2 – kompletnie nieakceptowalne rozwiązanie! Kolejne poszukiwania doprowadziły mnie do wniosku że trzeba samodzielnie wygenerować klasę fabrykującą obiekty, na rozwiązanie naprowadził mnie temat na stackOverflow oraz jednego z jugowiczów (dzięki Michał!).
    Plan działania jest stosunkowo prosty. Należy oznaczyć klasy, których obiekty mają być tworzone za pomocą interfejsu, który dosłownie nic nie robi, służy jedynie jako znacznik. Następnie należy stworzyć interfejs z jedyną metodą – instantiate(Class<T> clazz) i napisać klasę-generator, która będzie generowała klasę implementującą ten interfejs. Na koniec należy zmodyfikować deskryptor projektu *.gwt.xml. Tyle teorii – pora na częśćpraktyczną.

Czytaj więcej »

Tags: , , , , , ,
Napisany w Java, WWW | Brak komentarzy »

Jak kupować w Internecie?

Autor: Piotr Karpiuk o 20. lutego 2012

Do końca 2011 roku liczba sklepów internetowych w Polsce przekroczyła 10 tysięcy. Mężczyźni częściej niż kobiety odwiedzają portale aukcyjne, sklepy internetowe i porównywarki cen, z kolei kobiety częściej niż panowie odwiedzają serwisy zakupów grupowych. Wartość e-commerce w Polsce w roku 2010 wyniosła ok. 15,5 mld zł i jest to ok. 3,1% w całym handlu krajowym (dla Wielkiej Brytanii ten współczynnik wynosi 12%). Co roku ten rynek w Polsce powiększa się o ok. 15%.

Zachodzą dość ciekawe zjawiska, np. wiadomo że za kilka miesięcy na polski rynek wkroczy Amazon (choć nie wiadomo do końca z jakimi usługami). Bardzo dynamicznie rozwijają się serwisy ogłoszeniowe takie jak Gumtree.pl, Tablica.pl (stoi za nią Allegro), czy Sprzedajemy.pl, które pozwalają za pośrednictwem sieci odnajdywać się osobom pragnącym kupić lub sprzedać jakiś produkt. Rok 2010 stał pod znakiem zakupów grupowych, w 2011 roku zaczęły raczkować serwisy służące do wypożyczania sobie przedmiotów. Allegro stał się główną platformą sprzedażową sklepów internetowych a aukcje są zanikającą formą sprzedaży – obecnie na Allegro aż 87% przedmiotów sprzedaje się w opcji „Kup teraz!”.

Jeśli koszt przedmiotu przekracza 100 zł, internetowy zakup opłaca się ze wzgledu na niższe ceny. W zależności od asortymentu, zniżki mogą sięgać nawet 50%, zwykle towary są tańsze w granicach 20-30% w stosunku do cen w sklepach stacjonarnych.

Od połowy 2011 roku, po nowelizacji prawa farmaceutycznego, handel lekami na receptę przez internet jest nielegalny. W sklepach internetowych nie kupimy też żywych zwierząt ani samochodu.

W sklepach z żywnością dostawy można oczekiwać tego samego lub następnego dnia, istnieje także możliwość tworzenia listy zakupów – przydatne gdy często kupujemy te same towary.

Porównywarki cen

Czytaj więcej »

Napisany w Uncategorized | 1 Komentarz »

Klastry w Google Maps

Autor: Piotr Karpiuk o 17. lutego 2012

Powiedzmy że chcemy w Google Maps pokazać mnóstwo punktów (tysiące, dziesiątki tysięcy). Dobrze byłoby to zrobić tak, żeby nie dezorientować użytkownika, a jednocześnie nie obciążać wydajnościowo przeglądarki. Polecam bibliotekę markerclusterer, której efekty widać niżej:

Napisany w JavaScript, Uncategorized, WWW | Brak komentarzy »

Trendy IT na 2012 rok (wg magazynu CHIP)

Autor: Piotr Karpiuk o 14. lutego 2012

Niedawno publikowałem prognozy miesięcznika PC World – a teraz dla odmiany CHIP, który ma więcej propozycji:
  • giętkie wyświetlacze FOLED (Flexible OLED) odporne na wstrząsy; pracują nad tym Samsung, LG, Sony i Nokia,
  • plenoptyczne aparaty fotograficzne pozwalające zmienić ostrość na już zrobionym zdjęciu; sztuczka polega na tym, że nowe aparaty (początkowo o niskiej rozdzielczości 1 megapiksela) będą rejestrować trójwymiarowe pole światła, czyli informacje o sposobie rozprzestrzeniania się światła w przestrzeni – nie będzie ustawiana ostrość w żadnym punkcie, ale rejestrowana intensywność i kąt padania promieni światła na matrycę
  • ultrabooki, na wiosnę nowa linia procesorów Ivy Bridge (z trójwymiarowymi tranzystorami Trigate) ma zastąpić starą Sandy Bridge – mniejszy pobór prądu i wzrost wydajności o 20-30%
  • telewizory 3D, do których oglądania nie będą potrzebne specjalne okulary, i oferujące rozdzielczość Full HD; Toshiba ZL2 już w sklepach
  • LTE – sieć nadajników ma się pojawić w dużych miastach pozwalając smartfonom na dostęp do Internetu z prędkością dochodzącą do 100 Mb/s; w praktyce będzie wolniej, bo możliwości komórki sieci LTE trzeba podzielić między wszystkich użytkowników; w abonamentach pojawią się limity ilości przesyłanych danych (np. 5-30 GB miesięcznie – wciąż za mało do intensywnego korzystania z transmisji strumieniowej filmów w rozdzielczości Full HD)
  • HDD 5 TB, SSD 1 TB – ten drugi będzie kosztował w ok. 6000 zł
  • SATA Express – w połowie roku płyty z nowym interfejsem dla najszybszych dysków SSD, umożliwiające dyskom transmisję danych przez złącza PCI Express 3.0 bez użycia dodatkowych adapterów; przepustowość ma sięgać 1 lub 2 GB/s
  • wizjery OLED w lustrzankach
  • Boot to Gecko – opensource’owa platforma z silnikiem Gecko pozwalająca tworzyć aplikacje mobilne niezależne od systemu operacyjnego smartfona/tabletu
  • upowszechnienie technologii NFC, czyli komunikacji bezprzewodowej dla urządzeń mobilnych – w sprzedaży jest już Samsung Galaxy Nexus, a nowy Android 4 posiada usługę Beam pozwalającą wymieniać informacje po zbliżeniu telefonów; NFC można użyć np. do płatności zbliżeniowych
  • czterordzeniowe procesory w tabletach – Nvidia Tegra 3 już posiada znajdujący się w sprzedaży tablet Asus Transformer Prime
  • Quad Full HD – panele telewizorów będą miały rozdzielczość 4096×2160, czyl ponad 4x większą od standardowej rozdzielczości Full HD; olimpiada w Londynie ma być transmitowana przez BBC w rozdzielczości FullHD x 8
  • Gigabit WLAN – urządzenia WiFi zgodne z IEEE 802.11ac przyspieszą do 1 Gb/s (optymalizacja wcześniejszych rozwiązań – silniejsza modulacja sygnału, szersze pasmo częstotliwości i większa liczba strumieni), a w 2013 nawet do 6,9 Gb/s
  • smartfon jako pilot do telewizora – ponieważ większość nowych odbiorników wyposażono w moduł WLAN, można się z nimi komunikować za pomocą odpowiedniej aplikacji na smartfonie
  • Windows 8
  • HTML5

Napisany w Uncategorized | Brak komentarzy »

XMLMind & DocBook

Autor: Piotr Karpiuk o 13. lutego 2012

XMLMind to edytor GUI do XMLa o którym wspomniałem w poprzednim poście na temat DocBooka. Dzisiaj więcej o tym edytorze. Przeczytanie tego artykułu zasadniczo zastępuje lekturę liczącej sobie ok. 200 stron dokumentacji programu, i pozwala zacząć tworzyć dokumenty DocBooka.

XMLMind to program napisany w Javie (z biblioteką okienkową Swing), więc daje się uruchomić zarówno pod Windows, Linuksem jak i Mac OS X. Wersja pełna to koszt ok. 1000 zł na stanowisko, zaś w darmowej wersji Personal mamy pewne ograniczenia – najbardziej bolesne z nich to brak sprawdzania pisowni na bieżąco i brak możliwości generowania dokumentacji bezpośrednio z edytora.

Nowy dokument otwieramy poleceniem File/New i wybierając szablon, np. Docbook v5+/Book.

Edycja dokumentu XML w tym narzędziu robi na mnie spore wrażenie swoim pomysłowym podejściem, które nazwałbym prawie-WYSIWYG. W domyślnym widoku edytujemy dokument który bardzo przypomina wygenerowaną postać dokumentacji – podobnie jak w zwykłym procesorze tekstu możemy kopiować i wstawiać fragmenty tekstu za pomocą schowka, za pomocą przycisków na pasku zadaniowym wstawiać tabelkę, obrazek, listę wypunktowaną czy wyróżniać fragment tekstu. Ale jednocześnie cały czas mamy świadomość XMLa który jest generowany pod spodem i chcąc biegle edytować dokument musimy przynajmniej pobieżnie znać DocBooka (jego znaczniki i atrybuty tych znaczników).

W szczególności wiele operacji edycyjnych jest wykonywanych nie tyle na zaznaczonym fragmencie tekstu (z czym mamy do czynienia w zwykłych edytorach), ile na wskazanym (jawnie lub niejawnie) elemencie XMLa edytowanego dokumentu. Element niejawnie wyselekcjonowany (ang. implicitly selected) to najbardziej zagnieżdżony element, w którym aktualnie znajduje się kursor klawiatury. Możemy jawnie wyselekcjonować dowolny element XMLa klikając go w pasku ścieżki (ang. node path bar) wymieniającym wszystkie elementy XML na drodze od aktualnie niejawnie wyselekcjonowanego do korzenia dokumentu:


Czytaj więcej »

Tags: ,
Napisany w Uncategorized | Brak komentarzy »