Warning
This page is located in archive.

Trénink

Jedná se o první verzi, budu rád za připomínky a další náměty.

Zde najdete některé úlohy, které nejsou součástí cvičení. Můžete to pojmout jako připravu na cvičení, nebo jako vzorek toho, co byste již měli umět.

Pokud si je vyzkoušíte splnit, získáte dovednosti, které se Vám na cvičení budou hodit. Programovací jazyk použijte dle svého uvážení.

Příprava vývojového SW

Doporučuji si nainstalovat Python 3. Na cvičeních budou k dispozici ukázky kódu právě v Pythonu. Zjistěte si také, jak doinstalovat nějaké balíčky (json, requests, …). Zkuste si spustit nějaké Hello World.

Vývojová prostředí pro různé jazyky naleznete třeba na serveru https://download.cvut.cz.

GIT

Tutoriálů a návodu týkajících se verzovacího systému GIT je na webu spousta. Vyberte si sami.

Nainstalujte si GIT a vybraný tutoriál si vyzkoušejte v příkazové řádce.

K dispozici máte GitLab.

Big vs Little Endian

Měli byste být schopni načíst soubor s daty s libovolnou endianitou. Pokud máte pocit, že se Vás to netýká, mějte na paměti, že výchozí endianita u platformy x86 je LE, u síťových zařízení naopak BE.

  • Stáhněte si archiv, ve kterém jsou dva BIN soubory.
  • Vyzkoušejte si, zda dokážete tyto soubory korektně načíst (v obou reprezentacích).
  • K dispozici máte nejen logy z vytvoření souborů, ale i hexadecimální přepis.
  • Oba soubory BIN obsahují stejná čísla (stejné hodnoty), akorát v jiné endianitě.

Doporučený postup je následující:

  1. Prohlédněte si oba logy a současně je porovnejte s obsahem (HEXDUMP.TXT) daného BIN souboru. Měli byste být schopni tam vidět rozdíly mezi reprezentací BE a LE: Po dvou úvodních řetězcích byla zapsána dvoubajtová proměnná bez znaménka (usigned short) s hodnotou 4660, tj. 0x1234. V souboru přejěte na offset 0x0c. V jednom ze souborů je zapsána jako dvojice bytů {0x12,0x34}, v druhém {0x34,0x12}.
  2. Zkuste si tuto hodnotu z obou souborů korektně načíst. Když se to povede, pokračujte dále. Následují 4bajtové hodnoty (unsigned int). To by neměl být větší problém.
  3. Následují proměnné se znaménkem. Zde opět vyřešte načítání pro jednu z reprezentací, např. LE. a pak pokračujte k té druhé.
  4. Pokud chcete, můžete práci rozšířit o floating point čísla.
  5. Měli byste také tušit, jak funguje přetypování ve Vašem programovacím jazyce.

Zajímavost: Víte, že původ Big/Little Endian souvisí s Guliverovými cestami, občanskou válkou a vejci…?

Vykreslení pixelu do canvasu

Ve svém oblíbeném programovacím jazyce vykreslete např. sinusoidu. Pripravte si však funkci, která umí vykreslit pixel na libovolné souřadnice obrázku, zadanou barvou:

public void putPixel(int x, int y, int R, int G, int B) {...}

public void putPixel(int x, int y, int grayLevel) {...}

TCP/IP

Měli byste mít alespoň základní znalosti o způsobu fungování protokolu TCP/IP a souvisejících (UDP, DHCP, DNS, HTTP, …).

Měli byste také znát základní metody protokolu HTTP (GET, POST, …) a jejich použití při komunikaci s REST API.

Packet capture

Zjistěte si, jak ve vašem počítači odchytíte paket TCP/IP spojení a zobrazíte jeho obsah. Zkuste např. odchytit HTTP1) požadavek z prohlížeče.

Connection

Ve svém programovacím jazyku zkuste vytvořit jednoduché TCP spojení. Můžete např. poslat webovému serveru jednoduchý HTTP GET požadavek.

Zkuste si související pakety odchytit.

Server

Pokud jste již zvládli komunikaci HTTP GET, zkuste si napsat jednoduchý server, např. tzv. echo. Co mu přijde, to pošle zpět.

Vyjděte z implementace předchozího klienta a až Vám bude bezchybně fungovat, začněte vytvářet server.

Měli byste vědět, že většina serverů využívá jisté paralelizace zpracování požadavků, viz např. přehled.

Zkuste si Váš server přepsat s využitím např. fork() nebo vláken, příp. ještě lépe Thread pool.

DICOM

Nainstalujte si Dicom Toolkit. Seznamte se se zakladnimi prikazy. Vyzkousejte si je.

Ve Vašem OS i programovacím jazyku si zjistěte, jak zachytíte výstup z provedeného příkazu (a zpracujete jej). Pozor, občas budete muset zachytit i stderr2).

Textové formáty

Zkuste si načíst a zpracovat, příp. validovat jednotlivé typy souborů:

Zkuste použít vhodné knihovny.

Pokud se chcete více procvičit, zkuste si napsat vlastní.

Databáze

Měli byste znát E-R modelování, normální formy relačních databází, SQL (včetně agregačních funkcí – s klauzulí GROUP BY).

Najděte si vhodný tutorial, je jich spousta.

HL7

Stáhněte a vyzkoušejte si nějakou implementaci knihoven pro práci s HL7, např.: HL7API, HL7APY, apod.

1)
pozor, HTTP/2 je již binární
2)
standardní chybový výstup
courses/a6m33li/00train.txt · Last modified: 2016/11/02 17:16 by bursam