\


 Wednesday, 30 March 2005
Programátorsko-analytická hádanka
Hádanka

Máte třídu objednávky, která může nabývat 3 stavů (Nová, Schválená, Zamítnutá) . Dokážete určit, co všechno je v následujícím kódu špatně?

 
 
 public enum OrderState
    {
        New,
        Rejected,
        Approved
    }
    
    
    public class Order
    {
        protected OrderState m_state;
        public Order()
        {
            m_state = OrderState.New;
        }
        public virtual void Approve()
        {
            if (m_state != OrderState.New)
            {
                throw new InvalidOperationException();
            }
            m_state = OrderState.Approved;
        }
        
        public virtual void Reject()
        {
            if (m_state != OrderState.New)
            {
                throw new InvalidOperationException();
            }
            m_state = OrderState.Rejected;
        }
    }
    
    public class SpecialOrder : Order
    {
        public SpecialOrder() : base()
        {
            
        }
        
        public override void Approve()
        {
            
            throw new InvalidOperationException();
        }
        public override void Reject()
        {
            if ((m_state != OrderState.New) && (m_state != OrderState.Approved))
            {
                throw new InvalidOperationException();
            }
            
            m_state = OrderState.Rejected;
        }
        
    }
    


Wednesday, 30 March 2005 19:31:00 (Central Europe Standard Time, UTC+01:00)       
Comments [24]  Programátorské hádanky


 Tuesday, 29 March 2005
Třída XmlSerializer - pár tipů

Dnes se na Emwacu objevil dotaz ke třídě XmlSerializer. K neoblíbené a podezřelými chybovými hláškami prolezlé třídě XmlSerializer dodám ještě dva tipy pro neštastníky, kteří s ní stále vedou nerovný podpásový zápas.;)

V aplikaci je vyvolána výjimka s informací "System.IO.FileNotFoundException: File or assembly name <nejaka blbina - jméno dynamické assembly>.dll, or one of i
ts dependencies, was not found.
" Tuto hlášku můžete dostat i ve webových službách, které interně XmlSerializer používají.

Jaké jsou příčiny této chybové hlášky?

1) XmlSerializer emituje za běhu dynamickou assembly pro rychlou serializaci typu předaného do jeho konstruktoru. Dynamická assembly se vytváří v pracovním adresáři (aktuálně požívaný TEMP adresář získáte voláním Path.GetTempPath) a k selhání dojde, protože účet, pod kterým běží aplikace, nemá práva na zápis a čtení z adresáře. Účtu aplikace stačí přidělit vyžadovaná práva na TEMP adresář a vše se zdá být v pořádku, alespoň k dalšímu neúspěšnému pokusu o spuštění aplikace.

2) Výše zmíněnou výjimku totiž XmlSerializer používá jako univerzální informaci o takřka jakémkoli selhání. Jste-li si jisti, že práva na temp adresář nastavena máte, přidejte do konfiguračního souboru aplikace následující switch.

<system.diagnostics>

   <switches>

     <add name="XmlSerialization.Compilation" value="1" />

   </switches>

</system.diagnostics>

V TEMP adresáři pak naleznete textový soubor <jméno generované assembly>.out, ve kterém jsou zalogovány chyby - tentokrát ty "pravé" bez ochranných mimikrů iritujícího XmlSerializeru :)



Tuesday, 29 March 2005 18:03:00 (Central Europe Standard Time, UTC+01:00)       
Comments [2]  


 Sunday, 27 March 2005
Pozvání na přednášky o návrhových vzorech a C# 2.0
UML

Po delší době úplného mediálního klidu na svém blogu bych Vás všechny rád pozval na dvě přednášky. Tedy alespoň vytrvalce, kteří jsou tak trpěliví nebo nepořádní, že při jarním úklidu svých počítačů nevymetli můj blog ze svých RSS čteček jako loňské zahnívající názorové smetí. ;)


31.3.2005 od 18:00 mám přednášku pro .NET Developer Group s názvem "UML a návrhové vzory" a podtitulem "Od letmých doteků k nestřídmé zamilovanosti" ;)
Podrobnosti o akci naleznete na hlavní stránce serveru Vyvojar.cz. Kvůli vymezenému času půjde samozřejmě jen o povrchní seznámení, ale na počátku nestřídmé zamilovanosti stojí většinou jen pár (ještě ;)) cudných pohledů na objekt zájmu.

Původ a historie jazyka UML

  1. Základní konstitutivní prvky jazyka UML
  2. Požadavky na systém - případy užití
  3. Třídy a objekty - diagram tříd, diagram objektů
  4. Diagramy interakce (diagram spolupráce a sekvenční diagram)
  5. Diagram aktivit
  6. Stavové diagramy
  7. Diagram komponent a diagram nasazení
  8. Návrhové vzory – úvod
  9. Unit of Work
  10. Component configurator
  11. Special Case object
  12. Thread specific storage (PseudoSingleton)
  13. Interceptor
  14. Volná diskuze

Na programátorském večeru ČVUT 11.4.2005 budu přednášet o C# 2.0. Přednášku jsem uvedl takto.

V přednášce budou vysvětleny nové vlastnosti jazyka C# ve verzi 2.0, motivace pro zavedeni novych jazykovych konstrukci . Součástí přednášky budou také ukázky kodu, ktere demonstrují na typizovaných problémech i raritnich hřičkách sílu a eleganci C# 2.0 v praxi.

Pro "zmrtvýchvstáni" všeho druhu jsou Velikonoce příhodný čas, takže přeji Vám všem, abyste plně sdíleli smysl tohoto nádherného symbolického zpřítomnění naddějinné události, která tak libozvučně zní jen v řečtině - "Christos Anesti". Je dobré vědět, že vše má smysl...



Sunday, 27 March 2005 20:43:00 (Central Europe Standard Time, UTC+01:00)       
Comments [12]