Author Archives: Robert Haken

avatar Neznámé

About Robert Haken

Software Architect, Founder at HAVIT, Microsoft MVP - ASP.NET/IIS

Vybírám notebooka IV. – Dorazil T440s, trochu jiný než jsem čekal

Někdy před měsícem jsem si objednal Lenovo ThinkPad T440s. Dnes notebook dorazil.

Objednával jsem ho s popisem „LENOVO TP T440s černý 20AQ0066 14″ 1920x1080m Touch,i7-4600U@2.1G,8GB,512SSD,iVGA,noDVD,BT,FP,3G,2x3c,W7P+W8P+3r on-site“, což se dnes ukázalo jako nesmyslná kombinace P/N a popisku (která se však vyskytuje v českých shopech úplně všude, resp. dnes si zřejmě opravila popisek Alza).

Dnes mi dorazil kus s označením modelu „20AQ-0066MC“, což se od výše uvedeného (očekávaného) liší zejména:

  • nemá to Touch display
  • má to 12 GB RAM, nikoliv 8 GB
  • vypadá to, že to má SmartCard reader

Asi si ho nechám, i když je to něco jiného, než jsem očekával. Touch jsem sice nakonec chtěl, ale víceméně jsem byl rozhodování tehdy ušetřen, protože všechny (oba) modely s i7, co se v objednatelné nabídce objevily, byly Touch.

Trochu jsem o Touch pochyboval, protože

  • verze Touch je tlustší  – o trochu masivnější víko s displayem
  • verze Touch je těžší – asi o 200g
  • verze Touch má prý horší koukatelnost displaye (na sluníčku prý bída, hodně odráží, atp.)
  • naopak se mi líbilo překrytí Touch displaye Gorilla-glass přes celé víko, takže by se to asi lépe čistilo
  • Touch jsem chtěl nakonec tak nějak kvůli Win8.1 a s výhledem, že notebook bude Kinder-friendly, matlání prsty po display mi však vždy přišlo trochu divné (i když třeba s iPadem nebo iPhonem mi to přijde naprosto přirozené),

…takže nakonec mi ani tak nemrzí, že to Touch nemá

Že to má více paměti, než jsem chtěl, asi přežiju. Bude to žrát více baterky a nemám pro ní zatím využití.

SmartCard reader nevím, k čemu mi bude.

První dojmy

Prakticky hned jsem disk kompletně smazal a pustil se do instalace Windows 8.1 (můj druhý pokus přejít z Win7 od doby, co jsem zhnuseně po třech dnech mazal Windows 8 RC).

  • TouchPad sice dělá rámus a drnčí, ale mám pocit, že si na něj zvyknu. Na stupnici od 0 do 100, kde 0 je X230 (fakt nepoužitelný) a 100 je MacBook Air, bych mu dal asi 75 bodů.
  • Výše posazená klávesnice mi zatím dělá trochu problémy, zadrhávám hodinkami na levé ruce o přední hranu notebooku.
  • Klávesa Esc nějak divně cvaká (hned v první části zdvihu), budu to pozorovat a zkoumat.
  • Váhově srovnatelný s X230, co jsem měl dosud.
  • Budu si muset zvyknout na FullHD a tím, jak na něm Windows velikostně škálují. Jsa zvyklý na ostrý obraz nativního rozlišení mám nyní z klasických aplikací divný pocit. Snad se to srovná. Každopádně nechat si nastavení na „Smaller“ (100%) vypadá nereálně, všechno by bylo nečitelně mrňavé.
  • Největší boj pro mě evidentně budou Windows 8.1 oproti Windows 7. Těch pár hodin pokusů o nějaké nastavení (a to jsem se nepustil ještě do instalací SW) mě zatím optimizmem nenabíjí.
  • Jinak oproti Win7 je to s drivery a tooly Lenovo pro Win8.1 bída. Ještě neumím posoudit, jak kvalitně to dokážou pokrýt Windowsy sami (postrádám hlavně Power Manager)

…dám tomu pár dní praxe a zkusím zas hodit nějaké dojmy do placu.

Řízení SW projektů a vztahů se zákazníky – slides a záznam [MS Fest Ostrava 2013]

Slides z mé nedělní přednášky pro MS Fest Ostrava 2013 (inovovaná podoba vystoupení pro MS Fest Praha 2013 před měsícem nebo MS Fest Brno 2013 před dvěma):

Z přednášky jsem pořizoval záznam, který najdete na našem HAVIT YouTube Channelu:

WatiN: Could not load file or assembly Interop.SHDocVw

Pokud by vás WatiN po instalaci z NuGetu obšťastnil hláškou ve stylu

Unhandled Exception: System.IO.FileLoadException: Could not load file or assembl y ‚Interop.SHDocVw, Version=1.1.0.0, Culture=neutral, PublicKeyToken=db7cfd3acb5 ad44e‘ or one of its dependencies. The located assembly’s manifest definition do es not match the assembly reference. (Exception from HRESULT: 0x80131040) File name: ‚Interop.SHDocVw, Version=1.1.0.0, Culture=neutral, PublicKeyToken=db

…pak je potřeba na referenci Interop.SHDocVw nastavit v Properties volbu „Embed Interop Types“ na false:

imageimage

Jinak si zkouším hrát s WatiN-em. Máte s tím někdo zkušenosti? Výhody/nevýhody proti Visual Studio Coded UI Test (mimo licenčních)?

Intel Rapid Storage AHCI Driver 12.8.0.1016 mi zavařil

Spustil jsem dneska po delší době Lenovo System Update a vypadl tam na mě mimo jiné „Intel Rapid Storage AHCI Driver – 7 [64]“ ve verzi 12.8.0.1016. Jak se následně ukázalo, úplně si to s mým ThinkPadem X230 nesedlo.

image

Projevil se tak, že mi fronta na disk (Resource Monitor / Disk Queue Length) běžně narostla na 10-50 (normální hodnoty jsou <1) a přišel jsem na to ve chvíli, kdy se mi začal dost cukat HD film z iTunes.

…pomohl Rollback Driveru z Device Manageru.

Vybírám notebooka III. – Objednal jsem si T440s

Dnes jsem si objednal Lenovo ThinkPad T440s 20AQ0066 :

  • 14.0 FHD 1920x1080mat IPS with Touch
  • i7-4600U@2.1GHz
  • 8 GB RAM PC3-12800 DDR3L SDRAM SODIM
  • 512 SSD SATA3
  • Intel HD 4400
  • Int7260 2x2AC+BT4
  • 720p HD Camera for Touch
  • WWAN (M.2.) Integrated mobile broadband (Ericsson N5321)
  • Fingerprint Reader
  • backlit keyboard
  • 2x TP Bat 3cell Li-Polymer 23.2Wh
  • Windows 8 Pro64 Czech/EN
  • vPro, noDVD, No M.2 Memory
  • 3 YEAR ON-SITE
  • ThinkPad Pro Dock (ten už dorazil)

…dorazit by měl začátkem prosince, napíšu pak první dojmy.

The Ultimate Agile Planning Handbook–zajímavý e-book zdarma od Teleriku

Telerik v rámci propagace svého produktu TeamPulse vydal a zdarma ke stažení nabízí e-book The Ultimate Agile Planning Handbook, knížku o plánování, odhadování, velocitách a podobých věcech v agilním pojetí vývoje.

Přímý link ke stažení PDF.

Řízení SW projektů a vztahů se zákazníky – slides [MS Fest Praha 2013]

Slides z mé nedělní přednášky pro MS Fest Praha 2013 (jiná podoba než MS Fest Brno 2013 před měsícem):

Z přednášky byl pořizován záznam, který najdete na našem HAVIT YouTube Channel:

Zkušenosti s přechodem na TFS a agilní techniky [MS Fest Praha 2013]

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.

IIS Express: Managed Pipeline Mode – Classic

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.

image

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:

image

SQL DMV: Most Expensive Queries, Missing Indexes

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) &gt; 10
	ORDER BY migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans) DESC