Vývojářský blog Tomáše Hercega

  Poslední články
  Období

RSS Feed RSS Feed

.NET Tips   2D   3D   Aplikace   ASP.NET   C#   C++   HTML+CSS   Internet   Javascript   Office   Silverlight   SQL   VB.NET   VB6   VbNet.cz   Vista   VS   Život, vesmír a vůbec   Všechny články

Nevolejte new DbEntities() na tisíci místech

Před pár dny se kdosi na ASP.NET fóru ptal, jak testovat kód, který používá Entity Framework. Tazatel psal webovou aplikaci, connection string do databáze měl ve web.configu, a kdekoliv chtěl pracovat s databází, měl tenhle kus kódu:

 using (var dc = new DbEntities())
{

}

Potíž je v tom new DbEntities. Pokud se bude vyskytovat v projektu na 1000 místech, je to nepříjemné. Kdykoliv totiž budeme chtít po inicializaci objektu něco nastavit, máme problém – budeme to muset měnit na 1000 místech.

Jak tohle souvisí s testováním? Tazatel měl několik databází s předpřipravenými daty, nad kterými chtěl testovaný kód spouštět. Connection string k databázi se, pokud není v konstruktoru DbEntities zadán, bere z konfiguračního souboru. Pokud tedy testujete proti jedné databázi, řešením by bylo do testovacího projektu přidat soubor app.config a v něm v sekci connectionStrings říct, kam se má aplikace připojovat, když běží v režimu testování.

Pokud máte testovacích databází více, museli byste mít pro každou samostatný testovací projekt a samostatné app.config soubory, nebo to řešit nějakou jinou škaredou obezličkou, což není právě elegantní.

[Pokračování článku]

Datum: 29. 12. 2011 22:55
Diskuse: 0
Hodnocení: Hodnocení: 3,5/5Hodnocení: 3,5/5Hodnocení: 3,5/5Hodnocení: 3,5/5Hodnocení: 3,5/5     Zobrazeno: 449x

Kategorie: C#        

OT: 3000 km s Citroën C5

Před pár měsíci jsem psal o tom, jak si nemůžu vybrat auto. Od té doby jsem navštívil dva autosalony a poctivě jsem si sedl do každého auta, do kterého to šlo a které mě alespoň trochu zaujalo. Původně jsem měl “vybraný” Fiat Freemont, což je předělaný Dodge Journey, líbil se mi hlavně kvůli “americkému vzhledu” a velikosti. Pak jsem ale navštívil pobočku Citroënu a zakoukal se do modelu C5. A protože mi nabídli velmi dobrou cenu, objednal jsem ho.

Dlouhé čekání

Paní původně tvrdila, že to trvá 4 až 6 týdnů a že auto bude k převzetí na konci září. V okamžiku, kdy nám paní zavolala, že příští týden ho přivezou, jsem se pochopitelně už začal těšit, ale tak nějak se ukázalo, že informační systém v Citroënu jim ukazuje kraviny. Pochopitelně jsme jim nabídli, že jim napíšeme lepší. Každopádně podle něj mělo být auto již k převzetí, ale po telefonickém ověření zatím ještě nebylo ani ve výrobě. Pak mi zase volali, že ho omylem poslali do Brna a mě místo černé verze s automatem poslali nějakou červenou s manuálem. Bezva.

No nakonec ho přivezli, bylo to skoro v půlce října. První den, když jsme si ho šli prohlédnout, ještě prý neměl nahraný firmware, takže nešlo ani nastartovat, odemknout šly jen dveře u řidiče atd. Během pár dní jsem si ho odvezl, i když ještě s dočasnou značkou, než dorazí techničák.

Mimochodem vycouvat z autosalonu byl porod, vzhledem k tomu, že vjezdové dveře byly asi o 10cm širší než to auto a hned za nimi se muselo zatočit, protože tam nebylo moc místa. Ale zvládl jsem to bez úhony.

[Pokračování článku]

Datum: 27. 12. 2011 23:21
Diskuse: 3
Hodnocení: Hodnocení: 5/5Hodnocení: 5/5Hodnocení: 5/5Hodnocení: 5/5Hodnocení: 5/5     Zobrazeno: 490x

Kategorie: Život, vesmír a vůbec        

Ohlédnutí za Microsoft Festem 2011

Právě skončil perný víkend. Už od pátku jsme s Michaelem Grafnetterem, Jardou Nechanickým, Tomem Slavíčkem a Jakubem Čermákem lítali kolem organizace Microsoft Festu.

Organizace a návštěvnost

Na konferenci se letos přihlásil enormní počet lidí – bylo jich přes 600. Odhadem nakonec přišlo přes 400 lidí. Až na přednášku Honzy Pilaře, kterému ráno selhalo auto, a proto nedorazil, se vše vydařilo.

Kromě samotných přednášek fungovaly v sobotu Hands on Laby a byly nachystány různé atrakce – kiosky s XBoxy a Kinectem, stánky ze Smartmanie a Nokia s představením nových telefonů.

Hodnocení návštěvníků v anketě nás příjemně překvapilo – prakticky jediné výtky se týkaly problému s počtem míst k sezení u některých přednášek, zvláště v sobotu. Bohužel v budově MFF větší sály nejsou a v situaci, kdy jsme viděli, že se přihlásilo přes 400 lidí, jsme již nechtěli měnit místo konání.

[Pokračování článku]

Datum: 27. 11. 2011 21:22
Diskuse: 18
Hodnocení: Hodnocení: 5/5Hodnocení: 5/5Hodnocení: 5/5Hodnocení: 5/5Hodnocení: 5/5     Zobrazeno: 883x

Kategorie: Život, vesmír a vůbec        

Aktualizováno: Záznam z přednášky o WCF RIA Services

Zde jsou materiály k přednášce mé o technologii WCF RIA Services na MFF UK. Pokud jste ji nestihli, záznam byl právě zveřejněn na webu Windows User Group.

Slidy a ukázková aplikace

Videozáznam

Ukázková aplikace

[Zobrazit článek]

Datum: 24. 11. 2011 22:30
Diskuse: 0
Hodnocení: Hodnocení: 5/5Hodnocení: 5/5Hodnocení: 5/5Hodnocení: 5/5Hodnocení: 5/5     Zobrazeno: 907x

Kategorie: Internet, Silverlight        

Vyhodnocení hádanky: Odstranění více položek ze seznamu

V minulém postu jsem nastínil, že zmiňovaná implementace funkce RemoveIf má jeden problém. Tento problém se týkal výkonnosti u větších seznamů.

 using System;
using System.Collections.Generic;
using System.Linq;

namespace SmartmaniaHra
{
public static class ExtensionMethods
{
public static void RemoveIf<T>(this List<T> list, Func<T, bool> predicate)
{
for (int i = 0; i < list.Count; i++)
if (predicate(list[i]))
list.RemoveAt(i--);
}
}
}

Na tomto místě by bylo vhodné připomenout, jak se třída List chová uvnitř. Pro ukládání prvků se uvnitř používá obyčejné pole (standardní velikost je 4, pokud v konstruktoru toho seznamu neřeknete jinak).

Seznam si pamatuje, kolik prvků už má obsazených, a v případě, že se vnitřní pole zaplní, vytvoří se nové pole, které je dvakrát větší, a prvky z původního pole se překopírují do toho nového. Staré pole se pak zahodí a Garbage Collector se o něj časem postará.

V případě, že nepřidáváte metodou Add, která přidává vždy na konec, ale metodou Insert, kde si můžete říci, kam prvek chcete umístit, musí se část prvků za cílovým místem posunout. Seznam totiž zachovává pořadí prvků. Pokud byste tedy přidávali na začátek seznamu, budou se vždy muset odsunout všechny prvky o 1 doprava, aby se na začátku vytvořilo volné místo.

[Pokračování článku]

Datum: 3. 11. 2011 15:06
Diskuse: 3
Hodnocení: Hodnocení: 5/5Hodnocení: 5/5Hodnocení: 5/5Hodnocení: 5/5Hodnocení: 5/5     Zobrazeno: 578x

Kategorie: C#        

 Strana 1 z 45 (článků: 225) 123456Další »»» 
 

VBNET.CZ | © 2007 Tomáš Herceg, Tomáš Jecha | Kopírování a přejímání jakéhokoliv obsahu z tohoto webu je bez písemného svolení autorů zakázáno.