BLOGas.lt
Sukurk savo BLOGą Kitas atsitiktinis BLOGas

Klaidų svarbos lygiai

Parašė Sergejus | 2010-10-11 09:18

Darbe pabandėme apibendrinti kada koks svarbos lygis turi būti suteikiamas klaidai. Gavosi tokia lentelė:

Event Severity Level Enabled in Production Reaction from IT Goes to Bug Tracker Event Description
Fatal Yes Immediate reaction Yes An unrecoverable error just occurred, business critical service is down or SLA cannot be guaranteed.Here goes errors like cannot connect to database or service, network is unavailable, application has been killed and etc. Usually those problems should be infrastructure problems which must be fixed by IT.
Error Yes Follow up ASAP Yes Non business critical error just occurred; this is an attempt to identify where it happened and what caused it for later investigation.Usually those problems will be fixed by developers.
Warning Yes No reaction No Semantic error or possible SLA problems, this is for the Team internal usage only.
Info No No reaction No Something interesting happened and it needs to be documented, this is for the Team internal usage only.
Debug No No reaction No This is the data needed when one get the call at 2 a.m. and has to diagnose the problem immediately.

O kokius klaidų lygius jus naudojate? Kaip patys atskiriate kada tai yra Error, o kada Warning ir pan. Labai įdomu sužinoti skaitytojų patirtį.

Rodyk draugams

BigInteger tipas .NET Framework 4.0

Parašė Sergejus | 2009-08-23 18:53

Ar jums niekada nekilo poreikis operuoti labai dideliais sveikais skaičiais, tokiais dideliais, kad net neužtektų Int64? Jeigu taip, tai gera žinia jums - nuo .NET Framework 4.0 atsiranda naujas tipas, skirtas operuoti neriboto ilgio sveikais skaičiais BigInteger.

Kaip pavyzdį, pateiksiu faktorialo skaičiavimo metodą Factorial:

Matomai 500 faktorialas yra daug didesnis skaičius negu Int64 ar UInt64, todėl ir rezultatas yra “įdomus”:

Kadangi BigInteger palaiko visas standartines operacijas su sveiku skaičiumi kaip -,+,/,*,%,++,– ir panašiai, adaptuoti Factorial metodą BigInteger tipui yra labai paprasta:

Šį kartą rezultatas yra teisingas:

Pabaigai noriu atkreipti dėmesį, kad šis tipas randasi System.Numerics vardų srityje.

Rodyk draugams

Kortežai (Tuple) .NET Framework 4.0

Parašė Sergejus | 2009-08-18 00:15

Funkciniame programavime egzistuoja tokia sąvoka kaip „kortežas” arba angliškai Tuple. Kortežų pagalba metodas gali grąžinti ne vieną reikšmę, bet kelias vienu metu. Pagal prasmę kortežas panašus į apgaubiančią klasę, kuri naudojama kai reikia grąžinti kelias reikšmes. .NET Framework jau turėjo kažką panašaus, o tiksliau klasę KeyValuePair. Tai nėra tikrasis kortežas, nes pirma klasės pavadinimas tiksliai nusako saugomų objektų sąryšį (raktas / reikšmė), o antra - klasė visada priima lygiai du argumentus.

.NET Framework 4.0 į BCL (Base Class Library) yra įtrauktas naujas tipas Tuple, o tiksliau tipai Tuple<T1,T2>,…, Tuple<T1,…,T8>. Tai nėra tiesiog klasė - tai pilnavertis tipas, nes dabar įmanoma iš C# pasinaudoti F# sukurtais kortežais (kurie yra neatskiriama F# dalis) ir atvirkščiai. Be to, tipas Tuple įgyvendina kortežams reikalingus struktūrinį bei reikšmių palyginimus.

Tikriausiai jums pasitaikė atvejų, kada reikėjo grąžinti ne vieną, o kelias reikšmes vienu metu. Kaip pavyzdį pateiksiu metodą Validate, kuris nusako ar naudotojo vardas ir slaptažodis yra teisingi bei grąžina papildomą informaciją apie nesėkmingą prisijungimą:

Šį metodą nesunkiai galima perrašyti panaudojant kortežus:

Kaip matote, aš tiesiog apgaubiau grąžinamą reikšmę į kortežą. Kortežai gali būti kuriami dvejopai: naudojant operatorių new (kaip parodyta aukščiau) arba pasinaudojant gamykliniu metodu Create:

Ar Tuple panaudojimas yra gera praktika - negaliu pasakyti. Kol kas out parametras man atrodo priimtinesnis, nors tikrai buvo atveju, kada norėjosi iš metodo grąžinti anoniminį objektą (ypač dirbant su C# ir JavaScript sąsaja). Svarbu tai, kad tokia galimybė atsirado ir mes protingai galime ja pasinaudoti.

Rodyk draugams