Tuesday, February 7, 2006
Malá utilitka pro navigaci 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 7, 2006 11:58:54 PM (Central Europe Standard Time, UTC+01:00)
Mobilitky | Navigace
Sunday, February 5, 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.
- 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.
- 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.
- 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í?
- 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.
- 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.
- 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? ;)
- Co když si budeme chtít u některých potomků BusinessObjectBase "vynutit" jiné chování - třeba zamezit použití DataCacheHelperu?
- 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:
- 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 5, 2006 2:44:36 PM (Central Europe Standard Time, UTC+01:00)
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)
Compact .Net Framework | Mobilitky
Proč neaktivovat režim "WiFi G" na MDA Variu (HTC Wizard)?
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)
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ěží?
- 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.
- 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í.
- 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).
- 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.
- 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.
- 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 ;) )
- 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.
- 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.
- 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á".
Thursday, January 26, 2006 10:37:26 PM (Central Europe Standard Time, UTC+01:00)
Mobilitky
Tuesday, January 17, 2006
Prodám MDA II
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)
Ostatní
Wednesday, January 11, 2006
Malé srovnání navigačních aplikací Dynavix a TomTom
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)
Mobilitky | Navigace
Sunday, January 8, 2006
Program na import oblíbených položek z Pocket IE do Opery Mobile 8.5
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 8, 2006 5:25:19 PM (Central Europe Standard Time, UTC+01:00)
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)
Ostatní
Monday, November 7, 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 7, 2005 7:49:21 AM (Central Europe Standard Time, UTC+01:00)
Kurzy UML a OOP