středa 6. dubna 2016

Windows 10 (část 2.)

RAD Studio 10 Seattle a Windows 10 (část 2.)

V minulém příspěvku jsme si ukázali, jak provázat aplikace vyvíjené v prostředích Delphi nebo C++ Builder 10 Seattle s centrem akcí operačního systému Windows 10, nebo jak použít nové vizuální styly.
Další novou komponentou pro knihovnu VCL, která je navržena pro podporu nových Windows 10 je ovládací prvek "SplitView". Komponenta SplitView je obdobou komponenty MultiView, která je součástí knihovny FireMonkey pro návrh multiplatformních aplikací. Jedná se o výsuvný panel, který může být použit k umístění libovolných ovládacích prvků. S použitím výsuvných panelů se můžeme setkat jak přímo u Windows 10, tak u mnoha dalších aplikací v čele s kancelářským balíkem Microsoft Office.

Výsuvné panely Win10 a MS Office

Realizace podobných výsuvných nabídek je nyní ve vývojových prostředích Delphi a C++Builder poměrně jednoduchou záležitostí. Jednou z možných variant je právě použití komponenty SplitView a komponenty CategoryButtons, která nabízí velmi široké možnosti pro přizpůsobení vzhledu a chování.

SplitView

Důležitá nastavení pro panel SplitView jsou:
Placement - Určuje umístění panelu v rámci formuláře. SplitView lze aktuálně uchytit k levé (svpLeft) nebo pravé (svpRight) hraně okna.
CloseStyle - Jak název napovídá, upravuje toto nastavení chování panelu při jeho skrytí. To může být buď úplné (svcColapse), nebo částečné (svcCompact). Šířku vysunutého a částečně skrytého panelu lze určit dle potřeby.
DisplayMode - Nastavení, které ovlivňuje, zda klientská oblast formuláře je či není dotčena zobrazením panelu. Pokud ne (svmOverlay), panel při vysunutí "překrývá" vizuální prvky umístěné v oblasti, kde se panel SplitView zobrazí. V opačném případě (svmDocked) budou komponenty, které mají pozici určenou relativně ke klientské oblasti formuláře panelem "odsunuty".  
UseAnimation - Určuje, zda má být pro zobrazení/skrytí SplitView použita animace (panel se neobjeví, ale je vysouván postupně). Pokud je animace zapnuta, lze nastavit počet kroků (parametr AnimationStep) a časový odstup (parametr AnimationDelay) mezi nimi. Kombinací těchto atributů lze měnit plynulost, s jakou se bude komponenta SplitView zobrazovat.


Delphi


// Nastavení SplitView
SplitView1.Placement := svpLeft;
SplitView1.CloseStyle := svcCompact;
SplitView1.DisplayMode := svmDocked;
SplitView1.UseAnimation := True;
SplitView1.AnimationStep := TrackBar1.Position;
SplitView1.AnimationDelay := TrackBar2.Position;

// Zobrazení panelu
procedure TForm1.Button1Click(Sender: TObject);
begin
  if SplitView1.Opened then
    SplitView1.Close
  else
    SplitView1.Open;
end;



C++Builder


// Nastavení SplitView
SplitView1->Placement = svpRight;
SplitView1->CloseStyle = svcCollapse;
SplitView1->DisplayMode = svmOverlay;
SplitView1->UseAnimation = True;
SplitView1->AnimationStep = 50;
SplitView1->AnimationDelay = 30;

// Zobrazení panelu
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  if (SplitView1->Opened) {
 SplitView1->Close();
} else {
 SplitView1->Open();
}
}

CategoryButtons

Pro návrh nabídky, kterou lze uživateli zobrazit s využitím SplitView můžeme použít komponentu CategoryButtons. Tato komponenta slouží jako kontejner pro správu tlačítek. Tlačítka lze členit do kategorií, které lze dle potřeby skrýt (sbalit) nebo zobrazit (rozbalit). Tlačítka mohou kromě textu obsahovat i grafiku.

Součásti komponenty CategoryButtons


Pokud se chceme vzhledem co nejvíce přiblížit výsuvným nabídkám operačního systému Windows 10, musíme pro CategoryButtons změnit některá nastavení.


Delphi


V případě, že chceme u jednotlivých tlačítek zobrazit kromě textu i ikony, připravíme si vhodnou grafiku. Tlačítkům můžeme ikony přiřadit jak přímo, tak odkazem na index komponenty ImageList, kterou můžeme použít jako kontejner:
CategoryButtons1.Images := iList;

Pokud pro SplitView nastavíme částečné skrývání (svcCompact), je vhodné ve stavu closed zneviditelnit popisky tlačítek (z čistě estetického důvodu):
CategoryButtons.ButtonOptions := 
CategoryButtons.ButtonOptions - [boShowCaptions];

Dále skryjeme rámeček, aby tlačítka působila jako nedílná součást SplitView:
CategoryButtons.BorderStyle := bsNone;

Tlačítka ukotvíme ke komponentě SplitView:
CategoryButtons.Anchors := [akLeft, akRight];

Dle potřeby upravíme písmo pro popisky tlačítek:
CategoryButtons.Font.Size := 11;
CategoryButtons.Font.Color := clWhite;

Odpovídajícím způsobem upravíme také vzhled tlačítek:
// Výšku tlačítka
CategoryButtons.ButtonHeight := 45;
// Standardní barvu tlačítky
CategoryButtons.RegularButtonColor := clNone;
// Barva stisknutého tlačítka
CategoryButtons.SelectedButtonColor := clNone;
// Barva tlačítka nad kterým je kurzor myši 
CategoryButtons.HotButtonColor := clGray;
// Šířka tlačítka přes celou šířku komponenty CategoryButtons 
CategoryButtons.ButtonOptions := 
CategoryButtons.ButtonOptions + [boFullSize];
// Tlačítka nebudou v rámečku kategorie 
CategoryButtons.ButtonOptions := 
CategoryButtons.ButtonOptions + [boCaptionOnlyBorder];
// Horizontální zobrazení kategorií
CategoryButtons.ButtonOptions := CategoryButtons.ButtonOptions
- [boVerticalCategoryCaptions];



Stejný kód pro C++Builder

CategoryButtons->Images = iList;
CategoryButtons->Categories->Items[0]->Items->Items[0]->ImageIndex = 0;
CategoryButtons->ButtonOptions =
CategoryButtons->ButtonOptions<<boShowCaptions;
CategoryButtons->BorderStyle = bsNone;
CategoryButtons->Anchors = CategoryButtons->Anchors<<akLeft<<akRight;
CategoryButtons->Font->Size = 11;
CategoryButtons->Font->Color = clWhite;
CategoryButtons->ButtonFlow =cbfHorizontal;
CategoryButtons->ButtonHeight = 45;
CategoryButtons->RegularButtonColor = clNone;
CategoryButtons->SelectedButtonColor = clNone;
CategoryButtons->HotButtonColor = clGray;
CategoryButtons->ButtonOptions =
CategoryButtons->ButtonOptions<<boFullSize;
CategoryButtons->ButtonOptions =
CategoryButtons->ButtonOptions<<boCaptionOnlyBorder;
CategoryButtons->ButtonOptions =
CategoryButtons->ButtonOptions>>boVerticalCategoryCaptions;

Výsledkem by měl být zhruba následující vzhled nabídky:

Výsledný vzhled aplikace

Zdrojový kód aplikací je dostupný na adrese:
https://onedrive.live.com/redir?resid=E2F9F7B64CA96B45!1281&authkey=!AEQdxr-4pbMpuhA&ithint=folder%2c

K tomuto článku je k dispozici i videoturoriál:


úterý 22. března 2016

Windows 10 (část 1.)

RAD Studio 10 Seattle a Windows 10

Ještě do 29. července 2016 mohou všichni uživatelé, kteří na svém PC používají Windows 7 a vyšší využít bezplatného přechodu na Windows 10. Takto získaná licence je vázána na konkrétní počítač, není však časově ani funkčně omezena. Jednou z hlavních výhod přechodu na Windows 10 jsou aktualizované ovladače, podpora některých nových technologií a vyšší úroveň zabezpečení systému. Důležitá je také podpora systému ze strany společnosti Microsoft, která je pro Windows 10 garantována do roku 2020 respektive do roku 2025.

Společnost Emabarcadero zareagovala vydáním nové verze vývojových nástrojů 10 Seattle. Ty umožňují využít mnohé z nových vlastností, které Windows 10 přinesly:

Vylepšení na úrovni prostředí
  • RAD Studio IDE je schopno pracovat s větší velikostí paměti
  • Prostředí podporuje práci s více monitory a s monitory 4K
Nové doplňky a komponenty
  • Nové vizuální styly Windows 10
  • Možnost provázání aplikace s centrem akcí
  • Nové komponenty „SplitView“ a „RelativePanel“
  • Sdílení dat aplikace prostřednictvím „Share Contracts“
  • Windows 10 ovládací prvky „SearchButton“, „ToggleSwitch“ a „ActivityIndicator“
Vzhled aplikace (stylování)
Spolu s uvedením verze 10 Seattle uvolnila společnost Embarcadero nové styly pro knihovny VCL a FireMonkey. Upravit stávající aplikaci tak, aby si uživatel mohl změnit její vzhled, je velmi jednoduché. Nejprve ve vlastnostech projektu (Shift+Ctrl+F11), v sekci „Application/Appearance“ je třeba vybrat styly, které mají být uživatelům k dispozici pro individuální nastavení.

Výběr dostupných stylů


Pozor! Základní styl "Windows" nesmí být nastaven jako defaultní.

V kódu je třeba do sekce uses přidat odkaz na jednotku vcl.Themes. To nám umožní využívat služby Správce Stylů. Pro výběr požadovaného stylu můžeme použít například komponentu ComboBox.


Delphi


uses
  …, Vcl.Themes;

// ComboBox naplníme dostupnými styly:
procedure TForm1.FormCreate(Sender: TObject);
var
  StyleName: String;
begin
  for StyleName in TStyleManager.StyleNames do
    cb1.Items.Add(StyleName);
end;

// Do události OnChange komponenty ComboBox přidáme
// kód pro změnu aktuálního stylu:

procedure TForm1.cb1Change(Sender: TObject);
begin
  TStyleManager.SetStyle(cb1.Text);
end;


C++ Builder


//Do hlavičkového souboru doplníme
#include <Vcl.Themes.hpp>

//Naplnění ComboBoxu:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  DynamicArray<String> styleNames = Vcl::Themes::TStyleManager::StyleNames;
  for (int i = 0; i < styleNames.Length; ++i)
     {
       String styleName = styleNames[i];
       cb1->Items->Add(styleName);
     }
}

//Nastavení zvoleného stylu:
void __fastcall TForm1::cb1Change(TObject *Sender)
{
  TStyleManager::SetStyle(cb1->Text);
}

Výsledný vzhled aplikace


Spolupráce aplikace s Centrem Akcí
Windows 10 si kladou za cíl být jednotící platformou, která na všech typech zařízení umožní uživatelům pracovat tak, jak jsou zvyklí. Protože přibývá uživatelů, kteří si své návyky přináší z chytrých telefonů nebo tabletů, setkáme se ve Windows 10 i s prvky, které byly dříve výhradně doménou mobilních zařízení. 
Jedním z nich je "Centrum akcí". Podobně jako u systémů Android nebo iOS se jedná o rychle přístupnou oblast, prostřednictvím které je uživatel informován o důležitých událostech, a z které lze realizovat většinu běžných úloh.

Centrum akcí (Android, iOS, Win10)
  

Služeb "Centra akcí" mohou využívat i aplikace napsané v Delphi nebo C++Builderu 10 Seattle. Pro tento účel zde přibyla VCL komponenta TNotificationCenter. S využitím komponenty „Notification“ stačí vytvořit novou instanci upozornění, nastavit potřebné parametry a odeslat „Centru akcí“. Komponenta rovněž umožňuje ošetřit událost „ReceiveLocalNotification“, která je vyvolána, když uživatel potvrdí přijetí oznámení (klikne na něj myší). Z aplikace tak můžeme uživatele informovat o libovolné události (např. dokončení nějaké operace) a pokud uživatel zprávu přijme, aplikaci maximalizovat nebo zobrazit odpovídající formulář či dialog.


Delphi


uses
  ..., System.Notification;

procedure TForm1.Button1Click(Sender: TObject);
var
  nt: TNotification;
begin
  // Vytvoření upozornění
  nt := TNotification.Create;
  nt.Name := 'Test';
  nt.Title := 'Testovací oznámení';
  nt.AlertBody := 'Operace byla úspěšně dokončena.';
  // Zobrazení upozornění
  nc.PresentNotification(nt);
end;

// Zpracování
procedure TForm1.ncReceiveLocalNotification(Sender: TObject;
  ANotification: TNotification);
begin
  ShowMessage('Upozornění přijato uživatelem');
end;


C++Builder


// Odeslání zprávy
void __fastcall TForm1::btnPoslatZpravuClick(TObject *Sender)
{
  TNotification *nc = NotificationCenter1->CreateNotification();
  nc->Name = "Test";
  nc->Title = "Testovací oznámení";
  nc->AlertBody = "Operace byla úspěšně dokončena.";
  NotificationCenter1->PresentNotification(nc);
}

// Zpracování
void __fastcall TForm1::NotificationCenter1ReceiveLocalNotification(TObject *Sender,
            TNotification *ANotification)
{
  ShowMessage("Upozornění přijato uživatelem");
}

Zobrazení oznámení (lišta, centrum akcí)


Pozor! Chování centra akcí lze do velké míry přizpůsobit. Pokud se upozornění z Vaší aplikace v "Centru akcí" nezobrazuje, zkontrolujte si, že je tato možnost v nastavení Windows 10 povolena.

Komponenta „Notification“ je dostupná nejen pro knihovnu VCL, ale rovněž pro FireMonkey. Možnosti práce s oznámeními se na různých platformách mírně liší. Například zvuková signalizace, použití visaček (Badges) nebo zobrazení upozornění v určený čas nemusí být podporováno na všech platformách.

Funkce dle platforem


K tomuto článku je k dispozici i videoturoriál a to na adrese: https://www.youtube.com/watch?v=5hfzo9bHP6E



čtvrtek 29. října 2015

RAD Studio 10 Seattle

Změny v licencovaní a registraci

Uvedením nové řady produktů RAD Studio, Delphi a C++Builder 10 Seattle došlo k úpravám některých mechanismů a procesů spojených s jejich licencováním, instalací a registrací. Zde naleznete některá doporučení, která by Vám měla pomoci s nejčastějšími otázkami:

Předplatné

Počínaje verzí XE8 společnost Embarcadero dodává většinu oprav pouze uživatelům s aktivní podporou, tedy těm, kteří mají zakoupeno tzv. "předplatné aktualizací". Výrazně tak přibývá uživatelů, kteří tuto službu využívají. Součástí technické podpory je také údržba verzí ("maintenance"), která po dobu platnosti garantuje uživateli bezplatné získání všech nově vydaných verzí. Dříve platilo, že po uvedení nové verze byl uživatelům odeslán e-mail, který je vyzval k vyzvednutí sériového čísla na portálu údržby ("maintenance portal)" a obsahoval zároveň i potřebné přihlašovací údaje. Bohužel se často stávalo, že zpráva kvůli antispamovým filtrům, změnám e-mailových adres a podobným důvodům nebyla doručena.

Počínaje verzí 10 Seattle uživatelům s předplatným jejich sériové číslo zůstává. Je-li k dispozici nová verze, stačí si ji jen stáhnout. Instalace se pokusí vyhledat existující licenci a provést s jejím využitím aktivaci produktu. Na maintenace portálu tak již naleznete pouze upozornění, které o této změně informuje.

Maintenance portal - upozornění.

Ověření předplatného

Období platnosti technické podpory bývá uvedeno v potvrzovacím e-mailu a také na faktuře. V řadě případů však nemusí být kupující, správce licence a  uživatel tatáž osoba. Pokud nemáte k výše uvedeným podkladům přístup, nevadí. Zda je Vaše předplatné aktivní, si nově můžete kdykoliv ověřit za pomoci aplikace „LicenseManager“. Naleznete ji v adresáři „bin“ Vaší instalace RAD Studia. Jsou zde uvedeny všechny důležité informace, které se Vaší licence týkají.

License manager

Který způsob instalace zvolit

Vývojové nástroje společnosti Embarcadero lze zakoupit v několika edicích, které se od sebe liší nabízenými funkcemi. Instalační média se podle edic neliší, ale obsahují vždy všechny dostupné funkce pro RAD Studio Enterprise (tedy jak pro Delphi, tak C++ Builder v edici Enterprise). O tom, co bude skutečně instalováno, rozhoduje zadané sériové číslo. Instalovat lze z webu nebo z instalačních médií.

Webová instalace - na počítač se stáhne relativně malý instalační program (cca 50 MB), který však po spuštění všechny binární soubory získává z Internetu a ukládá je do pomocného adresáře na disku. Výhodou je, že se soubory stahují v průběhu instalace produktu. Lze tak začít ihned, nic dalšího nepotřebujete. Webovou instalaci nelze použít, pokud nemáte k dispozici přístup k Internetu, nebo je Vaše připojení pomalé. Nejedná se o také ideální volbu, pokud hodláte produkt instalovat na více počítačích. Webová instalace má výrazně vyšší nároky na diskový prostor.

Instalační média - fyzická média již společnost Embarcadero standardně nedodává. Produkty jsou dodávány formou ESD (Electronic Software Delivery). Média si tak musíte objednat zvlášť, nebo si je vytvořit ze stáhnutého ISO obrazu. Odkazy na stažení obrazů instalačních médií naleznete na stránkách českého zastoupení.

ISO soubor lze připojit („namapovat“) jako virtuální disk. Z pohledu uživatele se pak jeví jako standardní mechanika s vloženým CD/DVD/Blue-ray diskem. Pro tento způsob práce s ISO souborem budete potřebovat pomocný software. Doporučované jsou nástroje jako VirtualClone Drive (viz obr. "Práce s ISO soubory" bod 1) , nebo MS Virtual CD Control.

Pro "vypálení" staženého ISO souboru je potřeba především vlastní fyzické médium. Protože velikost u RAD Studia 10 Seattle přesahuje kapacitu běžného DVD (4,7 GB), je třeba použít DVD+R DL (8.5 GB) nebo BD-R (25 GB). K zápisu na zvolené médium lze použít nástroje Windows (viz obr. "Práce s ISO soubory" bod 2), nebo prakticky libovolný vypalovací software.

Práce s ISO soubory

Odkazy na instalační média naleznete na http://www.embt.cz/cs/stranky/68-instalacni-media. Média jsou typicky dostupná ve dvou variantách, tedy pro registrované a pro neregistrované uživatele. Prvně uvedená jsou určena uživatelům s aktivním předplatným, nebo uživatelům, kteří již mají daný produkt registrovaný na svém účtu EDN. Naleznete zde i speciální instalaci pro uživatele síťových licencí. Naproti tomu média pro neregistrované uživatele si může stáhnout každý, kdo má účet EDN založený.

Doporučení pro instalaci

Pro bezproblémovou instalaci je doporučeno dodržet následující doporučení:
  • Zkontrolujte si, že počítač splňuje doporučené minimální nároky, především pak volný prostor na pevném disku.
  • Ověřte název účtu (jméno uživatele) pod kterým hodláte produkt instalovat. Nesmí neobsahovat diakritiku. 
  • Ověřte si, že máte dostatečná oprávnění. Instalaci se doporučuje provádět pod účtem s právy lokálního administrátora.
  • Připravte si všechny potřebné údaje (přihlašovací údaje k EDN účtu, sériová čísla, instalační média a podobně).
  • Před zahájením instalace si vytvořte bod obnovy operačního systému.
  • Během instalace je vhodné vypnout antivirovou kontrolu a případně také UAC (User Access Control)
  • Produkt musí být instalován pro všechny uživatele ("All Users").
  • Produkt zaregistrujte, zazálohujte licence a uložte si přihlašovací údaje k EDN.
  • Vyzvedněte si starší verze produktů a další případné bonusy. Ve většině případů mají tyto nabídky omezenou platnost a později se k nim již nemusíte dostat!
  • Instalujte rozšiřující produkty a komponenty.
  • Po úspěšné instalaci opět vytvořte bod obnovy operačního systému.

Instalace produktu "pod předplatným"

Jak již bylo řečeno, dodání nových verzí produktů v rámci předplatného již není realizováno prostřednictvím "Maintenance portálu". Způsob instalace a aktivace licence se liší podle typu licence, kterou uživatel vlastní.

Pojmenované licence - Pro instalaci a registraci pojmenované ("Named User") licence se použije sériové číslo předchozí verze. 
  • Pokud je na počítači instalována předchozí verze produktu, instalační průvodce ji automaticky detekuje a použije. 
  • Pokud provádíte instalaci na stroji, kde předchozí verze produktu instalována není, zvolte "I already have a product serial number". Následně vložíte Vaše sériové číslo pro předchozí verzi.
Síťové licence - Pro instalaci síťových pojmenovaných nebo síťových souběžných licencí je třeba provést takzvaný "rehosting" licenčního certifikátu získaného spolu s předchozí verzí. Správce licencí se musí přihlásit k licenčnímu serveru a z nabídky vybrat "License Hosting". Po zadání přihlašovacích údajů a čísla licenčního certifikátu (údaje jsou uvedeny v licenčním e-mailu) předchozí verze se načtou aktualizované licenční soubory. 

"Rehosting licence"

Na jednotlivých stanicích se pak provede instalace produktu. Použít je třeba instalační média pro síťovou instalaci. Odkaz pro jejich stažení je vždy uveden na téže stránce, kde jejich nesíťová varianta pro registrované uživatele.

Média pro síťové licence

Zkušební verze

Jak bývá zvykem, všechny vývojové nástroje společnosti Embarcadero si může zákazník před zakoupením vyzkoušet. Pro tento účel je k dispozici speciální "trial" licence. Ta se od placené "komerční" licence liší v následujících bodech:
  • Licence je funkční po omezenou dobu (30 dní). 
  • Licence je dostupná pouze v edici Architect. 
  • Není k dispozici zdrojový kód knihoven VCL a FMX. 
Zkušební verzi je doporučeno instalovat do zvoleného virtuálního prostředí (VMware, VirtualBox, MS Virtual PC a další). Produkt lze odinstalovat standardními prostředky operačního systému. Na počítači však zůstávají uchovány některé licenční informace. To je třeba brát v úvahu, pokud následně hodláte instalovat placenou licenci. Nově hledá instalace RAD Studia, Delphi nebo C++ Builderu předchozí licence. Nalezne-li tak informaci o dříve instalované zkušební verzi, převezme automaticky její licenční informace (včetně data expirace). Uživatel není vyzván k zadání sériového čísla a nainstalovaný produkt neodpovídá zakoupené licenci. V takovém případě neprovádějte odinstalaci, ale pouze změňte licenci! Instalátor následně doplní nebo naopak odstraní příslušné součásti a komponenty.

Instalace Add-On balíčků, změna licence

U vývojových nástrojů společnosti Embarcadero lze provést změnu konfigurace i u již instalovaného software. Tuto možnost lze použít v případech, kdy potřebujeme:
  • Změnit zkušební verzi na trvalou komerční licenci.
  • Doplnit další funkce produktu (instalace FireDAC nebo Mobile Add-On).
  • Opravit poškozenou nebo nedokončenou instalaci.
Ve Windows 7 nalezneme tuto možnost přímo ve skupině programů instalovaných RAD Studiem.

Změna konfigurace - Windows 7

Ve Windows 10 je třeba otevřít „Ovládací panely“ a v sekci „Programy a funkce“ vybrat RAD Studio a volbu „Změnit“.

Změna konfigurace - Windows 8.x a vyšší

Po spuštění se otevře dialog, který umožňuje zvolit požadovanou akci. Volba „Upgrade“ dovoluje změnit edici nástroje nebo doinstalovat přídavné balíčky, pomocí „Modify“ můžeme přidávat nebo odebírat jednotlivé součásti stávající instalace a „Remove“ kompletně odstraní program z počítače.

Provedení "Upgrade"

Pokud zvolíme „Upgrade“, je následně třeba zadat sériové číslo zakoupené licence RAD Studia, Delphi, C++ Builderu nebo Add-On balíčku a spuštěný instalátor provede odpovídající změny.

neděle 31. května 2015

AppAnalytics

Vývojové nástroje Delphi a C++ Builder nabízí mnoho rozšíření, které zefektivňují nebo usnadňují proces tvorby aplikace. Při kódování aplikace nám asistuje Castalia, do prostředí lze integrovat systémy pro správu verzí jako je Subversion nebo GIT, technologie LiveBindings nabízí mimo jiné rychlé prototypování aplikací a s přizpůsobením aplikace různým typům zařízení pomůže návrhář FireUI.
Verze XE8 jde ještě dál a přináší vývojářům možnost zvýšit "User Experience" svých aplikací. Najít pro "User Experience" přijatelný český překlad není vůbec jednoduché. Obecně používaný "uživatelský prožitek" působí přinejmenším zvláštně, byť mnohým z nás již nějaký software hluboký uživatelský prožitek dozajista přinesl.
Nicméně poučit se z toho, jakým způsobem uživatelé s naší aplikací pracují, může být pro její další rozvoj velmi užitečné, a to zvlášť u aplikací, kde nejsme s uživateli v přímém kontaktu. Technologie AppAnalytics tak může být zajímavým zdrojem provozních informací o mobilních aplikacích umístěných na aplikačních tržištích, nebo u rozsáhlejších stolních aplikací.

Jaké informace lze získat

AppAnalytics (pokud jsou pro danou aplikaci aktivovány) sledují řadu metrik zcela automatizovaně. Jedná se především o počet uživatelů, počet spuštění aplikace, pohyb uživatele rozhraním (odkud a v jakém sledu jsou otevírány formuláře nebo používány jednotlivé ovládací prvky), dále například selhání aplikace, či na jakém operačním systému uživatel aplikaci provozuje.
Druhým zdrojem informací jsou uživatelské metriky. AppAnalytics umožňují ošetření libovolné události a zachycení až čtyřech atributů. Lze tak zjistit a následně analyzovat mnoho zajímavých informací o tom, jak je aplikace skutečně používána a jaké jsou preference uživatelů.

Integrace AppAnalytics do aplikace

Používání AppAnalytics je velmi jednoduchou záležitostí. Všechny potřebné funkce v sobě zapouzdřuje jediná komponenta "TAppAnalytics", dostupná jak ve FireMonkey tak ve VCL. Pokud mají být sledovány uživatelské události, je vhodné komponentu umístit do datového modulu, aby byla přístupná ze všech formulářů, v kterých hodláme sběr metrik použít.


Aby bylo možné AppAnalytics zprovoznit, je třeba přiřadit unikátní identifikátor aplikace "ApplicationID". Protože jsou AppAnalytics cloudovou službou, je pro jeho získání nutné aplikaci nejprve zaregistrovat na serveru. Registrace se provádí prostřednictvím webu, a to konkrétně na adrese https://appanalytics.embarcadero.com/:

Registrace

Pro přístup je třeba použít přihlašovací údaje účtu EDN, ke kterému bylo registrováno vývojové prostředí. Po přihlášení a vyplnění základních údajů je vygenerován potřebný identifikátor. Ten pak v inspektorovi objektů nebo v kódu přiřadíme (včetně složených závorek) komponentě "TAppAnalytics".

Získání "ApplicationID"

Volba "Guest User" umožňuje poskytnout přístup do portálu jednomu dalšímu uživateli. Dále je možné nastavit IP adresy, které nebudou do výstupů zahrnovány (typicky tedy počítače vývojářů).

Nyní je třeba nastavit, které události mají být za běhu aplikace sledovány. K tomu slouží AppAnylytics Options. Zde se mírně liší implementace v knihovně VCL a FireMonkey:

AppAnalytics - nastavení


Příklady Delphi


// Nastavení (VCL)
procedure TCentral.FormCreate(Sender: TObject);
begin
  AppAnalytics.CacheSize := 800;
  AppAnalytics.UpdateInterval := 1000;
  AppAnalytics.Options := [aoTrackStartup, aoTrackExceptions];
  AppAnalytics.Active := True;
end;

I když ve VCL nemají AppAnalytics Option pro uživatelské události, můžeme je jednoduše sledovat zavoláním metody "TrackEvent".

// Odeslání uživatelských metrik (VCL)
procedure TCentral.Osoby1Click(Sender: TObject);
begin
  AppAnalytics.TrackEvent('Otevření okna', 'Menu', 'Osoba', 1);
  btnOsoby.Click;
end;

Metoda "TrackEvent" má čtyři vstupní parametry, které lze naplnit libovolnými hodnotami. První tři (ACategory, AAction a ALabel) jsou typu string. Poslední parametr (AValue) má datový typ Double.


Příklady C++


// Nastavení (VCL)
void __fastcall TForm1::FormCreate(TObject *Sender);
{
  AppAnalytics1->CacheSize = 500;
  AppAnalytics1->UpdateInterval = 800;
  TAnalyticsOptions aao;
  aao << aoTrackStartup;
  aao << aoTrackExceptions;
  AppAnalytics1->Options = aao;
  AppAnalytics1->Active = True;
}

// Odeslání uživatelských metrik (VCL)
void __fastcall TForm1::Osoby1Click(TObject *Sender);
{
  AppAnalytics->TrackEvent("Otevření okna", "Menu", "Osoba", 1);
  btnOsoby->Click;
}

Ochrana soukromí

Při prvním spuštění aplikace je každý uživatel automaticky informován o tom, že jsou anonymně sbírány a odesílány informace související s jejím během. Lokalizaci anglického textu lze provést přímo v inspektorovi objektů, nebo za běhu v kódu aplikace.

Upozornění uživatelům

Před zobrazením dialogu je generována událost "OnPrivacyMessage". Tu můžeme případně ošetřit vlastním kódem a v případě, že si uživatel nebude přát informace o provozu aplikace poskytovat, sledování vypnout.

Výstupy

Jednotlivé monitorované události se ukládají do paměti a po určitém časovém intervalu se odesílají do cloudu. Oba parametry, tedy "CacheSize" i "UpdateInterval" jsou nastavitelné. Nasbíraná data jsou dostupná na již zmiňovaných webových stránkách https://appanalytics.embarcadero.com/. Pro všechny dostupné sestavy je k dispozici nastavení období, pro které má být sestava vygenerována:

Základní přehled

Graf zachycující přechody mezi jednotlivými formuláři aplikace může být u rozsáhlejších aplikací poněkud nepřehledný:

Form Flow

Tabulkové výstupy si lze jednoduše stáhnout ve formátu .csv pro další zpracování:


V záložce "Advanced Analysis" je k dispozici formulář pro konfiguraci a spouštění parametrizovatelných sestav:

Pokročilé analýzy

Licencování

AppAnylytics jsou licencovány dle počtu sledovaných aplikací a objemu zpracovávaných událostí. Jednotlivé úrovně jsou pojmenovány podle planet sluneční soustavy. Nejnižší varianta, která dovoluje sledovat pro právě jednu aplikaci až 10 000 událostí za měsíc je k dispozici zdarma pro všechny uživatele Delphi, C++ Builderu nebo RAD Studia XE8 v edici Professional a vyšších. Úplný přehled cen naleznete na stránkách http://www.embt.cz/cs/produkty/310-appanalytics.html.

čtvrtek 12. února 2015

Castalia


Společnost Embarcadero provedla akvizici produktů Castalia a Usertility společnosti TwoDesk (http://www.twodesk.com/). Castalia je zásuvný modul pro Delphi, který rozšiřuje vývojové prostředí o pokročilé funkce pro zvýšení čitelnosti kódu a produktivity při jeho zápisu.

Instalace

Pro Delphi ve verzi XE7 a starší je třeba Castalii nainstalovat. Během instalace by vlastní prostředí (Delphi / RAD Studio) nemělo být spuštěné. Instalaci je vhodné provádět pod účtem lokálního správce. O tom, že integrace Castalie proběhla v pořádku, jsme informováni v úvodní obrazovce během následného startu prostředí.

Uvodní_obrazovka

Orientace a navigace ve zdrojovém kódu

Ke standardnímu zvýrazňování syntaxe přidává Castalia zvýraznění struktury programu. Jedná se o vizuální párování závorek a v případě Delphi především klíčových slov "begin" a "end", které je zvlášť u složitějších konstrukcí nepostradatelným pomocníkem. Spojnice jsou pro ještě přehlednější zápis kódu odlišeny barevně dle hloubky zanoření.


Dalším rozšířením, které usnadňuje orientaci v kódu je grafické znázornění průběhu zpracování jednotlivých příkazů (code flow). V ideálním případě se instrukce vykonávají jedna po druhé v pořadí od shora dolů. Existuje však řada příkazů, které tuto (dobře čitelnou) posloupnost příkazů narušují. Castalia všem takovým příkazům přidává srozumitelnou informační ikonu. Na první pohled tak je patrné, v kterém místě může dojít k opuštění procedury, cyklu nebo ukončení provádění běhu celého programu.


Velmi užitečnou pomůckou je také navigační lišta (Navigation toolbar), umístěná v horním rámu editoru kódu. Nalezneme zde dva rozbalovací seznamy, z nichž první zobrazuje všechny v jednotce definované třídy a druhý pak všechny funkce, procedury a metody. Výběr z nabízených položek přenese programátora přímo na příslušnou část kódu. Dále je zde možnost rychlé volby pro přesun na začátek a konec souboru, na začátek sekcí "Interface" nebo "Implementation" a nebo jejich "uses" definice. K dispozici je rovněž přehled všech odkazovaných jednotek a pole pro vyhledávání.


Některé části kódu mohou být natolik zásadní, že je vhodné mít možnost je rychle vyhledat. Pro tento účel je editor vybaven záložkami. Castalia přesouvá správu záložek do navigační lišty a k dispozici jsou i ve formě nabídky "Tooltip". Definování záložek, přesun na zvolenou, předchozí nebo následující záložku tak má vývojář doslovně "po ruce".


Produktivita

Pro zvýšení produktivity nabízí Castalia hotové vzorové šablony pro nejběžnější jazykové konstrukce. Ty je samozřejmě možné nejen editovat, ale lze i přidávat šablony vlastní.


Jedním z častých zápisů je definice procedury nebo funkce. Castalia nabízí jednoduchou synchronizaci zápisů prováděných v oddílu "Interface" a oddílu "Implementation". Pokud například v implementaci rozšíříme proceduru o nový parametr, stačí stisknout kombinaci kláves "Shift+Ctrl+S" a Castalia zajistí jeho doplnění v definici rozhraní. Synchronizace je obousměrná, takže je možné ji použít v obou sekcích editované jednotky.
Castalia rovněž usnadňuje další z rutinních činností, kterou je deklarace proměnných. Při definování nové proměnné se není třeba přesouvat do hlavičky metody, ale lze ji deklarovat přímo uvnitř procedury nebo funkce. Po stisku mezerníku je deklarace automaticky přesunuta na odpovídající místo.
Při zápisu kódu ocení uživatelé jistě i rozšíření editoru o takzvané chytré klávesy (Smart Keys). Jedná se o drobná, ale velmi příjemná vylepšení. Například klávesa "Home" přesune po druhém stisknutí ukazatel nikoli na začátek řádky, ale skutečně před první znak (bez ohledu na úroveň odsazení). Vybraný blok textu lze celý označit jako komentář (klávesa "/"), nebo uzavřít do závorek (klávesa "("). Díky historii schránky (Clipboard History) je možné znovu použít některý z dříve kopírovaných fragmentů kódu.


Castalia se ale neomezuje pouze na vlastní editor. Zajímavou vlastnost nabízí i pro vizuální návrhář. Pokud máte na formuláři větší množství nevizuálních komponent, které lidově řečeno "překáží", můžete je za pomoci Castalie jednoduše skrýt a kdykoliv později znovu zobrazit.


V případě potřeby lze také použít volbu "Split Editor", která umožňuje současné zobrazení okna vizuálního návrhu a editoru kódu.

Kvalita kódu

Není pochyb, že rychle napsaný kód není nutně také dobrý. Proto má Castalia vestavěné i funkce pro podporu kvality zdrojového kódu. Sleduje se řada atributů jako počet příkazů v proceduře či funkci, úrovně zanoření, počet parametrů a podobně. Na základě těchto metrik je vypočten koeficient "jedovatosti" kódu. Nižší je lepší a Castalia doporučuje udržet jeho hodnotu pod číslem jedna. Analýza kódu je pro právě editovanou proceduru nebo funkci dostupná přes již zmiňovanou nabídku "Tooltip", nebo ji lze vyvolat z hlavní nabídky. V takovém případě získáte přehlednou tabulku pro všechny metody právě otevřené jednotky.



Z mnoha dalších možností je třeba zmínit alespoň ještě refaktorování kódu. Cílem refaktorování je provedení změn, které vedou k čistšímu nebo čitelnějšímu kódu, aniž by to však mělo dopad na jeho výstupy (chování).
Refaktoring je opět dostupný prostřednictvím nabídky "Tooltip". Po klepnutí na poslední ikonu nabídky Castalia nabídne výčet "vylepšení", které může na příslušnou část kódu aplikovat. Patří sem například přejmenování a přesun tříd, odstranění nepoužitých proměnných a další.


Přesto, že výčet funkcí není úplný, překvapilo mě, kolik užitečných vylepšení produkt nabízí a jak moc návykový je. Po necelých třech týdnech používání bych se ho vzdával opravdu jen velmi nerad. Aktuálně je Castalia součástí dodávky všech licencí Delphi a RAD Studia XE7 vyjma edice Starter a mělo by tomu tak být minimálně do konce března 2015.