Programação em Python
para analistas de redes

Sobre o Curso


Phyton é uma poderosa linguagem de programação, de fácil aprendizado e com enorme interação com universo das redes de dados. Toda uma infraestrutura distribuída em nuvem, que disponibiliza serviços digitais a milhares de usuários pode ter sua operação de forma orquestrada e gerenciada pelo uso deste recurso.

O conhecimento desta linguagem de programação pode colocar o profissional de redes atual em níveis elevados, projetando carreiras promissoras e trazendo a evolução que antes era distante do profissional técnico, que apenas operava e configurava os equipamentos de uma rede. Esta linguagem também aproxima profissionais de redes e desenvolvimento; duas funções que sempre foram bem distantes no cenário dos serviços digitais. E esta interação amplia os horizontes de uma empresa, trazendo performance e melhoria contínua na qualidade dos serviços de conectividade oferecidos.
 
O material que adotamos para o curso, é o livro Programação de redes com Python, que aborda todos os tópicos clássicos de redes, inclusive protocolos de rede, dados e erros de rede, email, arquitetura de servidores, aplicativos HTTP e web, mais as atualizações de Python 3.

Além deste o participante também receberá alguns complementos relacionados aos primeiros contatos com a ferramenta e sua instalação no computador.

Alguns dos tópicos focados neste treinamento são os seguintes:

  • Extensa abordagem do suporte atualizado ao SSL em Python 3.
  • Como criar seu próprio loop de I/O assíncrono.
  • Visão geral do framework “asyncio” que vem com Python 3.4.
  • Como o framework web Flask conecta URLs ao código Python.
  • Como os scripts e a falsificação de solicitações entre sites podem ser usados no ataque a seu site e como se proteger deles.
  • Como um framework web full-stack como o Django pode automatizar o trajeto de ida e volta entre seu banco de dados e a tela.
  • Abordagem atualizada das camadas de protocolos de rede e das codificações de dados.

 

O livro Programação de Redes com Python, Guia abrangente de programação e gerenciamento de redes com Python 3 de Brandon Rhodes e John Goerzen será entregue à todos os participantes do treinamento.

Conteúdo Programático

Parte 1 – Introdução à programação em Python

Iniciando com Python
A linguagem Python
De Python 2 para Python 3
Diversos interpretadores e mesma linguagem
Preparando o ambiente
Primeiro passo: abra o interpretador
Primeiras explorações
Próximos passos – Compilação, etc.

Aprendendo Python na prática: números e strings
Números
Como manipular texto em Python
Criando e manipulando texto: strings
Como Python representa strings internamente?

Manipulações básicas
Uma calculadora: o exemplo revisado mais comum
Pegando dados no terminal
Comparações: maior, menor, igual e outras
Condicionais: if, elif & else
Operadores lógicos
Loops com while
Primeira estrutura de dados: lista
Loop pythônico com for e listas
Percorrendo intervalos de zero até n com range()
Enumerando coleções com for e função enumerate
Declarando funções: comando def
Valores padronizados de argumentos
Parâmetros nomeados
Recebendo um número arbitrário de argumentos: packing & unpacking
Usando código já pronto: importando módulos

Primeiro programa: download de dados
Criando uma função para download na web
Primeiro programa completo
Definindo funções main
Realizando o download
Extraindo arquivos de dados e metadados

Validaçãode dados
Montando um modelo conceitual usando estruturas de dados
Dicionários: fundação da linguagem
Montando o dicionário de metadados
Adicionando e removendo elementos em uma lista
Iterando dicionários: vendo valores e chaves
Tuplas: sequências imutáveis
Explorando os dados que coletamos
Importância da estrutura de Dados

Classes e objetos Pythônicos
Expressando o domínio em classes
Definindo classes: primeiro passo
Criando objetos: métodos construtores
Classes documentadas: docstrings
Métodos: adicionando comportamentos ao objeto
Herança simples em Python
Atributos de classes: compartilhados entre todas instâncias
Métodos estáticos e de classe: usando mais as classes
Encapsulamento Pythônico com a função property
Herança múltipla: herdando de várias classes
DuckTyping?

Tratando erros e exceções
Tratando várias possíveis exceções em um mesmo bloco
Exceções e Python 3.3+
Executando código se nenhuma exceção for levantada
Comando raise: levantando exceções

 

Parte 2 – Python em redes

Introdução do Phyton em redes
Usando o Python 3
Melhorias desta edição
Playground da rede

Introdução à rede cliente-servidor
Os alicerces: pilhas e bibliotecas
Camadas de aplicativos
Conversando com um protocolo
Comunicação de rede bruta
Um suportando o outro até o fim
Codificação e decodificação
Internet Protocol
Endereços IP
Roteamento
Fragmentação de pacotes
Aprendendo mais sobre o IP

UDP
Números de porta
Soquetes
Vinculando-se a interfaces
Fragmentação no UDP
Opções dos soquetes
Broadcast

TCP
Como o TCP funciona
Quando usar o TCP
O que são os soquetes TCP
Cliente e servidor TCP simples
Vinculando-se a interfaces
Deadlock
Conexões fechadas, conexões semiabertas
Usando fluxos TCP como arquivos

Nomes de soquete e o DNS
Nomes de host e soquetes
Resolução de endereços moderna
Protocolo DNS

Dados e erros de rede
Bytes e strings
Framing e aspas
Pickles e formatos autodelimitadores
XML e JSON
Compactação
Exceções de rede

TLS/SSL
O que o TLS não protege
O que pode dar errado?
Gerando certificados
Deixando o TLS para terceiros
Contextos padrão de Python 3.4
Codificações escolhidas a dedo e segurança futura perfeita
Suporte dos protocolos ao TLS
Conhecendo detalhes

Arquitetura do servidor
Algumas palavras sobre implantação
Protocolo simples
Servidor de thread única
Servidores com várias threads e processos
Servidores assíncronos
Execução do inetd

Caches e filas de mensagens
Usando o Memcached
Hashing e Sharding
Filas de mensagens

Clientes HTTP
Bibliotecas clientes Python
Portas, criptografia e framing
Métodos
Caminhos e hosts
Códigos de status
Cache e validação
Codificação de conteúdo
Negociação de conteúdo
Tipo de conteúdo
Autenticação HTTP
Cookies
Conexões, sua reutilização e o httplib

Servidores HTTP
WSGI
Frameworks de servidores assíncronos
Proxy de encaminhamento e proxy reverso
Quatro arquiteturas
Plataformas como serviço
Padrões de GET e POST e a questão do REST
WSGI sem um framework

World Wide Web
Hipermídia e URLs
Hypertext Markup Language
Lendo e gravando em um banco de dados
Aplicativo web inadequado (em Flask
Dança dos formulários e métodos HTTP
Aplicativo de pagamentos no Django
Escolhendo um framework web
WebSockets
Web Scraping

Construindo e analisando emails
Formato dos emails
Construindo um email
Adicionando HTML e multimídia
Adicionando conteúdo
Analisando emails
Percorrendo as partes MIME
Codificações de cabeçalhos
Analisando datas

SMTP
Clientes de email versus serviços de webmail
Como o SMTP é usado
Introduzindo a biblioteca SMTP
Manipulação de erros e depuração da comunicação
Obtendo informações a partir de EHLO
Usando o Secure Sockets Layer e o Transport Layer Security
SMTP autenticado
Dicas sobre o SMTP

POP
Compatibilidade do servidor POP
Conexão e autenticação
Obtendo informações da caixa de correio
Baixando e excluindo mensagens

IMAP
Entendendo o IMAP em Python

Telnet e SSH
Automação da linha de comando
Telnet
SSH: o shell seguro

FTP
O que usar em vez do FTP

RPC
Recursos do RPC

Pré-Requisitos

Pré-Requisitos

  • Ser usuário comum de serviços digitais, tais como Internet, Email, redes sociais.
  • Conhecimentos básicos de redes TCP/IP.
 

Público Alvo

Público Alvo

  • Profissionais inseridos nos contextos de redes, seja em estudos ou atuando profissionalmente.
  • Especialistas em conectividade que desejam ampliar horizontes de conhecimentos e avançar em suas carreiras.
  • Estudantes de engenharia que tenham como objetivo compreender as novas tecnologias responsáveis pela orquestração de seus ambientes automatizados.
  • Programadores, iniciantes ou não, cuja necessidade ou desejo seja trilhar um caminho no mundo das redes de dados e conectividade.
 

Carga Horária

Carga Horária

  • 40 horas

Turmas

Turmas

  • Noturno: 10 dias (seg a sex) das 18hs às 23hs.
  • Turmas: Presencial e Online Ao Vivo
 
 

Em Breve! Está interessado?

Avisaremos quando uma nova turma estiver disponível!

© 4Bios

by nerit