quarta-feira, 2 de setembro de 2009

Ferramenta “FREE” para desenvolvimento em FLEX


Flash Develop é uma ferramenta “FREE” que tem suporte para desenvolvimento de aplicações FLEX. Estou utilizando á algum tempo e gostei muito. Ela não tem a parte de interface (clicar e arrastar) do Flex Builder, porém ela ajuda muito completando códigos e compilando o projeto de maneira simples. A falta da parte de interface não é nenhuma desvantagem, em minha opinião, o que realmente faz falta pra mim é uma ferramenta de versionamento do código fonte.

O site oficial é esse.

Link para download.

Em breve posto como configurar para utilizá-la com o FLEX SDK 3.


terça-feira, 1 de setembro de 2009

Função em PHP para calcular uma nova data

Neste post irei mostrar uma função em PHP para calcular uma nova data, passando por parâmetro uma data, a operação e a quantidade de dias a ser somada ou diminuída desta data.
Ex: 25/08/2009 + 10 Dias = 04/09/2009

Código

<?php
function calculaData($data, $operacao, $quantidadeDias)
{
 //retira dia mes ano da data
 $dia = substr($data, 0, 2);
 $mes = substr($data, 3, 2);
 $ano = substr($data, 6, 4);
  
 //soma ou diminiu quantidade de dias na nova data
 if($operacao=="+"){
  $novoDia = ($dia+$quantidadeDias);
 } else {
  $novoDia = ($dia-$quantidadeDias);
 }
 
 //calcula nova data
 $novaData = mktime(0,0,0,$mes,$novoDia,$ano);
 
 //formata nova data
 $dataRetorno = getdate($novaData);
 
 $dataFormatada = $dataRetorno["mday"]."/".$dataRetorno["mon"]."/".$dataRetorno["year"];

 return $dataFormatada;
}

//executando função
echo calculaData("25/08/2009", "+", 10);

?>

segunda-feira, 24 de agosto de 2009

Capturar imagem da WEBCAM

Mais um link do Blog do meu amigo Professor Luiz Henrique.

Desta vez ele mostra de maneira simples como Capturar imagem da WEBCAN com o Flex.

LINK

sexta-feira, 21 de agosto de 2009

Links Interessantes

Alguns links para auxiliar o desenvolvimento em FLEX.

Como validar CNPJ, CPF e PIS em FLEX

Neste post irei demonstrar como validar CNPJ, CPF e PIS em FLEX utilizando a classe Validator. Aproveitando o embalo segue também como colocar mascara nos campos. O componente utilizado para máscara foi retirado desse link

Os arquivos ".as" devem ser criados na pasta componentes.



CpfValidator.as


package componentes

{

import mx.validators.Validator;

import mx.validators.ValidationResult;



public class CpfValidator extends Validator

{

public function CpfValidator()

{

super();

}



override protected function doValidation(value:Object):Array {



var results:Array = super.doValidation(value.text);



var digito:Array = new Array(); // array para os dígitos do CPF.

var aux:Number= 0;

var posicao:Number;

var i:Number;

var soma:Number;

var dv:Number;

var dvInformado:Number;

var CPF:String = value.text;



// Retira os dígitos formatadores de CPF '.' e '-', caso existam.

CPF.replace(".", "");

CPF.replace("-", "");



//verifica CPFs manjados

switch (CPF) {

case '0':

case '00':

case '000':

case '0000':

case '00000':

case '000000':

case '0000000':

case '00000000':

case '000000000':

case '0000000000':

case '00000000000':

case '11111111111':

case '22222222222':

case '33333333333':

case '44444444444':

case '55555555555':

case '66666666666':

case '77777777777':

case '88888888888':

case '99999999999':

results.push(new ValidationResult(true, null, "Erro",

"Número do CPF inválido!"));

return results;

}



// Início da validação do CPF.

/* Retira do número informado os dois últimos dígitos */

dvInformado = parseInt(CPF.substr(9,2));



/* Desmembra o número do CPF no array digito */

for (i=0; i< = 8; i++)

{

digito[i] = CPF.substr(i,1);

}



/* Calcula o valor do 10o. digito de verificação */

posicao = 10;

soma = 0;

for (i=0; i <= 8; i++)

{

soma = soma + digito[i] * posicao;

posicao--;

}

digito[9] = soma % 11;

if (digito[9] < 2)

{

digito[9] = 0;

}

else

{

digito[9] = 11 - digito[9];

}

/* Calcula o valor do 11o. digito de verificação */

posicao = 11;

soma = 0;

for (i=0; i <= 9; i++)

{

soma = soma + digito[i] * posicao;

posicao--;

}

digito[10] = soma % 11;

if (digito[10] < 2)

{

digito[10] = 0;

}

else

{

digito[10] = 11 - digito[10];

}

dv = digito[9] * 10 + digito[10];

/* Verifica se o DV calculado é igual ao informado */



if(dv != dvInformado)

{

results.push(new ValidationResult(true, null, "Erro",

"Número do CPF inválido!"));



}



return results;

}



override protected function getValueFromSource():Object

{

var value:Object = {};



value.text = super.getValueFromSource();



return value;

}



}

}



CnpjValidator.as


package componentes

{

import mx.validators.ValidationResult;

import mx.validators.Validator;



public class CnpjValidator extends Validator

{

public function CnpjValidator()

{

super();

}





override protected function doValidation(value:Object):Array {



var results:Array = super.doValidation(value.text);



var a:Array = new Array();

var b:Number = new Number;

var i:Number;

var x:Number;

var y:Number;

var c:Array = [6,5,4,3,2,9,8,7,6,5,4,3,2];

var CNPJ:String = value.text;





// Retira os dígitos formatadores de CNPJ '.' e '-', caso existam.

CNPJ.replace(".", "");

CNPJ.replace("-", "");

CNPJ.replace("/", "");



//verifica CNPJs manjados

switch (CNPJ) {

case '0':

case '00':

case '000':

case '0000':

case '00000':

case '000000':

case '0000000':

case '00000000':

case '000000000':

case '0000000000':

case '00000000000':

case '11111111111':

case '22222222222':

case '33333333333':

case '44444444444':

case '55555555555':

case '66666666666':

case '77777777777':

case '88888888888':

case '99999999999':

results.push(new ValidationResult(true, null, "Erro",

"Número do CNPJ inválido!"));

return results;

}



for (i=0; i < 12; i++){

a[i] = CNPJ.charAt(i);

b += a[i] * c[i+1];

}

if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }

b = 0;

for (y=0; y < 13; y++) {

b += (a[y] * c[y]);

}

if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }

if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13]))

{

results.push(new ValidationResult(true, null, "Erro",

"Número do CNPJ inválido!"));

}

return results;

}



override protected function getValueFromSource():Object

{

var value:Object = {};



value.text = super.getValueFromSource();



return value;

}



}

}



PisValidator.as


package componentes

{

import mx.validators.ValidationResult;

import mx.validators.Validator;



public class PisValidator extends Validator

{

public function PisValidator()

{

super();

}



// Define the doValidation() method.

override protected function doValidation(value:Object):Array {



var results:Array = super.doValidation(value.text);

if (value.text != "") {

//Testa se o número do pis é válido ou não

var PIS:String = value.text;

var i:Number;

var digito:Number=0;

var total:Number=0;

var resto:Number=0;

var pesos:Array = new Array;

var erro:Boolean = false;



// Retira os dígitos formatadores de PIS '.' e '-', caso existam.

PIS.replace(".", "");

PIS.replace("-", "");



//verifica PIS manjados

switch (PIS) {

case '0':

case '00':

case '000':

case '0000':

case '00000':

case '000000':

case '0000000':

case '00000000':

case '000000000':

case '0000000000':

case '00000000000':

case '11111111111':

case '22222222222':

case '33333333333':

case '44444444444':

case '55555555555':

case '66666666666':

case '77777777777':

case '88888888888':

case '99999999999':

results.push(new ValidationResult(true, null, "Erro",

"Número do PIS inválido!"));

return results;

}



pesos[0] = 3;

pesos[1] = 2;

pesos[2] = 9;

pesos[3] = 8;

pesos[4] = 7;

pesos[5] = 6;

pesos[6] = 5;

pesos[7] = 4;

pesos[8] = 3;

pesos[9] = 2;



for (i=0; i<10; i++)

{

total = total + pesos[i] * parseInt(PIS.substr(i,1));

}



resto = total % 11;



if((11-resto)>9)

digito =0;

else

digito = (11 - resto);





if(digito != parseInt(PIS.substr(10,1)))

{

erro = true;

}else{

erro = false;

}



if(erro){

results.push(new ValidationResult(true, null, "Erro",

"Número do PIS inválido!"));



}

}





return results;

}



override protected function getValueFromSource():Object

{

var value:Object = {};

value.text = super.getValueFromSource();

return value;

}





}

}



main.mxml


<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"

xmlns:componentes="componentes.*"

>



<!-- Criando componentes utilizando o MaskedTextInput -->

<mx:Form>

<mx:FormItem label="CPF">

<componentes:MaskedTextInput id="txiCPF" inputMask="###.###.###-##" width="200" restrict="0-9" />

</mx:FormItem>

<mx:FormItem label="CNPJ">

<componentes:MaskedTextInput id="txiCNPJ" width="200" inputMask="##.###.###//####-##" maxChars="10" restrict="0-9"/>

</mx:FormItem>

<mx:FormItem label="PIS">

<componentes:MaskedTextInput id="txiPIS" width="200" inputMask="###.#####.##-#" maxChars="10" restrict="0-9"/>

</mx:FormItem>

</mx:Form>







<!-- Validator para CPF -->

<componentes:CpfValidator required="true"

source="{txiCPF}"

property="text"

requiredFieldError="Campo Obrigatório"

/>

<!-- Validator para CNPJ -->

<componentes:CnpjValidator required="true"

source="{txiCNPJ}"

property="text"

requiredFieldError="Campo Obrigatório"

/>

<!-- Validator para PIS -->

<componentes:PisValidator required="true"

source="{txiPIS}"

property="text"

requiredFieldError="Campo Obrigatório"

/>

</mx:Application>

sexta-feira, 14 de agosto de 2009

Boa tarde a todos.

Para começar com os posts do blog vou colocar dois links, o primeiro link tem um post sobre a utilização do AMFPHP com Flex feito por Marcos (http://flex-cast.blogspot.com/), amigo e ex-aluno.

LINK AMFPHP

O segundo link é do blog de outro amigo e companheiro nas aulas de programação Luiz Henrique.
O blog dele está bem bacana, muita coisa interessante em FLEX. Vale a pena conferir.
Blog do Luiz é: http://luizdeangeli.blogspot.com/

Início

Primeiro Post...

Os principais assuntos do Blog serão Desenvolvimento de Sistema para Web e Tecnologia em geral.

Vou postar algumas notícias e alguns exemplos de código para auxiliar no desenvolvimento para WEB.


Abraço