.: Rychlé menu: navigace .:. odkazy .:. kategorie .:. vyhledávání .:. archivy .:. autoři :.  

12.01.2005



Jak mi IE připravil další z řady překvapení, aneb Neříkej HOP...

Až do včerejška jsem si myslel, že záludnosti IE spočívají jen v prapodivných praktikách při interpretování kódu a CSS. Kdepak! Dokud vláda zasedá a Explorer běží, tak si nikdo nemůže být ničím jistý...

jsem se zmiňoval o tom, že píšu malý webserver pro procesor 8051. Tenhle procesor běží na frekvenci nějakých 20 MHz a má 32kB paměti, takže je i laikovi jasné, že s tím neudělám žádné zázraky. Jenže ono je potřeba udělat alespoň malé kouzlíčko...

Ten webserver totiž má sloužit i ke stahování velkých bloků dat, tak okolo 20 MB. A to je kámen úrazu... Aby byla doba stahování alespoň trochu snesitelná, tak je potřeba, aby server posílal data rychlostí kolem 100kB/s. Jenže v takovém případě není, řečeno slovy mého bývalého šéfa, čas na hrdinství a vše je potřeba podřídit jedinému cíli: Rychlosti...

Podřídil jsem tedy vše rychlosti, optimalizoval jsem až téměř nečestným způsobem, vyhodil jsem vše, co nebylo stoprocentně nutné ke stahování, a ono to fungovalo. Rychlost byla až 120kB/s, jenže bohužel — v Mozille. I v Opeře, i ve Firefoxu, i v Konqueroru a v dalších. Jen ve Zkoumákovi ani Ň. Což jsem, protože ho nepoužívám, zjistil až včera.

Spustil jsem tedy Ethereal, ponořil se do paketů a po několika hodinách zkoumání jsem objevil následující:

Mozilla (a další) stahuje soubory následujícím způsobem: Pošle HTTP požadavek HEAD a obdrží od serveru velikost, název a typ souboru. Dá uživateli na výběr co chce s dotyčným souborem udělat a až poté, co se uživatel vyjádří, pošle požadavek GET a stáhne soubor. Stahování vypadá pak asi takto:

OK, pošli blok dat od adresy 1000 — server pošle blok dat velikosti 1000 bajtů od adresy 1000
OK, pošli blok dat od adresy 2000 — server pošle blok dat od adresy 2000
OK, pošli blok dat od adresy 3000 — server pošle blok dat od adresy 3000
OK, pošli blok dat od adresy 4000 — server pošle blok dat od adresy 4000
OK, pošli blok dat od adresy 5000 — server pošle blok dat od adresy 5000
atd...

Idyla... Takhle mi to fungovalo naprosto bez problémů, takže takto jsem optimalizoval. A to jsem neměl!

Pak se do věci vložil IE. Jeho stahování vypadá takto: Pošle HTTP požadavek GET a server na to zareaguje tím, že pošle hlavičku a za ní hned data. IE dá uživateli na výběr co se souborem, ale mezitím mu server cpe další a další data a PC si je někam ukládá. Když se uživatel vyjádří, tak si IE uloží to co je zatím stažené a stahuje dál. (Je to vidět při stahování malých souborů — než člověk klikne na Uložit, tak už je soubor stažený.)

Jenže kámen úrazu je v tom, že ono místo, kam se ukládají ta data, je docela malé. Skoro by se dalo říct VELMI malé. Takže komunikace vypadala zhruba takto:

OK, pošli blok dat od adresy 21000 — server pošle blok dat velikosti 1000 bajtů od adresy 21000
OK, pošli blok dat od adresy 22000 — server pošle blok dat od adresy 22000
OK, pošli blok dat od adresy 23000 — server pošle blok dat od adresy 23000
OK, pošli blok dat od adresy 24000 — server pošle blok dat od adresy 24000
OK, pošli blok dat od adresy 25000 — server pošle blok dat od adresy 25000
v tuhle chvíli už je ale plné úložiště, a tak přichází požadavek:

OK, ale mně už se to tam nevejde, takže mi prosímtě pošli ještě jednou blok dat od adresy 25312

No a protože, jak jsem říkal, nebyl čas na hrdinství, tak server na ono OK reaguje tím, že posílá dál bloky dat od adres 26000, 27000, 28000... a PC odpovídá OK, data dorazila, ale tyhle jsem nechtěl, pošli blok dat od adresy 25312 furt dokola, jak úřednice na berňáku.

Takže jsem dodělal kontrolu toho, jestli OK od Zkoumáka znamená „pošli další data” nebo „pošli data, co jsem už jednou dostal, protože je nemám kam dávat”. A v tu chvíli padla rychlost na 11 kB/s. A pokud má být učiněno protokolu zadost, tak už to lepší nebude...

Škoda. Taková pěkná optimalizace — a je v pdachu! {smile}

Ještě bych to mohl zaonačit tak, že bych tuhle kontrolu dělal jen v případě User-Agent=Explorer. Tak by uživatel s Mozillou mohl stahovat sice ne-zcela-úplným protokolem, ale „na plnej kotel”, no a uživatel s IE by holt měl protokolární smůlu... Jenže to by mi asi zákazník hodil na hlavu.

Dost možná je to záležitost nižší vrstvy systému než je ta v IE, bůh suď, faktem je, že se to s jiným prohlížečem nestává. Možná jde o buffer TCP protokolu, který je zaplněn proto, že si IE řekne o data a pak je nepřebírá, kdo ví...

Přitom by bývalo stačilo, kdyby IE posilal řádně HEAD a až po něm GET, tedy choval se podle hesla nechtci data, dokud nevím co s nima! Pak by nemusel posílat své ZeroWindow pakety, vše by fungovalo k plné spokojenosti a svět by byl krásný, vlk by spal vedle beránka a vzduch by byl naplněn slovem MÍR! Ale to by byl svět až příliš jednoduchý.

Nezbývá než parafrázovat latinské lex dura, sed lex — Prohlížeč blbý, leč majoritní!

Smutné PS: Už se těším na komentáře, ve kterých mi budou nejrůznější odborníci a „odborníci” dokazovat, že blbej jsem já, protože můj server neimplementuje všechny možné požadavky TCP protokolu a já nefunkčnost svých „nečistých optimalizací” házím na IE. Pro všechny, co už už chtějí něco takového psát, tu mám stručné vysvětlení celého článku (už mě unavuje vždycky v komentářích vysvětlovat, že nadsázka je nadsázka, povzdech je povzdech, co je vážně, co ne a jak jsem to celé myslel, tak to udělám teď): Ano, moje optimalizace na rychlost funguje všude s výjimkou IE, tak jsem ji odstranil, jede se dál rychlostí desetinovou a budu rád, když nějak zdvihnu rychlost na pětinu původní. Vím že IE v podstatě nedělá nic nestandardního a že posílá naprosto „běžný” požadavek, ale zarazilo mě to, protože žádný jiný prohlížeč, který jsem zkoušel, se takhle nechoval. A celý článek je míněn jako povzdech vývojáře nad tím, že aplikace je třeba testovat v IE nejen na úrovni zobrazování HTML a CSS, ale i na úrovni síťových paketů a požadavků, což jsem třeba já netušil, a zároveň by mohl sloužit jako ono „prošlapání slepé uličky”.

A pro naprosté pitomce: Jo, můžu si za to sám, titulek, podnadpis a vůbec celý článek je tendenční a strefovat se do MS je tak laciné!{wink}

Aktualizace Po dalších několika hodinách jsem objevil trik, kterým se IE nažral a rychlost je okolo 90kB/s! Juch!

Ale tenhle článek už mazat nebudu, nechám ho tu jako memento slepých cestiček... A pro Mormegila: Rychlost klesla při „předpisové” implementaci. Stačilo objevit ten drobný trik. Sice jsem tím úspěšně zaplácnul další cca 2kB paměti, ale účelu bylo dosaženo!


Zadal Arthur Dent, 12.01.2005 9:32:30, 34 komentářů...,
TrackBack URL tohoto příspěvku je http://blog.maly.cz/tb.php/1266

Zpět na článek

HotLinks
Zobrazit komentáře v chronologickém pořadí

poznamka - Calvera (web)
(12.01.2005 09:51:15)

cau, jen te chci upozornit, abys to otestoval i pro pristupy pres proxy... jeden nikdy nevi...
    

Re: poznamka - Arthur Dent (web)
(12.01.2005 09:52:44)

No, naštěstí tohle za proxy (snad) nikdy nebude, bude se to připojovat kříženým kabelem rovnou do pičítače, ale pro sichr to zkusím, díky!
    

Re: poznamka - rony (web)
(12.01.2005 10:44:34)

implementacia FTP miesto http nevyhovovala danemu zameru?
    

Re: poznamka - Arthur Dent (web)
(12.01.2005 11:12:24)

Po zvážení režie HTTP vs FTP v téhle dané aplikaci, kdy jsou data defakto "online" generována, a po zvážení reálných možností procesoru se FTP ukázalo jako nevyhovující...
    


Re: poznamka - Calvera (web)
(12.01.2005 12:38:27)

kdyz bude nekdo mit nejaky lokalni proxy, tak bohuzel bude {smile}
    

Re: poznamka - Arthur Dent (web)
(12.01.2005 12:45:07)

Vzhledem k "cílové skupině" nepředpokládám, že by se mezi nimi našel nějaký významný počet exemplářů s localproxy... Jenže čert nikdy nespí, že? {smile}

Díky, voprubuju to... Snad se bude proxy chovat rozumněji.
    


Ty to vážně.... - allora (web)
(12.01.2005 14:11:15)

...bereš zgruntu {smile}
Napíšeš příspěvek, přidáš všeobecné údaje pro laiky, detailní pro odborníky, preventivní opatření, nadsázku a pro sichr rovnou i odpověď rýpavým komentátorům {smile}
Tomu říkám důkladnost {wink}
    

Re: Ty to vážně.... - dgx (web)
(12.01.2005 16:48:56)

ano, Arthur je expert na moderování diskuzí ještě před jejich propuknutím. Viz [blog.maly.cz/index.php?item=950] nebo [blog.maly.cz/index.php?item=1201], tématem článku se to stalo tady [blog.maly.cz/index.php?item=759].

Naopak velkou míru svobody slova projevil svého času White Dog [blog.maly.cz/index.php?item=108]

{smile}
    

Re: Ty to vážně.... - Arthur Dent (web)
(12.01.2005 17:01:43)

To víš... Ono to po čase unaví, a tímhle aspoň třetinu "nepochopů" rovnou odradím... {smile}

A to se vyplatí - i kdyby to mělo být za cenu toho, že si řeknou, jakej jsem kretén. {smile}
    


 - Mormegil (web)
(12.01.2005 16:50:25)

No, vzhledem k posledním dvěma odstavcům se tady nebudu moc obšírně vyjadřovat na dané téma -- jako by se stalo (čti: tohle nemá s blbostí IE nic společného).

Takže čistě z odbornějšího hlediska: a neprojevila by se tahle chyba v implementaci TCP i v případě, kdy by docházelo k výpadkům paketů (což je důvod, proč vůbec TCP existuje)?

(A zcela skeptický dotaz na závěr: _opravdu_ klesla jenom kvůli tomuhle rychlost desetinásobně? Fíha, to bych do TCP nikdy neřekl...)
    

Re: - Arthur Dent (web)
(12.01.2005 17:05:17)

K výpadkům paketů na "síti" tvořené jedním PC, tímhle zařízením a kříženým kabelem dochází opravdu minimálně.

Ano, opravdu klesla kvůli tomuhle rychlost na desetinu... Mám pro to jednoduchou metodu měření: Přeložím bez kontroly, spustím, změřím. Přeložím s kontrolou, spustím, změřím.
    

Cross - px30
(14.01.2005 09:20:06)

To by ses divil, kolik lidí si neumí pořádně nacvaknout síťový kabel.

Jinak jeste kratký dodatek: *Nikdy* neříkej, že to bude *vždycky* přímo do peecee přes krosík. Někdo bude potřebovat druhou síťovku - sebere tomu, kdo to bude používat picmicku a už je to v ve floorboxu přímo na patrovém switchi. Potom přijde nějakej zmrd a řekne, že toto zařízení musí být odděleno od kancelářské sítě korporátním firewallem, kde je QoS a pak bude ten tvůj kunčoft teprve litovat, že si nepořídil fajnověší model.

Já bych to viděl tak, že to bude vždycky alespoň na hubu {smile} a pak je to o hubu {wink}
    

Re: Cross - Arthur Dent (web)
(14.01.2005 09:29:32)

No vzhledem k tomu, že v prostředí, kde to bude, žádné huby nejsou, tak si tím jsem docela jist...

Je to průmyslové zařízení namontované na autonomním stroji, kde zaznamenává určitá data o jeho činnosti (nic neřídí!), a bude-li problém, tak přijde maník s NB a s kabelem, píchne se do té kisny a stáhne si data, aby nad nimi mohl špekulovat, proč se stroj vymkl z kloubů, šílel a pozabíjel 18 lidí... {smile} Řekněme - něco jako "modul pro vyčítání dat z černé skříňky v letadle" (ale není to tohleto). Chtěl bych vidět toho smělce, který zapojí černou skříňku na kancelářskou síť. {smile}
    

Re: Cross - px30 (web)
(14.01.2005 15:02:48)

[research.sun.com/spotlight/2004-12-20_vgupta.html]
- nehodilo by se ti tohle? {smile}

Smelcu, o kterych pises jsem jiz bohuzel videl desitky. Exchange naprimo do Internetu, vyvojovy server jako firewall pro stredni firmu a dalsi...
    

Re: Cross - Arthur Dent (web)
(14.01.2005 15:07:45)

To by museli mít smělci obzvlášť dlouhý kabel (nebo mobilní připojení na tom jezdícím stroji)... {smile}
    

Re: Cross - Arthur Dent (web)
(14.01.2005 15:17:47)

Ne, vážně:

Jedná se o zařízení, které není určeno k trvalému provozu v síti a takto je i specifikováno. Pokud to někdo zapojí do korporátní sítě (o čemž pochybuji) a bude si stěžovat že tohle a támhleto, tak má smůlu, protože to bude používat v rozporu se specifikací. Už si rozumíme? Zkrátka - zařízení je určeno pro Škodu a to, že nefunguje v Renaultu není můj problém.
    


 - thingwath (web)
(12.01.2005 18:14:45)

Hm, měl jsem zato, že alespoň tak zásadní a základní věc jako je HTTP používá IE nějak normálně. Každopádně mám takový *dojem*, že tohle lze v Mozille nastavit taky, v rámci zrychlení (stahuje se už při výběru co se souborem). Ale je to jenom dojem a jak je to přímo řešené, to nevím.

Ale, stěžovat si na chování IE, když ani ty neimplementuješ ty protokoly plnohodnotně, to je tendenční a laciné {wink} (ono, optimalizujeme-li ořezáváním protokolu, tak se do bodu 'neplnohodnotná funkcionalita' jednou dostaneme, IE neIE) To si nevybereš. Optimalizace nebo kompatibilita.
    

Re: - Arthur Dent (web)
(12.01.2005 18:35:29)

Mělo to vyznít spíš jako "IE má zase něco extra, zatímco ostatní prohlížeče se nejdřív zeptají a pak stahují, tak IE rovnou stahuje s tím, že to možná pak zahodí."

Mimochodem, to je blbá zpráva pro notorické sledovače objemu přenesených dat - dřív než se rozhodnou, jestli soubor stáhnou, tak už mají 20 kilo v chalupě {smile}
    


Re: - Arthur Dent (web)
(12.01.2005 18:39:47)

Ale už je to každopádně fuk, dorazilo osvícení, s ním myšlénka a hned za myšlénkou trik {smile}
    

Re: - thingwath (web)
(12.01.2005 18:42:12)

Nejsem proti dozvědět se o něm více. Není-li to samozřejmě tajné {smile}
    

Re: - Arthur Dent (web)
(12.01.2005 19:07:41)

Mno... no... obávám se, že to asi takhle zveřejnit nemůžu. Je to přeci jen průmyslový výrobek. Proto se taky snažím být tak nekonkrétní, jak jen to jde... {smile}
    


 - thingwath (web)
(12.01.2005 18:17:45)

Předpokládám, že není možné přenášet HTTP přes UDP, je tomu tak, že? (ať už z důvodů nejvyšších, tedy přímo dle svatého RFC2616 nebo prostě pro nepodporu této alternativy jakýmkoliv z prohlížečů)

Ale asi by to moc nepomohlo.
    

Re: - mike (web)
(13.01.2005 01:07:20)

Predpokladas spravne.
    


To jsou veci - mike (web)
(13.01.2005 01:03:20)

Jestli tomu rozumim spravne, coz vubec nemusi byt pravda, problem se projevi na urovni TCP tj. ty pozadavky "posli blok dat od adresy..." jsou TCP pakety. V tom pripade sis v PS odpovedel sam a v nekterych konferencich by se te akorat zeptali na jmeno produktu, aby se mu mohli vyhnout {wink}

Dobra, uznavam, ze 32 kB pameti je na uplnou implementaci TCP a HTTP serveru dost malo (ve 20 MHz bych nevidel problem). Je ovsem otazka, jestli neni chyba v pocatecni analyze a jestli je TCP spravna volba. Pokud by se to pouzivalo jen v lokalni siti nebo by se to dokonce pripojilo primo k PC, bylo by namiste pouzit neco jednodussiho a pokud je nutne HTTP, simulovat ho na PC. Psal jsem takovy protokol pro zarizeni, pripojene pres USB nebo seriovou linku a uplna implementace se vesla do nekolika malo kB. Pokud se ovsem data mohou cestou ztratit, je TCP dobra volba, protoze je to spolehlivy a samoopravny protokol. S nasledky cehoz ses prave setkal. Jestli a jak za to muze IE se da tezko rict, bylo by treba odchytat volani na urovni Winsocku. Kazdopadne, ze to s jinymi browsery chodi, znamena pouze ze v idealnich podminkach se chovaji optimalne, ale vubec nic to nerika o podminkach suboptimalnich (user si pustil defragmentaci, disk mu bezi v PIO modu, pomaly procesor a browser obcas neco nestihne). Normalne se testuje nejhorsi mozny pripad a pisou se specialni aplikace, ktere ho simuluji. Vidis, jak ti MS setri praci {wink}

Optimalizace je samozrejme dobra vec a vubec se nemusi prat s pozadavkem na uplnou implementaci protokolu. Proste ocekavam idealni prostredi a podle toho se chovam, ale zaroven jsem pripraven i na problemy, jejich zpracovani muze byt ovsem mnohem pomalejsi. Takze "normalni" aplikace pobezi na 100% a IE na 10%. Predpokladam, zes neco takoveho uz udelal.

No a co se tyce nutnosti chytani paketu, cemu se divis? Je naprosto bezne, ze kdyz pises nejaky protokol, je nutne analyzovat data o jednu nebo vice vrstev niz.
    

Re: To jsou veci - Arthur Dent (web)
(13.01.2005 07:26:59)

1. Produkt bude nasazen tak jak píšu, tj. kroucený kabel a notebook. Proč nebyla navržena komunikace např. po USB, to netuším, já analýzu nedělal. Asi proto, že HTTP protokol je dostatečně IN a počítač s prohlížečem má každej. Kdyby udělali přenos "po kabelu", tak budou muset psát klientský SW pro Windows a pro DOS a pro Linux... Asi. Já tu analýzu nedělal, já přišel až k "naprogramujte HTTP server..." {smile}

2. V podstatě je to tak, nejspíš jde o problém na úrovni TCP - který se ovšem u jiných prohlížečů neprojevuje, u IE vždycky. Ten problém jsem popsal, ukázal jsem na jeho možnou příčinu (IE neposílá HEAD, posílá rovnou GET) a tím je prošlapána slepá cestička. {smile} O tom, jestli jsem špatný, že neimplementuju plný TCP protokol, není třeba diskutovat - je to totiž zcela mimo, protože problém není postaven jako "plný TCP vs ořezaný", ale "jak moc ořezaný TCP ještě jde".

3. Tomu zařízení se nevyhnou ani kdyby moc a moc chtěli {big grin}

4. Ber to tak, že je to příspěvek do diskuse na téma "co lze v takovém případě vyhodit z implementace TCP a co už ne".

5. Ale jo, očekávání problémů a odolnost proti chybám je hezká věc. Smutné je to ve chvíli, kdy máš plných 90% paměti a každá kontrola navíc tě stojí procento až dvě z prostoru a pět procent z času. To už pak sakra zvažuješ...

6. Nikoli, normální aplikace běží stejně rychle jako IE, kdyby to bylo tak jak píšeš, tak nejásám.

7. Nedivil jsem se nutnosti chytání paketů, Ethereal mi tu běží permanentně. Psal jsem, že se IE chová "jinak" nejen ve věcech zobrazovacích, ale i ve věcech "síťových" a TO že mě zarazilo. Přeci jen - častěji se setkávám s rozdíly ve vyšších vrstvách {smile}

8. Možná jsem měl zvolit postup jako někteří webdesignéři - nechat to tak a nalepit na to cedulku "Optimalizováno pro Mozillu" {smile}
    

Re: To jsou veci - mike (web)
(13.01.2005 08:07:08)

ad 1: No jo, ale HTTP je v takovych podminkach overkill. Nereknu, kdyby bylo dost pameti. Stejne to bez dalsiho softwaru bude chodit jen ve Windows, v DOSu vubec a o Linuxu pochybuju, i kdyz do nej nevidim. V takovych pripadech se snazim zadani zmenit, ale chapu, ze ne vzdy je to mozne.

ad 2. No jo, jenze HTTP to umoznuje a je jen na aplikaci, jak ho pouzije. Predpokladam, ze se tohle IE chovani da nekde vypnout a mam takovy pocit, ze v Mozille zase zapnout. Zkus taky nejake download managery (GetRight?), spousta lidi je ma nainstalovane a ani o tom nevi. Nektere umi prerusit a znovu zahajit stahovani. Na otestovani by mohl stacit command line wget. O lokalnich proxy uz sla rec (treba WebWasher).

ad 3: Doufam, ze mas ve smlouve zvlastni sazbu, nejlepe hodinovou, za support {wink}

ad 4: Obavam se, ze spravna odpoved je NIC {wink} Jiste, muzes se vykaslat na spoustu okrajovych podminek a nepravdepodobnych pripadu, ale s rizikem, ze to obcas proste prestane fungovat.

ad 5: Jasne, ta pamet je prusvih; se setrenim kazdeho bytu mam sve zkusenosti. S rychlosti bych to tak cerne nevidel; delal jsem na zarizeni s efektivni rychlosti o rad nizsi a takove problemy nebyly. Dost zalezi na tom, jak je kod napsany a jestli mas neco jako profiler, na zjisteni, kde to vazne. Obcas se tak prijde na velmi prekvapive veci, zvlaste pokud to nepises primo v assembleru.

ad 8: Presne tak a chtit za optimalizaci priplatek {smile}
    

Re: To jsou veci - Arthur Dent (web)
(13.01.2005 08:23:32)

ad 1) Nojo, no. Změnit to už asi nelze.

ad 2) Však ano, však to jsem taky psal.

ad 3) Support si pak budou dělat sami, zdrojáky dostanou... {smile}

ad 4) Obávám se, že NIC je správná odpověď, ale nepoužitelná, zejména ve chvíli, kdy zadavatel na prostý dotaz "A nešlo by ten procesor nahradit jiným modelem z téže řady a od stejného výrobce, např. XXXXX, který má dvojnásobnou ROM i RAM?" odpovídá: "Ne, to by nešlo!" a když ve chvíli, kdy je napsaný server s minimálními omezeními (a zbývají 2kB), řekne: "Fajn! Ale ještě bychom chtěli, aby to dělalo i upload. Jo a ta komunikace, co jsme navrhli, nefunguje, takže část těch výpočtů budete muset dělat vy..." Pak opravdu musíš vyhazovat co se dá, chca nechca...

ad 5) K paměti viz výše, profiler není, jsem rád, že je alespoň debugger. Problém byl při "doslovné" implementaci, teď je implementace "ne-doslovná-ale-podobné-věci-ošetřující".

ad 8) Kdyby příplatek! Měl bych si to napsat i do nabídky: "Používáme osvědčené technologie." (Tohle měla firma, kde jsem kdysi krátce dělal, napsáno v nabídkách a znamenalo to "Jedeme jen v IE".) {smile}
    

Re: To jsou veci - mike (web)
(13.01.2005 22:16:57)

ad 3: A dobre jim tak {wink} Jen nezapomen do kodu psat komentare, ze sice vis, ze je to blbe, ale X.Y. na tom trval a vic pameti nebylo. Treba pak pujdou zlyncovat X.Y.

ad 4: Jasne, to je pak tezke. Jak to vlastne funguje -- taha se kod do RAM z nejake EEPROM nebo flashky nebo bezi v ROM? V RAM by se daly udelat overlaye tj. natahovat kod, ktery je zrovna potreba. A muze byt ulozen i komprimovany (i to jsme delali...). Nicmene, pokud by to slo a navrhnul bys to, stejne si hned vymysli, jak veskere usetrene misto vyuzit {smile}

ad 8: Je treba byt in. Godzilla je out, in je FireFox. Pouzivanim tohoto zarizeni bojujete proti monopolu! Integraci nejmodernejsich technologii prispivate na adopci cervene pandy!

(pro pripadne fanatiky: pouzivam Netscape od verze 1.1, pak Mozillu a ted FF. IE, s vyjimkou kratkeho obdobi kdy NN uz a Mozilla jeste poradne nefungovala, pouze v nouzi nejvyssi, kdy opravdu musim na stranky, ktere nejake pako "optimalizovalo")
    

Re: To jsou veci - Arthur Dent (web)
(13.01.2005 22:25:55)

ad 4 - nic se nikam netahá. Je to jednočip s harvardskou architekturou, tzn. data zvlášť a kód zvlášť. Mám 32kB FLASH na kód a něco přes 2kB RAM na data. Takže overlaye nejsou a s 2kB RAM toho moc nezkompresíš. Sice na ZX81 bys s tím byl king, ale tam by po tobě zase nikdo nechtěl Ethernet {smile}

A data, která jdou ven, se on-the-fly tahají z periferie.
    

Re: To jsou veci - mike (web)
(13.01.2005 23:10:34)

No jo, tak s tim se opravdu zadne zazraky delat nedaji. Ale muze to byt zabavne {smile}
    

Re: To jsou veci - Arthur Dent (web)
(13.01.2005 23:48:49)

Je... Kdyby to bylo tupé a ubíjející, tak to nedělám. Ale tohle je, svým způsobem, něco, čemu se dnes tak moderně říká: "výzva".
    

Re: To jsou veci - mike (web)
(14.01.2005 01:37:07)

Tak jsem to myslel. Nerika se moderne spis celendz? {wink}

Ze zvedavosti jsem se kouknul, co ten IE vlastne dela a vypada to, ze v zasade mas pravdu a muze za to on. Posle GET hned po odklepnuti a pak bud po nejake dobe nebo urcite velikosti dat je prestane prijimat (nejspis neposle systemu buffer), dokud to user neodklepne. Tipnul bych si spis na tu dobu, okolo 5 sec. No a TCP dela co umi, postupne zkracuje okno az mu nezbude nez ho stahnout na 0, jelikoz dalsi data nema kam dat. Pak to user konecne odklepne a pokracuje se tam, kde se prestalo. Cast dat, ktera se prijala, kdyz nebylo misto, se nejspis zahodi (co s nima taky) a tak se pokracuje z pulky tve posledni odpovedi a jelikoz data uz nema, musi (TCP) trvat na tom, ze je posles znovu. Stejne jako kdyby se ztratila nekde po ceste, od toho TCP je. To jen na doplneni, je mi jasne, zes uz to nejak vyresil.
    

Re: To jsou veci - Arthur Dent (web)
(14.01.2005 07:22:50)

Přesně tak to je, jen bych doplnil, že to není pět sekund, ale asi jedna (při mé rychlosti) a je to dáno velikostí bufferu, což je nějakých 20kB. IE si první paket převezme (má tam HTTP hlavičku) a dál nepřijímá, dokud user neřekne co s tím.

A řešení bylo, jak jinak, prosté. Stačilo si uvědomit, že není třeba posílat to co klient chce, ale to co reálně mohu poslat (čímž odpadla část přepočtů a ušetřil jsem 4 bajty RAM) a taky to, že není třeba testovat každý potvrzovací paket. {smile}
    

Re: To jsou veci - mike (web)
(14.01.2005 08:54:07)

Ono se to asi lisi podle situace (verze IE, rychlosti site nebo pocasi); u mne se za tech 5 sec natahne 90 - 100 kB, ale nebylo to vzdy stejne. Proto tipuju cas, ale muze byt i oboji.

Jinak jsem zaslechl, ze po Siti behajici utecene zdrojaky w2k pry obsahuji i kod IE 5.neco. Takze kdyby te to opravdu zajimalo, mohl bys je chytit (samozrejme v zadnem pripade nemohu vedet kde) a zkusit to v tom bordelu najit {wink}

No vidis, jak se daji kreativne vyuzit vlastnosti TCP {wink}
    
HotLinks
Zpět na článek