Plano de Evolução – Nível de Qualidade

qualidadeEm uma das empresas que eu atuo como consultor, eu acabei construindo uma classificação que define a qualidade da solução produzida por uma equipe de desenvolvimento Java. Esse plano foi utilizado para conscientizar qual era a real situação da qualidade do código produzido pela corporação e principalmente para traçar um plano de evolução para cada programador da equipe. Hoje eu gostaria de publicar o plano com objetivo de receber sugestões sobre o assunto. Segue abaixo:

Nível 1

É classificada como “nível 1” uma equipe de desenvolvimento que consegue codificar suas soluções Java compatível com as seguintes práticas:

  1. Java Code Convention – o código da solução é escrito seguindo o padrão mundial de organização e nomeação dos elementos de programação.
  2. Java Doc – o design da solução é 100% documentada ao mesmo tempo em que é desenvolvida.

Nível 2

É classificada como “nível 2” uma equipe de desenvolvimento que consegue codificar suas soluções Java seguindo as práticas descritas no “nível 1”, acrescidas simultaneamente das novas seguintes práticas:

  1. Princípios OOP – o código da solução contempla o uso de princípios básicos e elementares da programação orientado a objetos.
  2. Padrões de Projeto – o código da solução contempla o uso correto de padrões de projeto.

Nível 3

É classificada como “nível 3” uma equipe de desenvolvimento que consegue codificar suas soluções Java seguindo as práticas descritas no “nível 1 e 2”, acrescidas simultaneamente das novas seguintes práticas:

  1. Java Efetivo – o código da solução contempla o uso correto dos idiomas de programação Java descrito pelo Joshua Bloch em seu livro Java Effective.

Nível 4

É classificada como “nível 4” uma equipe de desenvolvimento que consegue codificar suas soluções Java seguindo as práticas descritas no “nível 1, 2 e 3”, acrescidas simultaneamente das novas seguintes práticas:

  1. Certificação de Programador Java Oficial – o código da solução contempla o uso adequado dos recursos básicos de programação e API JSE resultantes do conhecimento adquirido pela certificação oficial de programador Java.

Nível O 

É classificada como “nível O” uma equipe de desenvolvimento que codifica suas soluções Java sem nenhuma das praticas e diretrizes citadas nos outros níveis.

Dicas

Gestores responsáveis pelas equipes podem utilizar estes níveis de qualidade para propor uma plano de evolução individual a cada membro programador. Vale lembrar que o níveis podem ser cronologicamente ou randomicamente evoluídos, tudo dependendo do perfil individual de cada um, experiência com a linguagem/plataforma, disposição para aprender e força de vontade. O post fica aberto para comentários e sugestões sobre o assunto.

Disse Jesus: “Nem ele nem seus pais pecaram, mas isto aconteceu para que a obra de Deus se manifestasse na vida dele”. João 9:3

Listagem de Frameworks – 25/04/2013

frameworksDificilmente uma corporação terá poder intelectual, financeiro, mão de obra disponível e tempo para competir com a comunidade mundial. Em outras palavras, o arquiteto de software de uma corporação deve conhecer o máximo possível das opções de componentes e frameworks existentes no mercado para não cair no velho e já conhecido buraco de tentar “reinventar a roda” a sua maneira. Esse é um dos vários tópicos discutido no nosso treinamento de Arquiteto de Software Java. Dentro desse assunto, gostaria de publicar minha lista de frameworks e componentes Java utilizado nas minhas decisões arquiteturais no momento de arquiteturar uma solução. Qualquer sugestão é bem vinda!

Container IoC
Spring – http://www.springsource.org/
Guice – http://code.google.com/p/google-guice/
PicoContainer – http://picocontainer.codehaus.org/
MetaContainer – http://www.seducaotecnologica.com.br/mentacontainer-ioc-simples-rapido/
EJB – http://www.oracle.com/technetwork/java/javaee/ejb/index.html
CDI – http://www.oracle.com/technetwork/articles/java/cdi-javaee-bien-225152.html

Persistência
Hibernate – http://www.hibernate.org/
EclipseLink – http://www.eclipse.org/eclipselink
Spring Data – http://www.springsource.org/
myBatis – http://blog.mybatis.org/
Torque – http://db.apache.org/torque/
Castor – http://www.castor.org/
Cayenne – http://cayenne.apache.org/
JPA – http://www.oracle.com/technetwork/java/javaee/tech/persistence-jsp-140049.html

Provedores de JPA
Hibernate – http://www.hibernate.org/
EclipseLink – http://www.eclipse.org/eclipselink

Gerenciador de Transação
Spring AOP transaction – http://www.springsource.org/
EJB (JTA) – http://www.oracle.com/technetwork/java/javaee/ejb/index.html

Provedores de JTA
jBoss Transaction – http://www.jboss.org/jbosstm/
JTOM – http://forge.ow2.org/projects/jotm/
jBoss Transaction – http://www.jboss.org/jbosstm/
JTOM – http://forge.ow2.org/projects/jotm/
Tirex – http://tyrex.sourceforge.net/
SimpleJTA – http://simplejta.sourceforge.net/
Bitronix – http://www.bitronix.be/Btm/Overview

Agendamento de Tarefas
Timer Task JSE – http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/threads/timer.html
Quartz – http://quartz-scheduler.org/
Spring Scheduler – http://static.springsource.org/spring/docs/3.0.x/reference/scheduling.html
EJB Timer Service – http://docs.oracle.com/javaee/6/tutorial/doc/bnboy.html

Validação
Commons Validator – http://commons.apache.org/validator/
Java Bean Validator – http://docs.oracle.com/javaee/6/tutorial/doc/gircz.html

Provedores de Java Bean Validation
Apache bval – http://bval.apache.org/
Hibernate – http://www.hibernate.org/subprojects/validator.html

Chamadas Assíncronas
JSE Executor Services – http://docs.oracle.com/javase/tutorial/essential/concurrency/exinter.html
Spring Asinc – http://static.springsource.org/spring/docs/3.0.x/reference/scheduling.html
EJB Asynchronous Method Invocation – http://docs.oracle.com/javaee/6/tutorial/doc/gkkqg.html
EJB Message-Driven Bean – http://docs.oracle.com/javaee/6/tutorial/doc/gipko.html

Kit de Interface Gráficas Desktop
Swing – http://docs.oracle.com/javase/tutorial/uiswing/
SwingX – http://swingx.java.net/
OpenSwing – http://oswing.sourceforge.net/index.html
JGoodies – http://www.jgoodies.com/
SWT – http://www.eclipse.org/swt/
SWT OPAL – http://code.google.com/a/eclipselabs.org/p/opal/

RAD Interface Gráficas Desktop
Eclipse Windows Builder – http://www.eclipse.org/windowbuilder/
NetBeans Matisse – http://netbeans.org/features/java/swing.html

Framework Web
Click – http://click.apache.org/
Wicket – http://wicket.apache.org/
Spring MVC – http://www.springsource.org/
Struts – http://struts.apache.org/
Mentawai – http://www.mentaframework.org/
JSF – http://www.oracle.com/technetwork/java/javaee/javaserverfaces-139869.html
VRaptor – http://vraptor.caelum.com.br/
Playframework – http://www.playframework.com

Framework Web RIA
GWT – https://developers.google.com/web-toolkit/
Vaadin – https://vaadin.com/home
ZK Framework – http://www.zkoss.org/

Framework Web Full Stack Gerador
Grails – http://grails.org/
JRuby On Rails – http://jruby.org/
OpenXava – http://www.openxava.org/
Portifolio – http://www.manydesigns.com/en/portofino
AgilePlataform – http://www.outsystems.com/agile-platform/
Softwell Maker – http://www.softwell.com.br

Provedores de JSF
Mojorra – http://javaserverfaces.java.net/
MyFaces – http://myfaces.apache.org/
ADF – http://www.oracle.com/technetwork/developer-tools/adf/overview/index.html

Componentes JSF
RichFaces – http://www.jboss.org/richfaces
PrimeFaces – http://primefaces.org/
OpenFaces – http://openfaces.org/
IceFaces – http://www.icesoft.org/
EasyFaces – http://www.easyfaces.com.br
Gmaps4jsf – http://code.google.com/p/gmaps4jsf/

Extensões JSF
PrettyFaces – http://ocpsoft.org/prettyfaces/
Omnifaces – https://showcase-omnifaces.rhcloud.com/

Soluções Web Mobile
JSF RichFaces Mobile – http://www.jboss.org/richfaces
JSF PrimeFaces Mobile – http://primefaces.org/
JSF OpenFaces Mobile – http://openfaces.org/
JSF IceFaces Mobile – http://www.icesoft.org/
Spring Mobile – http://www.springsource.org/
JQuery Mobile – http://jquery.com/
DOJO Mobile – http://dojotoolkit.org/

Autenticação e AutorizaçãoWeb
Spring Security – http://www.springsource.org/
JGuard – http://jguard.xwiki.com/xwiki/bin/view/Main/WebHome
JEE Container Managed Security (Configuração particular). Tomcat – http://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html

JEE Web Container Standalone
Tomcat – http://tomcat.apache.org/
Jetty – http://jetty.codehaus.org/jetty/
JBoss – http://www.jboss.org/

JEE EJB Container (Web Profile e JEE Full)
Tomee – http://openejb.apache.org/apache-tomee.html
Simpas – http://siwpas.mechsoft.com.tr/
Resin – http://www.caucho.com/resin-application-server/
JBoss – http://www.jboss.org/
Glassfish – http://glassfish.java.net/
Webshere – http://www-142.ibm.com/software/products/br/pt/appserv-was
WebLogic – http://www.oracle.com/us/products/middleware/application-server/weblogic-suite/index.html?ssSourceSiteId=ocombr
Geronimo – http://geronimo.apache.org/

Relatórios
iReport – http://jasperforge.org/projects/ireport
DynamicReport – http://dynamicreports.sourceforge.net/
Birt – http://www.eclipse.org/birt/phoenix/
iText – http://itextpdf.com/
PDFBox – http://pdfbox.apache.org/

Gerador de Gráficos Charts
JFreechart – http://www.jfree.org/jfreechart/
HighCharts – http://www.highcharts.com/

Web Services REST
Jersey – http://jersey.java.net/
Restlet – http://www.restlet.org/
RestEasy – http://www.jboss.org/resteasy/
Serfj – http://serfj.sourceforge.net/
CXF – http://cxf.apache.org/

Gerenciador de Emails
Commons Email – http://commons.apache.org/email/
Oracle JavaMail – http://www.oracle.com/technetwork/java/javamail/index.html

Web Services SOAP
Metro – http://jax-ws.java.net/
Axis – http://axis.apache.org/axis/
XFire – http://xfire.codehaus.org/
CXF – http://cxf.apache.org/

JavaScript
DOJO Toolkit – http://dojotoolkit.org/
JQuery – http://jquery.com/
Ext-JS – http://docs.sencha.com/ext-js/4-0/
DWR – http://directwebremoting.org/dwr/index.html

Integração com Redes Sociais
Spring Social – http://www.springsource.org/

Cache
Space4J – http://www.space4j.org/
Memcache – http://memcached.org/
Ecache – http://ehcache.org/
Prevayler – http://prevayler.org/
JBoss Infinispan – http://www.jboss.org/infinispan.html

NoSQL
MongoDB – http://www.mongodb.org/
Neo4j – http://neo4j.org/
Db4o – http://www.db4o.com/
Hadoop – http://hadoop.apache.org/
MemcachedDB – http://memcachedb.org/
CouchDB – http://couchdb.apache.org/
Project Voldemort – http://project-voldemort.com/
MarkLkogic Server – http://www.marklogic.com/
BaseX – http://basex.org/
SimpleDB – http://aws.amazon.com/simpledb/
HBase – http://hbase.apache.org/
Casandra – http://cassandra.apache.org/
Hypertable – http://hypertable.org/
OrientBD – http://www.orientechnologies.com/

Busca e Indexação
Lucene – http://lucene.apache.org/

SGDB Java Embutidos
HyperSQL – http://hsqldb.org/
JavaDB – http://www.oracle.com/technetwork/java/javadb/overview/index.html
Apache Derby – http://db.apache.org/derby/
H2Database – http://www.h2database.com

Testes
DBUnit – http://www.dbunit.org/
JUnit – http://www.junit.org/
EJBUnit – http://ejb3unit.sourceforge.net/
JSFUnit – http://www.jboss.org/jsfunit/

Loggin
jse – http://docs.oracle.com/javase/7/docs/api/java/util/logging/package-summary.html
Log4J – http://logging.apache.org/index.html

Testes Cargas e Perfomance
JMeter – http://jmeter.apache.org/
WebLoad – http://www.webload.org/

JSON
JSON – http://www.json.org/java/
XStream – http://xstream.codehaus.org/json-tutorial.html
Google-JSON – http://code.google.com/p/google-gson/

Boletos Bancário
Boletos Bancário – http://www.boletobancario.com.br
Bopepo – http://www.jrimum.org/bopepo/
Stella – github.com/caelum/caelum-stella/wiki/Gerando-boleto

Manipulaçao de Arquivos MS Office
Apache POI – http://poi.apache.org/
JExcelApi – http://jexcelapi.sourceforge.net/
Docx4j – http://dev.plutext.org/trac/docx4j
Java Docx – http://www.javadocx.com/
Aspose – http://www.aspose.com/categories/java-components/aspose.total-for-java/default.aspx

Gerais
Maven – Gerenciador de dependências – http://maven.apache.org/
JLicense – Gerenciador de licenciamento de uso de software –http://www.websina.com/products/jlicense.html

“Elevo os olhos para os montes: de onde me virá o socorro?O meu socorro vem do SENHOR, que fez o céu e a terra.” Salmos 121:1-2

Listagem de Frameworks 30/01/2013

imagesDificilmente uma corporação terá poder intelectual, financeiro, mão de obra disponível e tempo para competir com a comunidade mundial. Em outras palavras, o arquiteto de software de uma corporação deve conhecer o máximo possível das opções de componentes e frameworks existentes no mercado para não cair no velho e já conhecido buraco de tentar “reinventar a roda” a sua maneira. Esse é um dos vários tópicos discutido no nosso treinamento de Arquiteto de Software Java. Dentro desse assunto, gostaria de publicar minha lista de frameworks e componentes Java utilizado nas minhas decisões arquiteturais no momento de arquiteturar uma solução. Qualquer sugestão é bem vinda!

Container IoC
Spring – http://www.springsource.org/
Guice – http://picocontainer.codehaus.org/
PicoContainer – http://code.google.com/p/google-guice/
EJB – www.oracle.com/technetwork/java/javaee/ejb/index.html 
CDI – http://www.oracle.com/technetwork/articles/java/cdi-javaee-bien-225152.html

Persistência
Hibernate – http://www.hibernate.org/
Spring Data – http://www.springsource.org/ 
iBatis – http://www.mybatis.org/
Torque – http://db.apache.org/torque/
Castor – http://www.castor.org/
Cayenne – http://cayenne.apache.org/

Gerenciador de Transação
Spring AOP transaction – http://www.springsource.org/
EJB (JTA) www.oracle.com/technetwork/java/javaee/ejb/index.html 

Agendamento de Tarefas
Timer Task JSE - http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/threads/timer.html
Quarts – http://quartz-scheduler.org/
EJB Timer Service – http://docs.oracle.com/javaee/6/tutorial/doc/bnboy.html

Validação
Commons Validator – http://commons.apache.org/validator/
Java Bean Validator – http://docs.oracle.com/javaee/6/tutorial/doc/gircz.html

Chamadas Assíncronas
JSE Executor Services - http://docs.oracle.com/javase/tutorial/essential/concurrency/exinter.html
EJB Asynchronous Method Invocation – http://docs.oracle.com/javaee/6/tutorial/doc/gkkqg.html
EJB Message-Driven Bean – http://docs.oracle.com/javaee/6/tutorial/doc/gipko.html

Kit de Interface Gráficas Desktop
Swing – http://docs.oracle.com/javase/tutorial/uiswing/
SwingX – http://swingx.java.net/
JGoodies – http://www.jgoodies.com/
SWT – http://www.eclipse.org/swt/
SWT OPAL – http://code.google.com/a/eclipselabs.org/p/opal/

RAD Interface Gráficas Desktop
Eclipse Windows Builder – http://www.eclipse.org/windowbuilder/
NetBeans Matisse – http://netbeans.org/features/java/swing.html

Framework Web
Click – http://click.apache.org/
Wicket – http://wicket.apache.org/
Spring MVC – http://www.springsource.org/
Struts – http://struts.apache.org/
Mentawai – http://www.mentaframework.org/
JSF – www.oracle.com/technetwork/java/javaee/javaserverfaces-139869.html
GWT – https://developers.google.com/web-toolkit/
Vaadin – https://vaadin.com/home 
VRaptor - http://vraptor.caelum.com.br/ 

Framework Web Full Stack
Grails – http://grails.org/
Ruby On Rails – http://rubyonrails.org/
OpenXava – http://www.openxava.org/ 

Provedores de JSF
Mojorra – http://javaserverfaces.java.net/
MyFaces – http://myfaces.apache.org/
ADF – www.oracle.com/technetwork/developer-tools/adf/overview/index.html 

Componentes JSF
RichFaces – http://www.jboss.org/richfaces
PrimeFaces – http://primefaces.org/
OpenFaces – http://openfaces.org/
IceFaces – http://www.icesoft.org/
EasyFaces – http://www.easyfaces.com.br
Gmaps4jsf – http://code.google.com/p/gmaps4jsf/

Extensões JSF
PrettyFaces - http://ocpsoft.org/prettyfaces/
Omnifaces – https://showcase-omnifaces.rhcloud.com/ 

Soluções Web Mobile
JSF RichFaces Mobile – http://www.jboss.org/richfaces
JSF PrimeFaces Mobile – http://primefaces.org/
JSF OpenFaces Mobile – http://openfaces.org/
JSF IceFaces Mobile – http://www.icesoft.org/
Spring Mobile – http://www.springsource.org/
JQuery Mobile – http://jquery.com/
DOJO Mobile – http://dojotoolkit.org/

Autenticação e AutorizaçãoWeb
Spring Security – http://www.springsource.org/ 
JGuard – http://jguard.xwiki.com/xwiki/bin/view/Main/WebHome
JEE Container Managed Security (Configuração particular). Tomcat – http://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html

JEE Web Container Standalone
Tomcat – http://tomcat.apache.org/
Jetty – http://jetty.codehaus.org/jetty/
JBoss – http://www.jboss.org/ 

JEE EJB Container (Web Profile e JEE Full)
Tomee – http://openejb.apache.org/apache-tomee.html
Simpas – http://siwpas.mechsoft.com.tr/
Resin – http://www.caucho.com/resin-application-server/
JBoss – http://www.jboss.org/
Glassfish – http://glassfish.java.net/
Webshere – http://www-142.ibm.com/software/products/br/pt/appserv-was
WebLogic – http://www.oracle.com/us/products/middleware/application-server/weblogic-suite/index.html?ssSourceSiteId=ocombr
Geronimo – http://geronimo.apache.org/

Relatórios
iReport – http://jasperforge.org/projects/ireport
DynamicReport – http://dynamicreports.sourceforge.net/
Birt – http://www.eclipse.org/birt/phoenix/
iText – http://itextpdf.com/
PDFBox – http://pdfbox.apache.org/

Gerador de Gráficos Charts
JFreechart - http://www.jfree.org/jfreechart/
HighCharts -  http://www.highcharts.com/

Web Services REST
Jersey – http://jersey.java.net/
Restlet – http://www.restlet.org/
RestEasy – http://www.jboss.org/resteasy/
Serfj – http://serfj.sourceforge.net/
CXF – http://cxf.apache.org/

Web Services SOAP
Metro – http://jax-ws.java.net/
Axis – http://axis.apache.org/axis/
XFire – http://xfire.codehaus.org/
CXF – http://cxf.apache.org/

JavaScript
DOJO Toolkit – http://dojotoolkit.org/
JQuery – http://jquery.com/
Ext-JS – http://docs.sencha.com/ext-js/4-0/
DWR – http://directwebremoting.org/dwr/index.html

Integração com Redes Sociais
Spring Social – http://www.springsource.org/

Cache
Space4J – http://www.space4j.org/
Memcache – http://memcached.org/
Ecache – http://ehcache.org/
Prevayler – http://prevayler.org/
JBoss Infinispan – http://www.jboss.org/infinispan.html

NoSQL
MongoDB – http://www.mongodb.org/
Neo4j – http://neo4j.org/
Db4o – http://www.db4o.com/
MemcachedDB – http://memcachedb.org/
CouchDB – http://couchdb.apache.org/
Project Voldemort – http://project-voldemort.com/
MarkLkogic Server – http://www.marklogic.com/
BaseX – http://basex.org/
SimpleDB – http://aws.amazon.com/simpledb/
HBase – http://hbase.apache.org/
Casandra – http://cassandra.apache.org/
Hypertable – http://hypertable.org/
OrientBD – http://www.orientechnologies.com/

SGDB Java Embutidos 
HyperSQL – http://hsqldb.org/
JavaDB – www.oracle.com/technetwork/java/javadb/overview/index.html
Apache Derby – http://db.apache.org/derby/
H2Database – http://www.h2database.com

Testes
DBUnit  http://www.dbunit.org/
JUnit – http://www.junit.org/
EJBUnit – http://ejb3unit.sourceforge.net/
JSFUnit – http://www.jboss.org/jsfunit/

Loggin
jse – http://docs.oracle.com/javase/7/docs/api/java/util/logging/package-summary.html
Log4J –  http://logging.apache.org/index.html

Testes Cargas e Perfomance
JMeter – http://jmeter.apache.org/
WebLoad – http://www.webload.org/

JSON
JSON – http://www.json.org/java/
XStream – http://xstream.codehaus.org/json-tutorial.html
Google-JSON – http://code.google.com/p/google-gson/

Boletos Bancário
Boletos Bancário – http://www.boletobancario.com.br
Bopepo – www.jrimum.org/bopepo/
Stella – github.com/caelum/caelum-stella/wiki/Gerando-boleto

Manipulaçao de Arquivos MS Office                                                 
Apache POI – http://poi.apache.org/
JExcelApi -  http://jexcelapi.sourceforge.net/
Docx4j – http://dev.plutext.org/trac/docx4j
Java Docx – http://www.javadocx.com/
Aspose – http://www.aspose.com/categories/java-components/aspose.total-for-java/default.aspx

Gerais
Maven – Gerenciador de dependências – http://maven.apache.org/
E-mail – Gerenciador de emails –  www.oracle.com/technetwork/java/javamail/index.html
JLicense  – Gerenciador de licenciamento de uso de software –http://www.websina.com/products/jlicense.html

“Servi ao SENHOR com alegria, apresentai-vos diante dele com cântico.” Salmos 100:2

Combinações Arquiteturais

planning7Os candidatos a arquitetos de atualidade felizmente podem aproveitar a documentação de modelos arquiteturais pré-definidos chamados de “clichê” para aprender as características conceituais, vantagens e desvantagem com pouco espaço de tempo, sem cair nos erros cometidos anteriormente. Veja nesse incrível tutorial de WebLogic a documentação das possíveis arquiteturas de deploy que mesmo sendo proprietário, podem ser classificados como “clichês”, sendo explorados por praticamente todos os outros provedores de middlewares compatível com JEE. Bons estudos a todos.

“Alegrem-se com os que se alegram; chorem com os que choram.” Romanos 12:15

JPA Cache L2

lev1lev2Cache é essencial para otimizar o desempenho de qualquer solução que acesse um banco de dados. Ao armazenar os dados para atender as solicitações, o cache reduz o tempo necessário para acessar um registro do banco de dados. JPA 2.0 suporta dois níveis de cache, JPA Nível 1 (L1) Cache e JPA Nível 2 (L2) cache. Veja abaixo dois ótimos artigos sobre o assunto:

  1. http://www.developer.com/print.php/3892261
  2. https://blogs.oracle.com/carolmcdonald/entry/jpa_caching

“Pois em um só corpo todos nós fomos batizados em um único Espírito: quer judeus, quer gregos, quer escravos, quer livres. E a todos nós foi dado beber de um único Espírito.” 1 Coríntios 12:13

Solução Web Segura

segurancaAs maiorias dos desenvolvedores sem experiência acabam colocando soluções web em produção sem nenhuma medida de segurança contra as mais básicas e velhas conhecidas vulnerabilidades inerentes ao protocolo HTTP. O top 4 “gafs” é deixar a solução totalmente vulnerável a ataques de CSRFDuplicate Form SubmissionsControl Flow Sequence e sobreposição de transação concorrente.

“Ele respondeu: ‘Antes, felizes são aqueles que ouvem a palavra de Deus e lhe obedecem’.” Lucas 11:28

Retry Operations

imagesHá muitos casos em que você pode querer repetir uma operação em um determinado número de vezes. Exemplos clássicos são as falhas de banco de dados, falhas de comunicação de rede ou problemas de arquivo IO. Segue um ótimo artigo oferecendo 3 abordagens para solucionar a situação.

“E quando estiverem orando, se tiverem alguma coisa contra alguém, perdoem-no, para que também o Pai celestial lhes perdoe os seus pecados.” Marcos 11:25