Twitter

@felipernb: RT @osuporte: Os Santos meteram 10 x 0 nos Navi. Será o fim precoce - antes de 2012 - de Pandora?

(Updated 10 hours, 1 minutes ago)

Workshop: Segurança e otimização de performance em Web Sites

Posted: March 5th, 2010 | Author: Felipe Ribeiro | Filed under: eventos, php | Tags: , , , | No Comments »

Olá pessoal,

Estarei no dia 13/03/2010 na Faculdade Marista em Recife-PE ministrando um workshop sobre segurança e otimização de performance em web sites.

Dentre os assuntos abordados destacam-se:

Segurança:

  • XSS (Cross site scripting)
  • SQL Injection
  • Code injection
  • XSRF (Cross site request forgery)
  • Session Hijacking
  • Directory traversal

Otimização de Performance:

  • Front-end
    • Ferramentas de auxílio a otimização (Firebug, YSlow, Page Speed)
    • Caching a nível de browser
    • Estruturação de arquivos ((X)HTML, CSS, JavaScript)
  • Back-end
    • Tuning do Apache e PHP
    • Tuning do MySQL (estruturação de tabelas, índices e engines)
    • Caching
    • Dicas de escalabilidade (configuração de servidores, BDs orientados a documentos,  etc)

O valor da inscrição é R$ 50,00 e pode ser feita no hotsite http://r8tecnologia.com.br/workshop/


PHPConference Brasil 2009

Posted: November 27th, 2009 | Author: Felipe Ribeiro | Filed under: eventos | Tags: , , | 1 Comment »

Ontem (26/11) e hoje (27/11) estive participando da PHPConference Brasil 2009 apresentando um mini-curso mão na massa e duas palestras.

O evento está muito bacana e em oportunidades como essa, mais do que simplesmente as palestras, se faz MUITOS contatos e pra mim foi bastante positivo.

Nas minhas palestras correu tudo mais ou menos bem e o feedback foi positivo, principalmente na de Rest (uma versão reformulada da que apresentei ano passado no CONAPHP).

Infelizmente, no auditório que apresentei a palestra de REST o projetor não se entendeu com o meu notebook, e dessa vez o slogan de “Just works” da Apple foi desmentido, então não tive como executar as demonstrações ao vivo com o CouchDB e API do Twitter (como sempre, Murphy é implacável) pois tive que apresentar com o PC fixo do auditório. Mas enfim, seguem os slides:


Slides da palestra – PHP 5.3 – O que há de novo?

Posted: October 31st, 2009 | Author: Felipe Ribeiro | Filed under: eventos | Tags: , , | 4 Comments »

Opa!

Hoje houve em João Pessoa-PB o terceiro encontro do grupo PHP-Paraíba.

Apresentei uma palestra sobre as novidades do PHP 5.3 e seguem abaixo os slides:

Percebi que muita gente ficou voando um pouco na palestra, e não sei se isso se deve ao nível da apresentação ou ao nível da plateia, portanto qualquer feedback é MUITO bem vindo!


Slides – Software livre e padrões abertos no desenvolvimento Web

Posted: September 19th, 2009 | Author: Felipe Ribeiro | Filed under: php | Tags: , , | No Comments »

Apresentei hoje na UFCG (no Software Freedom Day – Campina Grande) a palestra Software livre e padrões abertos no desenvolvimento Web, falando da importância dos padrões abertos e do PHP como solução livre para o desenvolvimento Web.

Seguem os slides:


Passado, presente e futuro do PHP

Posted: September 14th, 2009 | Author: Felipe Ribeiro | Filed under: php, video | Tags: , | No Comments »

Rasmus Lerdorf fala um pouco sobre a história, comunidade, features e o futuro do PHP


PHP não é coisa de moleque – FISL EDITION

Posted: June 29th, 2009 | Author: Felipe Ribeiro | Filed under: eventos, php | Tags: , , , | 5 Comments »

Olá pessoal,

Estou de volta depois de mais um FISL, o evento que é como a MECA dos nerds.

O evento no geral foi muito bom, tive a oportunidade de conhecer outras pessoas que fazem o PHP acontecer no Brasil no espaço destinado ao grupo PHP Brasil Comunidades que reune os representates dos grupos regionais (ou não) de usuários do PHP no Brasil.

PHPBC

No meu ver o único ponto negativo foi todo o tumulto que foi gerado pela visita do presidente que atrapalhou muito o andamento do evento devido às operações de segurança, como o isolamento da área dos stands.

Apresentei a palestra “PHP não é coisa de moleque” numa versão revista e ampliada da que já publiquei aqui no meu blog. Fiquei feliz com a repercussão, a sala lotada, a fila do lado de fora e o feedback das pessoas. Seguem os novos slides:


PHP Jedi – Boas práticas e alta performance

Posted: March 10th, 2009 | Author: Felipe Ribeiro | Filed under: eventos, php | Tags: , , , | 9 Comments »

O II Encontro PHP-PB foi um sucesso total! Mais de 300 participantes, muitas doações arrecadadas para a Casa da Criança com Câncer, muitos brindes e muita gente satisfeita! Estamos todos de parabéns.

Apresentei a palestra PHP Jedi – Boas práticas e alta performance:

Outros slides do evento estão disponíveis em: http://www.slideshare.net/tag/ii-encontro-php-pb e as fotos hein: http://www.flickr.com/photos/tags/iiencontrophppb


II Encontro PHP-PB

Posted: February 18th, 2009 | Author: Felipe Ribeiro | Filed under: eventos, php | Tags: , | No Comments »

Até parece que foi ontem que tivemos o primeiro encontro do grupo, mas fez tanto sucesso que o pessoal não aguentou esperar muito para realizar o II Encontro de desenvolvedores PHP da Paraíba. Nesse momento em que estou postando já chegamos a marca de 280 inscritos!

As palestras abordam temas como: Wordpress, Moodle, Certificação Zend, Boas práticas, Cloud computing entre outros…

Para mais detalhes e inscrições, visite: www.php-pb.net


Zend Certified Engineer

Posted: January 29th, 2009 | Author: Felipe Ribeiro | Filed under: php | Tags: , | 11 Comments »

ZCE logo

Finalmente fiz a famigerada prova! Não sei se tem algum real valor no mercado, mas de qualquer maneira fiz também como um desafio pessoal.

Aproveitando as férias de Janeiro, fui até Hellcife (o test center mais próximo fica lá O.o) fazer a prova de ZCE. Vou fazer aqui alguns comentários para tentar ajudar, dentro do possível, futuros candidatos. Para fazer a prova é necessário aceitar um NDA, então não posso divulgar trechos da prova, correndo risco até de punição judicial. Mas vou tentar dar algumas dicas mais gerais.

Eu fui fazer a prova bastante tranquilo, pois antes de chegar lá fiz 4 simulados e no último tive EXCELLENT em todos os tópicos. Porém, não sei se por azar meu, ou pelo nervosismo na hora, as questões reais vieram mais difíceis do que as que eu já tinha feito.

A prova tem 70 questões e você tem 90 minutos para responder, dentre essas questões existem as que são de múltipla escolha, onde você seleciona uma ou mais alternativas corretas (dependendo da questão, algumas você marca um “radio”, noutras “checkbox”) e outras onde você precisa realmente escrever a resposta (nome de função, nome de padrão de projeto ou output de um script mostrado).

Eu acabei e revisei tudo faltando 5 minutos para estourar o limite de tempo, e tremi feito vara verde para clicar no botão “Finish Exam” (ou algo equivalente), e prendi a respiração (todo cagado) enquanto a ampulheta rodava e o sistema processava o resultado.

O nível da prova é algo entre razoável e difícil, não requer conhecimentos Jedi obscuros, mas também não é colher de chá para quem está começando. Requer estudo não só do Study Guide, mas também do manual oficial do PHP e MUITA vivência com a linguagem, pois tem MUITAS pegadinhas.

Fazer os simulados ajuda muito, pois mostra o estilo das perguntas e te direciona para alguns tópicos que são importantes para serem estudados, já que existem coisas que não fazem parte do dia-a-dia de muita gente. Eu por exemplo nunca tinha mexido com sockets nem ido mais profundamente nos stream wrappers do PHP, e depois de levar pau em Streams And Network Programing no simulado, estudei e fiquei craque :-)

Uma das coisas que eu acho mais crítica não só nessa prova, mas no dia-a-dia do programador PHP, é a falta de padronização no nome das funções. Você se confunde quando tem e quando não tem underscore, quando o nome é escrito de maneira completa ou abreviada, e a ordem do needle e do haystack (Graças a Deus não caiu isso de ordem de parâmetros na prova).

Se você pretende fazer a prova, recomendo que mesmo com a prática do dia-a-dia, estude principalmente as coisas que teoricamente são simples, mas que dão muito pano pra manga:

String, Arrays (e a imensidão de funções que existem para se manipular esses dois tipos) as características de uma aplicação Web, como gerenciamento de cookies e sessões. São coisas simples mas existem muitas funções disponíveis e algumas ambiguidades. E que tenha nervos de aço para estar atento às pegadinhas.

Mas enfim tudo deu certo e agora sou ZCE :-D .


Caching em PHP com uma técnica “obscura” mas muito eficiente

Posted: December 25th, 2008 | Author: Felipe Ribeiro | Filed under: apache, php, web 2.0 | Tags: , , | 14 Comments »

Caching é fundamental para a escalabilidade de aplicações Web. Existem diversas ferramentas que oferecem diferentes maneiras de se fazer isso, seja no Smarty, no APC, nos diversos frameworks, ou Memcached para os mais drásticos…

Mas essa é a “maneira Rasmus Lerdorf” de se fazer cache com PHP sem nenhuma ferramenta externa e com uma sacada fenomenal.

Para um servidor Web é muito mais rápido servir arquivos estáticos do que esperar que aquele arquivo seja interpretado por algum módulo ou que seja executado em CGI e é isso que esse método faz, gera arquivos estáticos sob demanda, utilizando os recursos que o Apache oferece.

Agora imagine que você tem um site de notícias e quer que elas sejam tratadas como arquivos estáticos, e os links para cada notícia seria algo como:

http://meusite.com.br/noticias/000001.html

1º passo: Setamos nas configurações do Apache para que a página de erro 404 seja um arquivo .php (isso pode ser feito no .htaccess da pasta ou nas configurações do Apache propriamente dito). No caso do .htaccess, basta colocar isso:


ErrorDocument 404 /noticias/gera_cache.php

2º passo: Criamos o arquivo gera_cache.php, que irá tratar as requisições que teriam como resposta o erro 404 (Not Found) com o seguinte codigo:


<?php
    $id = basename($_SERVER['REDIRECT_URL'], '.html');

    /* Acessa a página dinâmica */
    $html = file_get_contents(sprintf("http://meusite.com.br/noticias.php?id=%d",$id));
    /* O ideal é fazer algum tratamento de erros, para evitar a
     criação de arquivos para ids inválidos */

    /* Exibe o conteúdo */
    header(sprintf('%s 200', $_SERVER['SERVER_PROTOCOL']));
    echo $html;

    /* Salva o conteúdo em um arquivo .html */
    $fp = fopen(sprintf(dirname(__FILE__)."/%d.html", $id), "w");
    fputs($fp, $html);
    fclose($fp);
?>

Sendo assim, o que vai acontecer:

Quando o usuário acessar pela primeira vez o link http://meusite.com.br/noticias/000001.html, o arquivo /noticias/000001.html não existirá e o usuário será redirecionado para o gera_cache.php. O gera_cache.php acessa a página dinâmica que exibe o conteúdo da página com o id passado (000001) e salva em um html. Nos acessos consecutivos ao http://meusite.com.br/noticias/000001.html o arquivo existirá e não passará mais pelo PHP.

É uma técnica bem “tricky” e que precisa de cuidados, por exemplo, você precisa ter uma rotina que expira os arquivos em cache após algum tempo e quando houver alguma alteração em determinada informação que interfere na página que está em cache, para garantir consistência dos dados. Uma maneira muito simples de se fazer isso é usando a função filectime do PHP para checar a idade dos arquivos em uma rotina que rodaria em background e apagaria os que fossem mais velhos que o tempo desejado. Mas funciona muito bem!

P.S.: Um artigo que li dizia que apesar dessa técnica ter se tornado pública através do Rasmus, ela foi criada mesmo pelo Stig Bakken