Scott Tiger Tech Blog

Blog technologiczny firmy Scott Tiger S.A.

Archiwum dla Lipiec 12th, 2012

Typed Array

Autor: Piotr Karpiuk o 12. lipca 2012

Rozwój języka JavaScript podąża za zapotrzebowaniem, czego przejawem jest m.in. Typed Arrays – sposób na efektywne przekazywanie danych binarnych do bibliotek natywnych. Jedynym typem liczbowym w JavaScripcie jest typ zmiennoprzecinkowy, a reprezentacja tablicy bajtów zawsze była mało oszczędna pamięciowo (Array) lub niewygodna (np. String.rawCodeAt()). Na nowe typy danych ArrayBuffer, ArrayBufferView i DataView można spojrzeć jak na odpowiedniki tablic i struktur w języku C.

Propozycja nowych rozwiązań wyszła ze strony zespołu pracującego nad WebGL (grafika 3D w przeglądarce), ale szybko znalazły one zastosowanie w takich technologiach przeglądarkowych jak:

  • HTML5 Canvas – fragment płótna można przekształcić w natywną tablicę pikseli i działać bezpośrednio na niej,
  • Web Audio API, Media Source API – dostęp do danych binarnych audio i wideo,
  • XMLHTTPRequest 2, WebSockets – między przeglądarką a serwerem można przesyłać dane binarne,
  • WebWorkers – można przekazywać dane binarne (przez referencję!) między wątkami; przynajmniej w Google Chrome,
  • File API – można manipulować danymi binarnymi na dysku w systemie plików (w piaskownicy).

Nadeszły zatem czasy, gdy programista JavaScriptu po stronie przeglądarki może wygodnie dobrać się do pliku binarnego MP3 lub JPEG aby wyciągnąć z niego metadane.

Mechanizm, o którym dziś mowa, składa się z dwóch części: bufora (klasa ArrayBuffer) i perspektywy (ang. view, klasa ArrayBufferView i pochodne – czyli tablice, oraz DataView – czyli dostęp swobodny). Bufor jest tablicą bajtów, a perspektywa daje dostęp do niego zapewniając kontekst, jakim jest offset startowy bufora, liczba bajtów, i typ danych komórki. Dla jednego bufora możemy utworzyć dowolnie wiele perspektyw.

Czytaj więcej »

Napisany w JavaScript | 2 Komentarzy »