Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python: a arma secreta de todo mundo

Python: a arma secreta de todo mundo

Apresentação feita especialmente para RoadSec São Paulo 2015

Luciano Ramalho

November 12, 2015
Tweet

More Decks by Luciano Ramalho

Other Decks in Technology

Transcript

  1. Quem é @ramalhoorg? • 1978: programador de calculadora • 1994:

    CTO do BOL na Abril S/A • 2010: Garoa Hacker Clube • 2015: Technology Principal na ThoughtWorks em São Paulo 12/11/15 4
  2. Da ideia ao contrato • 2013: – Ideia: escrever um

    livro em vez de uma dissertação – Julho: Palestra na OSCON (O'Reilly Open Source Convention, PDX) – Setembro: Contrato assinado. Estimativa: 300 páginas 12/11/15 6
  3. O meio da maratona • 2014: – Julho: escrevendo em

    tempo integral++ – Outubro: Early Release (147 p.) revisores técnicos: 1º feedback 12/11/15 8
  4. Sprint final • 2015: – Março: “manuscrito” terminado – Julho:

    pós-produção terminada – Agosto: lançamento da 1ª edição – Setembro: +vendido no site oreilly.com – Novembro: edição brasileira (Novatec) 12/11/15 10
  5. Fluent Python: feito com Python • Texto editado em Asciidoc,

    sistema de documentação escrito em Python (+ rico que Markdown) • Exemplos testados com doctest, parte da biblioteca padrão de Python 12/11/15 15
  6. Python no Cinema “Havia uma guerra entre linguagens de scripting

    para CGI. A guerra acabou e Python ganhou.” André de Souza, Átomo VFX 12/11/15 20
  7. Caso concreto: Quanta Post • Replicar 100 figurantes para preencher

    a platéia de um teatro com 1500 lugares 12/11/15 24
  8. Caso concreto: Quanta Post • Sem Python: 1 semana •

    Com Python: 1 tarde • ½ página de código 12/11/15 28
  9. Uma combinação rara • Confortável para pequenos scripts – simples,

    enxuta, ágil, poderosa como Perl • Viável para grandes projetos – classes, packages, namespaces como Java 12/11/15 38
  10. Exemplo: spreadsheet 12/11/15 41 >>> from math import pi, sin

    >>> from planilha import Planilha >>> p = Planilha(sin=sin, pi=pi) >>> p['a1'] = '.5' >>> p['a2'] = 'pi' >>> p['b1'] = 'a1*a2' >>> p['b2'] = 'sin(b1)' >>> p['b2'] 1.0
  11. lis.py >>> from lis import repl >>> repl() lis.py> (*

    7 3) 21 lis.py> (define resposta (* 6 7)) lis.py> resposta 42 lis.py> (define ! (lambda (n) (if (= n 0) 1 (* n (! (- n 1)))))) lis.py> (! 4) 24 lis.py> (! 5) 120 lis.py> (! 197) 1000784055840808212213038949713447365990477612414564315637204371915587 3432356267992999140703669669355669473784819547723849774666136777791800 6944650646265409257583733981874437495228286501182991424477395086576066 3534673533357987278378353286942804393055226030731188238628318646302096 5564236109229237840670256867960885535047680000000000000000000000000000 0000000000000000000
  12. Estudo de caso: Scapy • Ferramenta “estado da arte” em

    sua categoria • Aproveita recursos avançados de Python, como sobrecarga de operadores, para proporcionar facilidade e praticidade ao usuário 12/11/15 54
  13. Python em IoT • Pré-instalado em todas as placas que

    rodam GNU/Linux • Roda em alguns microcontroladores – Projeto MicroPython: https://micropython.org/ • Muitas bibliotecas auxiliares 12/11/15 56
  14. Pingo means “Pin, go!” • Biblioteca multi-plataforma para controle de

    pinos programáveis • Projeto do Garoa Hacker Clube • Software livre, código no GitHub – Docs: http://pingo.io – Repositório: https://github.com/pingo-io 12/11/15 58
  15. Demo: Pingo interativo 12/11/15 59 >>> from pingo import *

    >>> ard = detect.get_board() >>> ard <ArduinoFirmata '/dev/tty.usbmodemfa1341'> >>> ard.pins {'0': <DigitalPin @0>, '1': <DigitalPin @1>, '2': <DigitalPin @2>... >>> p13 = ard.pins[13] >>> p13.mode = OUT >>> from time import sleep >>> while True: ... p13.toggle() ... sleep(.1) ...
  16. • Consultoria global de TI – foco em agilidade: Martin

    Fowler, C/Scientist – uso crescente de Python em clientes • Colabora com software livre – OpenStack (RackSpace, NASA, +500...) – Pixelated: end-to-end encrypted e-mail (LEAP Platform) 12/11/15 61
  17. Invista em Python • Facilidade de uso == retorno rápido

    • Versatilidade == retorno duradouro • Estudar Python é um dos melhores investimentos que você pode fazer em sua carreira 12/11/15 65