Friday, 01 October 2004
Malá anketa o business komponentách
Již dlouhou dobu se mluví o tom, že business frameworky a komponenty se stanou standardem při vývoji aplikací, již tradičně zlevní a zjednoduší jejich tvorbu (někteří cynici si myslí, že se jedná jen o další etapu v procesu geneze nového druhu cvičené opice z programátora ;)) a budou stejně populární jako vizuální komponenty v uživatelském rozhraní. Zatím se tak nestalo, ale zajímalo by mě, o jaké komponenty byste měli zájem. Všechny komponenty by byly samozřejmě doplněny o komplexní podporu v IDE (VS.NET, Eclipse atd.), byly by dodávány s průvodci pro nejběžnější úlohy a kvalitní dokumentací - jinými slovy, šlo by o komponenty s veškerým servisem, který znáte z UI komponent.
Protože v .TEXTu neudělám anketu:(, odpovídejte prosím v komentářích.
1) Komponenta pro generování kódu vrstvy pro přístup do databáze zvládající různé způsoby mapování objektů a jejich vztahů (agregace , asociace, dědičnost...). Pozor, nejedná se o netypový mapper, jakými měly být ve VS.NET Whidbey třeba Object Spaces, ale o "inteligentní" generátor typových metod databázové vrstvy, metod pro nahrání a uložení business objektů, storovaných procedur a DDL skriptů.
2) Komponenta pro kompletní evidenci historie business objektů. Logování změn všech nebo vybraných atributů objektu, volba mezi mělkou nebo hlubokou historií objektů, zapnutí podpory historie u třídy jedním konfiguračním klíčem i po nasazení projektu, výběr mezi mnoha formáty pro ukládání historie.
3) Komponenta pro vizuální definici jakéhokoli workflow nad objekty - generování kódu pro přechody mezi stavy, vizuální definice podmínek přechodu, komunikace mezi různými stavovými automaty, validace workflow, změna průběhu workflow by byla řešena za běhu aplikace výměnou jednoho definičního souboru.
4) Jiná komponenta. Napište prosím, jakou komponentu byste potřebovali.
Díky za odpovědi.
Friday, 01 October 2004 17:10:00 (Central Europe Standard Time, UTC+01:00)
Analytické drobky | Ostatní
Thursday, 30 September 2004
Deset mých oblíbených aplikací na PDA
Na mém MDA II jsem si oblíbil hlavně tyto programy. Výčet není ani zdaleka úplný, protože aplikací používám mnohem víc, ale snad někomu z vás přijdou tyto tipy na zajímavé programy vhod.
-
Total Commander CE - Pocket PC verze souborového manažera je stejně podařená jako její starší desktopový bratranec.
-
ftxPBrowser - nadstavba nad internetovým prohlížečem Pocket IE s podporou záložek pro zobrazení více WWW stránek najednou (tabů). Více jsem o něm psal zde. Uvažuji ale, že si koupím profesionální prohlížeč NetFront, který mi kromě jiných vymožeností umožní mobilně přístupovat do internetového bankovnictví ČS.
-
vxUtil - nepostradatelná utilitka pro síťová testování (Ping, TraceRoute, DNS Audit, Port scanner...)
-
RepliGo - v desktopové verzi programu zkonvertujete například PDF, DOC, XLS, HTML dokumenty do formátu vhodného pro čtení v RepliGo čtečce na Pocket PC. RepliGo umí zobrazit dokumenty na šířku, využije pro zobrazení textu celou plochu displeje, pamatuje si stranku, kterou jsme v dokumentu naposledy prohlíželi a má další vychytávky, které z něj dělají kvalitní čtečku souborů na PDA.
-
SharpVault - jednoduchý, ale praktický program na uchovávání přístupových kódů a dalších tajných informací pod jednim heslem.
-
ICQ - K této aplikací asi není potřeba nic dodávat. PDA verze nejoblíbenějšího klienta pro instant messaging
-
Spb Pocket Plus - sada užitečných drobností od mé oblíbené firmy Spb Software House. Jednoduchý, ale i na MDA II bezproblémový správce úloh, nevtíravý a přítom stále viditelný indikator stavu baterie v horní části displeje, rozšíření Pocket IE o podporu zobrazení více WWW stránek a hlavně skvělý Plug-In do Today obrazovky složený ze záložek, které můžete přidávat, přejmenovávat a především na ně umisťujete zástupce programů a zajímavé indikátory (stav baterie, velikost obsazené/volné paměti). Příslovečnou šlehačkou na dortu je plná podpora drag&drop přemisťování zástupců.
-
Acrobat Reader - nepostradatelný program pro otevírání PDF souborů, které vám přišly třeba emailem, takže jste je nemohli na desktopu zkonvertovat do nativního formátu RepliGo.
-
BetaPlayer - náhrada za dodávaný Windows Media Player, která zvládne i plynulé přehrávání filmů, na kterých se Windows Media Player trhá.
-
Qusnetsoft NewsReader - plnohodnotný klient pro čtení zpráv z news (NNTP) serverů.
Thursday, 30 September 2004 20:58:00 (Central Europe Standard Time, UTC+01:00)
Mobilitky
Monday, 27 September 2004
Dodatek k informacím o školení v OOP a UML
Protože se na školení o OOP a UML přihlásilo tolik účastníků, že máme nyní zcela zaplněny 3 kurzy a další zájemci se stále ozývají, chci upřesnit, jak to s kurzy já a školící středisko DIGI TRADE plánujeme:
-
První kurz proběhne v dříve avizovaném termínu 3.11-5.11 2004 a s jeho účastníky by již měly být vyřízeny všechny formality.
-
Druhý kurz se pravděpodobně uskuteční 15.12-17.12 2004 a všichni zájemci budou naším školícím střediskem s dostatečným předstihem informováni.
-
Třetí kurz bude uspořádán na jaře 2005 a přesné termíny zveřejním opět na blogu.
-
Zvláštním případem jsou firmy, které projevily zájem o in-house školení nebo si chtěly zarezervovat jeden či více termínů jen pro sebe. To není možné, protože nechceme ani nebudeme ulehčovat přežití na SW trhu naší přímé konkurenci. ;) Nijak ale neomezujeme počet účastníků z jedné firmy přihlášených na školení. Tohle je oficiální stanovisko společnosti DIGI TRADE, které se nezmění.
A hlavně díky všem přihlášeným za enormní zájem ;)
Monday, 27 September 2004 20:03:00 (Central Europe Standard Time, UTC+01:00)
Kurzy UML a OOP | UML
Mílé Živě, už nás neuč programovat ani zvracet
Milé nepoučitelné Živě,
protože nás stále oblažuješ seriálem o programování ve VB.Net, jehož autorem je pravděpodobně retardovaný jedinec rozšafně rozjímající nad pravidly strukturálního programování platnými snad někdy před 20 lety, a přitom nadpis seriálu nás ubezpečuje, že se týká VB.NET, který je, což pro tebe milé Živě bude asi nečekaným překvapením, jazykem plně objektovým, dovol mi se Tě zeptat, kdo prováděl korektury posledního dílu, ve kterém je takové množství nepřesnosti a chyb. Jeho plat za tento měsíc bych být Tebou věnoval nadaci pro šíření a zakořeňování vývojářských bludů a omylů.
Dovol mi alespoň zmínit některé nesmysly, které jsem nestrávil ani po třech rychle vypitých panácích Four Roses na obnovení své rozkymácené duševní rovnováhy.
Myslíš si opravdu laškující Živě, že se začátečník musí při výkladu konstrukce If Then Else dozvědět, jaké jsou hodnoty konstant true a false, aby byl vzápětí ubezpečen, že jejich použití se nedoporučuje?
Objasní mi tvůj odborný korektor smysl této kryptické věty.
"Praktická zasada je obykle taková, že konstrukce pro ošetřování chyb by měla zahrnovat co nejmenší počet příkazů, mají-li být vyjímky zpracovány co možná konkrétně a adresně v duchu pravidla "jedna chyba na jeden blok Try - Catch". Ladění kódu v bloku Try - Catch, ve kterém dochází k několika chybám současně může být velice nepohodlné a nepřehledné."
Chce tím snad autor říci, že konstrukce Try-Catch by měla obsahovat jen jednu sekci catch? Jestliže ano, pak bych rád věděl, odkud drahé Živě nabíráš pro své seriály tyto duševní trosky, které si o programování četly naposledy v kroužku Mladých techniků otevřeném na škole pro mentálně opožděné vývojáře.
Snad byste v redakci mohli autora nějak šetrně a citlivě upozornit, aby se nerozzuřil, že již v .NET nežijeme ve světě ASCII znaků, ale že máme Unicode a doporučit mu, aby alespoň občas po očku nahlédl do MSDN a do specifikace jazyka, který vysvětluje, takže se příště zdrží všech žvástů o ASCII, řetězcích a relačních operátorech ve VB.NET.
Srovnejte seriál a dokumentaci k VB.NET.
"String. The operators return the result of comparing the two values using either a binary comparison or a text comparison. The comparison used is determined by the compilation environment and the Option Compare statement. A binary comparison determines if the numeric Unicode value of the characters, or each character in each string, is the same. A text comparison does a Unicode text comparison based on the current culture in use on the .NET Framework. When doing a string comparison, a null reference is equivalent to the string literal "". "
Občas slyším Živě, že jsi bulvárem. Nevím přesně, co znamená v IT světě bulvár a myslím, že je toto hodnocení často nepatřičné, zjednodušující a k Tobě nespravedlivé. Přesto se k této metafoře vrátím - bulvár (boulevard) se obrací alespoň na širokou, rozjívenou a frackovitou ulici, ale tímto seriálem se Živě podbízíš publiku, které neexistuje nebo bere seriál jako recesi, jíž jste se pobavili v redakci o Silvestru a potom jste ji zapomněli vyřadit z redakčního systému. Za výchovu další generace vývojářských neumětelů Ti nikdo Živě nepoděkuje. Proto Tě Žive prosím, ve svém zájmu a pro zachování svého již notně pošramoceného dobrého jména seriál ukonči a najdi si jiného autora, který nebude experimentovat s trpělivostí tvých čtenářů.
Monday, 27 September 2004 19:28:00 (Central Europe Standard Time, UTC+01:00)
Ostatní
Film Umučení Krista respektuje i transcenduje své téma
Ke shlédnutí filmu Umučení Krista jsem se dlouho odhodlával. Lákalo mě, že dle ohlasů si Mel Gibson dovolil překročit hranici, před kterou je ve filmovém ale i výtvarném umění násilí v Bibli estetizováno, upozaďováno a shrnováno pod banálně znějící větu "Kristus za nás trpěl a zemřel na kříži". Obával jsem se ale toho, že hollywoodský spektákl určený nejširšímu publiku neodolá pokušení vytlačit z filmu smysl Kristovy oběti a lascivně deskriptivním způsobem rekonstruuje jen fyzický aspekt Kristova utrpení.
Nestalo se tak. Ve filmu jsou emotivní a drastické scény utrpení Krista, kamera se někdy s okázalým zájmem vyžívá v zobrazení krutosti, ale hlavním motivem filmu zůstává pokoření Boha v lidských rukou, a krutost je vyvažována retrospektivními návraty k Ježíšovu působení před zatčením. Snad jediné, co by se dalo vytknout výběru scén milosti, které kontrastují s běsněním davu, je jejich prvoplánovitost usnadňující pochopení i člověku, který nezná Bibli. Počátek Křížové cesty lemovaný nadávajícím anonymním davem je stavěn do protikladu s dřívějším triumfálním přivítání Ježíše davem při vjezdu do Jeruzaléma. Smysl biblických metafor "cesta a příchod" ale nemůže vyčerpat tento doslovný výklad, protože Ježíš sám mluví o sobě jako o cestě a jeho příchod je chápán jako završení prefigurací ve Starém Zákoně.
Kontrast nejen mezi utrpenim a milostí je leitmotivem celého filmu. Barokní kontrast mezi světlem a tmou inspirovaný obrazy Caravaggia, kontrast mezi spokojeným a intrikujícím církevním establishmentem zosobněným farizeji a rodícím se společenstvím apoštolů, kteří se stanou "úhelnými kameny" Nového společenství křesťanů.
Vytknout by se mohlo filmu schématické zobrazení postav. Ale Bible sama podřizuje vykreslování postav i děj smyslu, který se jako všudypřítomná řeka spásy line pod nimi. Mně přijde film Umučení Krista jako zdařilé spojení dvou větví evropského vyprávění - mimetické, dějové a "realistické" zobrazování událostí ve filmu je smíšeno s s digresivními pasážemi, které mohou někomu připadat jako sadistické vyžívání se v utrpení, ale mně přišlo, že jejich záměrem bylo dostat dementními filmy otupělého diváka do stavu, kdy se stane účastníkem přímého přenosu popravy na Golgotě, která není báchorkou z dávných časů, ale i pro dnešní dobu přítomnou a věčnou obětí Krista.
Ano, film má i svá slabší místa. Je jím vymyšlené a nijak logikou tématu nezdůvodněné vyklovnutí oka jednomu lotrovi na kříži a procházení Satana mezi davem, což mi příliš připomínalo podobnou scénu ve Statečném srdci, nebo malý prostor, který byl ve filmu poskytnut tragédii Jidáše. Nadchlo mě ale, že se ve filmu mluví aramejsky.
Existují lepší zpracování Kristova utrpeni. Pro mě je jím hlavně Kazantzakisovo Posledni utrpení (kniha, film jsem neviděl), v němž je Kristus pokoušeným a osamělým člověkem, jehož utrpení na kříži je hlavně psychického rázu a který své Božství v rozporu s tradicí stvrzuje až závěrečným výkřikem "Bože můj, proč jsi mě opustil".
To ale nemění nic na tom, že Utrpení Krista je nadprůměrný film, jehož závěr propojí bez sentimentality a dekorativních církevních klišé všechny motivy filmu dohromady a navíc s využitím tradičních a ke kýči svádějících symbolů. Tmu v Kristově hrobce začne prozařovat světlo, jímž je Kristus - zmrtvýchvstalý Kristus, který se vztyčí a kamera zobrazí detail jeho ruky s otvorem po hřebu. Tak začínají dějiny spásy...
Monday, 27 September 2004 12:34:00 (Central Europe Standard Time, UTC+01:00)
Literární a jiné humanitní úlety
Sunday, 26 September 2004
Logování událostí v mediátoru
V mediátoru, kterého jsem popisoval v jednom dřívějším spotu, potřebujeme při testování logovat všechny příchozí události, které jsou předdefinovaným a bezpečným způsobem distribuovány dalším objektům. Nejméně náročnou cestou na napsání, volenou většinou vývojáři, kteří se pravděpodobně do IT rekrutují z rekvalifikovaných potomků nejzarytějších stachanovců;), je logování každé události zvláštní metodou. Po registaci nových událostí do mediátora je vždy i změněna komponenta pro logování, takže o údržbě takového kódu si můžete nechat zdát jen mrazivé sny o opětovném plíživém nahrazování kvality kvantitou.*
Na údržbu nenáročné a univerzální řešení spočívá ve vytvoření preprocesoru (viz spot o mediátoru), který je vyvolán před distribucí událostí ostatním objektům a který parametry události vypíše přes objekt Trace z jmenného prostoru System.Diagnostics.
Základní myšlenky v preprocesoru.
1) Většina (ne li každý) objekt v business vrstvě má unikátní identifikátor s názvem Id. Preprocesor události vypíše typ objektu, který událost vyvolal a jeho unikátní Id, takže je snadné dohledat zdroj problematických událostí.
2) Objekty nesoucí parametry událostí dědí vždy z třídy EventArgs. Přes reflection vypíšeme rekurzívně hodnoty vlastností do úrovně nastavené ve vlastnosti EndDumpLevel.
using System;
using System.Diagnostics;
using System.Reflection;
namespace RStein.Utilities
{
/// <summary>
/// Třída EventsLog pro logování událostí
/// </summary>
public class EventsLog
{
#region private constants
private const int BEGIN_DUMP_LEVEL = 1;
private const int DEFAULT_END_DUMP_LEVEL = 2;
#endregion private constants
#region private variables
private int m_endLevel;
#endregion private variables
#region Constructors
/// <summary>
/// Konstruktor
/// </summary>
public EventsLog() : base()
{
m_endLevel = DEFAULT_END_DUMP_LEVEL;
}
#endregion Constructors
#region Public properties
/// <summary>
/// Koncová úroveň rekurzivního výpisu vlastností objeudálosti
/// </summary>
public int EndDumpLevel
{
get
{
return m_endLevel;
}
set
{
if (value < 1)
throw new ArgumentOutOfRangeException("Value must be greater than 1");
m_endLevel = value;
}
}
#endregion Public properties
#region Public methods
/// <summary>
/// Metoda pro výpis informace o událostech
/// </summary>
/// <param name="sender">Zdroj události</param>
/// <param name="e">Parametry události</param>
public void ProcessEvent(object sender, EventArgs e)
{
Debug.Assert((sender != null) && (e != null), "EventsLog - Invalid event data");
if ((sender == null)||
(e == null))
{
return;
}
Trace.WriteLine(new string('-',25));
dumpId(sender);
dumpEventProperties(e);
}
#endregion Public methods
#region Private methods
//Zapsání Id a názvu objektu
private void dumpId (object sender)
{
Type senderType = sender.GetType();
PropertyInfo idInfo = senderType.GetProperty("Id");
string id = String.Empty;
if (idInfo != null)
id = idInfo.GetValue(sender, null).ToString();
Trace.WriteLine(String.Format("Přijata událost od objektu {0}, Id = {1}", senderType.ToString(), id));
}
//Vypsani vlastností objektu s parametry události
private void dumpEventProperties(EventArgs e)
{
Type eventType = e.GetType();
Trace.WriteLine(String.Format("Objekt události - {0}", eventType.ToString()));
PropertyInfo[] eventInfo = eventType.GetProperties();
Trace.WriteLine("Výpis hodnot událostí");
writeEventValues(eventInfo, BEGIN_DUMP_LEVEL, e);
}
//Metoda pro rekurzivní výpis hodnot vlatností
private void writeEventValues(PropertyInfo[] eventInfo, int level, object o)
{
foreach (PropertyInfo info in eventInfo)
{
//Nezpracovávat indexované vlastnosti
if (info.GetIndexParameters().Length != 0)
continue;
object propValue = info.GetValue(o, null);
if (propValue == null)
continue;
Trace.Write(new String('\t', level));
Trace.WriteLine(String.Format("Jméno - {0}, Hodnota = {1}", info.Name, propValue.ToString()));
if (level < EndDumpLevel)
writeEventValues(propValue.GetType().GetProperties(), level + 1, propValue);
}
}
#endregion Private methods
}
}
*Pozorný čtenář z tohoto spotu dokáže vyčíst i mou politickou orientaci a nechuť k určitému druhu myšlení;)
Sunday, 26 September 2004 17:02:00 (Central Europe Standard Time, UTC+01:00)
.NET Framework | Návrhové vzory
Thursday, 23 September 2004
Druhá malá programátorská hádanka na tento týden
Dokážete (bez spuštění programu) poznat, v čem bude provádění tohoto kódu z hlediska "selského programátorského rozumu" podivné a proč?
using
System;
namespace
ConsoleApplication24{
public
class
Class1
{
public
static
void
Calculate(
int
number)
{
}
}
public
class
Class2: Class1
{
public
static
void
Calculate(
long
number)
{
}
}
class
Test
{
[STAThread]
static
void
Main(
string
[]args)
{
Class2.Calculate(
int
.MinValue);}
}
}
Thursday, 23 September 2004 15:30:00 (Central Europe Standard Time, UTC+01:00)
Programátorské hádanky
Wednesday, 22 September 2004
All-In-One zařízení nebo jednoúčelové vyšperkované přístroje?
Dneska se Patrik Zandl zamyslel nad užitečností All-In-One zařízení, tedy přístrojů, které v jednom kabátku nabídnou funkce více specializovaných elektronických “hraček". Spot byl zaměřen hlavně na mobily, do kterých je dneska integrován fotoaparát, rádio, MP3 přehrávač a další více či méně užitečné funkce. Vyznění spotu bylo jednoznačné - kombinovaná zařízení jsou hezká věc, ale brzy nás omrzí a používáme jen jejich primární funkce a na vše ostatní zakoupíme dražší, ale technicky dokonalejší přístroje, které mají lepší ovládání přizpůsobené svému základnímu a jedinému účelu. Z telefonu pořád hlavně voláme nebo posíláme SMS, ale dle průzkumů nás třeba fotoaparát omrzí po prvním měsící hraní, z čehož nemají radost hlavně operátoři, kteří by asi nejradeji viděli, jak si s voyerským úsměvem vyměňujeme každý s každým fotografie banálního soukromí, které svou (ne)kvalitou danou nízkým rozlišením dávají prostor fanatazii, protože si každý může (spíš musí) z rozpitých skvrn domýšlet, jestli fotografie zachycuje poslední výstřelek kubistické estetiky nebo fotříka rozvaleného s pivem v křesle;)
Zpět k All-In-One zařízením.
Jirka Macich se ve svém spotu All-In-One zařízení zastal a vyzdvihl hlavně výhodnou cenu kombinovaného zařízení. Také jsem zastáncem kombinovaných zařízení, i když vím, že jsou zatím kompromisem. Ale velmi dobrým kompromisem. MDA II jsem si koupil, protože mě nebaví nosit s sebou PDA, mobil, přenosný MP3 přehrávač, rádio, čtečku knih. Fotoaparát nezmiňuji, protože se bez něj s radostí obejdu. Nerad se fotím a nerad koukám na strnulé statické snímky čehokoli a souhlasím s Mílanem Kunderou, že fotky jsou jen jednou ze sofistikovaných forem zapomnění.;)
Po 9 měsících intenzivního používání musím říct, že jsem spokojený a že většinu mých nároků plní MDA II na výbornou:
- MDA II je špičkové PDA, které i dnes předčí některá samostatně prodávaná PDA.
- K přehrávání MP3 na cestách nemusím mít žádné extra specializované zařízení s jednoduchým ovládáním jako je Ipod. Stačí mi, že si mohu vytvořit playlist a spustit sekvenční nebo náhodné přehrávání písniček. To vše jakýkoli přehrávač pro Windows Mobile 2003 samozřejmě zvládá.
- Když mě omrzí MP3, mohu poslouchat internetová rádia. Kvalita není nic moc, ale když mi nebude stačit, mohu si koupit SD kartu s rádiem.\
- Pro Windows Mobile existuje nepřeberné množství různě kvalitních programů pro čtení elektronických knih. Všechny materiály, odborné knihy, které mám právě teď rozečteny, mám stále u sebe, aniž bych s sebou tahal navíc nějaké místo zabírající jednoúčelové zařízení.
- Když bych zatoužil po GPS, není nic snazšího než zakoupení SD karty nebo samostatného a přes bluetooth komunikujícího GPS modulu.
Paradoxně jediné co se dá vytknout MDA II je horší software pro ovládání telefonní části. Verze "Phone Edition" operačního systému Windows Mobile není ještě tolik vyzrálá, ale třeba konkurenční Symbian má již dnes telefonní část plně srovnatelnou s běžnými “jednoúčelovými" mobily bez operačního systému.
Kvalita All-In-One zařízení se bude podle mě bude stále zvyšovat, takže k nákupu specializovaných zařízení najdeme stále méně důvodů. Nebo si myslíte něco jiného a používáte tak propracované zařízení, že vám ho žádný All-In-One přístroj nedokáže nahradit?
Wednesday, 22 September 2004 19:47:00 (Central Europe Standard Time, UTC+01:00)
Mobilitky
Tuesday, 21 September 2004
Malá programátorská hádanka
Máte následující kód:
class
Test : BaseTest
{
private
string
m_rene;
public
Test() :
base
()
{
m_rene = "Rene";
}
public
override
void
WriteName()
{
Console.WriteLine(m_rene);
Console.Read();
}
}
Metoda WriteName vypíše za určitých podmínek jen prázdný řetězec - víte kdy? ;)
Update: A víte, jak se bude chovat stejný kód po přepsání do C++?
Tuesday, 21 September 2004 15:32:00 (Central Europe Standard Time, UTC+01:00)
Programátorské hádanky
Monday, 20 September 2004
Česká .Net Developer Group nabírá dech
Jak už psal Michal, dneska se uskutečnilo první setkání české .Net Developer Group. K jeho postřehům bych jen dodal, že mě jakožto skeptika, co se týče úspěšnosti pořádání kolektivních akcí pod egidou velkých společností jako je Microsoft, příjemně překvapil počet účastníků, a hlavně to, že většina z nich nebyla všemu pasivně přitakávající zasmušilou většinou, která vévodí většině oficiálních seminářů a přednášek, ale že se se (skoro) všichni podíleli na vytváření programu dalších setkání.
Jestliže tedy nechcete potkávat své kolegy jen ve virtuálním prostoru internetu a nejste naprostí asociálové opevňující se s hysterickými vzlyky ve svém domě i při zmínce o návštěvě blízkého příbuzného, tak přijďte na další setkání, které se bude konat přibližně za měsíc a jehož tématem je bezpečnost v .Net Frameworku. O bezpečnosti bude přednášet Honza Šeda.
Honzovi Šedovi také patří pořádný dík za to, že si .Net Developer Group vymyslel, prosadil a celé první setkání v Microsoftu zorganizoval.
Monday, 20 September 2004 21:52:00 (Central Europe Standard Time, UTC+01:00)
.NET Framework | Ostatní