Archive for apríl, 2012

Intermezzo: Windows 8 a vývojári

18. apríla 2012

Windows 8 prinesie balík noviniek pre používateľov aj vývojárov. Pre bežného používateľa je najviditeľnejšou zmenou nové rozhranie Metro, ktoré je primárne určené pre dotykové zariadenia, ale je samozrejme ovládateľné komfortne aj myšou a klávesnicou. Vývojári desktop aplikácií nemusia podliehať panike, pretože pri ich vývoji sa vôbec nič nemení a stále môžu stavať na Win API a platforme .NET Framework. Novým smerom vývoja je štýl vývoja aplikácií pre Metro rozhranie, pri ktorom sa používa nové API Windows Runtime (WinRT). Aplikácie pre WinRT môžete vyvíjať v jazykoch C++, C#, Visual Basic a Javascript. Používateľské rozhranie vytvárate v XAML alebo HTML5/CSS3.

Pri desktopových aplikáciách sa spôsob inštalácie nemení, a tak sa takéto aplikácie inštalujú a distribuujú ako pri Windows 7. Inštalácia aplikácií do Metro rozhrania prebieha (zatiaľ) výhradne iba cez Windows Store. Viac informácií nájdete na blogoch Windows 8 app developer a Building Windows 8. Pre vývojárov na Slovensku bola príležitosť v rámci TechDays www.techdays.sk (onedlho tu nádjete videá a prezentácie) prípadne môžete využiť možnosť zúčastniť sa v máji Windows 8 Hackathon-u v Brne. Ak už pripravujete aplikáciu do Metro rozhrania vo Windows 8, dajte o tom vedieť do Microsoftu na dpesk@microsoft.com pomôžU vám ju architektúrne doladiť, otestovať a zviditeľniť.

Vývoj Metro aplikácií pre Windows 8: 4 diel – ukladanie údajov

17. apríla 2012

Zhrniem poznatky z predchádzajúceho príspevku. Počas prechodu do stavu “suspended” má aplikácia maximálne 5 sekúnd na to, aby “niekam” uložila neuložené dáta. Potom už nemôže nič. V stave “suspended” je síce aplikácia zavedená v pamäti, no v tomto stave nemôže vykonávať žiadnu činnosť. Ak operačný systém rozhodne, že aplikáciu uspí, urobí tak bez toho aby čokoľvek aplikácii oznamoval. Suma sumárum: aplikácia by mala údaje ukladať priebežne a počas zmienených 5 sekúnd uložiť aktuálne stavové informácie o tom, kde sa momentálne používateľ v aplikácii nachádza. Ako ukladať údaje? K dispozícii je niekoľko možností:

Pre otestovanie si môžete vyrobiť jednoduchú aplikáciu a v XAML kóde navrhnúť dva tlačidlá, jedno pre uloženie údajov, druhé pre ich následný výber a prvok TextBlock pre výpis uložených údajov, prípadne pre výpis potenciálneho chybového hlásenia.

 <Grid Background=”{StaticResource ApplicationPageBackgroundBrush}”>
<Button Content=”Ulož” Margin=”121,106,0,0″ Width=”102″ Click=”Button_Click_Save”/>
<Button Content=”Čítaj” Margin=”121,182,0,0″ Width=”102″ Click=”Button_Click_Load”/>
 <TextBlock x:Name=”tblVypis” Margin=”302,156,0,0″ TextWrapping=”Wrap” Text=”TextBlock”
Width=”477″ Height=”132″/>
</Grid>
Vyskúšajme možnosti ukladania. Meniť budeme kód v procedúrach pre obsluhu udalostí zatlačenia tlačidiel SAVE a LOAD. Ako námet predpokladajme hru kde chceme uložiť čo najviac údajov, napríklad v ktorej úrovni sa hráč nachádzal, meno hráča a podobne.

V úložisku AppData môžeme využiť tri typy ukladania: Local Temp a Roaming.

ApplicationDataContainer LocalSettings

Ako vyplýva z názvu jedná sa o kontajnerové úložisko kam sa ukladajú údaje o nastavení aplikácie. Príklad použitia pre kompozitné údaje:

ApplicationDataContainer localSettings = null;
public BlankPage()
{
this.InitializeComponent();
localSettings = ApplicationData.Current.LocalSettings;
}

void Button_Click_Save(object sender, RoutedEventArgs e)
{
localSettings.Values[“UrovenHry”] = 6;
}

void Button_Click_Load(object sender, RoutedEventArgs e)
{
Object uroven = localSettings.Values[“UrovenHry”];
tblVypis.Text = uroven.ToString();
}

ApplicationDataContainer RoamingSettings

Ako vyplýva z názvu jedná sa o kontajnerové úložisko v roaming app data store. Príklad použitia:

ApplicationDataContainer roamingSettings = null;
public BlankPage()
{
this.InitializeComponent();
roamingSettings = ApplicationData.Current.RoamingSettings;
}

async void Button_Click_Save(object sender, RoutedEventArgs e)
{
ApplicationDataCompositeValue composite = new ApplicationDataCompositeValue();
composite[“MenoHraca”] = “Lubo Lacko”;
composite[“UrovenHry”] = 9;
roamingSettings.Values[“HraSokoban”] = composite;
}

async void Button_Click_Load(object sender, RoutedEventArgs e)
{
ApplicationDataCompositeValue composite = (ApplicationDataCompositeValue)roamingSettings.Values[“HraSokoban”];
string ss = String.Format(“Stavové info: {{{0} = {1}, {2} = \”{3}\”}}”, “MenoHraca”, composite[“MenoHraca”], “UrovenHry”,   composite[“UrovenHry”]);
tblVypis.Text =ss;
}

StorageFile – uloženie údajov do súboru

Často sa pre ukladanie údajov využívajú XML dokumenty. Takýto dokument je vlastne textový súbor. Príklad použitia:

StorageFolder roamingFolder = null;
const string filename = “sokoban.xml”;

public BlankPage()
{
this.InitializeComponent();
roamingFolder = ApplicationData.Current.RoamingFolder;;
}

async void Button_Click_Save(object sender, RoutedEventArgs e)
{
XDocument doc = new XDocument (new XElement(“sokoban”,
new XElement(“hrac”,
new XElement(“meno”, “Lubo”),
new XElement(“dokoncene”, “2”),
new XElement(“urovne”,
new XElement(“uroven1”,
new XElement(“kroky”, “14”),
new XElement(“posuny”, “6”)
)))));
string ss = doc.ToString();
StorageFile file = await roamingFolder.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(file, ss);
}

async void Button_Click_Load(object sender, RoutedEventArgs e)
{
try { StorageFile file = await roamingFolder.GetFileAsync(filename);
tblVypis.Text = await FileIO.ReadTextAsync(file); }
catch (Exception) {tblVypis.Text = “chyba”;}
}

Vývoj Metro aplikácií pre Windows 8: 3 diel – životný cyklus

17. apríla 2012

Životný cyklus nových “metro” aplikácií pre Windows 8 je úplne odlišný. Ak by sme ho chceli maximálne zjednodušiť a popísať jednou vetou: Zatiaľ čo pri klasickej Windows aplikácii o tom kedy aplikácia beží a kedy bude ukončená rozhoduje používateľ, pri METRO aplikáciách pre Windows 8 o tom rozhoduje systém.

Aplikácia sa môže nachádzať v jednom s troch stavov:

  • Running
  • Suspended
  • Terminated

Možnosti prechodov medzi stavmi názorne ukazuje diagram na obrázku

Ako rozhoduje systém o behu aplikácie? Funguje to nasledovne (je to vlastne voľné “prerozprávanie” hore uvedeného stavového diagramu)

  • Systém pozastaví metro aplikáciu, kedykoľvek sa užívateľ prepne na inú aplikáciu alebo na plochu.
  • Systém obnoví aplikáciu keď sa používateľ prepne späť.
  • Po obnove bude obsah premenných a dátových štruktúr rovnaký pred pozastavením aplikácie.
  • Systém by mal obnoviť aplikáciu presne tam, kde bola prerušená, takže sa to celé navonok javí ako keby bola medzitým spustená na pozadí. Aby aplikácia takto fungovala, musí programátor vytvoriť kód pre obsluhu udalostí prechodov medzi stavmi.

Stav “running”

Do tohto, z hľadiska funkcionality kľúčového stavu sa môže aplikácia dostať z dvoch východiskových stavov. Buď sa reaktivuje zo stavu “suspended”, teda aplikácia už bola predtým spustená, alebo sa zavedie do WinRT a spustí. Tento proces nastane vtedy ak aplikácia ešte nebola spustená, alebo bola v stave “suspended” odstránená z pamäti, napríklad pre nedostatok pamäťovej kapacity. Pri spúšťaní aplikácie sa zobrazí úvodná obrazovka, ktorú používateľ vidí počas inicializácie hlavných úloh, ktoré tvoria aplikáciu. Ako náhle sú všetky hlavné úlohy inicializované, úvodná obrazovka sa zatvorí a zobrazí sa používateľské rozhranie aplikácie.

Stav “suspended”

Keď používateľ presunie aplikáciu na pozadie, napríklad prejde na obrazovku Start, prípadne gestom “swipe” prepína medzi aplikáciami, alebo zariadenie na ktorom aplikácia beží prejde do úsporného stavu aplikácia sa sama pozastaví. Medzi stavom “running” a “suspended” je zaujímavý prechodový stav, kedy je aplikácia už na pozadí, no systém ešte 10 sekúnd čaká, aby sa ubezpečil, že používateľ nechce prejsť späť do aplikácie okamžite. Až po uplynutí tohto časového intervalu systém automaticky presunie aplikáciu do úsporného režimu. Počas prechodu môže aplikácia napríklad uložiť neuložené dáta do úložného zariadenia. Na toto uloženie dát má maximálne 5 sekúnd. Aplikácia v stave “suspended” je síce zavedená v pamäti, no v tomto stave nemôže vykonávať žiadnu činnosť.

Podľa toho, koľko má systém k dispozícii pamäťovej kapacity, systém sa snaží udržať pozastavené aplikácie v pamäte, čím zabezpečí, že používateľ môže rýchlo prejsť späť do aplikácie. Vo verzii Consume Preview je možné aplikáciu ukončiť kontextovým menu myši, alebo jej uchopením v hornej časti a “zhodením” dole. Aplikácia sa najskôr suspenduje a potom ukončí. Inak aplikácia zostáva uložená v pamäti tak dlho, pokiaľ má systém k dispozícii dostatok pamäti. Ak začína byť dostupnej pamäti nedostatok, systém na tento stav reaguje tak, že automaticky odstráni nepoužívané aplikácie z pamäte. Systém aplikácii neoznámi, že ju ukončuje, preto je potrebné spracovať neuložené dáta počas prechodu do stavu “suspended”.

Prechodový stav “resuming”

Aplikácia sa prenesie z pamäti do popredia. Počas prechodu môže načítať údaje, ktoré boli uložené počas pozastavenia.

Vývoj Metro aplikácií pre Windows 8: 2 diel Ladenie na simulátore

16. apríla 2012

Metro aplikácie sú predurčené k tomu aby bežali na celej obrazovke a dokázali reagovať nielen na multidotykové podnety od používateľa, ale aj na akcie, ktoré boli dosiaľ u Windows aplikácií nemysliteľné, napríklad zisťovať orientáciu zariadenia, spravidla tabletu na šírku/na výšku a tomu uspôsobiť aktuálne zobrazenie, prípadne reagovať na podnety zo senzorov, napríklad z akcelerometra, náklonomeru, GPS a podobne. Rovnako je potrebné otestovať aj rôzne multidotykové gestá. Prvky používateľského rozhrania Metro aplikácie reagujú na ovládanie dotykom prstami, dotykovým perom, aj na klasické ovládanie myšou. Na simulátore sa spôsob ovládania prepína pomocou ikon v jeho pravom ráme. Na reálnom zariadení, napríklad na tablete s pripojenou myšou môžete ľubovoľne kombinovať dotyky aj ovládanie myšou. Spôsob ovládania je signalizovaný aj graficky, v mieste dotyku sa zobrazí zodpovedajúca ikona.

Skôr, než budete publikovať svoje aplikácie do Windows Store, mali by ste otestovať aplikáciu na skutočnom zariadení. V dobe dostupnosti Visual Studio 11 Beta je takýchto tabletov ako šafránu a tak je potrebné spomínané udalosti simulovať a aplikáciu otestovať aspoň na simulátore.

Obr. 2: Simulátor pre testovanie Metro Style aplikácií

Módy fungovania Metro aplikácií

Teraz keď už máme zvládnuté fungovanie simulátora tabletu s Windows 8, môžeme sa pustiť do vývoja Metro Style aplikácií. Hoci Metro aplikácie pobežia aj na klasických PC ovládaných klávesnicou a myšou a dokonca vďaka novému prehľadnému dizajnovému štýlu môžu byť informačne bohatšie, než klasické Windows aplikácie, ich primárne smerovanie bude na novú generáciu zariadení, prevažne tabletov. U týchto zariadení bude každý predpokladať, že aplikácia sa automaticky prispôsobí zmene orientácie zariadenia, možno s výnimkou niektorých špeciálnych typov aplikácií, napríklad hier, ktoré si vynútia konkrétnu orientáciu .

Vo všeobecnosti by mala Metro aplikácia fungovať v štyroch základných zobrazovacích módoch. Prvé dva bude najlepšie ilustrovať dvojica obrázkov zmeny usporiadania konkrétnej aplikácie po zmene orientácie zariadenia, na ktorom aplikácia beží.

Obr. 3: Režim fungovania “na šírku”

Obr. 4: Režim fungovania aplikácie “na výšku”

Nakoľko displej väčšiny tabletov je obdĺžnikový, pri zmene orientácie je potrebné logicky nielen obraz “natvrdo” preklopiť o 90 stupňov, ale aj zmeniť rozloženie jednotlivých ovládacích prvkov. Pri rozmiestňovaní prvkov je potrebné brať do úvahy odporúčanie kam je vhodné umiestniť prvky, ktoré sa používajú na ovládanie dotykom a kam prvky, ktoré prezentujú obsah. Na obrázku 5 si všimnite svetlé zóny optimálneho umiestnenia ovládacích prvkov pri ľavom a pravom dolnom rohu. Najčastejšie sa tablet bude používať tak, že ho držíte obidvoma rukami za dolné rohy a spomínaná zóna udáva akčný rádius palcov obidvoch rúk.

Obr. 5: Odporúčanie pre ideálne rozmiestnenie prvkov

To však nie je všetko. Každá Metro aplikácia musí navyše podporovať aj režim zobrazenia “na výšku” po strane obrazovky, takzvaný “snap” stav. Na obrazovku je takto možné umiestniť dve aplikácie, čo môže byť výhodné pri ich vzájomnej interakcii, napríklad ak používateľ kopíruje niektoré údaje z jednej aplikácie do druhej cez schránku. Z detailnejšieho pohľadu, “snap” môže mať dva stavy. Buď je v úzkom páse zobrazená naša aplikácie, alebo opačne, v úzkom páse vľavo alebo vpravo je zobrazená iná aplikácia a naša aplikácia vtedy beží na zvyšných približne troch štvrtinách plochy displeja

Obr. 6: Režim fungovania aplikácie v ľavom (alebo pravom) zvislom páse.

Ak virtuálna plocha, ktorú aplikácia využíva je väčšia, ako rozmer obrazovky, odporúča sa, aby bola v pravej, ľavej, hornej, prípadne dolnej časti zobrazeného výrezu tejto plochy aspoň v úzkom pásiku časť obsahu susednej obrazovky. Je to preto, aby používateľ vedel, že má k dispozícii aj ďalší obsah na ktorý sa môže pomocou gesta presunúť. Dobrý príklad je na obr. 2 kde sa pri ľavom okraji zobrazujú časti dlaždíc na susednej obrazovke.

 

 

Vývoj Metro aplikácií pre Windows 8: 1 diel Nástroje a projekty

16. apríla 2012

Ak teda chcete začať s vývojom aplikácií pre Windows 8 “na zelenej lúke”, nainštalujte si na vývojársky počítač jeho momentálne dostupnú verziu Consumer Preview (http://preview.windows.com), vývojové prostredie Visual Studio 11 (www.microsoft.com/visualstudio/11) a prípadne aj SQL Server 2012

Architektúra

Na najnižšej úrovni architektúry je jadro operačného systému a nad ním aplikačný model WinRT APIs (Windows Runtime API), Vrstva aplikačného modelu pozostáva z modulov pre údaje, komunikáciu, grafiku, média a modul pre podporu externých zariadení

Schéma architektúry poskytuje zároveň aj názornú odpoveď ohľadne kompatibility so staršími verziami Windows. Metro style aplikácie pobežia len na Windows 8. Ak chcete aby aplikácia bežala aj na Windows 7, musíte vytvoriť projekt klasickej desktopovej aplikácie.

Metro style aplikácie môžete vytvárať jednak s prezentačným rozhraním XAML a aplikačnou logikou naprogramovanou v jazykoch C, C + +, C #, či VB, alebo s využitím nového štandardu HTML5 a aplikačnou logikou v JavaScripte.

Vývojárske nástroje

V novej verzii Visual Studia 11 (možno finálna verzia bude mať označenie 2012) v porovnaní s verziou 2010 pribudli šablóny projektov “Windows 8 Metro style applications”, ktoré je možné vyvíjať v programovacích jazykoch Visual Basic, C#, C++ a HTML5/JS

Šablóny projektov Metro Style aplikácií

Pri prvom vytváraní projektu “Metro style” aplikácie, bez ohľadu na to, či ste si ako programovací jazyk zvolili Visual Basic, Visual C#, prípadne JavaScript budete upozornení, že na to aby ste mohli spúšťať aplikácie na svojom lokálnom počítači s operačným systémom Windows 8 Consumer Preview potrebujete takzvanú vývojársku licenciu. Dôvod je jednoduchý. Bežnou a pravdepodobne jedinou distribučnou cestou pre “Metro” aplikácie bude Microsoft Store, kde si budú môcť záujemcovia príslušnú aplikáciu kúpiť, prípadne získať zdarma, podľa toho aký spôsob šírenia si jej tvorcovia vybrali. Bez ohľadu na to, či bude aplikácia šírená za poplatok, alebo zdarma, bude pred umiestnením do Store Microsoftom dôkladne otestovaná, či spĺňa nutné formálne požiadavky a hlavne či neobsahuje škodlivý kód.

Vývojárska licencia umožní vývojárovi, aby si na aplikáciu najskôr otestoval na svojom vlastnom počítači, ešte predtým, než bude Microsoftom schválená. Aby proces schvaľovania aplikácie nebol pre vývojára stresom s neistým koncom, k dispozícii má rovnakú sadu testov, ktorá bude na jeho produkt aplikovaná pri finálnom schvaľovaní. Vývojárska licencia je spojená s konkrétnym počítačom.

Okrem základnej šablóny prázdnej XAML aplikácie sú k dispozícii aj špeciálne šablóny Grid Application a Split Application.

V prípade týchto šablón projektov zameraných na najpoužívanejšie typy používateľského rozhrania budú mať najväčšiu vypovedaciu hodnotu komentované obrázky novej aplikácie vytvorenej podľa príslušnej šablóny.

Hlavným motívom Grid aplikácie je mriežka objektov. Takto je možné vytvárať aplikácie ktoré pracujú z obrázkami, ponukové katalógy a podobne. Je to grafický ekvivalent zobrazenia typu master – detail. Vľavo je základná ponuka, ktorá sa zobrazí po spustení aplikácie. Vpravo je stránka zobrazujúca detaily o vybranom objekte

Príklad reálnej Grid aplikácie pre zobrazenie RSS príspevkov

Aj šablóna Split Apllication je typické master detail zobrazenie použiteľné na ponuky a zoznamy rôzneho druhu. Vľavo môže byť zoznam osôb, mailových správ, produktov aj s obrázkami a v pravo sa aktuálne zobrazia informácie o vyselektovanej entite.

Ak vás zaujíma ako sú v týchto šablónach definované údaje, ktoré sa zobrazujú v šablónach aplikácií všetko vysvetlí fragment kódu v jazyku C#.

public SampleDataSource(Uri baseUri)

{

String LONG_LOREM_IPSUM = String.Format(“{0}\n\n{0}\n\n{0}\n\n{0}”,

“Curabitur class aliquam vestibulum nam curae ….”);

 

GroupedCollections = new List<SampleDataCollection>();

 

AddCollection(“Collection 1”,

“Maecenas class nam praesent cras aenean mauris aliquam nullam aptent accumsan duis nunc curae donec integer auctor sed congue amet”,

baseUri, “SampleData/Images/LightGray.png”,

http://www.adatum.com/&#8221;,

“Pellentesque nam”,

“Curabitur class aliquam vestibulum nam curae maecenas sed…”,

LONG_LOREM_IPSUM);

 


}

 

Na záver trochu motivácie

V tejto fáze máte pripravené a otestované základné prostredie pre vývoj aplikácií a môžete začať realizovať svoje nápady. Asi budete namietať že ešte je čas, veď zatiaľ nie je dostupná ani len prvá verejná beta. Skúste sa zamyslieť a sami si odpovedať na dve otázky:

  • Prečo Microsoft predstavil nový operačný systém najskôr komunite vývojárov a prečo im rozdal 5000 tabletov s predinštalovaným vývojovým prostredím?
  • Prečo je Windows Store je zatiaľ prázdny?

Úspech každého operačného systému závisí hlavne od dostupnosti kvalitných aplikácií. Kým bude uvoľnená prvá verejná beta Windows 8, predpokladá sa, že vývojári už umiestnia na Windows Store aspoň niekoľko desiatok aplikácií. Je to odôvodnený predpoklad, nakoľko z 5000 vývojárov sa určite nájde pár percent takých, ktorí vycítia príležitosť. Windows 8 je vzhľadom k obrovskému počtu potenciálnych používateľov možno najväčšia príležitosť pre startup biznis v dejinách. Model distribúcie cez Window Store si od vývojárov nevyžaduje prakticky žiadne investície do predajných kanálov. Tržba z predaja sa bude rozdeľovať podľa jednoduchého kľúča: dve tretiny vývojárovi a jedna tretina Microsoftu