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

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
Již dlouho jsem nepsal nic na blog, ale nedávné zkušnosti s naší milou a levnou státní správou mě “donutily” cestou z úřadu zpět do Prahy napsat toto ublognutí.
Vždycky jsem si o sobě myslel, že jsem nenáročný a po úřadech nikdy nic speciálního nechci. Nyní vím, že jsem se mýlil, neboť chci takový zvláštní, netradiční a velmi složitý úkon – přehlásit koupené (ojeté) auto na sebe.
Celý zatím nedořešený problém už má dvě kapitoly a brzy se bude psát kapitola třetí. Začneme od začátku – byl nebyl jeden stát. Nebyl to obyčejný stát, byl to totiž stát český disponující českou státní správou. Protože to je stát svobodný, je potřeba o každou drobnost žádat, každé zívnutí hlásit a patřičně za vše platit. Tedy tento stát si usmyslel, že si nemůžu koupit auto jen tak, ale musím přinést obětiny úředním bohům. Kdybychom žili ve starověku, tak by stačilo podříznout ovci a bylo by po problému. Moderní bozi jsou ale mnohem náročnější – jako oběť jim nestačí ovce ale Papír, řádně podepsaný a podložený dalšími Papíry. Inu, vydal jsem se tedy do chrámu dopravního registru v Pardubicích. V rámci přibližování úřadů běžným občanům se tento registr nachází ve vesnici za Pardubicemi, asi aby si měštští lidé prohlédli v rámci sebevzdělávání český venkov. Poctivě jsem si zjistil chrámové úřední hodiny a dorazil jsem tam 3 hodiny před zavíračkou. Jaké bylo mé překvapení, když jsem našel u vstupu ceduli “dnes už nebereme”. V optimistické snaze, že není vše ztraceno a i úředník je jen člověk a slituje se nad někým, kdo kvůli návštěvě kněze Velké Státní Správy jel až z Prahy, jsem došel k nejbližšímu nižšímu knězi chrámu státní správy se žádostí o vysvětlení – jak je možné, že 3h před zavíračkou už mají zavřeno a proč na tuto zvláštnost nikde neupozorňují. A dostalo se mi odpovědi pevné jako zákon sám – “my to tu tak děláme” – doplněné pozdravem na rozloučení “co tu stojíte, běžte pryč”. Nejdříve jsem si myslel, že se jedná o nezdvořilost, ale později se ukázalo, že je to nějaký druh náboženského pozdravu. Něco jako křesťané mají “sbohem” nebo “Bůh s Vámi”.
Poučen předchozí zkušeností jsem se druhý pokus pokusil absolvovat časně zrána, jak mi poradili další čekající (kteří měli to štěstí, že šli do oddělení méně náročného boha). Tedy budíček v 5 hodin ráno, pomodlit (“Ó Velký Úředníku, nechť je ti můj čas a nevyspalost dostatečnou obětinou”), zkontrolovat jestli mám všechny potřebné doklady a na vlak. Autem jsem si ve stavu, kdy jsem spal za chůze, jet netroufl. Později se to ukázalo jako zásadní chyba. Cesta vlakem byla příjemná a tak optimisticky naladěn jsem se spolu s bratrem vydal vstříc již známému chrámu. Již půl hodiny před otevíračkou tam bylo cca 10 lidí, do otvíračky jich přišlo dalších cca 20. Nemohl jsem se ubránit dojmu, že jsem ve vyprávění své mamky, když mi povídala o frontách na podpultové zboží za tuhého socialismu. Dřív nebyly banány, teď není požehnání úřednického boha. Po rituálním otevření brány vnitřního chrámu jsem si vzal lísteček, zaradoval se “dnes jsem to stihl” a šel si sednout do bufáčku, který byl obsluhován asi jediným příjemným člověkem v budově. Musím mu nechat geniální podnikatelský záměr, neboť minimální čekací doba jsou prý 2 hodiny, údajně tam už zažil lidi, kteří přišli ráno a odcházeli v pozdním odpolední. My měli štěstí a již po třech hodinách jsme se ocitli uvnitř, tváří v tvář strašlivému knězi – nefalšované úřednici. Ta nás přivítala rituálním pozdravem “Co chcete?!”, odpověděli jsme ji tedy naším pozdravem “Dobrý den” a vysvětlili podstatu problému. Hrdě jsem předložil všechny potřebné doklady (jejichž úplnost jsem si pro jistotu znovu ověřil podle nástěnky ve vnitřním chrámu) i vyplněný formulář. Jaké bylo mé překvapení, když se kněžka zaradovala a prohlásila “chybí vám technická, nashledanou”. Na můj chabý protest “ale tu mám tady” spojený s ukázkou protokolu o STK mi vysvětlila, že musím mít speciální kontrolu pro převod (evidenčku). “Ale to není nikde psané!”, pokusil jsem se bránit. Načež vytáhla seznam požadovaných dokladů, který byl kupodivu jiný než ten visící na nástěnce chrámu. A s vítězoslavným gestem mi ukázala, že na jejím seznamu se požadovaný doklad nachází. Úplný seznam požadovaných papírů je nejspíše střežená náboženská relikvie a lidem se předhazuje seznam očesaný. Inu, každé náboženskí musí mít svá tajemství. Následoval již obligátní pozdrav “co tu čumíte, vypadněte, zdržujete!” a už jsme stáli přede dveřmi, plni dojmů o kvalitně stráveném dopoledni, kvalitě úřednických kněží placených z daní a chybějícím dokladu.
… To be continued
[Pokračování článku]
Datum: 6. 9. 2011 12:12
Kategorie: Život, vesmír a vůbec
Disclaimer: tento blogpost je napůl poznámka pro mě - až zase nebudu vědět, co s tou chybou, a budu zuřivě googlit, tak abych si tento popis vygooglil 
Dneska při programování v C++ jsem narazil na zajímavou kompilační chybu C3493 s velmi výmluvným názvem “'maxValue' cannot be implicitly captured because no default capture mode has been specified”. Má fantazie bohužel neměla svůj nejlepší den, tak jsem se snažil onu chybu neinvenčně najít v MSDN. Zarazilo mě, že daná chyba se tam nenachází. Fáze 2 pracovně zvaná “Google” taktéž neuspěla – našel jsem pouze odkazy na Microsoftí Connect s popisem chyby, která se projevovala v Betě Visual Studia 2010.
Nebudu vás (a sebe, až to za půl roku budu číst) napínat – chyba se týká nově zavedených lambda výrazů v C++, což asi vysvětluje, proč jsem nebyl schopen rychle nic relevantního najít; asi se ještě lambdy v C++ moc nepoužívají, přestože je to moje nejoblíbenější featura z VS2010 (btw viděli jste přednášku na letošním PDC Lambdas, Lambdas Everywhere! od Herba Suttera (dlouholetý předseda C++ committee a nyní lead designed v C++ týmu v Microsoftu)? Tato moc pěkná přednáška přesně vystihuje můj názor na lambdy). Jak asi víte, tak narozdíl od C# je potřeba uvést (nebo tam vrazit implititně všechny, ale to není ono) všechny lokální proměnné, které chci vidět i v těle té lambdy. No a ona chybová hláška znamená jen a pouze to, že jsem na nějakou zapoměl a on ji pak v té lambdě nevidí, nemůže “zachytit” jeji hodnotu nebo referenci.
[Zobrazit článek]
Datum: 11. 11. 2010 16:30
Kategorie: VS, C++
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ů: 5) 1