Vývojářský blog Jakuba Čermáka

Poslední články

Období
RSS Feed
.NET Tips 2D 3D Aplikace ASP.NET 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
Rád bych vás pozval na mou přednášku o testování .NET aplikací (unit testy a další), která se bude konat v úterý 13.10.2009 od 17:20 v budově Matematicko-Fyzikální fakulty v Praze na Malostranském náměstí v učebně S3. Přednáška je určena spíše lidem, kteří toho o testování aplikací moc nevědí, tudíž nejsou kromě znalosti .NET frameworku a chuti se něco nového dozvědět potřeba žádné speciální znalosti. Nicméně může být přínosná i pro zkušenější programátory, třeba se můžete obohatit o jiný pohled na věc nebo naopak svým názorem obohatit přednášku. Budeme probírat nejen to, jak se nejrůznější druhy testů tvoří, ale i věci, kterých byste se měli při psaní vyvarovat. Vše bude doplňováno praktickými příklady. Každopádně, pokud se rozhodnete přijít, tak vás rád uvidím.
Omlouvám se za pozdní ohlášení, nějak mě nenapadlo to sem napsat :)
UPDATE: Slajdy a demo udělané během přednášky je k nalezení a stažení na http://www.jcermak.cz/Prednasky.aspx
[Zobrazit článek]
Datum: 12. 10. 2009 19:07
Kategorie: C#, Aplikace, .NET Tips
VMWare virtualizační platformu asi není třeba moc představovat, je to přeci jen jedna z nejstarších a nejvýznamnějších firem zabývajících se virtualizací. Možná znáte také jejich VMWare server, který je zdarma, přesto je to poměrně kvalitní produkt. Nechci a nebudu se zde pouštět do diskuze, zdali je lepší VMWare, Hyper-V (který je sice pěkný, ale pro mé účely nevhodný díky slabé podpoře Linuxu) či jiný.
VMWare Server 2 má ale (z mého pohledu dost zásadní) nevýhodu v tom, že v základu lze administrovat pouze pomocí webového rozhraní. Web rozhraní je fajn z toho důvodu, že umí skoro všechno a pokud nechceme používat remote konzoli, tak ani není třeba nic instalovat a vše funguje. Teoreticky to tedy vypadá krásně. V praxi je problém v tom, že ono webové rozhraní neběží, ale plazí se. Navíc se mi dost často stávalo, že se zaseklo na “Loading” hlášce a musel jsem to refreshnout, znovu se přilogovat a vyčkávat, zda-li se tentokrát už vše správně nahraje. Doma bohužel nemám tak rychlý internet jako na koleji, a tak problémy a čekání jsou řádově větší. Tedy jsem celkem logicky začal pátrat po něčem desktopovém. Na webu VMWare jsem bohužel nenašel žádné relevatní informace, což mě poněkud zarazilo, nicméně Google už byl sdílnější – našel jsem, že se na VW Server dá připojit přes VMWare Infrastructure client. Ten jsme už znal z jednoho pokusu s ESXi. Stáhl jsem ho tedy (aktuální verzi 4.0) a vyplnil jméno serveru a přihlašovací údaje. Překvapilo mě, že si nejdříve stáhl VIC verze 2.5 přímo z web interfacu, nainstaloval a až pak pomocí něj se připojil (je třeba manuálně nastavit port 8333), což mě dovedlo k myšlence, že ten VIC klient správné verze bych mohl mít celou dobu pod nosem – a taky že ano, celou tu dobu seděl ve složce C:\Program Files\VMware\VMware Server\hostd\docroot\client případně se dá stáhnout z https://váš_server:8333/client/VMware-viclient.exe.
Osobně nechápu VMWare, proč na svém webu nemá žádnou zmínku o tomto způsobu, protože administrace desktopovým klientem je výrazně rychlejší a přehlednější, navíc umožňuje provádět hromadné operace (např. spustit či suspendovat celou skupinu virtuálů), což mi ve web rozhraní dost chybělo. Ale asi za tím bude nějaké marketingové rozhodnutí.
Přihlašovací dialog pro jméno serveru (nezapomenout na port 8333) a jméno a heslo
Podobným způsobem prý lze taky přidat Servery do vCenteru pro lepší správu, což jsem ale nezkoušel, neboť na 1 server je vCenter kapku antiproduktivní :)
[Zobrazit článek]
Datum: 30. 8. 2009 14:04
Kategorie: Internet, Aplikace
Dneska jsem během náhodného procházení internetu narazil (z mého pohledu) zajímavou věc – jak udělat to, co umí např. proces CSRSS, tj. že když ho někdo nebo něco killne nebo umře přirozenou programovou smrtí, tak s sebou vezme i celý systém – Windows hodí BSOD (KeBugCheckEx) s tím, že mu (volně řečeno) umřel kritický proces a bez něj už nemá smysl dál existovat :)
Kód Bluescreenu se liší podle toho jestli hlídaný program skončil v pořádku (vrátil 0), pak je to CRITICAL_PROCESS_DIED (0xEF), nebo jestli skončil s chybou, pak se zjeví BSOD CRIITICAL_OBJECT_TERMINATION (0xF4).
Jak se tedy takováhle věc nastavuje? V podstatě jsou 2 cesty, kdy první používá interně tu druhou. V obou dvou případech je třeba, aby proces měl seDebugPrivilege (v .NETu to lze zařídit pomocí fcí Process.EnterDebugMode a Process.LeaveDebugMode) a nejspíš jsou potřeba i admin práva (bez nich mi to nefungovalo). Nejjednodušší je asi použít nedokumentovanou API funkci RtlSetProcessIsCritical, které se (mj.) předá BOOL vyjadřující, jestli tento proces je pro systém kritický nebo není. Zásadní nevýhoda je, že se toto nedá použít pro nastavování jiných procesů. A protože jsem člověk zvědavý, tak jsem se podíval do referenčních zdrojáků NTOSKRNL (část Windowsího kernelu) a implementaci té funkce tam ke své spokojenosti našel – je to víceméně jen obálka nad dvojicí (zase nedokumentovaných) funkcí NtSetInformationProcess a NtQueryInformationProcess, sloužících pro nastavování či čtení nejrůznějších parametrů procesů.
Implementace
[Pokračování článku]
Datum: 28. 6. 2009 20:14
Kategorie: C#, Aplikace, Život, vesmír a vůbec
Strana 1 z 1 (článků: 3) 1