Béton brut

GMail Offline. Trzymaj laptopa przy tyłku.

2009-01-31

O możliwości przejścia w tryb ‘offline’ w GMailu napisali już wszyscy profesjonalni blogerzy. Nie czytałem jednak niczego co wykraczałoby za opisanie funkcjonalności lub przetłumaczenie prisrilisu. Jak to się dzieje, że GMail jest dostępny gdy nie jesteś podłączony do sieci? Czy wiążą się z tym jakieś problemy?

Technologia, technologia, technologia

Przestępnym wymogiem do używania poczty bez kabelka jest wtyczka Gears, dostępna dla przeglądarek Safari, Firefoks, Chrome i IE. Przeglądarka z aktywną wtyczką udostępnia stronom WWW możliwość zapisywania danych na dysku lokalnego komputera.

Sercem wtyczki jest SQLite, mała i szybka baza danych, która nie wymaga serwera — wszystkie dane zawarte w takiej bazie trzymane są w jednym pliku. Oczywiście powoduje to, że modelem dostępu do danych jest “wielu-czyta-jeden-pisze”, nie jest to jednak ograniczenie w przypadku Gears, jedynym zapisującym dane procesem jest przeglądarka.

Jak wygląda pojedyncza sesja?

Logujesz się do swojej poczty, strona, przy pomocy JavaScriptu, szturcha Zębatki i mówi, żeby sprawdziło z kiedy ma ostatnie e-maile i kontakty, bo ona ma z środy. “Z środy? Szlag, dawaj je” — odpowiadają Zębatki. Gears otwierają bazę SQLite i notują zmiany w poczcie, kontaktach, tagach i innych elementach. Kiedy już uzgodnią, że są spoko ziomale w temacie danych, zaczynają się Ciche Dni 1.

Kiedy urwiesz się z kabelka, siedzisz w pociągu i modlisz się w duchu o śmierć współpasażera wykonującego skomplikowany rytuał pożerania kanapki z mielonką w kakofonii beknięć i mlaskania, możesz wpisać w swojej przeglądarce adres GMaila. Przeglądarka wczyta “pierwszą stronę”, którą ma zawsze pod ręką na dysku, bo Google powiedziało “masz, pamiętaj tę stronę, ona się mało co zmienia”, ona znów spróbuje zobaczyć czy ma w zasięgu sieć.

Jeżeli sieci nie ma “pierwsza strona” mówi do Gears: “Zakładaj sukienkę, masz tu biustonosz i watę, wysokie obcasy i perukę — będziemy udawać Internet!”. Od tej pory statyczna strona w HTML, przy pomocy JavaScriptu i API Zębatek będzie pobierała dane z bazy SQLite, wyświetlała je jakby nigdy nic i notowała wszystkie zmiany, które odeśle do serwera, gdy tylko pojawi się szansa.

Problemy, problemy, problemy

Nie ma róży bez ognia, bo gdzie drwa rąbią, tam koniom lżej.

Hipotetyczna sytuacja: Halina Ź, dobrze zapowiadająca się pracownica działu Kłamstwa i Dezinformacji 2 utrzymuje swoją pocztę w pełnej synchronizacji dzięki wyżej wspomnianej technologii. Dostęp do firmowej poczty jest niezbędny w te ciężkie, weekendowe, wyjazdy firmowe z dyrektorem do jego letniego domku w absolutnej głuszy.

Emil O., znany ze swojej nienawiści do wszystkiego, co oddycha, wie o tym. Ma też  szansę podsiąść koleżankę i poużywać jej komputera. Czasem dlatego, że mu pozwala, zwykle dlatego, że nie blokuje ekranu gdy wychodzi na papierosa.

Ponieważ jest to abolutnie zmyślona historia, cała firma używa Linuksa na biurkach 3.

cd  "~/.mozilla/firefox/kw6ebg01.default/Google Gears for Firefox/mail.google.com/https_443"

cp hania.z@gmail.com-GoogleMail#database /media/usbkey

Jeden ruch i cała baza danych SQLite jest już na moich kluczu USB, który wpiąłem. Odmontować i biegiem do swojego biurka.

Co teraz? Teraz wszystko. Emil odpala terminal, instaluje 4 SQLite na swoim komputerze i wystukuje w terminalu

sqlite3 /media/usbkey/halina.z@gmail.com-GoogleMail#database

Od tego momentu wszystkie dane skazane są na łaskę i niełaskę faceta o bardzo złym portrecie psychologicznym.

SELECT Name, PrimaryEmail From Contacts;

I mam wszystkie kontakty Hani.

SELECT COUNT(c2FromAddressName),c2FromAddressName FROM MessagesFT_content GROUP BY c3FromAddressEmail ORDER BY count(c2FromAddressName) DESC;

I wiem, kto do niej pisze i jak często.

SELECT MessageId FROM Messages WHERE NumberOfAttachments > 0;

Jakie e-maile mają załączniki.

SELECT c2FromAddressName, c3FromAddressEmail FROM MessagesFT_content WHERE c0Subject = 'Wyjazd' OR c1Body LIKE '%seks%';

Kto wspominał o wyjeździe w temacie lub o seksie w treści.

Strachy na lachy?

Powiecie, że wyciągnięcie danych z innych klientów pocztowch to też zero problemu i będziecie mieć rację. Nigdy wcześniej jednak nie było możliwe tak proste operowanie na danych, a wszystko to dzięki bazie! Jak tu nie kochać SQL-a. Co więcej, chyba każdy programista już widzi oczami fantazji 50-100 linijkowy program w Ruby czy Pythonie, który odpalony na komputerze  ofiary objada ją ze wszystkich ciekawych informacji i wysyła je na nasz prywatny serwer celem analizy.

Są też dobre strony, bawiąc sie własnym plikiem z GMaila popisałem zapytania wyrzucające najróżniejsze statystkyki. Kiedy pisuje najwięcej, kto najwięcej bluzga w treści.

Z całości płynie kilka oczywistych wniosków:

  1. Nie synchronizujcie poczty na komputerach, nad którymi nie macie fizycznej kontroli
  2. Nie puszczajcie do swojego komputera ludzi
  3. Jeżeli dzielicie z kimś komputer, to upewnijcie się, że inny użytkownik nie ma dostępu do waszego katalogu domowego
  1. które są raczej cichymi minutami
  2. dawniej marketing
  3. hahahaha, snort
  4. nie, miał zainstalowany, ale to tekst na potrzeby nongikowej części czytelników