MsBuild - CreateProperty bug
Snažím se automatizovat provádění buildů na našem dev serveru. Pro CI používáme free verzi TeamCity.
Pro řízení buildu jsem nakonec vybral MsBuild. Zatím jsem jen na začátku a funkcionalita skriptu je dost omezená. Skripty momentálně umí provést release build, deployment a případnou kopii do cílového adresáře. Taky jsem zprovoznil twitter notifikaci o výsledku buildu.
Ještě potřebuji změnit některé hodnoty v config souboru a případně udělat backup do podadresáře pojmenovaném podle file version.
Tsunami development
Tsunami development...
Odvážím se tvrdit, že toto je další typ metodologie, která se používá k vývoji sw. Tato metodologie se jmenuje Tsunami, jelikož Waterfall byl, v kontextu, příliš slabý název.
Podstatou tsunami development metodologie, je narušení normálního vývoje okamžitým releasem. Většinou netrpělivým investorem, který položí vašemu šéfovi nůž na krk.
Takže jakožto vývojář máte 24 hodin na dodělání základních (životních) funkcí a produkt, software, je vržen na produkční server. S testováním, které proběhlo maximálně na počítači vývojáře a když dobře, tak na builder serveru, na kterém je nainstalovaný CC nabo TC.
Po jakžtakž vypadajícím realeasu, který se nějak rozběhl na produkčním serveru,dochází ke kumulaci fatálních chyb. Takže následující dva týdny opravujete chyby nebo zjišťujete, kde všude vyskakuje NotImplementedException nebo se objevují vámi nedefinované exception.
U korporátních toto chování asi nebude projevovat tak často. V případě začínajících firmiček to bude asi běžný jev a zmateně pobíhajících lidiček rvajících si vlasy bude povícero.
Do které patříte VY?
Link of the ddMMyyyy {10072009}
Excelentní článek o možnostech jak získat Id, či další skryté hodnoty z GridView v Asp.Net lze nalézt na tomto blogu.
Osobně jsem trochu tápal jak je to s využitím DataKeyName, ale teď je již vše jasné. Vřele doporučuji.
Link of the ddMMyyyy {31052009}
Dnešním odkazem je link na video z prezentace Jeremy D. Millera, tvůrce DI frameworku StructureMap. Pan Miller zde popisuje své zkušenosti s vývojem produktu a poukazuje na své chyby, kterých se dopustil v průběhu vývoje.
Prezentace je v angličtině, ale určitě stojí za to.
TortoiseSVN, AnkhSvn a 'Client too old to work with working copy' error
Pokud používáte AnkhSvn pro prodporu Subversion ve Visual Studiu a zároveň TortoiseSvn mohli jste se dostat do problému, zvláště pokud se snažíte updatovat příliš často.
Daná situace nastane, když provedete Checkout v TortoiseSvn a pak ve VS nemůžete provést v podstatě jakoukoliv operaci, jelikož se pokaždé objeví chybová hláška 'Client too old to work with working copy'.
Příčinou je rozdíl verzí podporovaných v TortoiseSvn a AnkhSvn. Momentální verze AnkhSvn podporuje Subversion verzi 1.5, kdežto novější verze TortoiseSvn podporují již verzi 1.6.
Aktuálním řešením je udělat downgrade TortoiseSvn na verzi 1.5.9, která stále podporuje Subversion verzi 1.5. Až AnkhSvn bude podporovat Subversion v1.6, tak můžete udělat upgrade i u TortoiseSvn.
A jaké jest ponaučení? Nedělat slepě upgrade, jenom proto, že je dostupný. Zvláště zbystřit, když jde o upgrade s větší důležitostí. (Major, Minor upgrade).
SEO: redirect 301 domena.cz na www.domena.cz v Asp:Net
Pokud uživatel zadá adresu bez začátečního www, tak se velmi pravděpodobně načtou žádané stránky, ale může dojít ke dvěma nežádoucím věcem. Pokud doména používá ssl certifikát, může dojít k chybě načtení certifikátu, jelikož nebude souhlasit adresa nastavená v certifikátu. A taktéž dochází k rankování adresy bez www, což je ve své podstatě nechtěné, pokud používáte doménu včetně www.
Co tedy dělat? Použít redirect 301 pro adresu bez www. Jak? Tady je ukázka použití v Aps.net.
protected void Application_BeginRequest(object sender, EventArgs e){
string authority = Request.Url.Authority;
if (authority.IndexOf("www.") != 0) {
Response.StatusCode = 301;
Response.Redirect("http://www." + authority + Request.Url.AbsolutePath, true); }
}
Vložením kódu do Global.asax docílíme požadovaného přesměrování.
Link of the ddMMyyyy {21042009}
Mým dnešním tipem je software pro analýzu zdrojového kódu. Jedná se o NDepend. Lze testovat jako trial pro komerční projekty a volně pro Open Source a soukromě s určitými omezeními.
Doporučuji zkusit nainstalovat a zjistit, jak na tom jste s kvalitou vašeho kódu. Výhodou tohoto analyzačního sw je, že vás upozorní na potenciální slabá místa v návrhu, konstrukci kódu.
Podobným nástrojem je i StyleCop od Microsoftu. Podle mě je více zaměřen na prevenci základních chyb, čímž se liší od výše zmiňovaného NDepend.
Otázka do pléna: Používáte i jiné nástroje pro analýzu vašeho kódu?
Minimální podpora SEO v Asp.Net pomocí Base tříd
Každý kdo vytváří webové stránky, aplikace se jistě dostal do stádia, kdy musel řešit optimalizaci pro SEO . Minimální podpora SEO spočívá v použití META tagů. V tomto případě Keywords a Description.
<meta name="description" content="Popis stránek s výstižným obsahem.">
<meta name="keywords" content="heslo, heslo, dalsi heslo">
Tímto je pokryta minimální implementace SEO v rámci webové aplikace a její indexace ve vyhledávačích. Samozřejmě toto je jen jedna část optimalizace SEO. V druhém kroku musíte nastavit samotné hodnoty tagu keywords a description.
V tomto příspěvku autor popisuje minimální tři kroky pro optimalizaci SEO vašich stránek. Využití DIV pro design stránek před použitím TABLE elementů. Nastavení meta tagů Keywords a Description a nastavit redirect pro zrušené stránky, pokud jsou již zaindexovány vyhledávači.
Link of the ddMMyyyy {26032009}
Kdo nebyl na Mix09 v Las Vegas, tak udělá to co já a stáhne si videa a prezentaze ze zajímavých keynotů. A aby jste to nemuseli moc hledat, tak tady to máte pěkně po hromadě. Je to z blogu Alex on ASP.Net, německy, ale intuitivně popsané.
JQuery: RadioButton GroupBox s použitím objektu Repeater
V klasickém ASP.Net je objekt RadioButtonList. Možnosti tohoto objektu jsou však omezené. Mým cílem bylo zobrazení seznamu voleb spolu se zobrazením obrázku, textu a to vše plně formátovatelné pomocí css.
Možným řešením je použití asp.net objektu Repeater, pokud ovšem nepoužíváte něco z placených balíčků. I tady to má háček, jelikož při použití Repeater a RadioButton dochází k modifikaci id jednotlivých RadioButton a tím nefunguje grupování. Tedy zaručení výběru jedné volby. Toto se dá však obejít implementací javascriptu, který lze nalézt zde a to včetně detailního popisu implementace. Ale touto cestou jsem se nevydal, zvolil jsem trochu jiné řešení.