Postagens

Mostrando postagens de Abril, 2013

6 maneiras de fazer a mesma coisa, o que é considerado boas práticas?

As vezes tem tantas maneiras diferentes de fazer o mesmo código que nós ficamos na dúvida quanto a qual maneira usar. O que seria considerado "boa prática" pela comunidade e o que sua equipe entenderia melhor. Suponhamos que você esteja trabalhando dentro de um método de um Domain Service chamado UmDomainServiceChique(objetoDoDominio) que será chamado por uma API.Você tem uma regra de negócio chique para ser verificada que por enquanto chamarei de VerificaMinhaRegraChiqueComplexa().Você chama UmDomainServiceChique(objetoDoDominio) e caso VerificaMinhaRegraChiqueComplexa() retorne true você vai querer que UmDomainServiceChique faça o que tem que fazer e a api retornar Ok 200, caso contrário você quer que a API responda um erro qualquer, tipo BadRequest, e retornar uma mensagem dizendo que VerificaMinhaRegraChiqueComplexa deu ruim. Eu vejo 6 maneiras de fazer isso, gostaria de saber a opinião de outrs devs sobre qual seria a maneira menos gambiarrística de fazer:1) se Ver…

Interfaces no Delphi e destruição prematura de objetos / access violation

Recentemente me perguntaram no site da DevMedia se é correto ou não misturar interfaces e objetos em uma conversão temporária, como esta abaixo:

var C: TCarro; begin C := TCarro.Create; //tenho um objeto, mas C não conta referencias C.Placa := 'ABC1234'; (C as ICarro).Rodar; //converte e roda na mesma linha, mas zera o contador de referencias na proxima linha C.Parar; //isso dá erro Segue links da Thread:
http://www.devmedia.com.br/poo-dominando-o-uso-de-interfaces-revista-clube-delphi-134/22569
http://www.vitorrubio.com.br/downloads/TesteInterfaces.zip
http://www.vitorrubio.com.br/downloads/CD134_Interfaces_V2_Reformulado.zip

Isso por causa do problema de se zerar o contador de referências em interfaces tendo mais uma referência ao objeto em uma variável do tipo objeto e destruir esse objeto prematuramente.

Basicamente nesses casos o comportamento esperado seria um erro.
Pode acontecer de o objeto continuar acessível na memória, ou pelo menos alguns métodos que não us…

Diferença entre Log Shipping, Mirroring e Replication

Li alguns artigos sobre a diferença entre Log Shipping, Mirroring e Replication e gostaria de compartilhar.
http://www.replicationanswers.com/ReplicationLogShippingMirroring.asp
Difference between Log Shipping, Mirroring and Replication
http://simplesql.blogspot.com.br/2011/01/replication-vs-mirroring-and-what-to.html

Basicamente, o Log Shipping é uma estratégia só de Disaster Recovery, mas não muito eficiente para relatórios ou replicação/distribuição dos dados. Ele nada mais faz do que restaurar em uma outra base os logs de transação periodicamente. Esta base fica com lock exclusivo, então consultas nela só podem ser feitas usando-se nolock (dirty reads) ou isolation level snapshot.
Log Shipping restaura o banco inteiro, inclusive tabelas de sistema, views, procedures etc.

Mirroring também é uma solução para Disaster Recovery e funciona para o banco todo, inclusive dados de sistema. Sua vantagem é que pode ser configurado com failover automático, ou seja, para entrar no ar assim que o …