Archive

Archive for the ‘JavaScript’ Category

Gadżety Google i uwierzytelnianie Oauth

December 21st, 2008 2 comments

Od pewnego czasu wersja angielska strony domowej Google (IG), wygląda nieco inaczej. Na dole strony jest przełącznik i warto z niego skorzystać. Bardzo interesującą rzeczą która już działa (niestety tylko w wersji angielskiej) są gadżety społecznościowe. To nowe API dla programistów gadżetów. Ja potrzebowałem następującej funkcjonalności. Chciałem się dowiedzieć jaki jest adres e-mail użytkownika który uruchamia mój gadżet. Niestety – nie potrafię zrobić tego wprost. Jednak kombinując z biblioteką do zarządzania kontaktami udało mi się to zrobić. Otóż odpytując ta bibliotekę zwraca ona listę kontaktów której właścicielem jest użytkownik o identyfikatorze. Ten identyfikator to adres e-mail którego szukałem;). Jak to działa – przykład jest tutaj. Przykład zadziała tylko w angielskiej wersji serwisu. Po dodaniu gadżetu w

Wyświetl się prośba o autoryzację:

Trzeba wybrać konto Google lub się zalogować

I następnie udzielić dostępu:

W ten sposób nasz zaprogramowany gadżet będzie miał dostęp do ksiązki adresowej użytkownika oraz będzie mógł sprawdzić jego adres e-mail, a także imię i nazwisko.

Niestety, adresowi e-mail otrzymanemy w ten sposób nie możemy ufać. Inny zły programista będzie mógł oszukać naszą aplikację i podać dowolny adres e-mail… Czy znacie jakiś sposób żeby gadżet google mógł sprawdzić adres e-mail zalogowanego użytkownika?

Categories: Google, JavaScript Tags:

try { urchinTracker() } catch( ie7 ) {}

November 25th, 2008 No comments

Witam, Tego się nie spodziewałem. Prawdopodobnie aktualna wersja urchinTracker zawiera błąd. To jedna z większych aplikacji Google a problem wydaje się dość poważny. Po prostu nie działa z powodu ciasteczek w iframes w IE7 (które są przecież stosowane w Google IE). Moje nowe wywołanie statystyk wygląda teraz tak:

<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
  _uacct = "UA-xxxxxx-x";
  try {
      urchinTracker('xxxx');
  } catch( e )  {
}
</script>

Ale to przecież nie są żadne statystyki:).

Natomiast dla Google IG powinno się używać IG_Analytics:

<ModulePrefs … >

<Require feature=“analytics” />

</ModulePrefs>

<Content type=“html”>

<![CDATA[

<script>

_IG_Analytics(“UA-xxxx-xxxx”, “/xxxx”);

</script>

Ale co z innymi stronami z ramkami?

Categories: Google, JavaScript Tags:

TaskCalculator

November 7th, 2007 9 comments
Witam, Po raz trzeci na moim blogu pojawia się ten temat. Napisałem prosty programik zliczający czas pracy, na przykład czas pracy spędzony nad projektem. Bazą danych dla TaskCalculator jest kalendarz Google. Programik działa jako gadżet Google (uruchom). Nowa wersja zawiera raport sumaryczny, miesięczny oraz listę wszystkich wpisów w kalendarzu. Poprawiłem też kilka błędów. Zapraszam!
Categories: Google, JavaScript Tags:

Raport – zestawienie zadań z kalendarza Google

August 27th, 2007 5 comments
Witam, Jakiś czas temu rozpocząłem nowy projekt – Task Calculator. Jego zadaniem jest utworzenie raportu sumującego czas pracy – jest mi to potrzebne do fakturowania mojego klienta. Dane o czasie pracy zapisywane są w kalendarzu Google. Projekt na razie jest w fazie prototypu proof of concept: koncepcja się sprawdziła, kalkulator liczy – aczkolwiek jest jeszcze wiele błędów i rzeczy do zrobienia. Aby uruchomić kalendarz trzeba mieć oczywiście konto w Google. Task Calculator działa jako gadżet Google Home Page. Najpierw w ustawieniach kalendarza należy wyszukać adres kalendarza XML: Następnie należy zainstalować gadżet – Task Calculator – kliknij tu. Dalej w preferencjach gadżetu wpisujemy adres URL odczytany wcześniej z preferencji kalendarza Google. Możemy też dodać dowolne słowa kluczowe, które będą ujęte w raporcie. Jeżeli wszystko działa dobrze, to na ekranie pojawi się raport: Zapraszam do używania kalkulatora!
Categories: Google, JavaScript Tags:

Google Mashup

July 31st, 2007 No comments
Witam, Przeglądam sobie projekt Google Mashup. Wygląda ciekawie, choć na razie trudno mi powiedzieć co to jest. Mamy proste IDE działające przez przeglądarkę WWW, które umożliwia nam tworzenie specyficznych aplikacji. W kilkunastu liniach kodu możemy napisać aplikację typu: “lista zadań”. Aplikacja taka będzie działać oczywiście w przeglądarce WWW. Bazą danych – miejscem w którym zapisywane będą dane użytkownika – może być jego konto w Google. Wszystko to w kilku liniach kodu. Mashup szybko mnie wciągnął. Korzystając z przykładów, napisałem pierwszy programik. Zajęło mi to tylko kilka minut. Już wiem czym będę teraz gasił Lotus’owców). Mashup podoba mi się tak bardzo, że zamierzam przepisać mój Task Calculator wykorzystując właśnie tę technologię. Pozdrawiam!!!
Categories: Google, JavaScript Tags:

Moja nowa zabawka – zestawienie tasków Google Calendar

July 26th, 2007 No comments
Od pewnego czasu zacząłem notować to co robię w Google Calendar. Dziś potrzebne mi są zestawienia – ile czasu zajmuje mi praca nad określoną czynnością. Potrzebuję wiedzieć, ile czasu pracuję nad projektem dla danego klienta, lub też ile godzin gram w koszykówkę. Jakiś czas temu napisałem kilka linii kodu, które demonstrują jak zacząć integrować Google Calendar i Zend FrameworkM. Dziś postanowiłem się poprawić. Zacząłem pisać Google Gadget który w zamyśle będzie to robił dobrze. Na chwile obecną gadget potrafi pobrać zadania z niezbyt dużego kalendarza, policzyć sumaryczny czas pracy dla wszystkich zapisów w kalendarzu i dla zapisów których tytuł pasuje do frazy. Istniej możliwość zdefiniowania wielu fraz. Jest to dobry zalążek projektu który może być użyteczny dla szerokiego grona internautów. Projekt dostępny jest pod adresem: http://code.google.com/p/task-calculator/ Sam gadget jest tutaj: http://task-calculator.googlecode.com/svn/trunk/TaskCalculatorGadget/WebContent/gadget.xml Dla mnie funkcjonalność teraz jest już wystarczająca. Liczę sobie ile czasu poświęcam na zarabianie i na rozrywkę. Może samemu skończę pisać to coś? A może się do mnie przyłączysz ku chwale Internetu? Projekt jest otwarty, licencja to GPLv3. PS. Dziś nazywam to Task Calculator, jednak wydaje mi się, że lepsza nazwa to będzie: Task Report, nie wiem…
Categories: Google, JavaScript Tags:

Phobos

March 14th, 2007 No comments
O w mordę, czegoś takiego nigdy bym sobie wcześniej nie wyobrażał. Phobos to framwork do tworzenia aplikacji WWW, gdzie językiem wykonywanym po stronie serwera jest – JavaScript. To dziwo napisane jest w Javie, wspiera AJAX a nawet Java Persistence Api (JPA) – taki standard dla mapowania obiektowo relacyjnego. Ma też swój własny język dla szablonów HTML (coś jakby Smarty). Pisząc aplikację w Phobos możemy to zrobić na przykład tak. Logikę biznesową możemy napisać w Javie wykorzystując JPA. Kontroler w JavaScripcie (wykonywanym na serwerze) a widok w specjalnym języku – EJS – który na pierwszy rzut oka przypomina JSP. Phobos mnie zainteresował.
Categories: AJAX, Java, JavaScript, JPA Tags:

Cross Domain AJAX

February 27th, 2007 4 comments
Zdarzyło mi się, że potrzebowałem AJAX, gdzie serwer dostarczający dane będzie innym serwerem niż ten, z którego ładowana jest strona internetowa. Model DOM przeglądarek internetowych, w tym obiekt XMLHttpRequest będący podstawą wielu implementacji AJAX, ma zabronione operowanie na danych pobieranych z różnych domen (z różnych serwerów WWW). Na szczęście, miksowanie danych z pobieranych z różnych serwerów WWW jest możliwe – przykładem jest Google AJAX Search Api. Dane z różnych serwerów WWW można miksować, każąc przeglądarce WWW wykonać nowy skrypt JavaScript, np.: document.write. Ja potrzebowałem trochę bardziej zaawansowanego rozwiązania, które umożliwiło by mi między innymi.:
  • Wykonanie procedury po zakończeniu pobierania
  • Grupowanie pobieranych skryptów i wykonaniu procedury po zakończeniu pobierania
  • .
  • No i oczywiście pracę z różnymi domenami WWW
Postanowiłem więc zmodyfikować moją ulubioną bibliotekę AdjAJAX – tak aby zamiast pobierania danych wykonywała skrypt z innej domeny. Sprawdziło się. Powstała biblioteka: Cross Domain AJAX – którą opublikowałem na licencji LGPL, zgodnie z licencją AdvAJAX. Biblioteka Cross Domain AJAX działa prawie tak samo jak AdvAJAX, z tym że zamiast pobierać dane (XML, Text), zmusza przeglądarkę do wykonania JavaScript. Jak tego można używać? Wyobraźmy sobie, że na serwerze A mamy dane, które chcemy udostępnić stronie WWW znajdującej się na serwerze B. Aby tego dokonać na serwer A ładujemy program, który po wykonaniu się zwróci nam kod JavaScript zostawiający w globalnej przestrzeni nazwy przeglądarki obiekt z danymi. Aplikacja z serwera B potrzebuje tych danych. Uruchamia ona moją bibliotekę – Cross Domain AJAX – która ładuje skrypt z serwera A. Po załadowaniu danych z serwera A sterowanie może być przekazane do dowolnej funkcji, na przykład rysującej fontannę. Brzmi to skomplikowanie i może się wydawać zbyteczne – jednak jest na prawdę fajne. Zapraszam do projektu: Cross Domain AJAX.
Categories: AJAX, JavaScript Tags:

Flirt z XMLHttpRequest

February 14th, 2007 No comments
Witam! Od pewnego czasu interesuję się AJAX a dziś chciałbym ponarzekać na XMLHttpRequest. XMLHttpRequest jest obiektem, który kojarzy się z czarną robotą, który kryje się pod większością bibliotek do AJAX. XMLHttpRequest to obiekt w JavaScripcie który obsługuje żądania POST, GET, HEAD i umożliwia pobierania danych (na przykład XML) z serwera. Fajne! Niestety, tylko z tego serwera z którego uruchomiona jest strona. Można to rozwiązać, instalując program proxy u klienta, jednak instalowania aplikacji na serwerze klienta z punktu widzenia usługodawcy nie zawsze jest możliwe. Hmm, w takim wypadku jak działa Google AJAX Search Api? Używają mniej więcej czegoś takiego:
var s = document.createElement("script");
s.src="http://www.serwer.wsieci/skrypt.js?parametr1=wartosc1";
document.getElementsByTagName("head").item(0).appendChild(s);
Googlowcy nie używają XMLHttpRequest ponieważ na stronie klienta nie mogli by wczytać danych ze swojego serwera. XML i DOM przeszkadza, gdy aplikacja AJAX ma być uruchamiana na wielu domenach. Potrzebne jest wtedy prymitywne rozwiązanie oparte na poczciwym JavaScript: document.write wystarczy by pisać AJAX.
Categories: AJAX Tags:

FormChek, walidacja numeru karty kredytowej w JavaScript

January 16th, 2007 No comments
Witam, Znalazłem bibliotekę JavaScript do walidacji danych – FormChek.js (np. numery karty kredytowej). Mam do niej od razu patcha, gdyż mi nie działało.
 // BOI, followed by an optional + or -, followed by one or more digits,
 // followed by EOI.
-var reSignedInteger = /^(+|-)?\d+$/
+var reSignedInteger = /^([-+])?\d+$/


 // BOI, followed by one of these two patterns:
@@ -208,7 +208,7 @@
 // (a) one or more digits, followed by ., followed by zero or more digits
 // (b) zero or more digits, followed by ., followed by one or more digits
 // ... followed by EOI.
-var reSignedFloat = /^(((+|-)?\d+(\.\d*)?)|((+|-)?(\d*\.)?\d+))$/
+var reSignedFloat = /^((([-+])?\d+(\.\d*)?)|(([-+])?(\d*\.)?\d+))$/

 // BOI, followed by one or more characters, followed by @,
 // followed by one or more characters, followed by .,
W skrócie: wyrażenie (+|-) zastępuję ([-+]). Działa OK. Testowałem dla IE, Firefoxa, Opery i Konquerora.
Categories: JavaScript Tags: