/* Customized template */ Diário de um Desenvolvedor de Software: outubro 2005

Diário de um Desenvolvedor de Software

Descobertas, idéias e informações que acontecem no meu trabalho como desenvolvedor de sistemas aplicativos em .NET.

Minha foto
Nome:
Local: Blumenau, SC, Brazil

Sou arquiteto de software e ajudo a definir soluções de tecnologia para necessidades de negócio. Atualmente trabalhando com a plataforma Windows Azure.

sábado, outubro 22, 2005

Test-Driven Development

O livro Test-Driven Development In Microsoft .NET, de James W. Newkirk e Alexei A. Vorontsov, é não apenas uma excelente introdução à metodologia Test-Driven Development, mas também uma demonstração de como aplicar esta metodologia no desenvolvimento de sistemas, não apenas de classes. Ver também o workspace deste livro no GotDotNet.

Por falar nisto, as ferramentas TestDriven.NET e NUnit são fabulosas.

 

quinta-feira, outubro 20, 2005

Internet Explorer dificultando desenvolvimento de websites...

Hoje eu estava desenvolvendo o código HTML para o sistema no qual estou trabalhando. Este HTML usa Javascript.

E o Internet Explorer não gosta disso, e fica bloqueando a página, exibindo a mensagem “Para ajudar a proteger sua segurança, o Internet Explorer impediu este site de exibir conteúdo ativo que possa acessar seu computador.”

O interessante é que a página que eu estava usando como modelo não estava dando este problema.

Eu perdi algum tempo até descobrir a causa e a solução. A página modelo tinha sido salva da Web, e o Internet Explorer coloca uma marca oculta na página que desativa a verificação de segurança. A página nova que eu tinha criado não tinha esta marca.

O assunto foi muito debatido na Web depois da liberação do Service Pack 2 para o Windows XP, e várias soluções apareceram.

Eu optei pela mais simples: desativar esta verificação de segurança. Isto pode ser feito no Internet Explorer, no menu Ferramentas | Opções da Internet, aba Avançadas, grupo Segurança, opção Autorizar a execução de conteúdo ativo em arquivos no Meu Computador.

XmlSerializerSectionHandler

Como adicionar uma seção de configuração no arquivo web.config quando você precisa de uma estrutura mais complexa do que o simples par de nome e valor que é o padrão?

A classe XmlSerializerSectionHandler resolve este problema de uma forma simples e extremamente prática.

XmlSerializerSectionHandler: If you've ever seen the web.config file that ASP.NET uses, and thought, 'Wow, I'm so glad they configure things that way, in this nice, easy-to-use XML file. Wish I could do that!' then you should check out the System.Configuration namespace. There's an interface called IConfigurationSectionHandler that lets you write your own parsers for your application configuration file, letting you put whatever you want in there. I've written a bunch of these over the last few months, but today I wrote the last one I ever will.

quarta-feira, outubro 19, 2005

Principais causas da tensão na empresa

Conclusão de uma pesquisa que revela quais são as principais causas de tensão nas empresas:

Cuidado: A tensão pode ser um dos responsáveis pela perda de produtividade na sua empresa.

Pesquisa  feita pela filial brasileira da International Stress Management Association, com 600 funcionários de 4 grandes empresas em São Paulo, Porto Alegre e Belém, descobriu as principais causas de tensão nos escritórios.

Os homens ficam estressados pelos seguintes motivos:

  1. Medo de perder o emprego.
  2. Falta de diálogo com o chefe e competição interna.
  3. Falta de autonomia para tomar decisões.
  4. Sobrecarga de trabalho devido ao acúmulo de tarefas.
  5. Dificuldade em conciliar as atividades de lazer com a vida profissional.

As mulheres ficam estressadas pelos seguintes motivos:

  1. Sobrecarga de trabalho para provar ser tão competentes quanto os homens.
  2. Medo de perder o emprego.
  3. Sensação de não ser capaz de cumprir todas as tarefas no prazo definido.
  4. Angústia por não poder dedicar mais tempo ao marido e aos filhos.
  5. Atritos no relacionamento com chefes e colegas.

Mas se você acredita que stress pode ser bom, veja a opinião do Niosh, órgão do governo americano que faz a prevenção de doenças relacionadas ao trabalho:

"Stress positivo não existe. As pessoas estão confundindo stress com desafio. É importante ter desafio no trabalho, pois é o que nos dá energia, nos motiva a crescer. Mas stress e desafio são coisas completamente diferentes."

Artigo no site CodeProject: ScreenSaverNow

Eu criei um artigo sobre o ScreenSaverNow no site CodeProject.

Este é o endereço do artigo:

http://www.codeproject.com/useritems/ScreenSaverNow.asp

Visual Studio Concept IDE 2010

Uma das idéias mais interessantes que vi nos últimos tempos...

Uma nova abordagem em interface com o usuário.

Dá vontade de experimentar esta IDE.

Visual Studio Concept IDE 2010

 

Ver também: artigo no CodeProject.

terça-feira, outubro 18, 2005

Serialização de DataSets

Nos projetos em que estou trabalhando eu optei por utilizar as vantagens dos DataSets tipados para encapsular as entidades de negócio.

Isto traz vários benefícios para a arquitetura. Mas também traz dificuldades que precisam ser contornadas.

Uma das mais surpreendentes foi quando eu serializei um DataSet com um único registro no ViewState de uma página web, e o ViewState ficou com 64KB...

Investigando o assunto, descobri que esta mesma situação afeta projetos em camadas, na qual DataSets são usados para transferir dados entre camadas.

A serialização padrão do DataSet é um gigantesco e detalhado documento XML.

Felizmente, o framework .NET foi muito bem projetado, e dificuldades como esta podem ser contornadas.

O artigo Binary Serialization of DataSets traz uma explicação atualizada do problema. O site DataSet FAQ também tem um artigo muito bom sobre isto.

Uma das soluções mais simples é fornecida pela própria Microsoft, com código-fonte, no artigo Improving DataSet Serialization and Remoting Performance.

Este problema afeta projetos atuais. No ADO.NET 2.0 existe o recurso de serialização binária de DataSets que suporta melhor as necessidades de arquiteturas em camadas.

De qualquer modo eu imagino que as técnicas desenvolvidas para lidar com o problema hoje poderão ser combinadas com os novos recursos do ADO.NET 2.0 para obter resultados ainda melhores.

terça-feira, outubro 11, 2005

ViewState

O recurso de ViewState do ASP.NET é fantástico. Ele permite um modelo de programação em ambiente Web muito semelhante ao do ambiente Windows.

A desvantagem é que aumenta o volume de tráfego de rede, e aumenta o tempo de resposta.

Uma solução é manter o ViewState armazenado no servidor. Não é recomendável usar SessionState para isso, porque a quantidade de memória exigida seria muito alta e prejudicaria o desempenho do servidor.

Uma boa alternativa é armazenar o ViewState no sistema de arquivos. Há um artigo sobre isto: Persisting View State to the File System.

Para web farms, esta estratégia poderia ser adaptada para usar um servidor SQL.

Isso tudo é mais um exemplo de que não é fácil encontrar o equilíbrio certo entre produtividade no desenvolvimento e desempenho em tempo de execução, ainda mais se pretende-se manter a escalabilidade.

segunda-feira, outubro 10, 2005

Formulários web com banco de dados

Não há tantos exemplos quanto gostaríamos de como fazer um formulário de cadastramento (CRUD) em interface Web.

Um exemplo interessante que dá algumas boas idéias para adaptar é o artigo Web Forms DataGrid and DataSet Programming.

Este programa permite filtrar, pesquisar, incluir, alterar e excluir registros em um formulário Web.

O conceito em si é bastante simples, por isso o estudo é rápido.

Ele não pretende ser um framework, apenas uma idéia. Portanto, dá para aplicar em outros projetos alguns conceitos ilustrados aqui.

sexta-feira, outubro 07, 2005

Esquentando os motores

Nos últimos dias eu coloquei em funcionamento a minha adaptação do mecanismo de template para páginas web e concluí o documento de arquitetura do projeto, descrevendo as 10 (!) camadas lógicas que comporão o aplicativo. Tudo está progredindo bem.

terça-feira, outubro 04, 2005

Novo projeto: ScreenSaverNow

Hoje eu criei um projeto no website GotDotNet.

Trata-se do pequeno utilitário ScreenSaverNow.

Ele é uma forma alternativa de bloquear um computador. Em vez de usar a tecla Windows+L, que bloqueia a máquina mas mostra uma mensagem padrão sem graça, o ScreenSaverNow executa o protetor de tela padrão.

Se o protetor de tela estiver configurado para exigir senha, o computador ficará bloqueado.

Do ponto de vista de programação, esta foi uma experiência interessante de utilizar as antigas API do Windows em um projeto .NET.

Além disso, eu não encontrei nenhum outro programa que fizesse exatamente o que eu queria. Existem alguns que ficam residentes em memória, mas isso é desperdício. É melhor chamar o programa através da barra de inicialização rápida, ou por uma tecla de atalho.

segunda-feira, outubro 03, 2005

XmlTemplate

Nos últimos dias eu pesquisei várias alternativas para utilizar templates para as páginas web de um aplicativo ASP.NET.

Ao final acabei optando pela framework XmlTemplate, de Dan Wahlin.

Ela permite separar a formatação (HTML e CSS) do conteúdo (ASP.NET e classes).

O administrador de sistema que instalar o produto final pode alterar o código HTML a ser produzido, incluindo e excluindo componentes, e alterando o seu posicionamento e aparência através de CSS.

Ou seja, flexibilidade total, configurável pelo usuário final em tempo de execução.