Archive for maio, 2009


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.

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.

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.

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.

  1. 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

  2. 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

  3. No arquivo de configuração do Apache (httpd.conf) remova o comentário da linha:

    # Virtual hosts
    Include conf/extra/httpd-vhosts.conf

  4. 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>

  5. Reinicie o Apache.

“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.

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.

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.

www.jodix.com

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.