Zabezpieczony: Prostota i użyteczność
Autor: Piotr Karpiuk o 30. sierpnia 2011
Napisany w Recenzja książki, Uncategorized | Wprowadź swoje hasło, aby zobaczyć komentarze.
Autor: Piotr Karpiuk o 30. sierpnia 2011
Napisany w Recenzja książki, Uncategorized | Wprowadź swoje hasło, aby zobaczyć komentarze.
Autor: Piotr Karpiuk o 27. sierpnia 2011
Przedmiotem dzisiejszego posta jest wchodzące w skład HTML5 API dzięki któremu JavaScript może w przeglądarce operować na plikach lokalnych, co można wykorzystać do tworzenia cache’y i danych offline na użytek aplikacji (np. baza emaili w webowym kliencie poczty, dostępna nawet po utracie połączenia z Internetem). Póki co API zaimplementowane jest w Google Chrome 9+, a jego podstawy (File API) w Firefox 3.6.3+.
Czytelnik obeznany z obsługą AJAXa (zwłaszcza w najnowszej, drugiej wersji) odnajdzie się tu bez trudu, ponieważ sposób wykonywania operacji I/O jest bliźniaczo podobny jak w XMLHttpRequest2. Tu również mamy do dyspozycji zdarzenia które pozwalają nam monitorować przebieg operacji (obsługując je możemy np. uaktualniać pasek postępu), podobnie jak mamy do wyboru tryb asynchroniczny i synchroniczny (ten drugi z przeznaczeniem dla osobnych wątków – WebWorkers). Zawartość pliku możemy traktować jako łańcuch, Data URL, blob, lub ArrayBuffer. Data URL to (w uproszczeniu) łańcuch reprezentujący tablicę bajtów w Base64 – można go użyć w HTMLowym img.src
(czyli jako źródło danych wyświetlanego obrazka). Dwa ostatnie typy danych zostały wprowadzone ponieważ sam JavaScript nie udostępnia typu całkowitoliczbowego ani wydajnej implementacji tablicy bajtów, przy czym ArrayBuffer
reprezentuje bufor danych na potrzeby WebGL.
File API pozwala reprezentować w przeglądarce plik, jak również uzyskać dostęp do metadanych plików lokalnych wybranych w formularzu przez użytkownika, oraz dostęp do danych zawartych w plikach (odczyt). Istotna nowinka znacząco poprawiająca doznania Internautów: teraz w kontrolce wyboru pliku dzięki atrybutowi multiple
użytkownik może wybrać wiele plików naraz, a dzięki webkitdirectory
nawet cały katalog. Może też przeciągać pliki z pulpitu do formularza na stronie WWW i odwrotnie. Po wyborze plików, a przed wysłaniem ich do serwera, z poziomu JavaScriptu możemy ustalić dla każdego z nich nazwę, rozmiar, typ MIME, datę ostatniej modyfikacji itp., a także wczytać zawartość pliku do przeglądarki. Dzięki temu możemy np. już w przeglądarce stwierdzić że plik jest zbyt duży aby przesyłać go na serwer, wyświetlić podgląd obrazka (ang. thumbnail), ewentualnie zapisać zawartość pliku w systemie plików zarezerwowanym dla aplikacji webowej (patrz FileSystem API dalej) tak aby była dostępna offline gdy nie ma dostępu do Internetu itd.
Tags: File API, HTML5
Napisany w Google Chrome, WWW | Brak komentarzy »
Autor: Piotr Karpiuk o 24. sierpnia 2011
Google zaproponował rozszerzenie protokołu HTTP przyspieszające ładowanie stron WWW nawet o 50%.
Łącza internetowe stają się coraz szybsze, ale pozostaje problem dużych opóźnień. Jest on dodatkowo pogłębiany przez protokół HTTP, który został zaprojektowany kilkanaście lat temu i coraz gorzej pasuje do współczesnych wymagań. Główne zarzuty w tym kontekście:
User-Agent
, Host
czy Accept*
) stanowią często znaczną część każdego komunikatu HTTP (od 200 bajtów do 2KB).
Google zaimplementował w swojej przeglądarce i używa w swoich usługach (Google Search, GMail, Google Docs) rozszerzenie HTTP o nazwie SPDY.
Na czym polega zmiana na lepsze?
X-AssociatedContent
i X-Subresources
, przy czym ten drugi jest sugestią dla klienta, że powinien poprosić o dodatkowe zasoby).
Mozilla wyraziła zainteresowanie pomysłem Google’a i zaimplementowała jego obsługę w jednej ze swoich łatek Firefoksa. Dostępne są już implementacje serwerów WWW dla różnych języków programowania (Python, Java, Ruby), a także stosowny moduł do Apache (mod-spdy).
Tags: SPDY
Napisany w Google Chrome, WWW | Brak komentarzy »
Autor: Piotr Karpiuk o 17. sierpnia 2011
Gdy w Google Chrome wejdziemy na URL chrome://about, otrzymamy rozpiskę wewnętrznych stron przeglądarki, pozwalających „zajrzeć pod maskę” Chrome’a, jak również wejść do różnych formatek poprzez URL zamiast pracowicie wyklikiwać je z menu.
Co ciekawsze pozwoliłem sobie wynotować:
chrome://net-internals | diagnostyka sieci |
chrome://tasks | taki odpowiednik linuksowego „top” |
chrome://flags | włączniki eksperymentalnych zabawek Google’a |
chrome://version | informacje o wersji przeglądarki i opcjach wiersza poleceń z którymi została uruchomiona |
chrome://gpu | informacje o karcie graficznej |
chrome://flash | szczegółowe informacje o Flashu |
chrome://cache | lista wszystkich URLi jakie użytkownik odwiedził |
chrome://memory | rozbicie na procesy, ile który zjada pamięci |
chrome://plugins | zainstalowane pluginy (Flash, Java itp.) |
chrome://extensions | zainstalowane rozszerzenia |
chrome://sync | diagnostyka silnika synchronizacyjnego |
chrome://workers | czyżby WebWorkers? |
chrome://dns | diagnostyka zapytań DNS |
Chrome oferuje również bogatą listę opcji wiersza poleceń. Przykładowo opcja --enable-logging --v=1
włącza logowanie do katalogu z danymi użytkownika ( ~/.config/google-chrome/chrome_debug.log
na Linuksie, C:\Users\
na Windows, katalog z danymi użytkownika można zmienić opcją --user-data-dir
).
Do wspomnianego katalogu z danymi użytkownika (i jego podkatalogu Default
) warto zajrzeć, żeby zobaczyć np. jak Chrome obsługuje pliki bazy SQLite dostępne za pomocą Web SQL Database.
Tags: Google Chrome
Napisany w Google Chrome | Brak komentarzy »
Autor: Piotr Karpiuk o 12. sierpnia 2011
Zakres usług, jakie oferuje się nam za mniej lub bardziej darmo jest już naprawdę rozległy. Popatrzmy tylko na tę listę podaną w jednym z numerów czasopisma PCWorld:
Tags: cloud computing
Napisany w WWW | Brak komentarzy »