\

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


 Tuesday, February 07, 2006
Malá utilitka pro navigaci TomTom
TomTom

Podnět k vytvoření tohoto malého prográmku vyšel z jedné diskuze na ce4you od MilanaSu. K čemu prográmek slouží? TomTom má výrobcem dodávané (ne uživatelem vytvořené) body zájmu uloženy v souboru POI.dat - poměrně snadno můžete vlastní body zájmu, které je možné pro Čechy stáhnout ze skvělého webu www.poi.cz, zkompilovat do vlastního souboru POI.dat. Když ale jedete do ciziny, většinou chcete TomToma spouštět s výrobcem dodaným souborem POI.dat, a ne se svým vlastním, který se hodí jen pro Čechy.

Přejmenování souborů a spuštění TomToma řeší utilitka RenameFile.exe, která by se mohla hodit i ostatním. Popis , jak utilitku používat,  zkopíruji z ce4you, abych jej nemusel psát znovu.

Psáno zcela záměrně bez diakritiky ;)

"
1) Vytvorte zastupce na Pocket PC (treba Total Commanderem nebo File Explorerem)

2) Zastupce zkopirujte do PC (pro lepsi editaci) a vytvorte
17#"\RenameFile.exe" "STORAGE CARD\DE_AT_CH_PL_CZ_PLUS-MAP\POI2.dat" "STORAGE CARD\DE_AT_CH_PL_CZ_PLUS-MAP\POI.dat" "STORAGE CARD\DE_AT_CH_PL_CZ_PLUS-MAP\POI3.dat" "Program Files\Navigator\TomTom navigator.exe"

1. argument - 17#"\RenameFile.exe" cislicka a cestu k programu (vse se muze lisit) ponechte beze zmeny.

2. argument "STORAGE CARD\DE_AT_CH_PL_CZ_PLUS-MAP\POI2.dat" - soubor, ktery ma byt prejmenovan tak, jak urcuje treti argument (POI.DAT)

3. argument - "STORAGE CARD\DE_AT_CH_PL_CZ_PLUS-MAP\POI.dat" - soubor ve 2. argumentu bude prejmenovan na soubor v tomto argumentu.

4. argument - "STORAGE CARD\DE_AT_CH_PL_CZ_PLUS-MAP\POI3.dat" - jak se bude nove jmenovat puvodni soubor (v nasem pripade POI.DAT - 3.argument).

5. argument - "Program Files\Navigator\TomTom navigator.exe"
Program, ktery ma byt spusten (TomTom).


Je potreba spravne napsat uvozovky a cesty - programek nema zadne UI. Vytvoreneho zastupce zkopirujte zpet do Pocket PC.

Program pracuje takto:

1) Jestlize neexistuje soubor v argumentu 2 (to znamena, ze POI.dat predstavuje pozadovany soubor), je spusten program v argumentu 5.

Jinak

2) Soubor v argumentu 3 je prejmenovan na soubor v argumentu 4 A
soubor v argumentu 2 je prejmenovan na soubor urceny argumentem 3 A Je spusten program v argumentu 5."

Použito jen "čisté" C++ a WIN API, takze by vám prográmek měl fungovat na všech verzích Windows Mobile.


 



Tuesday, February 07, 2006 11:58:54 PM (Central Europe Standard Time, UTC+01:00)       
Comments [0]  Mobilitky | Navigace


 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