Try   HackMD

Ú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:

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.