Weblog @ rebex.cz

Weblogy na webu Rebexu
Welcome to Weblog @ rebex.cz Sign in | Help
in Search

Weblog @ Rebex.cz :: Honza Šotola

nepravidelné poznámky .NET vývojáře

  • Rebex koupil Apple

    Tom_ma_Mac

    Ne, nejde o žádnou akvizici - firmu Apple nekupujeme a ani ona nekupuje nás.
    Hodláme však naše .NET komponenty podporovat i na platformách Mono a MonoTouch, aby se daly používat i na počítačích či kapesních zařízeních, kde neběží Windows.

    Dnes proto nastal v Rebexu přelomový den: po 17 letech vývoje téměř výhradně na MS Windows jsme zakoupili náš první Mac od Applu.
    Při rozbalování byl zkoumán s jistou mírou nedůvěry:

    JKA_Tak_tohle_jsme_v_me_minule_praci_nemeli

    Ale mladí jsou šikovní a pokrokoví, takže na Tomášově stole už po pár minutách blikaly Mac OS X a Windows pěkně vedle sebe:

    Mac_Windows

  • Jak vynutit autentizaci i pro obrázky na IIS7+

    Pokud máte webovou aplikaci s Forms autentizací a nechcete, aby byl statický obsah tohoto webu (např. obrázky) dostupné i bez autentizace, stačí přidat následující atribut do tagu Modules ve web.configu:

     <system.webServer>
        <modules runAllManagedModulesForAllRequests="True">
           ...
        </modules>
     </system.webServer>

    Toto nastavení funguje jen pro IIS7 a vyšší v "Integrated" módu (tento mód se nastavuje na úrovni AppPoolu).
    Naopak na ASP.NET Development Serveru nemá tento návod význam - tam se autentizace pro statický obsah provádí vždy.

    Možná je toto řešení trochu neefektivní (šlo by např. napsat handler či modul, který by se provázal jen s určitými typy souborů), ale je to řešení rozhodně nejjednodušší.

    Posted 23. června 2011 15:14 by honzas | 1 Comments
    Filed under:
  • SQL Server datetime formát – má víra byla scestná

    Dlouhá léta jsem věřil, že pro textový zápis data (nebo data a času) je nejjistější používat ANSI SQL formát:
    ‘yyyy-mm-dd’ (nebo ‘yyyy-mm-dd hh:mi:ss’).
    Není tomu tak – tento formát je poplatný jazykovému nastavení aktuální SQL connection.

    Příklad:

    image

    Žil jsem tedy přes 10 let v bludu. Kajícně jsem si v článku v Books Online dohledal, že jazykově nezávislé formáty data v SQL Serveru jsou například:

    • yyyymmdd’ nebo ‘yyyymmdd hh:mi:ss
      ISO 8601 un-separated
    • ‘yyyy-mm-ddThh:mi:ss’
      ISO 8601 datetime
      (podle Books Online není jazykově nezávislý, ale podle mých pokusů i jiných zdrojů je nezávislý)
    • {d’yyyymmdd’} nebo {ts’yyyymmdd' hh:mi:ss’}
      ODBC formáty

    POZN: Nové datové typy SQL Serveru 2008 jsou více jazykově neutrální – pro datový typ Date, DateTime2 nebo DateTimeOffset je jazykově neutrální i můj původně profanovaný formát ‘yyyy-mm-dd’ (nebo ‘yyyy-mm-dd hh:mi:ss’).

    Příklady:

    image

    Další informace jsou moc hezky sepsané a shrnuté v následujícím článku:
    http://www.karaszi.com/SQLServer/info_datetime.asp (zejména v kapitole “Date and time formats for input”).

    Posted 23. května 2011 13:28 by honzas | 8 Comments
    Filed under:
  • Jak zjistit, který IIS w3wp.exe proces patří ke kterému App Poolu

    Na IIS6 je na to k dispozici skript:

    iisapp.vbs

    Bydlí v systemroot\system32.

    Více viz následujícím článku.

  • Jak přidat do asp:DropDownList položku, která není v datasource

    Možná zase objevuji Ameriku, ale následující feature jsem neznal.

    Jistě jste v různých projektech řešili následující problém:

    • mám DropDownList a používám ho např. pro filtrování
    • jeho položky plním z nějakého číselníku, ale navíc bych chtěl mít na prvním místě nějakou neutrální hodnotu, která znamená "hledej vše"

    Pokud DropDownList bindujete "postatu", tedy vytvořením data source objektu v code-behind, jeho dosazení do property DataSource a následné volání metody DataBind(), mohli jste položku ještě před nabindováním přidat do původního datasource.

    Pokud ale máte data source deklarovaný v ASPX kódu stránky, taková možnost se nenaskytuje.
    Naštěstí asp:DropDownList podporuje možnost kombinovat načtení položek z DataSource s nastavením statických položek. Tento režim se zapíná pomocí property AppendDataBoundItems na true.

    Původní deklaraci DropDownListu, např.

    <asp:DropDownList ID="ddlCountry" runat="server" DataSourceID="dsCountry" DataValueField="ID" DataTextField="Name" />

    tedy doplníte o nastavení této property a přidáte statickou položku (ta se předřadí před položky z datasource a bude tedy i implicitně selectnutá):

    <asp:DropDownList ID="ddlCountry" runat="server" AppendDataBoundItems="true" DataSourceID="dsCountry" DataValueField="ID" DataTextField="Name" >
      
    <asp:ListItem Value="0" Text="-all-" />
    </
    asp:DropDownList>

    Tolik ke klasickému asp:DropDownListu ze System.Web.UI.

    A jak to řešit v DevExpress ASPxComboBoxu:

    ASPxComboBox bohužel property AppendDataBoundItems nepodporuje (přestože už dva roky existuje suggestion pro přidání této property).
    Většina diskusí na jejich support fóru vede k článku, který radí item přidávat dynamicky až na klientské straně.
    Kód pro deklaraci ComboBoxu pak vypadá následovně:

    <dx:ASPxComboBox ID="cmbRealm" runat="server" DataSourceID="dsRealm" ValueField="ID" TextField="ID">
      
    <ClientSideEvents Init = "function(s, e) {if (s.GetItemCount() <= 0 || s.GetItem(0).value != '') {s.InsertItem(0, '-', '');s.SetSelectedIndex(0);}}"/>
    </
    dx:ASPxComboBox>

    Není to nic nádherného, ale lepší řešení jsem zatím nenašel.

More Posts Next page »
Powered by Community Server (Personal Edition), by Telligent Systems