Kurzy a certifikace Dev & Test

Python

Python - pokročilé vlastnosti

23.500 CZK
Days2
10. 12.11. 12. 2018
Praha
CZ

Kurz Python - pokročilé vlastnosti je určen pro programátory, kteří mají základní znalosti jazyka Python 3, chtějí si prohloubit své vědomosti a zároveň se zdokonalit v návrhu a řešení aplikací a algoritmů v tomto jazyce. Hlavní důraz bude kladen na asynchronní programování, jehož použití se neustále zvyšuje. Ale zároveň si ukážeme, kde je jeho použití zbytečné.

Během kurzu budeme řešit ukázkový projekt, ve kterém budeme využívat jednotlivých vlastností jazyka a ukážeme si jak jednoduše fungují některé aspekty, které mohou připomínat spíše magii. Veškeré programování bude probíhat na OS Linux v Python ≥ 3.6 v implementaci CPython.

Po skončení kurzu budou účastníci rozumět pokročilým konceptům jazyka Python, jak je rozumně využívat a jak škálovat některé algoritmy pomocí asynchronního programování.

Cílová skupina

  • Programátoři se základní znalostí jazyka Python 3
  • IT specialisté, kteří potřebují pokročilou automatizaci
  • Všichni zvídaví lidé, kteří chtějí vědět, jak některé věci fungují pod pokličkou

Cíle kurzu

Účastníci se mimo jiné naučí:

  • Napsat celou aplikaci, která bude schopna přes síť publikovat data pro své klienty
  • Psaní testů pro aplikaci a asynchronní funkce
  • Znalost pokročilých vlastností jazyka Python (dekorátory, context-managery, generátory, ...)
  • A jak tyto věci integrují s asynchronním programováním 

Garant kurzu

LIBOR JONÁT

Libor pracuje třetím rokem ve společnosti Quantlane, kde se stará o vývoj, nasazení a provoz aplikací pro obchodování na akciových burzách. Jeho primární doménou je Python, ve kterém provozuje většinu software ve firmě Quantlane.

Osnova

Sjednocení základních znalostí

  • Použití Pipfile a pipenv namísto requirements.txt
  • Návrh základní šablony pro spustitelnou aplikaci
  • Příprava testů
  • Typové anotace a Python

Návrh aplikace, která bude tvořena během kurzu

  • Příprava funkcí pro načítání obsahu - generátory
  • Testování generátorů
  • Pozor na assert mimo testy
  • Jednoduchý data logging do SQLite (Použití a napsání vlastního context-manageru)

Jednoduchý HTTP server v Python

  • SimpleHTTPServer
  • Flask (velice jednoduchá ukázka)
  • Použití manhole pro debugování běžící aplikace 

GIL uvnitř CPython

  • Co? Proč?
  • Použití vláken na “škálování” a proč nefungují
  • Jak tedy škálovat?
  • Multiprocessing a concurrent modul
  • Pozor na Process a Thread pooly (velikost)

Použití asyncio

  • Rozšířená syntaxe
  • Základní pojmy

Přepsání webového serveru do aiohttp

  • Vysvětlení pojmů a chování v asyncio
  • Dekorátory, context-managery
  • Testy a asyncio
  • Manhole v asyncio
  • Transport-less protocols

Pokročilý error handling v asyncio

Debugování asyncio aplikace

  • Použití socketů a telnetu jako clienta
  • Slow callbacks v asyncio
  • context-variables v Python 3.7

Produkční nasazení naší asyncio aplikace

  • Gunicorn
  • Docker

Doplňující témata

Pokud v rámci kurzu zbyde čas, můžeme se podívat na některé edge-case uvnitř Python a CPython implementace a jejich řešení.

Asyncio a vlákna

  • run_coroutine_threadsafe

Co dělat pokud CPython SEGFAULTuje

  • Kdy může CPython SEGFAULTnout?
  • Faulthandler
  • Core dump CPythonu a debugování
  • Python stack trace uvnitř gdb

Profilování aplikace

  • Statistické profilování vs line profiler

Monitorování aplikace

  • Statsd, Prometheus

 

Předpoklady účastníka

  • Základní kurz Python
  • Základní povědomí o síťování
  • Základní znalost OS Linux
  • Použití terminálu pro spouštění příkazů

 Požadavek na BYOD

  • Počítač s jakoukoliv distribucí OS Linux
  • Předinstalovaný Python ≥ 3.6
  • Předinstalovaný nástroj virtualenv
  • Webový prohlížeč
  • Telnet client

Poptejte kurz u nás

Kurzy
Submit
* Povinné pole