Category Archives: Development

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

Juice UI – ASP.NET WebForms Controls pro jQuery UI

Na první dnešní přednášce ASP.NET 4.5 na Microsoft MVP Summitu byla prezentována zajímavá nová knihovna, která přináší jQuery UI Widgets do prostředí ASP.NET WebForms – Juice UI. Protože je to jedna z mála věcí, které nejsou pod NDA, mohu se s Vámi o tento poznatek podělit.

Juice UI aspiruje na náhradu AJAX Control Toolkitu a zahrnuje například tyto controly:

  • Accordition
  • Autocomplete
  • Button
  • DatePicker
  • Dialog
  • Draggable
  • Position
  • ProgressBar
  • Resizable
  • Slider
  • Sortable
  • Tabs

Použití je přímočaré a nijak nekomplikované, např.:

<Juice:Tabs ID="_Default" runat="server">
  <Juice:TabPage Title="Tab 1" ID="_Tab1">
    <TabContent>
      ...
    </TabContent>
  </Juice:TabPage>
  <Juice:TabPage Title="Tab 2" ID="_Tab2">
    <TabContent>
      ...
    </TabContent>
  </Juice:TabPage>
</Juice:Tabs>

…uvidíme, jak se vypořádají s porodními bolestmi, které AJAX ControlToolkit měl. Jedná se o open-source knihovnu použitelnou pod licencemi MIT nebo GPLv2.

LinkButton nezobrazí po postbacku obsah, pokud obsahuje „statické html“ a ASP.NET control

Pokud je v LinkButtonu „statické html“, ASP.NET control a LinkButtonu změníme nějakou vlastnost, která se ukládá do ViewState, dojde po postbacku ke ztrátě obsahu LinkButtonu (je vyčištěna vlastnost Controls).
Nahlášeno na connect včetně dema, jak chybu zreprodukovat.
Workaround nemám, takže nezbývá, než v LinkButtonu nepoužívat vnitřní obsah – což je poměrně rozumný přístup :-).

Návrh schématu DB – Slides a záznam [MS Fest 2011]

Slides z přednášky pro MS Fest Praha 2011:

Záznam z přednášky najdete na našem YouTube Channel:

Validátory považují white-space za empty hodnotu

Leckoho možná překvapí chování validátorů (RegularExpressionValidatoru, CompareValidatoru a dalších) v jednoduchém případě:

<asp:TextBox ID="MyTB" runat="server" />
<asp:RegularExpressionValidator ValidationExpression="\d+" ControlToValidate="MyTB" Text="x" runat="server" />
<asp:Button Text="OK" runat="server" />

Co se děje:

  • hodnota „123“ validátor aktivuje, vstup je validní
  • hodnoty „123 “ nebo “ 123″ validátor aktivují, vstup není validní
  • hodnotu “ “ (white-space) validátor propustí, vstup je podle něj validní
    • nepomáhá ani ValidationExpression=“^\d+$“, validátor se prostě neaktivuje
  • hodnota „“ (String.Empty) validátor neaktivuje, validátory nevalidují Empty vstupy
    • white-space samotný je považován za Empty a validátory se tak vyjma RequiredFieldValidatoru ignorují (a CustomValidatoru, pokud má nastaveno ValidateEmptyText=“true“)