Scott Tiger Tech Blog

Blog technologiczny firmy Scott Tiger S.A.

Odkurzacz samobieżny

Autor: Piotr Karpiuk o środa 2. Maj 2012

Odkurzacz samobieżny to robot, który sam sprząta mieszkanie. Od jakiegoś czasu cena takich urządzeń spadła poniżej tysiąca złotych, dzięki czemu stają się popularniejsze.
Jakie cechy ma taki odkurzacz?
Wszystkie odkurzacze samobieżne mają okrągły kształt, co oczywiście utrudnia wysprzątanie pokoi, z reguły prostokątnych. W celu rozwiązania problemu producenci montują w nich dodatkową boczną szczotkę, która zgarnia brud do odkurzacza, i programują je tak, aby jeździły stroną z tą szczotką wzdłuż ściany.
Od wielkości kół oraz konstrukcji ich zaczepu w dużym stopniu zależy, czy odkurzacz będzie sobie radził z przejazdem przez progi lub grube dywany. Niektóre modele wyposażone są w duże kółka o promieniu prawie 4cm i sprężyste zawieszenie, które potrafi wysunąć kółko na nieco ponad 4cm od podstawy odkurzacza, i bez problemów wjeżdżają na grube dywany.
Odkurzacz zwykle jest zasilany baterią, ładowaną albo za pomocą zewnętrznego zasilacza, albo stacji dokującej. To drugie rozwiązanie jest znacznie praktyczniejsze – gdy odkurzacz zarejestruje niski poziom naładowania baterii, inicjuje powrót do bazy kontaktując się z nią za pomocą czujników podczerwieni. W ten sposób urządzenie staje się prawie samowystarczalne – prawie, bo trzeba co jakiś czas ręcznie opróżniać worek ze śmieciami.
Modele posiadające czujnik zabrudzenia po wykryciu zabrudzenia przełączają się w tryb dokładnego czyszczenia fragmentu powierzchni.
Zaawansowane odkurzacze wyposażone są w czujniki zbliżeniowe, a nie zderzeniowe, dzięki czemu nie uderzają o ścianę, ale dojeżdżają do niej na odległość kilku centymetrów lub delikatnie ją dotykają. Użytkownicy mieszkań piętrowych powinni zaopatrzyć się w model z czujnikiem krawędzi, zapobiegającym spadaniu odkurzacza ze schodów czy antresoli.
W praktyce najlepszy mechanizm czyszczący to szczotki, które radzą sobie zarówno z powierzchniami gładkimi jak i dywanami (usuwają m.in. zwierzęcą sierść). Modele zasysające mają znikomą część mocy odkurzaczy standardowych i radzą sobie dobrze tylko na gładkich powierzchniach.
Ogólnie rzecz biorąc, automatyczne odkurzacze w bezpośrednim starciu nie mogą konkurować pod względem wydajności z dobrymi odkurzaczami standardowymi – mają za słaby system czyszczący, a także za małe możliwości, aby czyścić tak dokładnie różne powierzchnie jak modele standardowe.
Większość osób, które miały okazję korzystać z automatycznych odkurzaczy, zauważa że nie sprzątają one dokładnie, ale mimo to w domu i tak jest dużo czyściej, co jest zasługą systematycznego działania – niewielu użytkowników codziennie ręcznie odkurza całe mieszkanie.

Za: PC World 5/2012

Napisany w Uncategorized | Brak komentarzy »

Statystyki mobilne

Autor: Piotr Karpiuk o środa 25. Kwiecień 2012

Liczba aktywowanych telefonów na świecie zbliża się do 6 mld. Statystycznie rzecz biorąc, niemal 9 na 10 mieszkańców planety ma telefon. W rzeczywistości w krajach rozwiniętych jest więcej telefonów niż mieszkańców, a w Afryce nasycenie rynku jest najmniejsze: wynosi zaledwie 53%. W 2011 roku na całym świecie sprzedano aż 1,5 mld telefonów komórkowych. Chociaż smartfonów sprzedaje się obecnie więcej niż PC-tów, należy pamiętać, że nadal blisko 2/3 sprzedawanych aparatów to tzw. featurephone’y, czyli zwykłe komórki, bez zaawansowanego systemu operacyjnego. Przy 6 mld aktywnych telefonów na świecie, przez ostatnie 3 lata na rynek trafił niecały miliard smartfonów.
Dziwi spadek sprzedaży Windows Phone’a 7 – smartfonów pod kontrolą tego systemu pojawiło się w 2011 roku dwukrotnie mniej niż Samsungów z ich mało promowanym systemem Bada. Samsung jest też najpopularniejszym dostawcą telefonów w USA, natomiast w Europie Zachodniej nadal króluje Nokia.
Najpopularniejsze mobilne systemy operacyjne w Polsce: Symbian (33,05%), Android (25,08%), Sony Ericsson (13,14%), Samsung (8,51%), Inne (8,47%), iOS (7,71%), Bada (2,6%), LG (1,38%).
AppStore świętował niedawno okrągłe 25 mld pobrań aplikacji, Google 10 mld (z tej okazji dużo popularnych tytułów przeceniono na 10 centów, aby nakłonić do wirtualnych zakupów osoby, które z nich wcześniej nie korzystały).
Statystyczny użytkownik inteligentnej komórki używa głównie FB, map Google i informacji pogodowej The Wheather Chanell, a jeden z czterech ściągniętych programów zostaje użyty tylko raz.
Tylko w 4% smartfonów lub tabletów dostarczonych w 2010 roku zainstalowano jakieś zabezpieczenia typu programy antywirusowe.
Podstawą mobilnego marketingu mają być reklamy w mobilnych wyszukiwarkach oraz wykorzystujące technologię geolokalizacji i rozszerzonej rzeczywistości. Na tej zasadzie powstaje już ponad połowa mobilnych reklam w USA. Google ma 70% rynku reklamy mobilnej.
Użycie poszczególnych funkcji smartfonów i featurephone’ów zależy ściśle od regionu geograficznego. W Japonii prym wiodą media społecznościowe i poczta elektroniczna, w USA i Europie SMSy i gry. Ponadto istotne są newsy, informacje pogodowe i mobilne mapy.

Na podstawie: PC World 5/2012

Napisany w Mobilne | Brak komentarzy »

SQLite i szyfrowanie kolumn, pomaga MyBatis i Jasypt

Autor: Krzysztof Nielepkowicz o poniedziałek 23. Kwiecień 2012

    Niedawno, pisząc wieczorami dla siebie aplikacje w .NET natrafiłem na bardzo przyjemną i lekką bazę danych – SQLite. Tak mi się ta baza spodobała, że postanowiłem sprawdzić czy z poziomu Javy i JDBC uda się do niej dostać. SQLite ma jednak jedną wadę – brak szyfrowania i zabezpieczenia hasłem. Baza SQLite mieści się w jednym pliku, który nie jest w jakikolwiek sposób zabezpieczony. Jako że na codzień pracuję w firmie tworzącej oprogramowanie dla banków i policji brak szyfrowania jest dość poważną wadą nawet w bardzo prostych narzędziach jak program do fakturowania.
    Z jakiego powodu potrzebne jest szyfrowanie samych danych? Wiadomo że błędem w sztuce jest trzymanie haseł w bazie danych – co najwyżej można trzymać posolone hashe. Zaszyfrowanie całej bazy danych (pliku sqlite) również nie wydaje się być dobrym pomysłem z powodów wydajnościowych. Dlatego należy rozpatrzyć szyfrowanie poszczególnych kolumn z danymi wrażliwymi. Jako przykład podam program do faktur gdzie są dane naszych kontrahentów. Co jeśli konkurencja przekupi naszego pracownika by zgrał na dysk USB plik z bazą naszych klientów? Ten problem dotyczy wszelkich aplikacji typu standalone, gdzie przetwarzane są wrażliwe dane. Częściowo ten problem jest rozwiązany w aplikacjach typu klient-serwer lecz nie zawsze jest sens stawiania takiej infrastruktury.

Czytaj więcej »

Tags: , , , , , , , , , ,
Napisany w Bazy danych, Java, Języki programowania | Brak komentarzy »

O LambdaJ i Guavie i mojej prelekcji na JUG

Autor: Krzysztof Nielepkowicz o piątek 13. Kwiecień 2012

    Witam pod dłuższej przerwie. Dzisiejszy wpis będzie trochę inny niż pozostałe, dlatego iż nie będzie typowo technicznym wpisem. Przez ostatnie tygodnie, „po godzinach” przygotowywałem się do prelekcji którą wygłosiłem 03.04.2012. Dzięki mojemu osobistemu fotografowi, Annie Mazińskiej, mogę pokazać również parę zdjęć :)

 

Czytaj więcej »

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

Oś czasu w przeglądarce WWW

Autor: Piotr Karpiuk o piątek 16. Marzec 2012

Być może pojawienie się Osi Czasu na Facebooku pobudziło wyobraźnię deweloperów aplikacji webowych i spowodowało wysyp bibliotek JavaScriptu do prezentacji danych obejmujących czas. Oferowane możliwości prezentacji danych obejmują: przedstawianie wydarzenia w postaci obrazka, tekstu, lub przedziału; skalowanie, widok „z lotu ptaka”, szczegóły w dymku po kliknięciu wydarzenia, filtrowanie, wydruk i ew. edycja (dodawanie, usuwanie, przesuwanie wydarzeń).
Poniżej wyniki mojego rozeznania w temacie.

Z kolei serwis webowy Dipity pozwala interaktywnie utworzyć oś czasu i pokazać ją np. podczas prezentacji w firmie.

Tags:
Napisany w JavaScript | Brak komentarzy »

ECMAScript 5

Autor: Piotr Karpiuk o czwartek 15. Marzec 2012

Zaakceptowana oficjalnie w 1999 wersja 3 ECMAScript jest pewną bazą wszystkich implementacji języka JavaScript w dzisiejszych przeglądarkach. Tym niemniej, specyfikacja wersji 5 została oficjalnie opublikowana w grudniu 2009 roku i w najnowszych przeglądarkach jest implementowana w stopniu naprawdę przyzwoitym, co pokazuje tabelka (wersja 4 została zarzucona).

Co nowego w wersji 5? Poniżej wymieniam te nowinki, z których korzystam na co dzień.

  • Tryb ścisły (ang. strict mode) usuwa z języka pewne funkcje, co czyni go prostszym i bardziej odpornym na błędy. Nie pozwala np. na użycie kontrowersyjnej konstrukcji with, zapisu postaci function f(x, x) { ... }, itp. Więcej przykładów zabronionych konstrukcji w osobnym artykule. Tryb ścisły włączamy umieszczając na początku zakresu zmiennych (na poziomie funkcji lub globalnym) łańcuch "strict mode" – starsze implementacje języka po prostu go zignorują. Planuje się, że w przyszłości tryb ścisły będzie jedynym dostępnym trybem.
  • JSON.parse(str) zamienia łańcuch w JSON, a JSON.stringify(obj) – odwrotnie.
  • Object.keys( obj ) zwraca tablicę kluczy obiektu obj (och, jak mi tego brakowało)
  • Array.isArray( arr ) – czy argument arr jest tablicą
  • array.indexOf(what [, fromIndex]), array.lastIndexOf(what [, fromIndex])
  • Rozszerzenia funkcyjne dla tablic (w każdym przypadku callback oznacza funkcję postaci function( val, index, array ) { ... }):
  • Rozszerzenia funkcyjne dla tablic (w każdym przypadku callback oznacza funkcję postaci function( accumulator, curValue, index, array ) { ... }):
  • Date.now() zwraca liczbę ms od 1 stycznia 1970 do chwili obecnej
  • date.toISOString() zwraca łańcuch postaci "2012-04-03T22:59:33.610Z"
  • Wsparcie dla Unicode 3.0.
  • W literale łańcuchowym dozwolony jest znak końca wiersza poprzedzony backslashem (czytaj: można tworzyć wielowierszowe literały łańcuchowe)

Ostatnio mówi się też o nowej wersji ECMAScript o nazwie kodowej Harmony, która być może przekształci się w wersję 6. Na angielskiej Wikipedii możemy przeczytać że wersja 19 przeglądarki Google Chrome ma już wspierać nowinki zawarte w tej specyfikacji.

Napisany w Uncategorized | Brak komentarzy »

Paul Baran

Autor: Piotr Karpiuk o piątek 9. Marzec 2012

Czytając książkę o wynalazkach (patrz sąsiedni post) natknąłem się na intrygującą informację:

Z Wikipedii: Paul Baran (ur. 29 kwietnia 1926 w Grodnie, zm. 26 marca 2011) − amerykański informatyk polskiego pochodzenia, znany jako „ojciec internetu”.

Pesah Baran urodził się w Polsce, w rodzinie żydowskiej, lecz jego rodzina w 1928 roku przeprowadziła się do Bostonu. Baran najpierw kształcił się w Drexel University, potem w 1959 roku otrzymał tytuł Master of Science w dziedzinie inżynierii na UCLA i rozpoczął w tym samym roku pracę dla RAND Corporation, będącej think tankiem amerykańskiego lotnictwa.
Na zlecenie Amerykańskich Sił Zbrojnych firma RAND realizowała projekt wytrzymałych, rozproszonych (nie gwiaździstych) sieci cyfrowych transmisji danych, zdolnych przetrwać przewidywaną wówczas III wojnę światową. W 1962 roku opublikował 12-tomową pracę, będącą projektem owej sieci. W 1968 roku, jako konsultant Centrum ARPANET w Departamencie Obrony Stanòw Zjednoczonych spowodował podzielenie sieci ARPANET na wojskowy MILINET i cywilny INTERNET.

Zmarł 26 marca 2011 roku w wieku 84 lat w swoim domu w Palo Alto w Kalifornii na chorobę nowotworową płuc.

W artykule Newsweeka czytamy:
Czytaj więcej »

Napisany w Uncategorized | Brak komentarzy »

Wynalazki, które zmieniły świat

Autor: Piotr Karpiuk o środa 7. Marzec 2012

Ciekawostki na temat wynalazków, jakich dokonał człowiek na drodze swojej ewolucji – aż do czasów współczesnych.

Starożytność

Haczyk (ok. 35 000 lat p.n.e.)
Na pierwszy rzut oka drewno może nam się wydawać materiałem zbyt lekkim na haczyki wędkarskie, tymczasem tworzywo to używane było aż do lat 60. XX w.
Atlatl (ok. 23 000 lat p.n.e.)
Kiedy Hiszpanie ok. 1500 r. po raz pierwszy zetknęli się z Aztekami, ku ich przerażeniu okazało się że azteckie oszczepy bez trudu przebijają zbroje. Było to możliwe dzięki prostemu urządzeniu do miotania oszczepów, używanemu przez wiele starożytnych ludów. Miotacz oszczepów (atlatl) składa się z uchwytu oszczepu w postaci podłużnego kawałka wydrążonego sprężystego drewna dł. ok. 60cm i długiego na ok. 180cm oszczepu. Pozwala to nadać oszczepowi prędkość przekraczającą 160 km/h i zasięg kilkukrotnie większy niż bez wspomagania.
Bumerang (ok. 18 000 lat p.n.e.)
Najstarsze jak dotąd bumerangi znaleziono w jaskini w Karpatach w południowej Polsce.
Droga z bali (ok. 4000 lat p.n.e.)
Posypywano je piaskiem, ale były wyboiste i niebezpieczne dla koni. Stopniowo bale były już wykorzystywane wyłącznie jako podkład pod inne nawierzchnie, gdyż drewno w glebie pozbawionej tlenu rozkłada się bardzo wolno. W USA drogi zbudowane na początku XX w., takie jak Alaska Highway, zachowały fundamenty z bali.
Sklejka (ok. 3500 lat p.n.e.)
Przedmioty ze sklejki są bardziej sztywne i mniej się odkształcają niż przedmioty z litego drewna. Wynika to z tego, że w każdej kolejnej warstwie włókna ułożone są pod kątem prostym w stosunku do poprzedniej.
Cep (ok. 3000 lat p.n.e.)
W starożytnym Egipcie był symbolem władzy. Trumna Tutenhamona przedstawia władcę ze skrzyżowaną laską i cepem na piersi.
Dzwon (ok. 3000 lat p.n.e.)
W starożytnych Chinach symbol władzy, obecnie w Chinach symbolizują naukę i oddawaną cześć.
Odlewanie metodą wosku traconego (ok. 3000 lat p.n.e.)
Zamierzony kształt przedmiotu najpierw rzeźbiono w wosku pszczelim, a następnie pokrywano kilkoma warstwami gipsu odpornego na wysoką temperaturę. Kiedy taką formę ogrzewano, wosk się wytapiał. Następnie w pustą przestrzeń wlewano stopiony metal. Po schłodzeniu zdejmowano formę i odsłaniano produkt finalny – metalowy przedmiot o dokładnie takim samym kształcie jak woskowy wzór. Jeszcze podczas II wojny św. proces ten stosowany był powszechnie do produkcji precyzyjnych części urządzeń wojskowych.

Czytaj więcej »

Napisany w Uncategorized | Brak komentarzy »

Kalendarz Google

Autor: Piotr Karpiuk o piątek 2. Marzec 2012

Kalendarz Google to darmowa aplikacja webowa (oraz mobilna dla Androida i iPhone) pozwalająca organizować sobie czas. Jego motto to „Upraszczaj. Organizuj. (I wyluzuj).” Niniejszy artykuł ma za zadanie zwięźle – ale kompletnie – zaprezentować funkcjonalność narzędzia. Nie ma tu odpowiedzi na pytanie „jak” (do tego służy udostępniana przez Google dokumentacja), a raczej „co można z tym zrobić”.

Aplikacja pozwala tworzyć wiele kalendarzy, ale jeden z nich jest kalendarzem głównym i nie można go usunąć, a pozostałe to kalendarze pomocnicze. Każdy kalendarz ma własne ustawienia prywatności (publiczny lub nie), udostępniania (wybranym osobom lub nikomu) i powiadomień (e-mail, SMS). Użytkownik zwykle ogląda widok kombinowany powstały z nałożenia na siebie wybranych (potencjalnie wszystkich) zdefiniowanych kalendarzy. Oprócz własnych, można sobie dodać któreś z predefiniowanych kalendarzy w wydarzeniami takimi jak lista polskich świąt, wydarzeń sportowych, fazy księżyca, czy urodziny osób z kontaktów.

W każdym kalendarzu możemy bardzo łatwo definiować wydarzenia, w typowym przypadku wystarczy wpisać np. Siatkówka od 16 do 17. Pojedyncze wydarzenie ma następujące atrybuty: przedział czasu (ew. całodobowe), cykliczność (np. codziennie, co drugi dzień itp.), lokalizację, opis, kolor, ewentualne przypomnienie (od 5 min do 4 tyg. przed terminem), prezentowany stan (dostępny/zajęty), prywatność (publiczne lub nie), oraz lista zaproszonych gości z uprawnieniami (czy gość może modyfikować wydarzenie, zapraszać innych, oglądać listę gości). Udział w wydarzeniu wymaga od gościa potwierdzenia; gość oprócz zadeklarowania swojego współudziału może wejść na stronę wydarzenia i zapoznać się z listą zaproszonych gości, ewentualnie dodać komentarz dotyczący wydarzenia. Jeżeli gość posiada konto Googla, akceptacja udziału powoduje utworzenie rezerwacji w jego kalendarzu. W przypadku gdy osoba zapraszana współdzieli swój kalendarz, aplikacja oferuje wyrafinowane narzędzie pozwalające na wybór terminu możliwie najlepiej pasującego obu stronom.

Czytaj więcej »

Tags:
Napisany w WWW | Brak komentarzy »

Dynamiczne tworzenie obiektów w GWT + MVP4G

Autor: Krzysztof Nielepkowicz o środa 22. Luty 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 »

 

Switch to our mobile site