AMIGA REVIEW obsah časopisu online!
  Domov     Software     Hry     Obaly     Download  

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

AMIGA REVIEW

57 ( 11-12 / 2000 )
56 ( 9-10 / 2000 )
55 ( 7-8 / 2000 )
54 ( 5-6 / 2000 )
53 ( 3-4 / 2000 )
52 ( 1-2 / 2000 )
 
51 ( 12 / 1999 )
50 ( 11 / 1999 )
49 ( 10 / 1999 )
48 ( 9 / 1999 )
46-47 ( 7-8 / 1999 )
45 ( 6 / 1999 )
44 ( 5 / 1999 )
43 ( 4 / 1999 )
42 ( 3 / 1999 )
41 ( 2 / 1999 )
40 ( 1 / 1999 )
 
39 ( 12 / 1998 )
38 ( 11 / 1998 )
37 ( 10 / 1998 )
36 ( 9 / 1998 )
35 ( x / 1998 )
34 ( x / 1998 )
33 ( 1-2 / 1998 )
 
32 ( 11-12 / 1997 )
31 ( 9-10 / 1997 )
30 ( 7-8 / 1997 )
29 ( 6 / 1997 )
28 ( 5 / 1997 )
27 ( 4 / 1997 )
26 ( 3 / 1997 )
25 ( 2 / 1997 )
24 ( 1 / 1997 )
 
23 ( 12 / 1996 )
22 ( 11 / 1996 )
21 ( 10 / 1996 )
20 ( 9 / 1996 )
18-19 ( 7-8 / 1996 )
17 ( 6 / 1996 )
16 ( 5 / 1996 )
15 ( 4 / 1996 )
14 ( 3 / 1996 )
13 ( 2 / 1996 )
12 ( 1 / 1996 )
 
11 ( 12 / 1995 )
10 ( 11 / 1995 )
9 ( 10 / 1995 )
8 ( 9 / 1995 )
7 ( 7 / 1995 )
6 ( 5 / 1995 )

ATLANTIDA NEWS

5 ( 3 / 1995 )
4 ( 1 / 1995 )
 
3 ( 11 / 1994 )
2 ( 9 / 1994 )
1 ( 7 / 1994 )
0 ( 5 / 1994 )