Busca de imagens do flickr com API em PHP e javascript ‘jQuery’

Postado por admin | Ajax, Artigos, Geral, Javascript, Programação | segunda-feira 1 junho 2009 19:26

Busca de imagens do flickrOlá Galerinha tamos ai de volta após algum tempo, e com muita novidade para vocês.

Eu implementei uma busca de fotos do Flickr em PHP usando a API e o frameword de javascript do momento, “jQuery”, e disponibilizei pra vocês darem uma olhada.

Clique aqui e confira.

Então acessem ai e comentem para que eu possa melhorar e disponibilizar os fontes pra vocês.

Até a próxima e aguardem novidades.

Valew galera.

Aprendendo-expressao-regular-passo-a-passo-parte-2

Postado por admin | Artigos, Expressão Regular, Geral, Tutoriais | quarta-feira 22 abril 2009 13:49

Metacaracteres

Existem vários metacaracteres para composição de expressões regulares. Nesse artigo, não irei descrever todos, apenas os mais importantes.

1. Básicos

A partir desse grupo básico, é possível compor expressões regulares para descrever qualquer conjunto de elementos. Os símbolos “*”, “+” e “?” não foram comentados ainda, mas é fácil deduzir que são metacaracteres quantificadores especializados. Por outro lado, “.” é um tanto diferenciado e representa nada mais, nada menos que qualquer caracterer. Ele é uma espécie de “curinga” das expressões regulares.

O símbolo “^”, assumirá outra característica quando no interior e início do metacaracter “[]“. Nessa ocasião, ele irá negar toda a classe de caracteres listada explicita ou implicitamente. Por exemplo, para descrever o conjunto formado pelos elementos constituidos de qualquer caracter com excessão dos dígitos, pode ser utilizada a expressão ‘[^0123456789]‘ ou ‘[^0-9]‘.

^ caracter que o segue inicia o elemento
$ caracter que o antecede finaliza o elemento

. caracter é um símbolo qualquer (exceto nova linha)

| - - - - - - - - - - - - - - - - enumerador de alternativas
() - - - - - - - - - - - - - - - agrupador
[] - - - - - - - - - - - - - - - especificificador de classes

* - - - - - - - - - - - - - - - - caracter ocorre 0 ou mais vezes
+ - - - - - - - - - - - - - - - - caracter ocorre 1 ou mais vezes
? - - - - - - - - - - - - - - - - caracter ocorre 1 ou 0 vezes
{n} - - - - - - - - - - - - - -  caracter ocorre exatamente “n” vezes
{n,} - - - - - - - - - - - - - - caracter ocorre pelo menos “n” vezes
{n,m} - - - - - - - - - - - -  caracter ocorre pelo menos “n” vezes e não mais que “m” vezes

2. Complementares

Alguns desses metacaracteres são úteis na representação de diversas classes de caracteres de maneira simplificada e elegante. Essas classes, entretanto, podem, de diferentes formas, serem representadas com a combinação pura e simplesmente dos metacaracteres básicos. Porém, feito dessa forma, a elaboração de expressões regulares triviais se tornaria bastante complexa.

Há também um grupo de metacaracteres para a representação de caracteres de controle que não podem ser escritos, como é o caso da quebra de linha e da tabulação.

\w - - - - - - - - - - - -   [a-zA-Z_]
\W - - - - - - - - - - - -  [^a-zA-Z_]
\s - - - - - - - - - - - - - [ ]
\S - - - - - - - - - - - - - [^ ]
\d - - - - - - - - - - - - - [0-9], [0123456789] ou (0|1|2|3|4|5|6|7|8|9)
\D - - - - - - - - - - - - - [^0-9]
\t - - - - - - - - - - - - -  tabulação
\n - - - - - - - - - - - - - (LF ou NL) nova linha
\r - - - - - - - - - - - - -  (CR) retorno
\f - - - - - - - - - - - - -  (FF) form feed
\e - - - - - - - - - - - - - (ESC) escape

3. O metacaracter especial ‘\’

Em muitas ocasiões haverá a necessidade de descrever conjuntos que contêm elementos formados por símbolos que representam justamente um metacaracter. Nesse caso, utiliza-se “\” para que o outro metacaractere seja tratado como um simples caracter. Ele próprio (o metacaracter “\”) precisará, também, ser confrontado consigo mesmo para ser considerado um simples caracter. Para a descrição de um conjunto contendo apenas os elementos “U$” e “R$“, por exemplo, pode-se usar ‘^(U\$|R\$)$‘, ‘^(U|R)\$$‘ ou ‘^[UR]\$$‘. Pense que “\” é a criptonita que tira os “poderes” dos metacaracteres, transformando-os em simples caracteres.

Até a proxima…

O Programador é um Super Heroi

Postado por admin | Artigos, Geral, Pessoais | sexta-feira 3 abril 2009 16:36

Então galerinha tamos ai.

Eu tenho o costume de postar mais códigos e tal, mas eu não quero que meu blog vire um Framework Gigante, :-), então hoje eu estou afim de uma coisa diferente… resolvi falar sobre um assunto que está na minha cabeça já a algum tempo, mas achei que estava ficando era meio doido.

Pois então, vamos ao que interessa.

Quando eu comecei como programador, eu não sabia ‘NADA’ e a primeira coisa que vi foi um monitor de mais ou menos 19 polegadas e com um monte de letras vermelhas e azuis que mais parecia uma guerra entre o céu e o inferno, sinceramente eu fiquei com aquilo na cabeça umas 2 semanas.  Decide então partir pra área de designer, e, ‘Meu Deus’ foi uma tragédia, sem comentários.

Resolvi então voltar pra programação, que depois de alguns meses acabei gostando e me interessando mais.

E tudo é novidade, por mais que algumas coisas eram idiotas para os outros ‘Karas’ que são ‘Fudidões’, eu me sentia o melhor do mundo. E então recebi meu primeiro problema e fiquei vários dia me matando pra fazer aquilo e o esquema não dava certo, ai tentei mais e acabei fazendo um código com uma lógica e uma padronização ‘Revolucionária, ou pelo menos eu achava assim’ e então  pensei:

HAHAHA agora meu patrão vai ficar ‘FASCINADO’ com o que eu fiz!

E disse todo animado:

_ Acabei!

Com aquela voz de ‘SOU O CARA’ e então ele diz:

Até que enfim em, tem mais dois ali pra você fazer.

‘Meus Deus’ aquilo é como se eu tivesse pintado um quadro de um milhão de dólares e alguém dobrasse e guardasse no armário. E acabou que ninguém ficou sabendo como eu fiz ou como ficou, aliás meu amigo olhou de relance e disse: _Uhh, bonzinho.

Então vai passando o tempo e ninguém está nem ai com o jeito que você programa ou se você tem vida social ou se você tem que dar comida pro passarinho, enfim e você vira um viciado em programação, pensando que ninguém fala nada, porque você ainda é um ‘Pé Rapado’. E o tempo vai passando e você programando, e um dia você para e…

Perai,  o que eu ganho programando desse jeito sem que ninguém saiba quem faz as coisas fantásticas que agilizam o trabalho delas?

Eu me fiz essa pergunta!

E eu achei a resposta.

Que nós programadores somos como Super Heróis, porque fazemos coisas fantásticas e salvamos as vidas das pessoas que estão se matando com trabalhos que a gente agiliza com programas simples ou até mesmos sistemas complexos.

Temos ‘Super Poderes’ que mesmo que a gente conte para  as outras pessoas que nós somos capazes de fazer tal coisa eles nunca acreditam ou muitas das vezes não entendem nada.

Grande parte das pessoas que a gente ‘Salva’ nunca sabe a nossa identidade.

Temos que eliminar vilões todos os dias que são eles: o Stress os ‘Paus Doidos’ nos sistemas e os clientes sanguessugas.

Conclui que tudo isso trás é uma grande honra, e então me acalmei, pois com grandes ‘Poderes’ sempre ganhamos GRANDES RESPONSABiLIDADES, que nos diz que, temos que aceitar o fato de nem sempre sermos reconhecidos, porém somos ‘Diferentes’.

Espero que tenham gostado do meu ponto de vista do programador.

Valeu a oportunidade e até a proxima.

Função em javascript para validação de qualquer formulário automaticamente

Postado por admin | Artigos, Javascript, Programação | quarta-feira 4 fevereiro 2009 11:07

Olá galerinha, tô eu aqui de volta postando mais coisas pra vocês.

Quando eu era mais inexperiente, sempre fazia aquelas funções gigantes pra validar os campos de um formulário,
então notei que muitos programadores fazem isso.

Resolvi então formular uma função pra validar qualquer formulário.

//Valida campos como email e de texto
function validaForm(formId){
for(i=0; i <getId(formId).elements.length; i++)
{
if (getId(formId).elements[i].className.indexOf("validate")>=0){
if (TrimJS(getId(formId).elements[i].value) == ""){
getId(formId).elements[i].style.border   = "dashed 1px #FFBBC6";
getId(formId).elements[i].style.background = "#FFE6EA";
getId(formId).elements[i].focus();
alert("Preencha todos os campos obrigatórios!");
return false;
}
}

if (getId(formId).elements[i].className.indexOf("email")>=0){
if (!valida_email(getId(formId).elements[i])){
getId(formId).elements[i].style.border   = "solid 1px #FFBBC6";
getId(formId).elements[i].style.background = "#FFE6EA";
getId(formId).elements[i].focus();
return false;
}
}
}
}

//Funcão de validação de email
function valida_email(campo_email) {
if ( campo_email.value != '' ) {
//Expressao Regular utilizada para validar o endereço de email
var ExpReg = /^[a-zA-Z0-9_\.-]{2,}@([A-Za-z0-9_-]{2,}\.)+[A-Za-z]{2,4}$/;
if ( !ExpReg.test(campo_email.value) ) {
alert("E-MAIL inválido!");
campo_email.focus();
return false;
}
return true;
}
}

//Função de formatação de texto
function TrimJS(str){
return str.replace(/^\s+|\s+$/, '');
}

//Funcao que substitui document.getElementById

function getId(value){

return getElementById(value);

}

Se você quiser validar um campo normal de texto basta adicionar a classe 'validate' e se for um campo de email adicione a classe 'email'.

Gifs animadas para quem trabalha com AJAX

Postado por admin | Ajax, Artigos, Geral, Programação, Usuabilidade | sábado 20 dezembro 2008 7:41

Ajax Load.info

Ajax Load.info

Site que gera gifs personalizados de acordo com a sua necessidade.

Você pode usar essas imagens para mostrar para o úsuario que alguma coisa está acontecendo ali, o que é uma parte indispensável para os aplicativos que usam Ajax.

Ou se você apenas gosta de gifs animadas, também lhe será muito útil. :-)

Clique aqui

e confira o site.

Aprendendo Expressão Regular passo a passo

Postado por admin | Artigos, Faculdade, Geral, Programação, Tutoriais | segunda-feira 15 dezembro 2008 12:20

Expressões Regulares

Definição:

Pode-se dizer que uma expressão regular é uma 'regra', que permite descrever todos os elementos de uma conjunto, seja ele finito ou infinito, sem a necessidade de enumerá-los explicitamente.

Por Exemplo:

^[0-9]$ - Descreve os algoritmos de 0 a 9.

^[a-zA-Z]$ - Descreve as letras minúsculas e maiúsculas do alfabeto.

Elaborando Expressões Regulares:

Uma expressão regular e contruida através de caracteres( 'a','b','c','A','B','C' ) e metacaracteres ( '{}', '()', '|', '^','$' ), onde os caracteres irão sempre descrever elementos explícitos e os metacaracteres irão descrever elementos implícitos e as condições em que esses elementos ocorrem dentro de um conjunto.

Por Exemplo:

1º) ^a{1,2}$ - Descreve um conjunto que contem dois elementos sendo eles "a" e "aa".

2º) ^(a|b){1,3}$ - Descreve um conjunto que contem os elementos "a", "aa", "aaa", "b", "bb" e "bbb".

Estas duas expressões são constítuidas pelos caracteres "a" e "b" e metacaracteres que determinam como devem ser feitas as composições.

O metacaractere que é formado pelos símbolos "{}" ( chaves ), define a quantidade de vezes com que um caracter irá ocorrer em um elemento.

No primeiro exemplo ele define que os elementos que contituem o novo conjunto, serão constituídos por uma ou duas ocorrências do caracter "a". E a função dos dois outros metacaracteres do primeiro exemplo, ou seja "^" e "$" , são definir fronteiras, onde os elementos devem ser formados iniciando pelo caracter ou a composição que segue o símbolo "^" e terminados pelo caracter ou a composição que antecede "$".

Quando uma expressão regular for composta apenas por caracteres, ela irá sempre descrever um conjunto de elementos que possuem ao menos esses caracteres.

Por Exemplo:

ch - Descreve o conjunto de palavras que são grafadas com o dígrafo "ch".

^ch - Descreve o conjunto de palavras que iniciam com esse dígrafo.

De forma semelhante a expressão (ss|rr)(a|e) ou (ss|rr)[ae] definiria as palavras contendo as sílabas "ssa", "sse", "rra" e "rre".

Continua... aguardem.

Função em PHP para gerar código de verificação do Cartão Master Card

Postado por admin | Cartoes de Credito, Ecommerce, Programação | quinta-feira 11 dezembro 2008 11:46
/**

* return (string)

* params int , float

* by Marcelo Souza

**/

public function getCodVer($numFiliacao,$valorTotal)
{
$arrayData = getdate();
//
$segundosAgora = $arrayData["seconds"];
$segundosAgoraCodificados = 0;

switch($segundosAgora){
case 0: $segundosAgoraCodificados = 11; break;
case 1: $segundosAgoraCodificados = 17; break;
case 2: $segundosAgoraCodificados = 21; break;
case 3: $segundosAgoraCodificados = 31; break;
case 4: $segundosAgoraCodificados = 56; break;
case 5: $segundosAgoraCodificados = 34; break;
case 6: $segundosAgoraCodificados = 42; break;
case 7: $segundosAgoraCodificados = 3; break;
case 8: $segundosAgoraCodificados = 18; break;
case 9: $segundosAgoraCodificados = 13; break;
case 10: $segundosAgoraCodificados = 12; break;
case 11: $segundosAgoraCodificados = 18; break;
case 12: $segundosAgoraCodificados = 22; break;
case 13: $segundosAgoraCodificados = 32; break;
case 14: $segundosAgoraCodificados = 57; break;
case 15: $segundosAgoraCodificados = 35; break;
case 16: $segundosAgoraCodificados = 43; break;
case 17: $segundosAgoraCodificados = 4; break;
case 18: $segundosAgoraCodificados = 19; break;
case 19: $segundosAgoraCodificados = 14; break;
case 20: $segundosAgoraCodificados = 9; break;
case 21: $segundosAgoraCodificados = 20; break;
case 22: $segundosAgoraCodificados = 23; break;
case 23: $segundosAgoraCodificados = 33; break;
case 24: $segundosAgoraCodificados = 58; break;
case 25: $segundosAgoraCodificados = 36; break;
case 26: $segundosAgoraCodificados = 44; break;
case 27: $segundosAgoraCodificados = 5; break;
case 28: $segundosAgoraCodificados = 24; break;
case 29: $segundosAgoraCodificados = 15; break;
case 30: $segundosAgoraCodificados = 62; break;
case 31: $segundosAgoraCodificados = 25; break;
case 32: $segundosAgoraCodificados = 34; break;
case 33: $segundosAgoraCodificados = 59; break;
case 34: $segundosAgoraCodificados = 37; break;
case 35: $segundosAgoraCodificados = 45; break;
case 36: $segundosAgoraCodificados = 6; break;
case 37: $segundosAgoraCodificados = 25; break;
case 38: $segundosAgoraCodificados = 16; break;
case 39: $segundosAgoraCodificados = 27; break;
case 40: $segundosAgoraCodificados = 63; break;
case 41: $segundosAgoraCodificados = 26; break;
case 42: $segundosAgoraCodificados = 35; break;
case 43: $segundosAgoraCodificados = 60; break;
case 44: $segundosAgoraCodificados = 38; break;
case 45: $segundosAgoraCodificados = 46; break;
case 46: $segundosAgoraCodificados = 7; break;
case 47: $segundosAgoraCodificados = 26; break;
case 48: $segundosAgoraCodificados = 17; break;
case 49: $segundosAgoraCodificados = 28; break;
case 50: $segundosAgoraCodificados = 14; break;
case 51: $segundosAgoraCodificados = 36; break;
case 52: $segundosAgoraCodificados = 2; break;
case 53: $segundosAgoraCodificados = 39; break;
case 54: $segundosAgoraCodificados = 47; break;
case 55: $segundosAgoraCodificados = 8; break;
case 56: $segundosAgoraCodificados = 29; break;
case 57: $segundosAgoraCodificados = 22; break;
case 58: $segundosAgoraCodificados = 55; break;
case 59: $segundosAgoraCodificados = 33; break;
}

$segundosAgora = $segundosAgoraCodificados;
$pad = "";

if ($segundosAgora <10 )
$pad = "0";
else
$pad = "";

$tamIP = strlen($_SERVER['REMOTE_ADDR']);
$total = str_replace($valorTotal,".",",");
$numfil = $numFiliacao;
$i5 = $total + $segundosAgora;
$i6 = $segundosAgora + $tamIP;
$i7 = $segundosAgora * $numfil;
$i8 = strlen($i7);

$CodVer = $i7.$i5.$i6."-".$i8.$pad.$segundosAgora;

return $CodVer;
}

Acesso a outros emails através do mail.google “HOTMAIL,YAHOO…”

Postado por admin | Geral | sexta-feira 7 novembro 2008 4:48

A nova versão do Gmail apesar de BETA ficou muito completa, adicionaram várias funcionalidades úteis e adaptadas a nova era da internet, ou seja, ‘A revolução dos dispositivos móveis’, praticamente todo o público fã de internet e desenvolvimento web, procuram cada vez mais mobilidade, tanto para diversão como para trabalho, e esta nova versão possui uma adaptação para acesso de dispositivos móveis.

Um exemplo disso é o iPhone que apesar de estar ainda pouco acessível para as 'massas' se é que vocês estão me entendendo 'U$$$$$' :-) , possui muitos aplicativos interessante desde a formulação de gráficos até jogos cada vez mais interativos.

Afinal o meu foco nesse post é falar da nova ferramenta do Gmail, que nos possibilita ter acesso a outros emails através dele, daqui algum tempo o Gmail irá dominar o mundo dos emails, :-) , mas enfim nada contra os outros emails, inclusive o meu email principal é do Hotmail, isso porque é quase impossível migrar totalmente de email.

Vamos lá então:
O caminho para essa ferramenta é:
No canto superior direito do mail.google tem um link chamado 'Configurações', clique nele e então abrirá uma página que terá o titulo de ‘Configurações’.
No menu dessa página está o link ‘Contas’, clique nele e então aparecerá a opção ‘Receber mensagens de outras contas’, ai está ele.
Após isso é só configurar a sua conta desejada e pronto.

Abraço a todos.

Classe de Validação de CPF para JAVA - Completo

Postado por admin | Artigos, Exercicios de Java, Loja Virtual, Programação | segunda-feira 27 outubro 2008 5:11

Galerinha vai ai agora uma classe do JAVA para validação de CPF, achei essa lógica muito interessante, nunca havia usado essa lógica para validar CPF antes, nem em PHP, nem em outra programação , porque acho mais convencional usar uma expressão regular, mas não deixa de ser interessante.

import java.util.*;

/**
* Classe com método para validação de CPF
*
* Pode ser utilizada livremente e modificada para se integrar à sistemas
* mais complexos.
*
* @version 1.0
*/

public class CPF {

String CPF;

/** Realiza a validação do CPF.
*
* @param   strCPF número de CPF a ser validado
* @return  true se o CPF é válido e false se não é válido
*/

public static void CPF() { }
public static boolean CPF (String strCpf )
{
int     d1, d2;
int     digito1, digito2, resto;
int     digitoCPF;
String  nDigResult;

d1 = d2 = 0;
digito1 = digito2 = resto = 0;

for (int nCount = 1; nCount <strCpf.length() -1; nCount++)
{
digitoCPF = Integer.valueOf (strCpf.substring(nCount -1, nCount)).intValue();

//multiplique a ultima casa por 2 a seguinte por 3 a seguinte por 4 e assim
//por diante.
d1 = d1 + ( 11 - nCount ) * digitoCPF;

//para o segundo digito repita o procedimento incluindo o primeiro digito
//calculado no passo anterior.
d2 = d2 + ( 12 - nCount ) * digitoCPF;
};

//Primeiro resto da divisão por 11.
resto = (d1 % 11);

//Se o resultado for 0 ou 1 o digito é 0 caso contrário o digito é 11 menos o
//resultado anterior.
if (resto <2)
digito1 = 0;
else
digito1 = 11 - resto;

d2 += 2 * digito1;

//Segundo resto da divisão por 11.
resto = (d2 % 11);

//Se o resultado for 0 ou 1 o digito é 0 caso contrário o digito é 11 menos
//o resultado anterior.
if (resto <2)
digito2 = 0;
else
digito2 = 11 - resto;

//Digito verificador do CPF que está sendo validado.
String nDigVerific = strCpf.substring (strCpf.length()-2, strCpf.length());

//Concatenando o primeiro resto com o segundo.
nDigResult = String.valueOf(digito1) + String.valueOf(digito2);

//comparar o digito verificador do cpf com o primeiro resto + o segundo resto.
return nDigVerific.equals(nDigResult);
}
void setCpf(String cpf) {
this.CPF=cpf;
}

public static void main(String[] args) {
System.out.println( CPF("06517339604") ? "OK" : "Incorreto"  );
}

}

Abraços a todos ;-)

Números de cartões para teste VISA MASTERCARD AMEX DINNERS AURA

Postado por admin | Artigos, Cartoes de Credito, Ecommerce, Loja Virtual, Programação | quinta-feira 23 outubro 2008 6:11

Estou disponibilizando números de cartões para teste de implementação de cartões de crédito em aplicativos, na maioria das vezes e-commerces.

Estes números são apenas para testes desse tipo , pois se deseja burlar algum site com esses números , 'tire seu cavalinho da chuva' porque não vai funcionar. ;-)

AMEX ----------  376411112222331
MASTERCARD ----  5555666677778884
DINERS --------- 30111122223331
VISA ----------- 4073020000000002
HIPERCARD ------ 3841001111222233334
AURA ---------- 5078601870000127985 ou 5078601800003247449

O código de segurança e a data de expiração podem ser quaisquer um, o único que deve ser exato é o número do cartão.

Abraço a todos...!