Samsung i reklama 3D

Jako pracownik tak wspanialej firmy jaką jest Samsung Electronics ;], zapoznany z informacjami niedostępnymi dla innych, sam często bywam zaskakiwany rodzimymi produktami i reklamami. Przeglądając demotywatory (też to robicie, prawda?), natrafiłem na ogłoszenie, które widzicie w obrazku tego posta. Nie lubię reklam, ale za namową kolegi z pracy, niechętnie, ale wszedłem.

Wymagania: drukarka, kamera, głośniki i pewne zdolności manualne. Ściągamy i instalujemy aplikację (~24MB) oraz drukujemy znacznik (tzn. pilot).  Uruchamiamy program, wybieramy ustawienia, domyślne wystarczą, i na ekranie powinniśmy zobaczyć siebie. Prawda, że miły obraz? :] Bierzemy w rączki nasz znacznik i kierujemy go w stronę kamery. Na ekranie zamiast kartki pojawi się pseudotrójwymiarowa animacja, a z głośników usłyszymy głos przemiłej komentatorki. Po wstępie proszeni jesteśmy o naciśnięcie przycisku na pilocie, (tj. przykryj palcem mały czarny prostokącik). Nasza pani wyjdzie z telewizora :) Poruszając kartą manipulujemy animacją, oglądając ją z różnych stron. Efekt jest na prawdę imponujący. Jeśli moja instrukcja jest zbyt ogólna, obejrzyjcie specjalny film nagrany przez tę samą firmę reklamową.

Pomysł świetny – w końcu to moja firma :)

Google szepcze Ci do ucha…

Myśleliście, że Google brakuje pomysłów? Sprawdźcie to. Już niedługo Pan Android będzie podpowiadał nam w czasie zwykłej rozmowy telefonicznej.

Dla tych, którzy już obejrzeli…

[Caller]  I just… I dunno what happened. I just crashed my car.. I skidded off the road. Hello?
[Dispatcher] Sir? Hello? Sir? Sir? I’m sorry. I can’t understand you.
[GooglePhone] Need a new car? Toyota Tacoma starting at under $16,000.

[Caller] Hello? Can you hear me? My wife is here but she’s not moving.
[Dispatcher] Sir?
[GooglePhone] Take her on the vacation of her dreams. Romantic get-always at DreamResort.com

Bezcenne. Mam nadzieję, że to żart.

[Edit]
Film nagrała organizacja satyryczna The Onion.

Konfigurowalne obrazy z HTTP GETa

Temat postu z pewnością nie mówi Wam zbyt wiele, dlatego pozwolę sobie go wyjaśnić. W dzisiejszym wpisie chciałbym przedstawić Wam usługi, jakie zewnętrzne firmy dostarczają deweloperom aplikacji internetowych poprzez zwracanie obrazów z konfigurowalnych adresów URL. Mówiąc jaśniej, to, jaki obraz zostanie zwrócony, zależy od podanych w adresie parametrów.

Na samym początku przyjrzyjmy się usłudze mojego „ulubionego” dostawcy, wujka Google’a – Chart Tools. Jak sama nazwa wskazuje, na naszą stronę możemy wstawiać wszelkiego rodzaju wykresy. Dokładna dokumentacja znajduje się tutaj, a teraz krótki przykład:

http://chart.apis.google.com/chart?cht=p3&chd=s:Uf9a&chs=250x100&chl=January|February|March|April

Dla jasności pokolorowałem odpowiednie sekcje w adresie. Śmiało, skopiujcie go do swojej przeglądarki i zmieńcie np. nazwę miesiąca. Do dyspozycji mamy naprawdę szeroki wachlarz wykresów, ikon, a nawet możemy wstawiać równania matematyczne i kody QR.

http://chart.apis.google.com/chart?cht=tx&chl=x%20=%20%5Cfrac%7B-b%20%5Cpm%20%5Csqrt%20%7Bb%5E2-4ac%7D%7D%7B2a%7D

Tutaj jednak adres nie jest już tak oczywisty. Ze względu na ograniczenia w znakach adresu URL wymagane jest odpowiednie kodowanie. Google daje nam naturalnie pomocne narzędzie. Oprócz API do wykresów nasz potentat dostarcza również podobną funkcjonalność dla map – sprawdź Google Static Maps.

Drugi dostawca podobnych usług to yuml.me. W tym przypadku mamy możliwość generowania diagramów UML. Jak wiadomo, diagramy te mogą prezentować rożne rodzaje schematów, zatem dają się zastosować w naprawdę wielu sytuacjach. Popatrzmy na taki przykład:

http://yuml.me/diagram/scruffy/class/[Customer]-%3E[Billing%20Address]

Na stronie usługodawcy możecie zobaczyć kilkanaście innych, bardziej rozbudowanych przykładów. Możliwości są naprawdę spore.

Czy znacie więcej serwisów udostępniających podobne funkcjonalności? A może znacie nazwę tego rodzaju usług? Chętnie się o nich dowiem.

Promuj

Użytkownik wielokomputerowy

Czy korzystacie na co dzień z komputera? Pewnie tak, ale czy tylko z jednego? Raczej nie. W pracy stoi jedna maszyna, w domu kurzy się druga, a jeśli jesteście gadżetomaniakami, to z pewnością macie jeszcze netbooka i telefon z przeglądarką internetową. A co z maszynami wirtualnymi? Korzystacie z takowych?

W domu mam laptopa i netbooka, w pracy blaszaka i kilka maszyn wirtualnych, a daleko w rodzimym domku znajdzie się jeszcze komputer, z którego korzystam, jeśli nie zabiorę ze sobą żadnego sprzętu. Gdziekolwiek jestem i którejkolwiek maszyny używam, chciałbym mieć ten sam komfort pracy. Te same pliki i zakładki w przeglądarkach (nie używam jednej na co dzień)  oraz poczta – oto wszystko, czego mi potrzeba. Jestem mało wymagający, prawda?

Nie lubię narzędzi do synchronizacji – nigdy nie spełniały moich oczekiwań i często miałem z nimi problemy. Dlatego wszystkie moje pliki przechowuję na zewnętrznym 2,5 calowym dysku, który bez problemu mieści się w kieszeni, a dostępna przestrzeń (ja mam akurat 320 GB) stanowczo mi wystarcza. Odpinam go z jednej maszyn, dopinam do drugiej i nie odczuwam żadnej różnicy. Czy jest to dobre rozwiązanie? Pewnie nie, ale niezwykle wygodne. Owszem, dysk może mi zastrajkować i wszystko trafi szlag, owszem, ktoś może mi go ukraść i znów wszystko trafi szlag, ale nigdy nie przywiązywałem wagi do tego rodzaju zagrożeń, pewnie mój błąd.

Mam już pliki, teraz – co z zakładkami? Gdybym korzystał z Chrome’a i pozwolił Google na inwigilację, pewnie użyłbym dostępnej funkcji synchronizacji zakładek, ale tego nie zrobię. W sekundę w mojej głowie pojawił się pomysł na biznes, ale po upłynięciu kolejnych pięciu wiedziałem, że już coś takiego istnieje. Synchronizacja zakładek na wszystkie popularne przeglądarki: Internet Explorer, Firefox, Chrome oraz Safari. Szybko, miło i przyjemnie. Polecam Xmarks.com. W najmniej przyjazny sposób wspiera przeglądarkę z Microsoftu, instaluje się bowiem jako zewnętrzna aplikacja, ale w pozostałych przypadkach jako plugin. Konfiguracja jest prosta i intuicyjna, a dodatkowy moduł oceniania pozwala sprawdzać popularność poszczególnych stron, jakie dodali do ulubionych pozostali użytkownicy programu.

Jeśli chodzi o pocztę, to chyba nie ma już osób, które ściągają jeszcze całą skrzynkę do siebie. Dostawcy stanęli na wysokości zadania i do dyspozycji mamy kilka gigabajtów na skrzynkę online. Pierwsze takie konta w Polsce oferował serwis o2, za granicą triumfy święci gmail oraz hotmail.

Jeśli znacie inne, dobre sposoby na pracę z kilkoma komputerami, napiszcie, jestem bardzo ciekawy ;]

Testowanie metod asynchronicznych w Javie

Jeśli w swoim życiu napisaliście już setki klas i tysiące metod, a nie stworzyliście jeszcze żadnego testu, to marni z Was developerzy. Testy jednostkowe są naprawdę pożytecznym narzędziem, bo choć wydłużają proces produkcji, jednocześnie powodują, że wartość końcowego produktu jest wielokrotnie większa, a Wy jesteście pewni, że Wasz produkt działa. Pisanie testów metod pobierających argumenty i zwracających wyniki, które można na podstawie tych argumentów zweryfikować, to kaszka z mleczkiem. Znacznie trudniej testować metody, które uruchamiają zadania w tle, a wyniki zwracają przez tzw. callbacki. Pokaże Wam, jak uporałem się z tym problemem.

Z pewnością zetknęliście się kiedyś z modułem, który wystawiał dwa publiczne interfejsy. Jeden z nich służył do zarządzania komponentem, natomiast drugi implementowaliście w celu uzyskania informacji zwrotnych z tego modułu. Takie API można znaleźć w  kodzie C++ znacznie częściej, aniżeli w Javie czy C#. Metoda interfejsu zarządzającego często nic nie zwraca, a jeżeli już, to jedynie kod informacyjny np. ‚operacja zaplanowana do wykonania’, albo ‚nie można wykonać’. Po pewnym czasie przychodzi odpowiedź w formie wywołania metody z interfejsu notyfikacji, który uprzednio zaimplementowaliśmy i przekazaliśmy do modułu. Test takiej metody powinien sprawdzać zwracany kod, czekać (ale nie nieskończenie długo) na przyjście odpowiedzi oraz zweryfikować przysłane w notyfikacji dane.  Przykładowy projekt takich interfejsów możecie znaleźć w moim repozytorium w pakiecie pl.fones.blog.asynctest.

Klasa Engine to interfejs zarządzający, EngineNotifcations to, rzecz jasna, interfejs powiadomień, EngineTest to testy naszego komponentu, dziedziczą po AsyncBaseTestCase, a te z kolei po JUnitowych test case’ach. Będziemy testować metodę start(), która zwraca swój wynik w notyfikacji engineStarted().

Cała logika testowania asynchronicznych metod zawarta jest w klasie AsyncBaseTestCase. Metody notifyCallback() oraz waitForCallback() powinny być wołane w naszym teście, jedna w zaimplementowanym na rzecz testu interfejsie notyfikacji, a druga – w samej metodzie testującej. Ich działanie opiera się na obiekcie CountDownLunch.  Metoda waitForCallback() czeka, aż wartość licznika tego obiektu będzie równa zero, a metoda notifyCallback() zmniejsza jego wartość domyślnie ustawioną na 1. Dodatkowe struktury służą do przekazania parametrów notyfikacji i informacji, czy dany callback w ogóle nastąpił. W ten sposób możemy ustawić, jaki maksymalny czas dajemy komponentowi na odpowiedź. Poprzez tablicę flag sprawdzamy, czy dana notyfikacja nastąpiła, a przez kolekcję rezultatów dowiadujemy się o przekazanych parametrach. Wszystko w bezpieczny, wielowątkowy sposób, z wykorzystaniem dostępnych metod synchronizacji.

Jeśli znacie inny sposób, który usprawniłby moje rozwiązanie, chętnie go poznam.

Prezentacja o Programowaniu Równoległym

We wrześniu 2008 roku w naszym dotnetowym kole działającym przy Wydziale Elektroniki i Technik Informacyjnych Politechniki Warszawskiej ustalaliśmy szczegóły organizacji wydarzenia IT Academic Day na naszej uczelni. Rafał Maciąg, przewodniczący koła, zaproponował, aby ktoś z nas przygotował coś na tę okazję. Oprócz prezentacji takich firm jak ABC Data, Kasperksy, K2, miała mieć miejsce jeszcze jedna, studencka.  Nie zgłosił się żaden chętny, a i mi trudno było wyobrazić siebie w takiej roli. Jedynym argumentem był fakt, że interesowałem się wtedy jeszcze dość egzotycznym zagadnieniem, jakim jest Programowanie Równoległe. Temat pasował idealnie. Decyzja zapadła.

Do dyspozycji miałem bardzo wczesną wersję biblioteki Parallel Extensions (Lipiec 2008), tworzonej jeszcze w ramach Microsoft Research. Przygotowałem prezentacje, dema, pytania (były nagrody), no i oczywiście przemowę. Tydzień przed wydarzeniem Microsoft wypuścił CTP (Community Technology Preview) środowiska Visual Studio 2010. Upieczemy dwie pieczenie na jednym ogniu, pomyślałem. Pierwsza publiczna demonstracja Visual Studio 2010 w Polsce przypadła właśnie mnie (nie słyszałem, żeby ktoś pokazał to środowisko wcześniej, w końcu ja zrobiłem to kilka dni po premierze, wybaczcie mi skromność). Na wydziałowym, 4 rdzeniowym serwerze, zamontowaliśmy wspólnie z Rafałem obraz, wykorzystując technologię Hyper-V, i wypuściliśmy zdalny pulpit na świat. Wszystko dopięliśmy na ostatni guzik. W dniu konferencji tłumów nie było, co nie zmniejszyło jednak stresu. Moja prezentacja była przedostatnia, za to poprzednie wystarczająco wysoko podniosły poprzeczkę. 3.. 2… 1… Start!

Jeden slajd, drugi… ani się obejrzałem, a zaczęło brakować mi czasu, miałem tylko godzinę. Ostatecznie nie pokazałem wszystkich dem, za to wszystkie dostępne nagrody (książki i office’y) rozdałem w mig! Kurcze, naprawdę mnie słuchali i znali odpowiedzi na podchwytliwe pytania, a myślałem, że zostanie coś dla mnie… Żartuję! Dzisiaj, ponad 1,5 roku po tym wydarzeniu, żałuję, że nie zagłębiłem się w temat programowania równoległego jeszcze bardziej. W tym momencie wiem niewiele więcej, a temat poszerzył się n-krotnie. Moja praca inżynierska była, rzecz jasna, ważniejsza. Ale uwaga… moja praca magisterska będzie się bardzo wiązać z tym zagadnieniem, a dokładnie, z weryfikacją aplikacji równoległych.

Z wydarzenia, oprócz doświadczenia w prezentacjach, został mi jeszcze power point, artykuł na codeguru (pierwsza część) oraz źródła przedstawianych aplikacji. Jeśli ktoś nie miał przyjemności pracować z biblioteką ParallelFX, myślę, że będzie to dobra lektura. Dodatkowo w prezentacji zawarłem animacje przedstawiające prace menadżera zadań TPL (Task Parallel Library). Polecam!

Załączniki:

Pamięć Transakcyjna - STM [502.94 kB]
Parallel Extensions Presentation [3.21 MB]

Promuj

Monopol w branży IT

Jeśli usłyszycie hasło „monopol” i każą Wam wymienić jedną firmę w branży IT, to jaką wymienicie? Naturalnie, bez zająknięcia, stajnię wujka Billa.  Owszem, Microsoft zmonopolizował rynek systemów operacyjnych. Dzięki przemyślanym decyzjom, sprytnym umowom i determinacji zdobył podium i zasiadł tam na wieki. Czy dobrze? Mnie pasuje.

Tymczasem zza krzaka na pozycję monopolisty równie wielkiego rynku, internetu, czyha Google Inc. Dla jasności, uważam, że produkty firmy z Mountain View są naprawdę super i świetnie mi się ich używa, ale kiedy pomyślę, ile tego jest, głowa mi pęka, a nie lubię kiedy mi pęka ;p

Wyszukiwarka… nic dodać, nic ująć, ukłony i wyrazy szacunku za tak znakomite narzędzie. Poczta… szybka, duża, w miłej domenie, brawo. Mapy… 2D, 3D, czego chcieć więcej? YouTube, Dokumenty Online, Blogi, Zdjęcia, Androidy na telefonach, Przeglądarka, System operacyjny, coś tam, coś tam, coś tam … gigant stale poszerza swoje horyzonty. Z kwartału na kwartał kupuje kolejne firmy, ostatnio nawet taką, która zajmuje się przewidywaniem przyszłości.

Co jeszcze nas czeka? Analitycy przedstawili propozycje 10 usług, które już niedługo może wprowadzić ten internetowy potentat. Niektóre rozwiązania istnieją, ale naturalnie Google zrobi je lepiej… czy dobrze? Konsumenci powiedzą, że tak, dostaną przecież kolejny świetny produkt. Google zarzucił sieci.

Wszystko byłoby świetnie, gdyby nie fakt, że firma za pośrednictwem tych wszystkich usług zbiera masę informacji, o nas, użytkownikach.  Jeśli korzystacie z wyszukiwarki, gdy jesteście zalogowani na np. iGoogle’u, wejdźcie, proszę, w „Ustawienia konta Google”, a następnie wybierzcie „View data stored with this account”. Zobaczycie, ile informacji o Was zebrano. Zbadajcie sekcję „Web history”, sprawdźcie, czego szukaliście miesiąc temu… bez komentarza. Te wszystkie informacje są następnie wykorzystywane w usłudze AdWords, która wyświetla reklamy, i co mniej ciekawe, stanowi główny dochód firmy.

Na koniec film propagandowy, jeśli ktoś nie obejrzał w jednym z podanych linków.

A żeby nie było znów promicrosoftowo, załączam kilka komiksów.