Arquivo da categoria 'desenvolvimento'

CodeIgniter em PHP5 ou PHP4?

Recentemente tem havido bastante discussão[bb] sobre o por que de o CodeIgniter não partir apenas para o PHP5, mas não entendo isso, já que um dos grandes motivos que me levou a ter interesse por esse framework[bb] foi por ele suportar o PHP4. Entendo e concordo que o PHP5 é muito superior, poder trabalhar apenas com OO é muito melhor, mas existem dois grandes problemas que travam a adoção ao PHP5.

Quem nunca teve que fazer um site pra hospedar num servidor com PHP4 e MySQL 3.23? (E olha que uma das maiores empresas de hospedagem[bb] do Brasil tem uma configuração parecida com essa! Qual é a sua?) Por mais que os desenvolvedores do PHP[bb] façam campanha de adoção do PHP5, que o PHPmyAdmin prometa que as próximas versões apenas serão pra PHP5, isso NÃO vai mudar. As hospedagens ainda são PHP4 e adoção ao PHP5 é lenta (cerca de 1% ao mês).

Outro fator é que infelizmente a maioria dos desenvolvedores são medíocres. Não estão nem um pouco preocupados com MVC, OO, padrões web[bb] e tudo mais. E isso acaba influenciando as hospedagens, que tem medo de quebrar os códigos de seus clientes. Não que eu me considere um grande programador, mas isso é o que todos tinham que ter como base (ou pelo menos vontade de aprender).

Voltando ao CodeIgniter, o Derek Allard, um dos desenvolvedores do CodeIgniter, já disse que o PHP4 será suportado por bastante tempo ainda, justamente por isso. Não adianta querermos impor algo, quando não temos meios para forçar.

Não quero de maneira nenhuma defender os hosts que não fazem upgrades, muito menos a "sobrinhada", mas acho que as vezes esquecemos que vivemos em mundo que não é perfeito, que por mais que queiramos que as coisas sejam ótimas, elas apenas podem ser tão boas quanto possível.

O Framework CodeIgniter

O que um framework tem que fazer? Sério, copiar o Rails?

Tudo bem que seja um om espelho, mas não pode ser feito com fé cega, acreditando que o que o rails faz é o que há de melhor pra se fazer. Não que RoR seja ruim, muito pelo contrário, mas existem vários frameworks imitando-o sem pensar um pouco.

Eu programo em PHP para viver, poderia mudar já que sou eu quem define isso, mas ainda só estou testando outras linguagens para a web. Recentemente resolvi que iria usar um framework para desenvolver, pleos motivos que todo mundo sabe: utilização de MVC, programação mais rápida, etc.

Cheguei a testar o CakePHP, mas não gostei dele pois ele te faz trabalhar como ele quer, não como o programador quer. Bati cabeça com mais alguns e resolvi que montaria meu próprio framework. Programa, programa, programa... Ainda falta muito pela frente...

Logo do CodeIgniterAté que parei e conheci o CodeIgniter. Achei muito bom, é um framework legal e que me dava a liberdade que eu não tinha com o Cake.

Este framework, apesar de ter sido baseado no Rails, não o segue cegamente e dá um liberdade muito grande pra trabalhar do jeito que o programador quiser. Claro que ele tem uma padronização, mas a liberdade vem em você usar as ferramentas que são fornecidas muito facilmente.

Se você quer saber mais sobre o CodeIgniter, sugiro que veja os screencasts do Elliot Haughin, que foi o que me fez ver o que o CodeIgniter podia fazer; leia o blog do Derek Allard, que é um dos desenvolvedores do Framework; e LEIA O MANUAL. Em português, a comunidade ainda está se formando, mas já existe o site codeigniter.com.br, lá se encontra o manual traduzido, um fórum (que atualmente está fora do ar) e a lista de discussão.

Aguardem alguns artigos aqui sobre esse tema.

Utilizando ferramentas e não muletas

Você já se viu sem martelo[bb] quando precisava pregar algo? E teve que usar uma chave de fenda ao contrário pra fazer isso? Funciona, mas é mais demorado e não é tão simples quanto usar o martelo.

MuletaDigo isso, pois freqüentemente nas listas que participo acontecem discussões inflamadas sobre usar ou não usar algo, como IDEs, frameworks[bb], etc. Claro que por um lado isso é bom, pois toda unanimidade é burra, porém essa discussão sempre acaba no "usa o teu e te ferra que eu uso o meu e fico na boa". E a outra pessoa responde a mesma coisa.

O problema é que hoje temos que ser agis e ao mesmo tempo fazer um serviço de qualidade. E isso as vezes parece não ser levado em contra por aqueles que querem usar as ferramentas mais simples. E aí se encaixa a história do martelo lá de cima.

Você pode programar um site[bb] grande usando o Vi, mas renderá mais usando uma IDE que te auxilie.

Mas aí entra o grande detalhe: Você tem que saber se virar sem a IDE, pois um belo dia o site pode estar fora do ar e você não poder usar sua magnífica IDE para resolver o problema. E nessa hora você tem que se virar com o que tem. Nem que seja com notepad.

Outro exemplo é javascript, existem várias bibliotecas que facilitam a vida, mas na hora que algo tem que ser feito sem ela, você tem que saber usar javascript "nativo".

O importante é que as ferramentas[bb] nos ajudem a fazer o serviço bem feito e rápido. E não que sirvam como muletas, e que sem elas não consigamos sair do lugar.

Crédito da Foto: Daquela manera

Enviando vários arquivos sem exibir input file

Dia 06/07/2007 na lista Webstandards-br foi questionado como o gmail fazia, para que sem o input file, fosse enviado arquivo. Porém isso só acontecia no IE, no Firefox era um input normal.O pessoal deu uma olhada no código e concluiu que no IE funcionava algo como:

JavaScript:
  1. document.getElementById('InputFile').click();

Porém no Firefox isso não funciona. Não querendo entrar no mérito de qual navegador está certo, pensei em um modo de driblar isso e o resultando acabou resultando neste artigo.

Como fazer

Minha idéia para contornar isso é utilizar um input que fique transparente e colocar uma imagem no fundo do elemento onde esse input está! Veja que não podemos esconder o input, pois ele precisa ser clicado, mas sem que o usuário perceba. Então vamos ao HTML básico:

HTML:
  1. <form method="post" enctype="multipart/form-data" id="UploadForm">
  2. <p id="uploadButton"> <input id="inputFile" name="inputFile" size="1" type="file" /></p>
  3.  
  4. </form>

Temos um div chamado uploadButton, que conterá a imagem de fundo e o input que fará a coisa acontecer.

Adicionamos um pouco de CSS:

CSS:
  1. #inputFile {
  2.   float: right;
  3.   opacity: 0;
  4.   filter: alpha(opacity=0);
  5. }
  6. #uploadButton {
  7.   width:88px;
  8.   height:20px;
  9.   background:url("adicionar.jpg") no-repeat;
  10.   float:left;
  11.   margin: 0 20px 0 0;
  12. }
  13. #files {
  14.   clear:both;
  15. }

Veja que no #inputFile definimos opacity, para funciona no Firefox e um filter para ficar transparente no IE. O #files veremos pra que serve daqui a pouco.

Fazendo a mágica acontecer com javascript

Utilizei a jQuery por pura comodidade, mas poderia facilmente ser feito na mão. Na verdade para enviar um arquivo precisariamos do javascript apenas para exibir o nome do arquivo em algum lugar. Mas como queremos fazer o upload de vários arquivos:

JavaScript:
  1. var InputCount=1;
  2. $(function() {
  3. $("#UploadForm").append("&lt;ul id='files'&gt;&lt;/ul&gt;");
  4. $("#inputFile").change( function() { newFile(); } );
  5. });
  6. function newFile() {
  7. $("#files").append("&lt;li&gt;" + $("#inputFile").val() + "&lt;/li&gt;");
  8. $("#inputFile").hide();
  9. $("#inputFile").clone().appendTo("#uploadButton");
  10. $("#inputFile").attr("id", "inputFile" + InputCount);
  11. $("#inputFile" + InputCount).attr("name", "inputFile" + InputCount);
  12. InputCount++;
  13. $("#inputFile").change( function() { newFile(); } );
  14. $("#inputFile").val("");
  15. $("#inputFile").show();
  16. }

Para ver tudo funcionando acesse o exemplo.
Para finalizar ainda seria necessário adicionar um botão de submit e tratar o retorno no servidor. Porém isso não será tratado aqui!

Após escrever todo o exemplo e o artigo, resolvi testar no IE6 (o que devia ter sido feito antes) e percebi que não funcionava o filtro da opacidade, apesar de tudo dar certo no IE 5 e no IE 7. Estou com o tempo curto e se você descobrir como resolver, poste um comentário.

Usando RSS de forma errada

O RSS não é uma tecnologia tão nova, mas sua utilização ainda não é difundida entre as pessoas normais, em parte isso é culpa dos desenvolvedores.

Hoje, ao olhar a previsão do tempo no Tempo Agora, percebi que havia um item no menu chamada Conteúdo RSS, mas esse item levava até uma área do site onde você poderia selecionar o feed e configurá-lo.

Onde fica a integreção? Já fiz a pesquisa pra ver o tempo aqui em Teutônia, agora teria que fazê-la novamente? Seria muito mais fácil ter um botão na tela da cidade. Pois é muito mais lógico, eu pesquisar primeiro e depois assinar o feed.

Não estou tirando o Tempo Agora pra cristo, mas, com excessão dos blogs, isso é regra na internet. RSS é só outra forma de ver o mesmo conteúdo, portanto deve ser facilitado o acesso.

Pra quê gerenciar a informação?

Como é comum as pessoas terem os dados, mas não extrairem informação deles.

Segunda fui fazer a transferência do carro que comprei (um Uno 97), e tive que ir ao tabelionato pegar um Declaração de Residência.

A atendente me pediu o RG e abriu uma gaveta de um arquivo com um monte de cartões. Fiquei observando e ela me trouxe um deles com os meus dados. Depois pediu pra mim assinar uma folha com diversos espaços em branco que seria preenchidos à máquina depois.

Continue lendo »

jQuery - Módulo Ajax

Se você não sabe como a jQuery funciona, já falei sobre ela em outros artigos. Não deixe de ler.

Como não poderia deixar de ser, o módulo ajax é extremamente simples e contempla tudo que é necessário para uma requisição assíncrona. Existem diversas funções para fazer o HTTP request, mas a que eu uso normalmente é a $.ajax, que por ser a implementação de mais baixo nível, é a mais flexível.

Continue lendo »

Lançada a jQuery 1.1a

Hoje foi lançada a versão alpha da jQuery 1.1. A versão final está agendada para 14 de janeiro, data do 1° aniversário da jQuery.

Lista de melhorias:

  • Os seletores ficaram 10-20x mais rápidos em comparação com a versão 10.4
  • A documentação foi revista.
  • Redução da API de 47%
  • Correção de bugs

Baixar a versão sem compressão. Utilize apenas para teste.

Mais informações no blog da jQuery.