Sphinx é uma poderosa plataforma de busca. De fácil instalação e utilização, é o companheiro perfeito para projetos PHP que necessitam buscar strings dentro de grandes volumes de dados em pouco tempo
Descrição : Buscar texto dentro de grandes volumes de dados é cada vez mais algo essencial em projetos de plataformas de conteúdo e gestão. Conforme seu volume de dados cresce, o bom e velho FULLTEXT no MySQL deixa de ser uma opção. Conheça a Sphinx e aprenda como instalá-la, como configurar e calibrar data sources e indexes para que a busca em seus projetos seja fácil de desenvolver, barata e escalável.
PHP Conference 2015: Construindo e mantendo aplicações multi-tenant (multi-c...Aryel Tupinambá
O multi-tenancy é uma evolução natural para boa parte das aplicações. Startups e seus produtos precisam dele para seu modelo SaaS, empresas e seus sistemas o querem para o reuso de código. Essa palestra irá mostrar técnicas e modelos para a aplicação de multi-tenancy, e erros comuns no processo.
Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)Aryel Tupinambá
O multi-tenancy é uma evolução natural para boa parte das aplicações. Startups e seus produtos precisam dele para seu modelo SaaS, empresas e seus sistemas o querem para o reuso de código. Essa palestra irá mostrar técnicas e modelos para a aplicação de multi-tenancy, e erros comuns no processo.
Escalabilidade e alta disponibilidade no php com nginxSaveincloud
Se você tem um site, blog ou e-commerce com alto volume de acessos e busca por soluções que o tornem escalável e com melhor desempenho, então está na hora de entender melhor o que o NGINX pode fazer por você.
Prepare seu PHP pra receber mais visitas sem perder performance.
Instale e configure sua aplicação com NGINX escalável aqui na Saveincloud.
Faça um teste grátis com a gente por 14 dias. Acesse o link https://cloud.saveincloud.com.br/lp/nginx-escalavel-com-php/
Fale com a nossa equipe pelo whatsapp https://bit.ly/Saveincloud
PHP Conference 2015: Construindo e mantendo aplicações multi-tenant (multi-c...Aryel Tupinambá
O multi-tenancy é uma evolução natural para boa parte das aplicações. Startups e seus produtos precisam dele para seu modelo SaaS, empresas e seus sistemas o querem para o reuso de código. Essa palestra irá mostrar técnicas e modelos para a aplicação de multi-tenancy, e erros comuns no processo.
Laraconf 2016: Construindo e mantendo aplicações multi-tenant (multi-cliente)Aryel Tupinambá
O multi-tenancy é uma evolução natural para boa parte das aplicações. Startups e seus produtos precisam dele para seu modelo SaaS, empresas e seus sistemas o querem para o reuso de código. Essa palestra irá mostrar técnicas e modelos para a aplicação de multi-tenancy, e erros comuns no processo.
Escalabilidade e alta disponibilidade no php com nginxSaveincloud
Se você tem um site, blog ou e-commerce com alto volume de acessos e busca por soluções que o tornem escalável e com melhor desempenho, então está na hora de entender melhor o que o NGINX pode fazer por você.
Prepare seu PHP pra receber mais visitas sem perder performance.
Instale e configure sua aplicação com NGINX escalável aqui na Saveincloud.
Faça um teste grátis com a gente por 14 dias. Acesse o link https://cloud.saveincloud.com.br/lp/nginx-escalavel-com-php/
Fale com a nossa equipe pelo whatsapp https://bit.ly/Saveincloud
Com a consolidação da linguagem PHP no mercado de aplicações de grande porte, o desenvolvimento de sistemas operando sobre servidores distribuídos torna-se vital para a sobrevivência do negócio e garantia de acesso e atendimento a todos os seus usuários. Nesse contexto, a palestra abordará técnicas para o planejamento e desenvolvimento de aplicações clusterizadas, cloudcomputing e balanceamento de carga de bases de dados.
Palestra sobre otimização de frontend apresentada para o grupo railsmg no dia 26/1/2010.
Veja o vídeo em: http://vimeo.com/groups/railsmg/videos/9010703
Cloud Mysql e MariaDB em alta performanceSaveincloud
Se você trabalha com Cloud MySQL ou MariaDB e está buscando melhor performance e escalabilidade, vamos conversar e detalhar de que forma você pode fazer isso aqui na Saveincloud.
O objetivo deste evento é te mostrar o passo a passo para instalar, configurar e otimizar seu banco de dados na nuvem, e como obter melhor performance usando o conceito escalável tão desejado no mercado.
✅ Acesse o link a seguir para testar 14 dias grátis a ferramenta:
https://cloud.saveincloud.com.br/lp/mysql-mariadb-server/?camp=LP-mysql_slideshare
Link para falar com nosso Suporte:
https://bit.ly/Saveincloud
O MySQL 5.6 já está pronto para produção desde fevereiro de 2013 e inclui um número impressionante de melhorias de performance e recursos para diagnóstico o tuning. Nesta apresentação serão mostradas estas melhorias e alguns exemplos de como ajustar o MySQL para um desempenho ainda maior, identificando e resolvendo rapidamente os gargalos mais comuns.
Serão discutidas:
-Melhorias de performance com o upgrade para MySQL 5.6
-Configurações do servidor relacionados à performance
-Como usar índices de maneira eficiente
-Como usar o novo visual EXPLAIN para verificar os planos de execução de consulta
-Quais os problemas de performance mais comuns, como identificá-los e resolvê-los
Instalação do CakePHP 2.2.3 tanto em linux quanto windows.
Este Slide faz parte do Minucurso Apresentado na Semana De Analise de Sistemas da Faculdade Guairacá
Aqui são apresentados conceitos básicos sobre o paradigma web. Simples e rápido.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
Conheça a fundo o JBoss e sua mais nova versão o WildFly.
Este seminário aborda a história, arquitetura, funcionamento e dicas sobre o JBoss/WildFly e monta um ambiente de produção com um HTTP Server funcionando como load balancer e proxy reverso com vários JBoss em cluster.
WordPress Multisite: Desenvolvendo Portais com Sites Interligados.Nícholas André
Palestra Apresentada no WordCamp Salvador 2014, ensinando como desenvolver Portais com sites interligados utilizando Multisite.
https://github.com/nicholasio
Muitas empresas não possuem um DBA, apenas um programador. Quando o volume de dados cresce, o programador acaba sendo bastante penalizado e muitas vezes pode até mesmo perder o emprego. Essa palestra traz dicas valiosas de como otimizar bancos de dados MySQL sem precisar ser um DBA.
PHP Conference 2016: Aplicações em tempo real com o Ratchet PHPAryel Tupinambá
O Ratchet é uma biblioteca PHP para desenvolvimento de aplicações em tempo real usando Web Sockets. Com ela, podemos construir de forma simples e desacoplada, desde chats, jogos online, cotações de bolsa, atualizações em tempo real de anúncios, notícias, posts e comentários.
Nowadays many modern web applications are solely relying on JavaScript to render their frontend. But if you want to create mashups, load data from many different places or include external widgets into your site, you are quickly running into boundaries because of browser and security restrictions. In this presentation I will talk about techniques helping you with such problems.
Com a consolidação da linguagem PHP no mercado de aplicações de grande porte, o desenvolvimento de sistemas operando sobre servidores distribuídos torna-se vital para a sobrevivência do negócio e garantia de acesso e atendimento a todos os seus usuários. Nesse contexto, a palestra abordará técnicas para o planejamento e desenvolvimento de aplicações clusterizadas, cloudcomputing e balanceamento de carga de bases de dados.
Palestra sobre otimização de frontend apresentada para o grupo railsmg no dia 26/1/2010.
Veja o vídeo em: http://vimeo.com/groups/railsmg/videos/9010703
Cloud Mysql e MariaDB em alta performanceSaveincloud
Se você trabalha com Cloud MySQL ou MariaDB e está buscando melhor performance e escalabilidade, vamos conversar e detalhar de que forma você pode fazer isso aqui na Saveincloud.
O objetivo deste evento é te mostrar o passo a passo para instalar, configurar e otimizar seu banco de dados na nuvem, e como obter melhor performance usando o conceito escalável tão desejado no mercado.
✅ Acesse o link a seguir para testar 14 dias grátis a ferramenta:
https://cloud.saveincloud.com.br/lp/mysql-mariadb-server/?camp=LP-mysql_slideshare
Link para falar com nosso Suporte:
https://bit.ly/Saveincloud
O MySQL 5.6 já está pronto para produção desde fevereiro de 2013 e inclui um número impressionante de melhorias de performance e recursos para diagnóstico o tuning. Nesta apresentação serão mostradas estas melhorias e alguns exemplos de como ajustar o MySQL para um desempenho ainda maior, identificando e resolvendo rapidamente os gargalos mais comuns.
Serão discutidas:
-Melhorias de performance com o upgrade para MySQL 5.6
-Configurações do servidor relacionados à performance
-Como usar índices de maneira eficiente
-Como usar o novo visual EXPLAIN para verificar os planos de execução de consulta
-Quais os problemas de performance mais comuns, como identificá-los e resolvê-los
Instalação do CakePHP 2.2.3 tanto em linux quanto windows.
Este Slide faz parte do Minucurso Apresentado na Semana De Analise de Sistemas da Faculdade Guairacá
Aqui são apresentados conceitos básicos sobre o paradigma web. Simples e rápido.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
Conheça a fundo o JBoss e sua mais nova versão o WildFly.
Este seminário aborda a história, arquitetura, funcionamento e dicas sobre o JBoss/WildFly e monta um ambiente de produção com um HTTP Server funcionando como load balancer e proxy reverso com vários JBoss em cluster.
WordPress Multisite: Desenvolvendo Portais com Sites Interligados.Nícholas André
Palestra Apresentada no WordCamp Salvador 2014, ensinando como desenvolver Portais com sites interligados utilizando Multisite.
https://github.com/nicholasio
Muitas empresas não possuem um DBA, apenas um programador. Quando o volume de dados cresce, o programador acaba sendo bastante penalizado e muitas vezes pode até mesmo perder o emprego. Essa palestra traz dicas valiosas de como otimizar bancos de dados MySQL sem precisar ser um DBA.
PHP Conference 2016: Aplicações em tempo real com o Ratchet PHPAryel Tupinambá
O Ratchet é uma biblioteca PHP para desenvolvimento de aplicações em tempo real usando Web Sockets. Com ela, podemos construir de forma simples e desacoplada, desde chats, jogos online, cotações de bolsa, atualizações em tempo real de anúncios, notícias, posts e comentários.
Nowadays many modern web applications are solely relying on JavaScript to render their frontend. But if you want to create mashups, load data from many different places or include external widgets into your site, you are quickly running into boundaries because of browser and security restrictions. In this presentation I will talk about techniques helping you with such problems.
The popularity of cloud environments is real and the deployment of SaaS applications is becoming a strong business model. To support these applications is essential to create a multi-tenancy environment separating each customer data and providing a single execution environment with security and isolated customer contexts. The main challenges of this architecture are: separation of contexts, data isolation, customisation features, resource isolation and management of the execution environment. This talk will demonstrate different technologies and strategies used to implement those features using the Java EE platform.
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015Innomatic Platform
Building Multi-Tenant and SaaS products in PHP with the open source Innomatic Platform.
Let’s look at how you can build multi-tenant applications and SaaS products in PHP faster and better with the open source Innomatic Platform.
Presentation at CloudConf 2015
An introduction to multi-tenancy in Java enterprise applications. It covers the steps needed to use Hibernate's support, integration with migration framework Liquibase and logging.
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
Apresentação da framework de desenvolvimento de aplicações web - cakePHP.
Aprender a criar uma aplicação web em PHP usando o CakePHP.
- Instalação?
- Organização?
- Como criar um Blog?
- Autenticação?
- Multi-utilizador?
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Tchelinux
Elasticsearch é uma ferramenta de busca e análise de dados em tempo real, de código aberto. Nesta apresentação será demostrada soluções utilizadas para desenvolver um buscador, focado em disponibilizar uma ferramenta que possibilite realizar busca por cursos de graduação aprovados pelo MEC. Para isso será abordado conceitos como Web Crawler, armazenamento de dados em banco não relacional utilizando Elasticsearch, e como tudo isso pode ser desenvolvido utilizando PHP.
Palestra de Fernando Silva, apresentada no Tchelinux Bento Gonçalves 2017.
* Link original do autor: https://speakerdeck.com/fernandodebrando/desenvolvendo-um-buscador-com-php-e-elasticsearch
* Link do perfil do autor no Speaker Deck: https://speakerdeck.com/fernandodebrando
Fernando Silva é Analista de Desenvolvimento na KingHost, graduado em Análise e Desenvolvimento de Sistemas (ADS) pela Faculdade Senac Porto Alegre, onde ganhou o Prêmio Keller de melhor trajetória acadêmica. Atualmente faz pós-graduação em Segurança Cibernética pela UFRGS, além disso, é um dos coordenadores da comunidade PHP-RS, é entusiasta Open Source e Software Livre.
Path to the future #5 - Melhores práticas de data warehouse no Amazon RedshiftAmazon Web Services LATAM
O Amazon Redshift usa uma variedade de inovações para obter um desempenho de consulta muito elevado em conjuntos de dados com tamanhos variando de centenas de gigabytes a um petabyte ou mais.
Nessa sessão será exposto boas práticas do Amazon Redshift, o dataware da AWS. Tem como intuito de expor de formas efetivas de migração, cargas de dados, realizar tunnings nas suas consultas.
Um dos grandes beneficios da computação em nuvem, é a possibilidade de escalar sua capacidade de acordo com a sua demanda. apresentação serão abordados boas práticas de arquiteturas web, para que permita a escalação de 0 a 10 milhões de usuários.
Palestra feito na PHPConf - 2016
Apresento uma estrutra de escabilidade, passando pelos passos de crescimento de um software web.
Conceitos como cache, concorrências, storage para arquivos estáticos, servidores de busca, sessões em memória e afins.
Full Text Search com Solr, MySQL Full text e PostgreSQL Full TextRodrigo Urubatan
Slides usados na palestra Full Text Search com Solr, MySQL Full text e PostgreSQL Full Text que apresentei hoje pela manha no #TheDevConf #TDCPOA #TDC2014
Apresentação realizada no dia 8/11/2014 no evento TchêLinux Bento Gonçalves edição 2014 - http://bento.tchelinux.org
Falei sobre os conceitos de bases de dados NoSQL, cases, comparações com o modelo relacional, expressões SQL x MongoDB (orientado à documentos), instalação, recursos do MongoDB, operações via console, modelagem (abordagem embedded), driver PHP, anatomia do código PHP, CRUD (Create, Read, Update and Delete), ObjectId, operadores, segurança, persistência de objetos, tratamento de arrays (documentos aninhados), índices (performance), projeção, agregação, hospedagem, ferramentas de administração e programa de certificação.
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um segundo - PHP e Sphinx Search
1.
2. Sobre o palestrante
Co-fundador e CTO da LQDI Digital
Projetos para empresas como Terra, Porto Seguro,
Garoto, Whirlpool, Editora Abril, Nestlé e AmBev
Engenheiro da Computação
Formado pela FIAP em 2013
12 anos trabalhando com PHP
Desde a época que o PHPClasses era a onda :)
Aryel Tupinambá
3. "I have a plan" (kinda)
1) O problema
2) Soluções "possíveis" com o MySQL
3) O porque eu coloquei "possíveis" em aspas
4) Introdução rápida ao Sphinx
5) Algumas alternativas ao Sphinx
6) Sphinx escala?
7) Configurando data sources
8) Índices do tipo "plain"
9) Índices do tipo "real-time" (RT)
10) Wrap-up
11) Moral da história
12) Dúvidas
13) Recado rápido do palestrante
14) Coffee break! o/
Aviso! Essa palestra contém:
Memes escrotos
Memes engraçadinhos
Montagens mal feitas
Argumentos para vender o Sphinx para o chefe
Coisa pra ***** pra estudar até o final do ano
4. Era uma vez um cliente…
Novo portal de notícias
Base de dados legada com
de 1 milhão de artigos
5. “Tá legal, mas cadê a busca?”
O cliente quer um buscador
que indexe todo o
conteúdo dos artigos
desde 1925
O prazo ainda não mudou
Pediram uma busca "tipo a
do Google" em termos de
relevância e velocidade
?
6. “Tá legal, mas cadê a busca?”
?
O cliente quer um buscador
que indexe todo o
conteúdo dos artigos
desde 1925
O prazo ainda não mudou
Pediram uma busca "tipo a
do Google" em termos de
relevância e velocidade
7. “Tá legal, mas cadê a busca?”
Como fazer?
Será que é viável?
Vai caber no orçamento?
9. Vamos tentar o de sempre
SELECT * FROM articles WHERE CONCAT(title, keywords) LIKE "%{$query}%"
Queries com LIKE
Lento e sem relevância
SELECT * FROM articles WHERE CONCAT(title, keywords) REGEXP "{$query}"
Queries com REGEXP
Muuuito lento, falsos positivos
SELECT * FROM articles WHERE
MATCH(title, keywords) AGAINST("+{$query}") IN BOOLEAN MODE
Queries com MATCH … AGAINST (índices FULLTEXT)
Relevância razoável, vários casos de exceção
Lento para inserir um registro
Sou obrigado a usar o MyISAM?
10. Vamos tentar o de sempre
SELECT * FROM articles WHERE CONCAT(title, keywords) LIKE "%{$query}%"
Queries com LIKE
Lento e sem relevância
SELECT * FROM articles WHERE CONCAT(title, keywords) REGEXP "{$query}"
Queries com REGEXP
Muuuito lento, falsos positivos
SELECT * FROM articles WHERE
MATCH(title, keywords) AGAINST("+{$query}") IN BOOLEAN MODE
Queries com MATCH … AGAINST (índices FULLTEXT)
Relevância baixa, vários casos de exceção
Lento para inserir um registro
Sou obrigado a usar o MyISAM?
11. If all you have is a hammer,
everything looks like a nail
“Podemos usar uma tabela MyISAM
paralela com a InnoDB só para busca!”
“E se a gente trocar os discos do servidor
por SSD?”
“E se a gente deixar os caches do MySQL gigantes?”
“E se…?”
12. “Podemos usar uma tabela MyISAM
paralela com a InnoDB só para busca!”
“E se a gente trocar os discos do servidor
por SSD?”
“E se a gente deixar os caches do MySQL gigantes?”
“Será que precisamos trocar o banco de dados?”
If all you have is a hammer,
everything looks like a nail
13. The right tools for the job
- Usar uma engine própria para busca
- Sphinx: solução quase plug-and-play
- Integra-se bem com o MySQL e com o PHP
- Fine-tuning opcional e fácil dos índices
- Diferença brutal de performance
- Busca
- Indexação
- Inserção / Atualização
14. Outras soluções
- Apache Solr
- Mais robusta e com mais features
- Mais difícil de instalar e configurar (Java JRE/XML hell)
- Amazon CloudSearch
- Vendor lock-in e código proprietário
- Custo maior e as vezes imprevisível
- Potencial de alta latência entre o CloudSearch e o seu servidor
- ElasticSearch
- Performance e features semelhantes
- Também roda no Java (Java JRE/XML hell)
- Maior foco no real-time
- API REST, algumas diferenças de paradigma
- Foco menor no SQL, combina melhor com NoSQL
15. A Sphinx Search
- Existe desde 2001
- 100% código aberto
- Apoiado por uma empresa comercial
- Usado por grandes e pequenos players
- Tumblr, The Pirate Bay, Craigslist, BBC, Scribd, Metacafe, OpenSubtitles.org
16. A Sphinx Search
- Curva de aprendizado suave
- Plug-and-play
- Windows, Mac e Linux
- Fácil configuração e fine-tuning
17. A Sphinx Search
- Até 1000x mais rápida que o FULLTEXT!
- Suporta vários tipos de banco de dados
- Opções de rankings de relevância
- Arquitetura distribuída
- Suporte a multi-queries
- Execução de queries em batch
- Otimização de queries que só variam no agrupamento
- Facilita a busca facetada
18. Mas será que escala?
Fonte: MySQL AB (recomendo altamente o artigo!)
http://en.oreilly.com/mysql2008/public/schedule/detail/511
19. Arquitetura da plataforma
Fonte: MySQL AB (recomendo altamente o artigo!)
http://en.oreilly.com/mysql2008/public/schedule/detail/511
PHP
searchd
indexer
MySQL
Sphinx
Index
Query usando a API ou SphinxQL
Conexão via protocolo MySQL wire
Query SQL com tabela
do tipo SPHINX
20. Instalando e configurando
apt-get install sphinxsearch
brew install sphinx --mysql
Baixar o ZIP no site sphinxsearch.com, extrair em
algum lugar e rodar o install.bat
Ubuntu e Debian
Mac OS X
Windows
Demais sistemas: ver sphinxsearch.com
21. Data sources
- Dá pra extender uma
source, sobreescrevendo
valores
- Attributes: campos
armazenados e filtráveis,
mas não indexados
- Fields: campos
armazenados e indexados
- MVAs: permite indexar e
retornar sub-elementos de
uma query, como tags,
categorias, etc
sphinx.conf
22. Indexes
- Índice do tipo plain: índice
estático, gerado via indexer
- Ideal para poucas
inserções e atualizações
ao longo do dia, ou
inserções pontuais em
massa (sites de notícia,
catálogos, e-commerces
com poucas promoções)
- Inúmeras otimizações
possíveis via configuração
28. Reindexando
Reindexar tudo
A opção --rotate permite que o índice seja construido em outro arquivo, permitindo
que o searchd continue servindo buscas durante a reindexação
29. Atualizando "live"
Leva um pouco mais de tempo que um insert convencional
(algo entre 1 e 100 segundos, dependendo do tamanho do índice)
30. Delta indexes
Separa o índice em dois,
mantém os dados mais
recentes (hot-band)
atualizados com
frequência, e os dados
antigos com menos
frequência (ou sem
atualizar)
31. Indexes
- Índice do tipo real-time: o
índice é alimentado e
atualizado em tempo real
- Ideal para bases de dados
"quentes", dados
alimentados via
crowdsourcing, ítens
únicos e singulares
- Não possuem data
sources; devem ser
alimentados manualmente
através de INSERTs
realizados via SphinxQL
- Uma pré-alimentação pode
ser feita através de um
índice plain, seguido de um
comando ATTACH
32. Manipulando o índice (RT)
Queries com SphinxQL funcionam igual
Se quiser transformar um índice plain em realtime, é só usar o comando ATTACH
O comando renomeia os arquivos de índice, fazendo a migração instantaneamente
33. Wrap-up
- Pode usar o Sphinx sempre que precisar de
busca em grandes massas de dados
- Ótima alternativa para o FULLTEXT do MySQL
- Escala muito bem, dificilmente precisará
trocar por uma engine mais robusta
- Roda muito bem em uma box de
$5/mês da DigitalOcean
- Não se apegue! Teste e compare com
ElasticSearch, Solr e outras soluções
35. Dúvidas?
Eu sei que o coffee break é logo mais, mas guentaí que eu tenho um recado rápido antes de encerrar!
36. A está contratando!
Procuramos desenvolvedores front-end e back-end, de TODOS os níveis de
experiência, apaixonados pelo que fazem e a fim de aprender e ensinar
Ambiente de trabalho bacana, descontraído, com remuneração competitiva,
horários flexíveis e bastante abertura para novas idéias. Sem melindres,
sem preciosismo e puxação de saco :D
Plano de carreira sólido e flexível, com espaço para crescimento em gestão
e especialização, e programas de feedback contínuo entre a equipe e os
gestores.
Manda um e-mail pra work@lqdi.net e cite a palestra da PHP Conference
Me chame pessoalmente agora no coffee break para trocarmos uma idéia
Começe 2015 de trampo novo!
37. Muitíssimo obrigado!
Hora do coffee break :)
CONTATOS
E-mail/Hangouts: aryel.tupinamba@lqdi.net
Twitter: @DfKimera
LinkedIn: br.linkedin.com/aryel.tupinamba
Curriculos para: work@lqdi.net
(por favor, cite a PHPConference)
SLIDES DA PALESTRA:
http://slideshare.com/aryeltupinamba