\

Školení Návrhové vzory, OOP a UML


 Sunday, February 05, 2006
Ukázka použití třídy BusinessObjectBase

Máme-li napsanou třídu BusinessObjectBase, která hraje roli společného předka všech objektů v business vrstvě všech našich aplikací, je čas ukázat, jak vypadají typičtí potomci.



Předchozí spoty

Bázová třída pro business objekty - návrhový vzor Layer Supertype
Cachování řádků z databáze pro business objekty - třída DataCacheHelper

Zobrazit kód

Třída Order reprezentuje v našem systému objednávku. U objednávky nás zajímá, jakému patří zákazníkovi (vlastnost Customer), rozhodli jsme se, že budeme vyžadovat u každé instance objednávky popisek (vlastnost Description) a samořejmě samotná objednávka je složena z položek objednávky (kolekce Items). Položkou objednávky budeme rozumět třídu, v níž je uloženo, jaké zboží a kolik kusů si zákazník objednal a celková cena položky (kusová cena objednaného zboží * počet). Celková cena objednávky je sumou cen jednotlivých položek. Pro jednoduchost vidíte v kódu zatím jen třídu Objednávka.

  1. Třída Objednávka má dva konstruktory. Prvni konstruktor, přijímající popisek objednávky a zákazníka, vyvolává bezparamerický konstruktor třídy BusinessObjectBase. Jak jsem psal v předchozím spotu, bezparametrický konstruktor slouží k sestrojení objektů bez obrazu v databázi. Chcete-li založit novou objednávku, stačí když si uložíte odkazy na objekty předané v konstruktoru a zbytek práce delegujete na BusinessObjectBase, která nastaví všechny potřebné příznaky nutné pro práci s objektem bez perzistence. Druhý konstruktor přijímá Id (unikátní identifikátor) objednávky, která je uložena v databázi. Jeho tělo je prázdné, veškerou činnost provádí BusinessObjectBase - nastavení příznaků a uložení Id pro pozdější nahrání objektu z databáze. Objekt je po vykonání konstruktoru "prázdnou schránkou", duchem (GHOST), který načte svá data z databáze teprve tehdy, když použijeme některou metodu nebo vlastnost pracující s instančními a perzistovanými proměnnými. Z hlediska uživatele naší třídy (myšleno programátora)  je ale vše ve starých kolejích - rozhraní objektu bude reagovat tak, jak očekává,  a existenci pozdní incializace objektu (Lazy Load) může ignorovat. Poslední větu si přečtěte ještě jednou a tiše s k ní přidejte pravidlo: Nikdy nesmím nutit uživatele svých tříd volat nějaké speciální "Init" metody předtím, než začnou s třídou pracovat. Jedinou legální "Init" metodou je konstruktor.
  2.  Jak k pozdní incializaci a tedy nahrání dat objektu dojde? Vlastnosti, jejichž hodnoty jsou uložené v databázi (Id zákazníka jako klíč v tabulce Objednávek a popisek (Description) objednávky) mají na prvním řádku svých get/set přístupových metod volání metody TriggerLoad. Jak víme, jde o volání metody z BusinessObjectBase, která sama rozhoduje, zda již byla data objektu nahrána z databáze. Pokud data nebyla nahrána, třída BusinessObjectBase řídí scénář nahrávání objektu v metodě Load. Jestliže jsou data pro objednávku v třídě DataCacheHelper, je volána metoda DoInternalLoad(DataRow row), která načte data objednávky z předaného řádku. Když v třídě DataCacheHelper data pro aktuální instanci nemáme, BusinessObjectBase volá variantu metody DoInternalLoad bez argumentů. Metoda DoInternalLoad vyzvedne řádek z databáze s využitím databázové komponenty (což je Singleton nebo Thread specific storage - jednoduše třída zapoudřující  API pro práci s datovým zdrojem) a tento řádek předá své stejně nazvané sestřičce, o níž byla řeč výše.
    Důležité je, že celý scénář nahrávání řídí bázová třída - v odvozené třídě jen v přesně vymezených bodech scénáře "dosazuje" třída Order své vlastní specifické chování a používá své speciální atributy.
  3. V set přístupových metodách u vlastností využíváme metodu CheckEquals z BusinessObjectBase. Jak už víte z minulého spotu, metoda CheckEquals zkontroluje rovnost dvou objektů a podle toho nastaví příznak IsDirty - byl objekt změněn proti datům v databázi a musí tedy dojít k jeho uložení?
  4. Jak je to nahráním položek objednávky  - vlastnost Items? Často se stává, že potřebujete pracovat se samotným objektem, ale je zbytečné při nahrání dat objektu  z databáze ihned plnit i všechny jeho kolekce. Kolekce Items je naplněna při prvním přístupu ke kolekci  - příznak, zda byla kolekce nahrána nese pomocná instanční proměnná m_itemsLoaded. Jestliže kolekce naplněna nebyla, je volána privátní metoda loadItems, v níž s pomocí databázové komponenty vyzvedneme z databáte všechny položky objednávky - filtrem, který je použit v SQL dotazu je samozřejmě Id objednávky. Poté projdeme vrácenou tabulku a všechny řádky uložíme do třídy DataCacheHelper. Zde přepokládáme, že metoda DbComponent.Instance.OrderItem_GetByOrderId, vrací z databáze všechna data potřebná pro obnovení objektu z databáze, nejen jejich Id. To je běžná praxe, pokud máte uloženou proceduru, která vybírá záznamy z jedné tabulky (pro jednu třídu) podle různých podmínek. Důležité je, že za pomoci identitní mapy (Identity Map) sestrojíme objekty - "duchy" - OrderItem, kterým předáme jejich Id,  a třída BusinessObjectBase již zajistí, že když instance OrderItem budou chtít nahrát svá data z databáze, tak jí bude vrácen řádek uložený v instanci třídy DataCacheHeper. To znamená, že třída OrderItem nebude zbytečně zatěžovat databázi duplicitními dotazy a přitom kontrola na existenci cachovaného řádku pro instance jakékoli třídy je součástí společného předka BusinessObjectBase a "nezasviníme" si stejným kódem celou business vrstvu.
  5. Metoda Order také přepisuje metodu DoInternalSave, v níž uloží své atributy do databáze. Jak uvidíme dále, metodě Order_Update předáváme hodnotu zděděného a bázovou třídou spravovaného příznaku IsNew - tento příznak metoda interně použije k rozhodnutí, zda provede SQL příkaz INSERT nebo UPDATE1. Opět - po volání metody Save uživatelem jen třída BusinessObjectBase jakožto finální instance rozhoduje, zda je potřeba data ukládat a zda je tedy vubec nutné a účelné volat metodu DoInternalSave. Opět vidíte čistý řez mezi kontrolou, kdy je nutné objekt uložit (třída BusinessObjectBase),  a samotným ukládáním (třída Order i další potomci BusinessObjectBase). Kromě uložení vlastních hodnot odpovídá třída za uložení agregovaných objektů OrderItem. Proto v metodě DoInternalSave nejprve zkontroluje, jestli byly objekty v kolekci nahrány (příznak m_itemsLoaded) a pokud ano, tak jen zavolá pomocnou metodu SaveCollection, která je implementována, jak jinak že;), v třídě BusinessObjectBase.

I když z příkladu byste měli začít tušit, proč je BusinessObjectBase tak výhodná, stále neřešíme některé problémy.

  1. V příkladu není vůbec řešeno odebírání a přidávání položek do kolekce - to znamená nastavování/zrušení "rodiče" u agregovaných objektů. Nijak jsme neřešili m:n relace a odpovědnost za zakládání/rušení záznamů ve vazebních tabulkách. Myslíte, že i zde půjde využít třída BusinesObjectBase? ;)
  2. Co když si budeme chtít u některých potomků  BusinessObjectBase "vynutit" jiné chování - třeba zamezit použití DataCacheHelperu?
  3. A co transakce? V našem příkladu zatím nijak neřešíme ukládání objektů v transakci, což bychom měli, protože určitě nechceme mít v systému objednávky s polovinou objednaných položek. Jaký objekt má spouštět a řídit transakci? Kdo musí ošetřit chyby vzniklé při ukládání objektu?

To be continued... :)

Poznámky:

  1. Jsem si vědom střídavé soudržnosti metody související s "přepínačem" IsNew . V dalších dílech bude vysvětleno, proč střídavá soudržnost zrovna u této metody nevadí.


Sunday, February 05, 2006 2:44:36 PM (Central Europe Standard Time, UTC+01:00)       
Comments [7]  Návrhové vzory


 Tuesday, January 31, 2006
Nová verze programu (1.1) pro import oblíbených položek z Pocket IE do Opery Mobile

Download

Změny:

1) Opravena chyba, která se projevovala při importu více vnořených položek.

2) Import je funkční i v oficiální verzi Opery pro Windows Mobile 2003 a 2005. Trial verze Opery Mobile.

Postup instalace a další informace jsou v  úvodním spotu.



Tuesday, January 31, 2006 11:26:52 PM (Central Europe Standard Time, UTC+01:00)       
Comments [0]  Compact .Net Framework | Mobilitky


Proč neaktivovat režim "WiFi G" na MDA Variu (HTC Wizard)?
MDA

Minulý týden proběhla internetem informace, že na MDA Vario je možné jednoduchým zásahem do registry změnit režim B WiFi komunikace na rychlejší G. Tedy abychom byli přesní, žádné zázračné zvýšení rychlosti se nekoná, ale úprava slouží pouze k tomu, abyste se mohli s Variem připojit ke "G only" přístupovým bodům. Vypadá to jako užitečná věc.

Stačí změnit/přidat následující 2 klíče:

HKEY_LOCAL_MACHINE\COMM\TNETWLN1\PARMS: dot11SupportedRateMask=1
HKEY_LOCAL_MACHINE\COMM\TNETWLN1\PARMS: dot11SupportedRateMaskG=8

Přemýšlivější jedince ale určitě napadne, proč HTC jakožto výrobce zařízení nebo sám mobilní operátor prodává takto podivně zkriplované zařízeni? Odpověď už asi znám, protože jsem si G režim aktivoval v sobotu a včera jsem přešel zpět na režim B.

Důvod - s mým routerem Draytek Vigor v "mixed" módu (B + G), s nímž Vario od prvního dne spolupracovalo bez sebemenších zádrhelů, si po aktivaci G režimu  přestalo rozumět. Sice WiFi síť stále vidělo, občas se dokonce dokázalo připojit, ale většinou jsem se do sítě nedostal, nebo jsem  přes DHCP nezískal IP adresu. Po návratu k B normě je opět připojení funkční.

Takže důvody "zkriplováni" WiFi na MDA Variu už po osobni zkušenosti chápu ;)



Tuesday, January 31, 2006 12:43:22 PM (Central Europe Standard Time, UTC+01:00)       
Comments [8]  Mobilitky


 Thursday, January 26, 2006
MDA Vario a synchronizace přes USB s programem ActiveSync 4.1

Po dnešní probdělé noci kvůli synchronizaci přes USB, dávám na blog několik tipů pro nešťastníky, kteří se s ní budou stejně jako já potýkat. ActiveSync 4.1 je tak možná beta testovaná na lidech, kterou Microsoft rychle vydal po zabugované alfě kamuflované jako release 4.0. Změna způsobu komunikace mezi PC a PPC na čisté TCP/IP připojení vypadá jako dobrá idea, ale stabilita a rychlost AS 4.x při přímém srovnání se starší a docela slušně odladěnou verzí 3.8 ukazuje, jak vývojáři  MS dobrou ideu sadisticky přibili na kříž špatné praktické implementace.¨

U PDA s Windows Mobile 5.0 nemáte na výběr a musíte synchronizaci s AS 4.0 rozchodit a pomalost synchronizace prozatím přetrpět. Takže na co si dávat pozor a jak postupovat, když se zařízení s AS nespojí nebo když synchronizace neběží?

ActiveSync
  1. Ukončete firewall a všechny antiviry. Jestliže firewall neukončíte, ujistěte se alespoň, že AS (procesy WCESCOMM.EXE,  WCESMGR.EXE, RAPIMGR.EXE, CEAPPMGR.EXE) je povolena komunikace přes porty 990, 999, 5678, 5679, 5721.
  2. Po připojení zařízeni k USB portu by se měl nainstalovat ovladač pro Generic RNDIS device a poté by se měla objevit informace o novém Pocket PC zařízení.
  3. Po úspěšném připojení zařízení k USB portu a instalaci ovladačů se vám v síťových připojeních objeví nové připojení (Windows mobile device)  - ujistěte se, že ve vlastnostech připojení je zaškrtnuta položka Internet protocol (tcp/ip).
  4. Jestliže je zařízení připojeno a vy jste vybrali v průvodci položky k synchronizaci, mějte velkou trpělivost při první synchronizaci. První synchronizace je totiž velmi pomalá a může trvat i několik minut.
  5. Jestliže synchronizace selže, podívejte se do logů v %temp% adresáři počítače (soubory WCESCOMM.LOG, WCESLog.log, WCESMgr.log, WcesView.log) na příčinu problému.
  6. Jestliže synchronizace selže a vy dostanete chybu  "Server is busy Support code 85010017", na nic nečekejte a odeberte Outlook ze seznamu nainstalovaných programů (Add/Remove programs, Microsoft Office - volba Change), restartujte počítač, znovu nainstalujte Outlook a restartujte počítač. Pořadí těchto kroků musíte přesně dodržet (hlavně kvůli této chybě jsem šel docela nas*anej spát ve čtvrt na pět ;) )
  7. Jestliže se vám nedaří synchronizovat všechny typy vybraných položek (Kontakty, Oblíbené, Kalendář, Emaily), přidávejte je do synchronizace postupně - nejprve zaškrtněte Kontakty, sesynchronizujte a při úspěchu přidejte Kalendář, sesynchronizujte atd. Podle mých zkušeností největší problémy činí maily, proto je synchronizujte až nakonec.
  8. Když se vám nedaří synchronizovat maily, vytvořte v Outlooku nový pst soubor a ve správě účtů (Tools/Email Accounts) tento soubor nastavte jako výchozí pro doručování pošty. Maily překopírujte do složek v novém pst souboru. Po změně souboru pro ukládání položek musíte restartovat Outlook.
  9. Modlete se,  hříšníci,  za lepší mobilní zítřky bez šedozeleného loga ActiveSyncu, které bylo Microsoftem asi podvědomě zvoleno a do binárního světa transponováno jako symbol podvědomé vlastní frustrace, že i u jejich synchronizace platí "šedivá  je všechna teorie a strom života se zelená". :-D

 



Thursday, January 26, 2006 10:37:26 PM (Central Europe Standard Time, UTC+01:00)       
Comments [6]  Mobilitky


 Tuesday, January 17, 2006
Prodám MDA II
Dynavix

Protože mi Ježíšek přinesl nové MDA Vario, s těžkým srdcem;) prodávám své MDA II.

Komunikátor MDA II je plně funkční, v ceně je SD karta Kingstone 256 MB, synchronizační a nabíjecí USB kabel, originální synchronizační kolébka, původní pouzdro. K zařízení není síťová nabíječka, kterou zlikvidovala moje dcerka, ale není problém koupit si v Sunnysoftu nabíječku kompatibilní s dodávaným nabíjecim USB kabelem, nebo koupit od TMO novou nabíječku. MDA II má poškrábaný displej - jde o pracovní nástroj  používaný denně. ;)

Původni cena: 20 900 bez SD karty, prodám jej za 6 000. Zájemci pište prosím na adresu rene@renestein.net.

ROM: 1.72.00WWE (oficiální od TMO - Windows Mobile 2003),
Radio:1.17.00
Extended Rom: 1.72.176

Další technické údaje (přebrány z CEYOU.cz)

Rozměry & Hmotnost
     69,9 mm x 130 mm x 18 mm :: 185 g

Procesor
      Intel PXA263 (XScale) @ 400 MHz

Paměť
     RAM 128 MB :: SDRAM
     ROM 32 MB :: ??? :: přepisovatelná :: 16 MB pro bezpečné uložení dat
     ??? 32 MB

Grafický procesor
     ATI Imageon 3200

Displej
     Transflective TFT :: LED podsvícení :: 11 úrovní
     240 x 320 bodů :: 65536 barev
     úhlopříčka 88,9 mm / 3,5 palců

Telefonní část
     900/1800/1900 MHz
     GPRS Class 10

Komunikace
     USB (ver. 1.1)
     IrDA (ver. 1.1)
     Bluetooth :: 1

Možnosti rozšíření
     SD / MMC :: plné SDIO

Baterie
     Lithium-Ion Polymer :: 1200 mAh :: life up to 13 hodin :: vyměnitelná :: dobíjecí
     Coin záložní baterie :: vyměnitelná

Možnosti vkládání textu
     dotyková obrazovka
     joypad :: 4 konfigurovatelných tlačítek :: tlačítko pro nahrávání :: Hlasitost

Audio
     reproduktor :: mikrofon
     Stereo 2.5mm s mikrofonem

Integrovaný digitální fotoaparát
     300K pixels CMOS Camera module
     Obrázek :: BMP, JPEG :: 240 x 320
     Film :: MPEG4, M-JPEG :: 480 x 640
     Optický zoom :: 0

Update 18.1. 2005 : MDA II prodáno



Tuesday, January 17, 2006 5:38:20 PM (Central Europe Standard Time, UTC+01:00)       
Comments [0]  Ostatní


 Wednesday, January 11, 2006
Malé srovnání navigačních aplikací Dynavix a TomTom
Dynavix

Protože mi v poslední době dorazilo více mailů, jejichž odesílatelé se ptali, zda si mají koupit pro navigaci po Čechách Dynavix nebo TomTom a mně se nechce neustále hledat a kopírovat každému zvlášť následující malé srovnání, dávám jej veřejně na blog, abych mohl posílat jen odkaz. Jednoznačný soud u mě nehledejte, ani se propagandisticky nedozvíte, že byste měli podporovat Dynavix, protože jde o "český" program, jak občas zaznívá v diskuzích, kde se i výrobce snaží rozechvět tak dojemně nostalgickou nacionalisticko-obrozeneckou strunu sugescí, že "co je české, to je hezké". V 19. století by si Dynavix určitě nadšeně koupili i Jungmann s Dobrovským, ale v 21. století může zabrat vlastenecká propaganda produktů snad jen na posledního obrozeneckého mohykána, věrného syna vlasti a hlavně dětinského euroskeptika Václava Klause. ;) Stejně jako jsem si nevybral Škodovku, protože mi nedokázala nabídnout vhodný vůz, nevybírám si ani svůj navigační SW podle země původu, ale překvapivě podle kvality nebo poměru výkon/cena. Sentimentální nebo heroické vlastenectví je dneska levné zboží vhodné tak do reklamy na prodej toho  "echt českého - Czech made" moku "echt českým" barochům, ale to by bylo na jinou úvahu ;) . Chtěl jsem jen říct, že tak kvalitní produkt jako je Dynavix, by se nemusel snažit "vtírat" do přízně uživatelů stejně nebo podobně pokleslými marketingovými triky.

DYNAVIX
+ pravděpodobně nejpodrobnější mapové podklady ČR (více čísel popisných než TomTom)
+ Nejlepší hlasová navigace - dá se podle ní i v Praze jet bez koukání na displej.
+ Rychlá reakce firmy na připomínky uživatelů
+ Velké množství POI

- Chybí 3D pohled (v TomTomovi jsem si na něj zvykl)
- Horší stabilita programu. Aktuální verze 1.3 se tak často neukončuje jako předchozí verze, ale přesto na některých PDA jsou problémy nepříjemné (hlavně HP 4700 + zařízení s Widcomm BT stackem). Při navigaci neni nic horšiho než nečekané ukončení programu v centru Prahy.
- Občas neintuitivni a neergonomické ovládání ve srovnání s TomTomem
- Vyšší cena
- Špatně se pracuje s mapou, neexistuje plynule scrollovani mapy
- Horší simulace a prohlížení trasy po naplánování (itinerář cesty je nepřehledný)
- Uživatel nemůže nahrávat jiná POI.

TomTom
+ Jeden z nejlepších a a nejdéle vyvíjených navigačních SW na světě. Dle všech zahraničních recenzí jde o etalon třídy.
+ Skvělý 3D pohled
+ Dobrá hlasová navigace -Dynavix ji má ale citelně lepší, u TomToma je přeci je nutné občas kouknout na displej. TomTom má také méně typů instrukcí než Dynavix.
+ Kvalitní mapové podklady. (kromě Severní Moravy, na které nelze vybírat jako cíl města a podrobnost je bídná - výběr měst řeší ale uživatelské POI). Dynavix má sice mapy o něco podrobnější , ale v praxi jsem na žádné velké rozdíly v podrobnosti map mezi oběma programy nenarazil. Tato poznámka platí jen pro starší verzi map - v současné době se objevily nové mapy, kde je de ohlasů kvalitně zpracována i Morava a mapové podklady se zcela vyrovnají Dynavixu. Dynavix má "pouze" více čísel popisných.
+Špičkové ovládání jedním prstem i za jízdy
+ Skvělý simulační režim a dobrá orientace v různých aspektech naplánované trasy
+ Plynulá práce s mapu (scrollování, zoom)
+ Stabilita programu. Za celou dobu mi TT ani jednou nespadl, spojení s BT GPS je také bez jakýchkoli problémů
+ Možnost vytvářet vlastni POI (viz seznam POI na http://www.poi.cz/)
+Velmi dobrá cena

- Autoři určitě nebudou reagovat na připomínky pár uživatelů jako TeleMatix, který se teprve snaží získat významnější podíl na trhu.
- O něco horší hlasová navigace i mapové podklady ve srovnání s Dynavixem.

Shrnutí. Chcete-li jezdit hlavně podle hlasové navigace, vyberte si Dynavix. Preferujete-li stabilitu a 3D pohled, berte TomToma.



Wednesday, January 11, 2006 5:43:51 PM (Central Europe Standard Time, UTC+01:00)       
Comments [7]  Mobilitky | Navigace


 Sunday, January 08, 2006
Program na import oblíbených položek z Pocket IE do Opery Mobile 8.5
MDA

Download programu.

Operu 8.5 Mobile pro Pocket PC je možné stáhnout zde - verzi určenou původně jen pro Willcom W-ZERO3 lze  "opatchovat" ;) tak, aby byla použitelná i na  dalších zařízeních. Crack ode mě ale nečekejte. ;) Další informace o Opeře naleznete na msmobiles.

Protože se dá očekávat, že i kvůli tomuto poněkud trapnému úniku ;), který těžko zbagatelizuje i vášnivý apologet a nekritický fanoušek Opery Radek Hulán, poněvadž jde o takové diletanství, jež dle mnoha indicií vede jedině k podezření na infiltraci Opery neschopnými zaměstnanci Apple ;),  společnost Opera  nabídne na svých stránkách mobilní Operu oficiálně pro všechny zařízení s Windows Mobile 5.0, mohl by se vám hodit prográmek, který jednorázově přenese všechny oblíbené položky z Pocket Internet Exploreru do Opery. Program jsem napsal (link na stažení je v prvním řádku tohoto spotu) - prosím vás tedy o otestování a o reportování nalezených chyb.

Jak program funguje?

1) Stažený soubor RStein.ImportOperaFavorites.exe nakopírujte do zařízení.

2) Soubor spusťte - pokud import proběhne úspěšně, jste informováni, že import byl dokončen, jinak je zobrazen text výjimky.

  • Program kopíruje oblíbené položky ze složky, jejíž cesta je uložena v registry pod klíčem System\Explorer\Shell Folders\Favorites. Pokud klíč neexistuje, kopíruje se ze složky \Windows\Favorites.
  • Program rekurzivně kopíruje i všechny složky a podsložky.
  • Data pro Operu jsou ukládána do souboru Application Data\opera6.adr
  • Původní oblíbené položky v Opeře jsou zazálohovány do souboru Application Data\opera6.adr.bak

  • Otestováno na MDA Vario (HTC Wizard).

Update: Dle prvnich ohlasů jsem vytvořil novou verzi:

1) Pokud neexistuje soubor opera6.adr, program pokračuje dál i bez zálohy původních oblíbených položek.

2) Při chybě by měl program nahlásit, jaká položka mu dělá potíže. Jestliže máte v IE položku s nějakým "velmi dlouhým názvem", zkraťte název - vypada to, ze v CNF 1.x je nějaká chyba, kvůli které nelze otevřít stream, pokud je předán "dlouhý" název souboru.



Sunday, January 08, 2006 5:25:19 PM (Central Europe Standard Time, UTC+01:00)       
Comments [2]  Compact .Net Framework | Mobilitky


 Tuesday, December 20, 2005
Změna kontaktních údajů
Protože měním zaměstnání, chtěl bych Vás požádat, abyste přestali používat pracovní adresu rsteinATdigi-trade.cz a namísto ní zasílali zprávy na emailovou adresu reneATrenestein.net. Také již nejsem dostupný na služebním mobilu (ET), nadále platí soukromé telefonní číslo (TMO).

Tuesday, December 20, 2005 2:05:49 PM (Central Europe Standard Time, UTC+01:00)       
Comments [0]  Ostatní


 Monday, November 07, 2005
Update: Volná místa na na školení týkající se principů OOP a návrhových vzorů

V kurzu "Objektovými principy a návrhovými vzory řízený design a vývoj kvalitních aplikací" se uvolnilo několik míst.

Informace o programu kurzu

Termín konání: 14-16.11 2005 (3 dny po 6 hodinách, začátek každý den v 9:00, konec v 16:00 - pokud se do něčeho nezabereme ;-) )
Přednášející: Moje maličkost ;)
Místo konání: Školící středisko společnosti DIGI TRADE, Olšanská 1a, 130 80 Praha 3
Cena školení: 12 500 Kč

Přihlášky můžete posílat přímo mně na email rene@renestein.net. V emailu prosím uveďte svoje jméno a příjmení, počet účastníků  a adresu, na kterou má být zaslána faktura.

Kurz je již obsazen, ale protože mi stále chodí maily s dotazy na další konání kurzu, prosím případné další zájemce, aby se mi ozvali na mail také a napsali mi, v jakém termínu a kolik lidí by se mělo kurzu účastnit. Dále bych chtěl upozornit, že přibližně v březnu by se mělo objevit pokračování tohoto školení, které bude zaměřeno "čistě  prakticky", což znamená, že během kurzu účastnící sami vytvoří analýzu a design vzorové aplikace a vyzkouší si vzorovou implementací zásad a návrhových vzorů obsažených v designu. Pokud máte předběžně a nezávazně zájem o druhý kurz, napište mi prosím také email, abych opět nepodcenil zájem o školení.



Monday, November 07, 2005 7:49:21 AM (Central Europe Standard Time, UTC+01:00)       
Comments [0]  Kurzy UML a OOP


 Thursday, September 22, 2005
UMTS v síti ET částečně funkční?

Jak upozornil Pavel Troller v konferenci o GSM, dnes byl schopen se přihlásit do WCDMA sítě. Plně funkční jsou dle něj SMS a datové přenosy, odchozí volání jen s terminací v síti ET, příchozí volání fungují bez problémů.

Nemám zatím UMTS telefon (čekám stále na MDA PRO), takže si nemůžu sám UMTS vyzkoušet. Máte někdo další zkušenosti, kde všude je možné se do UMTS sítě ET přihlásit?

Že by byl ET v komerčním spouštění UMTS opravdu nezpochybnitelně první, nebo se zopakuje historka známá z uvedení MMS? ;) Historie se prý vždy opakuje, jednou jako tragédie, podruhé jako fraška. Spuštění MMS připomínalo spíš frašku, takže doufám, že nijak tragické uvedení UMTS v Čechách nebude ;)

Pokud chcete rychle zjistit, jak funguje UMTS síť, zkuste "turbo úvod do UMTS" Patricka Zandla.

UPDATE: Tak už zareagoval i Mobil - Spuštění UMTS se blíží. Už si přes něj i zavoláte!



Thursday, September 22, 2005 12:10:08 PM (Central Europe Standard Time, UTC+01:00)       
Comments [0]  Mobilitky