Arquivo de Maio de 2009
XDebug e KCacheGrind para análise de desempenho
XDebug é um pacote de debug e análise para PHP, provendo informações úteis como uso de memória, rastreamento de funções e pilhas, e desempenho.
KCacheGrind é um aplicativo para análise de dados de desempenho como os gerados pelo XDebug. Tem vários recursos gráficos para visulizar a execução do programa sendo analisado e os recursos utilizados por cada unidade deste programa.
O XDebug não deve ser instalado em máquinas de produção pois causa uma carga extra em função de suas análises. A instalação dos pacotes em distribuições baseadas em Debian (Debian/Ubuntu/XUbuntu) se dá pelo comando:
apt-get php5-xdebug kcachegrind graphviz
A análise de desempenho (profiler) deve ser adicionada ao seu php.ini (em /etc/php5/apache2/php.ini). O valor 1 liga a análise, 0 desliga a análise.
xdebug.profiler_enable = 1
Após a alteração, reinicie o Apache.
/etc/init.d/apache2 restart
A cada execução, o XDebug criará um arquivo em /tmp com os dados da análise de desempenho. O nome do arquivo será parecido com
cachegrind.out.*
onde * é o número do processo apache que deu origem a esta análise. É um arquivo de texto puro.
Aqui entra o KCacheGrind. Abra o arquivo cachegrind.out.* e veja onde seu script está gastando mais tempo. Otimize primeiro o que está gastando mais tempo. A unidade de tempo do KCacheGrind é simplesmente uma unidade de tempo e não o tempo de execução em milisegundos.
Como otimizar? Isso fica pra outro post.
Maiores informações:
http://kcachegrind.sourceforge.net/html/Home.html
http://www.xdebug.org/
ou deixe um comentário.
Fluxo PHP e MySQL versão 1.0a1
O Fluxo PHP é uma aplicação web que estamos desenvolvendo desde o início do ano de 2009 paralelamente a outros projetos.
Já está sendo utilizado por um de nossos clientes.
Possui um sistema simplificado de registro de entidades (PF e PJ), contas a pagar e receber e relatório de fluxo de caixa, além de uma tela de acesso rápido com informações financeiras da empresa.
A partir de agora passamos a chamar a versão de desenvolvimento de 1.0 alfa 1 (1.0a1).
Nesta última versão realizamos algumas mudanças maiores como:
- Telas da aplicação foram incluídas em um único arquivo HTML
- Navegação bloqueada enquanto carregamentos não são finalizados para não confundir o usuário
- Janela de edição de entidades e contas agora pode ser movida
- Simplificação do arquivo de login
Mais notícias em breve.
Sem comentários »Problema com variável de sessão no Internet Explorer 7
Aparentemente o IE 7 tem um problema que impede que cookies/variáveis de sessão sejam lidos em certas circunstâncias.
Ocorre quanto utilizamos o localhost como servidor web e o nome do subdomínio tem um caracter sublinhado (underscore), por exemplo:
http://teste_bug.localhost
Neste caso, basta reconfigurar o servidor removendo o sublinhado do nome do subdomínio para que as variáveis de sessão funcionem.
Ainda não sei se o Internet Explorer 8 corrige este problema.
Este problema não afeta o Firefox e Chrome.
3 comentários »Virtual Hosts no Apache 2.2 sem erro 403
As vezes é mais fácil procurar na internet a resposta para um problema que temos do que procurar no manual, por mais simples que o problema possa ser.
Vamos lá, este é simples…
Para que você possa desenvolver e testar vários sites diferentes na mesma máquina você pode configurar Virtual Hosts no Apache 2.2.
Siga os passos abaixo, considerando que você utiliza Windows.
- Configure seu arquivo HOSTS do Windows para responder por outros hosts além do localhost. Para isso edite o arquivo HOSTS que no Windows Vista está em:
C:\Windows\System32\drivers\etc - Acrescente linhas referentes ao seus subdomínios por exemplo:
#configuração original
127.0.0.1 localhost
::1 localhost#linhas adicionadas
127.0.0.1 teste.localhost
127.0.0.1 cliente1.localhost
- No arquivo de configuração do Apache (httpd.conf) remova o comentário da linha:
# Virtual hosts
Include conf/extra/httpd-vhosts.conf - No arquivo httpd-vhosts.conf, adicione um grupo de linhas de configuração para cada novo subdomínio como o exemplo:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "D:/Projetos/teste"
ServerName teste.localhost
ErrorLog "logs/teste-error.log"
CustomLog "logs/teste-access.log" common
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
- Reinicie o Apache.
Desempenho: estamos indo pro lado errado?
“Quero voltar a programar em C++”, disse-me o admin.
Mas a nossa realidade é serviços Web. Para web, no que diz respeito a desempenho, temos PHP e Python. Grandes comedores de memória quando se trata de desempenho, ou uso excessivo de cache.
Memória hoje é barata. Potência em servidores também. E também temos clouds. E para ter sucesso financeiro no desenvolvimento Web é preciso conseguir finalizar projetos rapidamente. O uso de PHP, Python ou outra linguagem de alto nível, por si só, não identifica de forma alguma que o projeto será de rápido desenvolvimento ou que sua manutenibilidade será boa.
O rápido desenvolvimento só é possível com uma análise bem feita do projeto em si, e este passo envolve o levantamento dos requisitos junto ao cliente e o planejamento do sistema em si. A manutenibilidade é quase que um produto disso, sendo conquistada com a união dos requisitos bem definidos, um bom planejamento, e por fim e com um controle rígido dos programadores para que sigam o Manual de Estilo e Qualidade da empresa.
A web não passa de texto entra (uma requisição pro servidor Web) e texto sai (uma resposta do mesmo servidor Web). Todo o resto é firula que interpreta o texto que entra e organiza o texto que sai. Ao ler um endereco como http://www.id8games.com/, tudo o que o servidor Web tem que fazer é ir buscar naquilo que ele foi programado o texto adequado de resposta. É imprescindível que a resposta seja entregue rapidamente, pois um bom site é sempre um site rápido - uma página que leva 8s pra carregar já perde 30% de internautas impacientes.
Ora, a geração deste texto pode ser feita de qualquer forma. Pode ser um texto estático, pode ser um script PHP lendo algo de um banco de dados. Então o que impede de ser C++? C++ oferece OOP, conexão com banco de dados, conexão com Apache, linguagem sólida com um monte de desenvolvedores sérios espalhados no mundo, livros e wikis e foruns e cursos etc. Será tão penoso gastar 5s compilando seu código? Lembre-se que pelos mesmos US$89 que você paga no seu dedicado você vai conseguir colocar 5x mais clientes.
E brincando aqui, apesar de trabalhar cerca de 40 horas por semana em PHP, pude ver que C++ é apenas um pequeno pulo. Aqui tem outros caras que tem brincado com C++ pra Web.
4 comentários »Subversion e qualidade de software
Subversion é um sistema de controle de versões. Parecido com o seu sucessor predecessor CVS, permite que você e outros controle controlem cada alteração realizada em um projeto, analiseanalisem o histórico dessas alterações, os responsáveis por cada alteração, etc.
Este link mostra como instalar e usar Subversion no Ubuntu Gutsy Gibbon. Na verdade, em qualquer distro baseada em Debian o processo será bem parecido.
3 comentários »Conversores MP3
No site Jodix, podemos encontrar diversas ferramentas para conversão de arquivos para o formato MP3.
Uma delas converte arquivos de áudio do formato nativo do Windows, WMA para MP3 que é o formato mais utilizado em tocadores de carro e celular.
As ferramentas são freeware.
Sem comentários »Synergy - compartilhe teclado, mouse e área de transferência via rede
Synergy permite que você compartilhe um único teclado/mouse entre múltiplos computadores com diferentes sistemas operacionais. Cada computador deve ter seu próprio monitor, mas nenhum outro hardware é necessário (famosos KVM). Foi criado para usuários com vários computadores na mesa.
Ir de um computador para outro é uma questão de arrastar o mouse para fora da tela. A área de transferência vai junto. Funciona em Windows, Mac, FreeBSD e Linux.
Para configurar, um dos computadores, aquele que tem o teclado e mouse conectados, deverá ser o servidor. Os outros computadores são clientes. O tráfego na rede é pequeno. Nesta foto, Synergy em 3 computadores. A produtividade teve um aumento considerável por usar múltiplos computadores e monitores.
Quer saber como configurar o Synergy em menos de 1min? Versão Linux, claro. Deixe uma mensagem. 2 comentários »
