4087
Comment:
|
5508
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
## page was renamed from OperacneSystemy = Počítačové siete = |
= Operačné systémy = |
Line 4: | Line 3: |
2008/09 -- ZS | 2008/09 -- LS ## == Downloady pre cvičenia == ## ## [[attachment:gallery.tar.gz]] ##[[attachment:passwd.txt]] ## [[attachment:zadanie2.pdf]] ##[[attachment:zadanie_opr.pdf]] ##== Uploady == ##[[/Uploady]] |
Line 8: | Line 19: |
## Doplň vyučujúcich |
|
Line 12: | Line 21: |
== Konzultačné hodiny == V utorok 16:00-17:00. Radšej ale konzultuje priamo na cvičení. |
|
Line 22: | Line 34: |
* Textový editor vim | |
Line 24: | Line 35: |
* Základy internetových protokolov * Protokol http * Základy HTML |
|
Line 28: | Line 36: |
== Domáce zadania == | == Výsledky == |
Line 30: | Line 38: |
=== Cvičenia pre prípravu na prvé skúšobné cvičenie === | [[/Výsledky]] |
Line 32: | Line 40: |
A) premenovanie obrázkov | == Zadanie na druhé zápočtové cvičenie == |
Line 34: | Line 42: |
Vytvorte v bashi skript {{{rename_pics}}}, ktorý premenuje všetky súbory v aktuálnom adresári, ktoré majú koncovku {{{JPG}}} na súbory s koncovkou {{{jpg}}}, napr. {{{obrazok1.JPG}}} premenuje na {{{obrazok1.jpg}}}. |
<<Pozor>> Toto zadanie si vypracujte doma. Ak to zvládnete sami, nemali by ste mať na skúšobnom cvičení problém. Môžete si samozrejme navzájom pomáhať. Zadania nebudem zbierať. Na cvičení vám dám urobiť niečo podobné, takže si vypracované zadania doneste, pomôže vám to. Body dostanete za to, čo urobíte priamo na cvičení. |
Line 38: | Line 48: |
Pomôcka: pre transformáciu mena môžete použiť takéto niečo: {{{ NOVE_MENO=`echo $STARE_MENO | sed '...'`}}} Dávajte si pozor na to, aby ste premenovali iba koncovky, reťazec {{{JPG}}} sa môže vyskytovať aj uprostred mena súboru. Môžete prepokladať, že mená súborov neobsahujú žiadne biele znaky, napr. medzery. |
Skúšobné cvičenie bude 11.5.2010 počas cvičenia. <<Pohov>> |
Line 42: | Line 51: |
B) upravte skript z A) tak, aby premenoval aj súbory ako {{{obrazok1.jPG}}} a podobne. | Napíšte modul `stack.py`, ktorý obsahuje implementáciu |
Line 44: | Line 53: |
C) Vytvorte v bashi skript {{{showsize}}}, ktorý sčíta dĺžky súborov v aktuálnom adresári a výsledok vypíše. | * triedy `Stack` a * funkcie `stack_from_string` |
Line 46: | Line 56: |
Pomôcka: je niekoľko ciest ako to spraviť. Vyskúšajte prvú cestu a potom druhú: | Trieda `Stack` implemetuje takéto metódy: |
Line 48: | Line 58: |
V prvom rade musíte nejako vyprodukovať stĺpec s dľžkami súborov. Buďto na to choďte cez {{{ ls | cut -c ... }}} alebo {{{ for FILE in *; do stat ... $FILE }}} (viď manuálová stránka {{{stat}}}) |
||`__init__(self)` || Inicializuj zásobník ako prázdny.|| ||`push(self,what)` || Vloží `what` na vrch zásobníka.|| ||`peek(self)` || Vráti objekt, ktorý je na vrchu zásobníka, pričom ho nevyberá.|| ||`pop(self)` || Vyberie objekt zo zásobníka, návratová hodnota je tento objekt. Ak je zásobník prázdny, môže (a má) vyvolať výnimku.|| ||`empty(self)`||Vyprázdni zásobník.|| ||`__repr__(self)`||Vráti reťazec, v ktorom sú zreťazené `repr(x)` pre všetky objekty `x` v zásobníku, oddelené medzerami. Vrch zásobníka je na konci tohto reťazca.|| |
Line 59: | Line 65: |
Teraz je viac ciest. 1. Naprogramujete to sčítanie v bashi sami, klasicky cez premenné s použitím bashovskej aritmetiky cez príkaz let. 2. Pomocou postupnosti príkazov prepojených do rúry vyrobíte z tých čísel výraz ako {{{12+1024+254}}} a ten potom pošlete na vstup príkazu bc cez rúru. Budete zrejme musieť nahradiť nové riadky plusom, to sa robí pomocou {{{ tr '\n' '+' }}} |
Okrem triedy Stack obsahuje modul stack aj takúto funkciu: |
Line 63: | Line 67: |
Kostra prvého spôsobu: {{{ SUM=0 for NUMBER in `... kód produkujúci zoznam dĺžok ...`; do ... sem prirátavanie NUMBER k SUM cez let ... done echo $SUM |
||`stack_from_string(s)`||Ako parameter očakáva reťazec celých čísel oddelených medzerami, napr. `"1 -20 17 4 5"`. Vráti `Stack` naplnený týmito číslami, pričom vrchné číslo je na konci s.|| === Príklad použitia modulu na príkazovom riadku Pythonu === {{{#!python >>> import stack >>> s=stack.Stack() >>> s.push(10) >>> s.push(-10) >>> s.push(100) >>> print s 10 -10 100 >>> s.peek() 100 >>> print s 10 -10 100 >>> s.pop() 100 >>> print s 10 -10 >>> s.empty() >>> print s >>> s.pop() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/gejza/vyuka/python_vyuka/stack.py", line 31, in pop return self.l.pop() IndexError: pop from empty list >>> s2=stack.stack_from_string("1 2 3 17") >>> print s2 1 2 3 17 >>> s2.pop() 17 >>> print s2 1 2 3 >>> |
Line 72: | Line 106: |
Kostra druhého spôsobu: {{{ ... kód produkujúci zoznam dĺžok ... | tr '\n' '+' | bc }}} |
== Ďalšie cvičenia == |
Line 77: | Line 108: |
Poznamenávam, že tomu ešte niečo chýba, pretože ten {{{tr}}} vyrobí z posledného newline tiež plus, takže {{{bc}}} bude frfľať, že má nekorektný príkaz. Stačí však ešte jeden {{{sed 's...'}}} a je to; poraďte si sami. |
[[ /CviceniaZoShellu | Cvičenia zo shellu]] [[attachment:python_zadania.pdf | Cvičenia z Pythonu]] |
Line 85: | Line 116: |
=== Pythonovské programy === | * [[attachment:tahak_python.pdf|Ťahák - Python (komplexný)]] * [[http://www.yukoncollege.yk.ca/~ttopper/COMP118/rCheatSheet.html|Ťahák - Python (jednoduchší)]] |
Line 87: | Line 119: |
* [[/Fork|fork(), wait(), SIGCHLD]] * [[/Pipe|pipe()]] * [[/Socket| UNIXové sockety]] |
##=== Pythonovské programy === |
Line 91: | Line 121: |
=== Skripty === |
## * [[PocitacoveSiete/Fork|fork(), wait(), SIGCHLD]] ## * [[PocitacoveSiete/Pipe|pipe()]] ## * [[PocitacoveSiete/Socket| UNIXové sockety]] ## * [[PocitacoveSiete/TCPSocket | Klient a server TCP]] ## * [[PocitacoveSiete/Sumator | TCP server pre scitanie cisel]] ## * [[PocitacoveSiete/ChatServer | Chatovací server - multithreading]] ## * [[PocitacoveSiete/Webserver | "Webovsky server" implementovaný na úrovni socketov]] ## * [[attachment:cgi-server.tar.gz | CGI server a skripty]] |
Line 98: | Line 133: |
1. ''Začínáme programovat v jazyce Python'', Daryl Harms, Kenneth !McDonald; Computer Press, 2003 (nie je nutné, stačí dokumentácia v systéme) | 1. ''Začínáme programovat v jazyce Python'', Daryl Harms, Kenneth !McDonald; Computer Press, 2003 1. ''Learning Python",, Mark Lutz, David Ascher; O'Reilly 2007, http://slav0nic.org.ua/static/books/python/OReilly.Learning.Python.3rd.Edition.Oct.2007.eBook-BBL.rar |
Line 105: | Line 141: |
1. ''A Byte of Python'', Swaroop C H, http://www.swaroopch.com/notes/Python 1. ''How to Think Like a Computer Scientist'', Jeffrey Elkner, Allen B. Downey and Chris Meyers, http://openbookproject.net//thinkCSpy/ |
|
Line 109: | Line 147: |
1. http://www.py.cz/ Český server venovaný Pythonu, obsahuje aj dokumentáciu k starším verziám Pythonu |
|
Line 112: | Line 152: |
20 bodov zo 40. Body sa budú udeľovať v rámci cvičení. | 15 bodov z 30. Body sa budú udeľovať v rámci cvičení. Budú 2 zápočtové cvičenia, jedno zo shell scriptov a jedno z Pythonu. |
Operačné systémy
2008/09 -- LS
Vyučujúci
Gejza Jenča gejza.jenca@stuba.sk
Konzultačné hodiny
V utorok 16:00-17:00. Radšej ale konzultuje priamo na cvičení.
Stručná osnova predmetu
- Princípy OS Unix/Linux
- Základy práce so systémom
- Súborový systém
- Užívatelia a skupiny
- Procesy, rúry
- Prehľad základných utilít
- Programovanie v shelli, skripty
- Programovací jazyk Python
Výsledky
Zadanie na druhé zápočtové cvičenie
Toto zadanie si vypracujte doma. Ak to zvládnete sami, nemali by ste mať na skúšobnom cvičení problém. Môžete si samozrejme navzájom pomáhať. Zadania nebudem zbierať. Na cvičení vám dám urobiť niečo podobné, takže si vypracované zadania doneste, pomôže vám to. Body dostanete za to, čo urobíte priamo na cvičení. Skúšobné cvičenie bude 11.5.2010 počas cvičenia. |
Napíšte modul stack.py, ktorý obsahuje implementáciu
triedy Stack a
funkcie stack_from_string
Trieda Stack implemetuje takéto metódy:
__init__(self) |
Inicializuj zásobník ako prázdny. |
push(self,what) |
Vloží what na vrch zásobníka. |
peek(self) |
Vráti objekt, ktorý je na vrchu zásobníka, pričom ho nevyberá. |
pop(self) |
Vyberie objekt zo zásobníka, návratová hodnota je tento objekt. Ak je zásobník prázdny, môže (a má) vyvolať výnimku. |
empty(self) |
Vyprázdni zásobník. |
__repr__(self) |
Vráti reťazec, v ktorom sú zreťazené repr(x) pre všetky objekty x v zásobníku, oddelené medzerami. Vrch zásobníka je na konci tohto reťazca. |
Okrem triedy Stack obsahuje modul stack aj takúto funkciu:
stack_from_string(s) |
Ako parameter očakáva reťazec celých čísel oddelených medzerami, napr. "1 -20 17 4 5". Vráti Stack naplnený týmito číslami, pričom vrchné číslo je na konci s. |
Príklad použitia modulu na príkazovom riadku Pythonu
1 >>> import stack
2 >>> s=stack.Stack()
3 >>> s.push(10)
4 >>> s.push(-10)
5 >>> s.push(100)
6 >>> print s
7 10 -10 100
8 >>> s.peek()
9 100
10 >>> print s
11 10 -10 100
12 >>> s.pop()
13 100
14 >>> print s
15 10 -10
16 >>> s.empty()
17 >>> print s
18
19 >>> s.pop()
20 Traceback (most recent call last):
21 File "<stdin>", line 1, in <module>
22 File "/home/gejza/vyuka/python_vyuka/stack.py", line 31, in pop
23 return self.l.pop()
24 IndexError: pop from empty list
25 >>> s2=stack.stack_from_string("1 2 3 17")
26 >>> print s2
27 1 2 3 17
28 >>> s2.pop()
29 17
30 >>> print s2
31 1 2 3
32 >>>
Ďalšie cvičenia
Materiály
Literatúra
Linux: Příručka českého uživatele, Vilém Vychodil; Computer Press 2003, Brno (je žiadúce, aby každý mal svoju kópiu)
Začínáme programovat v jazyce Python, Daryl Harms, Kenneth McDonald; Computer Press, 2003
Learning Python",, Mark Lutz, David Ascher; O'Reilly 2007, http://slav0nic.org.ua/static/books/python/OReilly.Learning.Python.3rd.Edition.Oct.2007.eBook-BBL.rar
The Art of Unix Programming, Eric S. Raymond, http://www.faqs.org/docs/artu/
Umění programování v Unixu, Eric S. Raymond, (český preklad horeuvedeného)
How To Ask Questions The Smart Way, Eric Steven Raymond, http://www.catb.org/~esr/faqs/smart-questions.html
Dive into Python, Mark Pilgrim, http://www.diveintopython.org/
Advanced Bash-Scripting Guide, Mendel Cooper, http://tldp.org/guides.html
GNU/Linux Command-Line Tools Summary, Gareth Anderson, http://tldp.org/guides.html
A Byte of Python, Swaroop C H, http://www.swaroopch.com/notes/Python
How to Think Like a Computer Scientist, Jeffrey Elkner, Allen B. Downey and Chris Meyers, http://openbookproject.net//thinkCSpy/
Webové stránky
http://www.root.cz/clanky/regularni-vyrazy-1/ seriál o regulárnych výrazoch od P. Satrapu
http://www.py.cz/ Český server venovaný Pythonu, obsahuje aj dokumentáciu k starším verziám Pythonu
Podmienky na zápočet
15 bodov z 30. Body sa budú udeľovať v rámci cvičení. Budú 2 zápočtové cvičenia, jedno zo shell scriptov a jedno z Pythonu.
Príklady a cvičenia