public static function isCPFValido(ent : String):Boolean{
if (ent.length == 0)
return false;
var i : int;
var ok : Boolean = false;
var aux : String = ent.charAt(0);
for(i=0;i<ent.length;i++){
if ( aux !== ent.charAt(i) ){
ok = true;
break;
}
}
if ( !ok )
return false;
//criamos arrays dos pesos
var Peso1 : Array = [10, 9, 8, 7, 6, 5, 4, 3, 2];
var Peso2 : Array = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2];
var cpfVal:String = ent;
var j : int;
var digito1 : Number;
var digito2 : Number;
// criamos as variáveis que nos auxiliarão no cálculo dos dígitos verificadores
var soma1:Number = new Number ();
var resto1:Number = new Number ();
var soma2:Number = new Number ();
var resto2:Number = new Number ();
// utilizamos o for com o incremento i ( i++ )
for (i = 0; i < Peso1.length; i++)
soma1 += new Number(cpfVal.charAt(i)) * Peso1[i];
// o cálculo do resto é feito utilizando o operador % ( porcentagem )
// que retorna o resto da divisão da soma por 11
resto1 = soma1 % 11;
// criamos a condicão para o caso do resultado ser menor ou igual a 1
if (resto1 <= 1) {
// se for o digito verificador é igual a 0 ( zero )
digito1 = 0;
} else {
// senão é igual a 11 menos o resto
digito1 = 11 - resto1;
}
// agora o cálculo do segundo dígito que segue o mesmo padrão anterior
for (j = 0; j < Peso2.length; j++)
soma2 += new Number(cpfVal.charAt (j)) * Peso2[j];
resto2 = soma2 % 11;
if (resto2 <= 1) {
digito2 = 0;
} else {
digito2 = 11 - resto2;
}
// chegamos então a nossa condição final
// se o décimo digito - cpfVal.charAt(9) - for igual ( o símbolo == )
// ao dígito verificador calculado ou ...
// se o décimo digito - cpfVal.charAt(10) - for igual ao dígito verificador calculado ou ...
// o tamanho da número digitado for igual de onze algarismos
// lembrando que o charAt(9) indica a décima "casa" ( posição )
// porque a primeira "casa" é sempre 0 ( zero )
if (new Number(cpfVal.charAt (9)) == digito1 && new Number(cpfVal.charAt (10)) == digito2 && cpfVal.length == 11) {
// se todas as condições estiverem ok
// você pode acrescentar aqui outras ações do tipo ir para algum frame
// enviar as informações para o servidor
// etc
//trace ( "CPF Válido" );
return true;
} else {
// senão ...
//trace ( "CPF Inválido" );
return false;
}
}
Vitor Yudi Hansen
quinta-feira, 26 de maio de 2011
Mascata de telefone Adobe Flex 3
Exemplo básico de mascaras no Flex 3
Vitor Yudi Hansen
public class Telefone extends MaskedInput{
public function Telefone():void{
this.inputMask = "##-##-########";
this.width = 110;
}
}
public function Telefone():void{
this.inputMask = "##-##-########";
this.width = 110;
}
}
Vitor Yudi Hansen
quinta-feira, 19 de maio de 2011
Gerar Sring aleatoria PHP
<? $vogais = array('a','e','i','o','u'); $consoantes = array('b','c','d','f','g','h','nh','lh','ch','j','k','l','m','n','p','qu','r','rr','s','ss','t','v','w','x','y','z',); $palavra = ''; $tamanho_palavra = rand(2,5); $contar_silabas = 0; while($contar_silabas < $tamanho_palavra){ $vogal = $vogais[rand(0,count($vogais)-1)]; $consoante = $consoantes[rand(0,count($consoantes)-1)]; $silaba = $consoante.$vogal; $palavra .=$silaba; $contar_silabas++; unset($vogal,$consoante,$silaba); } echo "<h3>A palavra aleatória gerado foi: $palavra</h3>"; unset($vogais,$consoantes,$palavra,$tamanho_palavra,$contar_silabas); ?>
Vitor Yudi Hansen
Split SQL Server
SET NOCOUNT ON DECLARE @ARRAY VARCHAR(8000), @DELIMITADOR VARCHAR(100), @S VARCHAR(8000) -- VALORES PASSADOS PARA A VARIAVEL @ARRAY SELECT @ARRAY = "OLA ,TUDO BEM, MAIS OU MENOS, TRANQUILIS" -- SETANDO O DELIMITADOR SELECT @DELIMITADOR = "," IF LEN(@ARRAY) > 0 SET @ARRAY = @ARRAY + @DELIMITADOR CREATE TABLE #ARRAY(ITEM_ARRAY VARCHAR(8000)) WHILE LEN(@ARRAY) > 0 BEGIN SELECT @S = LTRIM(SUBSTRING(@ARRAY, 1, CHARINDEX(@DELIMITADOR, @ARRAY) - 1)) INSERT INTO #ARRAY (ITEM_ARRAY) VALUES (@S) SELECT @ARRAY = SUBSTRING(@ARRAY, CHARINDEX(@DELIMITADOR, @ARRAY) + 1, LEN(@ARRAY)) END -- MOSTRANDO O RESULTADO JÁ POPULADO NA TABELA TEMPORÁRIA SELECT * FROM #ARRAY DROP TABLE #ARRAY SET NOCOUNT OFF
Vitor Yudi Hansen
Ler Arquivo XML no SQL SERVER
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go CREATE PROCEDURE [dbo].[ARTIGO] @VALORES AS XML AS DECLARE @NOME VARCHAR(MAX), @TELEFONE VARCHAR(MAX) /* CAPTURA DADOS XML */ SELECT @NOME = ParamValues.VALOR.value('.','VARCHAR(MAX)') FROM @VALORES.nodes('/xml/nome') as ParamValues(VALOR) SELECT @TELEFONE = ParamValues.VALOR.value('.','VARCHAR(MAX)') FROM @VALORES.nodes('/xml/telefone') as ParamValues(VALOR) /* RETORNA UMA TABELA COM OS VALORES */ SELECT @NOME AS 'NOME', @TELEFONE AS 'TELEFONE'
Vitor Yudi Hansen
Gerar senha em Flex
Vou postar um metodo para gerar senha feita em flex!
Vitor Yudi Hansen
function geraSenha(){//função para criar a senha
var tamanho : int = 10;//QUANTOS DIGITOS TERÁ A SENHA
var senha : String = "";//DECLARA A SENHA QUE SERÁ FORMADA
var chars = "1234567890" + "abcdefghijklmnopqrstuvywxz" + "ABCDEFGHIJLMNOPQRSTUVYWXZ";//caracteres que formarão a senha
for(var i=0;i<tamanho;i++){//verifica quantos caracteres foram utilizados + insere um caracterer
senha += chars.substr((Math.floor(Math.random()*(chars.length-1))+1),1);
}
return senha;//retorna a senha
}
quarta-feira, 18 de maio de 2011
Agregador de leilões - Garfando Descontos - O Primeiro Agregador de Leilões
Com a febre dos leilões de 1 centavo.
Foi lançado recentemente o Primeiro site que agrega leilões de 1 centavo.
O Garfando Descontos.
Ele visa mostrar de forma clara e objetiva, os leilões que existem, e vão acontecer.
Sendo o primeiro Agregador de Leilões, podemos esperar, em breve um booom, e o surgimento de vários sites no mesmo estilo.
Segundo a consultoria do Garfando Descontos, muitas surpresas serão lançadas pelo site.
Vale a pena esperar.
Vitor Yudi Hansen
Foi lançado recentemente o Primeiro site que agrega leilões de 1 centavo.
O Garfando Descontos.
Ele visa mostrar de forma clara e objetiva, os leilões que existem, e vão acontecer.
Sendo o primeiro Agregador de Leilões, podemos esperar, em breve um booom, e o surgimento de vários sites no mesmo estilo.
Segundo a consultoria do Garfando Descontos, muitas surpresas serão lançadas pelo site.
Vale a pena esperar.
Vitor Yudi Hansen
Formatar CPF
Classe para Formatar CPF
public String formatarCPF(String cpf){
if (cpf.length() < 11){
String aux = "00000000000" + cpf;
cpf = aux.substring( aux.length()-11 );
}
cpf = cpf.substring(0,3) + "." + cpf.substring(3,6) + "." + cpf.substring(6,9) + "-" + cpf.substring( cpf.length()-2 );
return cpf;
}
Vitor Yudi Hansen
public String formatarCPF(String cpf){
if (cpf.length() < 11){
String aux = "00000000000" + cpf;
cpf = aux.substring( aux.length()-11 );
}
cpf = cpf.substring(0,3) + "." + cpf.substring(3,6) + "." + cpf.substring(6,9) + "-" + cpf.substring( cpf.length()-2 );
return cpf;
}
Vitor Yudi Hansen
Converter Caracteres HTML - JAVA
Classe que converte caracteres.
public String convertTagsHTMLCaracteres(String htmlString){
try{
htmlString = htmlString.replace("À", "À")
.replace( "Á", "Á")
.replace( "Â", "Â")
.replace( "Ã", "Ã")
.replace( "à", "à")
.replace( "á", "á")
.replace( "â", "â")
.replace( "ã", "ã")
.replace( "Ò", "Ò")
.replace( "Ó", "Ó")
.replace( "Ô", "Ô")
.replace( "Õ", "Õ")
.replace( "ò", "ò")
.replace( "ó", "ó")
.replace( "ô", "ô")
.replace( "õ", "õ")
.replace( "È", "È")
.replace( "É", "É")
.replace( "Ê", "Ê")
.replace( "è", "è")
.replace( "é", "é")
.replace( "ê", "ê")
.replace( "Ì", "Ì")
.replace( "Í", "Í")
.replace( "ì", "ì")
.replace( "í", "í")
.replace( "Ù", "Ù")
.replace( "Ú", "Ú")
.replace( "ù", "ù")
.replace( "ú", "ú")
.replace( "Ç", "Ç")
.replace( "ç", "ç")
.replace( "ˆ", "^")
.replace( "˜", "~")
.replace( "&167;", "º")
.replace( "&166;", "ª");
}catch (Exception e) {
e.printStackTrace();
}
return htmlString;
}
try{
htmlString = htmlString.replace("À", "À")
.replace( "Á", "Á")
.replace( "Â", "Â")
.replace( "Ã", "Ã")
.replace( "à", "à")
.replace( "á", "á")
.replace( "â", "â")
.replace( "ã", "ã")
.replace( "Ò", "Ò")
.replace( "Ó", "Ó")
.replace( "Ô", "Ô")
.replace( "Õ", "Õ")
.replace( "ò", "ò")
.replace( "ó", "ó")
.replace( "ô", "ô")
.replace( "õ", "õ")
.replace( "È", "È")
.replace( "É", "É")
.replace( "Ê", "Ê")
.replace( "è", "è")
.replace( "é", "é")
.replace( "ê", "ê")
.replace( "Ì", "Ì")
.replace( "Í", "Í")
.replace( "ì", "ì")
.replace( "í", "í")
.replace( "Ù", "Ù")
.replace( "Ú", "Ú")
.replace( "ù", "ù")
.replace( "ú", "ú")
.replace( "Ç", "Ç")
.replace( "ç", "ç")
.replace( "ˆ", "^")
.replace( "˜", "~")
.replace( "&167;", "º")
.replace( "&166;", "ª");
}catch (Exception e) {
e.printStackTrace();
}
return htmlString;
}
Vitor Yudi Hansen
terça-feira, 17 de maio de 2011
Galeria de Imagens feita em JavaScript
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt">
<head>
<title>Galeria de fotos em Javascript</title>
<script type="text/javascript">
function exibir(imagens) {
//Informamos o ID da tag IMG que irá exibir a galeria
var imagem = document.getElementById("galeria");
//Informamos as imagens a serem exibidas pela galeria
switch(imagens) {
case "01":
imagem.src = "01.jpg";
break;
case "02":
imagem.src = "02.jpg";
break;
case "03":
imagem.src = "03.jpg";
break;
}
}
</script>
</head>
<body onload="exibir('01')">
Navegue na nossa galeria:
<a href="#" onclick="javascript: exibir('01');">01</a> -
<a href="#" onclick="javascript: exibir('02');">02</a> -
<a href="#" onclick="javascript: exibir('03');">03</a>
<hr />
<img id="galeria">
</body>
</html>
Vitor Yudi Hansen
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt">
<head>
<title>Galeria de fotos em Javascript</title>
<script type="text/javascript">
function exibir(imagens) {
//Informamos o ID da tag IMG que irá exibir a galeria
var imagem = document.getElementById("galeria");
//Informamos as imagens a serem exibidas pela galeria
switch(imagens) {
case "01":
imagem.src = "01.jpg";
break;
case "02":
imagem.src = "02.jpg";
break;
case "03":
imagem.src = "03.jpg";
break;
}
}
</script>
</head>
<body onload="exibir('01')">
Navegue na nossa galeria:
<a href="#" onclick="javascript: exibir('01');">01</a> -
<a href="#" onclick="javascript: exibir('02');">02</a> -
<a href="#" onclick="javascript: exibir('03');">03</a>
<hr />
<img id="galeria">
</body>
</html>
Vitor Yudi Hansen
Extrair texto pdf com JAVA
Segue um método para extrair o texto de um PDF, para utilizar este método vocês devem baixar a lib PDFBox e utilizá-la no projeto. Esta é uma das funcionalidades desta lib.
public static String getConteudo(String arquivo){
File f = new File("pdf.pdf");
FileInputStream is = null;
try{
is = new FileInputStream(f);
}catch(IOException e){
System.out.println("ERRO: " + e.getMessage());
return null;
}
COSDocument pdfDocument = null;
try{
PDFParser parser = new PDFParser(is);
parser.parse();
pdfDocument = parser.getDocument();
PDFTextStripper stripper = new PDFTextStripper();
//Aqui retorna o texto
return stripper.getText(pdfDocument);
}catch (IOException e){
return "ERRO: Can't open stream" + e;
}catch (Throwable e){
return "ERRO: An error occurred while getting contents from PDF" + e;
}
finally
{
if (pdfDocument != null)
{
try
{
pdfDocument.close();
}catch (IOException e){
return "ERRO: Can't close pdf." + e;
}
}}}
Vitor Yudi Hansen
public static String getConteudo(String arquivo){
File f = new File("pdf.pdf");
FileInputStream is = null;
try{
is = new FileInputStream(f);
}catch(IOException e){
System.out.println("ERRO: " + e.getMessage());
return null;
}
COSDocument pdfDocument = null;
try{
PDFParser parser = new PDFParser(is);
parser.parse();
pdfDocument = parser.getDocument();
PDFTextStripper stripper = new PDFTextStripper();
//Aqui retorna o texto
return stripper.getText(pdfDocument);
}catch (IOException e){
return "ERRO: Can't open stream" + e;
}catch (Throwable e){
return "ERRO: An error occurred while getting contents from PDF" + e;
}
finally
{
if (pdfDocument != null)
{
try
{
pdfDocument.close();
}catch (IOException e){
return "ERRO: Can't close pdf." + e;
}
}}}
Vitor Yudi Hansen
Lendo e Escrevendo XML, JAVA + JDOM
Uma maniera bem simples e intuitiva de manipular xml com Java. Baixe a API JDOM. vale lembrar que JDOM é uma API Java, e não um parser.
Criando XML:
package br.com.exemplo.xml;
import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.XMLOutputter;
public class CriarXml {
public static void main(String[] args) {
//Declaração dos elementos que irão compor a estrutura do documento.
Element blog = new Element("blog");
Element post = new Element("post");
Element titulo = new Element("titulo");
Element data = new Element("data");
Element conteudo = new Element("conteudo");
//"Setando" os atributos e conteúdos
blog.setAttribute("id","1");
Attribute atributo = new Attribute("Autor","Vitor Yudi Hansen");
post.setAttribute(atributo);
blog.addContent(post);
post.addContent(titulo);
post.addContent(data);
post.addContent(conteudo);
//Criando Documento com JDOM
Document doc = new Document();
doc.setRootElement(blog);
titulo.setText("Lendo e escrevendo XML");
data.setText("18/05/2011");
conteudo.setText("JDOM + JAVA!");
try{
//escrevendo no Doc
XMLOutputter out = new XMLOutputter();
java.io.FileWriter writer = new java.io.FileWriter("exemplo.xml");
// Caminho físico do arquivo, outro ex: "C://exemplo.xml"
out.output(doc, writer);
writer.flush();
writer.close();
}catch(Exception e){
e.getMessage();
}
}
}
Lendo XMl:
package br.com.exemplo.xml;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
public class LendoXml {
public static void main(String[] args) {
try{
//Aqui você informa o nome do arquivo XML.
File f = new File("exemplo.xml");
//Criamos uma classe SAXBuilder que vai processar o XML
SAXBuilder sb = new SAXBuilder();
//Este documento agora possui toda a estrutura do arquivo.
Document d = sb.build(f);
//Recuperamos o elemento root
Element blog = d.getRootElement();
//Recuperamos os elementos filhos (children)
List elements = blog.getChildren();
Iterator i = elements.iterator();
while (i.hasNext()) {
Element element = (Element) i.next();
System.out.println("Post:"+ element.getAttributeValue("Autor"));
System.out.println("Titulo:"+ element.getChildText("titulo"));
System.out.println("Data:"+ element.getChildText("data"));
System.out.println("Conteudo:"+ element.getChildText("conteudo"));
}
}catch (Exception e) {
}
}
}
Vitor Yudi Hansen
Criando XML:
package br.com.exemplo.xml;
import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.XMLOutputter;
public class CriarXml {
public static void main(String[] args) {
//Declaração dos elementos que irão compor a estrutura do documento.
Element blog = new Element("blog");
Element post = new Element("post");
Element titulo = new Element("titulo");
Element data = new Element("data");
Element conteudo = new Element("conteudo");
//"Setando" os atributos e conteúdos
blog.setAttribute("id","1");
Attribute atributo = new Attribute("Autor","Vitor Yudi Hansen");
post.setAttribute(atributo);
blog.addContent(post);
post.addContent(titulo);
post.addContent(data);
post.addContent(conteudo);
//Criando Documento com JDOM
Document doc = new Document();
doc.setRootElement(blog);
titulo.setText("Lendo e escrevendo XML");
data.setText("18/05/2011");
conteudo.setText("JDOM + JAVA!");
try{
//escrevendo no Doc
XMLOutputter out = new XMLOutputter();
java.io.FileWriter writer = new java.io.FileWriter("exemplo.xml");
// Caminho físico do arquivo, outro ex: "C://exemplo.xml"
out.output(doc, writer);
writer.flush();
writer.close();
}catch(Exception e){
e.getMessage();
}
}
}
Lendo XMl:
package br.com.exemplo.xml;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
public class LendoXml {
public static void main(String[] args) {
try{
//Aqui você informa o nome do arquivo XML.
File f = new File("exemplo.xml");
//Criamos uma classe SAXBuilder que vai processar o XML
SAXBuilder sb = new SAXBuilder();
//Este documento agora possui toda a estrutura do arquivo.
Document d = sb.build(f);
//Recuperamos o elemento root
Element blog = d.getRootElement();
//Recuperamos os elementos filhos (children)
List elements = blog.getChildren();
Iterator i = elements.iterator();
while (i.hasNext()) {
Element element = (Element) i.next();
System.out.println("Post:"+ element.getAttributeValue("Autor"));
System.out.println("Titulo:"+ element.getChildText("titulo"));
System.out.println("Data:"+ element.getChildText("data"));
System.out.println("Conteudo:"+ element.getChildText("conteudo"));
}
}catch (Exception e) {
}
}
}
Vitor Yudi Hansen
segunda-feira, 16 de maio de 2011
Restringir o acesso a uma página somente a pessoas logadas
<?php // Inicia a SESSAO @session_start(); // Verifica se todas as sessões estão setadas (Estas seções são setadas na hora do login) if(isset($_SESSION['nome']) && isset($_SESSION['login']) && isset($_SESSION['senha'])) { // Recebe os valores das seções e coloca em variaveis $nome = $_SESSION['nome']; $login = base64_decode($_SESSION['login']); $senha = base64_decode($_SESSION['senha']); //exit; } else { // Caso as seções não estejam setadas, mandamos o cliente para a pagina de login header("Location: login.php"); exit(); } ?>
Vitor Yudi Hansen
Executando mais de um thread ao mesmo tempo
//file VariasThreads.java import javax.swing.*; import java.awt.event.*; import java.awt.*; class Escrita implements Runnable { private int i; private static int cont=0; private int identificacao; static JTextArea textArea = new JTextArea(20,60); static JScrollPane scroller = new JScrollPane(textArea); public void run() { while(true) { String result = ("Thread Número (" + identificacao + ") " + i ++ + "\n"); VariasThreads2.escreveResultado(result); try { Thread.sleep(500); } catch(InterruptedException e) { } } } public Escrita() { cont++; identificacao = cont; } } public class VariasThreads2 { static JTextArea textArea = new JTextArea(10,20); static JScrollPane scroller = new JScrollPane(textArea); public static void main(String[] args) { new Thread(new Escrita()).start(); new Thread(new Escrita()).start(); JOptionPane.showMessageDialog(null, scroller, "Várias Threads 2", JOptionPane.PLAIN_MESSAGE); } public static void escreveResultado(String result) { textArea.append(result); } }
Vitor Yudi Hansen
Validar CPF PHP
<?php
// Função que valida o CPF
function validaCPF($cpf)
{ // Verifiva se o número digitado contém todos os digitos
$cpf = str_pad(ereg_replace('[^0-9]', '', $cpf), 11, '0', STR_PAD_LEFT);
// Verifica se nenhuma das sequências abaixo foi digitada, caso seja, retorna falso
if (strlen($cpf) != 11 || $cpf == '00000000000' || $cpf == '11111111111' || $cpf == '22222222222' || $cpf == '33333333333' || $cpf == '44444444444' || $cpf == '55555555555' || $cpf == '66666666666' || $cpf == '77777777777' || $cpf == '88888888888' || $cpf == '99999999999')
{
return false;
}
else
{ // Calcula os números para verificar se o CPF é verdadeiro
for ($t = 9; $t < 11; $t++) {
for ($d = 0, $c = 0; $c < $t; $c++) {
$d += $cpf{$c} * (($t + 1) - $c);
}
$d = ((10 * $d) % 11) % 10;
if ($cpf{$c} != $d) {
return false;
}
}
return true;
}
}
// Verifica se o botão de validação foi acionado
if(isset($_POST['btvalidar']))
{// Adiciona o numero enviado na variavel $cpf_enviado, poderia ser outro nome, e executa a função acima
$cpf_enviado = validaCPF($_POST['cpf']);
// Verifica a resposta da função e exibe na tela
if($cpf_enviado == true)
echo "CPF VERDADEIRO";
elseif($cpf_enviado == false)
echo "CPF FALSO";
}
?>
<html>
<head>
</head>
<body>
<form action="valida_cpf.php" method="post" name="cpf" id="cpf">
CPF:
<label>
<input name="cpf" type="text" id="cpf" size="11" maxlength="11">
</label>
<label>
<input name="btvalidar" type="submit" id="btvalidar" value=" Validar ">
</label>
</form>
</body>
</html>
Vitor Yudi Hansen
// Função que valida o CPF
function validaCPF($cpf)
{ // Verifiva se o número digitado contém todos os digitos
$cpf = str_pad(ereg_replace('[^0-9]', '', $cpf), 11, '0', STR_PAD_LEFT);
// Verifica se nenhuma das sequências abaixo foi digitada, caso seja, retorna falso
if (strlen($cpf) != 11 || $cpf == '00000000000' || $cpf == '11111111111' || $cpf == '22222222222' || $cpf == '33333333333' || $cpf == '44444444444' || $cpf == '55555555555' || $cpf == '66666666666' || $cpf == '77777777777' || $cpf == '88888888888' || $cpf == '99999999999')
{
return false;
}
else
{ // Calcula os números para verificar se o CPF é verdadeiro
for ($t = 9; $t < 11; $t++) {
for ($d = 0, $c = 0; $c < $t; $c++) {
$d += $cpf{$c} * (($t + 1) - $c);
}
$d = ((10 * $d) % 11) % 10;
if ($cpf{$c} != $d) {
return false;
}
}
return true;
}
}
// Verifica se o botão de validação foi acionado
if(isset($_POST['btvalidar']))
{// Adiciona o numero enviado na variavel $cpf_enviado, poderia ser outro nome, e executa a função acima
$cpf_enviado = validaCPF($_POST['cpf']);
// Verifica a resposta da função e exibe na tela
if($cpf_enviado == true)
echo "CPF VERDADEIRO";
elseif($cpf_enviado == false)
echo "CPF FALSO";
}
?>
<html>
<head>
</head>
<body>
<form action="valida_cpf.php" method="post" name="cpf" id="cpf">
CPF:
<label>
<input name="cpf" type="text" id="cpf" size="11" maxlength="11">
</label>
<label>
<input name="btvalidar" type="submit" id="btvalidar" value=" Validar ">
</label>
</form>
</body>
</html>
Vitor Yudi Hansen
Transformar XML em um Array
<?php /* Este código pega conteúdo de qualquer arquivo xml e transforma em um array multidimensional. Para utilizar, passe a URL ou caminho para o arquivo XML. Exemplo: $array = xml2array('http://seusite.com.br/arquivo.xml',array()); */ function xml2array($source,$arr){ $xml = simplexml_load_string(file_get_contents($source)); $iter = 0; foreach($xml->children() as $b){ $a = $b->getName(); if(!$b->children()){ $arr[$a] = trim($b[0]); } else{ $arr[$a][$iter] = array(); $arr[$a][$iter] = xml2phpArray($b,$arr[$a][$iter]); } $iter++; } return $arr; } ?>
Vitor Yudi Hansen
Transformar XML em um Array
<?php /* Este código pega conteúdo de qualquer arquivo xml e transforma em um array multidimensional. Para utilizar, passe a URL ou caminho para o arquivo XML. Exemplo: $array = xml2array('http://seusite.com.br/arquivo.xml',array()); */ function xml2array($source,$arr){ $xml = simplexml_load_string(file_get_contents($source)); $iter = 0; foreach($xml->children() as $b){ $a = $b->getName(); if(!$b->children()){ $arr[$a] = trim($b[0]); } else{ $arr[$a][$iter] = array(); $arr[$a][$iter] = xml2phpArray($b,$arr[$a][$iter]); } $iter++; } return $arr; } ?>
Vitor Yudi Hansen
Validar Cpf e CNPJ
public class CNP {
private static final int[] pesoCPF = {11, 10, 9, 8, 7, 6, 5, 4, 3, 2};
private static final int[] pesoCNPJ = {6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2};
private static int calcularDigito(String str, int[] peso) {
int soma = 0;
for (int indice=str.length()-1, digito; indice >= 0; indice-- ) {
digito = Integer.parseInt(str.substring(indice,indice+1));
soma += digito*peso[peso.length-str.length()+indice];
}
soma = 11 - soma % 11;
return soma > 9 ? 0 : soma;
}
public static boolean isValidCPF(String cpf) {
if ((cpf==null) || (cpf.length()!=11)) return false;
Integer digito1 = calcularDigito(cpf.substring(0,9), pesoCPF);
Integer digito2 = calcularDigito(cpf.substring(0,9) + digito1, pesoCPF);
return cpf.equals(cpf.substring(0,9) + digito1.toString() + digito2.toString());
}
public static boolean isValidCNPJ(String cnpj) {
if ((cnpj==null)||(cnpj.length()!=14)) return false;
Integer digito1 = calcularDigito(cnpj.substring(0,12), pesoCNPJ);
Integer digito2 = calcularDigito(cnpj.substring(0,12) + digito1, pesoCNPJ);
return cnpj.equals(cnpj.substring(0,12) + digito1.toString() + digito2.toString());
}
public static void main(String[] args) {
System.out.printf("CPF Valido:%s \n", CNP.isValidCPF("01115375502"));
System.out.printf("CNPJ Valido:%s \n", CNP.isValidCNPJ("13642634756318"));
}
}
Vitor Yudi Hansen
private static final int[] pesoCPF = {11, 10, 9, 8, 7, 6, 5, 4, 3, 2};
private static final int[] pesoCNPJ = {6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2};
private static int calcularDigito(String str, int[] peso) {
int soma = 0;
for (int indice=str.length()-1, digito; indice >= 0; indice-- ) {
digito = Integer.parseInt(str.substring(indice,indice+1));
soma += digito*peso[peso.length-str.length()+indice];
}
soma = 11 - soma % 11;
return soma > 9 ? 0 : soma;
}
public static boolean isValidCPF(String cpf) {
if ((cpf==null) || (cpf.length()!=11)) return false;
Integer digito1 = calcularDigito(cpf.substring(0,9), pesoCPF);
Integer digito2 = calcularDigito(cpf.substring(0,9) + digito1, pesoCPF);
return cpf.equals(cpf.substring(0,9) + digito1.toString() + digito2.toString());
}
public static boolean isValidCNPJ(String cnpj) {
if ((cnpj==null)||(cnpj.length()!=14)) return false;
Integer digito1 = calcularDigito(cnpj.substring(0,12), pesoCNPJ);
Integer digito2 = calcularDigito(cnpj.substring(0,12) + digito1, pesoCNPJ);
return cnpj.equals(cnpj.substring(0,12) + digito1.toString() + digito2.toString());
}
public static void main(String[] args) {
System.out.printf("CPF Valido:%s \n", CNP.isValidCPF("01115375502"));
System.out.printf("CNPJ Valido:%s \n", CNP.isValidCNPJ("13642634756318"));
}
}
Vitor Yudi Hansen
Válidar CPF JAVASCRIPT
function valida_cpf(cpf){
var numeros, digitos, soma, i, resultado, digitos_iguais;
digitos_iguais = 1;
if (cpf.length < 11)
return false;
for (i = 0; i < cpf.length - 1; i++)
if (cpf.charAt(i) != cpf.charAt(i + 1))
{
digitos_iguais = 0;
break;
}
if (!digitos_iguais)
{
numeros = cpf.substring(0,9);
digitos = cpf.substring(9);
soma = 0;
for (i = 10; i > 1; i--)
soma += numeros.charAt(10 - i) * i;
resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
if (resultado != digitos.charAt(0))
return false;
numeros = cpf.substring(0,10);
soma = 0;
for (i = 11; i > 1; i--)
soma += numeros.charAt(11 - i) * i;
resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
if (resultado != digitos.charAt(1))
return false;
return true;
}
else
return false;
}
Vitor Yudi Hansen
var numeros, digitos, soma, i, resultado, digitos_iguais;
digitos_iguais = 1;
if (cpf.length < 11)
return false;
for (i = 0; i < cpf.length - 1; i++)
if (cpf.charAt(i) != cpf.charAt(i + 1))
{
digitos_iguais = 0;
break;
}
if (!digitos_iguais)
{
numeros = cpf.substring(0,9);
digitos = cpf.substring(9);
soma = 0;
for (i = 10; i > 1; i--)
soma += numeros.charAt(10 - i) * i;
resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
if (resultado != digitos.charAt(0))
return false;
numeros = cpf.substring(0,10);
soma = 0;
for (i = 11; i > 1; i--)
soma += numeros.charAt(11 - i) * i;
resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
if (resultado != digitos.charAt(1))
return false;
return true;
}
else
return false;
}
Vitor Yudi Hansen
quarta-feira, 11 de maio de 2011
Importar e Exportar arquivo .txt
Código para Ler arquivo .txt
ou gravar!
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JOptionPane;
public class ManipularArquivo {
public static void arquivoSalvar(String endereco, String nome, String conteudo) throws IOException{
File diretorio = new File("endereco");
diretorio.mkdir();
if (diretorio.isDirectory()){
FileWriter arquivo = new FileWriter(endereco+Nome+".txt", false);
arquivo.write(conteudo);
arquivo.close();
}
}
public static String arquivoAbrir() throws IOException{
FileReader arquivo = new FileReader("ArquivoSalvo");
String conteudo = "";
int i;
while ((i = arquivo.read())!=-1) {
conteudo += (char)(i);
}
arquivo.close();
return conteudo;
}
}
Vitor Yudi Hansen
ou gravar!
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JOptionPane;
public class ManipularArquivo {
public static void arquivoSalvar(String endereco, String nome, String conteudo) throws IOException{
File diretorio = new File("endereco");
diretorio.mkdir();
if (diretorio.isDirectory()){
FileWriter arquivo = new FileWriter(endereco+Nome+".txt", false);
arquivo.write(conteudo);
arquivo.close();
}
}
public static String arquivoAbrir() throws IOException{
FileReader arquivo = new FileReader("ArquivoSalvo");
String conteudo = "";
int i;
while ((i = arquivo.read())!=-1) {
conteudo += (char)(i);
}
arquivo.close();
return conteudo;
}
}
Vitor Yudi Hansen
terça-feira, 10 de maio de 2011
Pioneer lança GPS com realidade aumentada
A Pioneer do Japão lançou uma série de aparelhos de GPS com realidade aumentada. Os modelos AVIC-VH09CS, AVIC-VH09, AVIC-ZH09CS e AVIC-ZH09 serão os primeiros do mundo a ter esse recurso, de acordo com a fabricante.
Os navegadores funcionarão em conjunto com uma câmera instalada na parte externa do para-brisa do carro. O sistema fará capturas que são exibidas em tempo real no GPS. A tela do aparelho combina as imagens com instruções, como setas, e marcadores de tempo e velocidade.
Além da realidade aumentada, os aparelhos terão tela Wide VGA, receptor de TV digital e Bluetooth, leitor de CD e DVD, interface para cartão de memória e conexão USB. Serão, enfim, centros de mídia para os carros.
Os quatro aparelhos de GPS estarão disponíveis no Japão até o fim de maio, diz a Pioneer. A empresa ainda não divulgou os preços.
Fonte: http://info.abril.com.br/noticias/blogs/gadgets/gps/pioneer-lanca-gps-com-realidade-aumentada/
Vitor Yudi Hansen
Os navegadores funcionarão em conjunto com uma câmera instalada na parte externa do para-brisa do carro. O sistema fará capturas que são exibidas em tempo real no GPS. A tela do aparelho combina as imagens com instruções, como setas, e marcadores de tempo e velocidade.
Além da realidade aumentada, os aparelhos terão tela Wide VGA, receptor de TV digital e Bluetooth, leitor de CD e DVD, interface para cartão de memória e conexão USB. Serão, enfim, centros de mídia para os carros.
Os quatro aparelhos de GPS estarão disponíveis no Japão até o fim de maio, diz a Pioneer. A empresa ainda não divulgou os preços.
Fonte: http://info.abril.com.br/noticias/blogs/gadgets/gps/pioneer-lanca-gps-com-realidade-aumentada/
Vitor Yudi Hansen
segunda-feira, 9 de maio de 2011
Busque recursos para sua startup
SÃO PAULO - Empreendedores com uma grande ideia na cabeça e um projeto bem desenhado podem recorrer a diversos fundos de investimento para conseguir o capital necessário para colocar seu plano em prática.
Na edição de maio da INFO, uma reportagem conta como recursos de empresas de venture capital, investidores-anjo e até do governo têm impulsionado negócios digitais inovadores.
A matéria mostra que estamos num momento tão bom para as startups que chega a sobrar dinheiro no mercado, à espera de iniciativas diferenciadas.
No site da INFO, publicamos uma relação de sites que podem ajudar empreendedores a conseguir apoio para seu projeto tornar-se realidade.
Uma dica preciosa dos especialistas é ter um plano de negócios consistente para conseguir convencer os investidores.
- Investidores-anjo
Aceleradora
São Paulo Anjos
Gávea Angels
Floripa Angels
- Fundos de capital semente
Criatec
Inovar Semente
- Investimento público e incubadoras
Prime, da Finep
Pipe, da Fapesp
Cietec
Inova Unicamp
- Fundos de Venture Capital
Astella Investimentos
Benchmark Capital
FIR Capital
Confrapar
Intel Capital
Monashees Capital –
- Notícias sobre empreendedorismo
ReadWriteWeb
Startupi
- Dicas e aconselhamento
Manual da Startup
Brazil Innovators
Endeavor Brasil
Anprotec
Microsoft BizSpark
BR New Tech
- Competições
Desafio Brasil
Startup Weekend
Campuseiros Empreendem
http://info.abril.com.br/noticias/mercado/busque-recursos-para-sua-startup-09052011-44.shl
Vitor Yudi Hansen
Na edição de maio da INFO, uma reportagem conta como recursos de empresas de venture capital, investidores-anjo e até do governo têm impulsionado negócios digitais inovadores.
A matéria mostra que estamos num momento tão bom para as startups que chega a sobrar dinheiro no mercado, à espera de iniciativas diferenciadas.
No site da INFO, publicamos uma relação de sites que podem ajudar empreendedores a conseguir apoio para seu projeto tornar-se realidade.
Uma dica preciosa dos especialistas é ter um plano de negócios consistente para conseguir convencer os investidores.
- Investidores-anjo
Aceleradora
São Paulo Anjos
Gávea Angels
Floripa Angels
- Fundos de capital semente
Criatec
Inovar Semente
- Investimento público e incubadoras
Prime, da Finep
Pipe, da Fapesp
Cietec
Inova Unicamp
- Fundos de Venture Capital
Astella Investimentos
Benchmark Capital
FIR Capital
Confrapar
Intel Capital
Monashees Capital –
- Notícias sobre empreendedorismo
ReadWriteWeb
Startupi
- Dicas e aconselhamento
Manual da Startup
Brazil Innovators
Endeavor Brasil
Anprotec
Microsoft BizSpark
BR New Tech
- Competições
Desafio Brasil
Startup Weekend
Campuseiros Empreendem
http://info.abril.com.br/noticias/mercado/busque-recursos-para-sua-startup-09052011-44.shl
Vitor Yudi Hansen
Inverter Link PHP
Código para inverter links em php
Vitor Yudi Hansen
<?php if ($link = $_POST["link"]) { $tamanho = strlen($link) - 1; $aux = $link; for ($i=0; $i <= $tamanho; $i++) { $aux[$i] = $link[$tamanho - $i]; } $link = $aux; $aux = ""; if (substr_count($link,"http://")) echo "<a href='$link'>$link</a><br>"; else echo "<a href='http://$link'>$link</a><br>"; } else echo "Escolha Um Link.<br>"; echo "</center>"; ?>
Vitor Yudi Hansen
Detectando dispositivos móveis
Um script simples para detectar dispositivos moveis!
Vitor Yudi Hansen
<script language="JavaScript"> function isMob(){ var a = navigator.userAgent||navigator.vendor||window.opera; if(/android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|mobile|o2|opera m(ob|in)i|palm( os)?|p(ixi|re)\/|plucker|pocket|psp|smartphone|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce; (iemobile|ppc)|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i.test(a)) return true; else return false; } /* Exemplo Função */ alert("Celular : " + isMob()); </script>
Vitor Yudi Hansen
Código para leitura dados de um RSS externo com PHP
Nesse Post faremos um código para ler dados rss
bem simples e bem fácil de alterar!!
Vitor Yudi Hansen
bem simples e bem fácil de alterar!!
<?php ini_set('http://rss.noticias.uol.com.br/ultnot/index.xml', 0); $max = 3; // $max e o numero de noticias q vc quer exibir $cont = 0; // limita a noticias // caminho da fonte RSS $FonteRSS = 'http://rss.noticias.uol.com.br/ultnot/index.xml'; // Converte um arquivo XML em um objeto $XML = simplexml_load_file( $FonteRSS ); // lista o conteúdo do arquivo RSS foreach ( $XML->channel->item as $item ) { if($cont < $max){ print '<div id="not"><a class="link" href="' . utf8_decode($item->link) . '"target="_blank">' . utf8_decode($item->title)."</div>"; } $cont++; } ?>
Vitor Yudi Hansen
Golpe do iPad faz vítimas no Facebook
SÃO PAULO - Usuários do Facebook estão recebendo ofertas de um iPad grátis para testes. Mas o tablet é apenas uma isca para levar as pessoas a revelar seus dados pessoais, como endereço residencial e e-mail.
O ataque foi relatado pela BitDefender, empresa especializada em segurança. Ele emprega um caminho tortuoso, com duas iscas para enganar o usuário. Primeiro, a pessoa recebe uma notificação em sua página do Facebook e um e-mail informando que ela foi nomeada administradora de uma determinada conta na rede social. A ideia é levar a vítima a visitar a página onde estariam os detalhes sobre essa mudança de conta.
A página aparenta ser do Facebook, mas foi criada pelos cibercriminosos. O usuário é, então, redirecionado a outra página maligna, onde recebe a oferta de experimentar um iPad 2, da Apple. O site informa que a Apple estaria oferecendo 10 mil tablets para os usuários fazerem um test drive. Para receber o seu, a pessoa deve preencher um formulário com vários dados pessoais, incluindo seu endereço residencial, para onde seria enviado o iPad.
A nova ameaça vem se juntar a outros tipos de ataques que já vêm acontecendo no Facebook, como os aplicativos malignos que enganam o usuário. "Esse golpe é muito agressivo e eficiente porque usa dois mecanismos de divulgação específicos do Facebook que dão boa visibilidade: notificações e e-mail direto", avalia Catalin Cosoi, chefe do Laboratório da BitDefender de ameaças online.
O ataque também tem a peculiaridade de empregar duas iscas: a curiosidade sobre a página que a pessoa teria passado a administrar e o iPad. Para evitar a armadilha, a primeira – e óbvia – recomendação é não preencher o tal formulário. Em segundo lugar, a pessoa deve remover seu nome da lista de administradores da página maligna. As instruções para isso estão disponíveis no próprio Facebook.
http://info.abril.com.br/noticias/seguranca/golpe-do-ipad-faz-vitimas-no-facebook-08052011-6.shl
Vitor Yudi Hansen
O ataque foi relatado pela BitDefender, empresa especializada em segurança. Ele emprega um caminho tortuoso, com duas iscas para enganar o usuário. Primeiro, a pessoa recebe uma notificação em sua página do Facebook e um e-mail informando que ela foi nomeada administradora de uma determinada conta na rede social. A ideia é levar a vítima a visitar a página onde estariam os detalhes sobre essa mudança de conta.
A página aparenta ser do Facebook, mas foi criada pelos cibercriminosos. O usuário é, então, redirecionado a outra página maligna, onde recebe a oferta de experimentar um iPad 2, da Apple. O site informa que a Apple estaria oferecendo 10 mil tablets para os usuários fazerem um test drive. Para receber o seu, a pessoa deve preencher um formulário com vários dados pessoais, incluindo seu endereço residencial, para onde seria enviado o iPad.
A nova ameaça vem se juntar a outros tipos de ataques que já vêm acontecendo no Facebook, como os aplicativos malignos que enganam o usuário. "Esse golpe é muito agressivo e eficiente porque usa dois mecanismos de divulgação específicos do Facebook que dão boa visibilidade: notificações e e-mail direto", avalia Catalin Cosoi, chefe do Laboratório da BitDefender de ameaças online.
O ataque também tem a peculiaridade de empregar duas iscas: a curiosidade sobre a página que a pessoa teria passado a administrar e o iPad. Para evitar a armadilha, a primeira – e óbvia – recomendação é não preencher o tal formulário. Em segundo lugar, a pessoa deve remover seu nome da lista de administradores da página maligna. As instruções para isso estão disponíveis no próprio Facebook.
http://info.abril.com.br/noticias/seguranca/golpe-do-ipad-faz-vitimas-no-facebook-08052011-6.shl
Vitor Yudi Hansen
sábado, 7 de maio de 2011
Android domina mercado de smartphones
HELSINQUE - A plataforma Google Android subiu à posição dominante no mercado de celulares inteligentes no primeiro trimestre, informou ontem o grupo de pesquisa Canalys, ampliando sua vantagem sobre a Nokia.
A notícia destaca a velocidade com que o Google, que oferece seu software gratuitamente aos fabricantes de celulares, chegou à liderança no mercado de celulares inteligentes, deixando para trás também a Apple.
Google e Apple revolucionaram o mercado de celulares inteligentes em poucos anos, causando sérios problemas para a antiga líder de mercado Nokia.
HTC, Samsung Electronics, Sony Ericsson, Motorola Mobility e LG Electronics estão todas apostando no Google Android para construir posição forte no mercado de celulares inteligentes, que cresce rapidamente.
A Canalys informou que o mercado de celulares inteligentes avançados cresceu em 83 por cento no primeiro trimestre, ante o mesmo período em 2010, atingindo os 101 milhões de unidades vendidas.
Enquanto a plataforma de software do Google ampliava sua participação a 35 por cento, ante menos de 10 por cento um ano antes, a plataforma Nokia Symbian registrava queda de 45 por cento para 26 por cento do mercado.
O levantamento da Canalys indicava que o Android já havia conquistado a liderança do mercado no quarto trimestre, mas a distância era pequena e outros analistas ainda consideravam que a Symbian detivesse a liderança do mercado.
Para tentar reparar sua posição debilitada nos celulares inteligentes, a Nokia anunciou em fevereiro um acordo para usar o software Microsoft Windows Phone em seus aparelhos, em lugar do Symbian.
A Canalys avalia que esse anúncio tenha enfraquecido ainda mais a posição da Nokia nos mercados em que as operadoras distribuem celulares aos clientes.
As vendas de celulares inteligentes da Nokia no primeiro trimestre caíram em 20 por cento em seu mercado de origem, a Europa Ocidental, com relação ao primeiro trimestre de 2010.
http://info.abril.com.br/noticias/mercado/android-domina-mercado-de-smartphones-05052011-2.shlVitor Yudi Hansen
Livre-se do SQL
Introdução
Hibernate é um mecanismo bem simples e poderoso que permite a persistência de objetos em banco de dados relacionais de maneira transparente e para qualquer tipo de aplicação Java (seja ela web-based ou desktop-based). Ou seja, ao invés de perder tempo escrevendo SQL, misturando estas consultas no meio do seu código Java e ficar mapeando o resultado de suas consultas para objetos, com o Hibernate você vai precisar se preocupar somente com seus objetos. Além disso, o processo de desenvolvimento usando Hibernate é muito mais simples do que usar JDBC puro. Com Hibernate, você só tem estes 5 passos:
Criando a tabela e a classe
Vamos começar definindo uma tabela simples no banco de dados.
CREATE TABLE 'amigos'( 'nome' varchar(40) NOT NULL DEFAULT '', 'endereco' varchar(60) NOT NULL DEFAULT '', 'fone' varchar(11) DEFAULT NULL, 'cel' varchar(11) DEFAULT NULL, 'email' varchar(70) DEFAULT NULL, 'nascimento' datetime DEFAULT NULL, PRIMARY KEY (`nome`) );
nota: esse passo pode ser pulado, se você utilizar as ferramentas que acompanham o Hibernate, que já geram o código de criação das tabelas (SchemaExport). Pronto. Uma tabela para que eu possa guardar os dados dos meus amigos, como se fosse uma agenda. Agora vamos para o próximo passo, que é a reprensentação disso em forma de objeto em Java. Como o Hibernate trabalha através de reflexão para fazer o mapeamento, temos que "beanificar" nosso objeto. Assim:
public class Amigo { private String nome; private String endereco; private String telefone; private String celular; private String email; private java.util.Date nascimento; public Amigo() { } public String getNome(){ return nome; } public void setNome(String nome){ this.nome = nome; } // os outros métodos get/set vão aqui... public java.util.Date getNascimento(){ return nascimento; } public void setNascimento(java.util.Date nascimento){ this.nascimento = nascimento; } }
Nada muito complicado até aqui, certo? Criamos uma tabela e um bean que "representa" o esquema desta nossa tabela. Então nos falta informar ao Hibernate como juntar os dois. Para fazermos isso, é preciso criar um arquivo de mapeamento, cujo nome deve ser sempre "NomeDoObjeto.hbm.xml" (no nosso caso, "Amigo.hbm.xml"); cada objeto a ser persistido tem seu próprio arquivo de mapeamento.
O XML que faz o mapeamento
O modelo para o nosso Amigo.hbm.xml segue abaixo:
O modelo para o nosso Amigo.hbm.xml segue abaixo:
Coisas para as quais deve se ter atenção:
hibernate.connection.driver_class = org.gjt.mm.mysql.Driver # o driver hibernate.connection.url = jdbc:mysql://localhost:3306/agenda # a url hibernate.connection.username = daniel # o username hibernate.connection.password = senha # a senha
Dê a ele o nome que você quiser (agenda.properties, por exemplo). Porém, se você der a este arquivo o nome de hibernate.properties e colocá-lo no seu classpath, o Hibernate irá carregá-lo automaticamente durante a início do programa. Até aqui temos:
Manipulando os dados
Agora vamos brincar de persistir, criando nosso DAO!!!
import cirrus.hibernate.*; import java.util.Date; public class AmigoDAO{ private SessionFactory factory; public AmigoDAO() throws Exception{ Datastore datastore = Hibernate.createDatastore(); datastore.storeClass(Amigo.class); factory = datastore.buildSessionFactory(); } public void insert(Amigo amigo) throws Exception{ Session session = factory.openSession(); session.save(amigo); session.flush(); session.close(); } public java.util.List getList(String condicao) throws Exception{ Session session = factory.openSession(); List amigos = session.find(condicao); session.flush(); session.close(); return amigos; } public Amigo retrieve(String pk) throws Exception{ Session session = factory.openSession(); Amigo amigo = (Amigo)session.load(Amigo.class, pk); session.flush(); session.close(); return amigo; } public void delete(Amigo amigo) throws Exception{ Session session = factory.openSession(); session.delete(amigo); session.flush(); session.close(); } }
Bom, algumas coisas acima tem que ser ressaltadas:
from in class where
O Hibernate possui uma query language própria, orientada a objetos. Bom, este é quase um "hello world" para se trabalhar com o Hibernate. Algumas coisas, como controle de transação e foreign keys, não foram abordadas e vão ficar para um próximo tutorial. A finalidade deste aqui é só a de mostrar uma alternativa ao "JDBC puro" na construção de sistemas que precisem de banco de dados como meio de persistência. Dúvidas, críticas, erros, usem o nosso fórum. p.s.: Devido ao fato de muitos estarem usando a versão 2 do Hibernate, é preciso se atentar às mudanças entre as duas versões, como a alteração do nome dos pacotes (de cirrus.hibernate.* para net.sf.hibernate), entre outras coisas. Para maiores informações sobre como portar suas aplicações da versão 1.x.x do Hibernate para a versão 2.x.x, visite: http://hibernate.org/68.html.
Fonte: http://guj.com.br/Vitor Yudi Hansen
Assinar:
Postagens (Atom)