Você leva horas, dias para encontrar um bug? Não conhece o framework que trabalha ou leva dias encontrando como implementar algo? Seus problemas acabaram! Aprenda a debugar suas aplicações com Xdebug!
Seguindo padrões: Codificando profissionalmente com PHP SnifferVinicius Warto Campos
Workshop presented on November 30th, 2012, by Vinicius Warto at PHP Conference Brazil. This work explains how to perform a professional software development using PHP Code Sniffer with some pratical issues.
Xdebug seus problemas acabaram - tdc floripa 2017Vitor Mattos
Você leva horas, dias para encontrar um bug? Não conhece o framework que trabalha ou leva dias encontrando como implementar algo? Seus problemas acabaram! Aprenda a debugar suas aplicações com Xdebug!
BDD: Torne viva a documentação de seus sistemasVitor Mattos
Veremos um pouco de tudo, uma apresentação da importância de se fazer testes, testes unitários, testes funcionais, pirâmide de testes, como fazer com que os testes se tornem uma documentação viva de um sistema, como escrever testes com gherkin, a ferramenta behat para escrita de testes funcionais e uma pincelada rápida sobre CI, CD e como implementar a cultura de testes em ambientes hostis a testes.
Palestra apresentada no PHPRS 2017
Talk apresentada interna na empresa IXCsoft, com o objetivo de mostrar as principais novidades das versões 7.4 e 8.0 do PHP.
O foco foi mostrar pequenos trechos de códigos para utilização em software da Empresa.
Nessa palestra apresentarei o que mudou e por que mudou na nova major version do PHP. Grandes mudanças possibilitaram uma melhor padronização da linguagem, novas possibilidades e encorparam ainda mais esse universo que temos.
Novidades, mudanças, notícias e incompatibilidades do PHP7.
Escalando uma plataforma poliglota - QConSP 17Leandro Moreira
Apresentar o que leva uma plataforma ter mais de uma linguagem ou banco como solução e quais problemas essa abordagem traz, exemplicando o case da globo.com.
Assuntos como: caching, latência, armazenamento, vídeo ao vivo, streaming, tuning, linux kernel, network, load balancer, encoding, importância dos testes e muito mais.
Seguindo padrões: Codificando profissionalmente com PHP SnifferVinicius Warto Campos
Workshop presented on November 30th, 2012, by Vinicius Warto at PHP Conference Brazil. This work explains how to perform a professional software development using PHP Code Sniffer with some pratical issues.
Xdebug seus problemas acabaram - tdc floripa 2017Vitor Mattos
Você leva horas, dias para encontrar um bug? Não conhece o framework que trabalha ou leva dias encontrando como implementar algo? Seus problemas acabaram! Aprenda a debugar suas aplicações com Xdebug!
BDD: Torne viva a documentação de seus sistemasVitor Mattos
Veremos um pouco de tudo, uma apresentação da importância de se fazer testes, testes unitários, testes funcionais, pirâmide de testes, como fazer com que os testes se tornem uma documentação viva de um sistema, como escrever testes com gherkin, a ferramenta behat para escrita de testes funcionais e uma pincelada rápida sobre CI, CD e como implementar a cultura de testes em ambientes hostis a testes.
Palestra apresentada no PHPRS 2017
Talk apresentada interna na empresa IXCsoft, com o objetivo de mostrar as principais novidades das versões 7.4 e 8.0 do PHP.
O foco foi mostrar pequenos trechos de códigos para utilização em software da Empresa.
Nessa palestra apresentarei o que mudou e por que mudou na nova major version do PHP. Grandes mudanças possibilitaram uma melhor padronização da linguagem, novas possibilidades e encorparam ainda mais esse universo que temos.
Novidades, mudanças, notícias e incompatibilidades do PHP7.
Escalando uma plataforma poliglota - QConSP 17Leandro Moreira
Apresentar o que leva uma plataforma ter mais de uma linguagem ou banco como solução e quais problemas essa abordagem traz, exemplicando o case da globo.com.
Assuntos como: caching, latência, armazenamento, vídeo ao vivo, streaming, tuning, linux kernel, network, load balancer, encoding, importância dos testes e muito mais.
Qual o estado dos frameworks atualmente no PHP, assim como a situação atual da linguagem. Como você pode escolher seu framework e um comparativo entre os 4 principais frameworks do mercado.
[ PHPFC V / DarkMiraTour ] - Controlando Php com arduino - Easy WayVinícius Feitosa
Nesta apresentação expus de maneira simplificada uma visão geral sobre o Arduino e como é simples para realizar uma comunicação entre a placa Arduino e a aplicação.
A apresentação foi direcionada para o tipo de comunicação através da porta USB.
A classe PHPDuino foi criada com o mesmo propósito exposto na apresentação, facilitar a leitura e envio de informações para a placa Arduino ou similares. Você pode utiliza-la à partir do link a seguir: https://github.com/vinnyfs89/PHPDuino
Espero que gostem!
Qualidade em projetos PHP - PHPSC Conf 2011Luís Cobucci
Na nossa vida é importante nos preocuparmos com nossa saúde, e DEVEMOS fazer o mesmo com a saúde dos nossos softwares.
Você verá aqui as principais ferramentas para medir qualidade e encontrar alguns tumores nos seus projetos!
Produtividade com ZF2, PDT & Zend Server Free EditionFlávio Lisboa
Como diminuir a incidência de erros em projetos PHP utilizando um poderoso arsenal de ferramentas livres para descoberta e correção de bugs, além de praticar reuso com o framework Zend.
O REST é ainda hoje a opção mais usada para criação de APIs para comunicação entre processos sobre rede, embora em muitos casos não seja realmente uma escolha, mas um uso pelo fato de ser simples e amplamente usado e conhecido. Por outro lado, soluções como gRPC e GraphQL vêm crescendo e se popularizando cada vez mais como alternativa ao “plain old” REST.
Essa palestra tem o objetivo de apresentar o gRPC como uma solução aos problemas do REST para APIs, principalmente para microsserviços. Será trazido um pouco do contexto histórico da web e de comunicação entre processos (IPC), para entendermos como chegamos até aqui, levantando alguns questionamentos como “RPC sobre HTTP” e “REST com HTTP/2”. Também serão abordados os principais conceitos e características do gRPC, mostrando seus prós e contras, e exemplos de uso do gRPC com protobuffers.
Link para o código: https://github.com/yagotome/grpc-cache
Táticas de obfuscação de código em projetos PHPMurilo Chianfa
Esta palestra aborda estratégias de obfuscação de código PHP como uma medida para fortalecer a defesa em profundidade de projetos críticos.
Serão apresentadas técnicas eficazes de ofuscação, destacando como esse processo pode dificultar significativamente a compreensão do código por atacantes e/ou indivíduos mal intencionados, promovendo uma abordagem mais robusta na preservação da integridade de sistemas PHP em ambientes de produção.
Oficina de PHP - Software Freedom Day Luziânia 2013George Mendonça
Oficina de PHP realizada no Instituto Federal de Goiás Campus de Luziânia no evento Software Freedom Day.
----------------------------------------------------------------
PHP Workshop held at the Federal Institute of Goiás Campus Luziania in Software Freedom Day event.
Depurando código PHP com Docker e Xdebug - PHPRSEduardo Pittol
Será apresentado como integrar Docker e Xdebug para depurar seu código PHP linha por linha no Visual Studio Code à partir do navegador, do terminal e até do Postman!
Como usar plugins, ferramentas da linguagem PHP, e a linha de comando para identificar e corrigir problemas de lógica ou gargalos de performance. Analise fluxo de código, consultas ao banco, consumo de recursos, ações e filtros, qual arquivo em uso, e muito mais.
Qual o estado dos frameworks atualmente no PHP, assim como a situação atual da linguagem. Como você pode escolher seu framework e um comparativo entre os 4 principais frameworks do mercado.
[ PHPFC V / DarkMiraTour ] - Controlando Php com arduino - Easy WayVinícius Feitosa
Nesta apresentação expus de maneira simplificada uma visão geral sobre o Arduino e como é simples para realizar uma comunicação entre a placa Arduino e a aplicação.
A apresentação foi direcionada para o tipo de comunicação através da porta USB.
A classe PHPDuino foi criada com o mesmo propósito exposto na apresentação, facilitar a leitura e envio de informações para a placa Arduino ou similares. Você pode utiliza-la à partir do link a seguir: https://github.com/vinnyfs89/PHPDuino
Espero que gostem!
Qualidade em projetos PHP - PHPSC Conf 2011Luís Cobucci
Na nossa vida é importante nos preocuparmos com nossa saúde, e DEVEMOS fazer o mesmo com a saúde dos nossos softwares.
Você verá aqui as principais ferramentas para medir qualidade e encontrar alguns tumores nos seus projetos!
Produtividade com ZF2, PDT & Zend Server Free EditionFlávio Lisboa
Como diminuir a incidência de erros em projetos PHP utilizando um poderoso arsenal de ferramentas livres para descoberta e correção de bugs, além de praticar reuso com o framework Zend.
O REST é ainda hoje a opção mais usada para criação de APIs para comunicação entre processos sobre rede, embora em muitos casos não seja realmente uma escolha, mas um uso pelo fato de ser simples e amplamente usado e conhecido. Por outro lado, soluções como gRPC e GraphQL vêm crescendo e se popularizando cada vez mais como alternativa ao “plain old” REST.
Essa palestra tem o objetivo de apresentar o gRPC como uma solução aos problemas do REST para APIs, principalmente para microsserviços. Será trazido um pouco do contexto histórico da web e de comunicação entre processos (IPC), para entendermos como chegamos até aqui, levantando alguns questionamentos como “RPC sobre HTTP” e “REST com HTTP/2”. Também serão abordados os principais conceitos e características do gRPC, mostrando seus prós e contras, e exemplos de uso do gRPC com protobuffers.
Link para o código: https://github.com/yagotome/grpc-cache
Táticas de obfuscação de código em projetos PHPMurilo Chianfa
Esta palestra aborda estratégias de obfuscação de código PHP como uma medida para fortalecer a defesa em profundidade de projetos críticos.
Serão apresentadas técnicas eficazes de ofuscação, destacando como esse processo pode dificultar significativamente a compreensão do código por atacantes e/ou indivíduos mal intencionados, promovendo uma abordagem mais robusta na preservação da integridade de sistemas PHP em ambientes de produção.
Oficina de PHP - Software Freedom Day Luziânia 2013George Mendonça
Oficina de PHP realizada no Instituto Federal de Goiás Campus de Luziânia no evento Software Freedom Day.
----------------------------------------------------------------
PHP Workshop held at the Federal Institute of Goiás Campus Luziania in Software Freedom Day event.
Depurando código PHP com Docker e Xdebug - PHPRSEduardo Pittol
Será apresentado como integrar Docker e Xdebug para depurar seu código PHP linha por linha no Visual Studio Code à partir do navegador, do terminal e até do Postman!
Como usar plugins, ferramentas da linguagem PHP, e a linha de comando para identificar e corrigir problemas de lógica ou gargalos de performance. Analise fluxo de código, consultas ao banco, consumo de recursos, ações e filtros, qual arquivo em uso, e muito mais.
No passado, muitas pessoas reclamavam do PHP devido a falta de organização na escrita de códigos, falta de padrões e pelos ditos "sobrinhos", a linguagem amadureceu, vieram os padrões, os frameworks, gerenciador de dependências e algumas pessoas continuam falando mal da linguagem. Estamos na era dos componentes e de tecnologias como webassembly, machine learning, graphql, bem como na reestruturação da linguagem para a versão 8.0. Nessa palestra iremos ver onde o PHP se posiciona atualmente, o que vem na linguagem na próxima versão e como utilizar a linguagem para trabalhar com as tecnologias em alta.
Gravação (vídeo) da palestra: https://www.infoq.com/br/presentations/depurando-aplicacoes-php-like-a-boss
Palestra apresentada nos seguintes eventos:
- DrupalCamp Campinas, em 25/06/2016;
- The Developers Conference (TDC) São Paulo, em 09/07/2016;
- PHP Conference Brazil, em 09/12/2016;
- PHPSP + Locaweb #3, em 18/02/2017.
Conheça mais sobre Composer, a ferramenta que trouxe uma das maiores revoluções para o PHP. Composer vai muito além de instalação de dependências, aprenda a poupar dias e meses de trabalho e passe a ser um dev feliz focado em trazer as melhores soluções técnicas para as necessidades do negócio.
Conheça mais sobre Composer, a ferramenta que trouxe uma das maiores revoluções para o PHP. Composer vai muito além de instalação de dependências, aprenda a poupar dias e meses de trabalho e passe a ser um dev feliz focado em trazer as melhores soluções técnicas para as necessidades do negócio.
O que é software livre? Tem diferença entre software livre e open source? Como devo iniciar um projeto de software livre em PHP? Qual licença devo utilizar em meu projeto? Como garantir a qualidade do meu código?
BDD: torne viva a documentação de seus sistemasVitor Mattos
Uma visão prática sobre quais são os papéis de um Programador e um Tester dentro do time de desenvolvimento ágil e como ambos podem trabalhar juntos para minimizar o desperdício na hora de planejar e executar os testes necessários para garantir a qualidade do produto.
Quem nunca trabalhou em uma empresa que diz que testes automatizados, seja BDD ou TDD só atrasam o tempo de desenvolvimento de uma tarefa e não servem para nada? Ou, quem nunca trabalhou em uma empresa que não sabe o que é automatização de testes? Se este é o seu caso, descubra alguns segredos que irão revolucionar sua rotina de trabalho e te permitirão fazer testes mesmo que teu chefe diga não.
Telegram é um emergente sistema de mensagem instantânea, similar ao WhatsApp só que melhor. Aprenda como fazer sua aplicação web e cli se integrar com o Telegram para falar com a web e com celulares! Aprenda também a criar robôs que podem interagir com os usuários do Telegram de formas diversas, interagindo com outros serviços, mandando comandos para uma aplicação, disparando lembretes, criando jogos e muito mais.
Muito se debate sobre a possibilidade do PHP executar threads. Vamos descobrir formas simples de como rodar processos em background com total controle sobre eles.
Você leva horas, dias para encontrar um bug? Não conhece o framework que trabalha ou leva dias encontrando como implementar algo? Seus problemas acabaram! Aprenda a debugar suas aplicações com Xdebug!
2. Falaremos sobre:
Sumário:
● O que é o xdebug?
● Porque usar o xdebug?
● Instalação
● Primeiros passos
○ Variáveis amigáveis
○ Xdebug na linha de comando
○ Removendo pogs
● Depurando em tempo real
● Code coverage
● Profiling
3. Desenvolvedor PHP desde 2003
Amante de opensource
Evangelista PHP
PHPRio ( http://telegram.me/phprio )
Contatos:
http://telegram.me/VitorMattos
Quem sou eu?
5. O que é o xdebug?
O Xdebug é uma extensão que te ajuda a depurar seus scripts fornecendo uma
grande quantidade de informações valiosas.
● Disponível desde 2002
● Desenvolvido por Derick Rethans
● Extensão para o PHP
● Escrita em C
● Open source
● Usado para debugar e otimizar aplicações
● Utiliza o protocolo DBGp (DeBugGer Protocol) para comunicação
● Te permite fazer profiling da aplicação
● Análise de cobertura de código
8. Porque usar xdebug?
Debugando sem xdebug
● Alterar algo na aplicação
● Recarregar a página
● Verificar como ficou
● Modificar novamente o código
● Imprimir mais variáveis
● Repetir tudo novamente
● Esquecer de limpar os debug ou de tirar um exit
● Mandar para o chefe testar a aplicação
9. Porque usar xdebug?
Debugando com xdebug
● Adicione um breakpoint
● Execute a aplicação
● Volte para a sua IDE e confira seu código
● Confira o valor de variáveis em tempo real
● Veja todo o backtrace de execução da aplicação
Dica: Faça testes unitários
10. Instalação - repositório
Funciona em qualquer ambiente que execute PHP, em distribuições Linux
baseadas em Debian, faça da seguinte forma:
~$ sudo apt-get install php-xdebug
O manual completo da extensão você encontra em:
xdebug.org
11. Conferindo instalação
~$ php -v
PHP 7.0.8-0ubuntu0.16.04.2 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.8-0ubuntu0.16.04.2, Copyright (c) 1999-2016, by Zend Technologies
with Xdebug v2.4.0, Copyright (c) 2002-2016, by Derick Rethans
13. Conferindo instalação
~$ php -v
PHP 7.0.8-0ubuntu0.16.04.2 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.8-0ubuntu0.16.04.2, Copyright (c) 1999-2016, by Zend Technologies
with Xdebug v2.4.1, Copyright (c) 2002-2016, by Derick Rethans
14. Instalação - código fonte
~$ sudo apt-get install php phpize git
~$ git clone git://github.com/xdebug/xdebug.git
~$ cd xdebug/
~/xdebug$ phpize
~/xdebug$ ./configure --enable-xdebug
~/xdebug$ make
~/xdebug$ sudo make install
15. Conferindo instalação
~$ php -v
PHP 7.0.8-0ubuntu0.16.04.2 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.8-0ubuntu0.16.04.2, Copyright (c) 1999-2016, by Zend Technologies
with Xdebug v2.5.0-dev, Copyright (c) 2002-2016, by Derick Rethans
16. Conferindo instalação
~$ cat /etc/php/7.0/mods-available/xdebug.ini
zend_extension=xdebug.so
Em alguns casos colocar apenas o nome do binário dá problema, então, se tiver
problemas, coloque o caminho absoluto do binátio do xdebug
17. Arquivo de configuração - xdebug.ini
zend_extension=xdebug.so
[xdebug]
xdebug.default_enable=on
xdebug.remote_enable=on
xdebug.remote_autostart=on
xdebug.profiler_output_name = cachegrind.out.%u.%s.%R
xdebug.profiler_enable = 0
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_log=/tmp/xdebug.log
;xdebug.remote_host=remote.mypage.com
xdebug.scream=0
xdebug.cli_color=On
xdebug.var_display_max_depth=10
xdebug.var_display_max_children=200
xdebug.overload_var_dump = 1
xdebug.show_exception_trace = Off
xdebug.trace_format = 1
; for get memory usage, uncoment the following lines and run this script:
; https://github.com/derickr/xdebug/raw/master/contrib/tracefile-analyser.php
; xdebug.collect_return = 1
; xdebug.auto_trace = 1
; xdebug.show_mem_delta=1
Calma, vamos entrar em detalhes mais a frente.
Qualquer dúvida, consulte o manual:
https://xdebug.org/docs/all_settings
22. Variáveis amigáveis - browser
xdebug.dump.*
No * pode colocar COOKIE, FILES, GET, POST, REQUEST, SERVER,
SESSION:
xdebug.dump.GET=*
E ainda pode filtrar:
xdebug.dump.SERVER=REMOTE_ADDR,REQUEST_METHOD
24. POG do desespero
É possível ocultar alguns erros no PHP com o @
Porém, é possível exibir novamente com o xdebug
xdebug.scream=1
http://xdebug.org/docs/stack_trace
http://php.net/manual/language.operators.errorcontrol.php
25. Evitando falhas de recursividade
xdebug.max_nesting_level=3
~/projetos/palestra-xdebug$ php recursive.php
PHP Fatal error: Maximum function nesting level of '3' reached,
aborting! in /home/vitor/projetos/palestra-xdebug/recursive.php on line 2
PHP Stack trace:
PHP 1. {main}() /home/vitor/projetos/palestra-xdebug/recursive.php:0
PHP 2. a() /home/vitor/projetos/palestra-xdebug/recursive.php:5
PHP 3. a() /home/vitor/projetos/palestra-xdebug/recursive.php:3
26. Debugando ao vivo
DBGp - DeBugGer: protocolo de debugging
Cross-language: comum para várias linguagens (PHP, HHVM, Python, Perl,...)
Compatível com diversos clientes
Possibilidade de alterar valor de algumas variáveis variáveis em tempo de
execução
Debugging remoto
Debugging condicional
27. Clientes
● PHPEclipse (Editor Plugin).
● JetBrain's PhpStorm (IDE; Commercial).
● VIM plugin (Editor Plugin).
● Emacs plugin (Editor Plugin).
● NetBeans (IDE: Windows, Linux, Mac OS X and Solaris).
● Notepad++ plugin (Editor: Windows).
● Dev-PHP (IDE: Windows)
● Eclipse plugin (IDE).
● KDevelop (IDE: Linux (KDE); Open Source).
● ActiveState's Komodo (IDE: Windows, Linux, Mac; Commercial).
● …
https://xdebug.org/docs/remote
33. Arquivo de configuração - xdebug.ini
zend_extension=xdebug.so
[xdebug]
xdebug.default_enable=on
xdebug.remote_autostart=on
OBS: TDD + PHPUnit também é importante!
34. Ações ao debugar
Set breakpoint
Step into
Step opver
Step return
Run to cursor
Resume
Terminate
35. Habilitando e desabilitando
Algumas IDEs necessitam de dar start e stop para iniciar o debugging, existem
extensões para diversos navegadores para fazer isto de forma prática. Caso não
queira extensões, há outras formas de iniciar e parar para algumas IDE (GET,
COOKIE) ou diretamente no arquivo ini
● Chrome
○ Xdebug helper
○ Xdebug enabler
● Firefox
○ easy Xdebug
○ The easiest Xdebug
● Safari
○ Xdebug toogler
36. Quero ver ao vivo!
Talk is cheap.
Show me the code.
- Linus Torvalds
#Show
M
eTheC
ode
38. Profiling
Profiler integrado do Xdebug que permite encontrar gargalos no script e
visualizá-los com uma ferramenta externa, como PHP Webgrind, MacAllGrind,
kcachegrind ou WinCacheGrind.