Slides z mé nedělní přednášky pro MS Fest Praha 2013:
Jakmile dostanu záznam z přednášky, bude vystaven na našem YouTube Channelu.
Slides z mé nedělní přednášky pro MS Fest Praha 2013:
Jakmile dostanu záznam z přednášky, bude vystaven na našem YouTube Channelu.
Pokud je Vaše aplikace psána pro Classic Managed Pipeline Mode, potom při standardním spuštění nad IIS Expressem dostanete krásnou chybku:
HTTP Error 500.22 – Internal Server Error
An ASP.NET setting has been detected that does not apply in Integrated managed pipeline mode.

Mě to potkalo u přechodu z VS2012 (kde jsem aplikaci pouštěl nad vestavěným Cassini) na Visual Studio 2013, kde je již jenom IIS Express. Přepínač je lehce ukryt, najdete ho v Properties projektu webové aplikace:

Kolem Database Management Views a jejich využití pro SQL performance diagnostics toho napsáno tuny, ale právě tato kvanta různých zdrojů uvádějí spousty různě kvalitních podob dotazu pro Most Expensive Queries.
Nebaví mě pokaždé hledat ten správný, nebo ho dokonce vymýšlet, proto si zde archivuji mojí oblíbenou podobu:
-- Most expensive queries
SELECT TOP 20
SUBSTRING(qt.TEXT, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(qt.TEXT)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2)+1)
AS query_text,
db.name AS [db_name],
qs.total_elapsed_time/1000 AS total_elapsed_time_ms,
qs.total_elapsed_time/qs.execution_count/1000 AS average_elapsed_time_ms,
qs.last_elapsed_time/1000 AS last_elapsed_time_ms,
qs.execution_count,
qs.total_worker_time/1000 AS total_worker_time_ms,
qs.total_worker_time/qs.execution_count/1000 AS average_worker_time_ms,
qs.last_worker_time/1000 AS last_worker_time_ms,
qs.last_execution_time,
qs.total_logical_reads,
qs.last_logical_reads,
qs.total_logical_writes,
qs.last_logical_writes
--qp.query_plan
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
LEFT JOIN sys.databases db ON (qt.dbid = db.database_id)
-- WHERE db.name='DatabaseName'
-- ORDER BY qs.total_logical_reads DESC
-- ORDER BY qs.total_logical_writes DESC
-- ORDER BY qs.last_worker_time DESC -- CPU time (active)
-- ORDER BY qs.last_elapsed_time DESC -- clock time (včetně čekání na locky, atp.)
-- ORDER BY qs.total_worker_time DESC
ORDER BY qs.total_elapsed_time DESC
…a rovnou přidávám už méně používaný dotaz pro chybějící indexy (varuji před zkratkovitou úvahou, že tyto indexy je nutné přidat):
SELECT
mid.statement
,migs.avg_total_user_cost * (migs.avg_user_impact / 100.0) * (migs.user_seeks + migs.user_scans) AS improvement_measure,OBJECT_NAME(mid.Object_id),
'CREATE INDEX [missing_index_' + CONVERT (VARCHAR, mig.index_group_handle) + '_' + CONVERT (VARCHAR, mid.index_handle)
+ '_' + LEFT (PARSENAME(mid.statement, 1), 32) + ']'
+ ' ON ' + mid.statement
+ ' (' + ISNULL (mid.equality_columns,'')
+ CASE WHEN mid.equality_columns IS NOT NULL AND mid.inequality_columns IS NOT NULL THEN ',' ELSE '' END
+ ISNULL (mid.inequality_columns, '')
+ ')'
+ ISNULL (' INCLUDE (' + mid.included_columns + ')', '') AS create_index_statement,
migs.*, mid.database_id, mid.[object_id]
FROM sys.dm_db_missing_index_groups mig
INNER JOIN sys.dm_db_missing_index_group_stats migs ON migs.group_handle = mig.index_group_handle
INNER JOIN sys.dm_db_missing_index_details mid ON mig.index_handle = mid.index_handle
WHERE migs.avg_total_user_cost * (migs.avg_user_impact / 100.0) * (migs.user_seeks + migs.user_scans) > 10
ORDER BY migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans) DESC
Jak jsem již popisoval v předchozím článku, vybírám si nového notebooka, přesněji řečeno ultrabooka, jako náhradu za můj stávající Lenovo ThinkPad X230 (zkušenosti s ním už jsem také popisoval, obzvláště tragický clickpad).
Aktuální kritéria se vyvíjejí takto:
Shortlist se mi prozatím vykrystalizoval takto:
S čím se neumím vypořádat je rozlišení. Všichni výrobci tlačí na maximální rozlišení a verze s nižšími rozlišeními jsou často podřadnějšího ražení. Moc to nechápu, protože už na svém stávajícím 12.5″ X230 považuji 1366x768px za hranici přijatelné čitelnosti v poloze „na klíně“ (u televize, vlak, bus, atp.). Nikdo mi zatím nevymluvil, že by se Windows umělo důstojně v desktop-režimu vypořádat se škálováním UI. Mám trochu obavu, jestli na tom FHD něco uvidím, a to ani nemluvím o různých Samsung, Yoga, Retina, co mají rozlišení úplně jinde. Modely HD+ jsou bohužel okrajová skupina.
Dneska jsem se byl podívat v showroomu na Harfě na Lenovo ThinkPad T440s. Zajímal jsem se hlavně o nový click-pad, protože jinak považuji tento notebook za přirozeného nástupce svého X230, pokud motivaci shrnu jako „stejná váha, trochu větší display, nové technologie“. Žiletkové ultrabooky jsou sice super, ale pokud poměrně často prezentuji přes VGA, pokud zvažuji zrušit desktop a potřebuji tedy dokování, pak trochu portovatější T440s, popř. Dell E7440, jsou myslím tím rozumným cílem pro mě.
Zpátky k cíli mé cesty – click-pad. Shrnu to slovy – není to zázrak, ale ani to není taková katastrofa, jak jsem se bál. Rozhodně se to na první dojem tvářilo o dost použitelněji než pupínkovaný click-pad mé X230. Je to hladké, je to velké, pro klikání to neklade tak velký protiodpor (to mě mimochodem překvapilo na X1 Carbonu, co tam stál vedle, že potřebuje taky poměrně velkou sílu na klik). Hlučí to. Při tap to drnčí. Rozhodně to není ideál, ale na rozdíl od X230 se s tím asi dá žít.
Jinak ta T440s se bohužel zatím prodává jen jako i5, na showroomu navíc měli dost chudý model bez touch, takže to mělo klasický display zapuštěný do rámečku. Přivázané na Kensington-lock se dost špatně posuzovala váha a provedení, ale budilo to dojem velmi lehkého až dutého stroje (oproti X230, které zase při potěžkání vypadá jako poměrně koncentrovaná věc, i když papírově lehčí). Celkově to vypadalo, asi i díky té nové šedé, plastověji a křehčeji, než jsem čekal, ale je to snad jen první dojem.
(…mimochodem nechápu taktiku Lenovo a Dell, že obě firmy začínají prodej T440s i E7440 nejslabšími verzemi, když v první lekci snad každého pojetí marketingu je řečeno, že jako první je potřeba slíznout smetanu od nedočkavců prodejem nejdražších verzí a až potom nasytit masy.)
Budu čekat na T440s ve výbavě, kterou potřebuji (i7, 8GB, SSD, touch) a mezi tím se pokusím ještě někde prohlédnout ten Dell E7440. Budu taky sledovat, jestli se neobjeví specifikace nového X1 Carbon 2, abych o něco nepřišel. Aktuálně to ale vypadá, že zvítězí i trocha netrpělivosti a až se objeví to správné T440s, tak bude moje.
Člověk se pořád učí. Dnes mě potkala lekce obzvláště těžká.
Na svých desktopech jsem vždy vypínal UAC, jeho zákoutí jsou mi tedy skryta a dosud mi to nechybělo. Dnes jsem narazil na něco, co mi chvíli dávalo zabrat.
Dohodl jsem se nedávno s účetní firmou na převzetí našeho účetnictví s tím, že ho povedou přes vzdálenou plochu na našem prostředí (Příjemně mě překvapilo, že jim to přišlo jako běžný požadavek.) Minulý týden jsme tedy nainstalovali čerstvé Virtual PC s Windows 7 a přesunul jsem na něj ze svého desktopu instalaci účetního systému Money S3. Účetní firmě jsme založili doménový účet, dali práva vzdáleného přístupu a vše jsem si vyzkoušel, když jsem se přes jejich účet na virtuál vzdáleně přihlásil a do účetnictví nastavil dovolené zaměstnanců za září, aby mohla účetní zpracovat mzdy. Během týdne jsem byl dost rozlítaný, takže mi účetní jen poslala mailem výstup ze zpracovaných mezd, vše jim fungovalo.
Dnes jsem si našel konečně čas, abych do Money naimportoval z našeho systému Goran vystavené faktury za září a připravil tak pro účetní část podkladů pro zpracování DPH. Přihlásil jsem se vzdáleně, provedl import a zaúčtování faktur, všechno v pohodě. Nakonec jsem si chtěl prohlédnout, jak účetní zpracovala mzdy.
Hledám marně. Mzdy tam nejsou. Chvíli přemýšlím, jestli to mohli nějak zpracovávat u sebe, nebo co se to děje. Zkoumám dál, v účetnictví nejsou ani ty dovolené, co jsem tam sám zadal. Panika, zmatek. Co se to mohlo stát, celé účetnictví vypadá tak, jako bych ho zrovna zmigroval ze svého desktopu. Nejsou v něm ani dovolené, ani mzdy, jen ty dnes importované faktury. Volám kolegovi, jestli nedělal nějaký restore staršího snapshotu VPC, nebo jestli netuší, co se to tam děje. Netuší.
Peklo, jak mám takovému stroji svěřit účetnictví? Co to tam hnije? Nechávám vypsat na počítači všechny soubory změněné po migraci účetnictví z desktopu, abych se alespoň trochu chytil, kdy se tam co dělo. Ve výsledcích jsem mj. zahlédl toto:
C:\Users\haken\AppData\Local\VirtualStore\Program Files\Money\Data\...
WTF? Co to je? Začíná mi to spínat…
Virtual Store
Nikdy předtím jsem o tom neslyšel (kupodivu). Nicméně ve zkratce řešeno je to mechanizmus ve Windows, který má sloužit pro podporu funkčnosti zastaralých legacy-aplikací, a když zjistí, že se aplikace pokouší zapisovat do Program Files, tak místo aby aplikaci vykopnul s odepřením přístupu, tak namapuje požadované soubory z profilu uživatele (VirtualStore). Stane se tak, že každý uživatel má vlastní podobu příslušné složky z Program Files. Ve finále jsem tedy měl v jednom uživatelském profilu Money s dovolenými a mzdami, v druhém pak s importovanými fakturami.
Popravdě řečeno jsem příliš detailně nepátral, jak to vypnout, nemám dneska chuť se s tím detailně drbat. U mě postačilo nastavit uživatelům Read+Write práva na příslušnou složku v Program Files a vypnout UAC. Vypadalo to, že samotná práva nestačí, přesněji řečeno zřejmě stačí, pokud jsou nastavena běžným uživatelům/skupinám, nikoliv však Administrators (tam administrátorský přístup právě hlídá ještě UAC). Administrátorům to vytvářelo VirtualStore, dokud bylo zapnuté UAC.
…no nic, složku v Program Files jsem přepsal verzí s dovolenými a mzdami a jdu naimportovat ty faktury znovu.
Visual Studio 2013 je ke stažení z MSDN, není co dodat.
Budu průběžně aktualizovat, jako svůj záznamník, a kdyby někdo řešil něco podobného. Vítám jakákoliv doporučení…
Slides z mé dnešní přednášky pro MS
Jakmile dostanu záznam z přednášky, bude vystaven na našem YouTube Channelu.
Slide (jeden) a dema z mé dnešní přednášky pro MS Fest 2013 v Brně:
Z přednášky se pořizoval záznam, který najdete na našem HAVIT YouTube Channel:
V jedné z posledních aktualizací Windows přibyla do Disk Cleanupu volba Windows Update Cleanup, která vyčistí z disku instalační soubory aktualizací Windows.

Konečně, v mém případě to byly 3GB. Když jsem se je kdysi pokoušel „vyčistit“ ručně, dost mi pak haprovaly instalace/odinstalace. Nová cesta by měla být bezpečná.