sexta-feira, 7 de outubro de 2016
REST - Como passar um parâmetro que contém ponto (.) pela Url com Spring Mvc
Esse post é curto, somente para dar uma dica de como fazer para que seu controller entenda um parâmetro que possui (.) ponto e não quebre.
Alguns casos precisamos no get buscar algo que seja filtrado por determinado parâmetro, por exemplo quando buscamos um usuário, uma Url basicamente ficaria assim:
GET "/user/{username}"
O problema é quando esse essa variável que é passada na uri possui um ponto, que ocasiona a quebra do valor. Ex
GET "/user/tiago.ribeiro"
O spring entenderia que foi passado somente "tiago" descartando então tudo que vem após o (.). Existem algumas estrategias para burlar isso, como colocar outro nome após o username do seu path, por exemplo:
GET "/user/{username}/search"
Assim ele não descartaria o que viesse após o ponto. Existe uma outra maneira e que na minha opinião é a mais elegante que seria a inserção de (:.+) após a declaração do parâmetro.
GET "/user/{username:.+}"
Dessa maneira o Spring entenderá que o ponto faz parte do parâmetro passado e não quebrará.
Bem como falei esse post foi curto, espero que tenham gostado.
terça-feira, 4 de outubro de 2016
Forçar atualização do JavaScript usando Gulp
Todos sabemos como o uso de bibliotecas JavaScript vem crescendo nos últimos anos, muito se deve por conta do Node que permitiu a evolução da linguagem, assim como o uso de padrões na construção de apps no lado cliente.
Um dos grandes problemas do uso de js é o cache que muitas vezes mascaram mudanças feitas de uma versão para outra, quase nenhum usuário é atento á limpar o cache de tempos em tempos.
Existem varias maneiras de evitar esse problema, uma delas é incluir uma tag no header de sua pagina informando quando o cache deve expirar. Ex:
<META HTTP-EQUIV="EXPIRES" CONTENT="Mon, 22 Jul 2002 11:12:01 GMT">
Outra opção é o versionamento dos arquivos JS e CSS para forçar ao browser busca-los novamente quando perceber que existe um arquivo novo no app.
Essa foi a solução que adotamos para nosso sistema, com o uso do gulp para fazer esse controle. Explicarei nesse post as bibliotecas necessárias para fazer isso funcionar no seu problema. Para isso irei considerar que quem está lendo esse artigo está usando uma aplicação com NodeJs e Gulp.
Decidimos usar o timestamp para dar a "versão" dos arquivos. Para fazer a atualização do nome dos arquivos no nosso index.html usamos a biblioteca gulp-html-replace para fazer o replace do nome dos arquivos.
Decidimos usar o timestamp para dar a "versão" dos arquivos. Para fazer a atualização do nome dos arquivos no nosso index.html usamos a biblioteca gulp-html-replace para fazer o replace do nome dos arquivos.
Para instala-la basta um simples Npm install:
npm install --save-dev gulp-html-replace
É preciso de importa-la também no seu arquivo gulpfile.js.
var htmlreplace = require('gulp-html-replace');
Crie uma variável global chamada de timestamp para recuperar o horário local e adiciona-la nos arquivos que deseja "versionar".
var timestamp = new Date().getTime();
Então na hora que eu faço o build meu arquivo assume a forma de algo assim: app_1475179620498.js assim como o css.
Na hora da construção do app eu inclui a seguinte tarefa para fazer o replace do nome dos arquivos:
Na hora da construção do app eu inclui a seguinte tarefa para fazer o replace do nome dos arquivos:
gulp.task('htmlreplace', function() {
gulp.src( '/index.html')
.pipe(htmlreplace({
'css_vendor': 'css/'+ filename.vendor.css,
'css_app': 'css/'+ filename.app.css,
'js_vendor': 'js/'+ filename.vendor.js,
'js_app': 'js/'+ filename.app.js
}))
.pipe(gulp.dest('./dist'));
});
No metódo task eu inicio a tarefa de replace passando uma função como parametro, o src é onde está localizado o arquivo que quero modificar. pipe é a função propriamente dita.
css_vendor, css_app, js_vendor, js_app são chaves que incluirei no index.html para que sejam trocados os nomes dos arquivos pelos nomes novos criados com um timestamp.
css_vendor, css_app, js_vendor, js_app são chaves que incluirei no index.html para que sejam trocados os nomes dos arquivos pelos nomes novos criados com um timestamp.
O filename "ponto" alguma coisa são variáveis que estarão armazenando o novo nome dos arquivos que foram criados.
Por fim a mágica onde tudo acontece, na página que você quer que sejam trocados os nomes do arquivos, voc~e incluirá tags que funcionarão como chaves. Tal como a imagem abaixo.
Notem que onde contém as chaves <!-- build:css_vendor -->, <!-- build:css_app -->, <!-- build:js_vendor -->,
<!-- build:js_app --> é onde será trocado o nome do arquivo pelo novo.Resultado final é esse da imagem abaixo.
É isso, espero que esse pequeno e simplificado artigo seja util para quem quiser utilizar uma estrategia para forçar o browser a buscar novo arquivo js/css sempre que uma nova versão de sua aplicação for publicada.
x
quinta-feira, 21 de julho de 2016
ElasticSearch, algumas coisas que você precisa saber.
Voltando a escrever após 4 anos, e o que me fez voltar a escrever? ElasticSearch, esse fantástico motor de busca distribuído, feito pela Apache. Sua busca funciona no modelo full-text, onde você tem a mágica busca no estilo Google, que você digita um texto que no ElasticSearch é tratado como Termo e ele faz todo o trabalho de busca para você.
Algumas das vantagens do ES é que ele possui uma api RESTfull, trabalha com Documentos tal qual um banco NoSql, seus dados são disponibilizados em tempo real e pode ser distribuído e configurado para apresentar alta confiabilidade.
Como falei ele armazena dados em Documents no formato Json, formato universal suportado por quase todas as linguagens de programação hoje em dia.
O ES trabalha com alguns termos para simbolizar seu banco de dados, são eles:
Index, Type, Document, Field, onde:
Index ou índice representa um banco de dados.
Type ou tipo representa uma tabela do seu banco de dados.
Document ou documento simboliza uma linha de dados da tabela.
Field ou campo é uma coluna de uma tabela.
Fazendo uma analogia com um banco de dados relacional onde teríamos o banco MeuBancoTeste com a tabela usuário, com o as seguintes colunas id, login e senha e dados:
No ES teríamos a seguinte representação para esses dados.
O documento corresponde ao json dentro do _source, esse documento possui 3 campos: id, login e senha. O campo _id no json principal corresponde ao id que o elastic usa pra indexar aquele documento.
Simples não é?
Outra simplicidade é o uso de Rest para manipulação, com as operações já conhecidas. POST, PUT, DELETE e GET.
Criar um indice é muito simples, basta usar um metodo post informando o nome do indice que gostaria de criar. Usando nosso exemplo ficaria assim:
<pre name="code" class="delphi">
curl -XPUT 'localhost:9200/MeuBancoteste?pretty'
</pre>
O retorno dessa chamada seria algo como:
<pre name="code" class="delphi">
{
"acknowledged": true
}
</pre>
Criando nossa tabela usuário e já populando no Es.
<pre name="code" class="delphi">
curl -XPUT 'localhost:9200/MeuBancoteste/usuario/0?pretty' -d ' { "login": "aluno",
"senha" : "1"
}'
</pre>
Como podem perceber é muito simples de se trabalhar.
Mas o mais fantástico do ES na minha opinião é a busca por algo nele, ele tem um sistema de busca
por relevância, onde ele vai pontuando internamente cada vez que aquele termo é procurado, e assim ele
irá aparecer na frente quando você fizer um busca.
Bem esse foi um post simples mais para apresentar o ElasticSearch, essa poderosa ferramenta para indexação de documentos. Postarei mais sobre o seu uso, mais a frente.
irá aparecer na frente quando você fizer um busca.
Bem esse foi um post simples mais para apresentar o ElasticSearch, essa poderosa ferramenta para indexação de documentos. Postarei mais sobre o seu uso, mais a frente.
terça-feira, 15 de maio de 2012
Java CE Community Conference - O que rolou - 2º dia
Sábado dia 12/05/2012 foi o segundo e ultimo dia desse grande evento, perfeito em todos aspectos, muito organizado e com palestras de alto nível. Queria deixar logo de cara um agradecimento ao pessoal da Triadworks e Milfont Consulting por estarem sempre organizando grandes eventos no Ceará, podem ter certeza que vocês tem grande parcela na evolução dos profissionais locais. Bem agora vamos ao que interessa, ou seja, o resumo de tudo que rolou no ultima dia de conferencia
A primeira palestra do dia foi do Alberto Sousa "Scala, 1 ano de experiência". Como cheguei atrasado peguei só o final e não poderei comentar muito sobre a mesma, mas a Caelum também fez um review sobre o evento e quem tiver curiosidade de ler pode dar uma conferida aqui.
O segundo palestrante do Sábado Marlus Saraiva da Fortes Informática com "JasperReports On Rails" comentou sobre alguns problemas encontrados por ele e sua equipe no desenvolvimento de relatórios no rails, hoje utilizam um biblioteca chamada RJB, Ruby Java Bridge para conseguir gerar relatórios.
Luca Bastos iniciou a terceira palestra "Machine Learning" que é o estudo de como construir o sistema que automaticamente melhorem com a experiência. Funciona com a junção de algoritmos + computação sobre demanda. Luca deu como exemplo de aplicações que fazem seu uso, o Linkedin. Interessante que Luca estudou, mas nunca teve oportunidade de trabalhar com Machine Learning e até brincou que faz parte do seu cinto de utilidades, que contem diversos assuntos que ele estuda para caso um dia precise. O homem é um monstro. Api Java para trabalhar com Machine Learling chama-se Weka.
Mauricio Linhares fechou a manha de palestras com a missão de defender o uso de Scala, depois que Alberto Sousa falou de suas experiências negativas com a mesma. Mauricio precisou usar Scala quando sentiu a necessidade de migrar seu projeto em Ruby para Java (é ele não se via mais programando em Java) Seus motivos são que Java envelheceu e não acompanhou a evolução das outras linguagens.
Mauricio deu como pontos positivos da Scala: uso de Closures, possuir bibliotecas maduras, linguagem compatível com o código Java, ferramentas em situações aceitáveis para uma linguagem que está chamando atenção agora.
Como pontos negativos citou: que não foi feita para cruds web, pois seu foco é programação concorrente e para sistemas de mensageria, features muito complexas, coleções diferentes de Java, deve-se ter cuidado.
Rodrigo Kumpera abriu o período da tarde, seu tema foi "Crie aplicações nativas para Iphone e Android com o Mono" Kumpera relembrou a evolução dos telefones celulares.Contou que algumas preocupações que devemos ter quando desenvolvemos para dispositivos moveis é saber que uma hora ele vai falhar, uma hora os dados vão corromper ou a net ficar lenta. Para tentar amenizar tais problemas Kumpera deu algumas explicações arquiteturais ensinando o que pode ser compartilhado na aplicação e o que não pode.
Mostrou-nos o funcionamento de uma aplicação feita por ele chamada MWC que serve para organizar eventos e funciona para todas as plataformas, é open source e está liberada no seu guit.
A segunda palestra da tarde com tema "Não está feito até estar testado - integração continua e o Builda" foi feita pelo Tiago Bastos. Seu lema Works on every machine, testes tem que rodar e compilar. A falta de uma ferramenta de integração que funcionasse em diversas linguagens fez com a empresa em que trabalha iniciasse o projeto Builda. Sua instalação é simples e contem 3 passos: adicionar um repositório, adicionar uma chave publica e clicar em build. Vale a pena lembrar outra frase proferida por Tiago " Programar não é só escrever código, temos que garantir que ele funciona ". Uma curiosidade do projeto Builda é que quando estava em fase de desenvolvimento era o próprio projeto que fazia sua integração. Builda é software proprietário e precisa de uma licença.
Regis Melo deu uma palestra sobre "Como construir software para rodar nos 7 continentes". Sua palestra consistiu em contar experiências de vida em seus 23 anos de desenvolvimento, hoje dono da Sagarana Tech, passou por vários desafios e possui diversos produtos espalhados pelo mundo.
" Big data analytics – Por que o dado por si só não significa nada " foi o assunto abordado pelo Fernando Meyer, que inovou com slides feitos a mão. Muito criativo.
Fernando explicou que Big data nada mais é que dados, a única diferença para um BD normal é como esses dados são medidos. Existem N formas de armazenar dados. exemplos de sistemas de armazenamento de dados são o Mongo e o Cassandra.
Ultima palestra do evento foi dada por Alexandre Costa Martins da Dataprev, que resolveu falar sobre "Desafios e experiências no desenvolvimento de um sistema do tamanho do Brasil" essa é outra palestra que não poderei comentar pois me ausentei do evento, mas deve-se louvar a atitude da Dataprev, um órgão publico federal que fez presente ao evento custeando a entrada de 30 de seus funcionários.
Bem isso foi o que rolou nesses 2 dias de eventos, pelo "resumo" que é um pouco extenso dá para ver como foi bom o nível das palestras e que venham os próximos.
sexta-feira, 11 de maio de 2012
Java CE Community Conference - O que rolou - 1º dia
Hoje 11/05/2012 começou em Fortaleza o Java CE Community Conference um dos maiores eventos do Brasil relacionado a linguagem Java, confesso que o evento está superando minhas expectativas e olhe que elas sempre foram grandes. Tentarei resumir em dois posts (um para o primeiro dia e outro para o segundo dia) tudo que rolou na conferencia!
O credenciamento dos participantes começou por volta das 7:30hs, a primeira palestra sofreu um pequeno atraso de +- 15 min. O evento não poderia começar com palestrantes mais gabaritados que o Paulo Silveira e Raphael Lacerda com o tema "Chegando ao Lambda no Java 8" Raphael foi o primeiro a falar e mostrou alguns exemplos de listas no java e como fazemos para itera-las hoje, após isso falou sobre o lambda e sobre Api orientada a fluent interface que faz por exemplo, o desenvolvedor iterar uma lista com poucas linhas de código. Lambda usa proxy dinâmico o que faz o processamento ficar um pouco mais lento, mas o ganho em economia de código compensa. Paulo entrou na palestra para falar sobre o Java 8 e suas novidades, já está no 36º build e entre as mudanças propostas teremos um método forEach na interface List mas não tenhamos medo a jvm saberá defender os métodos para evitar quebra de contrato nos códigos antigos, teremos uma espécie de Herança múltipla, interfaces serão classes abstratas com a restrição de não poderem conter atributos.
Lambda estará incorporado no Java 8, o método sort foi incorporado as listas e não só as coleções.
Loiane Gronner foi a segunda palestrante do dia com o tema "ExtJs 4 + Vraptor uma combinação explosiva" uma grande vantagem dessa combinação dar-se pela fácil maneira que o vraptor sérializa seus objetos, dando suporte a json já. Ela fez questão de deixar claro que não existe framework perfeito citando inclusive a vantagem do ExtJs de se integrar a outros frames java script caso o desenvolvedor sinta falta de algo como Jquery e Prototype.
Mostrou o clássico exemplo do ExtJs, o tema Desktop que ele permite desenvolver, não se omitiu ao contar a desvantagem do ExtJs por ser Gpl 5 e não poder ser comercializado, mas o valor da licença sai em torno de U$ 600,00 por desenvolvedor. Loiane deu exemplos de como trabalhar com MVC no ExtJs e como ficaria usando um projeto com camadas MVC também no lado do cliente.
Por ultimo ela comentou sobre o sencha touch 2 que pode ser usado para mobile e é o primeiro framework JS para mobile, permitindo também desenvolver aplicações cross device.
A terceira palestra do dia foi ministrada pela dupla da TriadWorks Marcelo Diniz e Yuri Adams e o tema escolhido foi "Gradle envolvido na automatização", fui apresentado a essa ferramenta de automatização de tarefas, confesso que gostei bastante e vou pesquisar mais sobre o assunto, gradle é uma ferramenta de automatização equivalente ao maven ou ant sem as desvantagens do uso de xml, convenções extremamente inflexíveis, suas vantagens são: Dsl de projeto, ser voltada para projetos baseados na Jvm, possuir a velocidade e o hashing do git, poder da metaprogramação do groove, possuir convenção mas sempre com flexibilidade para mudanças! Parabéns a dupla gostei muito da palestra.
A ultima palestra da manha foi dada pelo Douglas Campos um desenvolvedor apaixonado por open source inclusive aconselhando fortemente seguirmos esse caminho, Douglas trabalha na Jboss e possui muito conhecimento em linguagens de baixo nível. Seu tema foi "InvokeDynamic Crash Course" , ele falou sobre como a jvm baseia-se em pilhas e que Java é uma linguagem limitada mas isso não é nenhum problema. Confesso que não poderei falar mais sobre a palestra por que boiei legal.
Após o almoço tivemos a primeira palestra com Otavio Santana e participação do Juggy um bonequinho que auxilia formulando perguntas e contando piadas ( bem inovador e divertido) o seu tema foi "Desenvolvendo JEE persistindo com NoSql", alguns casos de sucesso do uso de NoSql são o twitter e o facebook. Otavio fez uma comparação entre o sql e o NoSql, sql é o carro utilitário ou seja serve pra tudo, enquanto o NoSql é um carro de corrida ou seja: muito rápido mas especifico. NoSql visa ser como um hospital ou seja estar sempre disponível, não usa drives somente a api isso faz dificultar a migração de BDs, pode ser configurado para armazenar dados tanto em memória como em disco com isso gerando um menor custo de I/O. NoSql faz busca somente pela chave e possui 4 modelos (Chave-valor,Documento,Grafo e Família de colunas). NoSql não possui relacionamentos.
A segunda palestra da tarde foi de um cara que sou suspeito em falar, pois foi quem me introduziu no java, Francisco Barroso com o tema "Cucumber testando aplicações java" , Barroso contou o por que mudar o teste de interface do seu trabalho do Selenium Ide para o Cucumber que é uma ferramenta desenvolvida em Ruby e possui uma linguagem muito legível tanto para o cliente quanto para desenvolvedores.
Terceira palestra da tarde foi dada por um ex-companheiro de trabalho Diogo Sousa "Simples pelo simples, google android RoboGuice , enfatizou o que na minha opiniao esta correto, 2012 será o ano do mobile no Brasil, explicou que o RoboGuice é pouco usado pela comunidade de desenvolvedores de android . falou de cases de sucesso como Groupom e facebook. RoboGuice é um framework de D.I para android de código aberto e baseado no guice da google.
Leonardo Leitão abriu a quarta palestra com o tema "Rest nas nuvens" e começou sua palestra dando uma explanação sobre Rest ( modelo arquitetural em cima do http ) explicou algumas qualidades de trabalhar com o Cloud, falou sobre Saas, Paas e Iaas,- Software as a service, Plataform as a service e Infrasctuture as a service. Enfatizou bem as vantagens do uso do amazon como provedor de nuvens porque o desenvolvedor so contrata o que quer e se a aplicação evolui em termos de acesso o provedor se adapta para tal, fornecendo Elastic load balance, Auto scaling e Elastic compute cloud. Concluindo que E2c+ elastic load balance + auto scaling como formula do sucesso.
Tivemos outra dupla na quinta palestra Carlos ViIllela e Gregorio Melo voltaram ao assunto de Bds com o tema "Quebrando Relacionamento: Nosql, Redis e Hbase" , como ja tínhamos tido uma excelente palestra sobre NoSql os dois focaram no assunto Redis e Hbase, o Cv falou mais sobre redis que é sua praia e o Gregorio falou sobre Hbase.
Como uma característica do Redis e ser rápido e fácil de configurar porem limitado, e oque queremos dizer com limitado? Limitado a guardar dados que caibam na memória, possui String, List, Hash Set e Sorted Set como tipo de dados e é atômico.
O Hbase não precisa de Dml nem Dll para o banco, usa timestamp para guardar as versões dos dados já que não tem conhecimento das colunas, funciona com objeto parecido com o json. Resumindo Redis e bom para cache e Hbase para Search.
Um conselho valido e que não se resolve tudo com o uso dos bds já mencionados, se não tem certeza vá pro caminho tradicional Sql.
A ultima palestra do dia foi do Bruno Sousa o Javaman, na verdade não foi palestra, ele respondeu algumas perguntas sobre o futuro do java, como a briga da Oracle x Google e só uso do JavaMe.
Bem foi isso que rolou no primeiro dia, amanha escreverei um post sobre o segundo dia. Ate amanha.
O credenciamento dos participantes começou por volta das 7:30hs, a primeira palestra sofreu um pequeno atraso de +- 15 min. O evento não poderia começar com palestrantes mais gabaritados que o Paulo Silveira e Raphael Lacerda com o tema "Chegando ao Lambda no Java 8" Raphael foi o primeiro a falar e mostrou alguns exemplos de listas no java e como fazemos para itera-las hoje, após isso falou sobre o lambda e sobre Api orientada a fluent interface que faz por exemplo, o desenvolvedor iterar uma lista com poucas linhas de código. Lambda usa proxy dinâmico o que faz o processamento ficar um pouco mais lento, mas o ganho em economia de código compensa. Paulo entrou na palestra para falar sobre o Java 8 e suas novidades, já está no 36º build e entre as mudanças propostas teremos um método forEach na interface List mas não tenhamos medo a jvm saberá defender os métodos para evitar quebra de contrato nos códigos antigos, teremos uma espécie de Herança múltipla, interfaces serão classes abstratas com a restrição de não poderem conter atributos.
Lambda estará incorporado no Java 8, o método sort foi incorporado as listas e não só as coleções.
Loiane Gronner foi a segunda palestrante do dia com o tema "ExtJs 4 + Vraptor uma combinação explosiva" uma grande vantagem dessa combinação dar-se pela fácil maneira que o vraptor sérializa seus objetos, dando suporte a json já. Ela fez questão de deixar claro que não existe framework perfeito citando inclusive a vantagem do ExtJs de se integrar a outros frames java script caso o desenvolvedor sinta falta de algo como Jquery e Prototype.
Mostrou o clássico exemplo do ExtJs, o tema Desktop que ele permite desenvolver, não se omitiu ao contar a desvantagem do ExtJs por ser Gpl 5 e não poder ser comercializado, mas o valor da licença sai em torno de U$ 600,00 por desenvolvedor. Loiane deu exemplos de como trabalhar com MVC no ExtJs e como ficaria usando um projeto com camadas MVC também no lado do cliente.
Por ultimo ela comentou sobre o sencha touch 2 que pode ser usado para mobile e é o primeiro framework JS para mobile, permitindo também desenvolver aplicações cross device.
A terceira palestra do dia foi ministrada pela dupla da TriadWorks Marcelo Diniz e Yuri Adams e o tema escolhido foi "Gradle envolvido na automatização", fui apresentado a essa ferramenta de automatização de tarefas, confesso que gostei bastante e vou pesquisar mais sobre o assunto, gradle é uma ferramenta de automatização equivalente ao maven ou ant sem as desvantagens do uso de xml, convenções extremamente inflexíveis, suas vantagens são: Dsl de projeto, ser voltada para projetos baseados na Jvm, possuir a velocidade e o hashing do git, poder da metaprogramação do groove, possuir convenção mas sempre com flexibilidade para mudanças! Parabéns a dupla gostei muito da palestra.
A ultima palestra da manha foi dada pelo Douglas Campos um desenvolvedor apaixonado por open source inclusive aconselhando fortemente seguirmos esse caminho, Douglas trabalha na Jboss e possui muito conhecimento em linguagens de baixo nível. Seu tema foi "InvokeDynamic Crash Course" , ele falou sobre como a jvm baseia-se em pilhas e que Java é uma linguagem limitada mas isso não é nenhum problema. Confesso que não poderei falar mais sobre a palestra por que boiei legal.
Após o almoço tivemos a primeira palestra com Otavio Santana e participação do Juggy um bonequinho que auxilia formulando perguntas e contando piadas ( bem inovador e divertido) o seu tema foi "Desenvolvendo JEE persistindo com NoSql", alguns casos de sucesso do uso de NoSql são o twitter e o facebook. Otavio fez uma comparação entre o sql e o NoSql, sql é o carro utilitário ou seja serve pra tudo, enquanto o NoSql é um carro de corrida ou seja: muito rápido mas especifico. NoSql visa ser como um hospital ou seja estar sempre disponível, não usa drives somente a api isso faz dificultar a migração de BDs, pode ser configurado para armazenar dados tanto em memória como em disco com isso gerando um menor custo de I/O. NoSql faz busca somente pela chave e possui 4 modelos (Chave-valor,Documento,Grafo e Família de colunas). NoSql não possui relacionamentos.
A segunda palestra da tarde foi de um cara que sou suspeito em falar, pois foi quem me introduziu no java, Francisco Barroso com o tema "Cucumber testando aplicações java" , Barroso contou o por que mudar o teste de interface do seu trabalho do Selenium Ide para o Cucumber que é uma ferramenta desenvolvida em Ruby e possui uma linguagem muito legível tanto para o cliente quanto para desenvolvedores.
Terceira palestra da tarde foi dada por um ex-companheiro de trabalho Diogo Sousa "Simples pelo simples, google android RoboGuice , enfatizou o que na minha opiniao esta correto, 2012 será o ano do mobile no Brasil, explicou que o RoboGuice é pouco usado pela comunidade de desenvolvedores de android . falou de cases de sucesso como Groupom e facebook. RoboGuice é um framework de D.I para android de código aberto e baseado no guice da google.
Leonardo Leitão abriu a quarta palestra com o tema "Rest nas nuvens" e começou sua palestra dando uma explanação sobre Rest ( modelo arquitetural em cima do http ) explicou algumas qualidades de trabalhar com o Cloud, falou sobre Saas, Paas e Iaas,- Software as a service, Plataform as a service e Infrasctuture as a service. Enfatizou bem as vantagens do uso do amazon como provedor de nuvens porque o desenvolvedor so contrata o que quer e se a aplicação evolui em termos de acesso o provedor se adapta para tal, fornecendo Elastic load balance, Auto scaling e Elastic compute cloud. Concluindo que E2c+ elastic load balance + auto scaling como formula do sucesso.
Tivemos outra dupla na quinta palestra Carlos ViIllela e Gregorio Melo voltaram ao assunto de Bds com o tema "Quebrando Relacionamento: Nosql, Redis e Hbase" , como ja tínhamos tido uma excelente palestra sobre NoSql os dois focaram no assunto Redis e Hbase, o Cv falou mais sobre redis que é sua praia e o Gregorio falou sobre Hbase.
Como uma característica do Redis e ser rápido e fácil de configurar porem limitado, e oque queremos dizer com limitado? Limitado a guardar dados que caibam na memória, possui String, List, Hash Set e Sorted Set como tipo de dados e é atômico.
O Hbase não precisa de Dml nem Dll para o banco, usa timestamp para guardar as versões dos dados já que não tem conhecimento das colunas, funciona com objeto parecido com o json. Resumindo Redis e bom para cache e Hbase para Search.
Um conselho valido e que não se resolve tudo com o uso dos bds já mencionados, se não tem certeza vá pro caminho tradicional Sql.
A ultima palestra do dia foi do Bruno Sousa o Javaman, na verdade não foi palestra, ele respondeu algumas perguntas sobre o futuro do java, como a briga da Oracle x Google e só uso do JavaMe.
Bem foi isso que rolou no primeiro dia, amanha escreverei um post sobre o segundo dia. Ate amanha.
segunda-feira, 23 de abril de 2012
O poder das Mídias Sociais
É inegável o crescimento das mídias sociais na internet, cada dia surgem diversas novas ferramentas que utilizam o conceito de mídias sociais, conceito esse que tem como uma das definições:
Saber tirar o melhor proveito não é uma tarefa difícil, basta criatividade e senso para filtrar o que é bom e o que é lixo na rede.
Vou falar algumas maneiras de como conseguir benefícios tanto no âmbito intelectual, profissional como ate para questão de diversão de algumas mídias conhecidas.
Começo pela minha rede favorita o Twitter, essa interessante ferramenta que incrivelmente conseguiu atrair milhares de usuários com uma ideia simples onde escreve-se geralmente o que está pensando ou fazendo em um texto de no máximo de 140 caracteres, consegue aproximar pessoas de outras partes do mundo sendo artistas ou não de maneira fácil e rápida. O twitter é a rede onde consigo me manter mais informado sobre a área de T.I assim como noticias de toda parte do mundo, é uma importante rede também para fazer o network com outros profissionais, trocar ideias, abordar temas e até descobrir mais sobre a rotina de trabalho de profissionais de outras empresas. Você seguindo as pessoas certas eu garanto que terá um enorme ganho intelectual.
Outra Rede que pode-se utilizar para difundir ideias é o já antigo Blog (WordPress, Blogger, etc) importante ferramenta para escrever artigos e difundir suas ideias sejam elas no âmbito profissional ou pessoal, importante ferramenta para marketing pessoal, o blog já conseguiu fazer muitas pessoas ficarem conhecidas por escreverem textos interessantes e com isso atraindo atenção de milhares de leitores, também virou ferramenta de negócios a ponto de viverem e ganharem dinheiro escrevendo posts.
Foursquare considero a ferramenta essencial para quem é empresário, tendo como beneficio maior a divulgação da empresa e serviço, um marketing bem feito pode trazer beneficios extraordinários para o estabelecimento, pois quem faz o Check-in automaticamente está fazendo uma propaganda boca a boca do local, e com isso podem ser criadas promoções ex: Um amigo lançou um bar em Fortaleza e para conseguir uma maior e mais rápida divulgação ele criou uma promoção que quem fizesse o check-in do bar dele ganhava outro chopp, assim conseguiu em pouco tempo um grande numero de clientes visitando seu bar.
Temos o Linkedin, importante para network profissional, com ele o usuario conecta-se com diversos profissionais alem de manter seu currículo visível para empresas do mundo inteiro, existem inúmeros casos de pessoas que foram contratadas ou contactadas porque alguém viu seu currículo profissional no linkedin e gostou. Eu mesmo já recebi diversos convites profissionais através dele.
Facebook essa considero a que devemos levar menos a serio, pois trata-se de uma ferramenta única e exclusivamente para entretenimento e conexão de pessoas, onde vemos todo tipo de assunto sendo difundido por ele, não podemos levar muitos conteúdos a serio e como beneficio temos o de mantermos em contato com amigos que raramente vemos ou para encontrarmos aquele amigo de colégio que havíamos perdido o contato.
CoachSurfing essa eu adoro, ela nada mais é que uma rede onde você se dispõe a hospedar uma pessoa na sua casa sem custo algum para ela, utilizada por mochileiros no mundo todo, ela funciona da seguinte forma, se você quer viajar por exemplo para a França, então você escreve que quer ir para lá e pergunta se alguém está disposto a recebê-lo, essa mensagem é enviada a todos os usuários que ficam na cidade que você estará indo, alguém se dispõe a recebê-lo em sua casa sem custo algum de hospedagem para você, e a recíproca é verdadeira.
Bom isso é um pequeno resumo do que podemos tirar de benefícios de algumas redes sociais existentes hoje na internet, lógico que existem inúmeras outras não citadas, todo dia surge uma rede nova tentando ser uma nova febre mundial. É importante também saber discernir o que é legal e o que é descartável nessas redes.
"Tratar-se da produção de conteúdos de forma descentralizada e sem o controle editorial de grande grupos."Mídias sociais se popularizaram com a chegada da WEB 2.0. A característica de não ter nenhum controle editorial foi o trunfo para o crescimento das mídias, pois qualquer pessoa pode construir conteúdo de qualidade ou não e difundir usando o grande poder de compartilhamento que a internet proporciona. Existem diversas ferramentas desenvolvidas utilizando o conceito da WEB 2.0 entre elas cito youtube, Foursquare, Blogger, Wordpress, Facebook, Twitter, Fliker, Linkedin,Vimeo, JustinTv, LastFm.
Saber tirar o melhor proveito não é uma tarefa difícil, basta criatividade e senso para filtrar o que é bom e o que é lixo na rede.
Vou falar algumas maneiras de como conseguir benefícios tanto no âmbito intelectual, profissional como ate para questão de diversão de algumas mídias conhecidas.
Começo pela minha rede favorita o Twitter, essa interessante ferramenta que incrivelmente conseguiu atrair milhares de usuários com uma ideia simples onde escreve-se geralmente o que está pensando ou fazendo em um texto de no máximo de 140 caracteres, consegue aproximar pessoas de outras partes do mundo sendo artistas ou não de maneira fácil e rápida. O twitter é a rede onde consigo me manter mais informado sobre a área de T.I assim como noticias de toda parte do mundo, é uma importante rede também para fazer o network com outros profissionais, trocar ideias, abordar temas e até descobrir mais sobre a rotina de trabalho de profissionais de outras empresas. Você seguindo as pessoas certas eu garanto que terá um enorme ganho intelectual.
Outra Rede que pode-se utilizar para difundir ideias é o já antigo Blog (WordPress, Blogger, etc) importante ferramenta para escrever artigos e difundir suas ideias sejam elas no âmbito profissional ou pessoal, importante ferramenta para marketing pessoal, o blog já conseguiu fazer muitas pessoas ficarem conhecidas por escreverem textos interessantes e com isso atraindo atenção de milhares de leitores, também virou ferramenta de negócios a ponto de viverem e ganharem dinheiro escrevendo posts.
Foursquare considero a ferramenta essencial para quem é empresário, tendo como beneficio maior a divulgação da empresa e serviço, um marketing bem feito pode trazer beneficios extraordinários para o estabelecimento, pois quem faz o Check-in automaticamente está fazendo uma propaganda boca a boca do local, e com isso podem ser criadas promoções ex: Um amigo lançou um bar em Fortaleza e para conseguir uma maior e mais rápida divulgação ele criou uma promoção que quem fizesse o check-in do bar dele ganhava outro chopp, assim conseguiu em pouco tempo um grande numero de clientes visitando seu bar.
Temos o Linkedin, importante para network profissional, com ele o usuario conecta-se com diversos profissionais alem de manter seu currículo visível para empresas do mundo inteiro, existem inúmeros casos de pessoas que foram contratadas ou contactadas porque alguém viu seu currículo profissional no linkedin e gostou. Eu mesmo já recebi diversos convites profissionais através dele.
Facebook essa considero a que devemos levar menos a serio, pois trata-se de uma ferramenta única e exclusivamente para entretenimento e conexão de pessoas, onde vemos todo tipo de assunto sendo difundido por ele, não podemos levar muitos conteúdos a serio e como beneficio temos o de mantermos em contato com amigos que raramente vemos ou para encontrarmos aquele amigo de colégio que havíamos perdido o contato.
CoachSurfing essa eu adoro, ela nada mais é que uma rede onde você se dispõe a hospedar uma pessoa na sua casa sem custo algum para ela, utilizada por mochileiros no mundo todo, ela funciona da seguinte forma, se você quer viajar por exemplo para a França, então você escreve que quer ir para lá e pergunta se alguém está disposto a recebê-lo, essa mensagem é enviada a todos os usuários que ficam na cidade que você estará indo, alguém se dispõe a recebê-lo em sua casa sem custo algum de hospedagem para você, e a recíproca é verdadeira.
Bom isso é um pequeno resumo do que podemos tirar de benefícios de algumas redes sociais existentes hoje na internet, lógico que existem inúmeras outras não citadas, todo dia surge uma rede nova tentando ser uma nova febre mundial. É importante também saber discernir o que é legal e o que é descartável nessas redes.
domingo, 12 de fevereiro de 2012
Impressões sobre o livro Introdução à arquitetura e design de software
Bom hoje terminei de ler o livro Introdução à arquitetura e design de software escrito pelo pessoal da Caelum, foi o livro de tecnologia que li em menor tempo, entre os motivos para tal feito destaco a didática utilizada pelo autores, o livro é muito gostoso de ler e de fácil compreensão, outro fator é que ele não é muito grande. São ao todo 232 páginas de puro conteúdo. Pode parecer que é superficial mas não é, o livro aborda muito bem alguns dos principais aspectos para desenvolver um software bem arquitetado e com ótimo design, mostrando diversos pontos positivos e negativos ao escolher certos caminhos no desenvolvimento.
O livro é todo baseado no Java e trata de aspectos que vão desde a JVM até a Integração de sistemas Web e Rest.
Os capítulos que mais gostei foram o 3º - Tópicos de Orientação a Objetos, 4º- Separação de responsabilidades e o 6º- Decisões arquiteturais.
No capitulo 3 o livro fala de como programar orientado a interfaces e não á implementação deixando o código menos acoplado, como devemos buscar programar compondo comportamentos para nossas classes, devemos também evitar e herança e favorecer a composição como explicação de que herança força a classe filha a conhecer o comportamento da classe mãe, o que é visto como quebra de encapsulamento. Outro aspecto interessante nesse capitulo é quando indica a favorecer a imutabilidade nas classes fazendo com que não tenhamos problemas como a perca de referencia dos objetos.
No capitulo 4 destaco como o livro trata e ensina a obter um baixo acoplamento e uma alta coesão utilizando técnicas de separação de responsabilidades, interessante também como defendem o uso de um Framework para injeção de dependências e inversão de controle, entre eles temos o Spring Framework, mas no JEE6 já temos a implementação do CDI - Context and Dependency Injection embutida na plataforma. O capitulo faz alusão aos Singletons e como caiu em desuso chegando a ser considerado um
O capitulo 6 explica a diferença entre Tiers e Layers conceitos bastantes confundido pelos Desenvolvedores.
Layers são as separações lógicas de como organizar o código da aplicação de maneira a diminuir o acoplamento e facilitar as mudanças, o MVC é um exemplo dessa separação.
Tiers já trata de separações físicas entre partes do sistema exemplo: servidor web e o banco de dados.
Outro assunto interessante é sobre Desenvolvimento Web MVC e qual tipo de abordagem devemos usar ao desenvolver um software Actions ou Componentes, fazendo uma analise também de frameworks Action-based (Struts2) e Component-based (Jsf).
Frameworks ORM também são muito abordados neste capitulo, mais precisamente o uso do Hibernate, explicando como tirar proveito de Caches de 1º e 2º níveis, diminuindo o acesso ao banco e ganhando performance.
Esses foram os tópicos abordados pelo livro que achei mais interessante compartilhar, mas vale ressaltar que o livro todo é bom, não tem um capitulo que não dê para tirar proveito e enriquecer seu conhecimento. Aconselho a quem não tem adquiri-lo, tenho certeza que terão uma outra visão quando forem desenvolver algum software, até porque é um livro de certa forma barato pelo quanto de valor ele ira agregar ao profissional que o tiver.
Endereço na Web do livro: http://www.arquiteturajava.com.br/
quinta-feira, 15 de dezembro de 2011
Alguns pontos de vista acerca do Mercado de T.I
Motivado por alguns debates que volta ou outra reaparecem na comunidade de desenvolvimento brasileira resolvi escrever um post com dois dos principais assuntos discutidos para expressar minha opinião .
Então vamos aos pontos de discussão:
1- Muitos programadores sem qualificação nenhuma nas entrevistas de emprego:
Bem isso é verdade até certo ponto, realmente existem muitas pessoas desqualificadas ou pior, acomodadas que pararam no tempo e não procuraram evoluir. Evolução tem que ser algo constante para o profissional de T.I, mas existe também outro lado da moeda que são algumas empresas que utilizam de uma política onde as exigências para as vagas são inversamente proporcionais aos salários oferecidos, logicamente se você não oferece um bom salário e uma boa condição para o profissional qualificado exercer bem sua função você não poderá exigir que bons profissionais participem do seu processo de seleção se quer ótimos profissionais ( e no mercado existe sim muitos) então pague salários equivalentes ao seu conhecimento, pois o profissional pra chegar aquele nível estudou bastante, perdeu varias horas pesquisando e gastou muito dinheiro com livros e cursos então merece um salário digno.
O que acontece é que muitas empresas não costumam olhar para ela mesma para assim conseguir enxergar onde está falhando ficando muito mais cômodo acusar o mercado de não ter pessoas qualificadas, até por que ela por mais que tenha trabalho para preencher a vaga sempre encontrará profissionais se vendendo muitas vezes a preço de banana.
2-Apagão na Área de T.I:
Isso é um fato hoje estima-se que o déficit de profissionais chega a 73mil e que até 2013 chegará a 200 mil. Essa necessidade não deve ser suprida pelo menos nos próximos 20 anos pois por mais que surjam mais cursos para área o numero de profissionais nunca conseguirá chegar nem perto do numero de vagas em aberto já que demora-se um tempo para formar um profissional com o mínimo de requisitos necessários para o mercado de trabalho, em contra partida a cada minuto surgem novas necessidades e essas exigem mais profissionais provendo soluções.
Conclusão empresas que não querem correr o risco de perder um profissional qualificado ou que deseja contratações de tais profissionais, deve pagar um valor justo e prover boas condições de trabalho, lembrando que nem sempre um maior salário prende o funcionário na empresa se a mesma não tem um ambiente descontraído e agradável para trabalhar.
Na minha opinião tão importante quanto a contratação de uma mente “brilhante” é a contratação de pessoas engajadas e que tenham gana e força de vontade para aprender e evoluir, não adianta você ter o bambam bam na sua empresa se o mesmo não é comprometido com os objetivos da mesma. Investir em profissionais ao contrario do que muitos empresários pensam não é perca de dinheiro pois mesmo quando o funcionário sair você terá utilizado o conhecimento enquanto ele foi seu empregado então ele agregou valor a sua empresa e produto.
Então vamos aos pontos de discussão:
1- Muitos programadores sem qualificação nenhuma nas entrevistas de emprego:
Bem isso é verdade até certo ponto, realmente existem muitas pessoas desqualificadas ou pior, acomodadas que pararam no tempo e não procuraram evoluir. Evolução tem que ser algo constante para o profissional de T.I, mas existe também outro lado da moeda que são algumas empresas que utilizam de uma política onde as exigências para as vagas são inversamente proporcionais aos salários oferecidos, logicamente se você não oferece um bom salário e uma boa condição para o profissional qualificado exercer bem sua função você não poderá exigir que bons profissionais participem do seu processo de seleção se quer ótimos profissionais ( e no mercado existe sim muitos) então pague salários equivalentes ao seu conhecimento, pois o profissional pra chegar aquele nível estudou bastante, perdeu varias horas pesquisando e gastou muito dinheiro com livros e cursos então merece um salário digno.
O que acontece é que muitas empresas não costumam olhar para ela mesma para assim conseguir enxergar onde está falhando ficando muito mais cômodo acusar o mercado de não ter pessoas qualificadas, até por que ela por mais que tenha trabalho para preencher a vaga sempre encontrará profissionais se vendendo muitas vezes a preço de banana.
2-Apagão na Área de T.I:
Isso é um fato hoje estima-se que o déficit de profissionais chega a 73mil e que até 2013 chegará a 200 mil. Essa necessidade não deve ser suprida pelo menos nos próximos 20 anos pois por mais que surjam mais cursos para área o numero de profissionais nunca conseguirá chegar nem perto do numero de vagas em aberto já que demora-se um tempo para formar um profissional com o mínimo de requisitos necessários para o mercado de trabalho, em contra partida a cada minuto surgem novas necessidades e essas exigem mais profissionais provendo soluções.
Conclusão empresas que não querem correr o risco de perder um profissional qualificado ou que deseja contratações de tais profissionais, deve pagar um valor justo e prover boas condições de trabalho, lembrando que nem sempre um maior salário prende o funcionário na empresa se a mesma não tem um ambiente descontraído e agradável para trabalhar.
Na minha opinião tão importante quanto a contratação de uma mente “brilhante” é a contratação de pessoas engajadas e que tenham gana e força de vontade para aprender e evoluir, não adianta você ter o bambam bam na sua empresa se o mesmo não é comprometido com os objetivos da mesma. Investir em profissionais ao contrario do que muitos empresários pensam não é perca de dinheiro pois mesmo quando o funcionário sair você terá utilizado o conhecimento enquanto ele foi seu empregado então ele agregou valor a sua empresa e produto.
segunda-feira, 24 de outubro de 2011
Trabalhe em equipe com o Trello
Nesse post vou falar um pouco de uma aplicação web muito bacana para quem trabalha em equipe e principalmente para quem tem equipe distribuída geograficamente, essa ferramenta chama-se Trello e como seus desenvolvedores a intitulam ela serve para "juntos organizar qualquer coisa ". Trello é uma ferramenta para gerenciamento de atividades que funciona como uma rede Social onde é possivel criar um Board (projeto) e adicionar os membros da equipe para que todos possam verificar o andamento das tarefas em tempo Real, a sua grande vantagem é que ela tem uma interface bem limpa e ao mesmo tempo robusta, além de seguir o conceito dos "Kanbans" onde tem-se originalmente 3 estágios de tarefas (ToDo, Doing e Done) mas nada impede que seja criada um novo estágio como por exemplo Tests.
A praticidade impera nessa ferramenta, com o conceito de drag-and-drop o usuário pode facilmente modificar o status de uma tarefa, passando por exemplo de Doing para Done. Como quase todas ferramentas para gerenciamento de tarefas ela mantém um histórico de status das atividades, permite também anexar arquivos aos "Post-its" seja ele pdf, imagem ou até txt (Até agora não vi nenhuma restrição quanto a extensão de arquivos).
Como já mencionei anteriormente um diferencial do Trello é que os membros das equipes conseguem informações em tempo real do andamento das tarefas, uma vantagem também para quem trabalha com clientes que acompanham de perto o o curso do projeto.
Já estou utilizando a aplicação em dois projetos e só tenho referencias boas a dar sobre ela.
Para quem se interessou em saber mais sobre o Trello segue abaixo o vídeo demonstrativo e a url de acesso da app :
domingo, 9 de outubro de 2011
Técnica de Pomodoro
Bom o intuito desse post é apresentar uma técnica não muito conhecida mas que pode proporcionar um ganho significativo na produtividade de um sistema, principalmente para quem trabalha com pessoas ou equipes que costumam perder o foco com muita facilidade.
A definição da "The Pomodoro Technique" é que ela é uma forma de tirar o máximo proveito do tempo de gestão. Foi criada em 1980 por Francesco Cirillo e basicamente a técnica consiste em dividir suas tarefas em períodos de 25 minutos chamados "pomodoros" esse termo vem por conta da utilização de um timer de cozinha que servia para registrar o tempo exato que era preciso para preparar um extrato de tomate.
Sua eficácia está em manter a pessoa ou equipe focada no objetivo por aquele período de tempo, no caso 25min, passado esse tempo a equipe tem um intervalo de 3 a 5 minutos para se distrair e relaxar um pouco, a cada 4 pomodoros o intervalo de descanso deve ser de 15 a 30 minutos.
As etapas de planejamento, controle de tempo, gravação de registros e visualização são fundamentais para a técnica.
Na fase de planejamento de tarefas são priorizadas as mais urgentes, o objetivo da técnica é reduzir as interrupções que acabam ocorrendo quando não se tem o controle do tempo, consequentemente atrasando tarefas que tenham uma certa urgência.
Embora essa técnica seja bastante usada para trabalhos onde existem prazos apertados de entregas, ela não serve só para isso, pode ser usada em qualquer segmento que precise de concentração e foco, tanto que seu uso inicial foi para os estudos já que o criador da técnica não tinha concentração para ficar muito tempo na frente dos livros.
Hoje sabemos como as redes sociais contribuem cada vez mais para que as pessoa percam o foco facilmente na realização de tarefas do dia a dia.
Eu tenho um grande problema de concentração e isso me fez ir em busca de técnicas que fizessem aumentar meu foco e concentração no trabalho, a pomodoro foi a que mais me fez ganhar produtividade. Comecei a usa-la á 20 dias e posso afirmar que a produtividade aumentou 100%.
No começo os 25 minutos iniciais demoram a passar e você por não estar acostumado ao foco acaba sentindo, mas posso afirmar que com o passar do tempo a pessoa fica tão focada no trabalho que muitas vezes passa a nem utilizar mais o tempo de descanso e encaixar sprints atras sprints sem utilizar o intervalo de descanso (isso segundo alguns é errado).
A técnica é bastante interessante e eficaz, alguns relatos de amigos dão conta que suas equipes precisavam entregar alguns itens que se não fosse pelo pomodoro levariam 2 dias para concluir o trabalho, e com o pomodoro levaram menos de um dia para realizar todas as tarefas.
A grande vantagem dessa técnica é que para ser aplicada basta uma folha de papel para listar os objetivos a serem cumpridos e um relógio para marcar o tempo dos pomodoros. Existem algumas ferramentas para quem usa smart phones tanto iphone como androids, pcs e até onlines que auxiliam a marcar o tempo e as tarefas a serem realizadas.
Até hoje não consegui enxergar nenhuma desvantagem no uso dessa técnica e quem quizer saber mais a respeito ou até mesmo ser um "certified pomodoro master" basta acessar a página oficial: http://www.pomodorotechnique.com/
A definição da "The Pomodoro Technique" é que ela é uma forma de tirar o máximo proveito do tempo de gestão. Foi criada em 1980 por Francesco Cirillo e basicamente a técnica consiste em dividir suas tarefas em períodos de 25 minutos chamados "pomodoros" esse termo vem por conta da utilização de um timer de cozinha que servia para registrar o tempo exato que era preciso para preparar um extrato de tomate.
Sua eficácia está em manter a pessoa ou equipe focada no objetivo por aquele período de tempo, no caso 25min, passado esse tempo a equipe tem um intervalo de 3 a 5 minutos para se distrair e relaxar um pouco, a cada 4 pomodoros o intervalo de descanso deve ser de 15 a 30 minutos.
As etapas de planejamento, controle de tempo, gravação de registros e visualização são fundamentais para a técnica.
Na fase de planejamento de tarefas são priorizadas as mais urgentes, o objetivo da técnica é reduzir as interrupções que acabam ocorrendo quando não se tem o controle do tempo, consequentemente atrasando tarefas que tenham uma certa urgência.
Embora essa técnica seja bastante usada para trabalhos onde existem prazos apertados de entregas, ela não serve só para isso, pode ser usada em qualquer segmento que precise de concentração e foco, tanto que seu uso inicial foi para os estudos já que o criador da técnica não tinha concentração para ficar muito tempo na frente dos livros.
Hoje sabemos como as redes sociais contribuem cada vez mais para que as pessoa percam o foco facilmente na realização de tarefas do dia a dia.
Eu tenho um grande problema de concentração e isso me fez ir em busca de técnicas que fizessem aumentar meu foco e concentração no trabalho, a pomodoro foi a que mais me fez ganhar produtividade. Comecei a usa-la á 20 dias e posso afirmar que a produtividade aumentou 100%.
No começo os 25 minutos iniciais demoram a passar e você por não estar acostumado ao foco acaba sentindo, mas posso afirmar que com o passar do tempo a pessoa fica tão focada no trabalho que muitas vezes passa a nem utilizar mais o tempo de descanso e encaixar sprints atras sprints sem utilizar o intervalo de descanso (isso segundo alguns é errado).
A técnica é bastante interessante e eficaz, alguns relatos de amigos dão conta que suas equipes precisavam entregar alguns itens que se não fosse pelo pomodoro levariam 2 dias para concluir o trabalho, e com o pomodoro levaram menos de um dia para realizar todas as tarefas.
A grande vantagem dessa técnica é que para ser aplicada basta uma folha de papel para listar os objetivos a serem cumpridos e um relógio para marcar o tempo dos pomodoros. Existem algumas ferramentas para quem usa smart phones tanto iphone como androids, pcs e até onlines que auxiliam a marcar o tempo e as tarefas a serem realizadas.
Até hoje não consegui enxergar nenhuma desvantagem no uso dessa técnica e quem quizer saber mais a respeito ou até mesmo ser um "certified pomodoro master" basta acessar a página oficial: http://www.pomodorotechnique.com/
terça-feira, 17 de maio de 2011
Java pede Respeito
Ultimamente tenho ouvindo muito desenvolvedor “trolando” o Java falando que não presta, que é ultrapassada, até parece que agora a "coqueluche" (é o novo) do momento é falar mau do Java para parecer “ O cara descolado”, não entendo tal comportamento e pude presenciar muita arrogância de certas pessoas que por estarem agora trabalhando com outras linguagens da moda tais como Ruby ou JavaScript, querem desmerecer a linguagem que na maioria dos casos foi o seu ganha pão por tempos e o iniciou no mercado de desenvolvimento de software, isso quando não foi pior (quando sua base e sua iniciação no mercado foi com PHP).
Vi teorias de que essa má fama do Java deu-se por conta do JSF ou como preferem JSFAIL, me admira pessoas que parecem tão esclarecidas não saberem distinguir um framework mau sucedido de uma linguagem que esta no mercado a anos com inumeros exemplos de sistemas bem sucedidos e implantados em grandes empresas ao redor do mundo , esquecem que essa mesma linguagem tão mau falada possui ótimos frameworks como Spring, Hibernate??
Você que acha que Java não presta mais para nada deveria saber que no desenvolvimento não existe silver bullet e como não existe nenhuma linguagem milagrosa que resolve todos os problemas do mundo também não existe nenhuma linguagem pereba, tudo depende do seu propósito, Java não morreu e não morrera tão cedo, como muitos torcem ou fingem que torcem, Java vive e pede respeito, abra sua mente não seja um radical e preconceituoso.
Vi teorias de que essa má fama do Java deu-se por conta do JSF ou como preferem JSFAIL, me admira pessoas que parecem tão esclarecidas não saberem distinguir um framework mau sucedido de uma linguagem que esta no mercado a anos com inumeros exemplos de sistemas bem sucedidos e implantados em grandes empresas ao redor do mundo , esquecem que essa mesma linguagem tão mau falada possui ótimos frameworks como Spring, Hibernate??
Você que acha que Java não presta mais para nada deveria saber que no desenvolvimento não existe silver bullet e como não existe nenhuma linguagem milagrosa que resolve todos os problemas do mundo também não existe nenhuma linguagem pereba, tudo depende do seu propósito, Java não morreu e não morrera tão cedo, como muitos torcem ou fingem que torcem, Java vive e pede respeito, abra sua mente não seja um radical e preconceituoso.
segunda-feira, 11 de abril de 2011
Compilação de dicas Ireport
Ultimamente venho trabalhando muito com relatórios feitos no Ireport (até mais do que eu gostaria) e como sei que é difícil conseguir boas dicas, resolvi fazer uma compilação de dicas aqui para quem passa por alguns “perrengues” com essa ferramenta.
Passar uma lista como datasource de um subrelatorio
Deve-se usar essa expressão no datasourceconection do subrelatorio new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{Lista})
O field Lista é a lista de objetos que deseja que seja passado para o relatório.
No subrelatorio se quizer pegar os atributos do objeto da lista é so declara-los como Field que o jasper vai fazer o papel de mapea-los para você.
Na imagem acima tenho o meu field $F{servicos} que é do tipo List
No subrelatorio se quizer pegar os atributos do objeto da lista é so declara-los como Field que o jasper vai fazer o papel de mapea-los para você.
Na imagem acima tenho o meu field $F{servicos} que é do tipo List
Não passar nenhum dado para o Subrelatorio e mesmo assim fazer com que ele abra
Basta usar a seguinte expressão new JREmptyDataSource(), com isso o relatório ira abrir sem precisar de valor algum.
Basta usar a seguinte expressão new JREmptyDataSource(), com isso o relatório ira abrir sem precisar de valor algum.
Criar uma expressão para se verdadeira imprimir o relatório ou campo do relatório
Se quiser que o relatório ou algum campo dele só imprima de acordo com alguma condição basta colocar um teste booleano na propriedade print when expression
Ex: new Boolean($V{campoDouble}.doubleValue()>0) Nesse exemplo só sera impresso se o campo for maior que zero. A imagem abaixo ilustra esse exemplo:
Passando um Mapa como parâmetro
Declara-se um Field do tipo Map
Ex: org.apache.commons.collections.map.HashedMap
Nesse exemplo usei HashedMap, mas poderia ter sido usado qualquer outro tipo de mapa,no relatório que ira receber o Mapa como parâmetro será preciso declarar uma variável, seta-se o variable class com o caminho da classe que está sendo salva no mapa
Ex: com.meuprojeto.to.MinhaClasseTO
No variable expression coloca-se a chave que irá pegar o valor do mapa.
Ex:$P{meuMap}.get($F{valorDaChaveMapa}), depois no Field do relatório é so pegar o valor assim: $V{minhaVariavel}.geMeuAtributo()
Passando uma lista de Strings para o subrelatorio
Se quiser passar uma lista de Strings para um subrelatorio e recuperar os valores deverá declarar o field com a expressão $F{_THIS}, com isso conseguira recuperar os valores da lista.
Se precisar inserir uma palavra em negrito no meio de um texto, como feito nessa frase, basta setar o Markup como styled e usar a tag <style isBold="true"> No texto Negrito </style> como na imagem abaixo:
domingo, 20 de março de 2011
BrazilJs vai perder??
Vem ai um dos maiores eventos de JavaScript do Brasil, dias 13 e 14 de Maio e ai vai perder??
Link do site do evento para maiores informações e inscrições. http://braziljs.com.br/2011/#!/home
terça-feira, 8 de março de 2011
Criando Jar com as fontes do Jasperreports
Vou ensinar nesse post como criar um jar que contenham as Fonts do jasper, evitando que eles fiquem espalhados na aplicação, com esse jar além de ser um meio mais elegante de ter as fonts no projeto, diminui também o tamanho do mesmo. Originalmente os fonts ficavam dispostos da seguinte maneira:
Após a instalação iremos criar o JAR para ser usado na aplicação. Clique no nome da font que acabou de criar e depois Export as extension, escolha o diretório que deseja salvar e pronto, está criado seu jar com as fonts necessarias para sua aplicação:
Pronto depois é só colocar o jar criado no Build Path da sua aplicação, como mencionei anteriormente essa solução é mais elegante pois não deixa as fonts soltas na pasta do projeto ela economiza espaço no meu exemplo o tamanho do projeto caiu em quase 2 megas com essa solução.
No caso precisava da fonte arial narrow para impressão em formato PDF, então era necessária a sua instalação na aplicação para ser reconhecida pelo jasper.
Primeira coisa que se deve fazer é instalar as fontes no Ireport, para isso vá em Ferramentas, depois Opções, irá abrir uma janela, clique na opção Font. Clique em instalar fonts, e escolha as que deseja utilizar na aplicação:
Pronto depois é só colocar o jar criado no Build Path da sua aplicação, como mencionei anteriormente essa solução é mais elegante pois não deixa as fonts soltas na pasta do projeto ela economiza espaço no meu exemplo o tamanho do projeto caiu em quase 2 megas com essa solução.
quinta-feira, 10 de fevereiro de 2011
Instalando o Git Gui
Ontem escrevi um post ensinando como instalar e configurar o Git Gui, e hoje por coincidência vejo um tweet do JavaFree falando sobre o ScrenCast do Adilson Carvalho, onde ele explica a instalação do Git, achei muito interessante e por isso tomei a liberdade de postar o link do ScreenCast para complementar o post anterior.
http://vimeo.com/17798986
http://vimeo.com/17798986
quarta-feira, 9 de fevereiro de 2011
Configurando o Git Gui
Bem resolvi mi aventurar pelo Git Hub, um pouco tarde eu sei mas antes tarde do que nunca :) e mi deparei com alguns problemas na hora de configura-lo, por isso resolvi fazer esse post para ajudar a quem esteja passando pelo mesmo problema.
A primeira coisa que deve-se fazer é criar a sua conta no site acessando aqui após isso baixe o aplicativo no endereço http://git-scm.com/download existe versões para windows, Mac e Linux, no meu caso baixei a versão para windows após baixar instale-o.
Ao executar o Git Gui pela primeira vez ele irá abrir a tela abaixo, você tem que criar o diretório que estará seu projeto "passo 1" no "passo 2" você irá indica o caminho. Obs: o projeto deve está dentro de um diretório pai.
Após indicar o diretório onde fica seu projeto teremos que configurar a conexão, primeiro teremos que adquirir uma chave SSh, vá no menu help e click em Show SSH Key, nesse momento irá abrir uma janela para gerar a chave, click em Generate Key, então irá abrir outra tela que irá pedir para que se insira uma senha (insira uma senha que seja fácil de lembrar)
Será gerada uma chave copie toda ela e insira na sua conta do git hub, dê um titulo para ela, isso é importante por que essa chave é por computador então se for acessar através de outros computadores precisará diferencia-las.
Pronto inserida a chave vamos configurar a conexão, no menu Edit click em Options, iremos inserir o username e o email nos campos circulados.
Agora adcionaremos uma conexão remota no menu vamos no Remote e clicar no Add, irá abrir uma janela e você terá que preencher o campo Nome: com o nome do projeto e o campo Location com a Url gerada pelo Git hub para seu projeto. Ex: git@github.com:tiagoribeirof/SPB_WEB.git.
Para testar no mesmo menu Remote vamos clicar no fetch from irá abrir uma janela que perguntará se deseja sincronizar, então é só escrever "yes" após isso abrirá outra janela pedindo "passphrase" que é justamente a senha que foi inserida para gerar a key, se tudo ocorrer direito irá informa-lo que foi sucesso.
Pronto está feita a configuração agora é só comitar seu projeto e partir para o abraço, espero que esse post tenha ajudado.
Assinar:
Postagens (Atom)










