Vývojářský blog Tomáše Jechy

Poslední články

Období
RSS Feed
.NET Tips 2D 3D Aplikace ASP.NET C# C++ HTML+CSS Internet Javascript Office Silverlight SQL VB.NET VB6 VbNet.cz Vista VS Život, vesmír a vůbec Všechny články
Třída Random slouží ke generování pseudonáhodných čísel. Pokud ji ale chcete používat v konkurenčním prostředí, můžete narazit na několik zásadních problémů.
Sdílená instance mezi vlákny
Sdílet volně instanci třídy Random mezi více vlákny je velmi špatný nápad. Její metody totiž nejsou thread-safe a může se vám povést vyvolat vícekrát interní volání a sadu vzorků pro generování náhodných čísel znehodnotit a generátor začne vracet po nějaké době jako výsledek pouze jedno číslo.
Zde je jediná možnost obalit přístup k této instanci příkazem lock. To je nejjednodušší, z pohledu výkonu to může ale způsobovat problémy, pokud chcete náhodných čísel generovat hodně.
Vytváření nových instancí pro každé číslo
[Pokračování článku]
Datum: 25. 1. 2012 16:49
Kategorie: C#, .NET Tips
Pokud má firma víc jak několik málo počítačů, je velmi pravděpodobné, že je jejich síť je řízena doménou. Každý z počítačů má své jméno a je umístěn do příslušné části domény. Nejlepším způsobem jak se v takovém případě na počítače odkazovat je pomocí plného doménového jména – tedy Fully Qualified Domain Name (FQDN). Například pro počítač “SERVER1” v doméně “int.company.com” to je “SERVER1.int.company.com”.
Následující metoda toto plné doménové jméno zjišťuje:
public static string GetFQDN()
{
// get source information about domain
var prop = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties();
string domainName = prop.DomainName;
string hostName = prop.HostName;
// remove ending "." in domain name
if (domainName != null && domainName.EndsWith("."))
domainName = domainName.Substring(0, domainName.Length - 1);
// combine result
string result = "";
if (!string.IsNullOrEmpty(domainName) && !hostName.Contains(domainName))
result = hostName + "." + domainName;
else
result = hostName;
return result;
}
Tento postup oceníte například při psaní distribuovaných systémů, kde je potřeba vystavovat služby pro ostatní počítače umístěné v jiných částech domény a fyzicky tak na sebe nevidí pomocí samotného jména počítače.
Poznámka: Pokud počítač není připojen do domény, metoda vrací pouze jeho jméno.
[Zobrazit článek]
Datum: 24. 1. 2012 13:28
Kategorie: C#, .NET Tips
Poslední dva dny jsem se vztekal při hledání důvodu problémů, které nastávaly při použití technologie pro řízení transakcí (System.Transactions) v .NET Frameworku. Většinou o ní slýcháváme díky třídě TransactionScope, která zastupuje blok kódu, jehož běh má být transakční.
K čemu slouží TransactionScope?
Řízení transakcí je implementováno v řadě technologií obsažených v .NET Frameworku – příkladem může být WCF nebo klient pro komunikaci s databází. Zároveň je dobré zmínit, že pokud komponenta neimplementuje komunikaci s transakčním jádrem, není kód transakcí nijak ovlivněn. Jako asi největší výhodu využití vidím v distribuovaných systémech. Transakci je totiž možné propagovat i skrze komunikační kanál WCF.
Pokud se transakce propaguje skrz služby mezi více počítačů, je nutné mít na obou počítačích aktivní MSDTC službu s povoleným vzdáleným přístupem a správně nastavený firewall. Důležitý je fakt, že při samotné komunikaci zahajuje volání počítač, který jako první vyžaduje od toho druhého nějaké informace o transakci. Oba stroje tedy musí mít možnost přímého spojení pomocí NETBIOS jména (doménové jméno nefunguje). Pro zjištění, zda je vše správně nastaveno lze využít jednoduchou aplikaci Microsoft DTC Ping.
Více spojení k databázi v jednom TransactionScope
[Pokračování článku]
Datum: 5. 1. 2012 18:55
Kategorie: SQL, VB.NET, C#
Kdo jsou Student Agency?
Student Agency je firma, které se podařilo velmi dobře v ČR prosadit především jako autobusový dopravce. Jejich linky pokrývají velké množství měst a stále přidávají další. Zvýšili konkurenci a obecně tak zvýšili úroveň některých dopravců, kteří měli donedávna na některých linkách téměř monopol. Jsou dokonce jedním z hlavních důvodů, proč ještě nemám řidičský průkaz. Pokud jsem se potřeboval dostat do Liberce, Brna nebo Bratislavy, snadno jsem si zarezervoval jízdenku a v poměrně příjemném a čistém autobuse se dopravil na místo určení.
Starý rezervační systém
Jejich rezervační systém byl o několik úrovní dál než konkurence. Bylo možné si rezervovat jízdenky pro více lidí najednou, dobíjet kredit dopředu, platit přímo bez registrace za zakoupené jízdenky nebo postup kombinovat. Příjemná byla možnost uplatnit kredit na kteroukoliv linku po ČR nebo dobíjet kredit a kupovat takzvané otevřené jízdenky na prodejnách, které měli otevřeno až do večera. Navíc rezervace bylo možné provádět pomocí SMS a případné rušení nebo změna rezervace byla možná zdarma na pár kliknutí i půl hodiny před odjezdem. A obecně celý systém fungovat až na malé výtky k mé spokojenosti.
Proč o nich vůbec píšu?
[Pokračování článku]
Datum: 7. 9. 2011 22:07
Dema z přednášky o ASP.NET MVC3, kterou jsem měl před pár dny v Brně, můžete stáhnout zde:
Dema a prezentance ASP.NET MVC3[Zobrazit článek]
Datum: 19. 6. 2011 12:07
Kategorie: ASP.NET, C#
Strana 1 z 20 (článků: 97) 123456Další »»»