Comando útil para gerar hash SHA-256, por exemplo, a partir do terminal do linux:
> echo -n conteudo_a_cifrar | sha256sum
É só o valor adequado, ao invés de conteudo_a_cifrar, e pronto. O comando gera na saída o hash SHA-256.
@edermag
www.yaw.com.br
edermag, só de boa
Saturday, March 17, 2012
Friday, March 16, 2012
Projeto demonstração do Java 7
Subi no github o projeto com os fontes demonstrando as novidades do Java 7. Esse projeto nasceu junto com o minicurso JDK7 - Modificações na linguagem.
No código disponibilizei exemplos com os tópicos:
@edermag
www.yaw.com.br
No código disponibilizei exemplos com os tópicos:
- Separador de liteiras numéricas _
- Operador switch com suporte a String
- Operador Diamond (Generics)
- AutoCloseable, o novo try-finally
- Multicatch
- Rethrow
- JDBC 4.1
- Nova API de IO (NIO.2)
- @SafeVargs: Varargs com Generics
@edermag
www.yaw.com.br
Marcadores:
Globalcode,
Java,
YaW
Friday, January 20, 2012
Como redirecionar URL com Django
Implementar o redirecionamento de url's com Django é extremamente simples! Basta utilizar a função django.views.generic.simple.redirect_to no arquivo de configurações para urls (ROOT_URLCONF).
Um exemplo do site da yaw:
Dessa forma quando a url http://www.yaw.com.br/treinamentos/academiaJava.html for requisitada o Django retorna para o browser o código http 301 (Moved Permanently), redirecionando para a página http://www.yaw.com.br/treinamentos/academia_java.
Simples!
@edermag
www.yaw.com.br
Um exemplo do site da yaw:
from django.views.generic.simple import redirect_to
urlpatterns = patterns('',
...
(r'^treinamentos/academiaJava.html/$', redirect_to, {'url': '/treinamentos/academia_java/'}),
...
)
Dessa forma quando a url http://www.yaw.com.br/treinamentos/academiaJava.html for requisitada o Django retorna para o browser o código http 301 (Moved Permanently), redirecionando para a página http://www.yaw.com.br/treinamentos/academia_java.
Simples!
@edermag
www.yaw.com.br
Thursday, November 17, 2011
Instalação (manual) do Java 7 no Ubuntu 11 64 bits
Roteiro para instalar o Kit de desenvolvimento do Java (JDK) 7 no Ubuntu 11 64 bits, de forma manual, baixando o pacote do jdk7 direto do site da Oracle.
Baixe o tar com o pacote de binários do site da Oracle.
Depois é só colocar o arquivo na pasta /usr/lib/jvm e extrair o tar, por exemplo (meu arquivo é jdk-7u1-linux-x64.tar.gz):
sudo mv /home/yaw/Download/jdk-7u1-linux-x64.tar.gz /usr/lib/jvm/jdk-7u1-linux-x64.tar.gz
tar -zvxf jdk-7u1-linux-x64.tar.gz
Próxima etapa é configurar o ambiente, isso pode ser feito também de forma manual editando o arquivo bashrc:
sudo vim /home/yaw/.bashrc
Outra opção seria realizar a configuração através do comando update-alternatives. A seguir a instrução que abre o menu com opções de atualização do Java.
sudo update-alternatives --config java
Provavelmente existem três, começando com a Selection 0, não selecione nenhuma, saia com enter.
O comando a seguir cria a quarta opção, Selection 3, apontando para a pasta do Java 7:
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0/jre/bin/java 3
Rode novamente o comando para atualizar o Java:
sudo update-alternatives --config java
Escolha a Selection 3 (a mesma que vc criou para o Java 7).
Pronto, fácil.
@edermag
www.yaw.com.br
Marcadores:
JDK7
Thursday, November 03, 2011
O TDC2011 foi tri-sucesso
Não poderia deixar de escrever sobre a tri-participação da YaW no The Developer’s Conference 2011, conhecido como o TDC2011. Copiando uma frase da Yara: “somos 100% TDC2011”, presentes na edição São Paulo, Florianópolis e Goiânia.
Florianópolis
O evento em Florianópolis contou com 12 trilhas em 2 dias, 20 e 21 de Agosto, em sua 4a edição. Muito conteúdo, ótima organização, e uma galera bastante interessada no evento, em trocar idéias e fazer networking. Fiquei impressionado com o número de pessoas presentes no encerramento: um sábado, passando das 19 horas o auditório estava completamente lotado, impressionante!
Lá apresentei a palestra com as mudanças e novidades do Java 7 e junto com o Rafael Nunes a palestra sobre Arquiteturas JavaEE no Google App Engine, ambas na trilha Java. No domingo como congressista, assisti diversas palestras em várias trilhas. O Rafael Nunes foi o coordenador da trilha SOA/Cloud, em parceria com o Felipe Oliveira (SOAExpert).
Goiânia
Eu não conhecia Goiânia, adorei a cidade, muito bonita com um povo muito simpático. Falando sobre o evento, foi um sucesso, mais de 500 pessoas estiveram presentes nos dois dias do TDC2011 Goiânia, 29 e 30 de outubro. Foi a primeira edição do evento na região, que contou com 13 trilhas, e muita gente fera das comunidades presentes.
No mesmo espírito TDC, a galera estava 100% interessada no evento, rolando muita troca de informação e networking. Revi vários amigos, conheci uma galera muito gente boa e bastante prestativa. No primeiro dia, como congressista, assisti palestras nas trilhas: Empreendedorimo, Arduíno e Java.
No domingo fui o coordenador da trilha Mobile, e tenho muito a agradecer aos palestrantes dessa trilha que simplesmente arrebentaram, com palestras excelentes em diversos assuntos:
Destaque para a palestra do Rafael Costa, um GAROTO de 13 anos atualmente com 9 aplicativos publicados no Apple Store! O Rafa falou sobre desenvolvimento iOS com o framework GameKit, e impressionou a galera com seu conhecimento, desenvoltura e habilidade na apresentação da palestra. No fim da palestra ele interagiu com o público, respondendo com muita boa vontade todas as perguntas e curiosidades da galera.
Agradecimento mais do que especial para o Marcelo Quinta, grande profissional, gente finíssima, me ajudou muito na formação de conteúdo da trilha.
O Rafael Nunes, além de apresentar a palestra na trilha Mobile, foi o
coordenador da trilha SOA/Cloud, novamente em parceira com o Felipe Oliveira.
Outro destaque do TDC2011 Goiânia foram os happy’s e as baladinhas, rolou muita diversão, com direito até a uma canja do Saulo Arruda: o cara arrebentou, manda muito bem no violão!
O TDC já foi consolidado com um dos melhores e principais eventos sobre desenvolvimento de software do Brasil, seu formato inovou e agradou as diversas comunidades que apoiaram e seguiram proposta do evento. O TDC2011, no meu caso, foi uma oportunidade para:
Uma pena que TDC2011 acabou, mas já na expectativa pois logo logo chega a vez do TDC2012! Parabéns a Globalcode e a empresas que atuaram na organização das 3 edições do TDC2011, foi incrível.
@edermag
www.yaw.com.br
Florianópolis
O evento em Florianópolis contou com 12 trilhas em 2 dias, 20 e 21 de Agosto, em sua 4a edição. Muito conteúdo, ótima organização, e uma galera bastante interessada no evento, em trocar idéias e fazer networking. Fiquei impressionado com o número de pessoas presentes no encerramento: um sábado, passando das 19 horas o auditório estava completamente lotado, impressionante!
Lá apresentei a palestra com as mudanças e novidades do Java 7 e junto com o Rafael Nunes a palestra sobre Arquiteturas JavaEE no Google App Engine, ambas na trilha Java. No domingo como congressista, assisti diversas palestras em várias trilhas. O Rafael Nunes foi o coordenador da trilha SOA/Cloud, em parceria com o Felipe Oliveira (SOAExpert).
Goiânia
Eu não conhecia Goiânia, adorei a cidade, muito bonita com um povo muito simpático. Falando sobre o evento, foi um sucesso, mais de 500 pessoas estiveram presentes nos dois dias do TDC2011 Goiânia, 29 e 30 de outubro. Foi a primeira edição do evento na região, que contou com 13 trilhas, e muita gente fera das comunidades presentes.
No mesmo espírito TDC, a galera estava 100% interessada no evento, rolando muita troca de informação e networking. Revi vários amigos, conheci uma galera muito gente boa e bastante prestativa. No primeiro dia, como congressista, assisti palestras nas trilhas: Empreendedorimo, Arduíno e Java.
No domingo fui o coordenador da trilha Mobile, e tenho muito a agradecer aos palestrantes dessa trilha que simplesmente arrebentaram, com palestras excelentes em diversos assuntos:
- Como tirar proveito de uma plataforma Cloud (Google App Engine) em desenvolvimento Mobile, com o Rafael Nunes;
- Soluções da Nokia para desenvolvimento mobile: Windows Phone e Symbia, com o Heitor Repolho;
- As alternativas e o mercado de mobilidade, com Marcelo Quinta;
- Os desafios no desenvolvimento de sites para mobile, com Marcelo Quinta e André Vilas Boas;
- Uma visão completa de como funciona o programa de desenvolvedor iOS (iPhone, iPod, iPad), com Edson Luiz;
- Reuso de código Android com as ferramentas BugSense e PushLink, com Célio Vasconcelos;
Destaque para a palestra do Rafael Costa, um GAROTO de 13 anos atualmente com 9 aplicativos publicados no Apple Store! O Rafa falou sobre desenvolvimento iOS com o framework GameKit, e impressionou a galera com seu conhecimento, desenvoltura e habilidade na apresentação da palestra. No fim da palestra ele interagiu com o público, respondendo com muita boa vontade todas as perguntas e curiosidades da galera.
Agradecimento mais do que especial para o Marcelo Quinta, grande profissional, gente finíssima, me ajudou muito na formação de conteúdo da trilha.
O Rafael Nunes, além de apresentar a palestra na trilha Mobile, foi o
coordenador da trilha SOA/Cloud, novamente em parceira com o Felipe Oliveira.
Outro destaque do TDC2011 Goiânia foram os happy’s e as baladinhas, rolou muita diversão, com direito até a uma canja do Saulo Arruda: o cara arrebentou, manda muito bem no violão!
O TDC já foi consolidado com um dos melhores e principais eventos sobre desenvolvimento de software do Brasil, seu formato inovou e agradou as diversas comunidades que apoiaram e seguiram proposta do evento. O TDC2011, no meu caso, foi uma oportunidade para:
- Compartilhar um pouco do que eu conheço;
- Aprender mais e renovar minhas inspirações;
- Conhecer pessoas de diferentes estilos, com foco em conteúdo;
- Conhecer lugares interessantes;
- Muita diversão, com happy’s regados a muita cerveja e excelentes conversas;
Uma pena que TDC2011 acabou, mas já na expectativa pois logo logo chega a vez do TDC2012! Parabéns a Globalcode e a empresas que atuaram na organização das 3 edições do TDC2011, foi incrível.
@edermag
www.yaw.com.br
Marcadores:
Eventos,
Globalcode,
TDC,
YaW
Friday, October 14, 2011
Oracle linguistic sort: desconsiderar letras minúsculas/maiúsculas e acentuação
A partir da versão 10g o Oracle passou a suportar a busca em String utilizando classificação linguística (linguistic sort). O que na prática permite a busca em um campo String desconsiderando diferenças, por exemplo, entre letras minúsculas e maiúsculas ou o uso de acentuação.
Os comandos a seguir habilitam, na sessão do usuário, a comparação por linguística e a classificação binária desconsiderando acentuação e case insensitive:
SQL>ALTER SESSION SET NLS_SORT='BINARY_AI';
SQL>ALTER SESSION SET NLS_COMP='LINGUISTIC';
SQL>CREATE TABLE teste (texto VARCHAR2(10));
SQL>INSERT INTO teste VALUES('Macaco');
SQL>INSERT INTO teste VALUES('maça');
SQL>INSERT INTO teste VALUES('maçarico');
SQL>INSERT INTO teste VALUES('MAÇONARIA');
SQL>select texto from teste where texto like 'mac%';
TEXTO
---------
Macaco
maça
maçarico
MAÇONARIA
O mesmo resultado é processado com a seguinte instrução:
select texto from teste where texto like 'MAÇ%';
Os comandos a seguir habilitam, na sessão do usuário, a comparação por linguística e a classificação binária desconsiderando acentuação e case insensitive:
SQL>ALTER SESSION SET NLS_SORT='BINARY_AI';
SQL>ALTER SESSION SET NLS_COMP='LINGUISTIC';
SQL>CREATE TABLE teste (texto VARCHAR2(10));
SQL>INSERT INTO teste VALUES('Macaco');
SQL>INSERT INTO teste VALUES('maça');
SQL>INSERT INTO teste VALUES('maçarico');
SQL>INSERT INTO teste VALUES('MAÇONARIA');
SQL>select texto from teste where texto like 'mac%';
TEXTO
---------
Macaco
maça
maçarico
MAÇONARIA
O mesmo resultado é processado com a seguinte instrução:
select texto from teste where texto like 'MAÇ%';
Mesmo informando o acento, como no segundo comando, registros sem acentuação são Macaco sem acento é retornado.
O Oracle também suporta a busca ordena por um idioma:
SQL>SELECT texto FROM teste ORDER BY NLSSORT(texto, 'NLS_LANG = PT');
Outra funcionalidade, apresentar a descrição da data em um determinado idioma:
SQL>SELECT to_char(sysdate, 'DD/MON/YYYY', 'nls_date_language = French') from dual;
Link para a documentação online dessas funcionalidades.
Marcadores:
Oracle
Tuesday, August 23, 2011
Solução em Java 7 para a prova do Google Developer Day 2011
Semana passada me diverti um pouco com a prova para o Google Developer Day 2011. A prova não é obrigatória, na verdade faz parte do processo de inscrição e dever ser utilizada como filtro para identificar as pessoas que se adequema o público alvo do evento: Developers.
A prova era composta por 5 questões, todas em torno de 2 textos do idioma Googlon.
Regras do idioma
Letras e ordem do idioma: t w d c r z p s v h m k l n f x q j b g
Esse idioma estipula grupos de letras:
- letras tipo foo: g, f, z, t e s
- letras tipo bar: todas as outras.
As preposições são identificadas com a seguinte regra: palavras com 3 letras que terminam com uma letra do tipo bar, mas que não pode ser m.
A regra para identificar verbos: palavras de 7 ou mais letras que terminam com uma letra do tipo bar. Caso a palavra seja um verbo e começe com uma letra do tipo bar, deve ser considerado um verbo de primeira pessoa.
E os números? As palavras são números. Esses números são formados em base 20, onde cada letra é uma digito ordenado do menos para o mais significativo (contrário do binário). Dessa forma a primeira posição é 1, a segunda é 20, a terceira é 400 e assim por diante. Outro detalhe importante: cada letra tem um valor (posição) conforme a ordem do alfabeto, por exemplo t é 0, w é 1, d é 2, etc. Ainda para os números, existem uma classificação de números bonitos. Em Googlon um número bonito deve ser maior ou igual a 502344 e divisível por 4.
Questões
Todas as questões contavam com uma dica do Google, elas eram respondidas levando em consideração a o texto A, mas o participante deveria responder considerando o texto B.
A solução
Na semana passada estava focado em terminar demos e a apresentação que fiz no TDC2011 em Floripa, sobre Java 7. Aproveitei o embalo pra implementar a solução da prova do GDD usando Java, mas com um detalhe especial: primeiro programa utilizando Java 7. Coloquei as letras na ordem do Googlon em um List e fiz um split do texto (uma String). Dessa forma iteirei sob as palavras para encontrar as preposições, verbos (1a pessoa tb) e números, além de aplicar a ordenação Googlon.
Para rodar essa classe em versões anteriores do Java é muito simples, na ordem:
@edermag
www.yaw.com.br
A prova era composta por 5 questões, todas em torno de 2 textos do idioma Googlon.
Regras do idioma
Letras e ordem do idioma: t w d c r z p s v h m k l n f x q j b g
Esse idioma estipula grupos de letras:
- letras tipo foo: g, f, z, t e s
- letras tipo bar: todas as outras.
As preposições são identificadas com a seguinte regra: palavras com 3 letras que terminam com uma letra do tipo bar, mas que não pode ser m.
A regra para identificar verbos: palavras de 7 ou mais letras que terminam com uma letra do tipo bar. Caso a palavra seja um verbo e começe com uma letra do tipo bar, deve ser considerado um verbo de primeira pessoa.
E os números? As palavras são números. Esses números são formados em base 20, onde cada letra é uma digito ordenado do menos para o mais significativo (contrário do binário). Dessa forma a primeira posição é 1, a segunda é 20, a terceira é 400 e assim por diante. Outro detalhe importante: cada letra tem um valor (posição) conforme a ordem do alfabeto, por exemplo t é 0, w é 1, d é 2, etc. Ainda para os números, existem uma classificação de números bonitos. Em Googlon um número bonito deve ser maior ou igual a 502344 e divisível por 4.
Questões
Todas as questões contavam com uma dica do Google, elas eram respondidas levando em consideração a o texto A, mas o participante deveria responder considerando o texto B.
- Qual a quantidade preposições no texto B?
- Quantos verbos existem no texto B?
- Quantos verbos em 1a pessoa existem no texto B?
- Imprimir o texto B colocando as palavras na ordem alfabética do Googlon.
- Quantos números bonitos existem no texto B?
A solução
Na semana passada estava focado em terminar demos e a apresentação que fiz no TDC2011 em Floripa, sobre Java 7. Aproveitei o embalo pra implementar a solução da prova do GDD usando Java, mas com um detalhe especial: primeiro programa utilizando Java 7. Coloquei as letras na ordem do Googlon em um List e fiz um split do texto (uma String). Dessa forma iteirei sob as palavras para encontrar as preposições, verbos (1a pessoa tb) e números, além de aplicar a ordenação Googlon.
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.TreeSet;
import static java.lang.System.out;
public class Googlon {
static List<Character> alf_ordem =
Arrays.asList( new Character[] {'t','w','d','c','r','z','p','s','v','h',
'm','k','l', 'n','f','x','q','j','b','g'} );
public static void main(String[] args) {
String textoB = "prm pmqcf flqk mblz fzrr ..."; //um pedaco do texto B
int preposicoes = 0, verbos = 0, verbos1Pessoa = 0, numerosBonitos = 0;
//determina as letras do tipo foo
List<Character> foo =
Arrays.asList( new Character[]{'g','f','z','t','s'} );
//treeset com comparator resolvendo a ordem as palavras (questao 3)
TreeSet<String> listaEmOrdem = new TreeSet<>(new Comparator<String>(){
@Override
public int compare(String s1, String s2) {
int len1 = s1.length(), len2 = s2.length();
int lim = Math.min(len1, len2);
char chars1[] = s1.toCharArray(), chars2[] = s2.toCharArray();
int i = 0;
while (i < lim) {
char c1 = chars1[i];
char c2 = chars2[i];
if (c1 != c2) {
return alf_ordem.indexOf(c1) - alf_ordem.indexOf(c2);
}
i++;
}
return len1 - len2;
}
});
//aqui percorro todas palavras, para ordernar e validar
for (String s: textoB.split(" ")) {
listaEmOrdem.add(s);
if (isNumeroBonito(converteParaNumero(s))) {
numerosBonitos++;
}
if (s.length() == 3) {
if (!foo.contains(s.charAt(s.length()-1)) && s.indexOf('m') == -1) {
preposicoes++;
}
continue;
}
if (s.length() >= 7) {
if (!foo.contains(s.charAt(s.length()-1))) {
verbos++;
if (!foo.contains(s.charAt(0))) {
verbos1Pessoa++;
}
}
}
}
StringBuilder textoOrdenadoTeste = new StringBuilder();
for (String s: listaEmOrdem) {
textoOrdenadoTeste.append(s).append(" ");
}
out.println("1a resposta, qtde de preposicoes: "+preposicoes);
out.println("2a resposta, qtde de verbos: "+verbos);
out.println("3a resposta, qtde de verbos 1a pessoa: "+verbos1Pessoa);
out.println("4a resposta, o texto ordenado: "+ textoOrdenadoTeste);
out.println("5a resposta, qtde de numeros bonitos? "+numerosBonitos);
}
private static long converteParaNumero(String palavra) {
int n = 0;
long total = 0;
for (char c: palavra.toCharArray()) {
int codigo = alf_ordem.indexOf(c);
total += codigo * (long) Math.pow(20,n++);
}
return total;
}
private static boolean isNumeroBonito(long numero) {
//literal int com separador _ e a literal 4 em binario
return numero >= 502_344 && numero % 0b100 == 0;
}
}
Para rodar essa classe em versões anteriores do Java é muito simples, na ordem:
- defina a tipagem de String na instância do objeto TreeSet no lugar do operador diamond.
- dentro do método isNumeroBonito, na linha 92, remova o "_" entre o número 502304 e utiliza 4 em decimal ao invés de binário (0b100).
@edermag
www.yaw.com.br
Subscribe to:
Posts (Atom)



