﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>egomesbrandao, blog &#187; Sem categoria</title>
	<atom:link href="http://egomesbrandao.net/blog/category/sem-categoria/feed/" rel="self" type="application/rss+xml" />
	<link>http://egomesbrandao.net/blog</link>
	<description>.net, scrum, scripts e afins...</description>
	<lastBuildDate>Tue, 23 Feb 2010 21:31:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ABC App &#8211; 03 Fazendo um Refactoring na DAL</title>
		<link>http://egomesbrandao.net/blog/2009/11/abc-app-03-fazendo-um-refactoring-na-dal/</link>
		<comments>http://egomesbrandao.net/blog/2009/11/abc-app-03-fazendo-um-refactoring-na-dal/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 16:42:55 +0000</pubDate>
		<dc:creator>egomesbrandao</dc:creator>
				<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[abcapp]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[entlib]]></category>

		<guid isPermaLink="false">http://egomesbrandao.net/blog/?p=90</guid>
		<description><![CDATA[No post anterior,  iniciamos a contrução da ABC App, construindo uma camada de Domínio e uma camada de DAL. Antes de continuarmos a desenvolver, vamos aplicar um Refactoring?
Eu não gosto de termos em inglês para coisas que podemos falar em português, mas no caso do Refactoring eu abro uma exceção, normalmente o que se fala [...]]]></description>
			<content:encoded><![CDATA[<p>No <a href="http://egomesbrandao.net/blog/2009/10/abc-app-02-populando-objetos-sem-uso-de-dataset/" target="_blank">post anterior</a>,  iniciamos a contrução da ABC App, construindo uma camada de Domínio e uma camada de DAL. Antes de continuarmos a desenvolver, vamos aplicar um <em>Refactoring</em>?</p>
<p>Eu não gosto de termos em inglês para coisas que podemos falar em português, mas no caso do <em>Refactoring</em> eu abro uma exceção, normalmente o que se fala é Refatoração, mas essa palavra para mim é um termo matemático. O correto, IMHO, seria dizer Re-fabricar, mas fico com o termo em inglês.</p>
<p>E o que podemos fazer?</p>
<p>Vamos seguir usando Baby Steps, daqui por diante pequenos passos, ou seja , faço <em>Refactoring</em> e testo, <em>Refactoring</em> e testo, então não corro o risco de fazer uma grande alteração e me perder no código alterado e o sistema não funcionar. A primeira coisa para alterar é a criação da conexão com o BD, como será recorrente em toda classe DAL, podemos criar um classe base que todas dessa camada herdem e,  assim,  centralizarmos o código. Então,  primeira coisa, crie uma classe BaseDAL, como abaixo:</p>
<pre class="brush: csharp;">
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data;
using System.Data.Common;
using System.Resources;
using EntLib = Microsoft.Practices.EnterpriseLibrary.Data;

namespace ABCApp.DAL
{

    public abstract class BaseDAL
    {
        public EntLib.Database db { get; set; }

        public BaseDAL()
        {
            db = EntLib.DatabaseFactory.CreateDatabase(&quot;Connection String&quot;);
        }
    }
}
</pre>
<p><em>Listagem 01</em></p>
<p>A classe BaseDAL não poderá ser instanciada, só poderá ser herdada. Com isso, ganhamos um único ponto de conexão com o Banco de Dados, que será muito útil quando quisermos controlar um transação, outro ponto é no reuso de código. Para usarmos essa classe vamos herdar ela na classe Customer da DAL. Não se esqueça de apagar a linha indicada, pois agora usaremos o objeto Database da classe BaseDAL. Lembram-se do código abaixo?</p>
<pre class="brush: csharp;">
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Domain = ABCApp.Domain;

using System.Data;
using System.Data.Common;
using System.Resources;
using Microsoft.Practices.EnterpriseLibrary.Data;

namespace ABCApp.DAL
{
    public class Customer : BaseDAL
    {
        public Domain.Customer GetCustomerById(int customerId)
        {
            //Apague a linha abaixo
            //Database db = DatabaseFactory.CreateDatabase(&quot;Connection String&quot;);

            string sql = &quot;select customerid, firstname, middlename, lastname, companyname, emailaddress, phone, modifieddate from saleslt.customer where customerid = @customerid&quot;;

            DbCommand cmd = db.GetSqlStringCommand(sql);

            db.AddInParameter(cmd, &quot;customerid&quot;, DbType.Int32, customerId);

            IDataReader dr = db.ExecuteReader(cmd);

            Domain.Customer c = new Domain.Customer();

            while (dr.Read())
            {
                c.CompanyName = dr[&quot;companyname&quot;].ToString();
                c.CustomerId = Convert.ToInt32(dr[&quot;customerid&quot;]);
                c.EmailAddress = dr[&quot;emailaddress&quot;].ToString();
                c.FirstName = dr[&quot;firstname&quot;].ToString();
                c.LastName = dr[&quot;lastname&quot;].ToString();
                c.MiddleName = dr[&quot;middlename&quot;].ToString();
                c.ModifiedDate = Convert.ToDateTime(dr[&quot;modifieddate&quot;]);
                c.Phone = dr[&quot;phone&quot;].ToString();
            }

            if (!dr.IsClosed)
                dr.Close();

            return c;
        }
    }
}
</pre>
<p><em>Listagem 02</em></p>
<p>Se já tivéssemos escrito mais classes DAL, o impacto dessa alteração seria muito maior. Então , seguindo nossso mantra de pequenos passos, vamos executar o código e saber se ele continua funcionando como o esperado.<br />
Sendo o retorno igual ao que você tinha antes de modificar o código, então passamos neste <em>Refactoring</em>!<br />
Vamos continuar implementando outros métodos na nossa classe DAL, o próximo interessante é retornar uma coleção de clientes. Podemos retornar todos os clientes e basicamente o método seria o mesmo do anterior mas sem o parâmetro de <em>customerId</em> e sem a linha de parâmetro no <em>Command</em>, vou criar então o método <em>GetCustomers </em>e que irá me retornar uma lista tipada de objetos, segue:</p>
<pre class="brush: csharp;">
public IList&lt;Domain.Customer&gt; GetCustomers()
        {
            List&lt;Domain.Customer&gt; lstCustomers ;

            string sql = &quot;select customerid, firstname, middlename, lastname, companyname, emailaddress, phone, modifieddate from saleslt.customer&quot;;

            DbCommand cmd = db.GetSqlStringCommand(sql);

            IDataReader dr = db.ExecuteReader(cmd);

            lstCustomers = new List&lt;Domain.Customer&gt;();

            while (dr.Read())
            {
                Domain.Customer c = new Domain.Customer();

                c.CompanyName = dr[&quot;companyname&quot;].ToString();
                c.CustomerId = Convert.ToInt32(dr[&quot;customerid&quot;]);
                c.EmailAddress = dr[&quot;emailaddress&quot;].ToString();
                c.FirstName = dr[&quot;firstname&quot;].ToString();
                c.LastName = dr[&quot;lastname&quot;].ToString();
                c.MiddleName = dr[&quot;middlename&quot;].ToString();
                c.ModifiedDate = Convert.ToDateTime(dr[&quot;modifieddate&quot;]);
                c.Phone = dr[&quot;phone&quot;].ToString();

                lstCustomers.Add(c);
            }

            if (!dr.IsClosed)
                dr.Close();

            return lstCustomers;
        }
</pre>
<p><em>Listagem 03</em></p>
<p>E para testar o código acima vamos escrever as seguintes linhas no nosso método <em>Main</em> no Projeto Console, logo abaixo da última linha já existente do nosso teste anterior:</p>
<pre class="brush: csharp;">
            IList&lt;Domain.Customer&gt; lstCustomer = dalCustomer.GetCustomers();

            foreach (Domain.Customer customer in lstCustomer)
            {
                System.Console.WriteLine(customer.CustomerId.ToString() + &quot; - &quot; + customer.FirstName.ToString() + &quot; &quot; + customer.LastName.ToString());
            }

            System.Console.ReadKey();
</pre>
<p><em>Listagem 04</em></p>
<p>O código acima chama o método da DAL e retorna uma coleção de Clientes. Se aparecerem  várias centenas de Clientes,  está certo!<br />
O código escrito até agora. Será que é possível aplicar um <em>Refactoring</em> para melhorar algo? Bom, tem algo bem evidente, uma duplicação de código, os dois métodos fazem a leitura do <em>DataReader</em> e populam um objeto <em>Customer</em>, e um deles ele adiciona a uma lista de objetos já que o retorno são vários. Podemos centralizar esse código para que quando for preciso adicionar uma nova Propriedade a classe <em>Customer</em> seja preciso alterar somente em um lugar, então vou criar o método <em>AdaptToList</em> que irá receber um <em>DataReader</em> e retornar uma lista tipada de <em>Customer</em>:</p>
<pre class="brush: csharp;">
public IList&lt;Domain.Customer&gt; AdaptToList(IDataReader dr)
        {

        }
</pre>
<p><em>Listagem 05</em></p>
<p>O código da listagem 05 está praticamente pronto. Mova o código que se encontra na listagem 03, da linha 11 até 27 para dentro do método <em>AdaptToList</em>, e adicione a última linha, conforme a listagem 06! E repare que na inicialização da coleção <em>Customer</em> a declaração estava em outra linha,  então acrescente o tipo antes.</p>
<pre class="brush: csharp;">
        public IList&lt;Domain.Customer&gt; AdaptToList(IDataReader dr)
        {
            List&lt;Domain.Customer&gt; lstCustomers = new List&lt;Domain.Customer&gt;();

            while (dr.Read())
            {
                Domain.Customer c = new Domain.Customer();

                c.CompanyName = dr[&quot;companyname&quot;].ToString();
                c.CustomerId = Convert.ToInt32(dr[&quot;customerid&quot;]);
                c.EmailAddress = dr[&quot;emailaddress&quot;].ToString();
                c.FirstName = dr[&quot;firstname&quot;].ToString();
                c.LastName = dr[&quot;lastname&quot;].ToString();
                c.MiddleName = dr[&quot;middlename&quot;].ToString();
                c.ModifiedDate = Convert.ToDateTime(dr[&quot;modifieddate&quot;]);
                c.Phone = dr[&quot;phone&quot;].ToString();

                lstCustomers.Add(c);
            }

            return lstCustomers;
        }
</pre>
<p><em>Listagem 06</em></p>
<p>Para funcionar só é preciso chamar o método AdaptToList no método GetCustomers,  também alterei para que a lstCustomer fosse baseada em uma IList&lt;T&gt;, conforme a listagem abaixo:</p>
<pre class="brush: csharp;">
        public IList&lt;Domain.Customer&gt; GetCustomers()
        {
            IList&lt;Domain.Customer&gt; lstCustomers = null; 

            string sql = &quot;select customerid, firstname, middlename, lastname, companyname, emailaddress, phone, modifieddate from saleslt.customer&quot;;

            DbCommand cmd = db.GetSqlStringCommand(sql);

            IDataReader dr = db.ExecuteReader(cmd);

            lstCustomers = AdaptToList(dr);

            if (!dr.IsClosed)
                dr.Close();

            return lstCustomers;
        }
</pre>
<p><em>Listagem 07</em></p>
<p>Mais um pequeno passo, e mais um teste! Se rodou e continuou funcionando é por que o seu <em>Refactoring</em> foi bem feito! O que falta? Bem, se AdaptToList foi contruído para economizar código devemos usá-lo também no método GetCustomerById, mas nesse último método ele retorna apenas um Customer e não uma lista. Podemos então usar um artifício: pegar somente o primeiro item da lista para retornar, conforme listagem abaixo: </p>
<pre class="brush: csharp;">
public Domain.Customer GetCustomerById(int customerId)
        {
            IList&lt;Domain.Customer&gt; lstCustomers = null;

            string sql = &quot;select customerid, firstname, middlename, lastname, companyname, emailaddress, phone, modifieddate from saleslt.customer where customerid = @customerid&quot;;

            DbCommand cmd = db.GetSqlStringCommand(sql);

            db.AddInParameter(cmd, &quot;customerid&quot;, DbType.Int32, customerId);

            IDataReader dr = db.ExecuteReader(cmd);

            lstCustomers = AdaptToList(dr);

            if (!dr.IsClosed)
                dr.Close();

          �
            return ((lstCustomers != null) || (lstCustomers[0] != null)) ? lstCustomers[0] : null;
        }
</pre>
<p><em>Listagem 08</em></p>
<p>Na listagem 08 está o método <em>GetCustomerById</em> como deve ficar, a mudança do <em>List&lt;Domain.Customer&gt;</em> para <em>IList&lt;Domain.Customer&gt;</em>, a chamada do método <em>AdaptToList</em> e o pulo do gato que é o uso do operador ternário para retornar somente o primeiro item da coleção, ou seja um objeto <em>Customer</em>, ou um <em>null</em>, não vamos discutir agora se retornar nulo é uma boa opção ou não!</p>
<p>Vou finalizar o post por aqui, para não ficar muito grande, resumindo o que fizemos aqui: Refactoring!<br />
Melhoramos o nosso código, parece que não é necessário fazer isso agora, mas sempre que possível é interessante a fazer, no caso criamos uma classe para cuidar inicialmente da conexão com o banco de dados e como criamos outro método que populava a classe <em>Customer </em>criamos um método para cuidar especificamente disso.</p>
<p>O código deste post encontra-se no <a href="http://abcapp.codeplex.com/SourceControl/changeset/view/35524" target="_blank">Change Set 35524</a>, dúvidas e sugestões por favor comentem!</p>
<p>Referências:</p>
<p><a href="http://pt.wikipedia.org/wiki/Refatora%C3%A7%C3%A3o" target="_blank">Wikipedia Refatoração</a></p>
<p><a href="http://en.wikipedia.org/wiki/Refactoring" target="_blank">Wikipedia Refactoring</a></p>
<p><a href="http://en.wikipedia.org/wiki/Code_refactoring" target="_blank">Wikipedia Code Refactoring</a></p>
]]></content:encoded>
			<wfw:commentRss>http://egomesbrandao.net/blog/2009/11/abc-app-03-fazendo-um-refactoring-na-dal/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Novo feed, assine&#8230; daqui a pouco novo post!</title>
		<link>http://egomesbrandao.net/blog/2009/10/novo-feed-assine-daqui-a-pouco-novo-post/</link>
		<comments>http://egomesbrandao.net/blog/2009/10/novo-feed-assine-daqui-a-pouco-novo-post/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 22:07:04 +0000</pubDate>
		<dc:creator>egomesbrandao</dc:creator>
				<category><![CDATA[Sem categoria]]></category>

		<guid isPermaLink="false">http://egomesbrandao.net/blog/?p=71</guid>
		<description><![CDATA[Pessoal,
Estou mudando o endereço do feed, se você assinou mude para:
http://feeds.feedburner.com/egomesbrandaoblog
Obrigado por continuar lendo, e daqui a pouco sai novo post: Como acessar dados sem usar Dataset.
]]></description>
			<content:encoded><![CDATA[<p>Pessoal,</p>
<p>Estou mudando o endereço do feed, se você assinou mude para:</p>
<p><a href="http://feeds.feedburner.com/egomesbrandaoblog">http://feeds.feedburner.com/egomesbrandaoblog</a></p>
<p>Obrigado por continuar lendo, e daqui a pouco sai novo post: Como acessar dados sem usar Dataset.</p>
]]></content:encoded>
			<wfw:commentRss>http://egomesbrandao.net/blog/2009/10/novo-feed-assine-daqui-a-pouco-novo-post/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sobre a reunião do DNA, PMI X Scrum, e podcast</title>
		<link>http://egomesbrandao.net/blog/2009/09/sobre-a-reuniao-do-dna-pmi-x-scrum-e-podcast/</link>
		<comments>http://egomesbrandao.net/blog/2009/09/sobre-a-reuniao-do-dna-pmi-x-scrum-e-podcast/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 13:12:59 +0000</pubDate>
		<dc:creator>egomesbrandao</dc:creator>
				<category><![CDATA[Sem categoria]]></category>

		<guid isPermaLink="false">http://egomesbrandao.net/blog/?p=60</guid>
		<description><![CDATA[Antes de postar o próximo post do ABC App eu quero comentar sobre dois acontecimentos.
Dia 26 de setembro aconteceu mais uma reunião do grupo DNA (.NetArchitects), o tema foi PMI X Scrum. O objetivo era fazer uma mesa redonda em que cada um dos lados tivesse defensores em que apresentassem a sua defesa pelo uso de um [...]]]></description>
			<content:encoded><![CDATA[<p>Antes de postar o próximo post do <a href="http://egomesbrandao.net/blog/category/abcapp/" target="_blank">ABC App</a> eu quero comentar sobre dois acontecimentos.</p>
<p>Dia 26 de setembro aconteceu mais uma reunião do grupo DNA (<a href="http://www.dotnetarchitects.net/" target="_blank">.NetArchitects</a>), o tema foi PMI X Scrum. O objetivo era fazer uma mesa redonda em que cada um dos lados tivesse defensores em que apresentassem a sua defesa pelo uso de um ou do outro. Infelizmente,  do lado do PMI nossos convidados não apareceram, o nosso grupo DNA, é praticamente 100% a favor do Scrum, então dois se ofereceram para defender a visão do PMI:  André Dias (<a href="http://blogs.msdn.com/andredias/">http://blogs.msdn.com/andredias/</a>, siga <a href="http://twitter.com/andrediasbr" target="_blank">@andrediasbr</a>) e Victor Cavalcanti (<a title="http://www.cavalcante.net" href="http://www.cavalcante.net" target="_blank">http://www.cavalcante.net</a>, siga <a href="http://twitter.com/vcavalcante" target="_blank">@vcavalcante</a>), do lado do Scrum ficou o Giovanni Bassi (<a href="http://unplugged.giggio.net">http://unplugged.giggio.net</a>, siga <a href="http://twitter.com/giovannibassi" target="_blank">@giovannibassi</a>).<br />
Fora a frustração evidente do André e do Victor, de ter que defender o PMI o papo foi muito legal. O que tirei da conversa:</p>
<ul>
<li>O PMI é velho! Hoje estamos cada vez mais dinâmicos, aplicações são escritas por pessoas que não são desenvolvedores em suas horas vagas, arrancando pedaços de participação de mercado de empresas, e por conta disso,  precisamos de mais velocidade; então por quê continuar com algo que é lento? Onde precisamos de controle vamos controlar, onde não precisamos de controle não vamos controlar! (do manifesto ágil: <em>Individuals and interactions over processes and tools</em>)</li>
<li>Se precisamos cada vez mais de velocidade , é por que precisamos de software pronto o mais rápido possível, tanto para atender uma demanda de mercado, como uma mudança de negócio de uma empresa; então por quê perder tempo com o que não é essencial? Com o que não vai trazer ROI? Vamos entregar! (do manifesto ágil: <em>Working software over comprehensive documentation</em>)</li>
<li>Se precisamos de software rápido e funcionando, precisamos de pessoas capacitadas, treinadas, focadas, interessadas para desenvolver. Então por quê não valorizamos esses profissionais? Por quê esprememos deles coisas inúteis como cumprimento de horário, vestuário, entre outras coisas? Vamos deixar as pessoas trabalharem confortavelmente, vamos investir nos bons profissionais, vamos recompensar quem traz ganhos para a empresa! (do manifesto ágil: Individuals and interactions over processes and tools)</li>
<li>Para isso tudo acontecer precisamos ser dinâmicos, não nos fechar, não entrarmos em uma bolha, tratar funcionários e clientes como parceiros; Por quê então tornamos eles nossos inimigos? Vamos construir pontes, ao invés de derrubá-las! (do manifesto ágil: <em>Responding to change over following a plan</em>)</li>
</ul>
<p>Scrum é isso, nada mais que isso, o que falta aí é documento Product Backlog e as cerimônias de planejamento, reunião diária, e de finalização do Sprint. Precisamos mais do que isso para entregar um software? Não precisamos escrever extensos documentos que nunca serão lidos, não precisamos ficar montando cronogramas de coisas que não podemos prever, não precisamos ter alguém para mandar, só precisamos deixar que foi contratado para fazer o trabalho&#8230; trabalhar!</p>
<p>Quem quiser saber o que rolou na reunião veja pelo link do <a href="https://www.livemeeting.com/cc/usergroups/join?id=F883MS&amp;role=attend" target="_blank">livemeeting</a>, o André Dias também fez um post muito legal, tem até uma colagem de uma conversa com o <a href="http://twitter.com/RenatoFerracini">@RenatoFerracini</a> que rolou no twitter.</p>
<p>O outro assunto é sobre o mais novo episódio do <a href="http://podcast.dotnetarchitects.net/" target="_blank">podcast do .NetArchitects</a> , que falamos sobre a profissão de Arquiteto, o assunto foi muito legal e vamos voltar a falar sobre ele com certeza! Assine o feed, ouça e comente!</p>
<p>Ainda essa semana sai o próximo post&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://egomesbrandao.net/blog/2009/09/sobre-a-reuniao-do-dna-pmi-x-scrum-e-podcast/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Tema para VS.Net</title>
		<link>http://egomesbrandao.net/blog/2009/08/tema-para-vs-net/</link>
		<comments>http://egomesbrandao.net/blog/2009/08/tema-para-vs-net/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 15:05:58 +0000</pubDate>
		<dc:creator>egomesbrandao</dc:creator>
				<category><![CDATA[Sem categoria]]></category>

		<guid isPermaLink="false">http://egomesbrandao.net/blog/?p=38</guid>
		<description><![CDATA[Desde os tempos em que eu usava o  AutoCAD o meu fundo de tela é preto, o branco cansa muito a vista e para quem fica diante do computador várias horas ao dia é necessário tomar algumas providências para diminuir esse problema. Usar a tela com o fundo preto ainda por cima consome menos energia!  [...]]]></description>
			<content:encoded><![CDATA[<p>Desde os tempos em que eu usava o  AutoCAD o meu fundo de tela é preto, o branco cansa muito a vista e para quem fica diante do computador várias horas ao dia é necessário tomar algumas providências para diminuir esse problema. Usar a tela com o fundo preto ainda por cima consome menos energia! <img src='http://egomesbrandao.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Com o VS.Net existe a possibilidade de também configurar esse ambiente. Logo quando conheci essa funcionalidade mudei o fundo para preto, mas são necessários  mais ajustes pois determinadas cores padrão não ficam muito bem com o fundo preto.</p>
<p>Sem querer um dia achei um tema adaptado no <a href="http://eduardomiranda.net/blogs/dotnet/" target="_blank">blog do Eduardo Miranda</a>, ele usa o tema John Lam,  traduzido do TextMate para Visual Studio. Ficou bem legal, aqui está o <a href="http://eduardomiranda.net/blogs/dotnet/archive/2007/06/19/mudando-o-visual-do-visual-studio.aspx" target="_blank">post</a>. Nos comentários tem uma pequena correção que o <a href="http://weblogs.pontonetpt.com/israelaece/" target="_blank">Israel Aece</a> faz que é bem útil.</p>
<p>Ontem achei novos temas:</p>
<p><a href="http://winterdom.com/2007/11/vs2008colorschemes">http://winterdom.com/2007/11/vs2008colorschemes</a></p>
<p><a href="http://coelhonarede.110mb.com/2008/01/temas-para-o-visual-studio.html">http://coelhonarede.110mb.com/2008/01/temas-para-o-visual-studio.html</a></p>
<p>Estou testando o Midtone Complete, que é uma adaptação do Midtone Scheme ( ambos encontrados no último link) a tela não é totalmente preta, fica um tom de envelhecido bem legal. Foi muito bem montada a relação de cores, quando se escreve uma String e fecha a última aspa ela fica verde, bem cuidadoso.</p>
<p>Para quem quiser criar um tema pode fazer as alterações em menu Tools &gt; Options, e no treeview Environment &gt; Fonts and Colors:</p>
<div id="attachment_39" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-39 " title="VS.Net: Fonts and Colors" src="http://egomesbrandao.net/blog/wp-content/uploads/2009/08/VSdotNet_FontsAndColors-300x163.jpg" alt="Tela do VS.Net para mudar cores e fontes" width="300" height="163" /><p class="wp-caption-text">Tela do VS.Net para mudar cores e fontes</p></div>
<p>E para quem quiser adicionar um tema, adicionar e modificar em cima de um tema, ou guardar essas e outras configurações que fez no VS.Net, vá no menu Tools &gt; Import and Export Settings, lá você também pode resetar para as configurações de atalhos, fonts, cores originais!</p>
<p>Compartilhe o seu tema, atalhos, e configurações legais que você fez no seu VS.Net!</p>
]]></content:encoded>
			<wfw:commentRss>http://egomesbrandao.net/blog/2009/08/tema-para-vs-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qual a próxima onda?</title>
		<link>http://egomesbrandao.net/blog/2009/07/qual-a-proxima-onda/</link>
		<comments>http://egomesbrandao.net/blog/2009/07/qual-a-proxima-onda/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 16:45:03 +0000</pubDate>
		<dc:creator>egomesbrandao</dc:creator>
				<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[microsofr]]></category>

		<guid isPermaLink="false">http://egomesbrandao.net/blog/?p=29</guid>
		<description><![CDATA[Já que é sexta-feira quero convidar a todos para fazer um exercício de futorologia e opinarem&#8230; o que vem em seguida? Qual a próxima onda?
Estamos entrando em uma onda chamada Cloud Computing, mas eu acho que ela não é o fim, é um meio.
Para mim,  a internet nunca foi um fim, e sim um meio [...]]]></description>
			<content:encoded><![CDATA[<p>Já que é sexta-feira quero convidar a todos para fazer um exercício de futorologia e opinarem&#8230; o que vem em seguida? Qual a próxima onda?<br />
Estamos entrando em uma onda chamada Cloud Computing, mas eu acho que ela não é o fim, é um meio.<br />
Para mim,  a internet nunca foi um fim, e sim um meio de comunicação. Sempre vi como ela foi criada uma rede global, portanto sempre pensei que seria o meu suporte para conexão de sistemas, troca de informações, integração e não como o sistema em si, as chamadas web aplicações. Que ao meu ver são muito específicas, nem tudo dá para ser web.<br />
Hoje o <a href="http://unplugged.giggio.net/">Giovanni Bassi</a> twitou com o link de um vídeo em que a MS mostra a visão de futuro dela. É uma série de vídeos muito legais, tem um mais específico na área médica, outro da área de manufatura, eles estão <a href="http://www.officelabs.com/#envisioning">aqui</a>.<br />
Logo mais teremos o Win7 chegando com suporte a telas por toque, a próxima versão do .Net framework vai trazer facilidades nesse aspecto, temos Silverlight rodando fora do navegador, MS Surface, &#8230;<br />
Dito isto,  acho que a próxima revolução não será o Cloud Computing, que vai &#8220;apenas&#8221; (não é pouca coisa concordo) abstrair o computador pessoal em vários dispositivos e integrar muita coisa, mas acho que a próxima onde será a das interfaces! Integrá-las mais harmoniosamente ao nosso dia-a-dia, ter mais usabilidade, mais poder e mais facilidades.<br />
O que você acha?</p>
]]></content:encoded>
			<wfw:commentRss>http://egomesbrandao.net/blog/2009/07/qual-a-proxima-onda/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Campanha: Atalho para atualizar design no ASP.Net</title>
		<link>http://egomesbrandao.net/blog/2009/07/campanha-atalho-para-atualizar-design-no-asp-net/</link>
		<comments>http://egomesbrandao.net/blog/2009/07/campanha-atalho-para-atualizar-design-no-asp-net/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 14:36:39 +0000</pubDate>
		<dc:creator>egomesbrandao</dc:creator>
				<category><![CDATA[Sem categoria]]></category>

		<guid isPermaLink="false">http://egomesbrandao.net/blog/?p=20</guid>
		<description><![CDATA[Atualização (06/Ago/09): Conforme dica do Caio Proiete lá nos comentários o atalho é CTRL+SHIFT+Y, valeu Caio!
Comecei a programar em ASP.Net e logo uma coisa me deixou desconfortável.
Eu gosto de programar em código, mas vez por outra é legal dar uma &#8220;olhadela&#8221; em como esta ficando o seu design, existe um atalho para isso: SHIFT+F7, e [...]]]></description>
			<content:encoded><![CDATA[<p><strong><span style="color: #ff0000;">Atualização (06/Ago/09): Conforme dica do <a href="http://www.caioproiete.com/" target="_blank">Caio Proiete</a> lá nos comentários o atalho é CTRL+SHIFT+Y, valeu Caio!</span></strong></p>
<p>Comecei a programar em ASP.Net e logo uma coisa me deixou desconfortável.</p>
<p>Eu gosto de programar em código, mas vez por outra é legal dar uma &#8220;olhadela&#8221; em como esta ficando o seu design, existe um atalho para isso: SHIFT+F7, e você fica alternando entre design e source. Legal&#8230;</p>
<p>Mas legal mesmo é você programar com a janela dividida entre código, só tem um problema. Como fazer um Refresh no Design quando você altera o código sem usar o mouse? Sou programador, escrevo código, não gosto de ficar arrastando o mouse.</p>
<p>Simplesmente não dá! Você tem que clicar na linha amarela, como essa aí embaixo:</p>
<div id="attachment_27" class="wp-caption aligncenter" style="width: 610px"><img class="size-full wp-image-27" title="VSNet" src="http://egomesbrandao.net/blog/wp-content/uploads/2009/07/VSNet1.jpg" alt="Split de tela entre código e design" width="600" height="565" /><p class="wp-caption-text">Split de tela entre código e design</p></div>
<p>Então resolvi comunicar a MS que ela deveria mudar isso e segui a recomendação do <a href="http://twitter.com/andrediasbr" target="_blank">André Dias</a> e postei uma sugestão no <a href="http://connect.microsoft.com" target="_blank">MS Connect</a>, site da Microsoft para sugestões, críticas, &#8230;</p>
<p>Se você também acha pertinente a sugestão, vote, e twitte sobre ele!</p>
<p>Aqui vai o link <a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=476075&amp;wa=wsignin1.0" target="_blank">https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=476075&amp;wa=wsignin1.0</a></p>
]]></content:encoded>
			<wfw:commentRss>http://egomesbrandao.net/blog/2009/07/campanha-atalho-para-atualizar-design-no-asp-net/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Adobe Reader posto, Adobe Reader morto!</title>
		<link>http://egomesbrandao.net/blog/2009/07/adobe-reader-posto-adobe-reader-morto/</link>
		<comments>http://egomesbrandao.net/blog/2009/07/adobe-reader-posto-adobe-reader-morto/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 03:00:03 +0000</pubDate>
		<dc:creator>egomesbrandao</dc:creator>
				<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://egomesbrandao.net/blog/?p=10</guid>
		<description><![CDATA[
Se você acompanha esse blog sabe que sou desenvolvedor da plataforma .Net, e portanto sou mais pelo lado do software proprietério, pois ganho dinheiro com isso… Gosto dos produtos da MS, e defendo eles sempre que a discussão vai pro lado filosófico e sai das questões técnicas.
Portanto, era natural que para ler PDF eu usasse [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>Se você acompanha esse blog sabe que sou desenvolvedor da plataforma .Net, e portanto sou mais pelo lado do software proprietério, pois ganho dinheiro com isso… Gosto dos produtos da MS, e defendo eles sempre que a discussão vai pro lado filosófico e sai das questões técnicas.</p>
<p>Portanto, era natural que para ler PDF eu usasse o software “original”, o Adobe Reader…<br />
Mas uma coisa sempre me intrigou nesse software, apesar de saber que ele não é apenas uma leitor, você pode desenvolver formulários com ele. É complicadinho, usa Java Script, mas funciona e,  dizem que os norte-americanos declaram o imposto de renda assim; além de ele ter uma segurança elevada no PDF usando certificados digitais, etc… E portanto,  isso faz dele um software “robusto”. Ele é robusto DEMAIS!</p>
<p>É extremamente grande, extremamente pesado, e extremamente chato pois de mês em mês, ou menos, baixa uma atualização de mais de 40Mb!!! Eu disse uma atualização de mais de quarenta megabytes!! Ou seja, baixa toda vez que ele faz um update um novo Adobe Reader! Uma vez,  até eu mandei um e-mail para a Adobe perguntando o porquê de o software ser tão pesado, logicamente não tive resposta.</p>
<p>Bom… O tempo passou e tudo isso me fez perder a paciência, ainda mais no peso quando eu quero abrir mais de um arquivo ao mesmo tempo. E decidir matar o Adobe Reader… pelo menos na minha máquina.</p>
<p>Eu já havia visto algumas soluções de leitores de arquivo PDF, mas nenhuma me agradou, até que ano passado vi que o Foxit melhorou muito! A interface ficou confortável, é verdade que não é parecida com a da última versão do Adobe Reader, mas não se pode ter tudo. Mas o que mais me chama a atenção é a leveza, poxa, é pequeno e muito leve, já usava nas duas últimas empresas e agora instalei aqui em casa, e estou feliz… e leve!! <img src='http://egomesbrandao.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Nesse caso o software livre se mostrou muito superior ao fechado, e nesse caso em específico eu faço propaganda, mate o seu Adobe Reader também!</p>
<p><a title="http://www.foxitsoftware.com/" href="http://www.foxitsoftware.com/">http://www.foxitsoftware.com/</a></div>
]]></content:encoded>
			<wfw:commentRss>http://egomesbrandao.net/blog/2009/07/adobe-reader-posto-adobe-reader-morto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Developer Day 2009</title>
		<link>http://egomesbrandao.net/blog/2009/07/google-developer-day-2009/</link>
		<comments>http://egomesbrandao.net/blog/2009/07/google-developer-day-2009/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 03:00:16 +0000</pubDate>
		<dc:creator>egomesbrandao</dc:creator>
				<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[evento]]></category>
		<category><![CDATA[gdd]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://egomesbrandao.net/blog/?p=8</guid>
		<description><![CDATA[Participei da edição 2009 do Google Developer Day, ou #gdd no Twitter.
Foi um evento de um dia só, o que é uma pena, pois 3 trilhas ocorrem em paralelo e você tem que decidir e sempre acaba perdendo alguma coisa legal. No entanto, o Google tem a política de disponibilizar as filmagens no YouTube, daí [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: helvetica; font-size: medium;">Participei da edição 2009 do Google Developer Day, ou #gdd no Twitter.</span></p>
<p><span style="font-family: helvetica; font-size: medium;">Foi um evento de um dia só, o que é uma pena, pois 3 trilhas ocorrem em paralelo e você tem que decidir e sempre acaba perdendo alguma coisa legal. No entanto, o Google tem a política de disponibilizar as filmagens no YouTube, daí dá pra ver o que perdemos.</span></p>
<p><span style="font-family: helvetica; font-size: medium;">No início da manhã tivemos um Keynote e a apresentação do Google Wave, com Stephanie Hannon e Torsten Nelson, do Google Brasil, que foi muito boa, mas foi mais do mesmo, já que tinha visto o lançamento em vídeo. Quando essa ferramenta estrear acho que vamos ter uma nova revolução na comunicação, no mesmo estilo que o GMail fez. (Adendo: ontem 30/Jun/09, recebi um convite para testar o Wave, depois escrevo sobre ele)</span></p>
<p><span style="font-family: helvetica; font-size: medium;">À tarde escolhi a trilha de mapas, 3 palestras seguidas com Pamela Fox, já que estou trabalhando no uso dessas API’s nada mais natural, e foram muito boas, mas eu ainda sou iniciante nelas, então, não de pra se empolgar muito. O que dá para perceber é que o Google investe muito nessas API’s de mapas. Agora a parte alta foi ouvir a segunda palestra no português arranhado e carregado da Pamela, não tem preço! (Até por quê o evento é gratuito… hehehe)</span></p>
<p><span style="font-family: helvetica; font-size: medium;">As duas últimas palestras que eu vi foram do <a href="http://wordpress.chanezon.com/" target="_blank">Patrick Chanezon</a>, uma sobre Web Social, falando da integração do Open Social do Google com sites, blogs, etc… E a outra sobre HTML 5, que foi um aprofundamento do Keynote que ele fez na parte da manhã. O Chrome e o Firefox já implementam muita coisa do HTML5 e eu quero saber por que a MS fica para trás nesse tipo de coisa.</span></p>
<p><span style="font-family: helvetica; font-size: medium;">Outro ponto, será que o HTML5 derruba Flash, Flex, Silverlight e JavaFX? Alguns levantaram essa bola, o Google deve estar louco para isso já que eles investem pesado em Javascript e não tem um componente RIA como os citados acima. Outros dizem que não, por quê esses plug-ins atingem outras funcionalidades, vamos ver, de camarote.</span></p>
<p><span style="font-family: helvetica; font-size: medium;">Balanço: Muita informação, fiz pouco network, ganhei umas bolinhas do Google, adesivo do GMail, almoço e coffee na faixa, e no fim foi um dia divertido, forcei bastante o inglês, já que me dá nervoso ficar ouvindo a tradução simultânea.</span></p>
<p><span style="font-family: helvetica; font-size: medium;">Fotos do evento estão <a href="http://www.flickr.com/photos/luisleao" target="_blank">aqui</a>. Espero participar ano que vem. </span></p>
]]></content:encoded>
			<wfw:commentRss>http://egomesbrandao.net/blog/2009/07/google-developer-day-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.Net Architects Day 2009</title>
		<link>http://egomesbrandao.net/blog/2009/06/net-architects-day-2009/</link>
		<comments>http://egomesbrandao.net/blog/2009/06/net-architects-day-2009/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 03:00:13 +0000</pubDate>
		<dc:creator>egomesbrandao</dc:creator>
				<category><![CDATA[Sem categoria]]></category>

		<guid isPermaLink="false">http://egomesbrandao.net/blog/?p=6</guid>
		<description><![CDATA[
Pessoal,
O .Net Architects Day 2009 aconteceu, dia 27 de Junho de 2009, na UNIP do Tatuapé! E o feedback que temos recebido é que foi um sucesso!
Foi muito gratificante participar da organização, de ajudar o evento acontecer, de ver os participantes gostando do que foi planejado.
Infelizmente, tínhamos só das 09 às 18:30 de palestras! Mas [...]]]></description>
			<content:encoded><![CDATA[<div>
<p><span style="font-size: medium;"><span style="font-family: helvetica;">Pessoal,</span></span></p>
<p><span style="font-size: medium;"><span style="font-family: helvetica;">O .Net Architects Day 2009 aconteceu, dia 27 de Junho de 2009, na UNIP do Tatuapé! E o feedback que temos recebido é que foi um sucesso!<br />
Foi muito gratificante participar da organização, de ajudar o evento acontecer, de ver os participantes gostando do que foi planejado.</span></span></p>
<p><span style="font-size: medium;"><span style="font-family: helvetica;">Infelizmente, tínhamos só das 09 às 18:30 de palestras! Mas acho que vários ficariam mais tempo. Durante o coffee, participantes trocaram idéias com os palestrantes, e eu pude, juntamente com o Daniel Fonseca, colher alguns depoimentos que logo serão compilados em um clip e disponibilizados.</span></span></p>
<p><span style="font-size: medium;"><span style="font-family: helvetica;">O Fabio Margarito fez um post e disponibilizou algumas fotos <a href="http://www.mgrtconsultoria.com/blog/post/Evento-DNAD-2009.aspx" target="_blank">aqui</a>, a Fernanda Sallai, que era participante, postou com feedback e fotos dos brindes que distribuimos <a href="http://www.fernandasallai.com/post/Evento-NET-Architects-Day-2009.aspx">aqui</a>. Conforme o pessoal for postando eu atualizo aqui.</span></span></p>
<p><span style="font-size: medium;"><span style="font-family: helvetica;">No Twitter o pessoal usou a tag <a href="http://twitter.com/#search?q=dnad2009" target="_blank">#dnad2009</a>, veja os comentários.</span></span></p>
<p><span style="font-size: medium;"><span style="font-family: helvetica;">Valeu!</span></span></p>
<p><span style="font-size: medium;"><span style="font-family: helvetica;">E agora acho que vou conseguir me dedicar mais aqui para o blog.</span></span></div>
]]></content:encoded>
			<wfw:commentRss>http://egomesbrandao.net/blog/2009/06/net-architects-day-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Olá mundo&#8230; ou melhor: Hello, World! de novo&#8230;</title>
		<link>http://egomesbrandao.net/blog/2009/06/3/</link>
		<comments>http://egomesbrandao.net/blog/2009/06/3/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 03:00:27 +0000</pubDate>
		<dc:creator>egomesbrandao</dc:creator>
				<category><![CDATA[Sem categoria]]></category>

		<guid isPermaLink="false">http://egomesbrandao.net/blog/?p=3</guid>
		<description><![CDATA[
Olá, pessoal!
Estou completamente na Web agora, com domínio próprio, blog com engine em .Net, etc&#8230;
A necessidade do domínio surgiu por conta de novos projetos pessoais que eu estou desenvolvendo, o famoso projeto de garagem, mas que está ganhando forma e este ano vai sair da cabeça para o papel, ou melhor, para o mundo virtiual.
Também [...]]]></description>
			<content:encoded><![CDATA[<div>
<p><span style="font-size: medium;"><span style="font-family: helvetica;">Olá, pessoal!</span></span></p>
<p><span style="font-size: medium;"><span style="font-family: helvetica;">Estou completamente na Web agora, com domínio próprio, <a href="http://blogengine.codeplex.com/">blog com engine em .Net</a>, etc&#8230;</span></span></p>
<p><span style="font-size: medium;"><span style="font-family: helvetica;">A necessidade do domínio surgiu por conta de novos projetos pessoais que eu estou desenvolvendo, o famoso projeto de garagem, mas que está ganhando forma e este ano vai sair da cabeça para o papel, ou melhor, para o mundo virtiual.</span></span></p>
<p><span style="font-size: medium;"><span style="font-family: helvetica;">Também vou usar o domínio para hospedar esse blog que eu vinha desenvolvendo no <a href="http://egomesbrandao.blogspot.com/">egomesbrandao.blogspot.com</a>, espero que eu aumente a frequência de postagem. Assim continuo também com o projeto que eu vinha desenvolvendo no CodePlex, e que seguia os posts do blog anterior, esse aqui: <a title="ABC2008" href="http://abc2008.codeplex.com/">ABC2008</a> Tem um outro também, mas divulgo depois.</span></span></p>
<p><span style="font-size: medium;"><span style="font-family: helvetica;">Quanto ao meu projeto de garagem, espero em breve fazer um anúncio dele por aqui.</span></span></p>
<p><span style="font-size: medium;"><span style="font-family: helvetica;">[]&#8217;s</span></span></div>
]]></content:encoded>
			<wfw:commentRss>http://egomesbrandao.net/blog/2009/06/3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
