Navigation
Page categories
Outline:
Last modification
2025-09-04
This is smol web. If you don't like it, fix your browser.

Informace o cvičení k přednášce Úvod do UNIXu na MFF.

Průběžné výsledky#

(odstraněno)

Požadavky k zápočtu#

Zápočet je potřeba k přihlášení na zkoušku, všichni by ho měli dostat ideálně do začátku zkouškového. Předem upozorňuju, že přes zkouškové a v září budu k dispozici tak napůl.

Zásadním účelem zápočtu je zajistit, že až půjdete ke zkoušce, tak odejdete s úspěchem a zkoušející z toho nebude muset mít těžkou hlavu a černé myšlenky. O této schopnosti mě můžete přesvědčit jakýmkoliv dostatečně rigorózním způsobem, doporučené postupy jsou ale tyto:

BONUSY: půl “náhradního” bodu k docházce nebo náhradu poloviny domácího úkolu lze získat za aktivitu při hodině nebo splnění bonusů domácích úkolů. Na jednom z posledních cvičení bude možnost napsat menší písemku, která bude ohodnocena 0 až 6 bonusy.

Témata na zápočťáky#

Téma zápočťáku je potřeba dohodnout do 22. 4. 2016. Pokud chcete vyloženě lehké téma které nezabere víc času než průměrný domácí úkol, posbírejte bonusy za DÚ a aktivitu, za každý je úleva. Pokud jste už vytvořili něco jiného co s UNIXem souvisí, neváhejte to použít taky jako zápočťák, k účelu ověření že jste schopní produkovat unixový software to většinou stačí.

VHODNÉ:

Rozsah: orientačně cca nad 100 a pod 400 řádků kódu. Víc není problém, ale hrozí, že toho bude zbytečně moc. Míň taky není problém, pokud kód bude dostatečně funkčně nahušťěný (nebo máte dost bonusů).

Témata:

NEVHODNÉ:

ÚLEVY:

Zápočťák napsat musíte, je potřeba prokázat, že dáte dokupy standartně se chovající program. Dostatkem bodů za aktivitu/bonusy ale požadavky můžete zmenšit na velikost značně podprůměrného domácího úkolu ve skriptu který zvládne správně zpracovat optiony a pak jen spustí něco jiného (třeba neexistujícího). Detaily níže.

Hodnocení zápočťáků#

Hodnotí se následující aspekty:

Zápočťák je OK, když v žádném bodě není velký problém. Číslo v závorce je počet bonusů, které musíte obětovat pokud chcete neúplný nebo nekvalitní (tj. “aspoň něco”) bod prohlásit za bezproblémový.

(Samozřejmě se to netýká případů typu “rozsah je přesně nula” nebo “programovací chyby jsou všude”. :D )

Jak odevzdat zápočťák?#

Pošlete mi ho v balíku .tar.gz. Balík by měl obsahovat jediný adresář s názvem popisujícím vaše téma a jméno (např. drticka_virtualniho_odpadu_josef_novak/, v něm pak:

Průběh cvičení#

2016/02/23#

Crash-course pozorování černého terminálu.

: Zkuste si vimtutor, hodí se to. Napište skript, který spočítá celkový počet řádek ve všech souborech aktuálního adresáře začínajících na písmeno a. Můžete předpokládat, že tam nejsou žádné adresáře. Návod: cat + * + wc, přečtěte si manuálovou stránku obou příkazů. Pravděpodobně jednořádkový výsledek mi pošlete mailem (zároveň to slouží jako kontrola mailových adres).

2016/03/01#

DU: Na cvičení jsme měli skript, který postupně skompiluje soubor se zdrojákem v céčku (.c) na object code (.o) a nakonec na spustitelný soubor. Je to postupně zhruba: gcc -c zdrojak.c -o zdrojak.o ; gcc zdrojak.o -o program ; ./program. Napište skript, který v parametru dostane soubor.c který má skompilovat, a v případě selhání jednoho z volání gcc hezky napíše, že něco selhalo a ukončí se s nenulovým exit statusem (tj. “předá hlášení o chybě dál”).

Tedy např.:

Prosím dejte pozor na správný předmět mailu (DU-NSWI095 $jmeno). Skript zkopírujte rovnou do textu, přílohovat netřeba.

Pozn.: Zapomněl jsem udělat docházku. Takže budeme předstírat, že tam byli všichni. Kromě někoho kdo první hodinu chtěl zápočet těžkou cestou, za velkou písemku, a nebyl tam. Což nevím kdo je, ale stejně by bylo super kdyby se ozval. :D

2016/03/08#

: Napište skript, který vypíše jen dostatečně dlouhé řádky na vstupu. K řešení použijte následující hinty:

Skript by měl podporovat commandline optiony: -i <input_file> a -l <min_length> (samozřejmě v libovolném pořadí), pokud není specifikované -i, použijte standartní vstup.

(Pozn.: měl jsem v parametrech napsáno matoucí max_length místo min_length, opraveno.)

2016/03/15#

: O tom jak se píšou regulární výrazy si můžete přečíst nějaké detaily v man 7 regex. Zkuste si vygooglit regulární výraz na matchnutí e-mailové adresy, nebo ten problematický číselný na celou IP adresu .

Hodnocený DǓ: Napište sedový příkaz (ideálně oneliner), který všechny (decimální) čísla ve vstupním textu vynásobí desítkou a zvládá obsloužít desetinnou tečku i čárku. Hint: když tam není desetinná tečka (ani čárka), stačí přidat nulu; když tam je, je potřeba to trochu rozkrájet a jedno číslo chytře přesunout.

Zbytek z hodiny 1: Důvod existence dvou rozdílných syntaxí regexu je zhruba ten, že v různých situacích se hodí backslashovat různé věci.

Poznámka: druhá “extended” syntaxe regexu (o které se taky dočtete v manuálu a ve které hlavně není potřeba backslashovat závorky apod atd.) se v grepu zapíná pomocí -E a v sedu pomocí -r.

Zbytek z hodiny 2: Sedem samozřejmě jde rozlamovat řádky. Na hodině to nešlo, protože jsem asi něco přehlídnul. Konkrétní syntax: sed 's/něco/\n/g'

2016/03/22#

: Stáhněte si data — anonymizovaný výpis provozu (txt, 6.2MB) z nějakého routeru, přes který na Vánoce těsně před obědem tekl internet. “Uživatelé” mají IP adresy začínající na “10.”, tj. například 10.1.2.3. Zbytek IP adres je “vnější internet”. Každý řádek prakticky odpovídá jednomu otevřenému spojení.

Napište:

Připomínka co se může hodit: grep -v vypíše jen řádky, které hledání nevyhovují.

2015/03/29#

Užitečné: Víceřádkové matche v sedu nejsou jednoduché

: Skript, který v adresáři a všech podadresářích přejmenuj všechny soubory co jsou ALL_CAPSEM na small_caps, ale MixedCaps nechá stejné. Při kolizi názvů udělá chybu nebo ji vyřeší nějak jinak. Pozor na názvy souborů které v sobě mají mezery a podobné paznaky. Použijte find -exec.

2015/04/05#

:

2015/04/12#

:

2015/04/19#

: Napište program který pomocí mail (nebo nějakým libovolným jiným rozumným způsobem) vybere mailbox a pošle sendmailem mail ve tvaru “Sorry odjel jsem na dovolenou do Detroitu” všem lidem co se uživatelovi pokoušeli dopsat. Maily můžete volitelně smazat nebo nechat na místě.

2015/04/26#

: Napište v awku program, který vypíše každou prvočíselnou řádku.

2015/05/03#

: Napište miniaturní terminálový interpret “želvičky”, tj. něco jako programovacího jazyka logo, ideálně v AWKu (ale můžete i v shellu). Něco jako tohle (dále viz wiki), akorát jen na textovém políčku velikosti 10x10. Želva začne vlevo dole a bude se koukat nahoru, v každém kroku políčko pod sebou nabarví nějakou vybranou barvou, může se otočit jen do 4 směrů a popolézt dopředu. V případě nárazu na stěnu s ní udělejte něco rozumného, ať neumře. Interpret musí podporovat příkazy: forward, left, right a color N (kde N je číslo pro barvu, 0 je černá (prázdno) a 1 je bílá (tj. nějaké písmeno)). Program dostane želví instrukce na standartním vstupu a nějak terminálovitě vykreslí finální stav.

Např.: přerušovaná čára se nakreslí: for i in `seq 5`;do echo -e "forward\ncolor 0\nforward\ncolor 1" ; done | ./zelva.awk

Zápočťáky: Prosím všechny co mi domluvu zápočtového programu na cvičení ještě nepotvrdili mailem (a nejspíš to následně nemají dobře zapsané v tabulce), ať mi napíšou, co přesně se dohodlo.

Zápočty: Upozornění: cca 15.6. až 10.7. nebudu v republice. Pokud budete tou dobou potřebovat dostat zápočet, zkuste to stihnout před 10.6. Jinak mi dejte vědět, domluvím to s kolegou.

2015/05/10#

: greylisting. Program, co si udržuje databázi dvojic mailových adres From: a To: spolu s časem kdy je viděl poprvé/naposled, a pomáhá filtrování spamu tím, že odpoví “ne” na maily, které viděl poprvé míň než před pěti minutami. Např. A pošle mail B, program odpoví No. A pošle další mail B, program pořád odpovída No. A počká 5 minut a pošle mail, program odpoví Yes. A počká týden a zkusí to znova, to už zase neprojde protože záznam expiroval. Program si musí databázi buď zamykat a chránit před poškozením, nebo musí vymyslet způsob jak data ukládat bez rizika rozbití. Databázi i zámky skladujte ve skrytém podadresáři domácího adresáře uživatele, pod kterým se to spouští.

Pozn. k bonusu 1-3: v labu je AFS, což je distribuovaný filesystém a zámky na něm nemusí fungovat vůbec dobře. Testujte to v /tmp.

2015/05/17#

Trochu mě napadlo, že uděláme něco praktičtějšího, takže ssh-keygen, git. Bash coproc.

užitečné: git primer: https://www.kernel.org/pub/software/scm/git/docs/giteveryday.html

: prodloužen z minula

2015/05/24#

“Beta” test na hodině — kdyby náhododou ještě někomu chyběly body na zápočet, dočerpá je timhle. Jinak diskuze zápočťáků, rozdávání zápočtů.

Bonusy#