Workshop de 2h no Campus Party 2013. Introdução à linguagem Python. Hackear o Facebook para baixar fotos de amigos. Requisitos: conta no Facebook, notebook com Python 3.x instalado e vontade de aprender coisas novas. Resumo nos vídeos abaixo:
http://www.youtube.com/watch?v=QH7b37URGSo
http://www.youtube.com/watch?v=or1gtKGhMLE
2. Agenda
•
•
•
•
Python 3 (nestes slides)
Facebook
Material para aprofundamento
Disclaimer: code for fun (no
password hacking)
• Obs: se preferir: slides para Python 2.7
• Obs: em junho de 2013 a API aberta do Twitter foi
aposentada, veja nos slides finais como autenticar e
acessar os dados
6. CV Resumido
•
•
•
•
•
•
•
•
•
Graduado IME USP
Mestrado ITA
Software Express
Credicard Mastercard
PriceWaterhouseCoopers
ITAU BankBoston
Fundador Hacker Clube SJC
FATEC SJC (amo dar aulas)
Nota dada para minhas aulas: 9,7
7. Adicione / Siga o Prof
•
•
•
•
•
Fernando Masanori (Massa)
facebook.com/fmasanori
twitter.com/fmasanori
about.me/fmasanori
Interesses: Algoritmos, Estrutura
de Dados, Python, NoSQL,
Business Intelligence, Google
Technology, Facebook, Twitter
8. Palestras em eventos de TI
Porto Alegre, Brasil - 04/07/2013 - FISL14 - Palestra Fernando Masanori -Python for Zombies - Foto: Guilherme Dias
9. Algumas palestras
•
•
•
•
•
•
•
•
•
•
•
•
PyCon Uruguay 2013 (em espanhol)
DevDay2013 Belo Horizonte - MG
Python para Zumbis – RuPy Conference 2013
Para gostar de Python – Python Nordeste 2013 e TDC
2013
Hoje sou um professor FELIZ – FISL 2013
Python for Zombies – FISL 2013
MongoDB e Python – Python Nordeste 2013
NoSQL e Python – RuPy Conference 2012
I Love JSON Module – Python Brasil 2012
Pentaho: suite para BI JUG Vale 2012
Cassandra NoSQL – JUG Vale 2012
Benchmark LucidDB x MySQL – NoSQL(br)/v2
13. We Love Python
• Permite focar no problema, sem
perder tempo na sintaxe
• Interativa
• Alta produtividade
• Baterias inclusas
• Comunidade livre, forte, diversificada,
alegre e acolhedora
• Orientada a objetos, funcional,
estruturada
• Uso geral vs nichos
• Simples de iniciar, sem esgotar
14. Eu domino uma linguagem corporativa e o
mercado é meu, quero vocês fora daqui.
O mercado é enorme, não tem sentido que
existam só linguagens corporativas
41. O que falam de Python
“Se o Voldemort quisesse ser realmente imortal, ele teria
programado uma horcrux recursiva em Python.” Harry Potter.
42. O que falam de Python
“A vida é melhor sem chaves“.
“A vida é curta! Você precisa de Python”.
“Python me ajuda a focar nos meus conceitos
em vez de ficar brigando com a linguagem”.
“Eu não preciso digitar muito. Mas o que eu digito é certo”.
Bruce Eckel, autor do best seller “Thinking in Java”.
43. O que falam de Python
”Entre todas as linguagens que eu aprendi, Python é a que menos interfere entre
mim e o problema. É a mais efetiva para traduzir pensamentos em ações“.
Eric Raymond, Autor “A catedral e o Bazar”.
Contribuidor do GNU Emac, Linux, Fetchmail.
Mantém o Jargonfile, mais conhecido como “Dicionário dos Hackers”
44. O que falam de Python
”Python tem sido uma parte importante do Google desde o início, e permanece
assim conforme o sistema cresce e evolui... estamos procurando por mais
pessoas com conhecimento nessa linguagem“.
Peter Norvig, diretor de qualidade de busca do Google Inc.
45. O que falam de Python
“[…] nossa filosofia aqui é “Python sempre que pudermos, C++ se
necessário”". Alex Martelli, Líder Técnico, Sistemas de Produção, Google.
46. O que falam de Python
“Python é rápido o suficiente para o nosso site e nos permite produzir
características de fácil manutenção em tempos recordes, com um mínimo de
desenvolvedores”. Cuong Do, Software Architect, YouTube.com
47. O que falam de Python
“Python é uma das cinco mais importantes linguagens que todo programador
deve conhecer” Bjarne Stroustrup, criador de C++
49. O que falam de Python
"Only ugly languages become popular. Python is the one exception"
Don Knuth, walking to dinner after Alan Turing's Centenary Celebration
(from @ivanov on Twitter)
50. O que falam de Python
"Python poised to become the de facto engine for modern science"
Joshua Bloom, Berkeley Astronomy Department,
at SciPy2012
51. Linguagem poderosa, mas
simples de aprender
Neil Ibata, 15 anos, foi aprender a programar em
Python com o pai e virou capa da revista Nature.
52. Python for Kids
Antonio: concluiu comigo o
Coursera “Interactive Python
with Games”
Naomi: gosta de Justin Bieber e
está estudando Python
62. Check List
•
•
•
•
•
•
Conta no Facebook
Internet
Python 3
IDLE ou semelhante
Vamos fazer um aquecimento
Tutorial 1h em Python for Zombies
(Video no YouTube)
• Curso completo free: Python para
Zumbis
63. Aquecimento: Install Python 3
• Windows
– download
– executar > next > next...
• Linux
– sudo apt-get install idle-python3.3
• Mac OS X
– sudo port install python32
64. Aquecimento: Using Python 3
• Windows
– Iniciar > Programas > Python3.3 >
IDLE (Python GUI)
• Linux (terminal)
– idle-python3.3 &
• Mac OS X (terminal)
– IDLE3.3 &
80. Dictionaries
• O dicionário em si consiste em relacionar uma
chave a um valor específico
• Diferentemente das listas, onde o índice é um
número, dicionários utilizam suas chaves
como índice
• Para adicionar novos elementos não preciso
de append, basta fazer a atribuição
– Se a chave já existe: o valor associado é alterado
– Se a chave não existe: a nova chave é adicionada
83. Dictionaries
• Faça um programa que leia o arquivo alice.txt
e conte o número de ocorrências de cada
palavra no texto. Obs.: para saber os
caracteres especiais use import string e
utilize string.punctuation
• http://www.gutenberg.org/cache/epub/11/pg
11.txt
88. Java Script Object Notation
•
•
•
•
•
•
http://json.org/
Independente de linguagem
Pares nome/valor
Lista ordenada
Muito adotado atualmente
Alternativa para o XML
– Menos verbosa
– Maior legibilidade
92. Facebook Hacking
“O Facebook é dirigido por hackers. A
maioria das pessoas pensa de um
hacker como alguém que invade um
sistema de computador. Mas nós
vemos isso como uma filosofia. Aqui, os
hackers assumem que sempre há uma
maneira melhor, mais eficiente de resolver
problemas.” facebook.com/careers (2012)
104. Sentiment Analysis (Facebook)
• Sabe o que é ter vontade de acordar cedo no
domingo para estudar?!?
• Bom, eu também não sei explicar, mas é o que
estou sentindo no momento .-.
• Bora Casdinho!
107. Participantes de um evento
qualquer
• Hackear participantes a partir do
evento criado no Facebook
• Inserir link para o perfil pessoal
no Facebook
• Obs.: somente alguns participantes
e com a foto na data do evento
116. Games com Python no browser
http://www.codeskulptor.org/#demos-pyman.py
117. Games com Python no browser
Rice Rocks (Asteroids)
https://gist.github.com/fmasanori/6042315
118. Slides e videos
• Python for Zombies
• Hackeando o Facebook e o
Twitter com Python 3
119. Links para iniciar
Twitter Dev API
Facebook Dev How To
Facebook Dev Pictures
Facebook Dev Search
Facebook Dev Examples/
Facebook Dev Getting Started
128. Acesso Twitter Autenticado
• Até junho de 2013 era possível acessar várias
informações do Twitter sem necessidade de
autenticação
• O Twitter resolveu melhorar a segurança e
utilizar OAuth (Open Authentication) até o
acesso básico (search)
• Neste protocolo, recebemos uma chave e
senha que permite o acesso a um recurso
específico durante algum tempo
129. Acesso Twitter Autenticado
• O usuário do Twitter precisa autorizar um
programa externo, que recebe um
consumer_key e um consumer_secret
• Na posse dessa chave e senha podemos pegar
uma chave e senha de acesso temporária
• Não se preocupe se você não entender o
Tweepy. Ano passado era mais simples e só
recentemente ficou mais complicado acessar
o Twitter