O maior perigo da Internet não é a pirataria

Se engana quem pensa que o maior perigo da internet é a pirataria como nós a conhecemos, existem problemas muito mais graves como este que vamos falar.

Hoje existe uma preocupação crescente sobre pirataria, principalmente estúdios fazendo (ou forçando) megaoperações visando impor até mesmo restrições a serviços como o Netflix, tudo em nome de uma visão mercadológica antiquada que luta para sobreviver na era digital, porém o maior perigo da internet não é esta pirataria de filmes e músicas em que o simples usuário faz o download vez ou outra, o problema é muito mais grave e já está fortemente estabelecido.

O maior perigo da Internet não é a pirataria

O maior perigo da Internet não é a pirataria

Há um tempo atrás o FBI localizou a “loja on-line” Silk Road que operava na Deep Web e comercializava diversos produtos ilegais, porém como o sistema já estava estabelecido uma nova loja tomou o seu lugar, a bola da vez era a Evolution que chegou com mais recursos de segurança e muito mais opções acerca dos produtos e serviços oferecidos.

Neste meio tempo ainda foi lançada a Silk Road 2, porém seus servidores foram comprometidos e diversos usuários tiverem suas contas de Bitcoins roubadas, coisa que na Evolution é praticamente impossível de acontecer já que ela implementa algo chamado de carteira compartilhada onde em três pontas diferentes (comprador, vendedor e servidor) pelo menos duas precisam autorizar uma transação de Bitcoin.

Mas o maior perigo da internet não está localizado em uma loja underground da Deep Web, o problema maior reside na “política comercial” adotada pela Evolution.

Enquanto a Silk Road não permitia transações de produtos destinados a ferir pessoas a Evolution não se preocupa com estes “termos éticos” e permite a comercialização de praticamente tudo, desde dados frutos de roubo de senhas até mesmo encomenda de assassinatos e tudo isso pago com Bitcoins.

Enquanto gravadoras gigantes se preocupam com simples usuários que baixam poucos Megabytes de músicas por ano e pressionam governos para que a fiscalização e leis punam tais “infratores” com severidade extrema, o maior perigo da internet se espalha e se ramifica sem grandes preocupações e a julgar pela organização da Evolution e o modo que o lugar antes ocupado pela Silk Road foi rapidamente preenchido podemos crer que igual ocorre no mundo real o crime organizado já se infiltrou de tal maneira no mundo digital que mesmo que a Evolution seja fechada outra irá tomar o seu lugar, com um grau de refinamento ainda maior.

O maior perigo da internet se prolifera a passos largos e está cada vez mais organizado e difícil de combater, quem dirá de ser exterminado.

Leia mais:

Como criar uma planilha com JXL no Java

Veja um exemplo completo de como criar uma planilha com JXL no Java e automatize processos repetitivos na sua empresa e deixe o trabalho manual de lado.

Uma dúvida bem recorrente é como criar uma planilha com JXL no Java (aqui eu já mostro como ler uma planilha do Excel) para automatizar processos para criação de planilhas do Excel, com a API JExcel, antes de utilizar o exemplo não se esqueça de fazer o download da página do projeto.

Como criar uma planilha com JXL no Java

Como criar uma planilha com JXL no Java

Veja nosso exemplo:

package br.com.gualda.teste.tutorial.jexcel;
 
import java.io.File;
import java.io.IOException;
import java.util.Locale;
 
import jxl.CellView;
import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.write.Formula;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
 
public class TutorialJExcel {
 
private WritableCellFormat timesBoldUnderline;
private WritableCellFormat times;
private String inputArquivo;
 
// Exemplo de Como criar uma planilha com JXL no Java
public void setOutputFile(String inputArquivo) {
this.inputArquivo = inputArquivo;
}
 
// Método responsável por fazer a escrita, a inserção dos dados na planilha
public void insere() throws IOException, WriteException {
// Cria um novo arquivo
File arquivo = new File(inputArquivo);
WorkbookSettings wbSettings = new WorkbookSettings();
 
wbSettings.setLocale(new Locale("pt", "BR"));
 
WritableWorkbook workbook = Workbook.createWorkbook(arquivo, wbSettings);
// Define um nome para a planilha
workbook.createSheet("Jexcel", 0);
WritableSheet excelSheet = workbook.getSheet(0);
criaLabel(excelSheet);
defineConteudo(excelSheet);
 
workbook.write();
workbook.close();
}
 
// Método responsável pela definição das labels
private void criaLabel(WritableSheet sheet)
throws WriteException {
// Cria o tipo de fonte como TIMES e tamanho
WritableFont times10pt = new WritableFont(WritableFont.TIMES, 10);
 
// Define o formato da célula
times = new WritableCellFormat(times10pt);
 
// Efetua a quebra automática das células
times.setWrap(true);
 
// Cria a fonte em negrito com underlines
WritableFont times10ptBoldUnderline = new WritableFont(
WritableFont.ARIAL, 10, WritableFont.BOLD, false);
//UnderlineStyle.SINGLE);
timesBoldUnderline = new WritableCellFormat(times10ptBoldUnderline);
 
// Efetua a quebra automática das células
timesBoldUnderline.setWrap(true);
 
CellView cv = new CellView();
cv.setFormat(times);Bom pessoal, é isso ai, qualquer dúvida é só avisar.
cv.setFormat(timesBoldUnderline);
cv.setAutosize(true);
 
// Escreve os cabeçalhos
addCaption(sheet, 0, 0, "Coluna 1");
addCaption(sheet, 1, 0, "Coluna 2");
addCaption(sheet, 2, 0, "Coluna 3");
}
 
private void defineConteudo(WritableSheet sheet) throws WriteException,
RowsExceededException {
// Escreve alguns números
for (int i = 1; i < 10; i++) {
// Primeira coluna
addNumero(sheet, 0, i, i + 10);
// Segunda coluna
addNumero(sheet, 1, i, i * i);
// Terceira coluna
addNumero(sheet, 2, i, 10 - i);
}
 
// Efetua a soma das colunas criadas anteriormente
StringBuffer buf = new StringBuffer();
buf.append("SUM(A2:A10)");
Formula f = new Formula(0, 10, buf.toString());
sheet.addCell(f);
buf = new StringBuffer();
buf.append("SUM(B2:B10)");
f = new Formula(1, 10, buf.toString());
sheet.addCell(f);
buf = new StringBuffer();
buf.append("SUM(C2:C10)");
f = new Formula(2, 10, buf.toString());
sheet.addCell(f);
 
// Agora vamos inserir algum texto nas colunas
for (int i = 12; i < 20; i++) {
// Primeira coluna
addLabel(sheet, 0, i, "JExcel " + i);
// Segunda coluna
addLabel(sheet, 1, i, "Tutorial");
// Terceira coluna
addLabel(sheet, 2, i, "Exemplo" + (10 - i));
}
}
 
// Adiciona cabecalho
private void addCaption(WritableSheet planilha, int coluna, int linha, String s)
throws RowsExceededException, WriteException {
Label label;
label = new Label(coluna, linha, s, timesBoldUnderline);
planilha.addCell(label);
}
 
private void addNumero(WritableSheet planilha, int coluna, int linha,
Integer integer) throws WriteException, RowsExceededException {
Number numero;
numero = new Number(coluna, linha, integer, times);
planilha.addCell(numero);
}
 
private void addLabel(WritableSheet planilha, int coluna, int linha, String s)
throws WriteException, RowsExceededException {
Label label;
label = new Label(coluna, linha, s, times);
planilha.addCell(label);
}
 
public static void main(String[] args) {
//                WritableWorkbook workbookIn;
TutorialJExcel exemplo = new TutorialJExcel();
// Define o caminho e nome do arquivo que será criado
exemplo.setOutputFile("/tmp/ExemploJExcel.xls");
try {
exemplo.insere();
} catch (WriteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out
.println("Agora, vá até a pasta definida anteriormente e verifique o resultado em: /tmp/ExemploJExcel.xls ");
}
 
}

O código é bem completo e observando os comentários dá para entender claramente o que está sendo feito.

Agora você já sabe como criar uma planilha com JXL no Java, qualquer dúvida é só utilizar os comentários abaixo.

Como criar uma planilha com JXL no Java é mais fácil, embora o código seja um pouco extenso, ele cobre todos os procedimentos mais comuns que precisamos ao criar uma planilha.

Fonte: brunogualda

Leia mais:

Como fazer ancora dinâmica com JQuery

Um bom efeito de transição pode diferenciar seu site, veja como fazer ancora dinâmica com JQuery e atribua este diferencial ao seu site.

Você já viu aquele efeito bonitinho onde ao clicar com um link a página rola suavemente para a sua posição? Então, isso é um tipo de ancora implementada com JQuery, bem simples e funciona em todos os browsers, então veja como fazer ancora dinâmica com JQuery.

Como fazer ancora dinâmica com JQuery

Como fazer ancora dinâmica com JQuery

Vamos primeiro ao código:

function scrollAnimate(elemento, margem, velocidade, url){
 $(location).attr('href', url);
 
 if($(elemento).length > 0){
  posicao = $(elemento).offset().top - margem;
 }
 
 $('html, body').stop().animate({ scrollTop: posicao }, velocidade);
}

Vamos explicar primeiro os parâmetros desta função:

  • elemento: pode ser o class ou id de qualquer elemento DOM do HTML que será o destino da ancora;
  • margem: caso queira, pode pontuar uma margem para sobra no posicionamento;
  • velocidade: é a velocidade do movimento;
  • url: é a URL de destino, pode ser outra URL da original ou pode ser a mesma.

Uma vantagem desta função é que você pode apontar para a mesma URL e fazer um movimento de ancora ou ainda apontar para outra URL e com isso obter o efeito de rolamento na transição entre páginas.

A função foi testada em diversos browsers, do Google Chrome ao Internet Explorer e em todos o funcionamento foi total.

Não se esqueça de agregar o JQuery a sua página, se não fizer isso esta função não vai funcionar.

Pronto, agora você já sabe como fazer ancora dinâmica com JQuery.

Leia mais:

Como instanciar classes dinamicamente com Java

Veja uma forma muito simples de como instanciar classes dinamicamente com Java e flexibilize seu código-fonte, uma necessidade de todos os desenvolvedores.

Em diversas situações vamos precisa flexibilizar o código-fonte ao ponto de só sabermos qual classe instanciar em tempo de execução e daí descobrimos que não sabemos como instanciar classes dinamicamente com Java.

Como instanciar classes dinamicamente com Java

Como instanciar classes dinamicamente com Java

Porém este processo é mais simples do que você pode imaginar. Veja um simples exemplo:

Class classe = Class.forName("net.viamais.exemplo.MinhaClasse");
Object instancia = classe.newInstance();
Method meuMetodo = classe.getMethod("metodoMeu");
Boolean controle = (Boolean) meuMetodo.invoke(instancia);

Vamos detalhar o passo-a-passo de como instanciar classes dinamicamente com Java:

  • Linha 1: pelo nome da classe com sua especificação completo eu “carrego a classe” em tempo de execução;
  • Linha 2: eu crio a instancia da classe apontada anteriormente (neste ponto o construtor padrão já é executado como quando eu instancio normalmente);
  • Linha 3: eu defino o método que vou executar;
  • Linha 4: eu invoco o método e capturo o seu retorno.

Pronto, um processo muito simples e agora você já sabe como instanciar classes dinamicamente com Java.

Leia mais:

Como configurar corretamente o backup automático do Google

Veja como configurar corretamente o backup automático do Google para consumir menos bateria e não consumir seu plano de dados.

Realmente o backup automático do Google é uma mão na roda, seja no caso de uma troca de smartphone, em caso de roubo ou até mesmo em caso de dano, todas as fotos, vídeos e outros arquivos importantes estarão na nuvem, porém muita gente reclama que deixando o backup automático ativo o consumo de bateria e tráfego de dados é muito alto, isso é devido a falta da devida configuração. Então veja aqui como configurar corretamente o backup automático do Google.

Por padrão – afinal o Google não sabe o que e como você quer fazer backup – o seu gadget vai fazer backup automático das pastas com arquivos pessoais sempre que forem alteradas, mas isso vai exigir muito da bateria e do seu plano de dados por isso acredito que o melhor modo é equilibrar a segurança do backup configurando para que o backup automático do Google somente seja executado quando o gadget estiver conectado no wi-fi e para poupar a bateria configure também que o gadget esteja carregando. Veja como é simples:

  • Para configurar para realizar o backup somente no wi-fi: abra o App Fotos > Configurações > Backup Automático > Fazer Backup de fotos, aqui selecione somente com conexão wi-fi;
  • Para configurar para realizar o backup somente quando carregando: App Fotos > Configurações > Backup Automático > Somente Carregando, aqui selecione a caixa de seleção.

Pronto, agora você não vai gastar seu plano de dados com backup nem corre o risco do backup iniciar quando você estiver com a bateria acabando e longe da tomada.

Mais uma dica muito legal, você sabe como configurar corretamente o backup automático do Google para fazer o backup somente das pastas que você quiser?

É muito simples, primeiro abra o App Fotos > abas da esquerda > No Dispositivo, dentro desta opção serão exibidas as fotos em suas respectivas pastas (lembre-se que o backup automático varre todas as suas pastas em busca de fotos e vídeo) agora vem a parte da seleção de pastas para backup.

Como configurar corretamente o backup automático do Google - acessando a configuração

Como configurar corretamente o backup automático do Google – acessando a configuração

Você notou que na parte superior ao lado do nome da pasta tem um ícone de uma nuvem azul? Este ícone indica que a pasta está configurada para fazer o backup automático, para desmarca basta tocar este ícone e ele de azul passará a ser cinza.

Como configurar corretamente o backup automático do Google - Selecionando pastas de backup

Como configurar corretamente o backup automático do Google – Selecionando pastas de backup

Viu como configurar corretamente o backup automático do Google é simples?

Leia mais:

Ative sugestões para pesquisa no Chrome para Android

O Google ainda não avisou mas ative sugestões para pesquisa no seu Chrome para Android e dinamize os resultados das suas buscas.

Aí vai uma dica que até agora estava oculta – ninguém sabe porque o Google não divulgou ainda – ative sugestões para pesquisa diretamente na barra de endereços do seu Google Chrome para Android.

Ative sugestões para pesquisa no Chrome para Android

Ative sugestões para pesquisa no Chrome para Android

O recurso funciona da seguinte forma: a medida que você vai digitando uma pesquisa o Google já responde diretamente na barra de endereços, muito mais prático do que ter que aguardar o resultado da busca propriamente dita.

O recurso recebe o nome de Answers in Suggest e foi descoberto pelo pessoal do OMG! Chrome e ainda é um experimento, então fica o aviso que erros podem ocorrer.

Ative sugestões para pesquisa no seu Google Chrome digitando o endereço chrome://flags (isso vai abrir uma central de configurações, então tome cuidado) e procure por Answers in Suggest e depois toque em ativada.

Reinicie seu Google Chrome e pronto, você já terá as sugestões para pesquisa ativada diretamente na sua barra de endereços.

Leia mais:

Misterioso evento da Microsoft acontece este mês

Um misterioso evento da Microsoft está marcado para o dia 30 de setembro e todos os rumores apontam para a apresentação do novo Windows, veja os detalhes.

Hoje toda a mídia está discutindo se o misterioso evento da Microsoft irá mesmo anunciar para todos mais detalhes acerca do Windows 9 e é provável que sim.

Misterioso evento da Microsoft acontece este mês

Misterioso evento da Microsoft acontece este mês

O convite diz muito pouco – para não falar quase nada – sobre o misterioso evento da Microsoft, porém é quase certo que a julgar pela data, será no dia 30 de setembro, o principal anuncio seja realmente o lançamento da nova versão do Windows e é provável que neste evento saibamos mais sobre as seguintes novidades do Windows 9:

  • Assistente de voz Cortana;
  • Suporte para múltiplas telas;
  • Menu Iniciar;
  • Área de notificação.

Estes são somente os detalhes principais muitos outros recursos menores tomam parte do novo Windows.

A princípio o Windows 9 – caso este seja mesmo o seu nome – somente terá a sua versão final lançada em abril de 2015 e que logo após ao evento seja disponibilizado um link para download de uma versão Tech Preview do Windows 9 para que em finais do ano uma versão Release Candidate seja lançada para enfim todos se prepararem para o lançamento inicial.

A julgar pelo recente vazamento de uma versão “utilizável” do Windows 9 é provável que aquela versão já seja o Tech Preview do Windows 9 o que confirmaria todos os rumores.

Resta agora esperar pelo dia 30 de setembro para realmente saber o que será revelado no misterioso evento da Microsoft.

Leia mais:

Android One: barato e atualizado como o Nexus

Hoje o Google anunciou o primeiro smartphone construído seguindo as diretrizes do projeto Android One e já é o melhor smartphone de baixo custo lançado.

Hoje o Google deve anunciar na Índia o primeiro smartphone sob a iniciativa Android One, o primeiro modelo de uma série que promete se expandir para outros países em desenvolvimento até o final do ano.

Android One: barato e atualizado como o Nexus

Android One: barato e atualizado como o Nexus

O projeto Android One consiste em uma estratégia de levar smartphones a preços baixos para as massas, principalmente em países em desenvolvimento onde a adoção do uso de smartphones pela população está diretamente ligada ao preço.

O projeto irá fornecer informações necessárias para que fabricantes e integradores de hardware projetem e construam smartphones com bom desempenho e bem ajustados as necessidades do Android, além de um modelo de hardware referencial o Google tem buscado acordos com fabricantes locais para impulsionar o projeto e assim conseguir levar as massas smartphones com excelente custo-benefício sem os eventuais problemas de performance que os smartphones de entrada geralmente apresentam.

Outro fato interessante do projeto Android One é que ele irá garantir que o processo de atualização dos smartphones seja transparente e que os gadgets não parem no tempo e fiquem limitados a versões defasadas do Android ou ainda que seus donos tenham que recorrer a Custom Rom´s para atualizar seus respectivos aparelhos.

A Índia foi escolhida para o primeiro gadget do projeto devido ao fato de que apenas 10% da população tem smartphones e que de acordo com projeções do mercado este número deve dobrar em questão de meses, ou seja, é um mercado em ebulição que se for estimulado corretamente poderá representar um importante marco.

Até o final do ano o Google planeta expandir o projeto Android One para outros países da Ásia e a tendência é ela seja expandida para vários outros países emergentes.

Leia mais:

Como será o Windows 9, veja as novidades

Veja mais novidades e como será o Windows 9 e levando em conta que já existe um build rodando por aí é quase certo que ele seja assim mesmo.

As notícias e rumores sobre como será o Windows 9 começam a surgir em todos os cantos da internet de forma que já começamos a ter um horizonte mais claro de como será esta nova versão do Windows.

Como será o Windows 9, este é o botão Iniciar

Como será o Windows 9, este é o botão Iniciar

O pessoal do site alemão WinFuture estão testando um build bem recente do Windows 9 e pelo grau de refinamento e funcionalidade é passível admitir que ela está muito próxima da versão final do Windows 9.

Voltando a afirmar, a grande briga quando o Windows 8 foi lançado foi a questão da remoção do botão Iniciar – presente desde o Windows 95 – tanto que no Windows 8.1 a Microsoft até mesmo adicionou uma Central de Aplicativos e agora no Windows 9 é certo que o botão Iniciar irá retornar mas não como o conhecíamos, será uma versão totalmente nova e ambienta no novo conceito de usabilidade adota pelo Windows 8.

O botão Iniciar será totalmente integrado ao conceito de Tiles, onde os aplicativos serão exibidos no lado esquerdo e as Tiles no lado direito, ainda não está claro até que ponto iremos poder configurar o botão Iniciar, porém é possível notar que em determinados aplicativos, como por exemplo o Windows Explorer, será possível navegar entre as pastas dentro do próprio botão Iniciar.

Realmente uma inovação, continuando a falar de como será o Windows 9, podemos também notar que será possível escolher se o Windows 9 será carrega na tela inicial das Tiles ou se no modo desktop tradicional.

Com todas estas mudanças fica mais que evidente o grande esforço da Microsoft em tentar unir conceitos antigos e ultrapassados no seu novo conceito de usabilidade, coisa extremamente difícil de realizar, talvez por isso o Windows 8 tenha sido tão controverso no seu lançamento.

Não pode esquecer que além de tudo isso existe a questão da união do Windows padrão x86_64 com o Windows padrão RT (para processadores ARM) o que iria unificar duas plataformas de execução em apenas uma versão e abriria a possibilidade de intercambio de aplicativos de ambas as plataformas.

Agora sabemos um pouco mais sobre como será o Windows 9, mas questões de preços e políticas comerciais ainda continuam uma grande incógnita, apenas rumores de que exista a possibilidade do Windows 9 ser grátis na versão de upgrade.

Leia mais:

Mascaras diversas com Jquery para seu formulário

Veja várias dicas de como validar seu formulário Web com mascaras diversas com JQuery e veja como usar toda o potencial do plugin JQuery-Mask.

Mascaras diversas com Jquery para seu formulário

Mascaras diversas com Jquery para seu formulário

Dias atrás estive pesquisando sobre formas de utilizar mascaras diversas com Jquery, foi então que notei que nem 10% do potencial do JQuery com o plugin JQuery-mask era utilizado, então resolvi listar alguns padrões de mascaras que encontrei:

$(document).ready(function(){
$('.date').mask('00/00/0000');
$('.time').mask('00:00:00');
$('.date_time').mask('00/00/0000 00:00:00');
$('.cep').mask('00000-000');
$('.phone').mask('0000-0000');
$('.phone_with_ddd').mask('(00) 0000-0000');
$('.phone_us').mask('(000) 000-0000');
$('.mixed').mask('AAA 000-S0S');
$('.cpf').mask('000.000.000-00', {reverse: true});
$('.money').mask('000.000.000.000.000,00', {reverse: true});
$('.money2').mask("#.##0,00", {reverse: true, maxlength: false});
$('.ip_address').mask('0ZZ.0ZZ.0ZZ.0ZZ', {translation: {'Z': {pattern: /[0-9]/, optional: true}}});
$('.ip_address').mask('099.099.099.099');
$('.percent').mask('##0,00%', {reverse: true});
$('.clear-if-not-match').mask("00/00/0000", {clearIfNotMatch: true});
$('.placeholder').mask("00/00/0000", {placeholder: "__/__/____"});
);

O exemplo acima são de mascaras diversas com Jquery simples, sem muita complicação e vão cobrir cerca de 80% das suas necessidades ao desenvolver formulários Web, mas uma dica interessante é que o plugin também permite a utilização de notação HTML, como no exemplo abaixo:

<input name="field-name" type="text" data-mask="00/00/0000" data-mask-reverse="true" />;

Lembram que eu falei que nem 10% do potencial do plugin JQuery-mask era utilizado? Então, existe formas mais complexas para necessidades mais específicas, uma delas é utilizar a máscara como uma função, veja o exemplo abaixo:

var celphoneMask = function(phone, e, currentField, options){
 
return phone.match(/^(\(?11\)? ?9(5[0-9]|6[0-9]|7[01234569]|8[0-9]|9[0-9])[0-9]{1})/g) ?
                   '(00) 00000-0000' : '(00) 0000-0000';
};
 
$(".sp_celphones").mask(celphoneMask);

Mas não paramos por aí, veja um outro exemplo que também será útil, a utilização de dígitos opcionais em uma máscara, muito útil para quem vai formatar campos com regra de máscara mas sem exigência mínima de tamanho:

// way 1
$('.ip_address').mask('099.099.099.099');
 
// way 2
$('.ip_address').mask('0ZZ.0ZZ.0ZZ.0ZZ', {translation:  {'Z': {pattern: /[0-9]/, optional: true}}});

Um detalhe para facilitar o entendimento destas mascaras diversas com JQuery é a legenda do padrão de dígitos:

  • 0: Only Numbers
  • 9: Only Numbers but optional
  • #: Only Numbers but recusive
  • A: Numbers and Letters
  • S: Only A-Z and a-z characters.

Mais modelos e exemplos podem ser retirados do post do Igor Escobar que trata especificamente sobre a JQuery.

Leia mais: