Author Archives: Robert Haken

avatar Neznámé

About Robert Haken

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

Optimalizace databázových dotazů – Execution plans – Slides, dema, záznam [MS Fest 2012]

Slides a dema z přednášky na konferenci MS Fest Praha 2012:

Z přednášky byl pořízen obrazový záznam, který najdete na našem YouTube Channel:

Doporučuji též rozšířenou podobu přednášky, která byla v březnu 2013 realizována pro WUG Praha (opět včetně záznamu).

PerfView – ladění v 64-bit prostředí – NGen

PerfView je zajímavý nástroj od Microsoftu, který umožňuje neinvazivní profiling stroje, např. produkčního serveru, tím, že se přihlásí k odběru ETW událostí Windows.

Nevýhodou je, že .NET call-stacky jsou nepoužitelné, pokud profilujeme 64-bit .NET process.

Pomoci se tomu dá zkompilováním assembly/-ies pomocí NGenu:

D:\WebApp\bin>"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen" install MyAssembly.dll /nodependencies /verbose

…NGenovat je potřeba všechny assembly, které nás ve vyhodnocení call-stacku zajímají.

U webového kontextu je potřeba recyklovat AppPool.

Pokud by NGen hlásil chybějící dependencies, lze to dohledat pomocí FusLogVw.exe.

Optimalizace výkonu webových aplikací – Slides, dema, záznam [WUG Praha 07/2012]

Slides a dema z přednášky pro WUG Praha v červenci 2012:

Z přednášky byl pořizován obrazový záznam, který je k dispozici na našem YouTube Channel:

Optimalizace výkonu databázových dotazů – Slides, dema [TechEd Praha 2012]

Slides a dema z přednášky na konferenci TechEd Praha 2012:

Záznam z přednášky nebyl pořizován, obdobnou přednášku jsem však prezentoval pro WUG Praha a k té záznam existuje.

Optimalizace výkonu webových aplikací – Slides, dema [TechEd Praha 2012]

Slides a dema z přednášky na konferenci TechEd Praha 2012:

Záznam přednášky nebyl pořizován, rozšířená podoba však byla následně prezentována pro WUG Praha a pro tu existuje záznam.

Tipy a triky v .NET a VS (C#) – Slides a dema [TechEd Praha 2012]

Slides a dema z přednášky na konferenci TechEd Praha 2012:

Záznam z přednášky nebyl pořizován.

Tipy a triky T-SQL – Slides a dema [TechEd Praha 2012]

Slides a dema z přednášky na konferenci TechEd DevCon Praha 2012:

Záznam z přednášky nebyl pořizován.

Diff Visual Studio 11 z příkazové řádky + použití s TortoiseSVN

Krásný nový Diff-tool z Visual Studio 11 se dá vyvolávat i externě z příkazové řádky a dá se tak použít například i přímo z TortoiseSVN.

Obecná syntaxe je:

devenv /diff sourceFile targetFile [sourceDisplayName] [targetDisplayName]

Pokud již nějaká instance Visual Studia běží, použije se, jinak se spustí nové.

TortoiseSVN

Pro TortoiseSVN v Settings/Diff Viewer stačí přepnout na „External“ a použít:

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe /diff %base %mine %bname %yname

(Cestu si samozřejmě upravte podle sebe.)

…teď už jenom zajistit, jestli se dá takhle vyvolat i merge. Z výpisu devenv /? to zatím nevypadá.

NuGet – poznámky z přednášky

Pár mých poznámek z přednášky o NuGet (Package Manager ve VS od Microsoftu), které zřejmě nebudu dále zpracovávat.

(Microsoft MVP Summit 2012 Seattle)

Links

Tvorba vlastního package

  • NuGet Command Line (ke stažení přes samotný NuGet)
  • VS / New Project / Class Library
    • NuGet.exe pack <.csproj file>
      • vznikne .nupkg
      • je to zip ála .docx
    • NuGet.exe push <.nupkg file>
  • [global: AssemblyInformationVersion(„any string“)]
    • pre-release = číslo verze obsahuje podtržítko

Nastavení vlastního NuGet feedu ve VS11

  • Tools / Library Package Manager / Package Manager Settings / Package Sources
  • dá se tam nastavit FilePath, kde mám své packages
  • nebo použít package „NuGet.Server“
    • Install-Package NuGet.Server
    • stáhne SLN s jednoduchým servříkem

C# 5: Caller Info Attributes

Zajímavá novinka v C# 5 poslouží například k logování. Následující příklad funguje ve Visual Studio 11 Beta

  class Program
    {
        static void Main(string[] args)
        {
            Log("Message");
        }

        static void Log(string message,
            [CallerMemberName] string callerMemberName = "",
            [CallerFilePath] string callerFilePath = "",
            [CallerLineNumber] int callerLineNumber = 0)
        {
            Console.WriteLine(message);
            Console.WriteLine(callerMemberName);
            Console.WriteLine(callerFilePath);
            Console.WriteLine(callerLineNumber);
        }
    }

Výstupem je např:

Message
Main
d:\Development\CallerAttributes\CallerAttributes\Program.cs
14