code against the machine

fevereiro 26, 2009

Utilizando biblioteca MS Chart com Asp.net MVC / Monorail

Filed under: .NET, Microsoft, Monorail, Programming — rhossi @ 10:16 pm

Baixei recentemente a bilbiote MS Chart para .NET da Microsoft e comecei a fazer uns testes com páginas Web. Na primeira tentativa de utilização no MVC já percebi que não poderia simplesmente sair usando, teria que escrever algum código para fazê-lo funcionar nesse modelo.

Bom, antes de começar a escrever algum código, resolvi dar uma pesquisada sobre o assunto no google para quem sabe achar alguém que já tivesse passado pelos mesmos problemas que eu. Pois bem, nessa busca eu encontrei o seguinte link onde o cara mostra duas maneiras possíveis de se utilizar o componente numa página ASP.Net MVC.

Quando vi o link, pude comprovar que funcionava, porém as duas soluções me espantaram. Não contente com as duas soluções, resolvi encontrar uma outra maneira de fazer tudo isso funcionar respeitando o MVC e gerando tudo programaticamente na controller e renderizando o output do gráfico na view.

O exemplo que eu fiz é o mais simples de todos e tem como fundamento mostrar apenas como é possível utilizar o controle MS Chart no ASP.Net MVC e no Monorail sem violar (ou violentar) as boas práticas de desenvolvimento.

Segue o link para download.

janeiro 14, 2009

iPhone DFU Mode

Filed under: iPhone — rhossi @ 3:58 pm

Hoje ao tentar colocar o meu iPhone em DFU Mode no Mac não consegui. Depois de muitas tentativas, resolvi dar uma olhada no Google e descobri que a versão 10.5.6 do MacOs bloqueia esse tipo de operação.

Executei o processo no Windows, e tudo funcionou perfeitamente.

janeiro 13, 2009

Scrum em projetos de Manutenção, Melhoria de Código legado e Suporte

Filed under: Agile, Management, Scrum — rhossi @ 12:11 pm

Temos diversos projetos de manutenção e melhoria de código legado aqui na empresa onde trabalho. Os projetos eram gerenciados no modelo queue management, onde havia apenas uma lista priorizada para controle das tarefas.

Cansado com os problemas que tinhamos com esse modelo, pensei em adotar o Scrum para gerenciamento desses tipos de projetos. Na busca de algum artigo sobre dicas ou experiência de pessoas que já utilizaram Scrum para esses fins, encontrei os seguintes artigos:

http://stackoverflow.com/questions/285933/how-do-you-apply-scrum-to-maintenance-and-legacy-code-improvements

http://agileworld.blogspot.com/2007/04/applying-agilescrum-practices-in.html

http://blog.crisp.se/mattiasskarin/files/agileforsupport/kanban_for_support_and_operations.pdf

novembro 6, 2008

Ordenando coleções HasAndBelongsToMany no Castle Active Record

Filed under: Uncategorized — rhossi @ 3:53 pm

Para ordenar coleções HasAndBelongsToMany no Castle, primeiramente adicione o Sort nas opções do atributo HasAndBelongsToMany da coleção que deseja ordenar

image

Crie a classe que será responsável por fazer o sort

image

Bem simples, não é mesmo?

outubro 24, 2008

Compilando NHibernate , Castle E rhino Tools

Filed under: .NET, Castle, NHibernate, OSS, Programming, Rhino Tools — rhossi @ 12:01 pm

Hoje tive que baixar o fonte do trunk do NHibernate, Castle e Rhino Tools, e compilá-los.

Estava tendo alguns problemas para compilar o NHibernate, procurei no Google, e encontrei os seguintes links que foram muito úteis e me ajudaram a compilar todos os projetos facilmente

http://blogs.hibernatingrhinos.com/nhibernate/archive/2008/03/31/prepare-your-system-for-nhibernate.aspx

http://wiki.bittercoder.com/Default.aspx?Page=CastleStackFromTrunk&AspxAutoDetectCookieSupport=1#Checking_Everything_Out

http://ayende.com/Blog/archive/2007/08/06/Running-on-the-trunk-Building-Rhino-Commons.aspx

outubro 20, 2008

Forçando download de arquivos zip no Internet Explorer

Filed under: .NET, Programming — rhossi @ 1:54 pm

Hoje tivemos problemas com um cliente que relatou ter problemas com a exportação de arquivo ZIP do nosso site. Fiz os testes no meu MacBook, com Firefox e Safari tudo Ok. Fiz os testes na minha workstation do trabalho com Firefox tudo Ok. Aí fiquei com a pulga atrás da orelha e resolvi testar no Internet Explorer, e para minha surpresa, consegui simular o erro.

Depois de muita procura no google, descobri que o mais correto seria configurar o content-type para “application/force-download” e não “application/zip” como eu estava utilizando.

Trecho Código Antigo do nosso sistema em Monorail(não funcionava no IE)
Response.WriteFile(zipFile);
Response.ContentType = “application/zip”;
Response.AppendHeader(“Content-Disposition”, “attachment; filename=export.zip;”);

Trecho Código Novo do nosso sistema em Monorail(funciona normalmente no IE, Firefox, Safari)
Response.WriteFile(zipFile);
Response.ContentType = “application/force-download”;
Response.AppendHeader(“Content-Disposition”, “attachment; filename=export.zip;”);

outubro 10, 2008

I’m a void Method, To return or not to return?

Filed under: .NET, Programming, Uncategorized — rhossi @ 1:15 pm

Um amigo meu tem o costume de escrever o return mesmo em métodos void. Eu particularmente, não escrevo. Encucado com essas particularidades, resolvi escrever um exemplo para analisar o código gerado em IL pelo compilador do C# e para verificar o tempo de chamada, consumo de clocks de CPU para um método void com return e outro sem return.

image

Como podem ver o código bem simples e serve apenas para testar o uso do return.

Com esse código compilado, executei o ILDASM e abri o código compilado para verificar o IL gerado.

IL Gerado para método SayHello():

image

IL Gerado para método SayHelloWithReturn():

image

Como podem ver, os dois códigos IL gerados são praticamente semelhantes até a linha IL_000b.

Quais são as diferenças?

  • O código IL do método SayHelloWithReturn tem 15 bytes e o código sem return tem 13 bytes.
  • O código IL do método SayHelloWithReturn tem uma instrução de jump na linha IL_000C e o código sem return acaba na linha IL_000C

Vamos aos testes de invocação dos métodos e seus respectivos tempos em ms e clocks de cpu 

image 

Como podem ver a diferença é praticamente imperceptível a olho nu, mas o tempo em clocks de CPU consumido pelo método SayHelloWithReturn() é bem maior que o tempo de seu rival SayHello().

Lista de todos os métodos com retorno tipo void dos tipos exportados pelos assemblies referenciados pela minha aplicação de exemplo

image

Resultado do teste

image

Conclusão:

Assumindo que os métodos void com return consomem 2 bytes a mais que os métodos void sem return, supondo que todos esses assemblies tivessem o return em seus métodos void,  teríamos nesse caso um gasto adicional de 3587×2 = 7184 bytes, ou aproximadamente 7KB no tamanho dos assemblies.

Depdendendo do tamanho da sua aplicação, isso pode fazer alguma diferença. Para a segunda parte deste artigo, escrevei um outro teste onde analisarei o impacto da chamada em encadeada desses métodos void com e sem return e analisar os tempos em milisegundos e clocks de cpu.

maio 2, 2007

Insert Code Plugin

Filed under: Uncategorized — rhossi @ 1:22 am

Para os que usam o Windows Live Writer para fazer publicações no blog, acabei de encontrar o plugin Insert Code.

Eis o teste abaixo.

 

public void SayHelloWorld()
{
    Console.WriteLine("Hello World!");
}

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

Silverlight e DLR

Filed under: .NET, Microsoft, Programming — rhossi @ 1:09 am

O Silverlight da Microsoft acho que pode fazer sucesso. Tecnologias como Flash e o Flex da Adobe são excelentes. Mas eu com a minha visão de programador, nunca gostei do Action Script. Para falar a verdade também nunca gostei do Java Script.

É uma opinião pessoal, mas acho a sintaxe de ambos nenhum um pouco agradável.

Silverlight tem a ganhar nessa área pois com sua intregração com o .net framework, permite utilzar vários recursos já existentes. Para programadores já habituados com o VB.NET ou C#, é apenas agregar mais conhecimento e aprender apenas sobre o Silverlight.

Outra grande sacada é o ínicio do DLR(Dynamic Language Runtime). O CLR (Common Language Runtime) tem algumas features dinâmicas, mas não é 100%. O DLR chega para suprir essas lacunas.

Alguém consegue imaginar o que seria rodar Ruby On Rails em .NET ?

Alguém imagina construir aplicações do tipo Flash ou Flex, utilizando Silverlight ? Programando me linguagens rodando sobre a máquina virtual .NET ? Ruby, Pyhton, VBx, JavaScript(ECMAScript 3.0) ? Ganho de performance pois o código jitado/compilado é muito mais rápido (até 1000x)

Bom, seria ótimo! E como fã de Ruby, estou louco para ver o IronRuby! 

Bom, olhem esse demo do Lutz Roeder. É uma pequena demonstração do Silverlight. Apesar de bem simples, eu achei legal.

março 28, 2007

Visual Studio 2005 + IIS7

Filed under: Uncategorized — rhossi @ 12:38 am

Após alguns minutos de divertimento propiciados pelo uso do Visual Studio 2005 com o IIS7 decidi procurar o problema no google

“Unable to start debugging on the web server. An authentication error occurred while communicating with the web server. Please see Help for assistance.”

E logo de cara encontrei na página do Scott Guthrie a solução para o meu problema. Digo, o fim do meu entretenimento com o IIS7 e o Visual Studio 2005.

Posts mais antigos »

Tema: Shocking Blue Green. Blog no WordPress.com.

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.