Últimas notícias do evento

Livro Architect’s Guide to NoSQL

Postado em Atualizado em

Veja nesse ebook grátis um guia completo para saber todas as áreas chaves de um projeto de banco de dados e como são realizadas usando um banco de dados NoSQL.  Leia este guia completo para saber todas as áreas chaves de design de banco de dados, criação, segurança, gerenciamento de objetos, backup / recuperação, monitoramento e ajuste, migrações de dados em banco de dados NoSQL. Faça seu cadastro e tenha acesso ao download!

“Eu digo isso para que, por estarem unidos comigo, vocês tenham paz. No mundo vocês vão sofrer; mas tenham coragem. Eu venci o mundo.” João 16:33

Catálogo de Refatoração: Simplificando Expressões Condicionais #1

Postado em

Lógica condicional pode se tornar traiçoeira, de modo que aqui estão várias refatorações que você pode usar para simplificá-la. Segue as estratégias de refatorações para esse contexto:

Decompor Condicional – use quando encontrar uma estrutura condicional complicada if-then-else. Torne sua intenção mais clara extraindo métodos das condições de avaliação e das partes do then e do else.

Consolidar Expressão Condicional – use quando encontrar uma sequência de testes condicionais agrupados por operadores lógicos OR ou AND nas quais cada um é diferente do outro, mas que a ação resultante na condição da avaliação é a mesma. Torne sua intenção mais clara extraindo método destas condições utilizando-a com uma única expressão condicional.

Para todas as informações, veja o post inicial.

“Jesus respondeu: — Eu sou o pão da vida. Quem vem a mim nunca mais terá fome, e quem crê em mim nunca mais terá sede.” João 6:35

Devo eu criar soluções mobile híbrido ou nativo?

Postado em Atualizado em

O que é um app mobile nativo?

Os aplicativos nativos são instalados e armazenados dentro do dispositivo mobile, baixados através de uma loja específica para cada plataforma (como iOs ou Android). Eles são feitos usando os SDKs e as linguagens nativas especificas de cada uma dessas plataformas, o que facilita o acesso a funcionalidades do sistema operacional e sensores como GPS e a câmera. Uma das grandes vantagens de concentrar o desenvolvimento em um aplicativo nativo é a facilidade de otimizar o código por tratar diretamente com as bibliotecas do sistema operacional do dispositivo. A desvantagem é que um aplicativo nativo custa mais caro, precisando de desenvolvedores com conhecimentos totalmente específico.

O que é um app mobile híbrido?

Aplicativos híbridos são feitos usando linguagens e tecnologias de web apps e usam wrappers ou frameworks para serem convertidos em um aplicativo instalável no dispositivo do usuário. Esse tipo de app também é publicado na loja e funciona de forma similar aos nativos. Sua grande vantagem é exigir apenas conhecimento de desenvolvimento web e, portanto, tem um custo muito menor de desenvolvimento. Alguns frameworks têm bibliotecas para facilitar a integração de aplicativos híbridos com várias funcionalidades de dispositivos. E a alternativa mais rápida e barata para garantir presença do seu aplicativo em todas as app stores. O produto mais usado desse segmento é o Cordova – https://cordova.apache.org.

Vejo muito “bla bla bla” por ai em torno desse assunto, hoje então gostaria de dar meu pitaco, baseado em minhas experiências no assunto, sempre é claro respeitando a sua.

1. Qual é melhor?

Vou começar falando mais uma vez, e já to cansado de falar isso, não existe solução melhor ou pior! Tudo tem seu valor e pode se encaixar dependendo do contexto em si. Voltamos ao assunto da Alice no país das maravilhas.

2. João disse: “Eu gosto do nativo”. Maria replicou: “Eu prefiro híbrido”

Segundo, essa escolha não é baseada em emoções, premonições ou gosto pessoal. É uma decisão puramente técnica! Do ponto de vista do seu usuário, não há diferença. Um aplicativo híbrido bem construído se integra à plataforma da mesma forma que um nativo. Sendo assim, essa decisão deve ser feito baseado em argumentos sistemáticos e não em opinião pessoal.

3. Híbrido é lento de mais

Mentira e frescura pura! Hibrido tem sim performance inferior ao nativo, mão não é nada lento. É muito bom e bem rápido. Você usando um bom controller JS e um kit de GUI HTML5 moderno ai de hoje, o uso fica bem acima do aceitável. Você já deve ter alguns ai no seu Smartphone e nem noto isso. Há diferenças de performance apenas em casos muito específicos que exijam realmente bastante processamento no dispositivo. Somente nesses casos, opte pelo nativo. Segue abaixo soluções reais, instale esses apps hibridos no seu smartphone e veja por sim mesmo:

4. Quando exatamente o nativo é melhor?

Aqui é aonde eu vejo o pessoal pecar muito. Nativo é melhor em casos como: games 3D complexos, ou em aplicações que precisem de multithreading. Não é recomendado também para apps que precisem ficar executando serviços em background. Só o ambiente nativo consegue fazer isso de forma realmente eficiente, sem consumir a bateria do usuário. Somente nesses casos, opte pelo nativo.

5. Experiencia única

Outro caso que também pode ser considerado, seria a questão de oferecer uma experiência única ao seu usuário no seu app.  Como o híbrido usa HTML e CSS para criar o visual, é comum acabarmos com um design comum a várias plataformas, apenas com pequenos ajustes. Mas se você quer algo que use os componentes nativos, nesses casos, opte pelo nativo. Mas eu te pergunto: Vai valer a pena o custo? tempo? e manutenção? Essa “suposta experiência” cobre tudo isso? É algo a ser pensando. O que eu vejo na prática é a necessidade de disponibilizar servições corporativos no mobile, sem frescuras de GUI.

6. Na dúvida deve eu escolher nativo?

Muito errado! Como a maioria das apps não se encaixa exatamente nas categorias 3, 4, e 5, um híbrido é suficiente! E o que pesa em seu favor é o menor custo de desenvolvimento. Um único projeto, um único código serve todas as plataformas. Não é necessário ter equipes específicas programando Android, iOS, Windows Mobile e outras, por exemplo. Isso reflete diretamente no custo, tempo, cronograma e manutenção. Esses são os principais argumentos que pesam em favor do híbrido. Outro fator é que se você já tem uma equipe com conhecimentos de HTML, CSS e JS, a curva de aprendizado para o híbrido é bem pequena. E se não sabe, aprender uma única plataforma baseado em W3C é infinitamente mais rápido e barato de acontecer e manter.

7. Mas se eu optar pelo híbrido e depois precisar acessar código nativo?

Soluções híbridas hoje te da acesso a vários serviços nativos com grande cobertura. Conforme o tempo avança, novos serviços são disponibilizados em novas versões. A chance de você fazer uma coisa extremamente especifica e que não seja coberta pelo serviços hibrido é baixa. Infelizmente poucos sabem que as decisões técnicas devem ser feitas baseadas nas necessidades reais e não em especulações ou bola de cristal.

8. Já fiz uma solução hibrida, já esta produção e agora eu tenho que fazer algo realmente nativo e específico. O que fazer?

Qual é problema disso? Nenhum! Isso é desenvolvimento de software brother! Mudança sempre! Você fez exatamente o que deveria fazer, começou com uma app híbrida para cobrir rapidamente o maior número de plataformas, e depois se precisar, se realmente surgir ou emergir necessidades não existentes na híbrida, você pode então custear a produção de uma versão nativa, agora realmente embasado em uma decisão técnica, substituindo a versão hibrida. O Facebook começou assim, todo em HTML5, e hoje tem aplicações nativas em várias plataformas (além de um excelente site mobile). O grande erro aqui é começar bancando vários nativos sem necessidade nenhuma e ao longo de vários anos, não emergir nada que justificasse ter a solução em nativo, virando desperdício total por parte da gestão.

O post fica aberto para você nos dar sua opinião. Até a próxima pessoal!

“Como dizem as Escrituras Sagradas: “Rios de água viva vão jorrar do coração de quem crê em mim” João 7:38

Feedback Ead – Java F4 – Programação Java Avançado 2

Postado em Atualizado em

“O curso Java F4 – Programação Java Avançado 2 supriu todas as minhas expectativas, o conteúdo proposto pelo instrutor Fernando Franzini foi apresentado de forma direta e objetiva, com uma ótima didática para lá de diferenciada, deixando claramente exposto a grande diferença desse curso para os “cursos de Java grátis” encontrados pela internet a fora. É visível a diferença que um instrutor certificado com anos de experiência como ele possa proporcionar na escolha de um curso e este é o principal quesito na hora de escolher. Gostaria de destacar como o Fernando sabe usar toda sua experiência, com ótimas dicas durante o decorrer do curso.”

Deivid Willyan, Londrina – PR.

Serialização – Item 77

Postado em Atualizado em

Para o controle de instâncias, prefira tipos enum a readResolve

O recurso do readResolve contorna aparentemente a possível criação de outro objeto de um singleton serializado, mas na verdade ainda fica aberto para erros caso algum invasor retenha uma referência ao abjeto antes de seu método readResolve ser invocado. Portando, use tipos enum para a imposição de invariáveis de controle de instância. Dessa forma existira uma garantia solida que não haverá instâncias além das constantes declaradas, gerenciados automaticamente pela própria JVM.

Para todas as informações, veja o post inicial.

“Eu sou a videira, e vocês são os ramos. Quem está unido comigo e eu com ele, esse dá muito fruto porque sem mim vocês não podem fazer nada.” João 15:5

Características de um Arquiteto de Software #4

Postado em Atualizado em

wellroundedarchitect-1024x574-1Ter um foco na solução

Os desenvolvedores experientes sabem que o código é apenas um aspecto do software real. Para tornar o código executável, um desenvolvedor experiente entende que existem outros atributos de qualidade importantes necessários para que o código funcione bem no ambiente de produção. Eles consideram aspectos como desempenho, segurança, escalabilidade, localidade, disponibilidade, confiabilidade, processos de implantação e testes automatizados. Os desenvolvedores simplesmente focam no código, mas o arquiteto no entanto, se concentrará na compreensão não apenas do código, mas também dos atributos de qualidade necessários para atender às muitas necessidades de diferentes partes interessadas. O bom arquiteto se concentra em encontrar soluções que possam satisfazer tantas dessas diferentes necessidades das partes interessadas, em vez de escolher uma ferramenta ou abordagem otimizada para as preferências ou o estilo de um único contribuinte. Para qualquer dúvidas, veja o post inicial dessa série.

“Procure descobrir, por você mesmo, como o SENHOR Deus é bom. Feliz aquele que encontra segurança nele!” Salmos 34:8

Novo Spring 4.3.7 Lançado

Postado em

Foi lançado uma nova versão do spring framework 4.3.7 com varias correções de bugs e melhorias. Veja o jira oficial nesse link.

“Confiem sempre no SENHOR, pois ele é o nosso eterno abrigo.” Isaías 26:4