Krátké streamované přednášky

V časech koronavirové krize na jaře 2020 se i KSP rozhodlo (částečně i namísto zrušeného Jarního soustředění) uspořádat přednášky přenášené přes internet. Celkem proběhlo devět přednáškových livestreamů od dubna do června 2020.

Detaily aneb F.A.Q.

Kdy se přednášky konaly?

Jednou týdně večer, většinou ve středu od 19:00.

Jak streamované přednášky fungovaly?

Přednášky šlo sledovat interaktivně přes Zoom a nebo jako stream na YouTube. Na Zoomu poté probíhala i volná diskuze po přednáškách.

O čem jsme přednášeli?

Pokoušeli jsme se většinou seskládat tři zajímavé přednášky na různá témata, tak abychom poskytli dobrý průřez více obory. Mohli jste potkat jak přednášky o zajímavých technikáliích (fungování sítí, …), tak i o algoritmech a datových strukturách, kombinatorice nebo o použití zajímavých technologií.

Během 20 minut přednášky nemáme samozřejmě není čas ukázat celé téma do hloubky tak, jak to třeba děláme na soustředěních. Proto berte přednášky spíše jako možnost ukázat vám různé zajímavé aspekty informatiky, o kterých jste třeba doteď nemuseli vědět, a nadchnout vás pro ně.

Přednášky

V chronologickém pořadí (občas jsme se odkazovali na znalosti z minulých přednášek).

#1 – 21. 4. 2020

  • První konání, celkem 81 připojených lidí
  • 3 přednášky po 20 minutách:
    • Martin "Medvěd" Mareš – Triky s binárním vyhledáváním [03:46]
      Co to je binární vyhledávání a na co vše se dá použít.
    • Jirka Setnička – Základy sítí, IP a TCP [30:14]
      Jak se spojím přes internet s druhým koncem světa pomocí protokolů IP a TCP.
    • Standa Lukeš – Automatizace webového prohlížeče Seleniem [58:08]
      Webový prohlížeč se dá ovládat i z běžícího programu. Na co se to hodí a jak to udělat?
  • Záznam streamu na YouTube: KSPí Krátké Streamované Přednášky #1 – 21. 4. 2020

#2 – 29. 4. 2020

  • 42 připojených lidí na streamu
  • 3 přednášky po 20-30 minutách
    • Vašek Šraier – Analýza síťového provozu Wiresharkem [02:51]
      Ukážeme si, jak se podívat na data, která tečou po síti. Za asistence programu Wireshark si ukážeme, jak na nejnižší úrovni probíhá komunikace. Zjistíme, co všechno typicky proběhne před prvním připojením do internetu.
    • Martin Mareš – Zlomkové kaskádování [27:37]
      Jednou z méně známých, ale krásných technik návrhu algoritmů je zlomkové kaskádování. Pomocí něj můžeme prvek nalezený v jedné datové struktuře rychle najít v mnoha jiných. Pomohou nám duchové prvků :)
    • Filip Štědronský – Trasování kontaktů pomocí Bluetooth [58:12]
      Trasování kontaktů je jedním z účinných nástrojů v boji s pandemií COVID-19. Podíváme se, jak fungují různé protokoly pro trasování pomocí Bluetooth, které nabízí zajímavý kompromis mezi přesností a ochranou soukromí.
  • Záznam streamu na YouTube: KSPí Krátké Streamované Přednášky #2 – 29. 4. 2020

#3 – 6. 5. 2020

  • 3 přednášky po 20-30 minutách:
    • Jenda Hadrava – Základy DNS [02:50]
      Volně navážeme na předchozí přednášky se síťovou tematikou a podíváme se na to, jak funguje překlad adres mezi doménovými jmény a IP adresami. Zjistíme, jak decentralizace pomáhá se spolehlivostí celého systému a jak se u toho řeší konzistence dat.
    • Martin Mareš – Proč násobit matice [35:10]
      Ukážeme si, jak funguje násobení matic. Pak ho použijeme v algoritmech pro několik úloh, které vůbec nevypadají, že by s maticemi mohly jakkoliv souviset.
    • Pali Rohár – Přenos audia přes Bluetooth [1:03:06]
      Na tejto prednáške si ukážeme Bluetooth profily používané na prenos audia, konkrétne: HSP, HFP a A2DP. Ktorý profil podporuje mikrofón a ktorý je zas vhodný na počúvanie hudby?
      (ve slovenštině)
  • Záznam streamu na YouTube: KSPí Krátké Streamované Přednášky #3 – 6. 5. 2020

#4 – 13. 5. 2020

  • 3 přednášky po 20-30 minutách:
    • Jirka Setnička – Použití cache v CPU [03:10]
      Asi tušíte, že váš procesor má několik úrovní cache, aby fungoval rychleji. Jak se ale CPU rozhoduje co v cache bude a jak může drobná změna ve vašem programu znamenat třeba stonásobný rozdíl v čase běhu programu? Ukážeme si fungování této cache a několik jednoduchých triků, které můžete ve vašich programech použít.
    • Standa Lukeš – HTTP [32:00]
      Podíváme se na zub protokolu, po kterém se přenáší webové stránky. Na první pohled vypadá jako jednoduchý protokol na stahování souborů, ale ukážeme si i jak může běžet několik webů na jedné IP adrese, jak funguje na webu cacheování, nebo jak webové stránky ví, kterým jazykem na nás mluvit.
    • Martin Mareš – Přihrádkové třídění [1:00:07]
      Každý informatik ví, že N prvků se nedá setřídit rychleji než v čase N*log N. Tedy až na případy, kdy tomu tak není... Ukážeme několik třidicích algoritmů založených na přihrádkách, které v mnoha situacích dovedou třídit v linearním čase.
  • Záznam streamu na YouTube: KSPí Krátké Streamované Přednášky #4 – 13. 5. 2020

#5 – 20. 5. 2020

  • 2 přednášky po přibližně 45 minutách:
    • Jirka Setnička – Dynamické programování [00:52]
      Přednáška určená spíše pro začátečníky. Dynamické programování je technika používaná když lze řešení nějakého většího problému složit z více jednodušších variant téhož a dostat se tak třeba z exponencionálního času na lineární. Ukážeme si tuto obecnou techniku na několika typických příkladech, které můžete potkat v KSPčku nebo v olympiádě.
    • Martin Mareš – Bezpečnostní díry v procesorech [49:12]
      Na bezpečnostní chyby v programech jsme už zvyklí, ale čekali byste, že se mohou skrývat i v hardwaru? Dnešní procesory už zdaleka nejsou jednoduchá zařízení z časů 8-bitových počítačů. Najde se v nich spousta důmyslných triků, které se snaží zrychlit vykonávání programů. Jenže jak už to bývá, složité věci se často chovají způsobem, který jejich autoři tak úplně nezamýšleli...
  • Záznam streamu na YouTube: KSPí Krátké Streamované Přednášky #5 – 20. 5. 2020

#6 – 3. 6. 2020

  • 3 přednášky po přibližně 20 - 30 minutách:
    • David Klement – Řešení úloh z pohledu matematika [01:35]
      Jako informatici se na všechny typy problémů snažíme nasadit arsenál v podobě výpočetní síly, datových struktur a algoritmů. Pokud si ale pomůžeme troškou matematiky, celý proces můžeme značně zrychlit a zjednodušit. Podíváme se na příklady takovýchto vylepšení, a to nejen u úloh stylu KSP, ale také u problémů, na které byste mohli sami při programování narazit.
    • Jirka Setnička – Anycast a jak ho využít pro postavení CDNky [32:30]
      Jedna IP adresa může s použitím malého triku vést v internetu i na více míst po světě, říkáme tomu anycast. I díky němu můžete pro lidi z celého světa servírovat soubory z datacenter, která jsou poblíž. Ukážeme si v základu, jak funguje směrování v internetu, jak lze využít anycast pro UDP a proč už není tak dobrý pro TCP a nakonec také to, jak můžeme zařídit dobré směrování i pro TCP provoz a postavit si tak (s dostatkem peněz) CDNku (content-delivery-network).
    • Martin Mareš – Těžkosti s těžkostí [1:09:58]
      Představte si, že jste právě vymysleli úžasný algoritmus, který řeší nějaký slavný problém v čase Θ(n log n). K dosažení blaženosti vám chybí jediné: dokázat, že rychlejší algoritmus už nemůže existovat. Jak ale něco takového dokazovat? Tedy přesvědčit se, že nějaký problém je tak těžký, že rychleji vyřešit nejde? To je také docela těžké :) Ale uvidíme několik případů, v nichž to jde docela snadno.
  • Záznam streamu na YouTube: KSPí Krátké Streamované Přednášky #6 – 4. 6. 2020

#7 – 10. 6. 2020

  • 3 přednášky po přibližně 20 - 30 minutách:
    • Jirka Setnička – DDoS útoky a způsoby obrany [01:52]
      Útoky zahlcením (Denial of Service) jsou dnes stále častější a dokonce se dají pořídit již za pár dolarů. Chceme vám ukázat, co přesně mohou jednotlivé typy DDoS útoků oběti způsobit, jak je může útočník provozovat a jak se proti nim dá bránit. Od útoků botnetů přes amplifikační útoky, až po app-level DDoSy.
    • Martin Mareš – Datum a čas [32:41] + bonus [1:32:53]
      Počítání s datem a časem vypadá jednoduše, ale je plné záludností. Proč mohou hodiny občas ukazovat 23:59:60. Problémy roků 2000, 2038, 2070, 2106 a dalších. Nahlédnutí do historie našeho kalendáře.
    • Standa Lukeš – Kontejnery [1:03:13]
      Ukážeme si, jak si zpříjemnit správu softwarových služeb tím, že každé dáme vlastní kontejner. Místo komplikované instalace několika závislostí stáhneme stáhneme obraz celého systému. Podíváme se na kontejnerové technologie podman a docker, jak pracovat s připravenými kontejnery, jak si vyrobit vlastní a jak v přibližně v kontejnerech funguje síť.
  • Záznam streamu na YouTube: KSPí Krátké Streamované Přednášky #7 – 10. 6. 2020

#8 – 17. 6. 2020

  • 3 přednášky po přibližně 20 - 30 minutách:
    • Jenda Hadrava – Jak fungují e-maily: SMTP [01:27]
      E-maily jsou tu s námi již desítky let. Stále je můžeme posílat pomocí protokolu SMTP z roku 1982. Ukážeme si základní návrh celého systému, ale i pár novějších rozšíření. Povíme si také, proč není snadné se bránit proti podvržení adresy odesilatele. A nastíníme i pár problémů spojených s různými způsoby boje proti spamu.
    • Vašek Končický – Slovníková komprese dat [39:27]
      Světem se pohybuje obrovské množství dat. Často však mají tato data pravidelnou strukturu, které můžeme využít k jejich kompresi, čímž ušetříme spoustu prostoru nebo drahocenných mobilních dat. Slovníková komprese využívá toho, že se často různé kusy textu opakují. V angličtině to jsou slova, v češtině části slov, nebo v HTML dokumentu třeba celé tagy. Ukážeme si, jak tato metoda komprese funguje a kde se s ní v praxi setkáme.
    • Jirka Setnička – TLS a zabezpečení HTTP [1:12:00]
      Víte proti čemu vás chrání poslední písmenko u https? A přemýšleli jste někdy nad tím, jak můžete věřit stránce své banky, i když jste si do počítače nikdy neinstalovali její certifikát? Na to se pokusíme odpovědět – ukážeme si fungování TLS, které přináší šifrování a bezpečnost do starého protokolu HTTP, lehce nakousneme serverové certifikáty a certifikační autority a ukážeme si princip, díky kterému ani únik privátních klíčů v budoucnu neohrozí dříve zašifrovaná data.
  • Záznam streamu na YouTube: KSPí Krátké Streamované Přednášky #8 – 17. 6. 2020

#9 – 24. 6. 2020

  • 3 přednášky po přibližně 20 - 30 minutách:
    • Standa Lukeš – Zdroje náhody v programech [01:51]
      Často se nám hodí v programech pracovat s náhodou, buď na to abychom si tím zrychlili algoritmus a nebo prostě proto aby měl program zajímavé chování. Jak si ale náhodu pořídit na "deterministických" počítačích? Co nám nedeterminismus naopak způsobí za problémy a jak se jich zbavit?
    • Martin Mareš – Jak funguje Unicode [34:37]
      Jak funguje Unicode – systém kódování znaků, který si dal za úkol zapsat všechny jazyky světa. Jak fungují transformační formáty UTF-8 a UTF-16, jak se zapíše x s háčkem a jak sněhulák.
    • Filip Štědronský – Numpy: Počítáme v Pythonu rychlostí Céčka [1:04:08]
      Ukážeme si knihovnu Numpy (Numeric Python), která umožňuje výrazně zrychlit programy v Pythonu, které pracují s velkými poli čísel. Tato knihovna původně vznikla pro matematické výpočty, ale ukážeme, že se hodí i pro rychlou implementaci algoritmů -- například založených na dynamickém programování.
  • Záznam streamu na YouTube: KSPí Krátké Streamované Přednášky #9 – 24. 6. 2020