Veľký šef sa pozerá: Užívateľské testovanie “pod nátlakom”.

Dnes sa pozerá nielen Veľký brat, ale aj šéfovia a to je potrebné zohľadniť aj pri tvorbe webu. Pokiaľ pripravujete alebo už priamo programujete www stránky pre určitý typ budúcej klientely, je potrené zohľadňovať ďalšie faktory, ktoré ovplyvňujú použitie vašich www stránok. Keď nad vami stojí šéf, alebo sa niekam ponáhľate, či potrebujete rýchlo niečo nájsť – službu, dodávateľa a pod., mnoho racionálneho uvažovania ide bokom.

Veľký rozdiel!

Treba mať na pamäti, že je veľký rozdiel prechádzať si web vo voľnom čase, keď nehľadáte informácie, ale napr. ako majiteľ, si prezeráte web a v podstate hľadáte “či sa mi to páči”, a je veľký rozdiel, ak hľadáte informácie, služby, ponuku. Predstavte si, že ste na svoj web vtedy prišli až potom, čo ste si predtým v Googli prešli 10 iných stránok s rovnakou (neprehľadnou, nenájditeľnou?) ponukou. Budete ešte nadšení z blikajucého krásneho banneru, či vyšperkovanej animovanej navigácie? (ktorej rozbalenie trvá 2 minúty 🙂 ). Nie. A takto v skutočnosti vnímajú váš web skutoční návštevníci. Nie cez animácie, ale cez dobre prispôsobený obsah, ktorý im plní to, čo požadujú – nájsť informácie, ponuku, kontakt, objednávku. A nevyžaduje od nich náročné cvičenie (s webom)

Ako príklad by som uviedol napr.: poskytovanie ubytovania pri letisku či ubytovanie s možnosťou organizovania konferencií, ale aj www stránky pre právnikov či advokátske kancelárie. U tejto klientely sa dosť často postupuje tak, že užívateľ (sekretárka/asistentka/dievča pre všetko) musí veľmi rýchlo nájsť informácie, napr. o ubytovaní apod., pod veľkým časovým a psychickým stresom. Či vy sami potrebujete niečo nájsť rýchlo. V takýchto prípadoch je aj dobre viditeľná navigácia v hornom “páse” či vľavo/vpravo nanič.

Dobrým (a odporúčaným) riešením je používať doplňujúcu navigáciu a odkazy priamo na stránke, v oblasti, kde je pri predpokladanej činnosti sústredená jeho pozornosť. Ďalším dobrým riešením je vždy ponúknuť užívateľovi inú vhodnú akciu, ak sa svojím konaním dostal do úzkych. Napr. ak pod stresom zle napísal do vyhľadávacieho poľa názov hotelu a výsledkom vyhľadávanie nie je nič, upozornite užívateľa, nech si skontroluje správnosť hľadaného výrazu, prípadne ho pridajte do textu a zvýraznite. Namiesto zobrazenia ničnehovoriacej informácie od serveru, zobrazte mapu webu, alebo zoznam vašich produktov, či kategórií. Nenechajte užívateľa zablúdiť. A nenechajte ho premýšľať, čo vlastne na vašom webe robiť má.

Ošetrenie väčšiny týchto užívateľských chýb nevyžaduje zvýšené náklady, podstatné je, že váš klient/návštevník/zákazník bude spokojný. A nezabudnite ošetriť chybovú stránku 404. Ponúknutie mapy webu je asi jedno z najlepších riešení. Určite aj Vy máte vlastne skúsenosti s touto problematikou, ako riešite podobné problémy na svojich weboch?

Autor príspevku: Anton Piták

Doplnenie: Vidím, že podobnej téme sa dnes už venoval Martin Snižek na svojom blogu, takže dnes double 😉

AlertBox: Užívatelia stále klikajú na prvú pozíciu.

Jakob Nielsen zverejnil pre mnohých SEO konzultantov dosť nepríjemnú štúdiu. Už z predošlých užívateľských testovaní vyplynulo, že užívatelia klikajú na prvú pozíciu vo výsledkoch vyhľadávania nepomerne častejšie, než na ostatné pozície a pohybuje sa to okolo 40%. V tomto prípade nič nové pod slnkom. Nové testy ale poukazjú na ďalšie fakty.

Ilustračný obrázok: Vyhľadávanie na Google.com

Nové výsledky poukazujú, že užívatelia klikajú na prvú pozíciu aj po prehodení pozícii na prvom a druhom mieste a to bez ohľadu na relevanciu výsledku. Príčin môže byť viac – od dôvery užívateľov vo vyhľadávač, kedy užívateľ verí, že vyhľadávač mu dáva na 1. pozícií to najlepšie až po všeobecný zvyk kliknúť na prvú pozíciu (nielen vo vyhľadávačoch). V tomto prípade plne platí, že len samotná optimalizácia "hrubou silou" nestačí. Na 1. pozícii môže byť len jeden a tak ostatní záujemcovia musia používať ďalšie techniky, ako užívateľa pritiahnúť.

Poznámka: Osobne si myslím, že to až tak čierne nebude. Všetci klikáme na 1. pozíciu tak nejak automaticky, máme to v "génoch". No predpokladám, že väčšina z nás kliká a hľadá ďalej. Toto Nielsenové testovanie má aj svoje chyby. Nikde sa nehovorí o zložení testovacej skupiny. Verím, že napr. u starších prípadne neskúsenejších užívateľov skôr platí oné 40% "zvýhodňovanie" prvej pozície a postupné spresňovanie hľadania viacslovným výrazom. U mladších ročníkov aj na základe mojích skúsenosti a pozorovaní s tým ale nesúhlasím. Ako to celé vidíte Vy?

Autor príspevku: Anton Piták

Wwweb Testy – otestovanie firemného webu zdarma!

Mnohí internetoví odborníci a už aj viaceré firmy si uvedomujú sílu internetu, význam marketingu na internete či optimalizácie www stránok. Mnoho firiem, ktorým by tieto služby prospeli možno ešte viac, ale stále váha. Imaginárne a nehmatateľné slová a výsledky auditov webu, analýz či podivného copywritingu im navodzujú pocit niečoho neseriozného. Občas sa im nečudujem.

Mnoho vecí zahmlievajú aj samotné webdesignerske firmy či konzultanti v strachu pred prezradením "know-how" či rôzných iných príčin. Rovnako tak, na internete je stále málo praktických informácii o možnostiach SEO/SEM. Užívatelia, klienti naších služieb chcú aspoň malú záruku predom, niečo na skúšku. Vo väčšine prípadov žiadné predvedenie výsledkov už optimalizovaného webu nezaberie. Náš možný budúci klient nevidí (necíti) výsledky "na vlastnej koži". Práve z tohto dôvodu sme sa rozhodli napomôcť osvete pomocou základného testu www stránok.

Stačí, ak nám zašlete adresu vaších firemných www stránok s aspoň emailovým kontaktom na zadávateľa testu (len z dôvodu, aby neposielali neoprávnene osoby do testu cudzí web). Postupne budeme na tomto weblogu v rubrike "Wwweb Testy" uverejňovať výsledky základného testu aj s najdôležitejšími odporučaniami na úpravu.

Je to podobné, ako by ste Váš web poslali na kritiku napr.: na Intervel do rubriky Kritika webu. Odpovieme Vám nielen my, ale verím, že získate aj s prípadných komentárov ďalších odborníkov. Na základe výsledkov si môžete previesť úpravy a sami vyskúšať, či je investícia do internetového marketingu pre Vás prínosom.

Predom upozorňujeme, že výsledkom nie sú presné návody, čo a ako robiť, no na základe doporučení, ktoré poskytneme môžete urobiť tie najhlavnejšie kroky k zlepšeniu vášho webu. Ohodnotíme hlavne navigáciu, zrozumiteľnosť webu, zobrazovanie a validitu a poskytneme základné pripomienky k textom (Titulky, popisky, nadpisy, štylizácia).

Emaily s www adresou vaších tránok a kontaktom na zodpovednu osobu zasielajte na test@softpae.com. Pokiaľ vyslovene neuvediete žiadosť o spätné kontaktovanie, nebudeme na Váš email zasielať žiadne ďalšie údaje. Výsledok testov sa dozviete na tomto weblogu. Tešíme sa na vaše weby.

Prípadnú spoluprácu ostatných odborníkov, konzultantov a firiem uvítame.

Uncommented Links: Google priznal Sandbox, Prichádza H1.cz, Získavanie hesiel zo Seznamu …

Pretože nie je v naších (kolegov) a ani mojích silách reagovať na všetko zmysluplným a dostatočne obsiahlým príspevkom, budeme ďalšie zaujímavé veci prinášať formou nekomentovaných linkov. Ako sa vraví, niekedy je mlčať zlato 😉

Pohľad na nový IE 7 a Windows Vista

Microsoft je už pomerne známy tým, že sa snaží vydávať nové verzie svojích aplikácii a systémov pokiaľ možno čo najčastejšie. Dôvody sú zrejme, vydávaním nových verzii starnú tie predošlé, takže je potrebné upgradovať … teda kúpiťsi nové verzie .. čiže platiť MS.

Aktuálne sa asi najviac diskutuje o novom IE7 a Windows Vista (codename LongHorn). Zároveň sa natíska otázka: čo nové prinášajú?

Môj osobný názor je, že od verzie Windows 2000 nepriniesol Microsoft nič nové, čo by bolo užitočné pre užívateľa. Okrem balastu, ktorý chce viac pamäte, teda novší hardware. Nie že by som na novší hardware nemal, nerád ale mrhám pamäťou tam, kde netreba. Vo Windows XP priniesol MS nové jedine podporu pre skinovanie. Kto sa len trochu vyzná v systémovom programovaní či reverse engineeringu (crackovaní 😉 ) , ten zistí, aká hrôza spolu so skinovaním prišla a ako nešetrne sa s pamäťou zaobchádza. Problem v tomto prípade je, že ani vypnutie skinovania tuto hrôzu nezmenší.

Windows Vista a IE7

Po tomto všetkom teda so záujmom sledujem vývoj okolo IE7 a Windows Vista. Konečne som sa dostal aj k testovaniu a tak čo na to povedať. Vo Windows Vista opäť nič nové .. snáď len konečne "doprogramovaný" engine pre skinovanie aplikácii. Ináč sa dajú zhrúť novinky takto: … ešte viac grafiky, aby sme museli kupovať Pentium 5 a 4GB RAMky … nič, čo by stálo za niečo … ešte väčšie a graficky náročnejšie ikony, MSN Search Toolbar implementovaný priamo v systéme a ináč upravené nahľady v zložkách, ktoré sa budú opäť o 10 minút dlhšie nahrávať … samozrejme okopírovaný organizátor obrázkov … (Picasa od Googlu).

Po vyskúšaní IE7 môžem konštatovať, že je to opäť len priama integrácia vyhľadávacej MSN lišty do IE. Nasvedčuje tomu aj veľkosť súboru iexplorer.exe. Za niekoľko rokov vývoja novej verzie Windows teda nič nové nemáme. Vývoj mešká, pretože vývojári Windows nevedia, čo do Windowsu ešte naprogramovať a tak vyčkávajú, čo sa objaví na trhu a buď to odkúpia a integrujú do Windows, alebo to okopírujú. Problematický je aj veľké "eso" MS, ktorým mal byť nový filesystem WinFS.

Tak či onak, MS nás skôr či neskôr donúti používať jeho nové systémy, pretože vplyvom zmien v nový verziách sa zvyšujú náklady užívateľov používajúcich staršie verzie MS aplikácií. Z toho vyplýva, že pre udržanie primeraných nákladov do IT v rozumnej miere je potrebné obnovovať softwarove vybavenie obverziu.

Poznámka: Na(ne)šťastie, aplikácie MS sú užívateľský na omnoho vyššej úrovni, než ponúka Open Source komunita, ktorá si nejak neuvedomuje, že nestačí len niečo kvalitne naprogramovať (kodovať) , ale venovať minimálne rovnakú mieru úsilia aj testovaniu a návrhu UI (User Interface). V tom je MS naozaj dobrý.

Autor príspevku: Anton Piták

SuperStar 2, Big Brother a VyVolení … reality show na slovenský spôsob

Zároveň so začiatkom školského roka odštartovali okrem reality show "škola" a "život" aj nové reality show v naších televíziach. Zaujímavou reality show je už len sledovanie, ako jednotlivé televízie bojujú proti sebe, aby získali diváka pre seba. Snáď jedinou v kľude zostáva zatiaľ STV.

Nebolo by to Slovensko, aby sme si nejaké tie škandáliky neužili. Zatiaľ čo Markíza sa snaží spestriť jej BigBrother začlenením najpopulárnejších moderátorov do súťaže ako súťažiacich, JOJka už dlhší čas bojuje s "katolíckym" presvedčením a morálkou národa. Kresťanské "nesúď druhých, aby si nebol súdeny" zostalo niekde za dvermi kostolov a tak cirkev na základe maďarského vysielania VyVolení súdi, že to bude len a len pohoršenie národa a likvidovanie morálky. Osobne si myslím, že trochu zdravého sexu je menej škodlivé, než psychický nátlak v BigBrother. Koniec koncov, cirkvi by to možno pomohlo zvrátiť stárnutie obyvateľstva :-).

Asi najlepšie na tom je SuperStar 2. Ta má svoje percentá pomerne isté a pozerať ju môže každý. Ak sa pridá aj české publikum, bude sa sledovanosť pohybovať v zaujímavých číslach … SuperStar ma prekvapilo v prvom kole, keď na forach sa objavovalo dosť českých príspevkoch. Občas chodím cez víkendík do Prahy na pivko so starými známymi (či naším project manažerom Petrom 😉 ) , a najviac sa mi páčilo, keď o polnoci všetci odložili pivá a poctivo SMSkovali známym doma, aby sa čo najskôr dozvedeli, kto zas vypadol zo Slovensko hľadá SuperStar. Mám rád Čechy, češtinu aj českých bratov už oddávna! A SuperStar dokazuje, že ešte stále sme bratské národy. To ma veľmi teší.

Českých bratov zdraví: Anton Piták

Z obľúbených moderátorov budú finalisti reality show
Panika aj v Markíze: VyVolení v Čechách valcujú Big Brother!
Vlastník licencie na formát Big Brother podal žalobu na reláciu VyVolení
Veriaci sa búria: Zastavte VyVolených!
Malý pohľad aj do historie SuperStar

Otvárajte newebové dokumenty v novom okne

Jakob Nielsen, odborník na použiteľnosť na svojom webe useit.com zverejnil zaujímavú štúdiu o používaní newebových dokumentov na webe. Jeho závery len potvrdzujú to, čo je všeobecne známe medzi správcami firemných sietí (administrátormi) , ktorý sa starajú aj o užívateľskú podporu.

Nielsen doporučuje pre newebové dokumenty otváranie nového okna s dokumentom, prípadne upraviť hlavičku HTTP požiadavku tak, aby internetový prehliadač neotváral dokument priamo v okne prehliadača, ale ponúkol dokument stiahnúť na disk používateľa a ten si ho otvorí priamo na svojom PC. Aj keď toto odporúčanie je v protiklade s požiadavkou na zaužívané pravidlo použiteľnosti o otváraní dokumentov v tom istom okne prehliadača, v tomto prípade má svoje opodstatnenie.

Celý problém použiteľnosti newebových dokumentov je v tom, že mnohé prehliadače otvárajú dokumenty vďaka podpore pluginov priamo v okne prehliadača. Výsledkom je, že sa zmení spôsob ovládania programu – prehliadača, kde k štandardným položkám menu pribudnú položky menu vybraného programu, ktorý sa na otváranie napr. dokumentov DOC používa. V tomto prípade sa prehliadač zmení na hybridnú zlúčeninu prehliadača (IE) a editora MS Word. Výsledkom je zmetený užívateľ, ktorý na návrat na www stránku nepoužije tlačidlo Back, ale zavrie okno prehliadača. Aj s vašou www stránkou.

Ani IE, ani Acrobat Reader?

Ďalším problémom je rozhnevaný užívateľ, ktorý sa v takto zmenenom prehliadači – programe nedokáže orientovať a tak hľadá iný spôsob, ako sa dostať k potrebnému dokumentu. To často končí tak, že hľadá (na iných weboch) dovtedy, kým nenájde napr. zipovanú verziu, ktorá sa najprv stiahne na disk a potom sa otvorí užívateľovi známym spôsobom.

Rovnako tak aj u mierne pokročilejších užívateľov, ktorý "prelúsknu" záludnosti otvárania dokumentu v okne prehliadača nastáva problem v prípade napr. PDF, kde sa dokument sťahuje streamovacím spôsobom, kedy nie je stiahnutý kompletný dokument, ale stiahnuté časti dokumentu sa už zobrazujú. Ak chce ísť na stranu, ktorá ešte nie je stiahnutá, nastane problem a opäť zmetenie, mrzutosť a zatvorenie okna prehliadača.

Vo svetle týchto skúsenosti a informácii je v tomto prípade pravidlo o použiteľnosti vhodné porušiť a otvárať newebové dokumenty v novom okne prehliadača. Jednoznačne lepším spôsobom je zabezpečiť priamo úpravu hlavičky HTTP požiadavku, aby sa dokument ponúkol na stiahnutie do PC užívateľa.

Poznámka: Každému, kto pracuje s tvorbou www stránok, či aplikácii apod. doporučujeme aspoň mesiac stráviť na užívateľskej podpore v nejakej firme s aspoň 20 užívateľmi. Vyhli by sme sa tak kvantu "divokých"internetových stránok či programov, ktoré síce toho veľa dokážu, ale používať ich vie iba autor aplikácie.

Autor príspevku: Anton Piták

Open New Windows for PDF and other Non-Web Documents

Mýty o SEO friendly URL

Pri optimalizácii www stránok skôr či neskôr každý narazí aj na tému SEO friendly URL, či mod_rewrite. Podstatou tejto "disciplíny" SEO je zabezpečiť kľúčové slová v URL a zlepšiť tak šance webu na lepšie umiestnenie vo výsledkoch vyhľadávania (SERP). Odôvodnení sa nájde viac, téma SEO friendly je zaujímava a jednoznačne má aj svoje opodstatnenie, ale tak ako všade, nemalo by sa preháňať.

Základné argumenty pre použitie "užívateľsky príjemných" URL adries by sme mohli zhrnúť do týchto hlavných argumentov:

  1. SEO Friendly URL zvyšujú pomer kľúčových slov v URL a prispievajú tak k lepšiemu umiestneniu vo vyhľadávačoch
  2. Užívateľsky príjemné URL adresy sa ľahšie zapamätávajú a dávajú návštevníkovi lepšiu predstavu o tom, kde sa nachádza
  3. Odmazávaním časti URL (adresárov) sa môže užívateľ pohybovať štruktúrou webu

Napriek tomu, že argumenty sú pomerne presvedčivé, nie všetko je tak, ako na prvý pohľad vyzerá. Dôležité odpovede vnášajú do danej problematiky aj štúdie o použiteľnosti, ktoré uvedené argumenty ukazujú aj v inom svetle:

  1. Že užívateľský príjemné URL zvyšujú pomer kľúčových slov v adrese je zakladným a aj správnym argumentom pre používanie SEO friendly URL.
  2. Presvedčivým argumentom je aj tvrdenie o ľahšom zapamätávaní si www adries. Z testov s užívateľmi však vyplývajú niektoré "obmedzenia".

    Bežný užívateľ internetu si vo väčšine prípadov pamätá len názov hlavnej domény webu (doména druhého radu). Akékoľvek podadresáre (napr.: example.com/sluzby/) je ochotný si pamätať len v prípade, že podadresár je samostatným webom, ktorý priamo nesúvisi z hlavnou doménou webu a nie je možné sa naň z hlavnej stránky dostať. V prípade, že sa do podadresára webu dostane z hlavnej stránky si užívateľ zapamätá skôr postup, ako sa na uvedenú stránku dostal. V tomto prípade hrá dôležitejšiu funkciu dobrá navigácia na www stránkach. Toto správanie je napr. typické práve na e-shopoch (internetových obchodoch) , kde si užívateľ aj napriek možnosti použiť názov kategorie v URL pamätá práve spôsob, ako sa k požadovanej informácii dopátral.

    Dobrým dôkazom o takomto správaní sú výsledky najčastejšie vyhľadávaných frázi, kde sa objavujú celé www adresy webov. Užívatelia si pamätajú (približne) , ako sa na web dostali a tento postup používajú. Aj v prípade, že je "neštandardný".

  3. Mnoho webov, špeciálne internetové obchody umožňujú prechádzať "o úroveň vyššie" pomocou odmazávania názvu posledného adresára v štruktúre URL. Tak sa dá napr. dostať zo stránky produktu priamo na stránku kategorie daného produktu.

    Skutočnosť je ale taká, že užívatelia na navigáciu nepoužívajú odmazávanie URL adresy, pokiaľ k tomu nie sú donútený. Takým prípadom je hľadanie pre užívateľa dôležitej informácie na www stránke, ktorá vo vyhľadávači sa zobrazuje ako relevantná, ale samotná stránka už neexistuje, alebo hlási chybu. V tomto prípade sa užívateľ odmazaním časti URL snaží nájsť požadovanú informáciu pomocou iných metód (directory listing apod.). Na správne fungujúcej www stránke užívateľ nemá dôvod odmazávať URL, ak správne funguje navigácia na webe.

    Okrem toho, odmazávanie URL vyžaduje ďalšiu námahu v podobe kliknutia do poľa s adresou, nájdenie začiatku pre odmazanie adresy, odmazanie adresy a načítanie novej lokácie.

Aj napriek týmto informáciam majú SEO friendly URL jednoznačne svoje opodstatnenie hlavne v zvýšení výskytu kľúčových slov v URL adrese a ich použitie sa pri optimalizácii www stránok doporučuje.

Novinky v .NET 2 a VS 2005 (Whidbey). Část I. Vylepšení v .NET jazycích, díl 1 – Generics

   Tak jako celá vývojářská komunita, i my netrpělivě očekáváme příchod nové verze .NET 2 a vývojového prostředí MS Visual Studio 2005 známého pod označením „Whidbey“. Abychom věděli, co nás čeká a abychom s tím mohli seznámit i Vás, vyzkoušeli jsme betaverzi číslem 2. Dnes se seznámíme s první novinkou z řady vylepšení, která pro nás Microsoft připravil uvnitř programovacích jazyků C# a VB.NET.

Generics

   Hned první „vychytávka“ stojí za pozornost. Značně totiž eliminuje práci s  typem object, který je nechvalně známý svým použitím zejména v různých kolekcích typu Stack, ArrayList apod., kdy během kompilace není znám typ, který bude do kolekce přidáván. To vede jednak k tomu, že kompilátor neodhalí možné chyby v typech (a ty se projeví až za běhu) , jednak k tomu, že je nutno provádět boxing a unboxing proměnných z typu object a naopak (což snižuje výkon aplikace).

Jednoduchá ukázka nevýhodnosti typu object je demonstrována v následujícím příkladu, který ve výsledku vede k chybě vyvolané za běhu aplikace:

// using System.Collections;
 
//implementace zásobníku objektů Employee

Stack employees = new Stack();

// parametr je typu object
// je použita implicitní konverze na object

employees.Push(
   new Employee() );

// návratový typ je object
// musíme provést explicitní konverzi

Employee employee =
   (Employee) employees.Pop();

//implementace zásobníku objektů Integer
Stack sizes = new Stack();

// Boxing
sizes.Push( 42 );

// Unboxing
int size1 = (int) sizes.Pop();

// aplikačně nekorektní kód, který však kompilátor zkopmiluje
sizes.Push( 77 );
sizes.Push( new Employee() );

// nyní nastane výjimka InvalidCastException
int size2 = (int) sizes.Pop();

   Řešením je v .NET 2 použití zmíněných generics – tedy jakýchsi šablon kódu, které umožňují specifikaci typu v okamžiku použití šablony.
Šablona se deklaruje za použití speciálního operátoru T, který vyjadřuje typ, a pomocí “špičatých” závorek (deklarace však může být i složitější, viz. poslední příklad). Při použití šablony se T nahrazuje za konkrétní typ objektu.
Výsledkem je typová kontrola kódu již v průběhu kompilace a eliminace boxingu a unboxingu proměnných na typ objekt. A jak tedy vypadá implementace naší kolekce za použití generics ?

// using System.Collections.Generic;

Stack< Employee > employees =
   new Stack< Employee >();

// parametr je typu Employee
// neprovádí se žádná konverze

employees.Push(
   new Employee() );

// návratový typ je Employee
// není nutná konverze

Employee employee =
   employees.Pop();
Stack< int > sizes =
   new Stack< int >();

// boxing se neprovádí
sizes.Push( 42 );

// unboxing se neprovádí
int size1 = sizes.Pop();

sizes.Push( 77 );

// chyba, která je odhalena již kompilátorem
sizes.Push( new Employee() );

// výběr z kolekce proběhne vždy korektně
int size2 = sizes.Pop();

Jak vytvořit vlastní třídu s použitím generics

V případě, že potřebujeme vytvořit vlastní třídu implementující generics, postupujeme obdobně jako při programování běžné třídy, připojíme však navíc deklarace pro substituci datového typu.

// deklaraci třídy doplníme o operátor <T> reprezentující typ konkrétní instance třídy
public class MyStack< T >
{
   private T“ frames;
   private int pointer = 0;

   public MyStack( int size )
   {
      frames = new T` size `;
   }

   public void Push( T frame )
   {
      frames` pointer++ ` =
         frame;
   }
public T Pop()
   {
      return
         frames` –pointer `;
   }
}

// v deklaraci instance třídy uvedeme typ
MyStack< int > s =
   new MyStack< int >( 7 );

//kompilátor dovolí vkládat pouze typově korektní hodnoty
for ( int f = 0; f < 7; ++f )
   s.Push( f );

// vypíše ‘6 5 4 3 2 1 0 ‘
for ( int f = 0; f < 7; ++f )
   Console.Write(
      s.Pop() + " " );

Jak jsme si ukázali, mohou nám generics usnadnit práci s kolekcemi a zbavit nás nepříjemností s typem object. Je však třeba mít na paměti omezení generics, kterými jsou:

  • Omezení tříd – typy použitých objektů musí být potomkem specifikovaného typu
  • Omezení rozhraní – typy použitých objektů musí implementovat sepcifikovaná rozhraní
  • Omezení konstruktoru – typy použitých objektů musí mít veřejný defaultní konstruktor

Výše uvedená omezení jsou patrná na jednoduchém příkladu:

//třída MyList definuje dva různé typy, proto jsou zapsány jako K,V
// a navíc obsahují deklaraci dědičmosti resp. implementovaných rozhraní
class MyList< K, V >
   where K : IComparable,
             IFormattable
   where V : ValueBase, new()
{
   // …
}

class ValueBase {}

class Widget : ValueBase {}

class Thing : ValueBase
{
   public Thing( int i ) {}
}

// OK – integer implementuje IComparable a IFormattable a Widget je potomkem ValueBase a zároveň má i veřejný defaultní konstruktor Widget()

MyList<int, Widget> list1 =
   new MyList<int, Widget>();

// Chyba – string není potomkem ValueBase
MyList<int, string> list2 =
   new MyList<int, string>();

// Chyba – Thing nemá veřejný defaultní konstruktor, resp. kompilátor ho
//nevygeneruje protože je uveden jiný konstruktor

MyList<int, Thing> list3 =
   new MyList<int, Thing>();

// Chyba – Point neimplementuje IComparable a IFormattable
MyList<Point, Widget> list4 = new MyList<Point,Widget>();

Jak dnešní úvodní díl našeho seriálu naznačuje, rozhodně je na co se těšit. A to je teprve malý závdavek. Příště se podíváme rovnou na několik novinek najednou – čekají nás např. partial classes nebo anonymní delegáti.

Autor příspěvku: Petr Hradec

Obfuskovanie v Jave

Jednou z nespornych vyhod Javy je platformova nezavislost. Zdrojovy kod sa preklada do univerzalneho “medzi” kodu ktory sa nazyva bytecode, pricom az na dannej platforme sa za behu prelozi do nativneho kodu (JIT). Slabym miestom bytecode, kde jeho pomerne lahka spatna uprava do povodnej podoby zdrojoveho kodu, takzvana dekompilacia kodu. Z toho vyplyva jednoducha cesta pre zneuzite zdrojovych kodov. Aj ked na druhej strane v pripade, ze ste prisli za nejakych okolnosti o zdrojove kody, resp. ste prebrali aplikaciu bez nich, sa dekompilacia moze stat uzitocnym pomocnikom.

Obfuskovanie je technika, ktora ma za ulohu zabranit dekompilacii. Upravuje javovy bytecode tak, aby vysledny zdrojovy kod bol zle citatelny a bez hlbsej analyzy nepouzitelny.

Na trhu existuje niekolko nastrojov na obfuskaciu. V pomere vykon – cena je pravdepodobne najlepsou volbou bezplatny “Proguard”. Obfuscator realizuje:

  • zneprehladnenie kodu
    Premenovanie tried, metod a atributov na jednopismenkove. V pripade potreby (napriklad potomok triedy MIDLet) sa da nastavit moznost zachovania niektorych povodnych nazvov.
  • zmensovanie kodu
    Vymazanim nepotrebnych tried, metod, atributov sa minimalizuje potrebny kod. Jeho velkost sa takisto zmensi aj premenovanim. V enterprise aplikaciach je to bezpredmetne, ale napr. pre aplikaciu v mobilnom telefone je velkost mimoriadne dolezitym parametrom.
  • optimalizaciu kodu
    Detekcia a vymazanie nepouzitych instrukcii.

V praxi je vyhodne pouzit obfuscator pri buildovani v automatizovanom procese s vyuzitim buildovacích nástrojov napr. ANT.

Autor príspevku: Marek Čizík

Domovská stránka ANT
Specifikacia a sposob pouzitia Proguard