Mozilla Hacks: Natywny JSON – większe bezpieczeństwo i wydajność

Mozilla Hacks to zbiór artykułów na temat nowych możliwości silnika Gecko w Firefoksie 3.5. Członkowie Aviary.pl zamierzają tłumaczyć co ciekawsze artykuły z Mozilla Hacks na polski. Na Techblogu zacznę od artykułu „Better security and performance with native JSON”, autorstwa Aruna Ranganathana. Oryginalny artykuł i jego tłumaczenie dostępne są na warunkach licencji Creative Commons Attribution 3.0 USA.


Większe bezpieczeństwo i wydajność dzięki natywnej obsłudze formatu JSON

Mechanizm reprezentacji danych JavaScript Object Notation (JSON) szybko stał się nieodzownym narzędziem programisty WWW, umożliwiając aplikacjom w języku JavaScript pobranie i przetworzenie danych w sposób intuicyjny, w skryptach, z prostą hermetyzacją danych. Firefox 3.5 zawiera natywną obsługę JSON-a, udostępnioną przez własność window.JSON obiektu globalnego.

Natywny JSON, wbudowany w maszynę wirtualną JS, stał się możliwy dzięki specyfikacji ECMAScript 5 (specyfikacja w formacie PDF), której inne części również zostały
zaimplementowane w Firefoksie 3.5. Obecnie natywną obsługę JSON-a udostępniają Firefox 3.5 i IE8, można się też spodziewać, że i inne przeglądarki wkrótce będą miały ją zaimplementowaną.

Natywna obsługa formatu JSON ma dwie zalety:

  1. Bezpieczeństwo. Korzystanie z funkcji eval do wyznaczenia wartości wyrażeń zwróconych jako ciągi znaków nie jest bezpieczne. Ponadto, natywny JSON obsługuje wyłącznie dane. Nie można go użyć do przetworzenia obiektów zawierających wywołania metod – spowoduje to zgłoszenie błędu.
  2. Wydajność. Przetwarzanie JSON-a przy użyciu zewnętrznych skryptów i bibliotek jest zwykle znacznie wolniejsze niż natywne przetwarzanie JSON-a przez przeglądarkę.

Oto kilka przykładów.

API JSON do wyszukiwania może wyglądać jak poniżej:

/* 
Załóżmy, że dane w zmiennej data
zostały otrzymane z serwera.
Dla przejrzystości, wyświetlamy
je tutaj w osobnych liniach.
*/
 
var data = ' { "responseData":
{"results": [
    {
        "SafeSearch":"true",
        "url":"http://www.arunranga.com/i.jpg",
    },
    {
        "SafeSearch":"false",
	 "url":"http://www.badarunranga.com/evil.jpg",
    }
]}}';

Takie zasoby mogły zostać zwrócone na przykład przez proste żądanie HTTP GET z wykorzystaniem API typu REST.

Dzięki natywnemu JSON-owi, można napisać taki kod:

/*
 Pobranie uchwytu do ww. zasobu JSON.
 Najwygodniej zrobić to za pomocą
 zewnętrznych bibliotek obsługujących
 natywnego JSON-a.
*/
 
if (window.JSON) {

    var searchObj = JSON.parse(data);
    for (var i=0; i++; i < searchObj.responseData.results.length) {

        if (searchObj.responseData.results[i].SafeSearch) {

            var img = new Image();
            img.src = searchObj.responseData.results[i].url;

            // ... Wstaw obrazek do drzewa DOM ...
    }
}

Dzięki metodzie stringify można obiekt z powrotem zserializować (przekształcić do ciągu znaków w formacie JSON – przyp. tłum.):

// Powrót do wyjściowej sytuacji

 
var data = JSON.stringify(searchObj);
 
// zmienna 'data' zawiera teraz pierwotny ciąg znaków

Oczywiście, aby w pełni skorzystać z możliwości JSON-a, warto spróbować pobierać dane JSON z innych domen, poprzez mechanizmy callback takie jak JSONP. (JSONP nie skorzysta z natywnego JSON-a, nie wiem, czemu artykuł oryginalny o nim tu wspomina – przyp. tłum.). Wielu programistów raczej nie będzie korzystać z obiektu JSON bezpośrednio. Najczęściej korzystać oni będą z mechanizmów udostępnianych przez biblioteki takie jak Dojo i jQuery. Biblioteki te ułatwiają odbieranie i przetwarzanie zasobów JSON z różnych domen i udostępniają wiele “cukru składniowego” dla procesu wywołań callback i manipulacji drzewem DOM.

Natywna implementacja JSON-a współpracuje z popularną biblioteką json2.js (która prawidłowo rozpoznaje, czy dostępna jest natywna obsługa JSON-a), dzięki czemu programiści mogą bez problemu korzystać z przetwarzania JSON-a w przeglądarkach bez natywnej jego obsługi (API zdefiniowane w json2.js jest identyczne z natywnym API omawianym w tym artykule – przyp. tłum.). W chwili pisania tego artykułu, Dojo i jQuery ogłosiły, że będą wspierać natywną obsługę JSON-a:

Po spotkaniu Aviary.pl w Krakowie

Dzisiaj zakończyło się copółroczne spotkanie zespołu Aviary.pl w Krakowie.

Efekty? Odświeżone szefostwo – zastępczynią Huberta Gajewskiego została Joanna Mazgaj. Mamy też nowe pomysły i plany na przyszłość. :)

Spotkanie w Krakowie zbiegło się w czasie z tym, o czym pisałem w poprzedniej notce, czyli objęciem przez Firefoksa pierwszego miejsca pod względem liczby użytkowników w Polsce. Było więc co świętować. :)

Mozilla in Poland: EPIC WIN! ;-)

For the first time since the late nineties, Microsoft Internet Explorer is no longer the most popular web browser in Poland. Mozilla Firefox scores the highest marketshare percentage ever, 45.3%, leaving MSIE behind by 0,3 percentage points.

All the Gecko-based browsers amount to 45.5% of the marketshare, Opera is at 8% and growing. WebKit-based browsers like Chrome and Safari grouped with KHTML-based Konqueror are only at 0.3%.

We did it! We broke the Microsoft monopoly! Big thanks to all the people who have supported Mozilla in Poland, starting with Marcin Jagodziński, the first man to translate Mozilla into Polish, Piotr Bartecki and Marek “GmbH” Wawoczny for everything they did at MozillaPL.org, and to all of my friends at Aviary.pl. We would not be here without all your work! I also personally would like to thank the Mozilla Europe team for supporting the Polish team.

To our great community – MozillaPL.org forum members, Polish extension developers,  contributors to the alt.pl.mozilla newsgroup, and to all the Polish web developers who supported web standards and Gecko even in the days of 1% marketshare, to all of you – THANK YOU!!!

History happens!


mozillaepicwin


Po raz pierwszy od lat dziewięćdziesiątych Microsoft Internet Explorer nie jest już liderem rynku przeglądarek internetowych w Polsce. Mozilla Firefox uzyskuje najwyższy wynik w historii – 45,3%, wyprzedzając MSIE o 0,3 pkt proc.

Wszystkie przeglądarki oparte na silniku Gecko mają łącznie 45,5%, a Opera osiągnęła poziom 8% i nie przestaje rosnąć. Przeglądarki oparte na silniku WebKit, takie jak Chrome i Safari, łącznie z opartym na KHTML Konquerorze mają łącznie 0,3%.

Udało się! Przełamaliśmy monopol Microsoftu! W tym miejscu chciałbym podziękować wszystkim, którzy wspierali Mozillę w Polsce, zaczynając od Marcina Jagodzińskiego, który rozpoczął polską lokalizację Mozilli, przez Piotra Barteckiego i Marka “GmbH” Wawocznego (za wszystko, co zrobiliście w MozillaPL.org) po moich przyjaciół z Aviary.pl. Bez Waszego oddania nie byłoby to możliwe. Dziękuję także stowarzyszeniu Mozilla Europe za wsparcie, jakiego udziela polskiemu zespołowi.

Naszej wspaniałej społeczności – użytkownikom forum MozillaPL.org, twórcom polskich rozszerzeń, uczestnikom dyskusji na alt.pl.mozilla, a także tym wszystkim web developerom w Polsce, którzy przestrzegali standardów WWW i wspierali Gecko nawet w najbiedniejszych dniach jednoprocentowego udziału w rynku, Wam wszystkim – WIELKIE DZIĘKI!!!

Tak oto dzieje się historia. :)

PS. Na ten temat po polsku pisze dziś także Hubert.

Kraków świętuje wydanie Firefoksa 3

W sobotę wieczorem w klubie Re w Stołecznym Królewskim Mieście Krakowie małopolski oddział Aviary.pl będzie świętował wydanie Firefoksa 3.

Jakby ktoś chciał wpaść, pogadać o Firefoksie, napić się czegoś razem z nami – zapraszamy. Chętnych prosimy o dopisanie się na stronie podlinkowanej powyżej. :)

PS.
Ponad dziewięć milionów pobrań, w tym 226857 z Polski! Dziękujemy!