Postagens

Mostrando postagens de novembro, 2010

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

Metaprogramação no lazarus

Imagem
No meu último post  eu falei sobre o componente Pascal Script da RemObjects. A melhor notícia é que a versão 3 do componente, com um belo instalador automático e uma série de melhorias, tem uma versão para lázarus muito fácil de se instalar. Além disso tem uma versão também para o visual studio / .net, então imagina usar metaprogramação "via script" no ambiente .net que já permite metaprogramação. Vai ser show de bola, e um perigo também, se mal usado. Esse é  o tipo de recurso que quando agente usa fala: "e porque não?". Bom, pelo menos como aprendizado e prova de conceito darei uma estudada e desenvolverei mais alguns exemplinhos. Por hora, fiz no lázarus o mesmíssimo exemplo feito em Delphi no  último post , espero que gostem. Uma das mudanças foi colocar um SynEdit para digitar o código, em vez de um memo comum. O Synedit é show! Faça o download do exemplo aqui : Have fun ;)

Chamando Formulários com PascalScript + RTTI + Factory Methods

Um desenvolvedor que leu meu artigo sobre metaprogramação no Delphi me perguntou hoje como criar e abrir formulários a partir de scripts com o Pascal Script. Não há uma maneira muito fácil de se fazer isso, e pode haver outras maneiras de se fazer. Você não pode simplesmente registrar a form1 simplesmente porque o tipo TForm1 não existe. Ele não é nativo do Delphi, mas foi escrito por você. O Pascal Script não conhece o tipo TForm1 e não tem como, dentro do script, você criar uma variável desse tipo. Uma das maneiras seria você registrar a unit1, fazendo com que o pascal script a use, ou declarar a TForm1 todinha dentro do pascal script. Essas duas opções são complicadas, pois um dos meios é passar o fonte .pas junto com a aplicação e deixar  o cliente ver / manipular livremente. E se por acaso a unit1 usa ou depende de outras units você teria um enorme problema em cascata. Além disso o pascal script é limitado. Ele se limita apenas às operações básicas do pascal. Uma manei

Faça backup do seu blog

Imagem
Se você tem um blog no blogspot você pode fazer backup de seus posts através de XML, para poder armazenar o conteúdo e até portar para outras plataformas. Backup é a única medida de segurança barata/viável em um monte de situações, e no caso do blogger é a medida mais segura que você pode tomar. Uma das ferramentas que pode te ajudar com isso é o blogger backup utility que você pode baixar no codeplex. Ele é open-source, então você pode baixar sem medo, e alterar a seu gosto. Na caixa de seleção logo acima escolha "add/edit / remove blogs" para adicionar seu blog na lista. (você pode ter múltiplos). Depois de colocar seu login e senha simplesmente diga se você quer fazer backup de tudo ou apenas a partir de uma data, e se quer tudo em um arquivo ou um arquivo por post. Simples assim. Have fun ;)

Existem 1001 maneiras de preparar SINGLETON, invente uma!

Imagem
Falando-se de POO e Padrões de projeto, não podemos deixar de falar em Singleton. Singleton é um tipo de classe que só pode ser instanciada uma e apenas uma vez. Esse tipo de classe é ideal para objetos que carregam configurações do sistema, objetos que manipulam o horario do sistema, objetos que usamo recursos compartilhados, e por isso necessitam ser serializados ou sincronizados pelas threads, por não poderem executar ao mesmo tempo. Concrete Factories e Builders também são ótimos exemplos de padrões de projeto que podem ser criados a partir de um singleton. Afinal, se você precisa de um objeto que crie, ou que crie e configure outros objetos para você, seria ideal que todos os objetos criados e montados fossem fabricados do mesmo jeito. Logo, você não deveria ter duas instancias diferentes de um mesmo factory ou de um mesmo buider. A maneira mais simples de se criar um singleton no Delphi é comona listagem abaixo. unit uSingleton; interface uses DateUtils, SysUtils, Windows,