19/05/2009

Calculo de idade via MySql

Hoje me deparei com um pequeno problema: no sistema que estou desenvolvendo precisava realizar uma busca no banco de dados e retornar os cadastros cuja idade fossem maior ou igual a 60 anos. O problema é que não poderia inventar um campo pra inserir a idade, afinal de contas todos nós envelhecemos e no ano seguinte sempre temos um ano a mais, então o campo idade estava descartado, pois ele retornaria dados incorretos ano que vem.

A solução encontrada foi calcular a idade direto no MySql, como? Simples (aliás, nem tão simples assim!):

Primeiro, selecionei a chave primária do registro, data de nascimento e endereço:

SELECT id_cad, nome, nascimento, endereco,

Agora devo calcular a idade do sujeito:


(YEAR(CURDATE()) - RIGHT(nascimento, 4)) - (DATE_FORMAT(CURDATE(), '%e/%m')<LEFT(nascimento, 5)) AS idade

Onde YEAR(CURDATE() pega o ano atual, RIGHT(nascimento, 4) pega os 4 últimos dígitos da data salva no banco, porque? Porque estou usando o formato dd/mm/yyyy pra salvar as datas de nascimento! Fica mais simples exibir estas datas lá no PHP, preferi ter o trabalho pesado aqui no Mysql!

DATE_FORMAT(CURDATE(), '%e/%m') formata o dia e mês atuais para dd/mm, LEFT(nascimento, 5) pega do banco o dia e mês no formato dd/mm.

Analizando a linha toda: estou pegando o ano atual, subtraindo o ano de nascimento do cadastro, a comparação (DATE_FORMAT(CURDATE(), '%e/%m')<LEFT(nascimento, 5) me retorna 1 ou 0 e ajusta a diferença da idade um ano abaixo, caso o cidadão ainda não tenha feito aniversário!



Aqui eu seleciono o banco:
FROM cadhab_dpessoais

E aqui eu filtro os registros conforme a idade, e tudo isso sem ter que usar um campo "idade" na tabela, o que seria meio difícil de atualizar, afinal todo ano nossa idade muda!

WHERE (YEAR(CURDATE()) - RIGHT(nascimento, 4)) >= 20

Agora tudo junto:


SELECT id_cad, nome, nascimento, endereco, (YEAR(CURDATE()) - RIGHT(nascimento, 4)) - (DATE_FORMAT(CURDATE(), '%e/%m')<LEFT(nascimento, 5)) AS idade

FROM cadhab_dpessoais

WHERE (YEAR(CURDATE()) - RIGHT(nascimento, 4)) >= 60

Legal né? Até a próxima!

06/04/2009

Cross-server data access ou proxy-php ou gambi mesmo!

Tá legal, sei que to há algum tempo sem postar nada aqui. Meu parceiro de blog me abandonou e to até o pescoço com trabalhos por finalizar. Se alguma alma caridosa tiver interesse em postar alguma coisa só avisar, o blog está aceitando novos blogers!

Bom, estou aqui hoje porque semana passada me deparei com um problema interessante: tinha que por o widget do Clima Tempo no topo em Flash de um site que estou desenvolvendo.

Normalmente, é só pegar o código gerado automaticamente no site do clima tempo e por no site, mas... as coisas não eram tão simples assim, vejamos:

O topo do site é em flash e o clima tempo tinha que ficar lá, numa faixa de menos de 50px de altura! Olha o bixo aí:

topo site pmu

O widget do clima tempo é beem maior que o espaço que eu tinha disponível. Esse problema eu resolvi fazendo o meu próprio widget do Clima Tempo, devidamente adaptado pro espaço que eu tinha disponível. Depois de pronto, ele funciobava incrivelmente bem na minha máquina.

Ao por o dito-cujo no ar descobri que ele simplesmente se recusava a se comunicar com o site do clima tempo. Descobri que o Flash tem umas características de segurança que o impedem de fazer tal coisa.

Busquei no tio Google uma suposta solução que habilitariam o flash a fazer o seu trabalho:

System.security.loadPolicyFile("http://selos.climatempo.com.br/crossdomain.xml");
System.security.allowDomain("*");
System.security.allowInsecureDomain("*");
System.security.allowDomain("http://selos.climatempo.com.br/");
System.security.allowInsecureDomain("http://selos.climatempo.com.br/");

Porém a tal medida não surtiu efeito, o flash se negava a conversar com o ClimaTempo a partir do servidor.

Foi então que resolvi apelar pra ignorância, usei um proxy-php, funçãozinha simples que faz o trabalho pro preguiçoso do Flash:

$dataURL = "http://www.seusite/arquivo.xml";
//este esquema não segue redirecionamentos. O xml pode dar lugar pra um php também
readfile($dataURL);

O que o código php aí em cima faz é ler a urll informada como se fosse um arquivo, isso graças ao comando readfile, a partir daí é só usar este arquivo como fonte xml do teu flash como se fosse um xml qualquer.

Desculpem, mas o código que envolve a criação do widget ClimaTempo não me pertence e não tenho permissão de divulga-lo aqui, então por enquanto não poderei dizer como eu fiz meu widget ClimaTempo personalizado.


02/03/2009

Warning: Cannot modify header information

Tá recebendo esse erro maldito dos teus scripts PHP? Bom, eu andei recebendo isso de alguns aqui.

Se você é usuário Mac ou usa o Dreamweaver, a solução pode ser esta aqui:
Vá nas preferências do DW >> New Document e desative a opção "Include Unicode Signature (BOM)". Passei quase duas semanas quebrando a cabeça com esse erro só por causa dessa bendita opção. Tá dada a dica.

13/02/2009

Não sabe o que é? Então não delete!

Estas são palavras mágicas que merecem crédito quando estamos limpando os nossos queridos discos rígidos.

Desgraça pouca é bobagem e tendem a vir em sequência, há alguns dias atrás resolvi que precisava de mais espaço no hd e que certos arquivos poderiam ser "demitidos". Nisso encontrei dentro da pasta do Sistema alguns métodos de entrada, olhei e pensei: "quem precisa de koreano, kotoeri e outros bixos aqui? Tenho o layout US Internacional funcionando, apagar isso não deve dar problemas!", e lá fui eu apagar aqueles trecos pra ganhar cerca de 52mb de espaço no hd.

Após apagar percebi uma certa teimosia do teclado, funcionava em alguns programas, noutros não. Imaginei que seriam os arquivos deletados que ainda estariam carregados na memória ou coisa parecida. Tive a brilhante idéia de reiniciar a máquina e pra minha total surpresa o teclado simplesmente não funcionava mais! E agora? Com tanto serviço por fazer e eu sem teclado.


mac's imput methods

Felizmente tenho backup do HD inteiro e poderia voltar com os arquivos deletados via Time Machine, mas pra usar o Time Machine eu precisaria digitar a minha pequena senha de 14 dígitos! Como eu disse, desgraça pouca é bobagem e elas vêm em sequência! Parei, pensei, não podia formatar a máquina, eu gastaria pelo menos 2 dias pra por tudo em ordem novamente. Um cliente liga e pergunta pelo trabalho dele, me pede pra ir lá depois do almoço! Como apresentar um trabalho sem trabalho? Lembrei que no DVD de instalação do sistema há uma ferramenta pra resetar a senha, oba! Cadê o meu case de cd's? Enfiei o DVD no note e mandei ver, ao iniciar ele pede uma senha do Open Firmware (ela não pode ser apagada como as de Bios de pc), felizmente aqui o teclado respondeu, parece que o azar está passando, alguns minutos depois estou diante da tela de instalação do sistema com a tal ferramenta e reseto a senha. Mais meia hora pra reiniciar o sistema, entrar na minha conta, voltar com os arquivos e reiniciar de novo! Respirei fundo e testei o teclado, funcionava de novo, ufa! Tanto sofrimento por nada.

O relato acima é verídico, aconteceu comigo há algumas semanas atrás e ilustra muito bem o que pode acontecer quando resolvemos apagar arquivos que simplesmente não sabemos pra que servem ou imaginamos não servirem pra nada. Muitos usuários julgam os arquivos simplesmente pelo nome e pensam que um arquivo chamado "mach_Kernel", sem ícone ou sozinhos numa pasta não farão falta alguma. Pense bem nisso antes de apagar algum arquivo daqui pra frente.

Para manter o sistema saudável, seja ele Windows, Linux ou Mac, sempre devemos deixar algum espaço sobrando no HDD, Sistemas usam arquivos de troca, caches e outros bixos que crescem à medida que você usa o computador, se não há espaço pra eles a vaca pode ir pro brejo.

Uma dica bem básica é manter sempre de 10 a 20% de espaço livre no HD, pra fazer isso seguem algumas dicas: guarde os downloads em CD's, aqueles jogos que você baixou pros sobrinhos bem que poderiam ir parar num DVD ou na lixeira (e esta deve ser esvaziada com certa frequência), pra que guardar um filme que você já assistiu? Se gosta tante dele compre o DVD. Aquele CD daquele artista que você nem curte mas tinha por causa da ex-namorada que te trocou por um rato de praia só estão te causando dor de cabeça (no bom sentido!) e ocupando espaço precioso. Slides do PowerPoint bonitinhos e engraçados são até legais na hora, mas depois perdem a graça e guardar uma piada de 5mb não tem graça nenhuma.

Revize seus arquivos com alguma frequência e livre-se do que não é útil, não vá protelando a faxina, isso é sinal de preguiça e só piora as coisas. Achar que aquela apostila sobre criação de minhocas será útil algum dia é besteira, ainda mais se você mora no centro de uma grande metrópoli e nunca sai pra pescar! Guardar documentos que você tem impresso também não dá, ou um ou o outro. E por falar em cópias, muitos usuários de pc têm verdadeira tara por cópias, duplicam arquivos pelo HDD inteiro, e quando você pergunta pra quê eles respondem com ar de superioridade: "é backup rapaz, num sabe o que é backup não?", pena que ninguém informou a eles que o backup bom é aquele feito em outro local fora do HDD principal. Uma ajuda na hora de achar as duplicatas vai bem e o Duplicate File Searcher promete ajudar nessa hora e nas três plataformas.

Organize seu espaço: nos sistemas atuais fomos presenteados com as pastas de usuários e dentro delas com pastas específicas para músicas, vídeos e fotos. Elas estão ali pra serem usadas, nada pior que largar tudo em qualquer lugar, vira uma bagunça, você levará mais tempo pra achar o que procura e causará péssima impressão aos que botarem os olhos no seu computador. Ha, nem preciso dizer que o Desktop/mesa não é lugar pra salvar seus downloads, certo? O Leopard já vem com uma pasta específica para downloads, mas se o seu sistema não tem uma, nada o impede de criar por conta própria sem risco algum uma pasta pra esse propósito, a partir daí configure o seu navegador e gerenciador de downloads pra salvar os arquivos ali e dali mande os arquivos para suas devidas pastas/lixo após o uso!

Essas são apenas algumas dicas de como por ordem na casa e ganhar um espaço extra no disco, tenho certeza que ao criar o hábito de organizar seu computador o seu trabalho renderá mais, o seu computador vai ficar com aspecto interno e externo melhor e você terá bem menos dores de cabeça. E com o tempo você terá novas idéias sobre o assunto. Faça um favor a si mesmo e ao seu pobre computador: organize a sua vida digital e ponha o lixo pra fora! Só apague aquilo que você não sabe pra que serve e mantenha certa distância das pastas do sistema!

06/02/2009

Tá esperando o que pra fazer o maldito backup?

Sinto lhes informar, mas a desgraça cibernética um dia acontece. Aquele vírus cabuloso vai infestar seu pc com windows, o disco rígido vai inventar de morrer no seu macbook, os arquivos naquele notebook com linux vão virar fumaça. Infelizmente essa é a realidade amigos: o hardware nunca vai acompanhar a virilidade do software e cedo ou tarde ele vai morrer te deixando sem nada.

Felizmente você é esperto e faz backups... O que? Não tem backup? Então corre e vai fazer um já!

Pra começar qualquer pen drive serve, um software de backups também ajuda na hora de agendar os backups "salvação-da-lavoura", se forem gratis melhor ainda, por isso lhes apresento o Virtos pra Windows, ele é de graça, em português e suporta backups automáticos, em CD, DVD, ftp, pen drives e discos rígidos.

Pra Mac há o Time Machine, nativo no Leopard, e o Apple Backup pra quem comprou o .Mac e guardou o CD que veio junto. Claro que há várias outras opções de software pras duas plataformas, sintam-se livres pra escolher a que melhor se adaptar às vossas necessidades. O pessoal do mundo Linux não está desamparado, há uma quantidade bem grande de softwares pra backup disponíveis.

Se você possuir um disco rígido externo melhor ainda, mais espaço significa mais backups. E se possuir mais de uma mídias removível, melhor, afinal quem tem apenas um backup não tem nenhum

Mas, se você é daqueles que torcem o nariz ao pensar em ter mais um programa instalado no pc, ou simplesmente não possui nenhum outro local que sirva pra fazer backup, há também as opções online pra isso. Uma delas é o Mozy, que te dá de bandeja 2GB na faixa pros seus backups! Infelizmente mais que isso só pagando mesmo. Apple oferece o MobileMe, que além de backup oferece um punhado de outras opções tanto pra usuários Windows quanto pra Mac. A Microsoft está a ponto de lançar algo parecido também.

Quer backup acima de 2GB de graça online? Tem também, sabe o Gmail? Uma conta desse email pode ser usada como backup online também. Basta criar uma nova conta e usa-la como um drive via Windows Explorer. No Mac há algo parecido também. Pra Linux achei o PHPGmailDrive, não o testei mas parece que funciona de maneira parecida aos citados anteriormente.

Como podem ver não faltam opções nem recursos pra facilitar os backups, portanto corra e faça os seus antes que o seu Hdd morra e seu arquivos vão junto!

23/01/2009

25 anos de revolução!

No dia 24 de janeiro, há 25 anos atrás, a Apple lançava o Macintosh que introduziu o conceito de computador pessoal. Primeiro equipamento com interface gráfica e mouse que seria imitado mais tarde pela Microsoft. Tais conceitos são usados até hoje pela indústria da informática. Brindemos, parabéns Macintosh.

22/01/2009

iWork bixado há de infectar 20 mil computadores

Ráaa essa é pros espertinhos de plantão:

A Apple lançou a atualização do seu excelente pacote de escritório iWork, que na minha modesta opinião chuta a bunda do Ms Office em termos de profissionalismo e qualidade, mal ele saiu do forno e já apareceu em um monte de redes torrent.

Até aí legal, afinal qual programa manero que não acaba aparecendo nesses lugares? O problema é que as cópias piratas estão infectadas com um cavalo de tróia, o download oferecido é um verdadeiro presente de grego, chamado OSX.Trojan.iServices.A. Aos que estavam torcendo frenéticamente pela desgraça dos pobres mac users vibrem de alegria, o tal trojan é realmente perigoso desta vez, ao contrário dos anteriores que sequer fizeram cócegas no mac.

O bixo supra citado se instala, se coloca na lista de aplicativos a serem aberto durante o início do sistema e, pra piorar tudo, com privilégios de administrador, nosso amigo root no mundo Unix, depois de devidamente instalado ele começa a se comunicar com servidores remotos informando a localização da máquina e, claro, abrindo portas que permitirão acesso à máquina infectada.

Mas esperem que ainda tem mais: como o bixinho tem privilégios de administrador, ele não apenas pode instalar componentes adicionais "sinistros" (no pior sentido da palavra) como pode também alterar aplicativos já instalados na sua pobre vítima, além do que tais privilégios podem torna-lo extremamente difícil de remover.


A Intego, empresa especialista em segurança, calcula que no mínimo 20 mil pessoas poderão ser infectadas com a brincadeira citada aí em cima.
Bom, não percam mais tempo lendo isso, corram pro pc de vocês e continuem baixando seus softwares piratas.