S kolegou Romanem Kabelkou jsme dnes připravili (teda hlavně Roman, já jen točil ;-) malý bonus k miniseriálu o tom, jak se programuje poslepu. Pokud vás zajímá, jak Roman jen za pomoci screenreaderu a braillského řádku programuje, podívejte se na následující video.
POmoc SLEPým Uživatelům - přístupnost webových stránek, asistivní technologie pro handicapované uživatele
pondělí 24. května 2010
čtvrtek 20. května 2010
Jak se programuje poslepu. Díl třetí - Nette Framework.
V posledním díle seriálu o programování jen pomocí sluchu a hmatu nás Roman Kabelka seznámí s tím, jak se mu poslepu používá Nette Framework.
Slovo má Roman.
Na podzim minulého roku jsem se dozvěděl o Nette Frameworku. Ihned mě zaujaly dvě vlastnosti:
- Webová aplikace má m vstupních akcí a n výstupních pohledů, přičemž logicky související akce a pohledy jsou sdruženy v jedné třídě (presenteru).
- Podoba pohledu je dána šablonou, jež má úspornější zápis a větší bezpečnost, než když šablona je tvořena přímo v PHP.
Presentery a celý komponentový systém formují zdrojové kódy do ustálené struktury, s níž lze pomocí dříve uvedených technik orientace nalézt požadovaný kus kódu. Metody pro akce a pohledy mají v presenterech předepsané konvence, což lze využít např. tak, že hledáním řetězce "ion act" je možné přeskakovat po jednotlivých metodách akcí.
Šablony Latte filteru tím, že dovolují uvození výstupu "<?php echo ..." zkrátit na pouhou otevírací složenou závorku, přispívají také k příjemnější práci. Pokud k tomu přidáme ještě tzv. n atributy, je zdrojový kód přehledný a prostorově úsporný, což se ocení především při čtení skrze braillský řádek.
I když z hlediska přehlednosti je Nette Framework pro nevidomé programátory dosti dobrým pomocníkem, neznamená to, že by každý měl začínat s prvními pokusy o webové aplikace právě v Nette Frameworku. Hlavní úskalí vidím v dokumentaci frameworku a ve faktu, že objektové programování začátečníkům nebude zcela vlastní. Pokud ovšem je člověk schopen toto zvládnout, projeví se veškeré přednosti Nette Frameworku.
Když mi před nedávnem volal kamarád s tipem na vytvoření webu, který se bude skládat převážně ze statických stránek a dvou formulářů odesílaných na e-mail, pojal jsem to jako šanci odzkoušet Nette Framework. K tomu ve skutečnosti došlo až ve chvíli, kdy byl web již hotový. Vše spěchalo, a tak jsem jej dočasně vystavěl na svém vlastním malém frameworku. Po převedení do Nette Frameworku jsem tak mohl porovnat výhody jednotlivých řešení:
- Nebýt jednoduchosti vyvíjeného webu, musel bych řešit generování navigace v Nette Frameworku dle mých požadavků, což ve svém frameworku jsem měl ošetřené.
- Šablona webu v Nette Frameworku je přehlednější zejména díky chytré syntaxi Latte filteru, jehož výhoda ve stručnosti byla již zmíněna.
- Web www.pujckynej.net postavený na Nette Frameworku je členěn do čtyř logických celků, což umožňuje snadno dohledat příslušné pasáže:
- Statické stránky.
- Stránky generované z dat v XML a transformované pomocí XSLT.
- Stránka s formulářem pro žádost o spolupráci.
- Průvodce pro formulář s on-line žádostí.
Mé původní řešení pro statické stránky bylo jednoduché, pro formuláře však už nepříliš průhledné, neboť v rámci přehlednosti se kód tříštil do několika objemějších souborů ošetřujících všechny situace.
- Nette Framework přirozeně vede programátora k dělení aplikace do menších souborů, jež jsou však přehledně provázány díky dědičnosti tříd a doporučené adresářové struktuře. Myslím si, že čím menší soubor, tím lépe pro orientaci skrze odečítač.
- Nette Framework elegantně soustřeďuje na jedno místo definice formulářů a pravidla jejich chování. Z mých zkušeností opakující se HTML kód nejen, že je nezáživný na psaní, ale vykazuje i vyšší chybovost. Orientace v takovém jednotvárném textu je bez zrakové kontroly do jisté míry ztížena vlivem právě jednotvárného okolního kontextu. Tento problém se především týká formulářů a tabulek. Nette Framework kód formuláře generuje dle stručných volání metod, což nesnáze značně v této oblasti redukuje.
Závěrem
Poslepu rozhodně programovat lze. Dá to pouze více úsilí v hledání programovacího jazyka a vývojového prostředí, s nimiž zrakově postižený programátor se dobře zžije z hlediska abstraktního myšlení a automatizace běžných postupů. Mně se nejvíce osvědčil Poznámkový blok Windows a PSPad, z čehož větší úsilí přímo plyne. Je nutno si však uvědomit, že sofistikovaná vývojová prostředí práci skrze odečítač v mnoha případech nijak výrazně neusnadní. Dle mých zkušeností hlavním zdrojem těchto komplikací nejčastěji bývá nestandardní přístup z pohledu operačního systému k ovládacím prvkům, jež umožňují různé zvýrazňování kódu a jeho automatické doplňování, což odečítači může činit nemalé problémy při vyčítání relevantního obsahu.
Na závěr si můžete prohlédnout zdrojový kód třídy jednoho z formulářů, jež jsem vytvořil pro zmíněný web Pujckynej.net.
Autorem článku je Roman Kabelka.
Související odkazy
středa 19. května 2010
Jak se programuje poslepu. Díl druhý - od Basicu k PHP.
V minulém díle jsme se seznámili s teoretickými základy programování, mezi které patří například práce s textem či orientace ve zdrojových kódech. Do této chvíle jsem se vyhýbal uvádění konkrétních zkušeností práce se zdrojovými kódy a jako programováním takovým, neboť jsem si vědom, že se jedná o výlučně individuální věc a to obzvláště, pokud člověk má nějaké postižení a neexistují žádné doporučené postupy. Aby však představa byla co nejvěrnější, uvádím níže své zkušenosti, které se nemusí ztotožňovat se zkušenostmi dalších nevidomých programátorů.
Obecně se mé zdrojové kódy vyznačují absencí mezer a jakéhokoli odsazování. Mezery píši jen tam, kde jsou nutné nebo kam jsem si je z historických důvodů zvykl psát (např. mezi klíčové slovo if a podmínku). Mezery na přednes odečítače nemají prakticky žádný vliv a na braillském řádku spíše zabírají užitečné místo. Stejné důvody platí i pro odsazování. Jeho přínos se nevyrovná starostem, jež nevidomý má s jeho udržováním. Složené závorky vyhrazující bloky zásadně píši na samostatné řádky, čímž se nepřítomnost odsazení do jisté míry kompenzuje.
Basic
Velkou školou bylo moje první setkání s programováním. Jednalo se o jazyk Basic na mikropočítači pro nevidomé Eureka A4. Vše se točilo okolo čísel řádků a špaget příkazů čtených Eurekou na jeden zátah. Ostatně ten, kdo Basic někdy viděl, dovede si strukturu ne-strukturu takových programů představit. Dopracovat se k nějakému místu zdrojového kódu znamenalo použít zcela rozdílné techniky orientace. Spustil se výpis, resp. předčítání zdrojového kódu od začátku programu či zadaného řádku. Ve chvíli, kdy člověk uslyšel inkriminovaný úsek, který chtěl editovat, bylo nutné si zapamatovat číslo řádku a přerušit předčítání. Poté se příslušným příkazem vyvolala editace daného řádku. Že šlo o postup z dnešního pohledu nepohodlný, není snad nutno dodávat. ale tehdy Eureka byla nenahraditelná a nevidomí hračičkové byli rádi i za takovou šanci, že si mohou něco naprogramovat. Někdy se jednalo o špagety kódu vskutku impozantní, ale alespoň se naskytla možnost protrénovat mozek pro chvíle budoucí a posilovat abstraktní myšlení.
Pascal
Mým prvním kompilovaným jazykem byl Turbo Pascal a to v prostředí MS-DOS, kde se možnosti editace blížily dnešním podmínkám. Kromě toho, že mě jisté jazykové konstrukce na Pascalu dodnes iritují, což nemá nic společného se zrakovým postižením, zaujmul jsem rozpolcený vstah k upovídanosti jazyka v čele s klíčovými slovy begin a end. Tyto upovídané konstrukce pro hlasový výstup jsou výhodnější než nejrůznější typy závorek. Tehdy jsem sice braillský řádek ještě neměl, ale ve chvíli, kdy jsem se k Pascalu vrátil v podobě Delphi a pracoval již s braillským řádkem, byla tato upovídaná syntaxe spíše na obtíž, neboť drahocené znaky na braillském řádku byly zabrány právě klíčovými slovy typu begin a end.
C++
C++ mi bylo sympatické už od začátku, na což měl vliv asi také můj učitel programování Zdeněk Říha, jenž je preferoval před Pascalem. C-like jazyky při čtení hlasovým výstupem nezní sice tak dobře, ale umí být stručné a to jak syntakticky, tak i výrazově. Tuto úspornost člověk ocení zvláště při použití braillského řádku, jehož matice znaků je tak maximálně využita.
PHP
Odtud je už krok k Javě a PHP. Zatímco Javu jsem využil spíše při akademických příležitostech, PHP se stalo prozatím mnou nejdéle používaným programovacím jazykem. Stejně jako jiní jsem začínal se zdrojovými kódy ala špagety. Jednalo se přecejen o špagety učesanější, neboť od svého učitele z dob programování v C jsem měl zakódováno porcovat alespoň skripty do logických bloků pomocí funkcí. Toto samozřejmě napomáhalo i přehlednosti kódu, což vedlo i k rychlejší práci. Jediné,co vždy bylo poněkud nešikovné, i když vždy řešitelné, bylo prokládání HTML a PHP tak, aby výsledný HTML kód pro případné hledání chyb působil kompaktním dojmem, což však na straně PHP vedlo někdy k poměrně dlouhým řádkům, na nichž najít požadované místo pouze s hlasovým výstupem nebylo pohodlné. Tato nepohodlnost přetrvala i do dob, kdy jsem začal skripty vylepšovat a dospěl k objektovému programování a vlastnímu pomocnému frameworku. Nikdy jsem se nedostal k tomu, abych si vytvořil vlastní šablonovací systém, který by čitelnost kombinace PHP a HTML zprůhlednil.
A co nás čeká příště?
V posledním díle mého seriálu se podíváme na to, jak se mi poslepu pracovalo s Nette Frameworkem, který jsem použil při tvorbě jednoho webu.
Autorem článku je Roman Kabelka.
Související odkazy
pondělí 17. května 2010
Jak se programuje poslepu. Díl první - teorie.
Na našem blogu se podrobně věnujeme situacím, s nimiž se musí zrakově postižený uživatel vypořádat při čtení webových stránek. Pravidelný čtenář tedy již má představu o tom, jak uživatel, potažmo odečítač, se stránkou nakládá. Představy však mohou končit v situacích, kdy se nevidomý člověk dostane do role samotného tvůrce a programátora stránek. Cílem následujících řádků je přiblížit vám i tuto oblast.
Práce s textem
Při vyuce práce s ozvučenými počítači klademe s kolegy velký důraz na to, aby si naši klienti příkazy pro práci s textem co nejvíce zažili a dosáhli ideálně jistého stupně automatizace. Jen tak se docílí toho, aby bylo možné soustředit se na obsah dokumentu namísto přemýšlení nad tím, jakou klávesovou zkratku vzhledem k pozici kurzoru je nejvhodnější použít. Pro práci se zdrojovými kódy jakéhokoli druhu to platí dvojnásob.
Každého jistě napadne otázka, jak se lze bez zrakové kontroly zorientovat ve změti nejrůznějších druhů závorek a klíčových slov ve zdrojovém kódu. Vnímání toku textu zrakem má výhodu v možnosti zasadit jej do okolního kontextu a vypomáhat si užitečnými barevnými zvýrazněními. V případě nevidomého je jistě vhodné mít dobrou míru abstrakce umožňující si kontext zapamatovat, což ostatně předpokládají i samotné programování a algoritmizace. Zbytek umu spočívá na znalosti funkcí odečítače a klávesových zkratek.
Odečítač při pohybu kurzoru v textu čte vždy jen ten úsek, který vzhledem k objektu pohybu má význam. Mějme text "Webová str_ánka je|validní.", při čemž znak _ vyznačuje pozici kurzoru a znak | rozdělení řádků. Následující tabulka ukazuje, jak kurzor reaguje na příkazy a jak odečítač tyto změny čte.
Klávesová zkratka | Příkaz | Stav textu | Čtená změna |
---|---|---|---|
Šipka_vpravo | Další znak | Webová strá_nka je|validní. | n |
CTRL+Šipka_vpravo | Další slovo | Webová stránka _je|validní. | je |
CTRL+Šipka_vlevo | Předchozí slovo | Webová _stránka je|validní. | stránka |
Home | Začátek řádku | _Webová stránka je|validní. | W |
Šipka_dolů | Další řádek | Webová stránka je|_validní. | validní. |
Šipka_nahoru | Předchozí řádek | _Webová stránka je|validní. | Webová stránka je |
Za důležité zjištění lze považovat, že zrakově postižený uživatel používá kurzor nejen k tomu, aby jej přesunul na místo, kam chce vpisovat, nebo kde chce provádět změny, ale i pro jemnější čtení textu v situaci, kdy například pohyb po řádcích (tedy čtení po řádcích) zahlcuje uživatele velkým množstvím informací, které není schopen sluchem pojmout. Opět uvažme příklad, kdy pomocí šipky dolů dojde k vyslovení následujícího řádku zdrojového kódu:
$path=Environment::expand("%templatesDir%/{$this->name}/{$this->action}");
Při běžném nastavení interpunkce je řádek přečten jako:
"dolar path rovno Environment dvojtečka dvojtečka expand závorka uvozovky procent templatesDir procent lomeno složená závorka dolar this větší name složená zavřít lomeno složená závorka dolar this větší action složená zavřít uvozovky zavřít středník"
Ostřílený programátor celý řádek může jistě pojmout, ale běžný uživatel, programátor začátečník, si spíše vyslovený řádek nezapamatuje úplně celý. Pokud však opakovaným stiskem příkazu pro posun po slovech "projde" celým řádkem v tempu, které si řídí sám, je výstup odečítače přijatelnější.
dolar
path
rovno
Environment
dvojtečka dvojtečka
expand
závorka uvozovky procent
templatesDir
procent lomeno složená závorka dolar
this
pomlčka větší
name
složená zavřít lomeno složená závorka dolar
this
pomlčka větší
action
uvozovky složená zavřít zavřít středník"
Naznačené dělení slov platí pro editor PSPad, v jiných editorech se toto dělení může lišit. V podrobnosti čtení lze samozřejmě jít až na úroveň znaků, což se uplatňuje např. v případě, kdy je nutno počítat závorky při syntaktických chybách.
Orientace ve zdrojových kódech
Předchozí řádky ukázaly, že skrze odečítač lze i s komplikovanějšími texty, mezi něž patří i zdrojové kódy, pracovat. Další významnou pomůckou nevidomého, která dovede práci zejména na úrovni znaků velmi zpříjemnit, je braillský řádek. I když jej standardně limituje zobrazení nejvýše čtyřiceti znaků, odpadá potřeba více manipulovat s kurzorem pro přečtení požadovaného úseku textu. Tím, že uživatel má text tak říkajíc pod rukama, začíná se i přes uvedené omezení způsob práce blížit běžnému vnímání.
Znalost nejběžnějších příkazů pro pohyb v textu však není vším. Dalšími užitečnými technikami pro orientaci jsou odskok na číslo daného řádku pro opravu chyb a pak zejména vyhledávání. Vyhledávání je neocenitelnou pomocí ve chvíli, kdy uživatel je s obsahem souboru seznámen a tudíž ví, jaký konkrétní řetězec hledat. Tuto metodu však lze úspěšně použít i např. pro přeskakování po hlavičkách jednotlivých metod třídy. Zadáme-li do vyhledávání "public"a následně hledáme další a další výsledky, získáme poměrně velmi rychle přehled, jaké veřejné metody jsou ve třídě definovány, neboť odečítač je schopen poměrně snadno přečíst řádek s nalezeným výskytem. Podobných příkladů, jak lze svým způsobem netradičně zapojit funkci vyhledávání, existuje nepřeberné množství. Uveďme si pár příkladů:
- <body - Nalezne začátek elementu body ve zdrojovém kódu stránky.
- ->name - Nalezne použití vlastnosti name objektu, nikoli však použití lokální proměnné $name.
- >> - Najde všechny elementy, do kterých se nedopatřením dostal zdvojený znak pro uzavření tagu.
Formátování zdrojových kódů je další aspekt, který může přispět k lepší orientaci. Nicméně i pro nevidomého platí, že každý je zvyklý kód psát trochu jinak a neexistuje žádné doporučené řešení. Někdo kolem operátorů píše mezery, jiný ne, někdo složené závorky pro vyznačování bloků píše na samostatné řádky, někdo otevírací závorku na konec řádku, jež bloku předchází. Jde především o to najít způsob, jenž naprosto bude odpovídat požadavkům takového nevidomého programátora.
Autorem článku je Roman Kabelka. Druhý díl bude věnován Romanovým konkrétním zkušenostem s prací se zdrojovými kódy a programováním jako takovým.
neděle 9. května 2010
Počítačové hry pro nevidomé v Čechách a v zahraničí
Počítačových her pro nevidomé je celá řada, nicméně jen relativně málo z nich vzniklo v České republice. Na otázku, proč tomu tak je, je těžké odpovědět. Hlavní důvod bude asi ten, že u nás neexistuje žádná společnost, která by přímo tyto hry vyvíjela. Nezanedbatelnou příčinou je nejspíš i fakt, že čeští nevidomí nejsou příliš ochotni za kvalitní počítačové hry platit. Nechci tím říct, že všechny kvalitní hry musí být nutně placené, ale finanční podpora autorů je obvykle hlavním důvodem vzniku profesionálně zpracovaných her, stejně to ostatně chodí i u počítačových her obecně.
V České republice se většinou jedná o vysokoškolské projekty, které i přesto, že hráče nic nestojí a jsou relativně kvalitní, mají jednu zásadní nevýhodu. Poté, co autor takové hry skončí se školou, zastaví se obvykle i vývoj jeho projektu a málokdy u těchto her dochází k pravidelným aktualizacím.
Dalším důvodem by mohlo být značné množství a popularita zahraničních her, kvůli které případní čeští autoři již nemají motivaci vytvářet hru podobného typu, když je již hotova její kvalitní zahraniční verze.
Pokusím se zde zmínit jednak existující české hry, ale rovněž hry zahraniční, které mě zaujaly, a s jejichž hraním mám osobní zkušenost.
Hry z české dílny
DSA
Asi nejrozsáhlejším projektem mezi českými hrami je DSA (Dousabel sound adventure).
Jedná se o prostředí, určené k vývoji her pro zrakově postižené. V praxi jde o hry, kde hráč, podobně jako u starých textových her, postupuje podle scénáře, manipuluje s předměty a pohybuje se ve scénářem daném prostředí.
Výhodou je, že součástí projektu je i editor, ve kterém lze vytvořit vlastní scénář. Programovací jazyk DSA je relativně bohatý, díky čemuž lze při šikovné práci se zvuky dosáhnout velmi kvalitního výsledku.
Projekt včetně dvou hotových scénářů je volně ke stažení, takže si jej může každý dle libosti vyzkoušet.
Více informací o DSA se dozvíte na adrese dousabel.sweb.cz/dsa/.
Marek Susčík a jeho hry
Dalším plodným autorem českých her pro nevidomé je Marek Susčík. Kromě vlastních her vytvořil v rámci své diplomové práce emulátor programovacího jazyku Basic, používaného v elektronickém zápisníku Eureka A4, díky čemuž již lze pod Windows hrát hry, původně programované pro tento zápisník. Jedná se většinou o jednoduše ovladatelné textové hry, které byly původně psány pro počítač ATARI, ale kromě nich jsou zde k dispozici i hry jiných nevidomých autorů.
Kromě emulovaných her pro Eureku vytvořil Marek Susčík i hry přímo pro Windows. Jedná se o karetní hru Prší, která je zajímavá hlavně tím, že podporuje i funkci hraní přes internet a dále o střílečku Vznášedla. Více informací o výše zmíněných hrách a emulátoru Basicu pro Eureku se dozvíte na webu Marka Susčíka.
Apogeum a hra Náhoda
Na stránkách www.apogeum.info lze po registraci zdarma stáhnout interaktivní počítačový gamebook Náhoda, určený pro nevidomé. Jedná se o podobný systém jako u klasických gamebooků, hráč má vždy na výběr z několika možností řešení nastíněné situace a na základě jeho výběru pak hra pokračuje.
Hra je zvukově velmi dobře provedena a autoři slibují další hry podobného typu.
Zahraniční hry, které mě zaujaly
Rád bych zde zmínil alespoň pár zahraničních her, které mě opravdu zaujaly, a ke kterým se i přesto, že času je čím dál méně, rád vracím.
Top Speed
Asi nejvíc mě zaujala hra Top Speed od holadské firmy Playing in the dark. Jedná se o klasická auta, nicméně kompletně pro nevidomé. Orientace na silnici je řešena tak, že v případě, že jste uprostřed silnice, je zvuk motoru slyšet z obou sluchátek stejně, a blížíte-li se k některému okraji, zvuk v příslušném sluchátku se zesiluje. Výhodou je velká propracovanost programu, jsou podporovány i herní ovladače jako je volant či joystick. Navíc hra disponuje možností hrát přes internet a lze vytvořit i vlastní tratě a auta. Projekt je freeware, takže si jej kdokoliv může zdarma stáhnout.
Více informací v angličtině se dozvíte na stránkách www.playinginthedark.net.
Shades of Doom
Jedná se o klasickou střílečku ve stylu Doom. Hra je po zvukové stránce velice dobře zpracována a určitě zaujme každého milovníka tohoto typu her. Více informací v angličtině se dozvíte na stránkách výrobce www.gmagames.com.
Hra je placená, nicméně je zde možnost stáhnout si její demoverzi.
Závěr
Popsat zde všechny kvalitní hry pro nevidomé by zabralo hodně času, navíc každému vyhovuje jiný styl a kvalitních her je celá řada. Většinu informací o zahraničních hrách pro nevidomé sdružuje portál www.audiogames.net, kde se dozvíte všechny informace o existujících hrách i o novinkách na této scéně.
Nezbývá než doufat, že i v českém prostředí budou vznikat další kvalitní hry, které si nezadají se svou zahraniční konkurencí.
Autorem článku je Jirka Fenz.
A co vy? Znáte nějakou pěknou hru pro nevidomé, která v našem výčtu chybí? Podělte se o své zkušenosti v komentářích.
pondělí 3. května 2010
Aktuální trendy v přístupnosti - záznam přednášky na FI MUNI
V pátek 30. 4. 2010 jsem s aktuálními trendy v přístupnosti seznámil studenty předmětu PV219 Seminář webdesignu na Fakultě informatiky Masarykovy univerzity v Brně.
Přednáška se točila kolem tří témat:
- moderní pojetí přístupnosti,
- nejčastější mýty a omyly v přístupnosti,
- aktuální metodiky přístupnosti - WCAG 2.0 a WAI-ARIA.
A jaké to bylo?
- Návrat na alma mater v roli přednášejícího byl zajímavý.
- Studentům jsem přinesl i nějaké newebové pomůcky, takže si mohli například nasadit simulační brýle a vyzkoušet si, jak vidí jejich web člověk s trubicovým viděním čí výpadky zorného pole.
- Studenti měli o tématiku zájem - nikdo mi na přednášce i přes brzkou ranní hodinu neusnul ;-), ptali se a následnou diskusi jsme i o cca 15 minut protáhli nad původní časový plán.
- Je ale fakt, že jsem je trochu namotivoval - nejaktivnějšímu studentovi jsem slíbil - a pak i věnoval ;-) - jednu Firefoxí propisku.
A protože si FI - nejen - své studenty opravdu hýčká, máte možnost i vy
Všem účastníkům děkuji za příjemně strávený čas a Tomovi Obšívačovi pak děkuji za pozvání do Semináře webdesignu.