59
Os 4 trabalhos de Resolvendo desaos de diferentes propósitos com uma linguagem multipropósito Python Andrews Medina andrewsmedina.com @andrewsmedina [email protected] Francisco Souza franciscosouza.com @franciscosouza [email protected] Monday, May 2, 2011

Os 4 trabalhos de Python

Embed Size (px)

DESCRIPTION

Palestra apresentada por Andrews Medina e Francisco Souza na primeira edição do Dev in Cachu, no dia 30 de abril de 2011.Mais informações sobre o evento: http://www.devincachu.com.br

Citation preview

Page 1: Os 4 trabalhos de Python

Os 4 trabalhos de

Resolvendo desafios de diferentespropósitos com uma linguagem multipropósito

Python

Andrews Medinaandrewsmedina.com @[email protected]

Francisco Souzafranciscosouza.com

@[email protected]

Monday, May 2, 2011

Page 2: Os 4 trabalhos de Python

Andrews Medina

Francisco Souza

#cobrateam member

moderador @ python-brasil/django-brasil

desenvolvedor @ globo.com

#cobrateam member

moderador @ django-brasil

desenvolvedor @ globo.com

Monday, May 2, 2011

Page 3: Os 4 trabalhos de Python

Trabalhos de Python?

Monday, May 2, 2011

Page 4: Os 4 trabalhos de Python

Monday, May 2, 2011

Page 5: Os 4 trabalhos de Python

Por que só 4?!

Monday, May 2, 2011

Page 6: Os 4 trabalhos de Python

Por que só 4?!São 12, mas...

Monday, May 2, 2011

Page 7: Os 4 trabalhos de Python

Por que só 4?!São 12, mas...

Monday, May 2, 2011

Page 8: Os 4 trabalhos de Python

1. Criar um framework para testes de aceitação em aplicações web

2. Criar uma aplicação para Android

3. Criar uma aplicação web para mapear access points

4. Criar um jogo de batalha naval

Monday, May 2, 2011

Page 9: Os 4 trabalhos de Python

1. Criar um framework para testes de aceitação em aplicações web

splinter

>>> from splinter.browser import Browser>>> browser = Browser('webdriver.chrome')>>> browser.visit('http://www.devincachu.com.br') >>> browser.find_link_by_text('Programação').first.click()>>> palestrantes = browser.find_by_css_selector('p.palestrante')>>> assert len(palestrantes) == 12>>> browser.quit()

Monday, May 2, 2011

Page 10: Os 4 trabalhos de Python

Teste de que?!

Monday, May 2, 2011

Page 11: Os 4 trabalhos de Python

Interfaces web

Monday, May 2, 2011

Page 12: Os 4 trabalhos de Python

http://www.flickr.com/photos/zakh/337938459/

Ferramentas

Monday, May 2, 2011

Page 13: Os 4 trabalhos de Python

‣ Alfajor‣ Mechanize‣ Selenium‣ twill‣ Windmill‣ zope.testbrowser‣ ...

Monday, May 2, 2011

Page 14: Os 4 trabalhos de Python

APIs

browser.open('http://www.google.com.br')assert 'Hello world' in browser.response

browser = mechanize.Browser()response = browser.open('http://www.google.com.br')assert 'Hello world' in response.get_data()

browser = Firefox()browser.get("http://www.google.com.br")assert 'Hello world' in browser.get_page_source()

browser = Browser()browser.open("http://www.google.com.br")assert 'Hello world' in browser.contents

Monday, May 2, 2011

Page 15: Os 4 trabalhos de Python

Unificando as APIs

browser = Browser('webdriver.firefox')browser.visit("http://www.google.com.br")assert 'Hello world' in browser.html

Monday, May 2, 2011

Page 16: Os 4 trabalhos de Python

Unificando as APIs

browser = Browser('zope.testbrowser')browser.visit("http://www.google.com.br")assert 'Hello world' in browser.html

Monday, May 2, 2011

Page 17: Os 4 trabalhos de Python

Unificando as APIs

browser = Browser('alfajor')browser.visit("http://www.google.com.br")assert 'Hello world' in browser.html

Monday, May 2, 2011

Page 18: Os 4 trabalhos de Python

API beta

Monday, May 2, 2011

Page 19: Os 4 trabalhos de Python

Encapsulando mágicas

Monday, May 2, 2011

Page 20: Os 4 trabalhos de Python

browser = Browser('webdriver.firefox')browser.visit("http://devincachu.com.br")element = browser.find_element_by_css('ul.menu li').firstelement.hover()

Monday, May 2, 2011

Page 21: Os 4 trabalhos de Python

browser = Browser('webdriver.firefox')browser.visit("http://devincachu.com.br")element = browser.find_element_by_css('ul.menu li').firstelement.hover()

Monday, May 2, 2011

Page 22: Os 4 trabalhos de Python

from selenium.webdriver.remote.command import Commandweb_element.execute(Command.HOVER_OVER_ELEMENT)

Monday, May 2, 2011

Page 23: Os 4 trabalhos de Python

http://127.0.0.1:$port/session/$sessionId/element/$id/hover

POST

Monday, May 2, 2011

Page 24: Os 4 trabalhos de Python

ou ainda...

Monday, May 2, 2011

Page 25: Os 4 trabalhos de Python

css_selector = 'ul.menu li:first'with open('js/jquery.js') as jquery_file: jquery = jquery_file.read() webdriver.execute_script(jquery) webdriver.execute_script('$("%s").hover()' % css_selector)

Monday, May 2, 2011

Page 26: Os 4 trabalhos de Python

element.hover()

Monday, May 2, 2011

Page 27: Os 4 trabalhos de Python

splinter.cobrateam.info

github.com/cobrateam/splinter

“Testando interfaces web com Python” (FISL)

Mais detalhes...

Monday, May 2, 2011

Page 28: Os 4 trabalhos de Python

2. Criar uma aplicação para Android

Monday, May 2, 2011

Page 29: Os 4 trabalhos de Python

Por que?

Monday, May 2, 2011

Page 30: Os 4 trabalhos de Python

Monday, May 2, 2011

Page 31: Os 4 trabalhos de Python

Python em dispositivos móveis

Monday, May 2, 2011

Page 32: Os 4 trabalhos de Python

Monday, May 2, 2011

Page 33: Os 4 trabalhos de Python

Monday, May 2, 2011

Page 34: Os 4 trabalhos de Python

Monday, May 2, 2011

Page 35: Os 4 trabalhos de Python

Quero programar em Python no iOS e no

Android, pode?

Monday, May 2, 2011

Page 36: Os 4 trabalhos de Python

Appcelerator TitaniumMonday, May 2, 2011

Page 37: Os 4 trabalhos de Python

SL4AScript Layer for Android

Monday, May 2, 2011

Page 38: Os 4 trabalhos de Python

Interface em HTML...

<h1>Sorteio</h1><p> <label for="limit">Número de inscritos</label> <input type="text" name="inscritos" value="200" id="limit"/></p><p> <input type="button" value="Sortear" onclick="raffle();" /></p>

Monday, May 2, 2011

Page 39: Os 4 trabalhos de Python

Interface em HTML...

<h1>Sorteio</h1><p> <label for="limit">Número de inscritos</label> <input type="text" name="inscritos" value="200" id="limit"/></p><p> <input type="button" value="Sortear" onclick="raffle();" /></p>

Monday, May 2, 2011

Page 40: Os 4 trabalhos de Python

droid. eventWaitFor('raffle')

Monday, May 2, 2011

Page 41: Os 4 trabalhos de Python

github.com/cobrateam/android-sorteio

code.google.com/p/android-scripting

Mais detalhes...

Monday, May 2, 2011

Page 42: Os 4 trabalhos de Python

3. Criar uma aplicação web para mapear access points

Monday, May 2, 2011

Page 43: Os 4 trabalhos de Python

‣ globo.com‣ guardian.uk‣ brasil.gov.br‣ yahoo!‣ apontador

‣ facebook‣ new york times‣ google‣ disqus

Monday, May 2, 2011

Page 44: Os 4 trabalhos de Python

‣ Django‣ web2py‣ Pylons‣ Grok‣ TurboGears

‣ Zope‣ Tornado‣ Flask‣ Bottle‣ CherryPy

‣ circuits.web‣ TwistedWeb‣ tipfy‣ pyramid‣ Bobo

bit.ly/python-frameworks

Monday, May 2, 2011

Page 45: Os 4 trabalhos de Python

Monday, May 2, 2011

Page 46: Os 4 trabalhos de Python

O framework web para perfeccionistas com prazos

“”Monday, May 2, 2011

Page 47: Os 4 trabalhos de Python

uma aplicação completa

48 horas

Monday, May 2, 2011

Page 48: Os 4 trabalhos de Python

wifimap, uma forma fácil de descobrir se tem um lugar com wifi

por perto...

Monday, May 2, 2011

Page 49: Os 4 trabalhos de Python

show me the map...

Monday, May 2, 2011

Page 50: Os 4 trabalhos de Python

Monday, May 2, 2011

Page 51: Os 4 trabalhos de Python

4. Criar um jogo de batalha naval

Monday, May 2, 2011

Page 52: Os 4 trabalhos de Python

Monday, May 2, 2011

Page 53: Os 4 trabalhos de Python

Monday, May 2, 2011

Page 54: Os 4 trabalhos de Python

Monday, May 2, 2011

Page 55: Os 4 trabalhos de Python

um simples simulador de batalha naval feito em um fim de semana...

Monday, May 2, 2011

Page 56: Os 4 trabalhos de Python

show me the game...

Monday, May 2, 2011

Page 57: Os 4 trabalhos de Python

a aventura continua...

Monday, May 2, 2011

Page 59: Os 4 trabalhos de Python

Obrigado!

Andrews Medinaandrewsmedina.com @[email protected]

Francisco Souzafranciscosouza.com

@[email protected]

cobrateam.infogithub.com/cobrateam

Monday, May 2, 2011