Differences between revisions 11 and 81 (spanning 70 versions)
Revision 11 as of 2008-01-21 08:30:21
Size: 3594
Editor: 147
Comment:
Revision 81 as of 2010-04-28 21:37:20
Size: 5512
Editor: jenca
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
2007/08 -- 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 7: Line 19:
## Doplň vyučujúcich  * Gejza Jenča gejza.jenca@stuba.sk
Line 9: Line 21:
 * Gejza Jenča gejza.jenca@stuba.sk
 * Jozef Martin Kollar jmkollar@penguin.sk
== Konzultačné hodiny ==

V utorok 16:00-17:00. Radšej ale konzultuje priamo na cvičení.
Line 21: Line 34:
 * Textový editor vim
Line 23: Line 35:
 * Základy internetových protokolov
Line 25: Line 36:
== Témy na skúšku == == Výsledky ==
Line 27: Line 38:
 1. Súborový systém, užívatelia a skupiny, prístupové práva
 2. Procesy, signály, rúry.
 3. Regulárne výrazy.
 4. Náčrt riešenia jednoduchého problému v shelli.
 5. Náčrt jednoduchého programu v Pythone.
 6. Základy internetových protokolov IP, TCP, UDP, HTTP.
[[/Výsledky]]
Line 34: Line 40:
== Komentáre ku skúške == == Zadanie na druhé zápočtové cvičenie ==
Line 36: Line 42:
V prvom zadaní ste nevedeli zabezpečiť, aby nikto okrem vlastníka nevedel zmazať súbor. Treba dať súbor
do osobitného adresára a revokovať zápisové práva pre skupinu a ostatných. Nevedeli ste (až na výnimku)
význam setgid na adresár. umask malo byť 007.
<<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 40: Line 48:
Druhé zadanie dopadlo pomerne dobre, máte o tom správnu predstavu. Ale niektorí si myslíte, že sa
forkuje ls, prípadne nepíšete čo sa forkuje. Forkuje sa shell.
Skúšobné cvičenie bude 11.5.2010 počas cvičenia.
<<Pohov>>
Line 43: Line 51:
V treťom zadaní bol problém s tým, že väčsinou neviete spätné referencie -- to je nutné, ak chceme vybrať riadky
s rovnakým prvým aj posledným znakom. Takto:
Napíšte modul `stack.py`, ktorý obsahuje implementáciu
Line 46: Line 53:
{{{
'^\(.\).*\1$'
 * 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 ===

{{{#!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 50: Line 106:
Toto vám výrazne komplikovalo život pri robení shellovského scriptu, ale poradili ste si.
V skripte bolo najjednoduchšie použiť
== Ďalšie cvičenia ==
Line 53: Line 108:
{{{
sed 's/.*BODY=\([0-9]*\).*/\1/
}}}
[[ /CviceniaZoShellu | Cvičenia zo shellu]]
Line 57: Line 110:
na vystrihnutie bodov z každého riadku.

Python nemal dobre snáď nikto, väčšinou ste sa vôbec netrápili s tým, že ak robíte novú maticu, musíte si
ju najprv vytvoriť. Za skutočnú chybu som ale považoval, ak ste proste prebehli maticu a
urobili
{{{
A[i,j]=A[j,i]
}}}
toto predsa celú maticu zničí.


Pre zaujímavosť prikladám mimoriadne expertné riešenie, využívajúce Python nadoraz:

{{{
[list(x) for x in zip(*A)]
}}}



== Výsledky skúšky ==



== Domáce zadania ==

[:/Zadanie1: prvé]
[[attachment:python_zadania.pdf | Cvičenia z Pythonu]]
Line 86: Line 114:
 * [attachment:prva.pdf pdf k prvej prednáške]  * [[attachment:prva.pdf|pdf k prvej prednáške]]
 * [[attachment:tahak_unix.pdf|Ťahák - príkazy v UNIXe]]
 * [[attachment:tahak_python.pdf|Ťahák - Python (komplexný)]]
 * [[http://www.yukoncollege.yk.ca/~ttopper/COMP118/rCheatSheet.html|Ťahák - Python (jednoduchší)]]
Line 88: Line 119:
=== Pythonovské programy === ##=== Pythonovské programy ===
Line 90: Line 121:
 * [:/Fork:fork(), wait(), SIGCHLD]
 * [:/Pipe:pipe()]
 * [:/Socket: UNIXové sockety]

=== 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 101: 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 108: 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 112: Line 147:
 1. http://www.py.cz/ Český server venovaný Pythonu, obsahuje aj dokumentáciu k starším verziám Pythonu
Line 115: 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

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

/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

Cvičenia zo shellu

Cvičenia z Pythonu

Materiály

Literatúra

  1. 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)

  2. Začínáme programovat v jazyce Python, Daryl Harms, Kenneth McDonald; Computer Press, 2003

  3. 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

  4. The Art of Unix Programming, Eric S. Raymond, http://www.faqs.org/docs/artu/

  5. Umění programování v Unixu, Eric S. Raymond, (český preklad horeuvedeného)

  6. How To Ask Questions The Smart Way, Eric Steven Raymond, http://www.catb.org/~esr/faqs/smart-questions.html

  7. Dive into Python, Mark Pilgrim, http://www.diveintopython.org/

  8. Advanced Bash-Scripting Guide, Mendel Cooper, http://tldp.org/guides.html

  9. GNU/Linux Command-Line Tools Summary, Gareth Anderson, http://tldp.org/guides.html

  10. A Byte of Python, Swaroop C H, http://www.swaroopch.com/notes/Python

  11. How to Think Like a Computer Scientist, Jeffrey Elkner, Allen B. Downey and Chris Meyers, http://openbookproject.net//thinkCSpy/

Webové stránky

  1. http://www.root.cz/clanky/regularni-vyrazy-1/ seriál o regulárnych výrazoch od P. Satrapu

  2. 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

Výsledky

KMaDGWiki: OperacneSystemy (last edited 2024-09-17 13:58:44 by jenca)