čtvrtek 24. září 2015

CodeReview - není k ničemu

Když dělají dva totéž, nikdy to není totéž.
Překvapivě i když jste to vy sami jen o nějaký den, týde či měsíc starší.

Tím se ukazuje důležitost toho, aby po Vás váš kód někdo prošel, zaťukal si na čelo a řek "Můžeš mi prosím tě vysvětlit rozdíl mezi těmito dvěma propertama?" Pokud nemáte kolegu, který by to pro Vás udělal, tak hold před každým commitem musíte otevřít každý upravený soubor a podívat se co jste změnili a jestli o řádek vedle není metoda, kterou by jste mohli refaktorovat.


public bool IsPossibleToLogin
{
 get
 {
  return this.BaseAddress != null
  && !string.IsNullOrEmpty(this.BaseAddress.ToString())
  && !string.IsNullOrEmpty(this.UserName) 
  && !string.IsNullOrEmpty(this.Password);
 }
}

public bool IsSetLogin
{
 get
 {
  return !string.IsNullOrEmpty(this.UserName)
  && !string.IsNullOrEmpty(this.Password)
  && !string.IsNullOrEmpty(this.BaseAddress.ToString());
 }
}


První krok refaktoringu
Nahradit výpočet v druhé proprty výpočtem v první, protože je robustnější a kontroluje i jestli je vyplněna adresa. Označení property jako Obsolet dáte kolegů nebo partnerům kteří vaši knihovnu používají najevo, že plánujete tuto property odstranit, čím ji mají nahradit a kdy ji odstaníte.

public bool IsPossibleToLogin
{
 get
 {
  return this.BaseAddress != null
  && !string.IsNullOrEmpty(this.BaseAddress.ToString())
  && !string.IsNullOrEmpty(this.UserName) 
  && !string.IsNullOrEmpty(this.Password);
 }
}

[Obsolete("Duplicitní property. Použíjte property IsPossibleToLogin. Ve verzi 1.4.5 bude odstraněna.")]
public bool IsSetLogin
{
 get
 {
  return this.IsPossibleToLogin;
 }
}

Druhý krok refaktoringu
Odstraníme reference na obsolet propertu, které se nám po buildu zobrazí v [Error listu].

Třetí krok refaktoringu
Odstraníme obsoleteproperty.

středa 16. září 2015

Ftp vs. WebDeploy

Způsobů jak dostat hotový projekt na produkční server je několi. V tomto blogpostu porovnám jaký je rozdíl mezí FTP a WebDeployem.

FTP
Pro konfiguraci tohoto způsobu potřebujete:

  • Adresu ftp serveru
  • Uživatelské jméno
  • Heslo
  • Cestu k webRoot adresáři
  • URL adresu nasazeného projektu pro otevření prohlížeče po nasazení

Jakmile toto vše zadáte do průvodce Publish profilu, máte ještě možnost nastavit že se všechny soubory mají nejdříve smazat a potom zkopírovat nové verze. To Vám o něco prodlouří dobu nasazení, protože mazání spousty malých souborů je jen o něco rychlejší než jejich nahrání zpšt na server.

WebDeploy 
Pro konfiguraci webDeploye potřebujeme podobné údaje s tím rozdílem, že namísto webroot adresáře potřebujeme znát site name což je název stránky v IIS
Z buildovaný projekt je pak zabalen do ZIP balíčku s manifestem ve kterém je uvedeno jak se má balíček nasadit na IIS. Pomocí služby WebDeploy kterou jenutné na IIS nainstalovat se balíček nakopíruje na server kde se rozbalí do požadovaného adresáře. Což je asi "trilionkrát" rychlejší než používání mazání a kopírování přes FTP.

úterý 8. září 2015

Deploy na IIS 6.1 MVC 5 .NET4.0

Do souboru Web.Config je potřeba přidat:
<modules runAllManagedModulesForAllRequests="true">

Po dvou hodinách googlení a nastavování se to rozjelo

Klíčový řádek je:
c:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis -ir

Pak je ještě potřeba nastavit v MimeType příponu pro *.svg
image/svg+xml


<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" xdt:Transform="SetAttributes"/>
    <staticContent>
      <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
    </staticContent>
  </system.webServer> 

Zdroj:
http://stackoverflow.com/questions/21623654/issue-deploying-asp-net-mvc-5-to-iis-server