• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    TENCOKACISTROMYProgramovani v C#, F# a dalsich jazycich pro .NET, Mono a ostatni CLI implementace
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    myslis, ze se nekdo na tak hloupe obecne polozenou otazku bude vubec obtezovat? :)
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    FRANKVFX: Maji psat do posty, aby si to nikdo jinej nemohl vyhledat a precist?
    FRANKVFX
    FRANKVFX --- ---
    Ahoj, nemáte někde zkušenosti s vývojem software využívající 3D engine? Pište, prosím, do pošty. F.
    NECROMAN
    NECROMAN --- ---
    Diskuze o NFC zalozena, pojdte se pochlubit vasim NFC enabled telefonem, nebo se zeptat, co vas zajima. Sam se s NFC take teprve seznamuji - vsichni se tak dovime neco noveho:
    [ NFC - Near field communication ]
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    MORMEGIL: To me taky napadlo, ale je to takovy ... divny. Urcite funkcni, ale divny.

    Ted se navic ukazalo, ze ty samy cookies budu muset pouzivat i v built-in browseru. Ten samozrejme vubec CookieContainer nepouziva. Krasne se mi to "zjednodusuje" :P.
    MORMEGIL
    MORMEGIL --- ---
    TENCOKACISTROMY: Díval ses na tu moji nástřelovou implementaci? (Tedy, netvrdím, že to je hotové a funkční, ale nástřel tam je.) Před voláním té WS si bokem uložíš seznam názvů cookie v tom kontejneru, zavoláš WS a podíváš se znovu na cookie v kontejneru: Ty, co jsou v kontejneru, ale nejsou v seznamu, jsou nové, ty, co jsou v seznamu, ale nejsou v kontejneru, ta WS smazala, takže je máš smazat i z globálního seznamu.
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    MORMEGIL: Jak tedy zjistim, ze mam nejakou polozku odebrat?
    MORMEGIL
    MORMEGIL --- ---
    TENCOKACISTROMY: No jasně, že tam C nech! Do globálního úložiště musíš přenášet lokální _změny_, ne lokální _stav_! Ostatně tohle by už měl řešit i ten můj nástřel, co jsem posílal.
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    JANFROG: To jsem nepochopil na poprvy ja tebe :).
    Jo, to bych napsat mohl. Ale asi by to bylo hazeni hrachu na zed.
    Bylo mi vysvetleno proc to tak delaj - dava to smysl. Ale me to ztezuje zivot :(.
    JANFROG
    JANFROG --- ---
    TENCOKACISTROMY: Huh, tak ted Ti nerozumim...
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    MORMEGIL: Mam na mysli tenhle postup.









































    main thread thread 1 thread 2
    start: A = "0", B = "1"
    vytvoreni kopie cookies A = "0", B = "1" A = "0", B = "1" A = "0", B = "1"
    odeslani requestu A = "0", B = "1" A = "0", B = "1" A = "0", B = "1"
    prijeti response A = "0", B = "1" A = "0", B = "1", C = "4" A = "0", B = "1", D = "5"
    merge z vlakna 1 A = "0", B = "1", C = "4" obsahuje jen "C" navic
    proste pridam "C = 4"
    A = "0", B = "1", D = "5"
    merge z vlakna 2 ??? A = "0", B = "1", C = "4" obsahuje "D" navic,
    ale neobsahuje "C".
    mam "C" odstranit nebo ho tam nechat?
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    JANFROG: Videl jsi tu tridu a jak ji ostatni tridy pouzivaji?
    Bez nejakejch negativnich konotaci - fakt by me zajimalo, jak bych toho timhle zpusobem dosahnul.
    JANFROG
    JANFROG --- ---
    MORMEGIL: Neni tak spatne. Zda se, ze to je udelane tak ze to mohu pouzit jen v omezenem kontextu. Pouziti v jinych kontextech se aktivne brani (nic neni virtual, vse private a podobne).

    Ja jsem pro to, at mi nikdo nebrani si to zmrsit sam. Kdyz na to dojde, vyrobce me totiz posle do .. tak jako tak. Alespon MS/IBM/Oracle/Apple to dela.
    MORMEGIL
    MORMEGIL --- ---
    JANFROG: Dost špatné přirovnání, nikdo ti nebrání tu knihovnu použít na připojení k jakémukoli HTTP serveru. Spíš je to jako mít auto, ve kterém nemůžu vyměnit původní turbo za turbo vlastní konstrukce. (Či auto, ve kterém sice fyzicky můžu vyměnit turbo za součástku od jiného výrobce, ale přijdu tím o záruku.)

    Takže jsi pro co? Aby se k autu dodávala kompletní technická dokumentace každé součástky, aby si ji každý mohl vyměnit, nebo aby si každý sice mohl do auta místo turba namontovat jiné, ale když mu pak nepůjdou stahovat okýnka, tak mu výrobce prostě řekne, ať si nestěžuje, že do toho neměl vrtat?
    JANFROG
    JANFROG --- ---
    MORMEGIL: Tyhle argumenty neberu :-) To je jako mit auto, co umi jen jednu trasu kterou si v autosalone vymysli, ze budes jedinou jezdit a zakazat jet kamkoli jinam, protoze by ses mohl ztratit a nedejboze jeste nehoho prejet.

    MORMEGIL
    MORMEGIL --- ---
    JANFROG: Tak ono je to vždycky otázka: Jakmile uděláš svoje metody virtuální, měl bys v dokumentaci vyjmenovat tu spoustu předpokladů, které na ně kladeš a asi si je ani neuvědomuješ. (Typu: Pokud někdo overridne property Count tak, že kolekci změní (třeba uvnitř bude vyhazovat expirované položky), tak to může začít chcípat na InvalidOperationException, páč ji volám uvnitř foreache. A tisíc dalších drobností.) Ve výsledku buď spousta „zbytečné“ práce s dokumentací, nebo flexibilní knihovna, která se ale chová podivně a nikdo neví proč, dokud nezačne zkoumat její zdrojáky. Taky ne zrovna „well designed object library“…
    MORMEGIL
    MORMEGIL --- ---
    TENCOKACISTROMY: Necháp. Jednak tedy seznam _všech_ cookies asi dostat nemůžeš, ale beztak tě zajímají jen cookie pro danou doménu, na které běží ta WS, ne? A k tomu tam máš GetCookies. A kolize, kdy ti jedno volání cookie odstraňuje, zatímco druhé přidává/mění, jsi mi tvrdil, že nenastane (potažmo totéž může nastat i na tom webu).

    Představoval jsem si to zhruba nějak takhle, ale dost pravděpodobně to ještě není dost defenzivní, dokumentaci ke Cookie* jsem nestudoval (a jelikož je Cookie třída, asi bude potřeba vyrábět nové instance a kopírovat sem tam, ne zneužívat jednu ne-thread-safe instanci všude dokola) a možná to ani nefunguje, samozřejmě jsem to ani nezkusil. :-)
    JANFROG
    JANFROG --- ---
    TENCOKACISTROMY:
    Muzes napsat prvni prispevek na tu stranku C# o "well designed object libraries". Namety:
    Overridnout cleny me napadlo taky, ale v duchu "co nutne nemusi byt virtualni neni" se tam nic takovyho nenachazi :D :(.
    Jednak neni jinej zpuosb jak ziskat seznam cookies bez pouziti reflexe.

    Dalsi muze byt o tom proc nemuzes vzit ten CookieContainer, rozsirit si ho jak potrebujes a pouzit :-)
    JANFROG
    JANFROG --- ---
    TENCOKACISTROMY: Hlavne nedrz si "master cookies" ale changelog :-)
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    To mergovani cookies je silenejsi nez jsem doufal.
    Jednak neni jinej zpuosb jak ziskat seznam cookies bez pouziti reflexe.

    Ale hlavne! Jak pak rozlisit stav, kdy ze byla nejaka polozka odebrana a ne ze byla mezitim pridana z jineho vlakna.
    Kliknutím sem můžete změnit nastavení reklam