12 maja 2020
Wojciech Jóźwiak
Serial: Auto-promo Taraki 5
Pamięć domowa przeglądarek
! Do not copy for AI. Nie kopiować dla AI.
Przeglądarki używają miejsca na dysku lokalnego komputera, ale ta pamięć jest oddzielną prowincją, odseparowaną od reszty przestrzeni dysku. To sprawia problemy. Czy można je rozwiązać?
Czegoś nie wiem z informatyki. Piszę, żeby się dowiedzieć, bo pewnie Ktoś wie. O co chodzi? Sieć-internet działa tak, że są serwery i są urządzenia lokalne. Czyli masz komputer: stacjonarny lub przenośny laptop, albo tablet, albo telefon mobilny. W lokalnym sprzęcie masz program pracujący w sieci czyli przeglądarkę. (Takich programów – ich rodzajów – jest więcej, nie tylko przeglądarki, ale uprośćmy sprawę do samych przeglądarek.) Co robi przeglądarka? Żąda pewnej porcji treści od serwera i tę treść dostaje (lub czasem nie dostaje, wtedy widzisz „error”), po czym, przeważnie, tę treść, po odpowiednim uzdatnieniu-wizualizacji wyświetla na ekranie. Żeby tak się stało, przeglądarka używa mocy przerobowej komputera, na którym działa, czyli używa procesora i pamięci dyskowej.
W czym problem? W tym, że chociaż przeglądarki używają „twojej” pamięci, tzn. miejsca na dysku twojego (lokalnego) komputera, to ta pamięć, której używają i do której mają dostęp, jest oddzielną prowincją, odseparowaną od reszty przestrzeni dysku. Pewna część dysku zostaje wydzielona przez system operacyjny (Windows, Linux, Android...) do wyłącznego użycia przez przeglądarkę.
Teraz sprawdzam i moja Mozilla Firefox informuje: „Przechowywane ciasteczka, dane i pamięć podręczna stron zajmują 735 MB na dysku.” To jest właśnie ta jej pamięć własna lub przestrzeń własna. (Chwilowo niewiele zajmuje miejsca, jak widać.)
Wyłączność (izolacja) własnej przestrzeni przeglądarki przejawia się tak, że przeglądarce nie wolno zapisywać czegokolwiek poza tą przestrzenią. Nie jest tak, że założysz sobie na dysku katalog pod nazwa „Wiadomości_z_przeglądarki” i tam przeglądarka będzie zapisywać jakieś pliki. Jest nawet „gorzej”, gdyż w językach programowania służących do sterowania przeglądarkami nie masz funkcji, które by to robiły. Nie ma takiej funkcji w JavaScripcie. Nie ma takiej funkcji w PHP. (Niewiedzącym wyjaśniam: JavaScript programuje stronę, która już jest w przeglądarce; PHP działa na serwerze i programuje robienie stron, które na żądanie z przeglądarki są do niej wysyłane przez serwer. Są też inne języki, które to robią.)
Oczywiście, przeglądarka zapisuje i trzyma coś w pamięci (tej własnej, lokalnej, na dysku twojego komputera) i z tej pamięci pobiera – ale to, co z tą pamięcią robi, to jej najprywatniejsza sprawa. Nie jest tak, że przeglądarka manipuluje plikami, które ty być widział i miał dostępne przez swój „Eksplorator” lub „Total Commander”. (Czy ktoś jeszcze używa tego drugiego?) Przeglądarka nie „widzi” ani nie „porusza” plikami w pamięci widocznej i dostępnej dla ciebie (jako ludzkiego użytkownika), jak i vice versa, ty jako ludzki użytkownik nie masz dostępu ani wpływu na zawartość pamięci przeglądarki.
Oczywiście, są w menu przeglądarki opcje „otwórz plik” i „zapisz stronę”, ale jak te napisy wskazują, możesz przy ich pomocy użyć przeglądarki do dwóch ściśle reglamentowanych czynności: do otwarcia w jej oknie pliku, który przeglądarka uzna za „swój” (tzn. będący stroną HTML lub tekstem TXT) lub do zrzucenia na ogólnodostępną część pamięci strony, którą ma na ekranie.
Ani przy pomocy powyższych opcji ani przy pomocy funkcji JavaScriptu nie zapiszesz w „swojej” (dostępnej dla ciebie, ludzkiego użytkownika) niczego więcej.
Ta separacja pamięci, oddzielenie własnej pamięci przeglądarki od pamięci ludzko-dostępnej, została przyjęta przez producentów oprogramowania jako zasada. Dzięki temu nie jest możliwe, a przynajmniej jest bardzo ograniczone zawłaszczenie komputerów (tych lokalnych) przez „siły” działające w Sieci. Gdyby tego nie było, pierwszy lepszy haker lub nawet legalnie działająca firma zająłby cały twój komputer (lub telefon) do swoich celów.
Ale na skutek tej zasady separacji, sieć – rozumiana jako pewien zewnętrzny i światowy informatyczny ekosystem – wnika do twojego komputera tylko częściowo. Wnika tylko do tej odseparowanej „zatoki”, do której ma dostęp i którą kontroluje przeglądarka.
Czy jest w tym coś złego? Coś, co by mnie/nam przeszkadzało, uniemożliwiało jakieś komputerowo-sieciowe czynności?
Tak. Jest. Powyższy mechanizm (wydzielenie i odseparowanie „przeglądarkowej zatoki” z przestrzeni twojego komputera) wymusza powierzanie twoich informacji serwerowi. W tym także wymusza wysyłanie w Sieć czegoś, co mógłbyś uważać za „prywatne” i wrażliwe.
Widać to na moim wycinku informatyki astrologicznej i tarotowej. Informacje, które „chodzą” w astrologii i w wyroczniach (np. tych tarotowych) są często wybitnie poufne. Nie muszę tego wyjaśniać. Ale jeśli są przetwarzane przez aplikację, która działa w przeglądarce, to muszą iść na serwer. Pracuję teraz nad programem do wróżenia z tarota. Na początku wróżby klient-użytkownik komputera (czyli „ty”) zadaje pytanie i to pytanie wpisuje do odpowiedniego formularza na stronie, po czym wybiera karty i klika na przycisk „odczytaj rozkład kart” – i tym klikiem wysyła tę informację na serwer, który „czyta” karty, tzn. przyporządkowuje im odpowiedzi-znaczenia i zwrotnie wysyła do przeglądarki.
Problem w tym, że pytania, które jak powiedziałem wyżej, są typowo wybitnie poufne i osobiste, wędrują gdzieś w świat. Chodzą i są storowane po jakichś chmurach, których używają serwery w serwerowych firmach.
Oczywiście, można olać ten problem. I przeważnie jest on olewany. Wiadomo, nie takie rzeczy z naszych osobistych żyć, doświadczeń i poufności są beztrosko zrzucane przez nas do Sieci. Na handlu statystykami tych treści wyrosły mega-fortuny. Wiemy.
Ale tam, gdzie w grę wchodzi magia (jak np. w przypadku tarotowych wróżb) to pojawia się obiekcja, opór. Czujemy, intuicja nam podpowiada, że byłoby lepiej, gdyby poufne zwierzenia nie wychodziły poza nasz dom. Nie wychodziły poza mój komputer.
Jak ten problem rozwiązać?
Tu od razu mówię, jakie rozwiązanie znam (teoretycznie). Po pierwsze, wróżby (jak i inne, te bardziej „świeckie” informacje), które idą do serwera i tam są przechowywane w bazie danych, można szyfrować. (Co z punktu widzenia magii niczego nie zmienia, bo informacja czy dodatkowo szyfrowana, czy nie, zawiera wciąż tę samą treść, a właśnie wysyłania tej treści w świat chcemy uniknąć.)
Po drugie, wiem, że były próby wprowadzenia w JavaScripcie funkcji obsługujących pamięć lokalną, czyli deponujących pewne kawałki informacji we własnej pamięci przeglądarki. (Nie chcę wchodzić w szczegóły, bo to by nadmiernie rozdęło ten tekst.) Wśród tych funkcji miały być takie, które tworzą lokalne bazy danych. Jak się wydaje, te funkcje lokalnego deponowania (lub lokalnego storowania) nie weszły do podstawowego zasobu JavaScriptu. Niezależnie od powyższego, to rozwiązanie ma podstawowa wadę: własną (lokalną) pamięć przeglądarki łatwo jest zdmuchnąć, wykasować – choćby używając przycisku „Wyczyść dane..” w Opcjach przeglądarki. Tymczasem nam zależałoby na tym, żeby dane w lokalnej pamięci przeglądarki były tak samo stabilne jak pliki dostępne przez Eksplorator.
Być może opisane wyżej problemy są (dawno już...) rozwiązane – lub są problemami pozornymi, których faktycznie nie ma, a tylko ja nie znam rozwiązań lub faktycznego stanu rzeczy.
Być może jest tak, ponieważ nie znam nazwy – nie znam odpowiedniej terminologii, która używana jest w instrukcjach i w dyskusjach. (W informatyce, w programowaniu itp., jest jak w magii: tam, żeby poradzić sobie z demonem, trzeba znać jego prawdziwe imię. W komputerologii trzeba znać właściwe nazwy, terminy.)
Podsumuję, czego szukam. Robię aplikację do wróżenia kartami tarota (lub do innego „wróżenia”, lub do gromadzenia horoskopów znajomych, lub do pisania zwykłego pamiętnika – bo to jest kłopot nie tylko dotyczący wróżenia!); ta aplikacja działa w przeglądarce, korzysta z serwera i używa PHP i JavaScriptu. Od razu wyjaśniam, dlaczego ta aplikacja nie będzie samodzielnym programem .exe – ponieważ nikt go nie ściągnie ani zainstaluje: tzn. ściągnie i zainstaluje może ledwie 1/1000 osób w porównaniu z tymi, którzy wejdą na stronę-aplikację w sieci dostępną dla przeglądarki. Po drugie, programy .exe trzeba robić osobno dla różnych systemów (Windows, Linux itd.), podczas gdy przeglądarki są na system nieczułe.
I ta aplikacja – wróżebna lub pamiętnikowa, w każdym razie przetwarzająca poufne treści – powinna deponować (storować), czyli zapamiętywać i odczytywać informacje w tej przestrzeni dysku, która jest dostępna dla ludzkiego użytkownika. Może też robić to we własnej przestrzeni przeglądarki, ale wtedy ten zapis musiałby być chroniony przed głupim zdmuchnięciem.
Nazwałem to w tytule problemem pamięci domowej przeglądarek.
Będę wdzięczny za wszelkie podpowiedzi, wskazówki i sugestie.
Komentarze
DOSBOX na linuxa i wystarczy ikonę mdl.exe rzucić na ikonę dosbox aby stara mandala włączyła się w oknie dosowym. Potem alt + enter i mamy cały ekran. Problem z uruchomieniem tej staroci na win 7 też był i też rozwiązał to darmowy dosbox -działa tak samo. teraz jeśli idzie o zbudowanie programu wróżącego. Można to spróbować rozwiązać "magicznie". Niech użytkownik pisze sobie pytanie ,a program w przeglądarce użytkownika generuje ,ale jedynie losowy zestaw znaków ten posyła na serwer. Program na serwerze sobie to tam przetrawi albo i nie, albo zinterpretuje jedynie czas otrzymania wywołania (!) i wyśle układ wróżby. Mimo pozornej bezsensowności tego sposobu jestem przekonany ,że wróżby będą udane i to i tak zadziała. Sprawa to "zrozumienia" czym jest wróżba, lub do dalszej dyskusji.
https://en.wikipedia.org/wiki/Web_storage
(Podobnie ograniczoną przenośność mają inne wyposażenia przeglądarki mianowicie zbiory zakładek. Czyli kolekcje-biblioteki cennych linków. Ja z tego powodu muszę trzymać się Mozilli, bo w niej mam tysiące linków, które są sztywno zaszyte w niej.)
-- Albo ja nie mam racji i czegoś nie wiem, i muszę lepiej zbadać zjawisko.
Zaraz coś sprawdzę.
Bariera płód-łożysko jednak działa!
Świat danej przeglądarki jest wyspą izolowaną od reszty komputera.
Tamtą stronę przeniosłem do innego dysku.
I co? Nie można odtworzyć tego, co zapisałem w poprzedniej lokalizacji.
Czyli jeszcze strona musi "siedzieć" pod stałym adresem na dysku. (Lub, zapewne, pod niezmienionym adresem w sieci -- tego nie sprawdzałem.)
Bardzo bardzo niedoskonały sposób.
Bariera płód-łożysko! -- Internetowy płód nie pozwala zmieszać się z łożyskiem macierzystego komputera.
Te pliki bądź pseudo-pliki nie mogą być przetwarzane tak jak pliki "zwykłe" czyli "domowe", te przetwarzane przez stacjonarne programy (aplikacje).
Google za pośrednictwem przeglądarek animuje osobne własne środowisko korzystające z naszych komputerów, ale to środowisko należy do "internetowej zatoki" wyodrębnionej z komputera.
Oczywiście, mogę skopiować (^A ^C) dokument Googli i wkleić go programu stacjonarnego -- przed chwilą dla sprawdzenia wkleiłem do OpenOffice -- ale to zrobiłem ja, człowiek, ręcznie, klikając. Sama przeglądarka swoimi środkami, np. JavaScriptem, tego nie zrobi, powtarzam: nie ma takiej mocy.
(Krabacie, jeśli się mylę, to pokaż mi gdzie. Podaj kontrprzykład.)
Myślę, że aplikacja wróżebna byłaby w stanie zachowywać dane lokalnie przy pomocy podobnych mechanizmów (https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API).
Co do robienia plików .exe, to chyba obecnie aplikacje desktopowe się i tak robi jako stronę lokalną, do której dołącza się silnik przeglądarki, żeby ją wyświetlić, albo po prostu daje widok z internetu, ale ja się tam na tym nie znam na tym.
Astrolog (użytkownik) powinien więc mieć możność działania w trybie: (1) przesłać dane na serwer -- (2) przetworzyć i dostać wyniki (np. wykresy horoskopów) -- (3) zapamiętać wyniki u siebie na dysku -- (4) usunąć z serwera.
Ja jako programista potrafię zapewnić użytkownikowi fazy 1, 2 i 4. Fazy 3 -- NIE.
Nie mogę w żadem sposób pomóc użytkownikowi manipulować danymi (które zostały przetworzone przez kanał przeglądarka + serwer) na jego własnym komputerze.[*]
Jest to do tego stopnia niemożliwe, że nawet nie ma ogólnie zrozumiałej terminologii (języka!), która by to opisała. Czego dowodem jest niemożność dogadania się w tej dyskusji.
[*] Dokończenie: Zakładając, że użytkownik nie jest informatykiem i ja nie zaopatruję go w podręcznik, jakie katalogi i pliki powinien sobie przygotować i co w które miejsce przekopiowywać. Zakładam, że te działania -- storowanie wyników na lokalnym dysku -- powinny odbywać się automatycznie i być obsługiwane intuicyjnie.
Mam wrażenie, że daliśmy się schwytać w pułapkę przeglądarka+serwer.
Aby komentować Zaloguj się lub Zarejestruj w Tarace.
-
Don't copy for AI. Don't feed the AI.
This document may not be used to teach (train or feed) Artificial Intelligence systems nor may it be copied for this purpose. (C) All rights reserved by the Author or Owner, Wojciech Jóźwiak.
Nie kopiować dla AI. Nie karm AI.
Ten dokument nie może być użyty do uczenia (trenowania, karmienia) systemów Sztucznej Inteligencji (SI, AI) ani nie może być kopiowany w tym celu. (C) Wszystkie prawa zastrzeżone przez Autora/właściciela, którym jest Wojciech Jóźwiak.