IDOS a veci souvisejici

Jan "Yenya" Kasprzak kas at gloin.fi.muni.cz
Mon Aug 3 16:06:43 CEST 1998


	Dobry den,

	dostal jsem se po tydnu dovolene zase na chvilku k Siti a se zajmem
jsem si precetl dalsi cast debaty o IDOSu a cookies. Dekuji zejmena
Hoznovi Pazdziorovi za velmi dobrou sumarizaci situace. Pokusim se v tomto
prispevku reagovat na vice podnetu dohromady.

	Nejprve k diskusi, jestli mnou posane chovani IDOSu je chyba,
nebo vlastnost: Uzivatel se nijak nemusi
zajimat o to, jestli ta dve okna s velkym "N" v rohu patri kazde jinemu
procesu, nebo jestli jsou to dve okna stejne instance browseru. Z tohoto
hlediska "uzivatelska prijemnost" jde jednoznacne o chybu. Zejmena za situace,
kdy nektere browsery nelze mit spustene ve vice instancich (pry NN3.x pro
Windows), nebo aspon pri takovemto spusteni jsou vyznamne funkcne omezeny
(NN 3.x pod UN*Xem -- dalsi instance nepouziva lokalni diskovou cache)
nebo proste proto, ze spusteni dalsi instance browseru zatezuje system
podstatne vice, nez otevreni noveho okna browseru. Rozlisit mezi
jednotlivymi okny teze instance browseru pomoci cookies (pravdepodobne)
nelze, zatimco pomoci URL nebo INPUT HIDDEN ano.

Vladislav Cerny:
: Problem je prenest je tak,
: by to bylo transparentni a uzivatelem neovlivnitelne.
: ak je nejlepsi je _neprenaset_ vubec a ponechat
: a serveru v ramci Session. Tak to dela IDOS, protoze
: e jedna o _citlivou_ informaci -- pointer.

	Je-li v cookie skutecne pointer, pak rozhodne nejde o
"uzivatelem neovlivnitelny" prenos informace; tento pristup je pak
nebezpecny, a IDOS spadne, pokud si necham dva dny otevrene okno,
protoze pouzije neplatny pointer. Pokud je ale v cookie nejaky index do
tabulky pointeru, jehoz platnost se po obdrzeni serverem testuje,
pak stejna informace muze byt klidne v URL nebo v hidden polozce.
Nehlede na to, ze touto informaci mohou stejne dobre byt parametry
daneho spojeni.

	Nevim, jak je to v ASP, ale pomoci CGI bych to udelal asi takto:
...
$session = (ziskam z cookie, INPUT HIDDEN nebo URL).
if (!defined $pointery{$session}) {
	if (pole_je_prilis_velke(%pointery)) {
		zrus_nejstarsi_session_z_pole(%pointery);
	}
	$session = novy_pointer(%pointery);
}
vyhledej_spojeni($session, dalsi parametry);
...
	Myslim, ze neni treba jit do podrobnosti, kostra cele veci
je asi jasna.

: > Perl a CGI snad mate i na NT.
:
: Coze? CGI? To myslite vazne, ze by to server
: utahl, kdyby mel pokazde zakladat novy proces?
: Tady nejde o server, kam obcas nekdo nahodou zavita.
: Tady se musi preferovat vykon, vykon, a az pak vykon.

	Kdysi jsem mel 386ku, a ta zvladala vytvorit ~50 procesu za sekundu.
U dnesnich procesoru jsou to radove tisice. Kdyz zapocitate i overhead
spusteni Perlu a kompilace skriptu, jiste vam zustanou stovky za vterinu.
A pokud je i 10ms moc, muzete mit CGI program zkompilovany. Psal jste,
ze knihovne trva jeden dotaz od 300 do 1000 ms. Takze ve srovnani s pripadnym
overheadem spusteni programu to je porad zanedbatelne. Navic jste psal
cosi o tom, ze uzke misto neni server sam, ale linka. Jak to tedy je?

[... mluvi se o cache dotazu/odpovedi na spojeni ]
: Autori jiste tuto moznost zvazili.
: A jiste ji zamitli proto, ze hitu do takoveto cache by
: bylo minimum.

	Bylo by jich aspon tolik, co je nyni hitu do "cache", vedene
mechanismem sessions. Mimochodem, mate zjisteno, v kolika pripadech
se data z te session skutecne vyuziji? Tipnul bych si, ze to nebude
nijak velke cislo.

: Kdyby to bylo udelano pomoci HIDDEN nebo
: pres cast URL, predal byste neplatny pointer
: a server by byl pravdepodobne jiz shozen.

	Predal bych platny pointer, protoze v tomto okamziku bych pro sebe
mel vyhrazeny dve "session". A i kdybych predal neplatny pointer, mela by
se mi naalokovat nova session, ne? Co kdyz stisknu "Dalsi spojeni" az po
pul hodine, kdy se moje "session" davno zrusila? To take predavam
neplatny pointer a server je shozen?

: Upozornil jsme vsak, ze pravdepodobne nebude
: cas, prostredky a finance ke zmene teto vlastnosti, nebo
: chcete-li chyby.

	No a jsme u toho, proc by bylo lepsi, kdyby byly datove soubory
volne k dispozici vcetne popisu struktury. Takhle by vas to nestalo
zadne penize a jeste byste meli volnejsi linku. Dovedu si predstavit
url typu http://doprava.seznam.cz/, kde bych si mohl vyhledat spojeni
nejen vlakove, ale i autobusove nebo dokonce kombinaci obou. Proc investovat
penize do neceho, co by za vas (jiste radi) udelali nekteri ISV (Seznam jsem
uvedl jen jako priklad).

Michal.Krsek at cesnet.cz (Michal Krsek) napsal:
: Divim se, ze nikdo z guruu, kteri se tu ohaneji cistotou programovani, se
: nepozastavil nad tim, ze naprosto stejny princip pouziva vetsina serveru
: pro rotaci reklamnich banneru. Ze by jim to v nekterych pripadech
: vyhovovalo?

	Pokud tohle nekomu vadi (jako napriklad mne), ma vypnute cookies
a reklamni bannery filtrovane JunkBusterem (ale o tom uz v teto konferenci
sla rec). Pokud nefunguji reklamni bannery, je mi to srdecne jedno.
Ale nebylo mi to jedno u serveru IDOS, ktery jsem donedavna pouzival
a ktery bez cookies nefungoval.

-Yenya

--
\ Jan "Yenya" Kasprzak <kas at fi.muni.cz>       http://www.fi.muni.cz/~kas/
\\ PGP: finger kas at aisa.fi.muni.cz   0D99A7FB206605D7 8B35FCDE05B18A5E //
\\\             Czech Linux Homepage:  http://www.linux.cz/              ///
If there are race conditions in programs fix them. The "my programs suck fix
something else" mentality leads you to things like Java.         -- Alan Cox



More information about the net mailing list