• ú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
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    MICTECH: Tak takovejch veci je vic zejo. Treba On[EventName], jednoduchy konstruktory, atd...

    Kdyz bych si mel psat testy uplne na vsechno, tak bych nejspis z vetsi casti opustil imperativni jazyky a zacal pouzivat nejakej deklarativni zapis. Mnozstvi napsanyho kodu (= mist, kde muzu udelat bug) by se vyrazne snizil.
    MICTECH
    MICTECH --- ---
    TENCOKACISTROMY: Zalezi jak ma clovek nastavene filtery na Code Coverage :)

    Samozrejmne do Code Coverage se nepocitaji get/set a tak podobne.
    NECROMAN
    NECROMAN --- ---
    TENCOKACISTROMY: koukam, ze ma prednasku i na MS festu:
    Microsoft Fest 2012 | Program konference
    http://www.ms-fest.cz/Program/Sobota

    Jinak ja tam budu prednaset neco o Windows Phone 8, pokud dorazi i NFC tagy a podari se zajistit i pouzitelnou kameru pro promitani z telefonu, tak to bude parada :)
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    NECROMAN: Byla dobra. Po dvou letech pokusu pouzivat unit testy jsem je opravdu zacal pouzivat a maji pro me prinos.



    btw. nikdo mi na ten kod nekouknete?
    NECROMAN
    NECROMAN --- ---
    TENCOKACISTROMY: zrovna na tu prednasku jsem chtel jit, Tomas je v pohode
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    NECROMAN: Kdyz jsem byl v na prednasce o testech v akvarku u MS, tak tam ten prednasejici (myslim ze Tomas Herceg) rikal, ze v pripade ze mate vysinuteho sefa, tak mu nemate rikat o code-coverage. Ze se pak snadno stane, ze chce mit 100% a ze je to cesta do zahuby :).
    NECROMAN
    NECROMAN --- ---
    TENCOKACISTROMY: tak nadrizeny rekl - proste napises na to testy, jasny?
    Takze copypastuju kod z converteru do testovacich metod a vymyslim k nim vstupy, to je produktivita :D
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    NECROMAN: Tak tam bych se na testy normalne vyprdnul.
    NECROMAN
    NECROMAN --- ---
    TENCOKACISTROMY: vetsina konvertoru je jen jednoradkova vec, co zkontroluje vstupni typ a vrati string.Format(xy, value)
    popripade variace na BoolToVisibilityConverter
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    Udelal jsem si extension metody pro tridu ReaderWriterLockSlim, aby se mi s tim dobre pracovalo. Neustaly volani EnterReadLock(), ExistReadLock(), uzavirano do try-finally bloku me fakt nebavi.

    Kouknete se mi prosim na ten kod a zrevidujte mi ho, jestli jsem na neco nahodou nezapomnel.
    Kdyz se vam bude libit, tak ho muzete pouzit ;).

    ReaderWriterLockSlimExtensions
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    NECROMAN: Pokud je Convertor jednoduchej, tak imho nema. Pokud je slozitej, tak mi to zacina davat smyls. Pokud hodlas nejakej Convertor refaktorovat, tak mi to dava smysl taky.
    NECROMAN
    NECROMAN --- ---
    Ma smysl psat unit testy na Convertery pro XAML? Prijde mi to jako naprosta zbytecnost, kde psanim testu stravim 10x tolik casu a vetisnou jen zopakuji xkrat pod sebe kod samotneho converteru.
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    Pouzivate nekdo MSTest projekt pro integracni testy?
    V mym pripade bych potreboval se pripojit k DB, v DB si zavolat metodu (ta se pres ruzny peripetie pripoji na moji sitovou sluzbu), sitova sluzby neco spocita, a ja chci ted otestovat, ze to spocitala. Nemam ambice presne kontrolovat jaky jsou data. To je unreal, ale chci vedet, ze to nevyprodukovalo nekonzistaneni data (napr. vim ze nekde nikdy nesmi byt NULL, kdyz nekde je priznak TRUE, atd...).
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    FRANKVFX: v zavislosti na tom co konkretne chces se tady najdou asi i lepsi diskuze (byt teda s vyjimkou unity diskuze jsou uz relativne nemrtve)
    [ OpenGL, Direct3D, rendering :: programování grafických aplikací :: otázky a odpovědi ]
    [ UNITY 3D ]
    [ 3D herní enginy, technologie, efekty a grafická kouzla ]
    FRANKVFX
    FRANKVFX --- ---
    SHIGORBIRDMAN,
    TENCOKACISTROMY: Mate pravdu, diky za usmerneni. Az budu mit chvili, sepisu poradne info :)
    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“…
    Kliknutím sem můžete změnit nastavení reklam