Congresso Internacional de Software Livre

Postado em Eventos, Open-Source por Felipe Tonello on the October 29th, 2007


Ajude a Combater o Spam! Clique aqui!

Galera, vai rolar em sampa o conisli(Congresso Internacional de Software Livre).
Do dia 9-11 de Setembro, num final de semana.

Muitas pessoas já confirmaram a presença como palestrantes e como congressistas.
Eu fui aceito como palestrante, sobre Tema de Zend Framework e PHP+AJAX. Vamos ver né? :)

Faça sua inscrição aqui!

Já preparei o documento do Zend Framework, agora do PHP+AJAX estou para começar.
E sem querer falar, mas está bem melhor do que do workshop de frameworks que participei. :P

Não perca esse grande evento!

Lista Brasileira de Equipamentos e Serviços Compatíveis com Linux

Tags: ,
Postado em Hardware, Linux, Software por Felipe Tonello on the October 14th, 2007


Ajude a Combater o Spam! Clique aqui!

Ajude a divulgar a lista brasileira de equipamentos e serviços compatíveis com Linux
…e concorra a MP4 e MP3 players, mochilas Targus, períodos de VoIP grátis e até a ventiladores USB - além de contribuir automaticamente para doações para a Wikipedia e o Wordpress! O BR-Linux coletou mais de 12.000 registros de compatibilidade de equipamentos e serviços (webcams, scanners, notebooks, …) na sua Pesquisa Nacional de Compatibilidade 2007, e agora convida a comunidade a ajudar a divulgar o resultado. Veja as regras da promoção no BR-Linux e ajude a divulgar - quanto mais divulgação, maior será a doação do BR-Linux à Wikipedia e ao Wordpress.

Google ajuda você a chegar nos USA

Postado em Diversos por Felipe Tonello on the October 12th, 2007


Ajude a Combater o Spam! Clique aqui!

Estou fazendo um projeto usando a API do Google Maps. E sem querer um amigo meu me passou uma ótima dica!

Como chegar de Belo Horizonte à Miami!

Saiba como chegar pelo google maps!

Use a barra lateral esquerda, e veja a dica de numero 43: Swim across the Atlantic Ocean 9,207 km

Google ajuda a chegar nos USA

:D :D
hauhahuauhauhauhuha ou traduzindo: Nade através do oceano atlântico 9,207 km

Cada vez mais o google me supera hehehehe

Desenvolver de graça? Não sou voluntario

Postado em Desenvolvimento WEB, Diversos por Felipe Tonello on the October 6th, 2007


Ajude a Combater o Spam! Clique aqui!

Primeira vez que participo de um meme, convidado pelo Cayo do yogodoshi.com/blog. Obrigado!

Você trabalha de graça? Depende, se for para uma instituição voluntária, se você estiver fazendo trabalho voluntário. Tudo bem.
Mas para por aí, né.

Posso dizer: nunca trabalhe de graça, até para amigo. A pessoa pode dizer ‘use de bom senso, quebra esse pra mim’? Que nada, no mundo dos negócios(chique né?!) você não deve dar tanto o braço a torcer.
Também não é para ser mercenário, seja honesto!

Mas se o cara for confiável e ele estiver zerado mesmo!?
Poxa, dê um crédito, mas não tanto!
Faça um pouco do trabalho, e peça uma porcentagem do orçamento total. Nem que seja 15%.

E lá vai aquela dica de sempre: “Tenha bom senso!

Um certo livro diz que temos de ser ‘cauteloso como a serpente, mas inocente como a pomba’.

E você, como lidaria nessa situação?

PS: Quem quiser participar do meme, só dar um toque.

Engatinhando com AJAX e PHP. Parte 3

Tags: ,
Postado em AJAX, PHP, Tutoriais por Felipe Tonello on the October 1st, 2007


Ajude a Combater o Spam! Clique aqui!

Depois de um bom tempo estou aqui novamente!

Eu recomendo todos que não viram as partes um e dois do tutorial, que as veja.
Engatinhando com AJAX e PHP. Parte 1
Engatinhando com AJAX e PHP. Parte 2

Nessa 3ª parte, vamos ver como usar Requisição POST.

Vamos para o que interessa!

Criando nosso formulário

Vamos criar um formulário normal.
index.htm

  1. <script src="../Ajax.js" type="text/javascript"></script>
  2. <script src="postAjax.js" type="text/javascript"></script>
  3. <form action="postAjax.php" onsubmit="enviaReq(); return false">
  4.  
  5. Entre com suas informações
  6.  
  7. Seu nome:
  8. <input name="nome" type="text" />
  9.     Sua Cidade:
  10. <input name="cidade" type="text" />
  11. <input value="OKA!" type="submit" />
  12. </form>

Aqui estamos linkando nossa biblioteca para criar nosso objeto XMLHttp. Caso você não esteja entendendo essa parte, recomendo você ler os dois primeiros artigos.

A unica coisa que é novidade, é o onSubmit alí. Quer dizer que quando o formulário for submetido, vai ser rodado uma função javascript ao invez de enviar diretamente o formulário. Depois é dado um return false para ter certeza que a página não dê refresh.

Requisição POST

A requisição post precisa ser enviada no formato, pelo cabeçalho http:
nome1=valor1&nome2=valor2&...&nomeN=valorN

para isso vamos criar a função que gere esse formato para nós.
Vamos chama-la de criaReqStr()

  1. function criaReqStr(oForm){
  2.     var aPostStr = new Array();
  3.  
  4.     for(var i = 0; i < oForm.elements.length; i++){
  5.         var sValor = encodeURIComponent(oForm.elements[i].name);
  6.         sValor += "=";
  7.         sValor += encodeURIComponent(oForm.elements[i].value);
  8.         aPostStr.push(sValor);
  9.     }
  10.     return aPostStr.join("&");
  11. }

Essa função está assumindo que lhe será informada o objeto do formulário, como argumento. Um array(aPostStr) é criado para guardar cada par de nome-valor. Depois, conforme o numero de elementos do formulário, é concatenado o par nome-valor à variável aPostStr. No final do loop, é retornado a informação dos pares nome-valor corretamente.

Você pode se perguntar: Porque usar esse join() no final sendo que eu posso concatenar tudo direto?
Realmente, seria o mais lógico. Mas cada concatenação, em web-browsers, é muito pesada para o processo, então quanto menos você concatenar melhor.

Fazendo a requisição

Para isso, vamos criar a função enviaReq(), que é bem parecida com a função para a requisição GET.

  1. function enviaReq(){
  2.     var oForm = document.forms[0];
  3.     var sBody = criaReqStr(oForm);
  4.  
  5.     var oXMLHttp = criaXMLHttp();
  6.     oXMLHttp.open("post", oForm.action, true);
  7.     oXMLHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  8.  
  9.     oXMLHttp.onreadystatechange = function (){
  10.         if(oXMLHttp.readyState == 4)
  11.             exibeResult(oXMLHttp.responseText);
  12.         else
  13.             exibeResult("Ocorreu um erro: " + oXMLHttp.statusText);
  14.     };
  15.     oXMLHttp.send(sBody);
  16. }

Primeiramente ela seta a referencia do form numa variável(oForm). Depois recebe a string dos pares nome-valor pela função criaReqStr(), lembram?
Em seguida é instanciado o objeto xmlhttp pela função criaXMLHttp().
Depois que está o “tchan” do negócio, no método open() o primeiro parâmetro é “post”, qual requisição queremos fazer. O segundo parâmetro é a página que iremos enviar a requisição, que no caso é o atributo action do formulário. O terceiro parâmetro é true em caso de querer que a requisição seja assíncrona.
Depois é setado um cabeçalho de que a informação está codificada(urlencode). Importante, porque a maioria das linguagens server-side verifica essa codificação para o parsing da informação

Depois é só exibir o resultado no nosso div#divStatus pela função exibeResult():

  1. function exibeResult(sTxt){
  2.     var divStatus = document.getElementById("divStatus");
  3.     divStatus.innerHTML = sTxt;
  4. }

Simples não?

Agora vamos para a parte mais fácil: O server-side.

Criando nosso arquivo PHP

Ele é super simples, muito igual ao no caso da requisição feita pelo método GET.
postAjax.php

  1. <?php
  2. header(‘Content-Type: text/plain’);
  3.  
  4. $sNome = $_POST[‘nome’];
  5. $sCidade = $_POST[‘cidade’];
  6.  
  7. $sStatus = ;
  8.  
  9. /* Exemplo com Banco de Dados MySQL */
  10. mysql_connect(’seu.servidor’, ‘usuario’, ’senha’);
  11. mysql_select_db(‘tabela.do.bd’);
  12.  
  13. if (mysql_query("INSERT INTO tabela VALUES (’$sNome’, ‘$sCidade’)"))
  14.     $sStatus = ‘Informação inserida corretamente do banco de dados.’;
  15. else
  16.     $sStatus = ‘Erro ao inserir informações no banco de dados’;
  17.  
  18. echo $sStatus;
  19. ?>

Você percebeu que mudamos o cabeçalho do arquivo para texto normal, usando a função header(). Depois só recebemos as variáveis pelo array global $_POST[].
Inserimos no banco de dados, e em caso de sucesso exibe a mensagem de sucesso. Em caso de erro(banco de dados com problema), exibe a mensagem de erro.

Baixando o tutorial

Para maior proveito do tutorial, baixe o tutorial agora:
post-ajax-php.zip
post-ajax-php.tar.gz

Nessa parte 3 fui bem mais direto ao ponto, agora que todo mundo já sabe o básico de AJAX com PHP né? hehehe

Mas é isso aí. Nas próximas versões do tutorial, vamos ver como fazer um validador de formulário conversando com banco de dados.