Postagens

Mostrando postagens de março, 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

Nota Fiscal - Estrutura de tabelas

Nota Fiscal é fogo. Difícil, chato, repetitivo e cansativo. E agora tem a nota fiscal eletrônica para complicar mais ainda. Para facilitar a vida de quem está começando, vou postar aqui a estrutura das minhas tabelas, que está longe de ser ideal, mas quebra um galho. /* Table: NOTAFISCAL, Owner: SYSDBA */ CREATE TABLE "NOTAFISCAL" ( "CODNOTA" INTEGER NOT NULL, "CODVENDA" INTEGER, "NATUREZAOPERACAO" VARCHAR(50), "CFOP" INTEGER, "INSCRESTSUBSTTRIBUT" VARCHAR(20), "ENTSAI" INTEGER, "DESTINATARIOREMETENTE" VARCHAR(100), "CPCN" VARCHAR(20), "DTEMISSAO" DATE, "DTSAIDAENTRADA" DATE, "HORASAIDA" TIMESTAMP, "BASECALCICMS" DOUBLE PRECISION, "VALORICMS" DOUBLE PRECISION, "NOMETRANSPORTADORA" VARCHAR(100), "NUMNOTA" INTEGER, "DESREMENDERECO" VARCHAR(80), "DESREMBAIRRO"

Delphi 2011 - Fulcrum

Já está disponível para os betatesters o Delphi 2011, codenome Fulcrum. Ainda não está disponível alguma versão trial do mesmo. Mais informações no blog do Rodrigo Mourão Aguardo ansiosamente pelo dia em que ele será lançado. Não tanto pelos recursos de compilação para linux ou para 64 bits, mas por causa de uns bugs que eu enfrentei na nova RTTI do Delphi 2010. Update: O fulcrum se chama Delphi XE, é a versão 15 do produto, melhor versão até agora e os bugs da nova RTTI foram todos corrigidos.

Mais um da série "meus patrões precisam ler isso"

O texto vai desde informatização de processos que já estão errados à multiplas camadas. Mas é interessante o primeiro parágrafo que fala o que acontece quando a criatividade vira sinônimo de insubordinação. http://www.juliobattisti.com.br/artigos/ti/ncamadas.asp

Novas certificações Microsoft (Humor)

MCCC == Microsoft Certified Corte e Custura MCGS == Microsoft Certified Great  Shit MCMF == Microsoft Certified Master Fucker MCJN == Microsoft Certified Jedi Ninja MCLR == Microsoft Certified Lord of Rings MCCN == Microsoft Certified Chuck Norris!

Usando tabelas de sistema do MS SQL Server para encontrar procedures

Quando o seu banco de dados possui muitas tabelas e muitas stored procedures   controlar as dependências pode ser difícil e chato. Sempre que for alterar uma tabela terá que saber de antemão quais são as trocentas procedures que dependem dela. A mesma coisa quando for alterar uma function, podem ter várias procedures que a usam. Mesmo assim continuamos a trabalhar com procedures pela facilidade que elas nos dão de distribuir a carga do sistema, fazendo parte do processamento no servidor. Além disso a execução de procedures gera comandos de comprimento menor do que a execução de SQL Direto "ad hoc". Para facilitar a busca de procedures que usam uma tabela ou que contenham uma determinada palavra-chave eu criei essa stored procedure abaixo, onde você simplesmente executa ela passando uma string entre sinais de % e ela te retorna todas as procedures que contenham essa palavra chave. Provavelmente essas você terá de alterar. Para isso uso duas das tabelas de sistema do SQ

A diferença entre pirataria, software open-source e software livre

Já vou avisando, o post será looooongo. Não vou negar que já fui a favor de pirataria. Eu era moleque, e como todo moleque o que eu queria era jogar games, quanto mais barato  melhor. Eu achava que simplesmente as empresas, produtoras, publishers, gravadoras e outros faturavam muito dinheiro fácil, uma vez que já pronto, o filme, jogo, música ou software era simplesmente copiado e revendido, ao custo de R$1,00 a mídia. Eu acreditava que havia sim um custo inicial de desenvolvimento mas que esse custo era todo transformado em lucro na hora de vender o software, afinal não se precisaria desenvolver mais, apenas vender. (acredito que seja assim em alguns casos, mas no geral o custo de se manter software, ou de se desenvolver sempre novas versões, além de ser grande, é um custo que se não for investido pode levar uma software - house a desaparecer, simplesmente pela falta de atualização de seus produtos) Tinha um ideal de que software não é produto, porque é afísico, intangível. É ver

Char, AnsiChar e Widechar

Um Char é um Byte, certo? Errado. Embora isso fosse fato antigamente, e inclusive fornecia grandes facilidades para quem trabalhava com C e C++, hoje a cena mudou. Com a globalização e a internacionalização da TI e do desenvolvimento de software foram incorporados no nosso dia-a-dia a possibilidade ou necessidade de usar caracteres de idiomas diferentes,  e o Unicode. Sendo assim, hoje temos mais de um tipo de char, e seus tamanhos são diferentes. Um Char tem, no Lazarus 9.26 para Win32 i386 incontestáveis 8 bits, ou seja, um byte. Um AnsiChar tem com certeza apenas um byte também. Um WideChar tem dois bytes, podendo conter uma gama muito maior de caracteres. Qual é a diferença entre um Char e um AnsiChar então? A resposta é que o AnsiChar é explicitamente um caracter de apenas um byte, enquanto que o Char pode mudar de acordo com a versão do Free Pascal ou a plataforma. Por exemplo, no Delphi o Char já é, automaticamente, um caracter Unicode, de dois bytes. Durante muito