Vyberám zaujímavú časť o NoSQL databázach z článku Stack Overflow
Architecture.
The biggest problem of all is that transactions can not span arbitrary
boundaries. There are no ACID guarantees beyond a single record or small entity
group. Once you wrap your head around what this means for the programmer
it's not a pleasant prospect at all. References must be manually maintained.
Relationships must be manually maintained. There are no cascading deletes that
act correctly during a failure. Every copy of denormalized data must be manually
tracked and updated taking into account the possibility of partial failures and
externally visible inconsistency.
All this functionality must be written manually by you in your code. While
flexibility to write your own code is great in an OLAP/map-reduce situation,
declarative approaches still cover a lot of ground and make for much less
brittle code.
What you gain is the ability to write huge quantities of data. What you lose
is complacency. The programmer must be very aware at all times that they are
dealing with a system where it costs a lot to perform distribute operations and
failure can occur at anytime.
August 8th,2010
Software |
No Comments
Kniha Rework má zaujímavú
kapitolu o Zabudnutí na formálne vzdelanie a väčšom spoľahnutí sa na
ozajstnú prax. Na príklade ukazujú, aké zlé návyky môže človek dostať
v škole:
- The longer a document is, the more it matters.
- Stiff, formal tone is better then being conversational.
- Using big word is impressive.
- You need to write a certain number of words or pages to make a points.
- The format matters as much (or more) than the content of what
you write.
To mi pripomenulo projekt na predmet Informačný systém podniku, ktorý
nás učí Ing.
Michal Grell, PhD., a kde je podstatná forma, nie obsah. Bohužial, je to
zase jeden z tých „expertov“ z Ekonomickej univerzity… 
June 8th,2010
Osobné |
2 Comments
Kamoš mal problém s Hamachi na Windows 7 – po nainštalovaní
nefungovala Hamachi sieť a Hamachi zobrazovalo chybu „network adapter
error“. Najprv som sa pokúšal zistiť, či je správne nastavený firewall a
či Hamachi nevyžaduje administrátorské práva.
Za normálnych okolností Hamachi nainštaluje do systému sieťový
adaptér, jednu Windows službu spúšťanú s Local System právami a GUI
klienta, ktorý beží s práva bežného používateľa a využíva
nainštalovanú službu. Sieťový adaptér je nastavený tak, aby poskytoval
routovanie na sieť 5.0.0.1/8. Zistili sme, že sieťový adaptér nebol
nainštalovaný a teda Hamachi malo problémy so správnym nainštalovaním
siete. Hamachi inštaluje sieťový adaptér iba počas inštalácie – nie
pri reinštalovaní – a bolo potrebné ho teda najprv odinštalovať a znovu
nainštalovať. Tento postup však u kamoša nepomohol.
Inštalačný log
Najprv som sa teda pokúsil získať log z inštalácie Hamachi, či tam nie
je nič podozrivé.
msiexec /log hamachi.log /i hamachi.msi
...
Action 18:30:17: InstallDriver. Installing network driver
Action 18:30:18: InstallServices. Installing new services
...
Žiadna chyba, tak som sa rozhodol vyskúšať nainštalovať ovládač pre
Hamachi manuálne.
Manuálna inštalácia ovládača
Cez Device Manager kamoš dal manuálne nainštalovať
sieťový adaptér s Hamachi ovládačom (%PROGRAMFILE%\LogMeIn
Hamachi\hamachi.inf). Táto inštalácia však skončila veľmi divnou
chybou: 0×5AA ERROR_NO_SYSTEM_RESOURCES – Insufficient system
resources exist to complete the requested service. Na prvý pohľad sa
zdá, že počítač nemá dostatok zdrojov a v tomto prípade človek najprv
zisťuje, či má dosť voľného miesta na disku, alebo voľnej operačnej
pamäte. Problém však bol inde a skúsili sme zapnúť
v msconfig.exe diagnostické spustenie systému s iba
základnými službami, aby sme vylúčili problém s nejakou inou aplikáciou.
Tak isto bezúspešne a s rovnakým výsledkom.
Vďaka Process Monitoru som zistil, že inštalácia ovládačov vo Windowse
je podrobne zaznamenávaná do súboru
%WINDIR%\inf\setupapi.dev.log. Vyžiadal som si ho teda a
nasledovala podrobná analýza a porovnanie jeho obsahu voči systému, kde sa
Hamachi ovládač bezproblémov nainštaloval.
. dvi: {DIF_INSTALLDEVICE} 23:43:46.036
dvi: CoInstaller 1: Enter 23:43:46.036
cci: [NdisCoinst: Enter NcipHandleInstallPreProcessing]
cci: NdisCoinst: NetCfgInstanceId does not exist
cci: NdisCoinst: Guid of the adapter is {DEFD4A42-3C78-4F11-AAC6-D798EF311363}
inf: Opened PNF: 'C:\Windows\INF\oem2.inf' ([strings])
cci: NdisCoinst: IfType from registry is 1
cci: NdisCoinst: IfType 1, Characteristics 0x1, IsIrdaDevice 0, PhysicalMediaType -1, MediaType -1, IsBridge 0, FoundGuidInDownlevel 0, EnableDhcp 2
cci: NdisCoinst: Connection name is Local Area Connection 35
cci: NdisCoinst: NetLuidIndex does not exist
!!! cci: NdisCoinst: NcipAllocateNetLuidIndex failed with error 0x5aa
cci: [NdisCoinst: Exit NcipHandleInstallPreProcessing]
!!! dvi: CoInstaller 1: failed(0x000005aa)!
!!! dvi: Error 1450: Insufficient system resources exist to complete the requested service.
dvi: {DIF_INSTALLDEVICE - exit(0x000005aa)} 23:43:46.504
Z logu bolo vidieť, že inštalátor pri vytváraní nového sieťového
adaptéru volá funkciu NcipAllocateNetLuidIndex ktorá skončí
chybou. Získať informácie o tejto funkcii bolo jednoduché a zložité
zároveň. Našťastie o nej existuje záznam na Internete, ale použiteľné
informácie sú skryté vo veľkej kope textu zmeišaného so záznamami log
súboru na fóre OSR Online.
Jeffrey Tippet z Microsoftu tam opisuje ako funkcia
NcipAllocateNetLuidIndex funguje.
I don't have a good guess as to what's gone wrong, but here's some
background info that might help you figure it out. (This info is an
implementation detail, subject to change, but may come in handy for
troubleshooting):
NDIS must allocate a (locally) unique number for each network interface, the
NET_LUID. The NET_LUID consists of the ifType, paired with a unique ID number.
To generate that unique ID, we keep track of the IDs that have already been
assigned in
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NDIS\IfTypes\[ifType]
! IfUsedNetLuidIndices (REG_BINARY) for each ifType. For example, look in
\6 if your NIC is Ethernet (ifType=3D=6).
In there, there is IfUsedNetLuidIndices, which is (IIRC) a bitmap of the
unique IDs that have been assigned to other network interfaces. Make sure this
value is present and not damaged (e.g., a huge number of 0×FF's). Typically,
its value will be something like 0×FF 0×01, if you have 9 NICs. Note that you
can't just whack this value and replace it with something else, since then NDIS
will incorrectly assign the same NET_LUID to two interfaces, and all sorts of
things will break when that happens.
NcipAllocateNetLuidIndex teda pre daný typ sieťového
adaptéru (v prípade Hamachi to je ifType=1) potrebuje získať LUID –
Local Unique Identifier, ktorého aktuálna hodnota sa nachádza v uvedenom
kľúči v Registroch. Problém môže nastať, keď je hodnota
IfUsedNetLuidIndices nastavená na veľmi vysoké číslo –
systém potom nemôže vytvoriť ďalšie LUID a skončí chybou 0x5AA
ERROR_NO_SYSTEM_RESOURCES.
Nasledovala teda analýza tohto kľúča a dopracovanie sa (našťastie a
konečne) k zdroju problému:
reg query HKLM\SYSTEM\CurrentControlSet\Services\NDIS\IfTypes\1 /v IfUsedNetLuidIndices
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NDIS\IfTypes\1
IfUsedNetLuidIndices REG_BINARY FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Hodnota IfUsedNetLuidIndices sa z neznámich príčin
poškodila a keďže kamoš nemal v počítači nejaké špeciálne sieťové
adaptéry (ifType = 1 = IF_TYPE_OTHER) tak bolo bezpečné nastaviť
IfUsedNetLuidIndices na 0×00. Potom však treba
reštartovať počítač. Windows si totiž načítajú pomocné LUID
čísla pri štarte systému a nenačítavajú ich počas inštalácie
zariadenia (overené pomocou Process Monitoru :) ). Nasledovalo už len
nainštalovanie Hamachi – tento raz úspešne a bez problémov.
Po približne 24 hodinách som úspešne našiel príčinu problému,
opravil chybu a získal cenné skúsenosti. A aj v tomto prípade nebolo
potrebné na odstránenie problému načisto inštalovať Windows – k čomu
by sa asi mnohí iní uchýlili. Samotné riešenie problému však trvalo iba
pár hodín, natiahlo sa však kvôli poctivej dochádzke do školy :)
June 6th,2010
IT |
1 Comment
Bývalému kolegovi, team leadrovi a spoluobyvateľovi nášho kanclíka –
Romanovi – som posielal link
s webcastom Hanselmana a Haacka kde ukazujú niekoľko spôsobov ako zneužiť
phishing, AJAX API a tak podobne. Stihol ho blognúť
skôr ako ja, ale uverejním ho tiež:
The
HaaHa Show – Hacking with Phil and Scott (funguje to len v Internet
Exploreri)
Učitelia majú na svojich stránkach väčšinou len informácie o sebe,
nejaké tie publikácie čo napísali a prax. Kvality učiteľa sa však
z tejto stránky študenti nedozvedia.
Tento semester sme mali tú česť mať na cvikách učiteľa Ing. Jaroslava
Kultána. V skratke by sa dalo poradiť ostatným študentom: dajte si na neho
bacha. Robí dosť zákernosti čo sa týka termínov odovzdávania zadaní –
hlavne rád nastavuje v Moodli časy na 0:00 a potom sa teší, že študenti
nemohli odovzdať zadania a následne dáva prednášky o tom, čo to znamená
odovzdať niečo do 0:00. Počas semestra som sa dozvedel, že na dekanáte
deklaroval, že máme na vypracovávanie projektov oveľa viacej času
(2 týždne) ako sme reálne mali (4 dni). Celkovo sa nakoniec situácia na
cvikách dosť vyostrovala, keďže nikto z triedy nadokázal akceptovať jeho
prístup k študentom, hlavne keď sme od súkromnej školy čakali
profesionálnejšieho učiteľa.
Cvičenia sme mali zakončiť prezentáciou projektu, ktorý sme spravili.
Posledný termín prezentovania sme dostali na stredu 12.5.2010, kam sa
niektorí študenti dostavili a zistili, že žiadne prezentovanie sa nebude
konať, keďže sa cvičiaci nikde neukázal. Ešte v ten týždeň v piatok
to malo dohru – Kultán vynadal študentom, že v utorok
12.5. nedošli na konzultácie – a nenechal si vysvetliť, že utorok
bolo 11.5. a on sám uviedol dátum ako 12.5. Proste podľa neho pochybili
študenti.
Finálne prezentovanie projektov sa konalo dnes, znovu v dusnej atmosfére.
Externisti čo došli, boli vyhodení, pretože nemali projekt vytlačený.
I keď v Moodli nebola žiadna zmienka o tom, že ho majú doniesť
vytlačený. Pekne sa tu však prejavil charakter a povaha p. Kultána – byť
arogantný, hľadať chybu v iných a stále točiť dokolečka niečo
o dodržiavaní termínov (i keď je to od veci, túto problematiku spomína
rád). A aby som nezabudol: platí iba to, čo vyhovuje jemu. (Čo bol hlavný
dôvod, prečo som presadzoval písomnú komunikáciu pred ústnou.)
Samotné odovzdávanie mi prišlo divné, keďže často sa tváril, ako by
sa to jeho netýkalo a ani ho nezaujímalo, čo hovorí dotyčný. Nejakými
poznámkami a skákaním do výkladu sa snažil upozorňovať na chyby. Ak mu
však niekto opontoval, debata skôr či neskôr končila frázou „To nie je
podstatné“ – ostatne ako mnohé iné debaty s ním. Za dosť
neprofesionálne určite považujem tvrdenie, že INT(10) v MySQL bude
strááášne veľké číslo, až také, že to bude 64bitové a 32bitový
procesor to nebude vedieť spracovať. Čo už len však dodať k tvrdeniu
pána cvičiaceho, že 210 je väčšie ako 232 a pomaly
rovnajúce sa 264? Asi len: to nie je
podstatné.
Takéto správanie sa učiteľa voči študentom na štátnej škole by asi
prešlo bez povšimnutia. Avšak bohužial aj na súkromnej škole sme si museli
prejsť cez neadekvátny prístup k študentom, kvôli ktorému mnohí z nás
investovali radšej do súkromnej školy, aby sme ho nemuseli zažívať.
Niektorí by oponovali, že nás aj niečo z tých DB naučil. Nuž ak by sme
však aspoň polovicu času namiesto riešenia podivných termínov sa učili,
tak by vedeli o DB ešte viacej. Napísal som teda takúto kritiku ako reakciu
na dosť nepodarené cvičenia tento semester, a nech táto spätná väzba
nezostane len vnútri fakulty.
May 22nd,2010
Osobné |
5 Comments
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ť:
- 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.
- 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.
- 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á.
- 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.
- 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.
- Slovenský jazykový balíček pre CRM nájdete v Microsoft Download
centre: Jazykový
balík k aplikácii Microsoft Dynamics CRM 4.0
- 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.
- 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.
- 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 :)
April 18th,2010
IT |
No Comments
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.
April 14th,2010
Osobné |
No Comments
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.
March 9th,2010
Osobné |
No Comments
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.
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 zmien.
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>
February 14th,2010
Software |
1 Comment