Application pool timeout usled neaktivnosti web aplikacije

Ukoliko sajt nema posetu duže od 20 minuta, application pool će se ugasiti i osloboditi sistemske resurse. Kada sledeći zahtev dođe, IIS će automatski startovati application pool i poslati traženu starnicu. Ovo je odoličan način da se čuvaju resursi, ali to takođe znači da prvi zahtev, onaj koji dovodi do startovanja aplikacije, je vrlo spor. Spor je zato što proces mora da se startuje, učita sve potrebne biblioteke, izvrši Application_Start metodu i na kraju procesira zahtev. U zavisnosti od veličine i složenosti aplikacije, ovo može da potraje od nekoliko sekundi do više od pola minuta. ...

2012-07-17 · 2 min · Ivan Franjic

GZip i shared hosting

Upotreba kompresije je svakako jedna od tehnika optimizacije web aplikacija. Ukoliko nemamo kontrolu nad IIS konfiguracijom, ili nemamo dovoljno prava, kao npr. u slučaju shared hosting rešenja, možemo uključiti GZip kompresiju kroz web.config same web aplikacije. Sve što je potrebno jeste dodati ovaj node u web.config fajl i to će uključiti GZip kompresiju za datu web aplikaciju. <system.webServer> <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files"> <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/> <dynamicTypes> <add mimeType="text/*" enabled="true"/> <add mimeType="application/javascript" enabled="true"/> <add mimeType="*/*" enabled="false"/> </dynamicTypes> <staticTypes> <add mimeType="text/*" enabled="true"/> <add mimeType="application/javascript" enabled="true"/> <add mimeType="*/*" enabled="false"/> </staticTypes> </httpCompression> <urlCompression doStaticCompression="true" doDynamicCompression="true"/> </system.webServer> Obratite pažnju da je potrebno definisati mime tipove za koje će biti omogućena, odnosno isključena kompresija. ...

2012-05-30 · 1 min · Ivan Franjic

Selenium 2 WebDriver injection

Selenium 2 WebDriver ima podršku za nekoliko browser-a: FireFox 3.6 - 10 Internet Explorer 7 - 9 Opera 8 - 9 Chrome itd. Kako svi drajver implementiraju IWebDriver interfejs, prirodno je da se testovi pišu korišćenjem ovog interfejsa a ne konkretnog drajvera. Na taj način testovi će raditi sa bilo kojim internet pretraživačem. Međutim, tu se nameće problem kako instancirati konkretan drajver. Podešavanje Unity framework-a Konfigurisanje DI kontejnera, odnosno registrovanje tipova možemo definisati u baznoj test klasi. Unutar bazne test klase iskoristićemo ClassInitailize metodu za registrovanje tipova: ...

2012-05-25 · 2 min · Ivan Franjic

Selenium Dynamic Page Object

O Page Object klasama sam pisao ranije u postu Page Object Pattern, ovaj post ima za cilj da prikaže kako se može napraviti dinamička Page Object klasa. Zahvaljujući novinama koje je .Net 4.0 doneo sa sobom, pre svega dinamički tip, moguće je jednostavan način implementirati dinamički Page Object. Dynamic Page Object Sve što treba jeste da naša Page Object klasa nasledi DynamicObject i da napišemo override metode TryGetMember: public class DynamicPageObject : DynamicObject { private readonly IWebDriver driver; public DynamicPageObject(IWebDriver driver) { this.driver = driver; } public override bool TryGetMember(GetMemberBinder binder, out object result) { try { result = driver.FindElement(By.Id(binder.Name)); return true; } catch (NoSuchElementException) { result = null; return false; } } } Ograničenje ove Page Object klase je to što se za nalaženje elemenata koristi vrednost id atributa. Kako se u praksi najčešće koristi id atribut za nalaženje elemenata, ovo ograničenje retko kad predstavlja problem. Ovakvom implementacijom gubimo IntelliSense podršku, ali zato možemo jednu instancu Page Object klase iskorititi za sve stranice u aplikaciji. ...

2012-04-11 · 2 min · Ivan Franjic

Baseless merge

Cilj ovog članka jeste da objasni šta je baseless merge i kako sprovesti takav merge. Razlog zašto pišem baš o ovome proizliazi i toga da sam više puta bio u situaciji da mi se developeri, pa čak i oni sa više iskustva, obraćaju sa istim problemom: kako izvršiti spajanje grana koje nisu u direktnoj (roditelj-dete) vezi. Šta je zapravo baseless merge? Baseless merge je proces spajanja (merging) dva fajla (ili celih foldera) koji se nalaze na granama koje nisu u direktnoj vezi. ...

2012-03-12 · 2 min · Ivan Franjic