Postagens

Criando modelos de HTML com Underscore.js

Imagem
Em aplicações web, os dados que são retornados de serviços, como um REST retornando um objeto JSON, precisam ser exibidos aos usuários. Ou seja, pegamos essas informações e as transformamos em elementos HTML (parágrafos, tabelas, listas, etc). Uma das maneiras de se fazer isso é a manipulação desses dados através de scripts de forma a montar cada elemento. Por exemplo, o código abaixo pega um objeto JSON e o transforma em um parágrafo, através da concatenação do valor com as tags "<p>" e "</p>". Isso a princípio parece ser algo simples, mas no final acabamos com um código de difícil manutenção. Imagine um JSON que tenha um array de objetos para ser montado em uma tabela, com cada linha precisando gerar todas as respectivas tags " <tr>", "<td>" e etc. Pior, imagina esquecer de fechar uma tag ou concatenar sem fechar uma aspas. A próxima pessoa que for dar manutenção vai gastar um bom tempo entendendo o que foi feito (e qua...

Dez coisas que todo desenvolvedor deve saber

Imagem
Olá, galera! Hoje tive o prazer de participar de um hangout com meus antigos colegas de trabalho Leandro Magnani, Luiz Pais, Alexandre Costa (Magoo), Gabriel Vieira e Vinícius Tosta sobre coisas que todos os desenvolvedores devem saber. Confira no vídeo abaixo. []'s

Usando PowerShell para obter informações do AD

Imagem
Hoje precisei acessar algumas informações do AD, e decidi usar o PowerShell para isso. Eu precisava encontrar alguns usuários na rede, e vi que o comando Get-ADUser ( https://technet.microsoft.com/en-us/library/ee617241.aspx ) era exatamente o que eu precisava. Assim, abri um console do PowerShell, digitei o comando e erro! O comando Get-ADUser não foi reconhecido. Bom, neste caso eu precisava fazer referência ao pacote onde ele faz parte, mas vi que antes disso eu precisava baixá-lo. Pesquisando na internet vi que se tratava do Remote Server Administration Tools for Windows 7 with Service Pack 1 (SP1). O link para download é este:  https://www.microsoft.com/en-us/download/details.aspx?id=7887 Depois de baixar o pacote e instalar, é necessário ativá-lo como feature do Windows. Para isso, basta escolher a opção "Módulo do Active Directory para Windows PowerShell" (ou "Active Directory Module For Windows PowerShell"). Feito isso, basta importar...

Pérola arquitetônica

Imagem
Aqui está um código que é uma verdadeira obra arquitetônica! A montagem eu mesmo que fiz :-) Bom, mas quais são os problemas com esse código? Este código está aí para permitir que campos possuam máscara de dados. Até aí, é um requisito normal de qualquer sistema. O problema é a forma como está sendo feito. Eu verifiquei e existem várias máscaras que não estão sendo utilizadas. Um primeiro problema aqui é desempenho, pois esse script executa em toda página que é carregada, acessando elementos HTML pelo jQuery. É um código desnecessário e sem justificativa. Agora conceitualmente, essas inúmeras máscaras, qual o significado delas dentro do sistema? Qual tipo de campo é formatado por 19 números sequenciais? Não há motivo para esse código existir. Seria necessário a associação com alguma regra do sistema para que elas fizessem sentido. Máscaras que têm sentido são, por exemplo, CPF (999.999.999-99) ou CEP (99999-999). []'s

Exemplos de filtros no MongoDB (API C#)

Imagem
Neste post vou demonstrar alguns exemplos simples de pesquisa no MongoDB utilizando a API .NET. Para o exemplo, eu vou considerar uma base local contendo a collection restaurants, a mesma que é usada na própria documentação do MongoDB. Além disso, vou construir uma tela Windows Forms. A primeira coisa a ser feita é adicionar o MongoDB.Driver, e a melhor forma de fazer isso é através do Nuget. Basta selecionar a opção “Manage Nuget packages” ao se clicar com o botão direito em cima do projeto, no Solution Explorer. Como vemos na tela abaixo, basta preencher “MongoDB” na pesquisa que uma lista de pacotes é retornada. Note que se deve instalar o pacote MongoDB.Driver, tomando cuidado para não colocar a API antiga. No nosso exemplo, faremos uma filtragem de restaurantes de acordo com vários parâmetros. Para isso, teremos uma ListBox para receber os resultados, uma combo para se escolher o filtro e um botão para executar a ação. Esses filtros vamos carregar de forma dinâmica...

"Facades" na vida real

Imagem
Muitos profissionais de TI possuem ou já possuíram empresas abertas para prestação de serviços, pois muitos lugares trabalham com essa forma de contratação terceirizada. Mas depois se a pessoa muda para um trabalho onde seja contratado como CLT, manter uma empresa aberta pode gerar gastos mensais com sua manutenção que são desnecessários. Para uma pessoa encerrar uma empresa são necessários vários passos burocráticos. Envolvem a interação com vários órgãos como Previdência Social, Junta Comercial, Receita Federal, prefeituras, entre outros (este link possui um resumo caso você tenha curiosidade http://www.sebrae.com.br/sites/PortalSebrae/artigos/Como-fechar-uma-empresa:-passo-a-passo-para-encerrar-as-atividades ). Mesmo sendo possível uma pessoa enfrentar toda essa burocracia e fazer todo o processo de encerramento sozinha, é muito mais prático contratar alguém especializado para fazer esse trabalho. Geralmente o próprio contador que manteve a empresa ativa durante o tem...

Log de auditoria com o Entity Framework 6

Imagem
Uma das novidades no Entity Framework 6 é a possibilidade de interceptar os comandos SQL que são gerados pela ferramenta de forma bem mais simples que nas versões anteriores. Isso permite, entre outras coisas, efetuar um log de tudo o que é enviado para o banco de dados, facilitando a depuração das aplicações. Mas hoje vou mostrar uma outra coisa bem interessante que podemos fazer ao interceptar o SQL do Entity Framework: log de auditoria. Ou seja, ter a rastreabilidade do que cada usuário fez no sistema, em determinado momento. A ideia central aqui é, para cada atualização de um registro no banco de dados (seja uma inserção, alteração ou exclusão), armazenar essa versão junto do usuário e data e hora de modificação. Vamos olhar a tabela da imagem abaixo, People (à esquerda). Ela possui as colunas Id, FirstName, LastName e Age. Até aí, nada de mais. Agora vamos ver uma outra tabela de mesmo nome, só que criada em um schema diferente (hist). Ela possui as mesmas colunas, com os...