Category Archives: Development

.NET Memory Internals & Advanced Debugging – záznam, dema a slides [WUG Brno 05/2016]

Slides a dema z mé přednášky pro WUG Brno z 31.5.2016:

Záznam z přednášky je publikován na našem HAVIT YouTube Channel.

Dotčená témata

  • StackOverflow troubleshooting
  • Stack
  • Windows Debugger, SOS, DebugDiag
  • Heap
  • Garbage Collector
  • Prozkoumávání haldy, rootů, finalization queue
  • GC Root identification (static fields)
  • Debugging dema

ASP.NET Performance Tuning – záznam, slides a dema [TechEd 05/2016]

5lides a dema z mé přednášky pro TechEd DevCon Praha ze 19.5.2016:

Záznam z přednášky je publikován na našem HAVIT YouTube Channel.

Dotčená témata

  • ASP.NET Sessions, tinyget.exe
  • PerfView
  • ANTS Performance Profiler
  • String Concatenation – skládání řetězců vs. StringBuilder
  • vyhledávání List<T>, Dictionary<TKey, TValue>, ToLookup(), BinnarySearch()
  • Reflection, dynamic
  • SQL Server Database Management Views [DMV]
  • ASP.NET Data Caching (demo ASP.NET Core)
  • ASP.NET Output Caching (demo ASP.NET Core)

ASP.NET Core MVC6 – TagHelpers, ViewComponents – záznam, dema a slides [TechEd 05/2016]

5lides a dema z mé přednášky pro TechEd DevCon Praha ze 18.5.2016:

Záznam z přednášky je publikován na našem HAVIT YouTube Channel.

Dotčená témata

  • ASP.NET Core MVC6
  • TagHelpers základy
  • TagHelpers připravené v MVC6
  • tvorba vlastních TagHelpers
  • ViewComponents základy
  • tvorba vlastních ViewComponents

ASP.NET Core – Dependency Injection & Unit-testing – záznam, slides a dema [TechEd 05/2016]

5lides a dema z mé přednášky pro TechEd DevCon Praha ze 17.5.2016:

Záznam z přednášky je publikován na našem HAVIT YouTube Channel.

Dotčená témata

  • ASP.NET Core
  • Dependency Injection základy
  • Startup.cs – ConfigureServices + environment specific
  • Controller – constructor injection
  • View – property injection
  • Unit-testing v ASP.NET Core
  • Mocking
  • Moq

Advanced Debugging Stories .NET – záznam, dema a slides [WUG Praha 4/2016]

Slides a dema z mé přednášky pro setkání WUG Praha z 12.4.2016:

Záznam z přednášky je publikován na našem HAVIT YouTube Channel.

Dotčená témata a nástroje

  • Windows Debugger + SOS.dll extension
  • Memory Dump Analysis, Crash Dump Analysis
  • DebugDiag, ClrProfiler
  • Microsoft Diagnostics Runtime
  • Stack analysis
  • Heap analysis, Garbage Collection, Finalization
  • StackOverflow

Fiddler: Zachytávání WCF SOAP volání localhost služby

Pokud ladíte projekt s WCF client-server komunikací (WCF SOAP), může se hodit možnost zachytávat tuto komunikaci ve Fiddleru.

Mnoho návodů vám pomůže nastavit Fiddlera jako proxy, pokud chcete zachytávat komunikaci svého WCF clienta se vzdálenou webovou službou. Pokud však serverovou stranu sami vyvíjíte a běží vám právě na localhost, postup dle těchto návodů vám komunikaci nezachytí.

Je potřeba na straně WCF clienta nastavit adresu cílových endpointů pomocí “localhost.fiddler:port”, všude tam, kde dosud máte “localhost”:

<system.serviceModel>
    <client>
        <endpoint address="http://localhost.fiddler:12890/WebServices/MyService.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMyService" contract="MyApp.IMyService" name="BasicHttpBinding_IMyService"/>
    </client>
</system.serviceModel>

Fiddler: Ignorování requestů (šumu na pozadí)

Kde jsou ty časy, kdy člověk pustil Fiddler Web Debugger a mohl v něm poklidně ladit svojí webovou aplikaci, aniž by se musel probírat stovkami HTTP requestů generovaných ostatními aplikacemi. Dnes je HTTP protokol natolik oblíbený, že použití Fiddler již není tolik pohodlné.

Naštěstí je možné Fiddlerovi říct, jaké requesty má ignorovat (resp. skrýt z UI, “odbavení” nadále provádí). Děje se tak např. prostřednictvím FiddlerScriptu, kde ve funkci OnBeforeRequest můžeme nastavit (výstřižek ze začátku funkce):

    static function OnBeforeRequest(oSession: Session) {       
      
        if (
            (oSession.hostname == "tfs.havit.eu")
            || (oSession.hostname == "outlook.office365.com")
            || (oSession.hostname == "havit.sharepoint.com")
            || (oSession.hostname == "tfs.havit.eu")
            || (oSession.hostname == "vortex.data.microsoft.com")
            || (oSession.hostname == "nexus.officeapps.live.com")
            || (oSession.hostname == "client-api.itunes.apple.com")
            || (oSession.hostname == "iadsdk.apple.com")
            || (oSession.hostname == "roaming.officeapps.live.com")
            || (oSession.hostname == "mobile.pipe.aria.microsoft.com")
            || (oSession.hostname == "play.itunes.apple.com")
        ) {
            oSession["ui-hide"]="yup";
        }

        // pokračování funkce

            

FiddlerScript najdeme v menu Rules pod volbou Customize Rules… “Ideálně” se edituje prostřednictvím FiddlerScript Syntax Highlight doplňku (na jeho instalaci se ptá Fiddler při otevírání položky Customize Rules…):

image

Kromě oSession.hostname můžeme použít i plné oSession.url, nebo další možnosti poskytovaného FiddlerScript API.

[ASP].NET Worst Practices – záznam, slides a dema [Prague .NET Meetup 02/2016]

Slides a dema z mé přednášky pro setkání Prague .NET Meetup ze 17.2.2016:

Záznam z přednášky je publikován na našem HAVIT YouTube Channel.

Dotčená témata

  • Garbage Collector, Finalization, C# Destructors, Resource Wrapper pattern
  • Process Failure, StackOverflow, Windows Debugger, DebugDiag
  • <compilation debug=“true|false“ />, <deployment retail=“true“/>
  • ASP.NET Over-posting / Mass-assignment
  • skládání stringů vs. StringBuilder
  • vyhledávání v datech – List vs. BinnarySearch vs. Dictionary vs. LINQ ToLookup()
  • perly code-review

[ASP].NET Performance Tuning – záznam, slides a dema [ShowIT SK 02/2016]

Slides a dema z mé přednášky pro konferenci Gopas ShowIT Bratislava z 9.2.2016:

Záznam z přednášky je publikován na našem HAVIT YouTube Channel.

Dotčená témata

  • ASP.NET Sessions
  • skládání stringů vs. StringBuilder
  • vyhledávání v datech – List vs. BinnarySearch vs. Dictionary vs. LINQ ToLookup()
  • reflexe + dynamic
  • ASP.NET Data Cache + Output Cache
  • SQL DMVs
  • YSlow

Advanced Debugging .NET – záznam, slides a dema [ShowIT SK 02/2016]

Slides a dema z mé přednášky pro konferenci Gopas ShowIT Bratislava z 10.2.2016:

Záznam z přednášky je publikován na našem HAVIT YouTube Channel.

Dotčená témata

  • StackOverflow troubleshooting
  • Windows Debugger, SOS, DebugDiag
  • Prozkoumávání zásobníku
  • Prozkoumávání haldy, rootů, finalization queue
  • GC Root identification (static fields)