RoboticsLab Data a IT

Data a IT

Ostatní tratě popisují stroj, který něco dělá. Tahle popisuje to, čím ten stroj <em>mluví</em> — a začíná u věty, která platí až do konce: <strong>vzorek bitů sám o sobě neznamená nic.</strong> Ten stejný bajt je 202, nebo −54, nebo písmeno, nebo čtvrtina jednoho čísla s plovoucí čárkou, a rozhoduje o tom jenom otázka, kterou mu někdo položí. Skoro každá chyba v tomhle oboru je někdo, kdo se ptá jinak než ten, kdo to ukládal.

4 nástroje · 51 kapitol · 51 vzorců
Rejstřík vzorcůVšechny vzorce ze všech nástrojů na jednom místě, s vyhledáváním — včetně jednotek, zdroje a odkazu, který je otevře rovnou v kalkulačce. Hledat ve vzorcích

BitLab — bity, bajty, čísla a text v paměti

BitLab zakládá pátou trať a stojí na jediné větě, která platí až do konce: vzorek bitů sám o sobě neznamená nic. Ten stejný bajt je 202, nebo −54, nebo písmeno „Ê“, nebo čtvrtina jednoho floatu — a rozhoduje o tom jenom otázka, kterou mu někdo položí. Uvnitř je bit a bajt, dvojková a šestnáctková soustava, dvojkový doplněk i s tou jednou chybějící kladnou hodnotou (−(−128) je pořád −128), přetečení jako obtočení po kruhu, bitové operace a masky registrů, posuny a ten vpravo, který má dvě různé odpovědi a vybírá je typ, IEEE 754 rozebraná na znaménko, exponent a mantisu, nerovnoměrná mřížka floatu a proč se peníze počítají v haléřích, pevná řádová čárka, ASCII, Unicode a UTF-8 i s náhradními páry, endianita a rozdíl mezi kB a KiB. Ověřuje se nejlíp z celé akademie: prostředí, ve kterém běží testy, obsahuje nezávislou implementaci týchž norem — rozklad floatu se porovnává s DataView na deseti tisících náhodných vzorcích včetně NaN a subnormálních čísel, kodér UTF-8 s TextEncoder přes celý rozsah kódů. Znaménková chyba tedy neprojde: rozejde se s platformou.

13 kapitol · 20 vzorců · 15 otázek

Kapitoly
  1. 1Bit a bajt: nejmenší otázka, na kterou jde odpovědět
  2. 2Dvojková a šestnáctková: proč se píše 0xFF a ne 255
  3. 3Záporná čísla: dvojkový doplněk a ta jedna chybějící kladná
  4. 4Přetečení: co se stane, když se to nevejde
  5. 5Bitové operace: AND, OR, XOR a k čemu doopravdy jsou
  6. 6Masky a registry: sáhnout na jedno pole a nerozbít sousedy
  7. 7Posuny: a ten vpravo, který má dvě odpovědi
  8. 8Plovoucí čárka: znaménko, exponent, mantisa
  9. 9Krok mřížky: proč 0,1 + 0,2 ≠ 0,3
  10. 10Pevná řádová čárka: co se používá, když float nestačí
  11. 11Text: od ASCII k UTF-8
  12. 12Endianita a velikosti: KB, KiB a chybějících 34 GB
  13. 13Kde se to v akademii používá

LinkLab — sériový přenos, rámce a kontrolní součty

LinkLab stojí na jedné větě: linka není drát, linka je dohoda. Dva čipy spojené mědí nesdílejí vůbec nic, dokud se nedohodnou, kde bajt začíná, jak rychle jde, který bit je první a jak druhá strana pozná, že dorazil celý — a každý protokol tady je jinou sadou odpovědí na tytéž čtyři otázky. 14 kapitol: rámec a jeho režie (8N1 je 20 %, CAN přes 50 %), rozdíl mezi baudem a datovým tokem, rozpočet hodin, který rozhoduje, jestli spolu dva volnoběžné oscilátory vůbec můžou mluvit, parita a proč nikdy nechytí sudý počet chyb, CRC jako dělení bez přenosů se všemi šesti parametry, co polynom doopravdy zaručuje, SPI a čtyři režimy, I²C a zvedací odpor, který je návrhový kompromis mezi hranou a proudem, RS-485 a diferenciální pár, CAN s arbitráží pevnou prioritou a bit stuffingem, NRZ versus Manchester a stejnosměrná složka, a kdy drát přestane být drát. Ověření: CRC má publikované kontrolní hodnoty pro řetězec „123456789“ — devět sad parametrů, devět tabulkových odpovědí — a CRC-32 se navíc porovnává se zlib. Detekce se měří: shluky se do zprávy vstřikují a počítá se, kolik jich prošlo.

14 kapitol · 14 vzorců · 14 otázek

Kapitoly
  1. 1Proč se posílá po jednom drátě
  2. 2Rámec: start, data, parita, stop
  3. 3Baud, bitová rychlost a datový tok: tři různá čísla
  4. 4Dvě strany bez společných hodin
  5. 5Parita: chytí jednu chybu a o dvou mlčí
  6. 6CRC: dělení, které se dělá posunem a XORem
  7. 7Který polynom — a co doopravdy zaručuje
  8. 8SPI: hodiny na drátě a čtyři režimy
  9. 9I²C: dva vodiče, adresa — a odpor, který je návrh
  10. 10Diferenciální pár: proč to jde na kilometr
  11. 11CAN: arbitráž bez kolize a bit stuffing
  12. 12Kódování na lince: NRZ, Manchester a stejnosměrná složka
  13. 13Kdy drát přestane být drát
  14. 14Kde se to v akademii používá

NetLab — sítě pro řízení: latence, jitter a reálný čas

NetLab stojí na jedné větě: na síti je průměr špatná otázka. Webová stránka se ptá, jak rychle to obvykle je; regulační smyčka se ptá, jak pomalé to může být — a ty dvě otázky táhnou návrh na opačné strany, protože spolehlivost se platí časem a smyčka žádný nazbyt nemá. 12 kapitol: vrstvy a co která přidá, ethernetový rámec a to, že osm bajtů dat stojí 84 bajtových dob, přepínač a rámec, který nejde přerušit (nesnížitelný jitter 123 µs při 100 Mb/s, i na nečinné síti s prioritami), rozpočet zpoždění po čtyřech částech, IP a paket, který se legálně ztratí, TCP versus UDP a cena opakování (200 ms = 200 zmeškaných cyklů), jitter a percentily, kdy se smyčka po síti zavře, EtherCAT jako rámec čtený za jízdy, a TSN. Nález, který vypadl z testů a ne z psaní: který percentil ocas odhalí, závisí na tom, jak často se to děje — při 1 % výpadků leží p99 ještě v těle rozdělení a hlásí pohodlných 128 µs, zatímco nejhorší případ je desetkrát vyšší; pod 0,1 % ho nenajde žádný běžný percentil. Ověřeno konstantami z IEEE 802.3, křížovou shodou s LinkLabem na rychlosti šíření a percentily proti prostému setřídění.

12 kapitol · 6 vzorců · 11 otázek

Kapitoly
  1. 1Vrstvy: proč se to dělí a co která umí
  2. 2Ethernetový rámec: kam se poděl drát
  3. 3Přepínač: kolize zmizely, čekání ne
  4. 4Rozpočet zpoždění: čtyři části, které rostou jinak
  5. 5IP: paket, který se legálně ztratí
  6. 6TCP a UDP: spolehlivost, která stojí čas
  7. 7Jitter: proč je průměr k ničemu — a proč ani p99 nemusí stačit
  8. 8Regulační smyčka po síti: zavře se to?
  9. 9Proč obyčejný Ethernet nestačí
  10. 10EtherCAT: rámec, který se čte za jízdy
  11. 11TSN a PROFINET: čas jako součást protokolu
  12. 12Kde se to v akademii používá

AlgoLab — složitost měřená v operacích, ne v sekundách

AlgoLab uzavírá pátou trať a je jediná labka v akademii, jejímž předmětem je program, ne stroj. Stojí na jedné větě: O() říká, jak cena roste, a nic víc — neříká jak dlouho to poběží, neříká co vyhraje při dvaceti prvcích, neříká nic o paměti ani o cache. Každá z 12 kapitol vezme jednu věc, kterou ta notace neříká, a změří ji. Uvnitř: proč se počítají operace a ne sekundy, tři kvadratická třídění a čím se doopravdy liší, rozděl a panuj, quicksort a volba pivota (s pivotem na konci má nejhorší případ na už setříděném poli — změřeno: rekurze jde na 512 prvcích 511 úrovní hluboko, medián ze tří devět), kde konstanta poráží složitost, vyhledávání a od kolika hledání se vyplatí setřídit, pole versus spojový seznam versus hash, cache a proč je pole osmkrát levnější při stejném O(n), a rozpočet na mikrokontroléru. Nic se neměří stopkami: každý algoritmus je instrumentovaný a počítá si porovnání, přesuny a alokace, takže je výsledek stejný na každém stroji navždycky. Ověřeno přesnými identitami (třídění výběrem dělá právě n(n−1)/2 porovnání, binární vyhledávání právě ⌈log₂(n+1)⌉ kroků), výstupem porovnaným s Array.prototype.sort a multimnožinou, a proloženým exponentem růstu.

12 kapitol · 11 vzorců · 11 otázek

Kapitoly
  1. 1Proč se počítají operace a ne sekundy
  2. 2O(n): co to říká a co NEŘÍKÁ
  3. 3Změřený růst proti předpovědi
  4. 4Tři kvadratická třídění a čím se doopravdy liší
  5. 5Rozděl a panuj: odkud se bere to log n
  6. 6Quicksort: pivot rozhoduje o všem
  7. 7Konstanta vyhrává na malých datech
  8. 8Vyhledávání a kdy se vyplatí setřídit
  9. 9Pole, spojový seznam, hash: tři různé odpovědi
  10. 10Cache: proč je pole rychlejší, než složitost slibuje
  11. 11Rozpočet na mikrokontroléru a proč se ve smyčce nealokuje
  12. 12Kde se to v akademii používá
Jak se to čte. Trať jde zdola nahoru: bity a bajtypřenos po lincesítěalgoritmy. Ověřuje se jinak než ostatní tratě, a líp: prostředí, ve kterém běží testy, obsahuje nezávislou implementaci téhož — IEEE 754 se porovnává s DataView, UTF-8 s TextEncoder. Znaménková chyba tedy neprojde, protože se rozejde s platformou.