• ú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 --- ---
    TENCOKACISTROMY: I sense too much of dynamic side of the force in you....
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    TENCOKACISTROMY: Teda chtel jsem rict:
    Protoze konstantu do promenne si nepriradim takto. V jazycich dynamickych, usetril mi tento pristup debugovani mnoho. Zvyk jsem si tento i do C# prenesl, prestoze jen u bool promennych situace dotycna hrozi.
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    SHIGORBIRDMAN: Protoze si pak omylem nepriradim konstantu do promenny. V C# ti to hrozi jen v pripade bool promennych/clenu, ale u dynamickych jazyku mi to uz nekolikrat usetrilo hromadu debugovani.
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    STROMYCOKACITEN: proc pouzivas yoda conditional? :)
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    URZA: Ten pristup k singletonu udelej takhle:
    public sealed class Singleton {
        private static Singleton instance; // zadny "= null"
        private static readonly object padlock = new object();
    
        public static Singleton Instance {
            get {
                var result = instance;
                if (null == result) { // pro kontrolu na NULL neni potreba lock
                    lock(padlock) {
                        // zkontrolujeme jeste jednou, jestli se pred ziskanim zamku nahodou
                        // uz singleton neinicializoval z jinyho vlakna
                        if(null == (result = instance)) {
                            instance = result = new Singleton();
                        }
                    }
                }
    
                return result;
            }
        }
    }


    Jinak ten lock se vaze pouze na tu statickou property "Instance", ktera vraci odkaz na ten objekt. Na samotny objekt se ten lock nevztahuje.
    URZA
    URZA --- ---
    Ahoj,

    Mam Singleton tridu v multithreaded prostredi, kde v Getu pro vraceni instance je lock

    implementovano takto nejak:

    http://pastebin.com/BfikxUhJ

    Ted by me zajimalo, jestli tim ze pristup k instanci Singleton.Instance je locknuty, tak jestli to zajisti i lock na pristup k vnitrnim vecem (property atd) nebo jestli ten se musi poresit v kazde property zvlast

    Teda treba kdyz by mel ten singleton takovouto metodu:

    private int Cosi {get; set;}

    public bool UpravCosi()
    {
    if (Cosi == 2)
    Cosi = 5;
    }

    tak jestli je to vpohode tim ze ta instance singletonu je lockovana nebo jestli muze vzniknout nekonzistence mezi radkem Cosi == 2 a radkem Cosi = 5 ?

    Dik
    NECROMAN
    NECROMAN --- ---
    Trochu si dneska pohravam s Azure, vedeli jste, ze k tomu existuje commandline utilita pro Bash? :)
    Windows Azure Command-Line Tools for Mac and Linux (Linux)
    http://www.windowsazure.com/en-us/manage/linux/other-resources/command-line-tools/
    NECROMAN
    NECROMAN --- ---
    TENCOKACISTROMY: jo vim, jak se disposuje, to jsem jen vcera experimentoval, abych to tam nejak dostal :)
    Problem byl s ceskymi znaky, proto ten StreamReader a XmlReader. Take to hlasilo chybejici namespace, proto ten XmlRoot.
    Prikladem toho souboru:
    http://www.play.cz/radio/cro3-192.asx
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    NECROMAN: To .Path + "\\Resources" bych radeji nahradli pomoci Path.Combine.
    Ten stream by si zaslouzil dispousnout. Idealne ho uzavrit do "using(...){...}". Vytvaret ten serializer dokola asi taky neni potreba.
    V tom souboru je jen ten jeden objekt? Nemusel by ses pak drbat s tim xmlreaderem a root attributem.

    var asxs = new List<AsxModel>();
    var serializer = new XmlSerializer(typeof(AsxModel));
    var path = Path.Combine(Package.Current.InstalledLocation.Path, "Resources");
    var resources = await StorageFolder.GetFolderFromPathAsync(dirPath);
    foreach (var file in await resources.GetFilesAsync()) {
        using(var stream = await file.OpenStreamForReadAsync()) {
            var asx = (AsxModel)serializer.Deserialize(xr);
            asxs.Add(asx);
        }
    }
    


    Nicmene nevidim tam zadnej rozdil v mnozstvi kodu oproti desktopovejm windows.
    MAIMONIDES
    MAIMONIDES --- ---
    NECROMAN: Fuj.
    NECROMAN
    NECROMAN --- ---
    TENCOKACISTROMY: stejnak je to silene, kolik kodu ve WinRT je treba jen kvuli hloupemu nacteni primitivniho XML do objektu:

    List<AsxModel> asxs = new List<AsxModel>();
    StorageFolder resources = await StorageFolder.GetFolderFromPathAsync(Package.Current.InstalledLocation.Path + "\\Resources");
    foreach (StorageFile file in await resources.GetFilesAsync())
    {
    Stream stream = await file.OpenStreamForReadAsync();
    XmlReader xr = XmlReader.Create(new StreamReader(stream, Encoding.UTF8));
    XmlRootAttribute xRoot = new XmlRootAttribute { ElementName = "ASX", IsNullable = true };
    XmlSerializer serializer = new XmlSerializer(typeof(AsxModel), xRoot);
    AsxModel asx = serializer.Deserialize(xr) as AsxModel;
    asxs.Add(asx);
    }
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    NECROMAN: Radsi nez regularni vyraz bych pouzil nejakej stavovej automat. Nejjednodussi (na naprgani) by balo asi pouzit HtmlAgilityPack. Proste to nacist do DOMu, opravit co je spatne a pak z toho udelat zase string/stream.
    NECROMAN
    NECROMAN --- ---
    TENCOKACISTROMY: bohuzel nejsem zdrojem toho xml, tak asi prohnat nejakym regularnim vyrazem jedine, jako reseni.
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    NECROMAN: Obavam se, ze vzhledem k tomu, ze to neni validni xml, tak ne.
    NECROMAN
    NECROMAN --- ---
    Da se nejak primet DataContractSerializer, aby ignoroval velikost pismen v tagu, kdyz mam toto?
    <Title> ... </title>
    NECROMAN
    NECROMAN --- ---
    TENCOKACISTROMY: je to asi pravda, ze takovy LongListSelector zabere vic, nez usetrim zmenou ObservableCollection na Array, ale chci v tom mit koncepcne poradek :)
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    NECROMAN: Nic vic lightwight nez array nevymyslis.
    Ale jestli to pouzivas ve spojitosti se XAMLem, tak resit jestli pouzit array, list ci observablecollection mi prijde celkem zbytecny. Hromadu pameti a vykonu si sezere to wpf/silverlight.
    NECROMAN
    NECROMAN --- ---
    Dotaz, jaka je podle vas nevice "lightweight" genericka kolekce pro kolekci hodnot/objektu, jejichz pocet nebo poradi se nebude menit, pouze je potrebuji nabindovat v XAMLu, typicky konstantni pole mest, ktere ziskam requestem pri prvnim spusteni aplikace?

    ObservableCollection je fajn, ale pokud se na dane kolekci dat neplanuji zmeny, tak tam vidim pametovy/vykonnostni overhead.
    Co treba klasicky array, tj treba City[]?
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    Ja jdu na nerddiner poprvy, ale predpokladam, ze se tam nejaka znama tvar objevi.
    GARFIELD
    GARFIELD --- ---
    TENCOKACISTROMY: ja si ted zrovna doma hraju s webama, protoze v praci delam desktop a server side. Na nerddinner jdu zitra taky, ale zatim tam nikoho neznam, tak jsem dost zvedavy, jake to bude.
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    CSS me neberou, ale zitra jdu na neddinner. Jdete jeste nekdo?
    GARFIELD
    GARFIELD --- ---
    Jdete dneska nekdo na CSS na steroidech a pripadne zitra na nerddinner? Rad bych rozsiril svoji programatorskou sit :) Kdyztak posta.
    Kliknutím sem můžete změnit nastavení reklam