\

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


 Sunday, October 17, 2004
Dotazy a odpovědi k .NET Remotingu

Tento spot přímo navazuje na starší spot o nejčastějších problémech v .NET Remotingu.

Dotazy v konferencích se často týkají událostí. Důvodem je hlavně to, že mnoho knih (namátkou třeba Building XML Web Services for Microsoft .Net platform) obsahuje “postup” pro rozchození události, který nefunguje. V čem je problém?

Když ve vzdáleném serverovém objektu nadeklarujete událost a pokusíte se k ní zaregistrovat delegáta ukazujícího na metodu na klientovi, dostanete při běhu aplikace výjimku, že se nepodařilo nahrát assembly s typem, ve kterém se nachází klientská obslužná metoda události. Server odmítne registraci delegáta u události, protože nedokáže ověřit signaturu metodu, na níž odkazuje delegát - server nemůže nalézt assembly s typem, ve kterém je deklarována metoda, protože assembly je známa a rozmístěna jen na klientovi.

Správný postup při deklaraci a používání událostí v .NET Remotingu

  1. Vytvořte jednu assembly se serverovým objektem a nadeklarujte serverové události. Assembly umístěte pouze na serveru.
  2. Vytvořte assembly, v níž bude sdílená třída s obslužnou metodou serverové události a dále bude třída obsahovat událost vlastní, která bude stejného typu jako serverová. V těle obslužné metody serverové události pouze vyvolejte událost vlastní - lokální a přepošlete argumenty obdržené ze serveru. Assembly umístěte na server i na klienta, protože klient si zaregistruje obslužnou metodu sdíleného typu k serverové události (v té chvíli již server dokáže ověřit signaturu metodu a nahrát typ, ve kterém je metoda deklarována) a současně si klient přihlásí odběr lokální události ze sdíleného typu a takto zprostředkovaně zpracuje událost ze serveru.
  3. Vytvořte klientskou assembly. Assembly umístěte pouze na klienta.

Dalším problémem u vzdálených událostí je korektní ošetření stavu, kdy se klient odpojí a na serveru zůstane zaregistrován delegát (například spadne spojení). Aby nedošlo k výjimce na serveru při pokusu distribuovat událost, tak jako nejjednodušší cesta se nabízí dekorování obslužné metody na klientovi atributem OneWay - atribut způsobí, že server ignoruje všechny návratové hodnoty a výjimky z metody. Velkou nevýhodou je ale hromadění delegátů ukazujících do "prázdna" a tím zvýšená režie na distribuci každé události. Lepším řešením je ruční vyvolání každého delegáta registrovaného k události a po odchycení výjimky vyřazení delegáta z další distribuce událostí.

public void OnServerEvent(EventArgs e)
{
    Delegate[] delegatesList = ServerEvent.GetInvocationList();
    foreach(ServerEventHandler clientDelegate in delegatesList)
    {
        try
        {
            clientDelegate(e);
        }
        catch
        {
            ServerEvent -= clientDelegate;
        }
    }
}



Sunday, October 17, 2004 5:33:00 PM (Central Europe Standard Time, UTC+01:00)       
Comments [8]  .Net Remoting


 Monday, October 11, 2004
Jak prosadit BizTalk (a SOA architekturu vůbec) u českých firem?

Pár námětů na zamyšlení pro produktové manažery v Microsoftu ohledně rozšiřování BizTalku 2004 a "evangelizaci" jeho schopností a hranic. Jedná se o moje zkušenosti z prezentace možností BizTalku u jednoho klienta a dále z obecné konzultace o integraci aplikací přes XML. Posluchači byli z vyššího IT managementu. Konzultace většinou žádné nedělám, ale o projekt na BizTalku bych měl velký zájem, takže jsem udělal výjimku.;)

Výsledky jsou ale z mého pohledu tristní.

  1. Největší zájem o BizTalk mají pobočky zahraničních firem, které chtějí integrovat nebo nahradit kvanta pidi aplikací na Lotus Notes.
  2. Někteří zákaznící si myslí, že BizTalk=XML a XML vyléčí během jednoho dne všechny potíže při výměně dat s partnery. Bez námahy, programování atd.
  3. Jiní zákaznící považují BizTalk za CASE nástroj pro návrh procesů, protože obsahuje Orchestration Designer!
  4. BizTalk je v mysli mnohých také spjat s řízením projektů. Možná by mohl Microsoft zapracovat na posílení povědomí o svých serverových produktech a prodal by minimálně pár licencí na MS Project Server.
  5. Také zaznělo, že BizTalk je nástroj pro vytváření OLAP kostek. Sice v něm tuto funkčnost naleznete, ale asi nikdo si nebude BizTalk kupovat jen kvůli OLAPu.

Konzultace se většinou nesly v duchu seznamování se základními principy SOA, webových služeb, "enterprise" integrace aplikací a většinu přítomných to evidentně zaujalo, hlavně když zjistili, že, jak již předtím instinktivně tušili, SOA a a potažmo BizTalk jim pomůže vyřešit jejich problémy s integrací mnoha a nejen Lotus Notes aplikací.

Pro mě je zřejmé, že potenciál k rozšiřování BizTalku v Čechách je, jen Microsoft zatím nedostatečně u zákazníků zmiňuje všechny přednosti a hlavní rysy BizTalku. A myslím, že si to tak skvělý produkt jako je BizTalk opravdu nezaslouží:(



Monday, October 11, 2004 3:57:00 PM (Central Europe Standard Time, UTC+01:00)       
Comments [7]  Analytické drobky | Biztalk | Ostatní


 Sunday, October 10, 2004
Neúplná typologie českých vývojářů I

Bonviván nové zkomercionalizované éry - milovník dobrého jídla, pití, drahých aut a pěkných holek. Vývojařinu si vybral, protože sní o zbohatnutí na jednom veleúspěšném projektu, které mu umožní konečně vést opulentní život rentiéra naplněný rozkošemi, z nichž tou nejlepší je soukromý a 24 hodin přístupný harém plný luxusních a roztoužených děvek. V mládí sbíral zkušenosti v zahraničí. Od té doby přesně ví, jak musí vývoj vypadat a v každé fiirmě své názory s mondénní a neodolatelnou gestikulací prosazuje. Vždyť je světák, žádná provinční krysa, a tak mu jeho názory všichni baští. Je freeelancer za všech okolností, zaměstnanecký poměr neuznává, protože v podvědomí mu zastydl starý dobrý twisťácký slogan "Nevaž se odvaž se". Zásadně dává nerealistické odhady své výkonnosti, takže ze 14 dnů práce sjednané se časoprostorovou trhlinou stává měsíc a půl práce fakturované. Ochomýtá se rád okolo návrhu aplikací, ale jeho nápady musejí být cenzurovány, protože ten lehkomyslný a přelétavý duch neriskuje nouzové přistání v nudné realitě, takže v praxi aplikaci pro současně přihlášených 1000 uživatelů nonšalantně dimenzuje na dva. Vyznačuje se rozvinutým pátým smyslem - schopností zvolit při návrhu vždy to nejméně dobré řešení, takže jeho kolegové žijí v nejhorším ze všech možných softwarových světů.

Jeho život neodvolatelně nabírá komediálně baladický ráz - místo dobrého jídla a pití mu roste panděro z přepálených jídel v nevalných hospodách, místo pěkných holek si ho vytipují třetiřadé odkvétající kurvičky a místo tuningu drahých aut tuní barvičky uživatelských rozhraní, v nichž se lesknou zbytky jeho estetického citu orientovaného od mládí na orientální krásu.

Arivista - povýšenec v IT oblasti, jehož vykulené oči a těkavé pohledy svědčí o tom, že by se lépe cítil při obdělávání domácího úhoru s bramborami než při programování. Je nesmělý a bázlivý, takže k jeho nástupu dojde spíše za nějaké šťastné konstelace hvězd, například když se za něj přimluví kolega, než že by se o něj přetahovali lovci mozků. Je ambiciózní, ale chybí mu talent, který vyvažuje svou přizpůsobivostí, takže si ve firmě nalezne své teplé místečko, ve kterém píše stále dokola ten samý kód. Nadřízení jej mají rádi, protože v něm je něco z lokajského charakteru, který ví, že vrchnost nebo její novodobý dědic má vždy pravdu. Pamatuje si, odkud přišel a že je profesionálním vývojářem spíše náhodou, takže jeho hlas se ozve vždy jen na obranu průměrné a šedé masy a líbí se mu vše, z čeho se vám zvedá žaludek - je to takový typický natěšený divák silvestrovských orgií na Nově a obdivovatel "originálního humoru" Petra Novotného. Skoro vždy stojí na straně většiny, aby nebyl nucen obhajovat svůj postoj nebo nést odpovědnost. Rozplizlé maso bez názoru. Proto jsou jeho zaklínadly praktičnost a jednoduchost, takže návrhy složitých aplikací nikdy dopodrobna nepochopí a ani nemůžete čekat, že sám přijde s nějakým nápadem. Je jen spokojeným kolečkem v hodinovém strojku, jímž je SW firma, a to kolečkem, které permanentně variuje z kolegů vycucané znalosti. Ač totiž není Sokratem promenádujícím se po tržišti, tak se neustále snaží, jak věčně hladová předzvěst kobylek z Apokalypsy, vyluxovat znalosti od svých kolegů. V období periodického návalu jeho ctižádosti a pod ochrannými křídly svého nadřízeného se snaží rýt i do vaší práce, aby se přiživil na vašem talentu, ale jeho argumenty jsou tak ploché a bez vazby na probíranou věc, že všem připomene jen legendární opožděnou postavu jménem Mlha z filmu Marečku, podejte mi pero. Na rozdíl od Bonvivána jde ale o spokojeného člověka, který je rád, "že to někam dotáhl".

Čerstvý absolvent ČVUT nebo MatFyzu - vzdělaný člověk, který se sice na úvodní pohovor dostaví s dvouhodinovým zpožděním, protože pro něj čas není rozhodující veličinou, ale z každého jeho gesta cítíte, že za ním stojí perfektně naprogramovaný stavový automat a že jeho nositel je sám prvním hybatelem a demiurgem svého chladně dokonalého racionálního světa. Je inteligentní a programování komerčních aplikací by zvládl jednou setinou výkonu svého velkokapacitního mozku. Bohužel, když mu objasníte, že pod komerční aplikací si nepředstavujete dva roky psanou prognózu úbytku ozonové vrstvy v dalších 20 letech, protože o ni pro něj velmi překvapivě nejeví žádný náš zákazník zájem a není tedy ochoten její vývoj sponzorovat, odejde do vědeckého ústavu, kde se může lépe realizovat.



Sunday, October 10, 2004 1:28:00 PM (Central Europe Standard Time, UTC+01:00)       
Comments [27]  Ostatní


Dva tipy k vývoji aplikací pod compact .Net Frameworkem, které možná neznáte
  1. I v PDa zařízeních s nainstalovaným compact .Net Frameworkem můžeme umísťit podepsané (strong name) assembly umístit do globálního úložiště (Global Assembly Cache - GAC). DO GAC by měly být umísťovány assembly, které používá více CF aplikací a které tedy není vhodné pokaždé instalovat v samostatné kopii. Postup umístění assembly do GAC se podstatně liší od umístění assembly do GAC na desktopu.
    1. Nakopírujte podepsanou assembly do jakéhokoli adresáře na PDA (například \Program Files\SharedDll\MyAssembly.dll)
    2. Vytvořte soubor s příponou gac, do kterého vložíte cestu k assembly (soubor se jmenuje MyDll.gac a obsahuje řádek \Program Files\SharedDll\MyAssembly.dll). V jednom souboru může být libovolné množství registrovaných dll a na jméně souboru nezáleží.
    3. Soubor s příponou gac umístěte do adresáře Windows.

  2. Při vývoji aplikace pod compact .Net Frameworkem nám chybí základní statistiky o běhu aplikace, respektive o výkonnosti běhového prostředí. Alespoň základní výkonnostní ukazatele (Performance Counters) zjistíme po přidání klíče HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETCompactFramework\PerfMonitor do registrů. Pod nově vytvořený klíčem přidáme novou položku typu DWORD, nazveme ji Counters a její hodnotou bude číslo 1.
    Pak můžete spustit jednu CF aplikaci, simulovat běžnou práci uživatele a po ukončení aplikace analyzovat nově vygenerovaný soubor mscoree.stat v kořenovém adresáři PDA.


Sunday, October 10, 2004 11:24:00 AM (Central Europe Standard Time, UTC+01:00)       
Comments [0]  Compact .Net Framework


 Thursday, October 07, 2004
Dokážete najít všechny chyby v kódu?

Dokážete poznat všechny nesmysly v tomto kódu? Nejde o žádný reálný příklad, jen o letmé zachycení a nakupení střípků potměšilých nočních programátorských můr, jimiž je moje podvědomí neodbytně zaplavováno a mučeno po duševně drásající  refaktorizaci cizího kódu...;)

using System;
using System.Collections;
namespace DirtyProject.BusinessModel
{
    public class Order
    {
        private int m_id;
        private ArrayList m_orderItems;
        public Order(int id)
        {
            m_id = id;
            LoadOrSave(false);
            m_orderItems = new ArrayList();
        }
        public virtual void DeleteAndNotifyCustomer()
        {
            //Implementace
        }
        public virtual void LoadOrSave(bool save)
        {
            //implementace perzistence
        }
        //Položky objednávky
        public ArrayList OrderItems
        {
            get
            {
                return m_orderItems;
            }
        }
    }

    public class OrderItem
    {
        private Order m_order;
        private int m_orderItemsCount;
        private decimal m_orderItemsPrice;
       
        public OrderItem(Order parent)
        {
            if (parent == null)
                throw new ArgumentNullException();
           
            m_order = parent;
            m_orderItemsCount = 0;
            m_orderItemsPrice = 0;
        }
        public Order Parent
        {
            get
            {
                return m_order;               
            }
            set
            {
                m_order = value;   
            }
        }
        //Počet kusů zboží v objednávce
        public virtual int OrderItemsCount
        {
            get
            {
                return m_orderItemsCount;
            }
            set
            {
                m_orderItemsCount = value;;
            }
        }
        //Celková cena všech kusů zboží v položce objednávce
        public virtual decimal OrderItemsPrice
        {
            get
            {
                return m_orderItemsPrice;
            }
            set
            {
                m_orderItemsPrice = value;
            }
        }
        public virtual void LoadOrSave(bool save)
        {
            //implementace perzistence
        }
    }
}

 



Thursday, October 07, 2004 8:31:00 PM (Central Europe Standard Time, UTC+01:00)       
Comments [18]  Programátorské hádanky


 Wednesday, October 06, 2004
Pavel Koza je MVP - konečně !

Pavel Koza, člověk, který se zasloužil o popularizaci PDA zařízení s operačním systémem Windows Mobile na svém kultovním serveru CEYOU ještě v době, kdy většina z nás tato zařízení považovala jen za předražené hračky, se stal MVP v oblasti Mobile Devices. Víte sami, že příliš často nechválím, ale Pavel Koza byl pro mě bez jakýchkoli pochybností jediným kandidátem v Čechách splňujícím bez kompromisů všechny nároky MVP programu.

Gratuluju Pavle a díky za všechnu práci, kterou ve svém volném čase na CEYOU pro všechny PDA nadšence odvádíš.



Wednesday, October 06, 2004 8:45:00 AM (Central Europe Standard Time, UTC+01:00)       
Comments [1]  Mobilitky | Ostatní


 Monday, October 04, 2004
Metamorfózy a migrace návrhových vzorů

Je vzrušující pozorovat, jak na svém počátku amorfní a abstraktní vzor nabývá svébytného a ostře ohraničeného tvaru pri svém dospívání, když je adoptován různými technologiemi. Zasazením vzoru do jednoho vývojového prostředí a kontextu se může zdát, že je na univerzálnost svého použití aspirující smysl vzoru zastřen a překryt dominantním zaměřením a převládajícími výrazovými prostředky jedné technologie. Každý dobrý návrhový vzor se ale svojí konkretizací v jedné nebo i více technologiích nevyčerpává, ale je připraven vymanit se ze sevření každé technologie a při změně IT paradigmatu znovu nabídnout svoji plnou formativní potenci pro nové postupy, pravidla a vazby ve vývoji. Když se mění technologie, programovací jazyky nebo celé zažité programátorské návyky (strukturální versus objektové programování), tak esence kvalitního návrhového vzoru není dotčena a jeho abstraktní smysl začne být jen artikulován výrazovými prostředky žezlo přebírajícího paradigmatu a z něj vyplývajícího znalostního a pojmového horizontu. Dobrý návrhový vzor participuje na tvorbě struktur nového paradigmatu a současně je nově vznikajícími strukturami přetavován ve svou jinou, parciální a dočasnou formu.

Když nechcete, aby vaše znalosti beznadějně zastaraly za pár měsíců, nebazírujte na zvládnutí programovacích jazyků, vývojových prostředí nebo frameworků, ale stavte své znalosti na návrhových vzorech. .Net Framework nebo J2EE jsem se naučil tak, že jsem se za jednotlivými knihovnami nesnažil vidět deprimující změť tříd a metod, ale harmonii návrhových vzorů.

Jak se projevují migrace a proměny vzorů?

Vezměme si za příklad vzor Asynchronous Completion Token (ACT) popsaný v knize Patterns Oriented Software Architecture (autor Frank Buschmann a kolektiv). Tento vzor popisuje, jak dosáhneme efektivního a na zdroje počítače nenáročného zpracování odpovědí z více asynchronních požadavků. ACT je objekt (v obecném slova smyslu), který unikátně identifikuje každý asynchronní požadavek a slouží k výběru správného zpracovatele odpovědí. Participanti vzory jsou tři - iniciátor asynchronního požadavku, služba, která je volána a ACT pro korelaci požadavků a odpovědí.

V .NET je ACT vzor transformován do speciálního vzoru pro asynchronní volání, kdy je zavedena formální konvence, že asynchronní metody jsou prefixovány slovy Begin (začátek požadavku) a End (Konec požadavku), Každý delegát nabízí metody Begin a End, jejichž posledním parametrem je zase dle konvence jakýkoli objekt, který pak v systému hraje roli ACT. ACT neslouží ale k výběru primárního zpracovatele asynchronní odpovědi, protože ten je na začátku asynchronního volání determinován předposledním parametrem, jímž je delegát AsyncCallBack ukazující na metodu s kompatibilní signaturou. Předaný ACT ale může být klíčem k dynamickému určení sekundárního zpracovatele a/nebo je objektem pro přenos stavových informací.

.Net si tedy ACT vzor přizpůsobil k obrazu svému a vybral si jen některé jeho myšlenky.

ACT se také uplatňuje v SOA - v architektuře založené na službách, které si mezi sebou asynchronně vyměňují tisíce zpráv denně, potřebujeme prostředek pro korelaci zpráv-požadavků a návazných zpráv-odpovědí. V SOA je uplatňován návrhový vzor s názvem Correlation Identifier - v hlavičce zprávy je uložen jednoznačný identifikátor požadavku, který je v hlavičce odpovědi zaslán zpět odesílateli. Jsme v SOA a stále pracujeme se starým dobrým ACT vzorem, jen místo delegátů mluvíme o zprávách, dokumentech a hlavičkách s ACT informací.

Vzor Correlation identifier (a ACT) je dále rozpracováván ve specifikacích pro jednotlivé technologie. Když budeme mít SOA založenou na webových službách, setkáme se s normovaným ACT ve standardu ws:addressing, kde je stanovena a přijata konvence, že ACT musí odesílatel poslat v hlavičce nazvané MessageId a kdy je vyžadováno, aby hlavičku uvedl, a odesílatel je povinen hodnotu z MessageId poslat v hlavičce odpovědi s názvem RelatesTo.

Až skončí éra SOA, webových služeb, .Net Frameworku a přijde jiná, úžasnější, oslnivější a zase skoro dokonalá technologie, na které se bude hlavně dobře vydělávat,;) nepřežijí dílčí implementace ACT v těchto prostředích, ale můžeme si být skoro jisti, že vzor ACT jako bájný Fénix vstane omlazený z popela, změní svůj vnější vzhled, aby byl "in", ale jeho podstata zůstane beze změny, dokud budou existovat asynchronní volání.



Monday, October 04, 2004 8:54:00 PM (Central Europe Standard Time, UTC+01:00)       
Comments [3]  Analytické drobky


 Sunday, October 03, 2004
Trochu chlubení;) - po necelých 14 dnech jsem se dostal do Top 50 v TopListu.

Nedá mi to;). Před necelými 14 dny jsem konečně umístil na svůj blog počítadlo TopListu - a již od minulého týdne se pohybuji v "elitní" TOP 50 českých weblogů.

I když je módní tvrdit, že blog si člověk píše pro sebe a na čtenosti blogu vůbec nezáleží, já si to nemyslím - autistické zápisky smolené pro svoji vlastní potřebu přece nemusím dávat na internet, ale mohu je (a měl bych) ponechat jen na svém počítači. Falešná skromnost pro mě není žádná ctnost - když něco dělám, snažím se být nejlepší, protože jinak bych to přece nemusel dělat vůbec.;)

Jsem rád, že existuje početná skupinka lidí, kterou čtení tohoto blogu baví alespoň tak jako mě jeho psaní. Díky všem vám zahrnutým pod pojmem "unikátní IP".;)



Sunday, October 03, 2004 7:57:00 PM (Central Europe Standard Time, UTC+01:00)       
Comments [8]  Ostatní


 Friday, October 01, 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, October 01, 2004 5:10:00 PM (Central Europe Standard Time, UTC+01:00)       
Comments [10]  Analytické drobky | Ostatní


 Thursday, September 30, 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.

  1. Total Commander CE - Pocket PC verze souborového manažera je stejně podařená jako její starší desktopový bratranec.
  2. 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.
  3. vxUtil - nepostradatelná utilitka pro síťová testování (Ping, TraceRoute, DNS Audit, Port scanner...)
  4. 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.
  5. SharpVault - jednoduchý, ale praktický program na uchovávání přístupových kódů a dalších tajných informací pod jednim heslem.
  6. ICQ - K této aplikací asi není potřeba nic dodávat. PDA verze nejoblíbenějšího klienta pro instant messaging
  7. 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ů.
  8. 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.
  9. 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á.
  10. Qusnetsoft NewsReader - plnohodnotný klient pro čtení zpráv z news (NNTP) serverů.


Thursday, September 30, 2004 8:58:00 PM (Central Europe Standard Time, UTC+01:00)       
Comments [6]  Mobilitky