środa, lutego 24, 2010

Geologia

Obserwujemy tutaj ustępowanie lądolodu śródpolskiego, w lokalizacji rzeszowskiej. Wyraźnie widoczne lodowe ostańce chowające się przed słońcem w obszarze ciemności bezpośrednio pod latarnią. Widać lodowcowy brud, chroniący wnętrze lodowca przed słońcem, a powstały przez wchłanianie materiału pylastego w obszarze operacji lodowca.

Należy zwrócić uwagę na znajdujący się na pierwszym planie wózek narzutowy. Cofający się lądolód pozostawił wiele takich artefaktów które cieszą wprawne oko. Przykładowo mikroorganiczne otoczaki zwane potocznie psią kupią. Ich kolekcjonerzy biją się o każdy niezwykły okaz, ich aukcje na holenderskich giełdach kończą się astronomicznymi cenami. Kobiety marzą o tym, aby otrzymać zaręczynowy pierścionek z kupiatym oczkiem. Chyba mamy 'diamond killera' na którego wszyscy czekaliśmy!

poniedziałek, lutego 22, 2010

Dysharmonia Karmiczna

Kawał czasu temu miałem znajomego, Przemysława, który wprowadził mnie w meandry nierównowagi - dysharmonii karmicznej. W każdej dziedzinie życia można wprowadzać zasady równowagi, zacznijmy od gotowania. Porównajmy wielkością kurę oraz krowę: w bezpośrednim starciu, kura nie ma szans, jednak gdy robimy jajecznicę to cząstkę karmy kury - jajko mieszamy w złych proporcjach z cząstką karmy krowy - masłem. W jajecznicy karma kury wygrywa z karmą krowy, te małe przegrane bitwy kumulują się, w końcu eksplodują w jednym rozładowującym napięcie wybuchu karmy. Najczęściej wiąże się to z zemstą krowiej karmy na kurzej, często na ludziach, gdyż ludzie to kury światowego podwórka - niektórzy sugerują, że taką wyrównującą eksplozją jest uciekające mleko. Jak uniknąć takiego niefortunnego zdarzenia w kuchni? Do każdego jajka brać kostkę masła - wtedy zachowana jest odpowiednia proporcja karmy i nie ma potrzeby niwelować dysproporcji.
Przykłady takich dysproporcji można mnożyć: dowcipy bez puenty, obiad bez deseru, zakup bez reszty, podróż bez celu. Strzeżcie się rozładowujących się dysharmonii karmicznych - nie znacie dnia ani godziny, gdy dopadnie was zemsta karmy.

piątek, lutego 19, 2010

GPS

Praktycznie każdy bardziej zaawansowany telefon, lub każdy, nawet najgłupszy smartfon jest wyposażony w kostkę pozwalającą na korzystanie z dobrodziejstw systemu GPS.

Dowiedzmy się zatem, jak można dobrać się do danych o naszym położeniu, w prostej aplikacji, pokazującej nam gdzie aktualnie się znajdujemy.
Pierwsze co musimy zrobić, to uzyskać dostęp do klasy LocationProvider, klasa ta wystawia jedną metodę, getLocationProvider. Funkcję tę należy nakarmić kryterium, w którym definiujemy wymaganą dokładność. W tym przykładzie, nie potrzebujemy informacji na temat wysokości oraz prędkości i kierunku (przydatne gdy chcemy stworzyć coś na kształt nawigacji, albo trackera).


Criteria cr = new Criteria();
cr.setAddressInfoRequired(false);
cr.setAltitudeRequired(false);
cr.setPreferredResponseTime
        (Criteria.NO_REQUIREMENT);
cr.setSpeedAndCourseRequired(false);
cr.setCostAllowed(true);
cr.setHorizontalAccuracy
        (Criteria.NO_REQUIREMENT);
cr.setPreferredPowerConsumption
        (Criteria.NO_REQUIREMENT);
cr.setVerticalAccuracy
        (Criteria.NO_REQUIREMENT);

LocationProvider lp =
LocationProvider.getInstance(cr);


Gdy usługa ta jest niedostępna albo wyłączona, funkcja ta zwróci nam null, który musimy ładnie obsłużyć, musimy też uważać na wyjątki - no ale to jest chyba dla wszystkich oczywiste. Obsługę i pobieranie danych należy zepchnąć na wątek chodzący w tle, próba pobrania lokalizacji z wnętrze dystrybutora zdarzeń (event dispatcher) spowoduje wygenerowanie wyjątku, gdyż aplikacja nie zezwoli nam się zablokować na tak długi czas (czas oczekiwania na synchronizację z danymi satelitarnymi może być baaardzo długi).

Location location = lp.getLocation(180);

if (location.isValid()) {
 Coordinates c =
       location.getQualifiedCoordinates();
 if (c != null) {
  double latitude = c.getLatitude();
  double longitude = c.getLongitude();
  // przetwórz otrzymane dane
 }
}


W wyniku tych akcji otrzymamy suche dane, które użytkownikowi nic nie mówią. Zamienimy je w podgląd terenu pobrany z pomocą Google Maps API (wersja statyczna). W ten sam sposób stworzono ten obrazek, który jest generowany na żądanie przez serwery Google, w sposób określony adresem URL:


http://maps.google.com/maps/api/\ staticmap?center=49.232611,20.015083\ &size=200x200&maptype=terrain\ &sensor=true&zoom=15\ &markers=size:mid|49.232611,20.015083

Zbieramy wszystko do kupy i w wyniku otrzymujemy taką oto zgrabną aplikacyjkę, które nie ma większego praktycznego sensu, jednak jako demonstracja zupełnie wystarczy.


Kilka uwag:
  • jeśli ustawiasz obserwatora na zdarzenia zmiany lokacji to obsłuż również zdarzenie zmiany dostawcy lokalizacji - może nagle zniknąć
  • obsłuż zdarzenie odebrania rozmowy - po jej zakończeniu od nowa ustaw obserwatora na zmiany lokalizacji

Kod źródłowy aplikacji jest dostępny o tutaj.

czwartek, lutego 11, 2010

PHP-E

Walcząc z amerykańską dominacją na rynku oprogramowania Unia Europejska postanowiła wprowadzić innowacyjną zmianę: zupełnie nowy język programowania PHP-E. Specjalną odmianę języka PHP dostosowaną do realiów Unii Europejskiej, jej rynku oraz klientów. Poniżej mamy przykładowy kod źródłowy w tym innowacyjnym języku programowania:

<php-e
   €zmienna
= "hello";    €druga = "world";    echo €zmienna." ".€druga."\n";
?>

Na poziomie bibliotek kod ma być zgodny z php, jednakże planowane są w nim rewolucyjne zmiany, które uczynią go lepszym. Niestety, żaden z moich rozmówców nie był w stanie podać przykładu ulepszenia z tego prostego względu, że nie rozpisano jeszcze przetargu na projekt ulepszeń. Dodatkowo zostaną rozpisane przetargi na interpreter języka, dokumentację oraz szkolenia dla programistów. Unia zamierza wyłożyć na to kilkaset milionów euro z programu "Społeczeństwo Informacyjne - Jeden naród, jedna unia, jedna droga".

Ma to ożywić nowoczesną gospodarkę, spowodować też ożywienie w przemyśle papierniczym i wydawniczym - zwiększy się produkcja oraz sprzedaż książek, zwiększą się też płace w tym sektorze gospodarki. Docelowo wszelkie oprogramowanie serwerowe ma być dostarczane właśnie w php-e. Chłodne komentarze w tej sprawie docierają zza oceanu, komentujący biorą w obronę amerykański monopol, bezpodstawnie insynuując marnotrawstwo pieniędzy podatników, ignorując pozytywny wpływ takich inicjatyw na wewnętrzny rynek unii. Polscy komentatorzy wypowiadają się entuzjastycznie, nieoficjalnie dowiedziałem się, że jeden z dużych serwisów zamierza w przyszłości przejść właśnie na ten język, ze względu właśnie na jego rewolucyjne zmienione podejście do sposobu pisania programów.

Jako ciekawostkę warto dodać, że php-e (czytaj pi-ejdż-pi-juro) będzie reklamowane europejskimi nacjami, igrając ze stereotypami: jurnego juhasa oraz jurnego wikinga.