• ú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 --- ---
    NECROMAN: Tak tohle je super uber prasarna. Ale je to fakt peknej trik.
    SLUPKA
    SLUPKA --- ---
    NECROMAN: to je docela zajímavé a zajímalo by mne, jak moc jistě to funguje. Protože v době, kdy byl .NET 4.0 nový (neboli nevím, jestli se to ještě stále tak chová), tak pokud jsem udělal třídu s klasickým destruktorem (takový ten co obsahuje this.Finalize(false)) a při vytváření argumentů pro konstruktor padla výjimka, tak v debug režimu se nestalo nic (nebo jsem si ničeho nevšiml), ale v release režimu se zavolal destruktor a tam padla výjimka, protože this bylo null. Zajímavé bylo, že se mi nepodařila nijak odchytnout (ani na AppDomain unhandled exceptions), takže zjistit v čem byla chyba byla opravdu chuťovka. A jelikož jsem nikde GC.Collect nevolal, tak ta výjimka padala opravdu krásně náhodně.
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    ty vole, to je ale neskutecna prasarna :DDDD
    NECROMAN
    NECROMAN --- ---
    Tady je reseni, je to trik s rekurzivne volanymi konstruktory, vyjimkou v konstruktoru a ulozeni instance v destruktoru, tfuj!
    Detaily kdyztak zde (ani jsem netusil, ze se ta diskuze tak rozvine):
    Is it possible to define valid C# interface that cannot be implemented? - Stack Overflow
    http://stackoverflow.com/...it-possible-to-define-valid-c-sharp-interface-that-cannot-be-implemented
    public class CantDeriveMe
    {
        private CantDeriveMe()
        {
        }
        public override string ToString()
        {
            return "My type is " + this.GetType().ToString();
        }
    }
    
    public class OhYeah : CantDeriveMe
    {
        static OhYeah CapturedInstance;
    
        ~OhYeah()
        {
            CapturedInstance = this;
        }
    
        OhYeah() : this(1/String.Empty.Length)
        {
        }
        OhYeah(int blah) : this()
        {
        }
        public static OhYeah Create()
        {
            try
            {
                new OhYeah(4);
            }
            catch (DivideByZeroException)
            {
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }
            return CapturedInstance;
        }
        public static void test()
        {
            OhYeah it;
            it = OhYeah.Create();
            Console.WriteLine("Result was ({0})", it);
        }
    }
    H_U_N_T_E_R
    H_U_N_T_E_R --- ---
    NECROMAN: funkce FormatterServices.GetUninitializedObject vytvoří instanci, aniž by volala ctor (pravděpodobně prostě naalokuje na heapu vhodnej počet bytů a kašle na vše). Jak ale vytvořit instanci a zavolat ctor (bez relfexe) netuším :-(
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    NECROMAN: nema to nejaky staticky factory funkce?
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    taktez obecny deserializator bez reflexe si tak nejak nedovedu predstavit....
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    bez aktivatoru / reflexe fakt nevim :)
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    Jak rika SLUPKA, deserializatory obcas pouzivaj zpusob, kdy vytvorej instanci, ale zadnej konstruktor neni volanej. Reflexi nepouzivaj, maj na to nejakej jinej trik. Nezkoumal jsem ale jakej.
    SLUPKA
    SLUPKA --- ---
    NECROMAN: No, co deserializace? :)
    NECROMAN
    NECROMAN --- ---
    Kviz na nedeli, lze ziskat instanci tridy, ktera neni sealed, ale ma jediny konstruktor new(), ktery je private, zadne dalsi fieldy, property, metody? Bez pouziti reflexe, activatoru, atd.
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    URZA: ma to celkem rozumny stripping, cili tu velikost udrzuje jakztakz rozumnou (aspon u iosu to celkem fungovalo)
    PAJIN
    PAJIN --- ---
    Ahoj, nemate nekdo zkusenosti s Failed request tracingem na IISku ? Mam ho zapnutej a nastavenej, log soubory se me spravne vytvarej ale kdyz ten soubor otevru tak skoro kazdej GENERAL_RESPONSE_ENTITY_BUFFER je zakoncenej TRUNCATED... takze data toho response tam nejsou cely. Zkousel sem i nastavit maxLogFileSizeKb na 2048KB (ty responsy maj ted kolem 200KB) , ale nepomohlo. Nevite nekdo cim by to mohlo bejt ?
    URZA
    URZA --- ---
    ja asi vyzkousim tu HTML5+JS cestu.. ta moje appka bude prave hlavne GUI a velmi malinko logiky (i kdyz by se tam dal vyuzit pekne LINQ:)
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    P19: V androidu si to vsechno pises rucne v xml souboru. Podobne jako ve wpf v xamlu.
    P19
    P19 --- ---
    URZA: no prave na to GUI potrebujes ten Mac. Nativne se iOS aplikace pisou v aplikaci XCode, ktera ma i designer. A v Xamarinu pises C#, ale pro designer se musis prave prepnout do MacOS X a naklikat si to v XCode, Xamarin ti to pak zase napoji na C#.
    Teoreticky bys XCode potrebovat nemusel a mohl to vsechno napsat rucne v Xamarinu, ale to je, jako bys rucne psal kod, co ti VS vygeneruje do *.designer.cs souboru u winformu.
    Jak je to s Androidem nemam tuseni.
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    URZA: jj, GUI se pro kazdou platformu musi delat zvlast.

    oni tam .net nelinkujou, je to kompilovany primo do nativniho (byte)kodu dotycny platformy.
    URZA
    URZA --- ---
    TENCOKACISTROMY:
    P19: hm hm.. tak nejake realne zkusenosti s xamarinem bych si i rad poslechl.. napr. jak v tom xamarinu resite GUI? jestli jsem to pochopil dobre tak pokud bych chtel iOS a android tak pro kazde musim to gui psat samostatne?

    a jinak s velikosti appky a vykonem zkusenosti nejaky mate? ono to asi naroste tim ze se tam prilinkuji .NET co?

    chci si taky udelat jednu indianskou vec a tak mi to spis vychazi zatim na nejaky html5+phonegap..
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    Ve WPF Mam nasledujici button s takovymhle contentem:
    Button
    + Grid
      + Row
        + Border
          + TextBlock
      + Row
        + TextBlock
    


    Kdyz na ten button kliknu, spusti se nejaka akce a ten TextBlock uvnitr Borderu zacnu animovat. Konkretne jezdi ze svy pozice nahoru. Problem je, ze mi vyjede mimo oblast buttonu. Puvodni zamer byl, ze kdyz bude vyjizdet, tak to co je mimo button, tak nebude videt. Misto toho to precuhuje mimo oblast buttonu. Urcite na to je najaky nastaveni, aby se to tak nedelo. Ale nevim jaky :P.
    Kliknutím sem můžete změnit nastavení reklam