Fujiy

Blog sobre .NET, C#, ASP.NET entre outras tecnologias de desenvolvimento de software

Premier Field Engineer na Microsoft

12/04/2015 18:20:56 Por Fujiy

Já se passaram alguns meses desde que comecei uma nova jornada em minha carreira. Eu nem imaginava que no Brasil existissem PFE's, na realidade nem sabia o que fazia um PFE.

Como desenvolvedor estava acostumado com a idéia de sempre escrever código na maior parte do tempo. Porém o objetivo do PFE é diferente, a função é voltado ao suporte, reativamente ou de forma proativa.

Trabalhar na Microsoft trouxe muitas mudanças, é uma das maiores empresas do mundo, com diversos processos, regras e oportunidades. Como sempre fui fã de C#, .NET e outras tecnologias Microsoft, é bom estar mais próximo das pessoas que fizeram tudo isso acontecer.

Em pouco tempo você percebe que não é à toa que a Microsoft é uma empresa de sucesso, com pessoas muito inteligentes e focadas, e você vai querer seguir seus exemplos.

Com certeza já estou e ainda vou aprender muito.

5 Things about ASP.NET 5 that will Blow your Mind!

12/04/2015 18:03:53 Por Fujiy

Acabei de assistir o video "5 Things about ASP.NET 5 that will Blow your Mind!" do Daniel Roth e Cory Fowler, publicado no Channel 9. Nos últimos meses tem sido publicada tanta informação sobre ASP.NET 5, CoreCLR, EntityFramework, enfim, as tecnologias que eu usava em praticamente todos os projetos, que fica difícil acompanhar todas as mudanças.

Ainda mais com tantos projetos Open Source, onde são divulgados os Design Meeting Notes, em que se pode ler e contribuir com idéias, verificar cada commit feito....é muita informação.

Neste vídeo há um resumo de alguns novos aspectos do ASP.NET 5, nenhuma grande novidade pra quem já acompanha o que já se tem feito, mas agora de forma mais concreta. São abordados os tópicos:

 

  • New fast request pipeline
  • Unified Web stack (MVC + Web API + Web Pages)
  • BYOCLR
  • Cross-plataform 
  • Open Source

5 Things about ASP.NET 5 that will Blow your Mind!

CET Trânsito Agora na Windows Phone Store

21/12/2014 20:19:12 Por Fujiy

Converti o aplicativo CET Trânsito Agora para um projeto Universal e publiquei na Windows Phone Store. Com atualizações em background mostrando o índice de transito na Live Tile:

 

 

CET - Trânsito Agora - Windows Phone Store

CET - Trânsito Agora - Windows Store

Desenvolva como se o próximo a manter seu código seja um maníaco homicida que sabe onde você mora.

22/08/2014 22:02:47 Por Fujiy

Normalmente quando estou programando não estou pensando em fazer funcionar apenas, na verdade o desafio é fazer de forma simples e óbvia. O fazer funcionar é o mínimo, se não funciona não adianta criar.

As vezes, ou muitas vezes, o dificil é fazer o simples, pode ser porquê não conhecemos a forma certa ou como usar determinado Framework, por estar "dentro" do problema e já influenciado pelo código existente ou mesmo pelo entusiamo de criar códigos mirabolantes.

"Code as if the next guy to maintain your code is a homicidal maniac who knows where you live." -Kathy Sierra and Bert Bates

Criando código bem estruturado, vai poupar seus colegas de muitos problemas (bugs) e economizar tempo sempre que precisar mexer no seu código. Costumo dizer que a próxima pessoa a mexer no código pode ser eu mesmo daqui 6 meses, quando já não lembro muita coisa do projeto, e ter o código limpo acaba sendo uma recompensa.

Para ter código limpo você depende de muitas coisas, mas é muito mais fácil faze-las quando está escrevendo pela primeira vez do que no futuro ter que entender o motivo de tudo que foi feito do jeito que está. Algumas coisas como:

  • Usar uma variavel entre alguns calculos, com um nome descritivo
  • Separar o código em método que façam sentido, normalmente com altura menor que sua tela.
  • Agrupar chamadas em blocos onde o código esteja relacionado de alguma forma e deixando uma linha em branco antes do próximo. Meio que para separar os pensamentos
  • Manter os métodos em ordem de chamadas, por exemplo se tenho um método que chama outros dois método na mesma classe, mantenho eles perto, o chamador primeiro, depois os chamados.
  • Não duplicar código.
  • Não depender de efeitos colaterais, ou regras "fracas".
  • Entre muitos outros. Recomendo o livro Clean Code: A Handbook of Agile Software Craftsmanship

 Outro fato que muita gente ignora é a compilação e deploy. Uma das coisas que dão mais trabalho e medo, é pegar um código muito antigo que muitas vezes nem compila e ter que só alterar uma linha de código. Como garantir que a versão do código que tenho é a que foi pra produção a dois anos atras? E se esse código está com alterarações que nunca subiram pra produção?

E o mais importante, refatorar, refatorar e refatorar. Antes e depois de mexer em algum código, veja as opotunidades de refatorar.

Quando pegar um código muito bagunçado, faça uma limpeza, remova duplicidades, garanta que tudo ainda funciona e então faça suas alterações. E ao terminar garanta que as alterações estão organizadas, entre um teste e outro acabamos deixando coisas para trás.

 A biblioteca que uso pra cache, Fujiy Util, é um bom exemplo de refatoração, apesar de ser pequena, a principio era um só método que fazia tudo, agora tenho classes separadas pra gerar chaves a partir de uma chamada de método e a classe que gerencia o Cache em si.

Fujiy Util 1.1.0

22/08/2014 21:56:24 Por Fujiy

Publiquei uma nova versão do Fujiy Util.

Um detalhe que eu não tinha percebido até alguns dias, o que acontece com código assíncrono já que inicialmente ele não dispara uma Exception?

O problema não é especifico na biblioteca, mas em qualquer código que você use algum tipo de Cache onde faça o cache de uma Task, o que vai ser cada vez mais comum, ainda mais considerando que as chamadas que normalmente usam cache, são assíncronas.

O que acontece é que ao chamas o método a ser cacheado, ele retorna com sucesso uma Task, em Status pendente. Posteriormente ela será "awaited" e possivelmente ser cancelada ou falhar, mas nesse momentoa Task já estava no cache. Então agora antes de retornar qualquer item do tipo Task, verifico se não está com o Status Faulted ou Canceled.

https://www.nuget.org/packages/Fujiy.Util/