Uložení velkých dat z JavaScriptu

KarelBezdeda

Uložení velkých dat z JavaScriptu
« kdy: 16. 12. 2012, 00:29:26 »
Dobry vecer.

Mam upraveny JavaScript, ktery ziska dlouhy balik dat (napr. Blob, ArrayBuffer, ...) a chci jej nejak ulozit/zobrazit. Je toho tolik, ze zobrazeni base64 ztroskota na samotnem prevodu. Jak na to jinak, nez psat napr. add-on pro FireFox?
« Poslední změna: 16. 12. 2012, 12:54:23 od Petr Krčmář »


KapitánRUM

Re:Ziskat obsahla data z JavaScript
« Odpověď #1 kdy: 16. 12. 2012, 00:53:52 »
Odkud bereš ty data?
Ze serveru nebo z klienta?
Kam uložit?
Na server nebo na klienta?
Co takhle použít Web Socket?
http://www.google.cz/search?q=sockets+html5

KarelBezdeda

Re:Ziskat obsahla data z JavaScript
« Odpověď #2 kdy: 16. 12. 2012, 10:31:26 »
Data jsou ziskana JavaScriptem ze serveru, chtel bych je ulozit na klientovi. Chapu, ze ukladani souboru z JavaScript je problem. Krome napsani si addonu do prohlizece (ktery napr. u Firefoxu ma interface nsIFile) me jeste napada to z klienta zase POSTnout na server, kde mi to zpracuje php skript, ulozi u sebe a vrati mi odkaz na soubor, ale prijde mi to jako overkill.

KapitánRUM

Re:Ziskat obsahla data z JavaScript
« Odpověď #3 kdy: 16. 12. 2012, 11:03:48 »
Co takhle použít Web Socket?

KapitánRUM

Re:Ziskat obsahla data z JavaScript
« Odpověď #4 kdy: 16. 12. 2012, 11:50:31 »
Data si překopíruješ přes Web Socket a lokálně si je můžeš ukládat přes Local Storage: http://dajbych.net/html5-a-local-storage
Proces:
Krok 1:
Má klient stejná data jako server?
Ano: Použij ty z Cache
Ne: Nakopíruj data ze serveru do Cache.
Krok 2:
Povedl se krok 1?
Ano: Pracuj dál s cache
Ne: Cache nefunguje, pracuj jen z pamětí

Obecně bude lepší využít standard HTML 5 spíš než psát ADDON.
Já obecně bych se ti na instalaci nějakého tvého podezřelého adonu do počítače vyprdnul.
Stejně tak na instalaci FidloFoxu k vůli jednomu programu.
A pokud je to pro pět lidí, pak se zase snadno postaráš o to, aby nepoužívali starý Fidlofox.


KarelBezdeda

Re:Uložení velkých dat z JavaScriptu
« Odpověď #5 kdy: 16. 12. 2012, 14:38:48 »
Diky za odpoved a tip. Asi rozepisu, co chci dosahnout.

Mam stranku, nad kterou nemam kontrolu a chci z ni (= ciziho serveru) vytahnout nejaka data pomoci JavaScriptu. Musim trochu zmenit jeji puvodni JS funkce (pracovne v teto chvili zajistuji prepsanim funkce v FireBugu), abych dostal  data (radove desitky MB). Zmenenou funkci zavolam a dostanu balik dat, ktery je potreba ulozit na klientovi do souboru.

Proc mi zatim vychazi jako nejlepsi vec doplnek:
* bezproblemove ukladani dat na klientovi (nsIFile)
* moznost na konkretni stranku umistit sve tlacitko, na ktere navazu upravenou funkci (neni potreba funkci podhazovat FireBugem)

Jdu vhodnou cestou?

KapitánRUM

Re:Uložení velkých dat z JavaScriptu
« Odpověď #6 kdy: 16. 12. 2012, 15:08:44 »
Nemám to rád, fakt ne, ale v tomhle případě...tedy, nešlo by spustit na klientovi Pytlouní skript a stáhnout to pomocí toho?
Já bych se na JS vykašlal a data ze serveru si vycucal přímo.
Nejspíš chceš nějakou DB, jako je katalog firem nebo třeba data z Aresu....

KapitánRUM

Re:Uložení velkých dat z JavaScriptu
« Odpověď #7 kdy: 16. 12. 2012, 15:09:33 »

KarelBezdeda

Re:Uložení velkých dat z JavaScriptu
« Odpověď #8 kdy: 16. 12. 2012, 15:13:27 »
Nechci py-klienta, vytahovani dat ze stranky pomoci javascriptu by se mi spatne simulovalo, jsou to slozite objekty a tak dale... Ale presto diky. Momentalne jsem sve problemy zuzil na:
* jak modifikovat DOM strom konkretni stranky (pridat sve tlacitko)
* jak na toto tlacitko pridat svuj upraveny JS, ktery bude moci volat puvodni JS stranky
* popr. jak z doplnku pristupovat k JS stranky (abych si zdetekoval, ze mam (natahnute) vsechny funkce, ktere potrebuji)

KapitánRUM

Re:Uložení velkých dat z JavaScriptu
« Odpověď #9 kdy: 16. 12. 2012, 18:46:20 »
Stránku si uložíš na svém pecku, přidáš svůj JS a spustíš.
Alternativně to pustíš přes Proxy.

Rozdíly:
A) Uložená stránka bude fungovat samozřejmě jen do té doby, než původní autor změní stránku a tobě to přestane fachčit.
B) Proxy umí pozměnit stránku a přidat tam cokoliv (dřív se na free hostingu přidával nahořu baner).
Proxy případně může reagovat na požadavek o stažení souboru NějakýKódTéStránky.JS a místo toho vždy podstrčit NějakýTvůjKód.JS a tlačítko si přidáš sám pomocí JSka, nejjednodušší je ADD url+add event (Nepřidáváš tlačítko, ale jen url a k tomu třeba OnClick().

Pak by to šlo ještě přes cross site scripting, ale dvě(tři) výše uvedené možnosti jsou myslím nejjednodušší.
Protože jsem to párkrát dělal, mám vyzkoušené, že nakonec bylo nejsnazší si to stáhnout pomocí externího skriptu.
Ale pokud JS umíš, tak proč ne.

TV

Re:Uložení velkých dat z JavaScriptu
« Odpověď #10 kdy: 16. 12. 2012, 21:01:12 »
Nechci py-klienta, vytahovani dat ze stranky pomoci javascriptu by se mi spatne simulovalo, jsou to slozite objekty a tak dale... Ale presto diky. Momentalne jsem sve problemy zuzil na:
* jak modifikovat DOM strom konkretni stranky (pridat sve tlacitko)
* jak na toto tlacitko pridat svuj upraveny JS, ktery bude moci volat puvodni JS stranky
* popr. jak z doplnku pristupovat k JS stranky (abych si zdetekoval, ze mam (natahnute) vsechny funkce, ktere potrebuji)

Co třeba https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/?

42

  • **
  • 63
  • 42
    • Zobrazit profil
    • 42
Re:Uložení velkých dat z JavaScriptu
« Odpověď #11 kdy: 16. 12. 2012, 21:16:09 »
Zdravím,
mno JavaScript je možná tou nejhorší variantou na takové zpracování.
Je třeba si nejdříve uvědomit, že pokud to půjde přes prohlížeč, jsi tím omezen.
Prohlížeč umožní zpracovat a ukládat jen nějaký množství dat v závislosti na nastavení a také výkonu PC.
Právě uložiště prohlížeče hraje v takovém případě největší roli. Můžeš buď ukládat data do cookie, což je omezeno snad nejvíc, tudíž tady k ničemu.
Dále se nabízí možnost použít DOM storage - pomalé.
sessionStorage je také nevhodný. Ideálně bych na odkládání dat použil globalStorage nebo nejlíp localStorage objekt.
Pokud chceš parsovat stránku, použij postupné zpracování pomocí objektů a to tak, že jednoduše dej prohlížeči jednou za čas chvilku na odpočinek, třeba pomocí setTimeout. Problém asi nebude s tím, že těch dat je mnoho. Psal jsem v JS hodně velký aplikace na webu a velké zpracování dat. Problém nastane ve chvíli, kdy bude skript nepromyšlený, kdy budeš často načítat data z DOM a pracovat se stránkou jako takovou.
42

KapitánRUM

Re:Uložení velkých dat z JavaScriptu
« Odpověď #12 kdy: 16. 12. 2012, 21:37:11 »
Tak na to ukládání dat se dá použít i třeba FAKE.
Pokud už si už dá tu práci a rozběhne Proxy, není jediný důvod, aby si do stránky nevložil odkaz na jeho.php běžící na lokálním stroji, to jeho.php to už může narvat kam chce. JEHO JavaScript doluje data a posílá je na jeho.php, které běží na lokálním stroji a přesměrování je řešené pomocí třeba té proxy.

Lze to řešit i bez té proxy, ale pro tohle hraní je asi nejjednodušší tu proxy použít, už jen protože si můžeš prohlížet komunikaci.
Resp. záleží na prohlížeči, jestli bude ochotný navázat přímé spojení s php skriptem běžícím na jiném serveru, nebo jestli se bude cukat a bude potřeba buď snížit zabezpečení nebo snáze použít tu Proxy.

KapitánRUM

Re:Uložení velkých dat z JavaScriptu
« Odpověď #13 kdy: 16. 12. 2012, 21:40:04 »
Ostatně tady nejde nejspíš o nic jiného než o "vykradení" nějaké databáze nebo kulantněji řečeno "získání dat z cizího serveru bez spolupráce majitele".

42

  • **
  • 63
  • 42
    • Zobrazit profil
    • 42
Re:Uložení velkých dat z JavaScriptu
« Odpověď #14 kdy: 16. 12. 2012, 21:50:04 »
Resp. záleží na prohlížeči, jestli bude ochotný navázat přímé spojení s php skriptem běžícím na jiném serveru

Tady začíná víc problémů ještě před vývojem. Cross-Site scripting je jedna věc, ale dá se řešit. Ovšem v takovém případě by k cizímu webu přistupoval z jiného místa a narážíme na XSS Filtering, to má podle mě už hodně lepších webů a serverů podchycené.
42