# Úkoly – sesíťování
## Sesíťování (do začátku prosince)
Zkontroluj si, že:
* se z virtuálního počítače připojíš k internetu (přes prohlížeč)
* když ve virtuálním počítači běží `nc -l -p 5000`, připojíš se ze svého opravdového počítače (přes prohlížeč, `http://<adresa>:5000`; nebo na Linuxu přes `nc <adresa> 5000`)
Vysvětlení a detaily jsou na https://youtu.be/l1uSlR4l-yA
(Pokud si píšeš textové poznámky/zápis, pošli je na Slack. Rád zkontroluju, doplním a zveřejním i pro ostatní.)
Se sesíťováním pomůžou koučové. Čas je do 1. 12. – žádný spěch :)
Až budeš mít hotovo, zapiš prosím OK do sloupce *Sesíťováno* v tabulce s papírkama.
## K minulé lekci (nepovinná meditace)
A chceš-li si i tento týden trochu přemýšlet nas souborama, zkus meditovat nad následujícím programem:
```python=
import os
# Otevření souboru.
# Mód "w+" umožňuje jak do souboru zapisovat tak
# z něj i číst.
soubor = open('/tmp/demo.txt', 'w+', encoding='utf-8')
# Vytvoření "tvrdého" odkazu (hardlink)
os.link('/tmp/demo.txt', '/tmp/demo2.txt')
# Pythonní ekvivalent příkazu "stat" je os.stat()
print(os.stat('/tmp/demo.txt'))
# Ze všech informací nás zajímá počet odkazů.
# Mělt by být 2 – jeden odkaz je z /tmp/demo.txt,
# druhý z /tmp/demo2.txt.
print('nlink (ze stat) =', os.stat('/tmp/demo.txt').st_nlink)
# Každý otevřený soubor má *file descriptor*
# (stdin je 0, stdout 1, stderr 2, další se vytváří
# otevřením souboru.)
# Toto číslo, tzv. *file descriptor*, ukazuje mj. příkaz lsof
fd = soubor.fileno()
print('Číslo otevřeného souboru:', fd)
# Stejné informace jako z os.stat() jdou získat i z takového
# deskriptoru pomocí funkce os.fstat()
print('nlink (z fstat) =', os.fstat(fd).st_nlink)
# Smaž nyní demo2.txt.
print('Mažu demo2.txt')
os.remove('/tmp/demo2.txt')
# Počet odkazů by se měl snížit na 1
print('nlink (ze stat) =', os.stat('/tmp/demo.txt').st_nlink)
print('nlink (z fstat) =', os.fstat(fd).st_nlink)
# Smaž nyní i demo.txt.
print('Mažu demo.txt')
os.remove('/tmp/demo.txt')
# Počet odkazů se tím snížil na 0, což znamená že soubor už
# nemá jméno na disku. Nepůjde na něj použít stat (protože tam
# je jméno potřeba), ale fstat funguje dál:
print('nlink (z fstat) =', os.fstat(fd).st_nlink)
print(os.fstat(fd))
# Teď něco do souboru zapiš:
for i in range(10):
print('Ahoj!', file=soubor)
# Pozice, od které se soubor čte, je synchronizovaná s tou, kam
# by se příště zapsalo. Aktuálně je to konec souboru.
# Přejdi na začátek souboru, aby se četlo od začátku.
soubor.seek(0)
# Soubor přečti a vypiš obsah:
print('Obsah souboru:')
print(soubor.read())
```
Aby systém smazal soubor, musíš ho nejen smazat z disku, ale taky ho všechny programy, které ho používají, musí zavřít.