01/26/2011 21:47:00
By Felipe Pessoto
Hoje terminei de ler este livro, ele é recente, lançado em Outubro de 2010. O livro é focado em ASP.NET guiando o leitor por todos os gargalos que podem atrapalhar a escalabilidade do seu site. Chega a ser assustora a diferença entre um site otimizado para performance máxima e um mal projetado. Um exemplo de um tweet do Joel Spolsky: "Digg: 200MM page views, 500 servers. Stack Overflow: 60MM page views, 5 servers. What am I missing?". Não que o Digg seja mal projetado, pelo contrário, mas mesmo assim como é possível tanta diferença? Bem os criadores do Stack Overflow são todos referências e sabem as melhores técnicas do que se fazer ou não fazer.
Quando comecei a ler o livro achei que iria encontrar aquelas dicas básicas, de não enviar dados demais pela rede, usar CDN, etc, mas o autor aborda muito mais do que isso, até aprendi sobre alguns recursos que eu desconhecia sobre o ASP.NET. Em resumo os principais assunto são: CPU, Memória, Caching, Threads, Thread Locking, Compressão, IO, Banco de Dados, CDN, Javascript e Testes de Cargas.
As vezes acabamos esquecendo de alguns detalhes(não menos importantes) que podem comprometer toda a experiencia de uso. Por exemplo, não se preocupar com o Thread Pool/Thread Locking do ASP.NET pode fazer seu servidor demorar pra responder as requisições mesmo que não esteja usando 100% da CPU, ou códigos Javascript que bloqueiam a renderização da página. O Autor explica porquê estes problemas ocorrem e como evitá-los. Recomendo!
ASP.NET Site Performance Secrets
Autor: Matt Perdeck
Comprar no Amazon
01/19/2011 15:16:00
By Felipe Pessoto
Muito antigamente, quando se programava em C# 1.0, caso você precisasse implementar as interfaces IEnumerable ou IEnumerator era necessário fazer na mão, implementando os métodos Current, MoveNext e Dispose para o IEnumerator e GetEnumerator para o IEnumerable.
O mais complicado era o MoveNext(), pois é necessário criar uma máquina de estado para saber qual resultado deve ser atribuido ao Current.
Estas interfaces são conceitos importantes no C# e na plataforma .NET em geral, o foreach funciona baseado na classe IEnumerable, chamando seu único método GetEnumerator que por sua vez retorna um object que implementa a interface IEnumerator.
Com o C# 2.0, uma nova keyword e muito trabalho do compilador, é possível simplificar tudo isso. Usando o yield return no seu método ou no get da propriedade o compilador se encarrega de criar uma classe aninhada que implementa essas interfaces pra você, controlando todos os fluxos respeitando if´s, for´s blocos finally, etc. É um trabalho enorme por parte do compilador e claro da equipe do compilador do C# que trabalhou duro no algoritmo. Hoje essa "feature" é uma das maiores no compilador do C#.
Nada melhor do que vermos o código para entender melhor como tudo isto funciona. Vou mostrar um método que retorna IEnumerator<int> e o resultado gerado pelo compilador, usando o Reflector pra isso.
Read more...
01/17/2011 09:23:00
By Felipe Pessoto
Publiquei há algum tempo uma biblioteca com algumas classes que uso constantemente e ajudam bastante. Não é preciso usar a minha DLL em si, você pode pegar só as classes que precisa e incluir no seu projeto também. Acho que ninguem quer um Fujiy.Util.dll no projeto, rs.
Em resumo, por enquanto tenho o seguinte:
Read more...
01/14/2011 18:46:00
By Felipe Pessoto
Tem algumas ferramentas que considero essenciais, algumas delas são somente para o universo .NET, mas a maioria serve pra qualquer desenvolvedor.
1-) Resharper
2-) Controle de versão, SVN, Mercurial
3-) Beyond Compare
4-) Firebug
5-) Reflector
01/13/2011 12:53:00
By Felipe Pessoto
Acabou de sair o RTM do ASP.NET MVC 3, agora é esperar pela 4 =)
ASP.NET MVC 3 RTM
ASP.NET MVC 3 No CodePlex