Jozef Izso

Microsoft CRM 4

18. April 2010

Skúšam si Microsoft CRM 4 pre svoju osobnú potrebu a aj pre školský projekt a samotná implementácia CRM nie je komplikovaná a šlo to aj bez implementačnej príručky. Beží to na Windows Serveri 2008 R2 so SQL Serverom 2008, zatiaľ bez podpory e-mailov a CRM mám v slovenskej lokalizácii. Základná testovacia prevádzka sa dá rozchodiť v pohode, ak dodržíte túto postupnosť:

  1. Základom je Windows Server 2008 R2 Standard, stačí bežná inštalácia a vytvorenie domény – inak CRM inštalácia vyhodí hnusnú chybu.
  2. Treba povoliť .NET Framework 3.5.1 feature, nainštalovať Web Server rolu s podporou ASP.NET a samozrejme zvoliť aj IIS 6 Management Compatibility nástroje.
  3. CRM 4 ešte vyžaduje mať nainštalovanú Indexing Services, takže z role File Services treba nainštalovať Windows Server 2003 Compatibility nástroje. Inak bude CRM inštalátoru úplne pri konci vadiť, že služba cisvc nie je nainštalovaná.
  4. Nasleduje SQL Server 2008, treba nainštalovať databázový engine a Reporting Services. Pre každú službu je vhodné vytvoriť samostatné konto v doméne. Po nainštalovaní treba aplikovať SP1, aby bol SQL Server kompatibilný s R2 verziou Windowsov. Reporting Services stačí nastaviť s predvolenými hodnotami.
  5. V tejto fáze už nie je problém nainštalovať CRM 4 na predvolený IIS Web Site, pri nastavovaní URL pre Reporting Service si treba dať pozor a použiť URL pre Reporting Service, nie pre Reporting Manager. Pri otázke na adresu e-mailového serveru som vynechal jeho nastavenie, pretože potom sa CRM tvárilo, že nevie nájsť Exchange server. V testovacej prevádzke sa dá zaobísť aj bez podpory e-mailov.
  6. Slovenský jazykový balíček pre CRM nájdete v Microsoft Download centre: Jazykový balík k aplikácii Microsoft Dynamics CRM 4.0
  7. CRM sa samo neaktualizuje a je potrebné zohnať si Update Rollup 10, v prípade použitia Windows Serveru 2008 R2 samozrejme treba použiť aktualizácie určené pre amd64 architektúru. Aktualizácie treba nainštalovať v českej aj slovenskej verzii.
  8. Správca CRM musí v časti Nastavení > Správa > Jazyky povoliť slovenský jazykový balíček, čo bude trvať dlhšiu dobu – SQL Server po tejto akcii začne pekne vyťažovať procesor.
  9. Používatelia si môžu pomocou odkazu Nástroje na hlavnej lište zobraziť Možnosti a tam si na karte Jazyky zmeniť jazykovú mutáciu.

A už sa stačí len zabávať s CRM a zlepšovať si vzťahy so zákazníkmi :)

Nová éra vývojových nástrojov

14. April 2010

Dočkali sme sa a pre mňa celkom znenazdajky sa objavilo Visual Studio 2010 už v pondelok. Launch event počas troch dní uvádza Visual Studio 2010, nástroje pre vývoj v SharePointe, nový Silverlight 4 a vývoj pre Windows Phone. Celkom fasa veci, ak naozaj tie znalosti, ktoré mám z ASP.NET WebForms a zo Silverlightu viem bez problémov použiť v SharePointe a v Silverlighte bežiacom na Win Phone.

Hneď pri uvedení mali VS 2010 k dispozícii MSDN predplatitelia, študenti cez Dreamspark naň tiež vôbec nemuseli čakať, keďže sa tam Professional verzia objavila hneď, ostatní môžete použiť Express či 30 dňové trialky. Ešte keby im tak netrvalo sprístupniť mi MSDN Premium v rámci MSP programu…

Integrovaná podpora všemožných nových funkcií do VS je naozaj lákadlom – Office Ribbon v C++ má vlastný dizajnér, podpora pre Windows 7 Taskbar API priamo vo WPF a WPF či Silverlight dizajnéry. Malou novinkou je zmena v projektoch pre Windows a konzolové aplikácie, keď projekt je buildovaný pre x86 platformu. Spolu s .NET 4.0 to znamená podstatne zrýchlenie spustenia aplikácie. Oplatí sa po upgrade prejsť svoje staré projekty a manuálne v nich zmeniť platformu z AnyCPU na x86.

Validácia formulárov na klientovi v ASP.NET MVC

9. March 2010

Formuláre tvorené v ASP.NET MVC frameworku priamo podporujú validáciu vstupných údajov pomocou atribútov dostupných v Data Annotations API (System.ComponentModel.DataAnnotations). Tieto atribúty vedia skontrolovať, či bola zadaná nejaká hodnota, či je vyhovujúcej dĺžky alebo ju skontroluje voči regulárnemu výrazu. Obrovská výhoda tohto API je v generovaní klientských JavaScriptových pravidiel, s ktorými sa formulár zvaliduje v prehliadači bez zbytočného post backu na server.

Validácia v prehliadači vyžaduje knižnice MicrosoftAjax.js a MicrosoftMvcValidation.js. Skripty si automaticky zistia, či na stránke sú nejaké validačné pravidlá a tie použijú. Aby sme nemuseli tieto pravidlá písať ručne, ASP.NET MVC má jednoduchý spôsob, ako ich vygenerovať: HtmlHelper.EnableClientValidation(). Keď je na stránke zapnutá validácia na strane klienta, pre každý formulár sa vygenerujú pravidlá pre tie položky, pre ktoré ste zavolali funkciu HtmlHelper.ValidationMessageFor(). Nedochádza teda ku validácii celého objektu, ale iba tých vlastností, ktoré môžu byť na stránke upravované (napríklad pri editácii objektu sa nemusí dať meniť jeho názov – keďže pre takéto pole nezavoláte HtmlHelper.EditorFor() a ani HtmlHelper.ValidationMessageFor(), nebude validácia chybne hlásiť, že žiaden názov nebol vyplnený).

Trieda označená validačnými atribútmi vyzerá takto:

public class Comment
{
    [Required]
    [StringLength(40, MinimumLength = 5, ErrorMessage = "Meno musí mať 5 až 40 znakov.")]
    public string Name { get; set; }

    [Required(ErrorMessage = "Zadajte váš e-mail.")]
    [RegularExpression(@"^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$", ErrorMessage = "Zadali ste nesprávny e-mail.")]
    public string Email { get; set; }

    [Required]
    [StringLength(140, MinimumLength = 5, ErrorMessage = "Správa musí mať 5 až 140 znakov.")]
    public string Text { get; set; }
}

Kód, ktorý zobrazí formulár môže byť takýto:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MvcApplication1.Models.Comment>" %>
...
<% Html.EnableClientValidation(); %>
<% using (Html.BeginForm()) {%>

<fieldset>
    <legend>Fields</legend>

    <%= Html.EditorForModel() %>

    <p>
        <input type="submit" value="Create" />
    </p>
</fieldset>

<% } %>

Výsledné JSON pravidlá si môžete pozrieť na adrese http://codepaste.net/7jvdtv.

Oveľa bohatšiu podporu pre validovanie formulárov má jQuery Validation plugin. ASP.NET MVC nemá na serverovej strane žiadnu podporu pre túto formu validácie, avšak priamo MVC Futures obsahuje knižnicu MicrosoftMvcJQueryValidation.js ktorá validačné pravidlá MVC frameworku premení na formát podporovaný v jQuery. V tomto prípade nie je potrebné používať MicrosoftMvcValidation.js súbor.

Pri validácii v ASP.NET MVC 2 RC2 môžete naraziť na problém so StringLengthAttribute a jeho MinimumLength vlastnosťou. Pretože táto bola pridaná v .NET 4.0 a MVC podporuje aj .NET 3.5, tak sa generuje pravidlo, ktoré neobsahuje MinimumLength hodnotu. Na serveri teda dôjde k plnej validácii, na klientovi iba čiastočnej. Toto je možné obísť použitím regulérnych výrazov, ale napísaním si vlastnej StringLengthAttributeAdapter triedy. (Je otázne, či táto chyba bude odstránená v release verzii.)

Pozrite si výsledný formulár s validáciou.

PS: Regulérny výraz na e-mailovú adresu som prevzal z RegExLib.com.

Unit testing videá

6. March 2010

Na konferencii NDC2009 vystupoval aj Roy Osherove, ktorý vie celkom pekne prednášať o unit testingu. Video záznam z konferencie je dostupný na blogu MSDN UP North vo forme torrentu. Odporúčam pozrieť si jeho prezentácie, na ktorých predstavuje Test Driven Development, ukazuje hlavné best practises pri písaní unit testov a taktiež objasňuje mockovanie.

Konfigurácia web aplikácií vo VS 2010

14. February 2010

Veľmi príjemnou zmenou v ASP.NET 4 je nový web.config súbor, ktorý podstatne schudol a normálne obsahuje iba 2 potrebné direktívy. Od .NETu 2.0 web.config postupne rástol s každou novou verziou (3.0, 3.5, 3.5 SP1), pretože pôvodný machine.config z 2.0 verzie sa nemenil, ale nové funkcie a ich nastavenia pribúdali rapídne.

Všetko čo potrebujeme určiť je použitá verzia frameworku a nastaviť IIS, aby používal ASP.NET moduly.

<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>
</configuration>

Druhou novinkou je správa rôznych konfigurácii web aplikácie priamo v projekte. Doteraz bol v projekte jeden Web.config súbor, ktorý sa používal hlavne počas vývoja a pri nasadení aplikácie do produkčného prostredia bolo potrebné vytvoriť iný konfiguračný súbor a ten udržiavať samostatne. Problém bol aj s verziovaním nastavení ktoré mal každý vývojar iné. Teraz máme k dispozícii transformačné konfiguračné súbory.

Visual Studio v nových projektoch vytvorí základný Web.config súbor a k nemu dve ďalšie verzie: Web.Debug.config a Web.Release.config. Základný konfiguračný súbor sa použivá rovnako ako doteraz – nastavíte v ňom všetko potrebné pre beh webovej aplikácie. Nové Debug a Release konfiguračné súbor slúžia na popísanie zmien v ladiacej a produkčnej verzii. Ich syntax je presne taká istá ako v normálnych Web.config súboroch. Používajú však XML-Document-Transform rozšírenie, čo sú špeciálne XML atribúty, ktoré určujú, ako budú zmeny aplikované.

Transformácie XML dokumentu umožňujú pridať či odstrániť určité XML elementy a atribúty, nahradiť celý XML element úplne novým elementom, ale aj využiť XPath výrazy na definovanie podmienok, za akých má dôjsť z aplikovaniu zmi­en.

Typicky je teda v Release verzii odstránený debug="" atribút a nastavený connection string na produkčnú databázu:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
  <add name="MyDB"
    connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
    xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
  </system.web>
</configuration>

DevDays 2009

24. November 2009

Rok sa z rokom zišiel a prišli DevDays 2009 na ktorých som nemohol chýbať. Novinky o Visual Studio 2010 (ten code editor je vážne rýchly), možnosť programovať pre SharePoint 2010 priamo z VS oveľa jednoduchšie ako doteraz, Test and Lab Manager pre veľmi pekné zachytávanie testovania klientských aplikácií s možnosťou automatizácie a rôzne iné vylepšenia ako WPF editor priamo vo Visual Studio.

Tento rok boli DevDays za poplatok 20?, tomu som sa však vyhodil ako ašpirant na Microsoft Student Partner program :) Obed bol super, trochu málo miesta na jedenie pre tak veľa účastníkov (v podstate sa šlo na dva krát do jedálne) a poddimenzovaný počet záchodov (3 pisoáre + 3 kabínky pre 300 ľudí). Organizácia v pohode, pekné hostesky a ešte Xboxy s obrovskými obrazovkami na hranie, ktoré však nevyzerali že prilákali veľa ludí.

Celkovo to bola fajn akcia, mám prehľad o nových funkciách a ako si zjednoduším prácu – napr. s Call Hierarchy (ako vystrihnutým z Eclipse), s novými refaktorovacími funkciami a inými fíčurkami.

Šablóna pre HelpStudio 3 založená na MSDN Lightweight štýle

17. November 2009

Hľadal som spôsoby ako jednoducho písať a spravovať dokumentáciu k softvérovému projektu. DocBook som hneď obišiel, keďže sa mi nechcelo písať ručne XML značky. Preferujem, aby som hneď videl naformátovaný výsledok (potrebujem „Word experience“). Visual Studio 2005 SDK obsahuje HelpStudio Lite, čo je voľne dostupná verzia WYSIWYG editora dokumentácie, ktorý dokáže vygenerovať MSHelp 2.x súbory (to sú .HxS a podobné balíčky dostupné s Visual Studiom 2005 a 2008 v ktorých je dokumentácia a prezerajú sa pomocou Document Explorera).

MSDN 2010 Template for HelpStudio 3

Druhá moja požiadavka bola môžnosť upraviť si výstup tak, aby pripomínal nový MSDN Lightweight štýl – ten fialový branding MSDN knižnice. HelpStudio Lite umožňuje vytvoriť si vlastné šablóny a štýlovanie pre HTML stránky, ale aj podporné súbory pre MSHelp (index dokumentov, navigácia, atď.). Šablóny sú obyčajné HTML súbory s vloženými špeciálnymi značkami označujúci miesta, kde sa majú vložiť údaje z dokumentácie. Samotné dáta sú uložené v HelpStudio projekte – .hsp – čo je XML súbor obsahujúci celú vytvorenú dokumentáciu.

<!--DXMETADATA start type="Stylesheets" --><!--DXMETADATA end-->
<!--DXMETADATA start type="ProjectTitle" -->Project Title<!--DXMETADATA end -->

Šablóny sa v pohode dajú upravovať v editore ktorý je súčasťou HelpStudia. Ja som však využil Dreamweaver, lebo sa v ňom oveľa ľahšie čistil kód a robili štýly.

Nevýhoda Lite verzie je nutnosť výstupu iba do MSHelp 2.x verzie. HS 3 vie spraviť aj HTML výstup. Je to však také krkolomné: treba vypnúť zmazanie vygenerovaných HTML súborov. Balíčky MSHelp totiž obsahujú HTML dokumenty a HS v prvej časti kompilácie vygeneruje HTML obsah a ten v druhej fáze spojí do balíčka .HxS. S prechodom na HS 3 prišli aj trošku problémy: najprv nedokázal rozpoznať moju šablónu, pretože config.xml súbor obsahoval starú definíciu šablóny a HelpStudio ju nevie automaticky prekonvertovať. Druhý problém bol podobný. Definícia tzv. HTML Scraps je síce stále uložená v .txt súbore ale z textovej definície prešli na nový XML formát a síce šablóny fungovali s pôvodnou verziu, niektoré premenné generovali len tak rôzne XML fragmenty do HTML kódu.

Samotnú šablónu som uverejnil na Google Code hostingu ako hs3msdn2010tem­plate projekt pod BSD licenciou. Ako verziovací systém som zvolil Mercurial, pretože si myslím že umožní prípadným používateľom tejto šablóny oveľa jednoduchšie lokálne verziovanie kódu. Stačí si stiahnuť binárky a zadať tento príkaz na „naklonovanie“ zdrojákov:

hg clone https://hs3msdn2010template.googlecode.com/hg/ hs3msdn2010template

Síce HelpStudio Lite a 3 má veľkú výhodu vo vizuálnej editácie dokumentácie, slušné HTML editory, kontrolu pravopisu, rôzne podporné nástroje a jednoduché rozhranie, má aj veľa nevýhod a problémov: nezdokumentované šablóny, kompilácia je nechutne pomalá, občas padne a predávajú ho za nekresťanských cca 350? za 1 licenciu. Preto teraz študujem možnosti projektov Sandcastle a DocProject. Ale o nich nabudúce.

Visual Studio 2010 Ultimate Beta 2 v Dreamsparku

6. November 2009

Študenti majú teraz cez Dreamspark prístup k beta verzii Visual Studio 2010 Ultimate, čo je najvyššia edícia.

DreamSpark is simple; it's all about giving students Microsoft professional-level developer and designer tools at no charge so you can chase your dreams and create the next big breakthrough in technology – or just get a head start on your career.

Elektronická zdravotná karta občana a administrátori

4. November 2009

Objavil som blog nášho učiteľa Informatickej bezpečnosti a spomenul tam veľmi dôležitý prípad v používaní (budúcej) Elektronickej zdravotnej karty občana (EZKO): lekári by mali mať prístup k EZKO – čo je legitímne pokiaľ je to teda ošetrujúci lekár pacienta, avšak veľkým problémom môžu byť správcovia, ktorí budú udržiavať počítače a softvér u lekárov. Často sú informačné systémy navrhnuté tak, že správcovia majú prístup všade – aj k faktúram na ekonomickom oddelení, aj k návrhom zmlúv z marketingu a tak podobne.

Pevne verím že EZKO nebude nepodarok a prístup administrátorov do systému bude vyriešený tak, že síce budú mať možnosť riešiť problémy v ňom, ale v žiadnom prípade nebudú môcť pristupovať k údajom o pacientoch.

Netsh: An interface with this name is not registered with the router.

24. October 2009

Čítam si knižku Configuring Windows Server 2008 Network Infrastructure a učím sa používať príkaz netsh na správu sieťových rozhraní vo Windowse. Po veľmi dlhej dobe som konečne našiel príkaz ktorým sa dá zmeniť názov sieťového pripojenia. Tie štandardné názvy sú príliš dlhé: Local Area Connection a v laboch preferujem mať popisné názvy ako WAN pre pripojenie do internetu na serveri a Contoso LAN na lokálnych sieťových adaptéroch. Doteraz som to menil len cez Explorera, avšak už môžem zvýšiť svoju produktivitu vďaka netsh:

netsh>interface
netsh interface>set interface ?
...
Examples:
      set interface name="Local Area Connection" newname="Connection 1"

netsh interface>set int name="Local Area Connection" newname="Contoso LAN"
An interface with this name is not registered with the router.

netsh>

Dosť nečakaná chyba An interface with this name is not registered with the router. prekazila moje plány na zmenu názvu tak som radšej rýchlo prešiel na nastavovanie IPv6 adries, aby som sa nezdržoval v takúto neskorú hodinu.

netsh interface ipv6>set add "Local Area Connection" fd00::2/64
The requested operation requires elevation (Run as administrator).

Príčina chyby bola hneď jasná: nie som administrátor a Windows 7. Pred chvíľou som nastavoval IPv6 adresu na Windows 2008 R2 Serveri kde tento príkaz zbehol v pohode. User Account Control je po nainštalovaní Windowsu zapnuté pre všetkých administrátorov okrem štandardného konta Administrator. Je tu ale rozdiel medzi serverovým a klientským Windowsom:

  • Serverový OS: počas inštalácie nastavíte heslo a prihlasujete sa pod Administrator
  • Klientský OS: počas inštalácie zadáte názov konta a heslo a prihlasujete sa pod ním

Príkazový riadok som samozrejme zabudol spustiť s administrátor­skými právami a bohužial vo Windowse normálne nie je príkaz sudo :( Spustenie novéhopríkazového riadku s riadnymi právami umožnilo používať netsh na konfiguráciu Windowsu a zmena mena adaptéru zbehla v pohode. Škoda len, že niekto v MS si nedal tú námahu naprogramovať do všetkých častí netshu, ktoré upravujú systém, kontrolu práv.