Vítejte na blog.vyvojar.cz Přihlásit | Registrovat | Pomoc
Titulní Blogy Fotky Soubory

Martinowo

Technologie, zajímavosti a .NET

  • Vista WGA a ještě přísnější pravidla a zajímavost SP2 pro SQL Server 2005

    Zaujal mě příspěvek na CDR.cz (Ballmer slibuje, že přitvrdí s WGA). Nepatřím prozatím do rodiny uživatelů Visty, ale politika, kterou uplatňuje Microsoft vůči legálním uživatelům nepovažuji za štastnou. Nemožnost čisté instalace Upgrade verze - starším verzím postačovalo instalační médium původní verze, diskutované problémy okolo deaktivace čísla původní instalace při Upgrade a taky například problém kolizí dualbootu a Restore Pointu na disku s Vista a XP - sám jsem zažil při testování Visty - vyústilo ve dvoudenní reinstalaci vyvojářského systému; to všechno mi nepřijde jako dobré atributy. Jsem vývojář a technologie Microsoftu mě živí, přesto polarita, kterou Microsoft podobně kontroverzním typem politiky vyvolává neprospívá žádné ze stran.

    Podle mého názoru komunita vyvojářů i uživatelů miluje vlastnosti software, které jim zlehčí nebo usnadní život. Podobnou drobnost jsem našel dnes po instalaci SP2 pro SQL Server 2005, Management Studio má navíc rozlišení polí na NULL:

    Tenhle příspěvek je rozedraný jak svědomí vývojáře nad kompromisy kódu. Přesto má-li mít závěr, přál bych si spoustu věcí jako objevená vlastnost SP2 a málo omezení v software. Můj kancelářský kolega jehož jméno nemohu prozradit používá spojení krásný software. Hezké ne ?

  • První pohled na SQL Server 2005 Express, 12-2004

    Nechal jsem se zlákat novým release MS SQL Server 2005 Express Ed. (Beta - December 2004) a taky informací o vydání SQL Server Express Manager. První dojem je pozitivní, i když jsem čekal malinko více. (Co by člověk ale všechno nechtěl zadarmo :) )

    Co se mi líbilo, nelíbilo:

    • kompaktní, Express manager použitelný pro základní orientaci v databázi, administrace uživatelů
    • V Express Manageru chybí téměr všechny vlastnosti a funkce známé z Query Analyser, zůstala pouze funkcionalita na úrovni zadání SQL Query a odpovědí v tabulce nebo textu (víte-li více, prosím opravte mě)
    • lze spravovat stávající systémy (SQL Server 2000, instalace MSDE)
    • zajímavý design barevných záložek v IDE (pravděpodobně bude také ve VS.NET 2005)

    Určitě zajímavější bude v tomto ohledu pohled na stejně čerstvý Release Developer Edition. Stahuji a nechám se překvapit.

  • Avalon Tech. Preview ke stažení pro předplatitele

    Avalon, nové GUI pro Longhorn je k dispozici ke stažení pro předplatitele MSDN Subscription. Ve stromu MSDN downloadů je: WinFX - Avalon - Community Technology Preview alokováno:

    • SDK: Tools, SDKs and DDKs > Platform Tools ... > Platform SDK Beta
    • Longhorn: Platforms > Windows Longhorn Client Preview > WinHEC 2004 Build

    Ke zprovoznění je potřeba Windows XP SP2, doporučováno je také Visual Studio .NET 2005 Beta. Instalace není doporučována na produkční systémy. Přiznejte se, kdo už to vyzkoušel ? :)

  • Copy and Paste zdrojových kódů z VS.NET do Blogu

    Při psaní posledního z článků na blogu jsem zhusta narážel na problém přenosu zdrojového kódu z VS.NET do Blogu (HTML) a to nejlépe včetně barviček a formátování. Samozřejmě pokud možno jednoduše, bez dalších starostí.

    Hezké řešení je plug-in pro VS.NET: CopySourceAsHtml. Po instalaci je kontextové menu VS.NET doplněno o položku: Copy Source as HTML.... Dále jsou v okně nabízeny volby pro formátování a stylování textu do HTML. Doporučuji:

    • Všechny volby na první záložce: General zvolit neaktivní s vyjímkou položky: Remove indentation.
    • Z výsledného HTML zrušit čast: style; (styly používané pluginem již Michal Bláha vložil do stylů blog.vyvojar.cz)

    A to je vše. Ať se líbí.

  • Zamykání a vlákna

    Při toulkách po zdrojových textech a také několika problémech se slovem lock a jeho použitím jsem narazil na hezký Tutorial - Multi-threading in .NET. Některé kapitoly byly skvělé :

  • Akceptovani SSL certifikatu na https spoji

    Jestliže se Vám podobně jako nám při řešení jednoho nedávného importu dat stalo, že .NET tvrdě odmítá neautorizované SSL certifikáty, respektive ty, které nepodepsala nějaká důvěryhodná autorita (VeriSign apod.) je potřeba .NET ujistit definovanou Policy, že má akceptovat vše. Např.

    /// <summary>
    /// bezpecnostproakceptovali libovolneho SSL certifikatu (https)
    /// </summary>
    public class AkceptujVsePolicy:ICertificatePolicy 
    {
        public bool CheckValidationResult(
            ServicePoint srvPoint
            , X509Certificate certificate
            , WebRequest request
            , int certificateProblem) 
        {
            // vzdy povol, akceptuj vse ...
            return true;
        }
    }         

    a pak dále před nastolením komunikace Policy aktivovat:

    // akceptuj jakykoliv server certifikat
    System.Net.ServicePointManager.CertificatePolicy = new AkceptujVsePolicy();
    ... 

    Funguje a akceptuje libovolný SSL spoj. Má to ale háček, řešení je platné pro celou .NET AppDomain, proto můžou být problémem použití v kombinaci s vyžadovaným ověřením.

  • Vstup velkého množství dat do SQL v praxi

    Pro aplikaci hledání Atlas.cz jsem řešili vstup velkého množství číselných dat do SQL Serveru - principy, které před časem popisoval Michal (blog: Michal Bláha, článek: SQL - rychlé předávání parametrů). Popíšu kousky implementace a rychlostní testy mezi dvěma nejsilnějšími řešeními.

    Cíl bylo zapsat nebo jinak do SQL Serveru dostat relativně velkou množinu dat, provést výpočetní a group operace uvnitř a ven pak číselné výsledky. Přičemž množství čísel dovnitř bylo v řádu: 1 000, dat uvnitř pro JOIN, GROUP v řádu: 1 000 000 a výstup ven v řádu: 10. Pro implementaci a testování jsme vytvořili tyto verze :

    • INSERT SP pro zápis 50 čísel najednou, počet volání pak odpovídal: [pocet]/50 ...
    • Funci z článku od Michala, která vrací přímo strukturu typu tabulka a tak její výsledek může být rovnou použit pro další operace v SQL

    Testování probíhalo na samostatné .aspx stránce, kde bylo náhodně vzato 1 000 čísel (uloženo do Cache pro další použití) a zasláno pro zpracování oběma principy. Číselné hodnoty mají význam spíše váh výkonu pro oba postupy, nezahrnují odečty dalších operací na stránce (např. čtení výsledku SqlDataReadery). Výsledky :

    • SP : 171 req/1 min.
    • Funkce : 192 req/1 min.

    Vítězem a závěrečná implementace je tedy na Funkci, nicméně očekával jsem větší náskok tohoto řešení.

  • Blog editor a hezký RSS nástroj - .NET

    Ve své touze po něčem lepším než BlogJet a napnut očekáváním na w.bloggar 4.0 jsem zběžně pročesal internet na blog editor, nejlépe zdarma a v rozumné rovnováze mezi HTML kódováním a pohodlným psaním. Našel jsem kousek, ve kterém teď také píšu tenhle příspěvek : WB Editor. Vypadá a taky funguje hezky. Podrobnosti naleznete na stránkách projektu, co mě ale zaujalo :

    • jednoduchost, účelnost, funkčnost
    • .NET Framework implementace
    • možnost pracovat jako plug-in RSS nástrojů, např. v: SharpReader , což je podobně jako WB Editor .NET implementace

  • Service Pack 2 pro Windows XP

    Po kratších či delších odkladech je na světě SP2 pro Windows XP. Je k dispozici na MSDN Download pro předplatitele, ale prozatím to vypadá na přetížené servery. Další odkazy na download jsem nalezl na CDR.cz (CDR.cz - Windows XP Service Pack 2 je hotov, výčet chyb a oprav obsažených v balíku, odkaz na download mimo MS) a Neowin.net (Neowin.net - Download Windows XP SP2, MD5 checksum originální edice, nástroj pro kontrolu MD5 a odkazy pro download).

    Hezký den.

  • První dojmy z MS SQL Serveru 2005

    Nejprve celkový dojem. I když jde o Beta 2, celý software vypadá stabilně a velmi použitelně. Speciélně konzoli Microsoft SQL Server Management Studio si asi oblíbí každý, komu přijde Query Analyzer SQL Serveru 2000 jako lehce zastaralý.

    Nová verze vývojového prostředí je alespoň pro mne splněním mnoha přání vyvojářských drobností. Když jsem to nainstaloval a byl v pokušení v tom ihned pracovat, napadalo mě slovo PERFEKTNÍ. Co se mi tedy líbilo :

    • registrace serverů - možnost nastavit formu a protokol spojení, kryptování, možnost registrovat jeden server pod více uživatelskými účty, možnost registraci nebo celou skupinu exportovat a pak importovat, relativní promyšlenost konzole: např. před výběrem databáze na serveru, který není doposud připojen se vás prostředí zeptá, zdali to může provést apod. ; možnost připojit SQL Server do Object Exploreru nebo jen pro nový Query
    • object explorer - navigace napříč SQL serverem a všemi jeho objekty, možnost filtrování podle jména, data, poměrně šikovné skrývání systémových částí SQL, nové podpoložky: např. tabulka: klíče, konstanty, trigry, indexy, statistiky
    • editace tabulky - nový a přehlednější editor SQL struktur tabulek, design velmi podobný VS.NET, krásné možnosti pro editování relací přímo z editace tabulky a formy třídění pro každý sloupec
    • editor SP - definice hlavičky jako řízená tabulka (nikoli jako součást kódu jako dosud) - jméno proměnné, typ (vstupní, výstupní), délka, default hodnota, WAW !!!, možnost volby SP kryptovat, možnost editovat SP v režimu fullscreen

    Co se mi nelíbilo :

    • kolize s .NET Framework 2.0 beta - jako součásti Express edicí, předpokládám bude opraveno, prozatím pomůže odinstalace Express verzí + .NET Frameworku dodávaného jako součást, předpokládám .NET Fram. s SQL Serverem 2005 beta2 je novější

    Toliko k prvním dojmům. Na závěr jen doporučení: raději to nezkoušejte je to prima, ale návykové :)
    Hezký den.

    Galerie obrázků (blog: Martin Šigut, galerie: SQL Server 2005 beta 2)

  • NUnitASP testování

    Při nasazování a spouštění .NET vyhledávání na Atlase (zde) jsme vytvářeli testy a principy, jak testovat něco, co se chová jako WEB aplikace. Prvním řešením byla kontrola zejména datových Load/Save částí (otevření dat ze zdrojů, kontrola, zdali jsou úplná atd.). Řešení ale nekontroluje všechny toky v aplikaci. Na cíl nás navedla jednoduchá chyba a s ní řešený problém.

    Nezobrazování iDOT kódu v patě stránky při některých specifických stavech.

    Použil jsem NUnitASP a možnost "podívat se" na výsledný HTML kód generované stránky. Funkce pro NUnit testování sestaví "ručně" kód iDOTu, který má na výsledné stránce nalézt a obsah stránky posléze kontroluje na obsažení tohoto kódu.

    Jednoduché, funkční a elegantní a hlavně to Kontroluje :)

    /// <summary>
    /// kontrola IDOT kodu na strankach vyhledavani
    /// </summary>
    [Test]
    public void TestIdot()
    {
     
        // pevne nastaveni testovaneho IDOT kodu
        const string idotForm = 
            "http://dot.priklad.ilustracni.idot.cz/?neco=nastaveni1&neco2={0}";
        // nastaveni testu
        string[] tests = new string[8] 
            { "1", "?q=test", "5", "?t=fm&q=test", "3", "?t=fx&q=test", "4", "?t=im&q=test" };
     
        for( int x = 0; x < tests.Length; x = x + 2 )
        {
            // naviguj na stranku
            string url = "http://url.vyhledavani.neco.cz/default.aspx" + tests[ x + 1 ];
            Browser.GetPage( url );
     
            // sestaveni hledaneho vyrazu, vyhledavani
            string pat = string.Format( idotForm, tests[ x ] );
            bool ok = ( Browser.CurrentPageText.IndexOf( pat ) >= 0 );
     
            // test, je text iDOTu na strance ?
            Assertion.AssertEquals( string.Format( "IDOT url: {1}, code: {0}", pat, url ), true, ok );
            // debug
            //Console.WriteLine( Browser.CurrentPageText );
        }
    }


  • Debug Console v aplikaci

    Taky Vás občas přepadne nejistý pocit co ta aplikace dělá, když děco dělá ?

    Řešením jsou přípazy Trace.WriteLine, Debug.WriteLine. Hezké nadstavba nad tyto formule a výpis hlášení přímo v aplikaci je k dispozici na: CodeProject zde.

    Odzkoušel jsem a můžu doporučit.

  • Mooc prima SQL editor

    Asi nejsem sám, koho MS Query Analyzer právě dvakrát nevyhovuje, vyzkoušel jsem : SQL Buddy, z článku od Michala (zde) je opravdu SUPER, doporučuji.

    Na IntelliSence (IS) je potřeba si trošku zvyknout, ale stojí to za to. http://sqlbuddy.sourceforge.net/

    Pozn. V objektech IS je pohybuje nejen šipkama nahoru, dolů, ale taky vlevo, vpravo, skrývá se pod tím sada sloupců tabulky a další. Alespoň za vyzkoušení to rozhodně stojí.

  • .NET WebRequest versus vlastní implementace

    Řešení komunikace HTTP byl další oříšek, který jsme rozlouskávali pro projekt nového vyhledávání na Atlas.cz. Na výběr a pro testování jsme postavili vedle sebe 3 možnosti komunikace s HTTP:

    • .NET WebRequest
    • vlastní implementace HTTP komunikace, postavená na TcpClient
    • URL (na HTTP modul dále navazuje XmlReader, jedna z možností jeho použití je přímé zadání URL)

    WebRequest jsme vylepšili o nastavení :

    // pocet limitu spoju TCPIP (zaslal: Michal Bláha)
    ServicePointManager.DefaultConnectionLimit = 10;

    S vlastní implementací trošku hořela půda pod nohama, bylo potřeba vyřešit některé komplikace.
    Následující výčet je "zpovědnicí utrpení" a překážek :

    • kodování zaslaných stránek, WebRequest dělá vždy docela OK, tady je to na Vás
    • komplikace se sestavením hlavičky HTTP (zejména asi v tomto případě, protejší strana Apache, Linux)
    • nutnost "odseknout" hlavičku HTTP od obsahu, tzn. že není možné použít přímé čtení toku - Stream a cele to jednorázově prohnat přes XmlReader, používám StringBuilder, uřezání hlavičky a pak čtení XML proti výslednému řetězci (asi by ještě šlo lépe udělat ... :) )

    Výsledek rychlostních testů

    Testy byly prováděný proti jednoduché .aspx stránce, kde se OnPageLoad 2x dotázala na cílovou URL, četla XML a vypsala počet nalezených položek v každém čtení. Metodika není zajímavá z hlediska výkonu, ale celkového porovnání, jak na tom ta, která implementace je :

    • .NET Socket - WebRequest : 131 pages/s, celkem za 1 minutu: 8408
    • vlastní implementace : 108pages/s, celkem za 1 minutu: 7400
    • URL - .NET XmlReader : 123 pages/s, celkem za 1 minutu: 8027

    Prostředí : Windows XP Pro, PIV 2.8 GHz, 1 GB RAM, Web server z XP Pro, 2 vlákna proti ASP.NET aplikaci

    Vyhrál tedy .NET a jeho implementace, uvidíme, jak si poradí při testování na IIS a Windows Serveru a pak při extrémní zátěži v reálném provozu.

  • XML čteno v DOM versus XmlReader

    Pro projekt Hledání na Atlase testujeme různé přístupy pro čtení XML v .NET. Rozhodujícím kritériem je přitom rychlost čtení. Obvykle se jedná o relativně malé XML soubory, ve velkém počtu. Následující výsledky jsou souhrnem testů čtení XML pomocí XmlDocument (+ XPath dotazy) a XmlTextReader, obě čteno jako Stream.

    Cyklus 1000x čten XML soubor, měřena celková rychlost.

    DOM : 6828 ms. ; XmlReader : 5984 ms.

    XmlReader vyšel jako vítěz, problémem je u něj o něco složitější implementace a přehlednost kódu pro čtení, ale možná je to jen síla zvyku.

Powered by Community Server (Personal Edition), by Telligent Systems
Vyvojar.cz na prodej!