Začínáme s Amigou V.PETR MAREK
Náš seriál se nám pomalu chýlí ke konci. Ač by se o systému dalo psát
donekonečna, v tomto a příštím díle si řekneme už jen pár nejdůležitějších věcí
a podám vám návod, jak si můžete spoustu věcí zjistit sami. Příkazové argumenty
Nejdříve si ale ve zkratce povíme trochu o argumentech příkazů v shellu.
Většina aplikací a příkazů programovaných pro Amigu (tedy ne překompilovaných z
Unixu) používá standardní systém čtení zadaných parametrů, což nám může o
programu mnohé napovědět. O takovýchto programech teď budeme mluvit. Otevřete si
shell a napište „Copy ?“. Pokud za příkazem napíšete otazník, vypíše se vám
takzvaný „template“ a vy můžete své parametry dopsat. V našem případě to bude:
FROM/M, TO/A, ALL/S, QUIET/S, BUF=BUFFER/K/N, CLONE/S, DATES/S, NOPRO/S, COM/S,
NOREQ/S:
Template je jakási šablona, která určuje, jaké parametry můžete (či musíte)
příkazu zadat. Skládá se ze slov oddělených čárkou, přičemž každé to slovo
označuje jeden možný parametr. Je-li toto slovo ukončeno lomítkem a nějakým
písmenem, pak toto písmeno blíže určuje povahu tohoto argumentu. „Copy“ umí
kopírovat soubory, takže jaké má parametry? Hned první vidíme slovo FROM/M. To
„M“ za lomítkem znamená, že jako argument „FROM“ můžeme napsat i více řetězců,
jsou to jména souborů, které chceme zkopírovat. Cílový adresář (nebo adresář se
jménem souboru) určuje slovo TO/A. Vždy, když je za lomítkem „A“, je argument
nutný a nelze ho vynechat. U třetího argumentu vidíme „/S“. Tím se označuje
argument typu „Switch“ (spínač). Tímto spínačem řeknete příkazu Copy, aby
kopíroval adresáře i s jejich obsahem, takže „Copy DEVS: RAM: ALL“ zkopíruje
obsah adresáře „DEVS:“ i s podadresáři do ramky. V parametru „BUF=BUFFER/K/N“,
který určuje množství paměti použité na kopírování, je hned několik fint
najednou. Písmeno „N“ znamená, že zadaný argument musí být číslo. Je-li u
argumentu za lomítkem „K“, pak musíte před zadávanou hodnotu napsat jméno
parametru, ke kterému ta hodnota patří. Jsou-li jako jméno parametru uvedena dvě
slova oddělená rovnítkem, pak lze použít kterékoliv z těchto dvou. Příkladem
budiž „Copy L: RAM: BUF 10“, který zkopíruje obsah adresáře „L:“ do adresáře
„RAM:“ a ke kopírování použije 10 krát 512 bajtů. Podobně jako „/S“ se chová
„/T“, když však tento „Toggle“ spínač uvedete dvakrát, zase ho tím vynulujete.
Příliš často se to nepoužívá. Poslední lomítkovou úpravou je „/F“. Argument s
„/F“ na konci „spolkne“ celý konec řádky, bez ohlednu na to, co je v ní
obsaženo, i kdyby tam byly nějaké „přepínače“. Příkladem je příkaz „Set“. Šablony
Šablonou teď budeme chápat vzor pro označení skupiny souborů, který se
používá běžně v shellu. Jiné používané označení pro totéž je „pattern“ nebo
„wildcard“.
Taková typická šablona je řetězec znaků, ve kterém jsou obsaženy výrazy se
speciálním významem. Nejtypičtější příklad je příkaz
Delete #?.info
Takto se dají smazat všechny soubory s příponou „.info“ z aktuálního adresáře.
Co tam ale dělá ta mřížka a otazník? Otazník v šabloně zastupuje jakýkoliv znak.
Tak například šablona „a???b“ označuje všechna pětiznaková jména začínající na
písmeno „a“ a končící na písmeno „b“. Pokud je před nějakým znakem nebo výrazem
uzavřeným do závorky mřížka „#“, pak tato šablona označuje všechny řetězce,
které vzniknou libovolným počtem opakování daného znaku či výrazu, přičemž tento
počet může být i nulový. V našem případě se opakuje otazník, který je náhradou
za všechny možné znaky. Výraz „#?“ tedy zastupuje jakýkoliv řetězec.
Připojíme-li za něj „.info“, konečná šablona pasuje na všechna jména s touto
příponou.
Další možnosti nám dávají závorky. Více slov oddělených svislou čarou „|“
uzavřených do kulatých závorek odpovídá kterémukoliv z těch slov. Výraz „(aaa |
b | cc)“ pasuje na kterékoliv ze slov „aaa“, „b“ nebo „cc“.
Synonymum pro prázdný řetězec je znak „%“. To se hodí v situacích jako třeba
„Delete demo(.info | %)“, kterýžto příkaz smaže soubory „demo.info“ a „demo“.
Tylda (vlnovka) „~“ neguje následující výraz. Chceme-li smazat vše kromě souboru
„archiv“, stačí napsat „Delete(archiv)“. Pokud bychom chtěli smazat všechny
ikony vyjma ikony „Disk.info“, poslouží nám příkaz „Delete ~(Disk).info“. Negace
platí jen na ihned následující výraz či znak.
V šablonách můžete využít i takzvanou třídu znaků. Je to skupina znaků
uzavřených do hranatých závorek a zastupuje kterýkoliv uvedený znak. Chceme-li v
třídě znaků uvést všechny znaky v nějakém rozsahu, stačí napsat první písmeno
tohoto rozsahu, za ním minus „-“ a pak poslední písmeno. Příkaz „List
#[a-z1-9.]“ vypíše všechny soubory, které mají ve jméně pouze písmena, číslice
nebo tečku. Uvedeme-li vlnovku jako první písmeno třídy znaků, negujeme tím
celou třídu. Všechny soubory bez přípony (ve jméně nemají tečku) vypíšeme
příkazem „List #[~.]“.
Posledním speciálním znakem je hvězdička, která nahrazuje výraz „#?“. Aby toto
chování platilo, je třeba ho softwarově zapnout. Umí to například komodita
MultiCX. Kdykoliv budete něco mazat pomocí složitější šablony, vyzkoušejte si,
jestli jste ji zadali správně (příkazem „List <šablona>“. Smazat si zbytečně moc
souborů je velmi jednoduché. Bugware
Se slovem „bug“ se setkáte nejspíše ve významu chyby programu. Ne každý bug
se však projeví uživateli. Chybou totiž může být, i když program omylem
přepisuje paměť, která mu nepatří. To se zase nestává tak zřídka a smůla je, že
to často končí spadnutím systému. Proto je dobré vědět, který program něco
takového dělá, aby měl člověk přehled, kdy se na stabilitu systému může
spolehnout, a kdy ne. A jak se takovýto software pozná? Na to je mnoho metod.
Nejjasnějším ukazatelem chybovosti je, když program nefunguje tak, jak je
napsáno v dokumentaci, nebo něco funguje až na druhý pokus, popřípadě je nutno
spouštět program čerstvě po nabootování a v dokumentaci se to nepíše. Při
takovémto chování je přinejmenším pravděpodobné, že program „hrabe“ tam, kam
nemá a metody uvedené dále to často potvrdí.
Jedním z nejspolehlivějších hlídačů korektnosti programů jsou utility „Enforcer“
a „Mungwall“. První z nich hlídá, zdali programy nesahají na neexistující paměť,
popřípadě na paměť, na kterou se sahat nemá. Odtud také pochází výraz „enforcer
hit“ - sáhnutí na špatnou adresu paměti. Mungwall je velice dobrý doplněk
Enforceru. Programům „hází klacky pod nohy“ a pokud program chybuje při alokaci
paměti, těžce na to doplatí. Tyto utility jsou určeny především programátorům.
Bohužel ne všichni je však používají, proto má smysl každý program, který hodlám
dlouhodobě používat, tímto způsobem proklepat. Tyto a spoustu dalších podobných
pomůcek najdete na aminetu v adresáři „dev/debug“. Pokud je budete chtít
vyzkoušet, stočte si s nimi i program „DeCon21“ (autorem je Martin Mareš), který
umožní vypisování hlášek Enforceru a Mungwallu do (společného) okna.
Jiným ukazatelem na prohnilost programu může být fakt, že je naprogramován v
Amos Basicu. Amos je totiž prohnilý sám o sobě a napsat v něm korektní program
je zhola nemožné. Navíc fakt, že program byl vytvořen v tomto paskvilu,
prozrazuje, že autor je nejspíše programátor začátečník, zoufalec, „lamer“,
prostě že „neumí“. Jak ušetřit paměť
Někdy se může stát, že potřebujete co nejvíce paměti. V takovém případě je
dobré vědět, kde se dá něco ušetřit:
Máte-li v Amize turbokartu Blizzard se zapnutou funkcí „MapRom“, vypnutím této
funkce získáte půl megabyte paměti.
Některé programy jsou na disku uloženy zkomprimované a rozbalí se teprve před
spuštěním, což žere paměť. Takovéto programy je nejlepší mít na disku už
rozbalené. K tomu se vám může hodit příkaz xfdDecrunch, který je součástí balíku
xfd (na aminetu adresář util/packy a který umí rozpakovat téměř každý
komprimovaný soubor.
Zavřete programy, okna a screeny, které zrovna nepotřebujete, ukončete
nedůležité komodity (i ty spuštěné z WBStartupu), snižte rozlišení a počet barev
ve Workbenchi. Paměť zabírají í spuštěné monitory (ty v devs/monitors), dosovská
zařízení (devs/DOSDrivers), příliš mnoho datatypů, soubory v Ram Disku, bohaté
preference - výstražný sample, obrázek do Workbenche, lokalizace, nestandardní
fonty, overscan...
Pokud ani toto nestačí, je zde ještě možnost nastartovat Amigu bez
startup-sequence. Při resetu podržte obě tlačítka myši, objeví se vám „Boot
Menu“. V oddílu „Boot Options“ nastavte u všech zařízení, které nebudete
potřebovat, stav na „disabled“ a v hlavním menu zvolte „Boot without
startup-sequence“. Naskočí vám jen čistý shell a vy budete muset spustit váš
program ručně. Ještě pár bajtů lze ušetřit, když pomocí příkazu „AddBuffers DF0:
-1000“ vezmete zařízení DF0: posledních pár bajtů, které mu ještě jdou sebrat.
Stejně tak to můžete udělat u ostatních zařízení.
To by bylo pro dnešek opravdu vše. Příští díl Začátečníků bude již poslední a
měl vám dát pár užitečných rad, jak si můžete o systému a o programech zjistit
ledacos sami. Užívejte si roku 1999 a příště nashledanou. Vytlačiť článok
Pozn.: články boli naskenované ako text a preto obsahujú aj zopár chýb. Taktiež neručíme za zdrojové kódy (Asm, C, Arexx, AmigaGuide, Html) a odkazy na web. Dúfame, že napriek tomu vám táto databáza dobre poslúži.
Žiadna časť nesmie byť reprodukovaná alebo inak šírená bez písomného povolenia vydavatela © ATLANTIDA Publishing
none
|