<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-24355819</id><updated>2011-11-13T19:32:31.909-02:00</updated><category term='Reflexão'/><category term='DotNet Nuke'/><category term='Dicas'/><category term='Opensource'/><category term='Javascript'/><category term='Linux'/><category term='Atualidades'/><category term='Lua'/><category term='Mono'/><category term='Asp.Net MVC'/><category term='ASP.Net'/><category term='Certificacao'/><category term='Design Patterns'/><category term='.NET'/><title type='text'>Rodrigo Macedo</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>34</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-24355819.post-6279081937108953733</id><published>2009-09-05T19:19:00.003-03:00</published><updated>2009-10-04T18:53:18.062-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Opensource'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Introdução ao Projeto Mono</title><content type='html'>Mono é um projeto open-source liderado pela Novell e pela comunidade cujo objetivo é levar à distribuições Linux, a plataforma .Net. Apesar de o grande foco ser o ambiente em Linux, o Mono também possui plataformas no próprio Microsoft Windows, Mac OS X, BSD, and Sun Solaris, Nintendo Wii, Sony PlayStation 3 e Apple iPhone.  &lt;br /&gt; &lt;br /&gt;O objetivo do Mono é possibilitar que aplicações.NET, criadas em ambiente Windows , possam ser levadas a plataformas não - Microsoft, com poucos ajustes de código. Além de possibilitar cross-plataform, também pode-se escrever no Linux, com ferramentas específicas, como um compilador próprio para o ambiente, e uma IDE chamada MonoDeveloper. Enquanto o MonoDevelop oferece um caminho para se programar no Linux, os desenvolvedores para Windows tendem a abraçar o Visual Studio, apesar de haver soluções livres como o SharpDeveloper.&lt;br /&gt;&lt;br /&gt;Mono tem permitido que desenvolvedores .NET possam também criar aplicações em ambientes Windows desde 2004, e há n projetos sobre a plataforma, inclusive o Wikipedia, que utiliza .NET na engine de procura/indexação de páginas, rodando sobre Mono. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Aceitação da Comunidade Linux&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Quem me conhece, sabe o que eu penso sobre tecnologia: não é religião, ou time de futebol, embora não tenha ambos. São apenas ferramentas. Ferramentas que devem ser utilizadas de acordo com necessidades.  Mesmo assim, há pessoas que encaram isso como uma filosofia de vida, o que não considero lá a pior das tristezas, mas é ruim que se deixa de aproveitar muita coisa boa, por um motivo aparentemente revolucionário.  Acompanhe o texto abaixo: &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;“Every line of code that is written to our standards is a small victory; every line of code that is written to any other standard, is a small defeat. Total victory [...] is the universal adoption of our standards by developers, as this is an important step towards total victory for Microsoft itself: “A computer on every desk and in every home, running Microsoft software.”"&lt;br /&gt;–Microsoft, internal document&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;fonte: http://boycottnovell.com/2009/01/22/mono-excludes-gnu-linux/&lt;br /&gt;&lt;br /&gt;Isso realmente soa uma ameaça? Sinceramente, para mim não... mas alguns consideram textos como esse como uma verdadeira ameaça à liberdade, e a fonte de toda miséria humana. Se fosse da antiga Sun/Borland, imagino que a repercussão seria diferente. &lt;br /&gt;&lt;br /&gt;Inclusive, eu convido algum espírito livre, a me informar os reais motivos para banir o Mono do Linux, com base no respeito, logicamente. Esse como outros movimentos “livres” (pois é, livres de que?) que apóiam isso. Mas, grupos como esses já são discriminados internamente.   &lt;br /&gt;Ferramentas&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. MonoDevelop&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nascida em 2003, feita por alguns desenvolvedores da comunidade Mono, com o objetivo de levar o SharpDeveloper para ambientes não-Windows, o MonoDevelop é uma IDE gratuita e open-source projetada para usar qualquer linguagem .NET disponível até o framework 3.0 (como C#, VB.NET, Boo, Nemerle) e Java (pelo IKVM.NET,  que é a implementação de Java , que é interpretado pela runtime do Mono).  Também há outros projetos, como PHP4Mono, que traduz a linguagem PHP, para a CIL (Common Intermediate Language). &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Migration Analyzer (MoMA)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O Mono Migration Analyzer (MoMA) é uma ferramenta que identifica potenciais problemas que você pode ter portanto sua aplicação para o Mono. Identifica, por exemplo, uso de recursos de P/Invoke, que é específico do Windows, e outras áreas não suportadas pelo Mono. &lt;br /&gt;&lt;br /&gt;Vamos para melhor parte do artigo, vamos construir uma aplicação em c# e rodá-lo no Linux, usando o Mono. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1) Criando uma Console Application&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; Clique em Arquivo, New Solution, ou se preferir (CTRL + SHIFT + N) (essa atalho também funciona no Visual Studio). A IDE nos facilitou muito trabalho, afinal de contas. Já temos um código com o nada-usual “Hello World”. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2) Criando uma Aplicação com Interface (baseado em WinForm)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  Vá em  “Adicione um Container à interface”. Este container é um agrupador de objetos. &lt;br /&gt;Instancie uma Label e uma Textbox. Na janela de Propriedades, modifique as propriedades “Rótulo” e “Nome do Widget” do objeto para “uxlblNome” e “Nome:” da Label, e para o Textbox, as propriedades Name e Nome do Widget para “uxtxtNome”. &lt;br /&gt;&lt;br /&gt; Para programar o evento de clique do botão, vá para aba Signals, vá em “Button Signals”. Clique duas vezes no evento Clicked. Automaticamente, o método será criado no Codebehind, e associado o evento do botão ao método. Feito isso, retorne para o code-behind e escreva o seguinte código. Recompile.  Escreva no evento do botão, o código abaixo:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; protected virtual void OnUxbtnOkClicked (object sender, System.EventArgs e) &lt;br /&gt; { &lt;br /&gt; uxlblResultado.Text = this.uxtxtNome.Text + ", seja bem vindo ao projeto Mono"; &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;Execute a aplicação apertando F5.&lt;br /&gt;&lt;br /&gt; Pronto, terminamos uma aplicação simples em C# e rodamos no Linux. O que eu quero enfatizar aqui, é a facilidade de utilizar o Mono. Há algumas facilidades  “herdadas” do Visual Studio, o que facilita muito um desenvolvedor trabalhar com o MonoDeveloper.&lt;br /&gt;&lt;br /&gt;Para finalizar este artigo, estou utilizando Ubuntu como Sistema Operacional e OpenOffice como editor de Texto, ambos sistemas open-source. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Referências&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;http://en.wikipedia.org/wiki/MonoDevelop&lt;br /&gt;http://mono-project.com/Mono_Basics&lt;br /&gt;http://www.vivaolinux.com.br/artigo/Mono-Por-que-usalo?pagina=2&lt;br /&gt;http://www.vivaolinux.com.br/artigo/Mono-e-C-%28parte-1%29/&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-6279081937108953733?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/6279081937108953733/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=6279081937108953733' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/6279081937108953733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/6279081937108953733'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/09/introducao-ao-projeto-mono.html' title='Introdução ao Projeto Mono'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-5191199071542974544</id><published>2009-08-27T23:28:00.002-03:00</published><updated>2009-08-27T23:31:47.972-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Opensource'/><title type='text'>Dev in Rio</title><content type='html'>&lt;img src="http://dojorio.files.wordpress.com/2009/08/2009-08-21_dev_in_rio_2009.jpg?w=197&amp;h=197"&gt;&lt;br /&gt;&lt;br /&gt;O evento acontecerá no próximo dia 14 de setembro no Centro de Convenções SulAmérica, no Rio de Janeiro!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Evento sobre sobre Métodos Ágeis, Ruby e Ruby on Rails, Python, Java, Django, Open Source, Joomla!, com a participação de nomes como Vinícius Manhães Teles, Guilherme Silveira, Fabio Akita, Jacob Kaplan-Moss, Ryan Ozimek entre outros.&lt;br /&gt;&lt;br /&gt;Mais informações: &lt;a href="http://www.devinrio.com.br/" target="asd"&gt; http://www.devinrio.com.br/ &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-5191199071542974544?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/5191199071542974544/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=5191199071542974544' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/5191199071542974544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/5191199071542974544'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/08/dev-in-rio.html' title='Dev in Rio'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-5493471119239011361</id><published>2009-08-15T21:07:00.002-03:00</published><updated>2009-08-15T21:14:39.707-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><title type='text'>Função Javascript para Reload em um intervalo de Tempo.</title><content type='html'>Este artigo mostra como atualizar uma página, de tempos em tempos&lt;br /&gt;por javascript e como manipular este objeto de tempo no evento de um botão. Ou se você preferir, no OnClick de qualquer objeto HTML.&lt;br /&gt;&lt;br /&gt;Usei um algoritmo parecido para resolver uma questão de uma funcionalidade do sistema em que atualmente trabalho. Como não encontrei muita coisa na internet de como fazer isso especificamente, resolvi postar aqui. &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;    &amp;lt;script language="javascript"&amp;gt;&lt;br /&gt;        // Variável global do objeto temporizador.&lt;br /&gt;        var timer;&lt;br /&gt;&lt;br /&gt;        function parar() { &lt;br /&gt;          window.clearTimeout(this.timer);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        function comecarReload() {&lt;br /&gt;         timer = window.setTimeout("location.reload()", 700);&lt;br /&gt;        }&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body onload="comecarReload();"&amp;gt;&lt;br /&gt;    &amp;lt;input type="button" onclick="comecarReload();" value="Iniciar Reloads" /&amp;gt;&lt;br /&gt;    &amp;lt;input type="button" onclick="parar();" value="Parar" /&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Espero que possa ser útil. Abraços.&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-5493471119239011361?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/5493471119239011361/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=5493471119239011361' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/5493471119239011361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/5493471119239011361'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/08/funcao-javascript-para-reload-em-um.html' title='Função Javascript para Reload em um intervalo de Tempo.'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-3918478002938377127</id><published>2009-07-26T13:46:00.001-03:00</published><updated>2009-07-26T13:49:50.009-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNet Nuke'/><title type='text'>DOT NET NUKE (.NET NUKE)</title><content type='html'>No momento estou pensando em utilizar um CMS (Content Management System) para uma aplicação pessoal. Investiguei na internet alguns casos de sucesso do DotNetNuke, e no site do projeto encontrei alguns casos nacionais como Musical Carioca e GAP RJ.&lt;p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;/span&gt;Para quem não conhece, o DotNetNuke é uma iniciativa open source de Content Management Framework, baseado em tecnologia .NET. É um framework desenvolvido em VB.NET, e atualmente se encontra na versão 5.1. Provavelmente vou usá-lo.&lt;br /&gt;&lt;center&gt;&lt;img src="http://www.dotnetnuke.com/Portals/_default/Skins/Ultimo/images/DotNetNuke-Logo.gif" /&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-3918478002938377127?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/3918478002938377127/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=3918478002938377127' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/3918478002938377127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/3918478002938377127'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/07/dot-net-nuke-net-nuke.html' title='DOT NET NUKE (.NET NUKE)'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-6946615091248254883</id><published>2009-07-25T18:51:00.004-03:00</published><updated>2009-07-25T19:04:30.535-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Atualidades'/><title type='text'>Microsoft abre o código do Windows 7 para fabricantes de computadores</title><content type='html'>A Microsoft se pronunciou na última quarta,  afirmando que irá abrir o código do Windows 7 para os fabricantes de computadores. Isso pode trazer alguns benefícios interessantes, como hardwares específicos que interagem com o sistema e implementação de drivers de modo mais seguro.&lt;br /&gt;&lt;br /&gt;Atualmente, o Windows 7 está na versão release candidate. O release final está previsto para o dia 22 de outubro.&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-6946615091248254883?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/6946615091248254883/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=6946615091248254883' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/6946615091248254883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/6946615091248254883'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/07/microsoft-abre-o-codigo-do-windows-7.html' title='Microsoft abre o código do Windows 7 para fabricantes de computadores'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-823857385400176893</id><published>2009-07-25T17:10:00.003-03:00</published><updated>2009-07-25T17:26:44.305-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lua'/><title type='text'>Workshop Lua - Rio de Janeiro</title><content type='html'>&lt;img style="width: 167px; height: 166px;" src="http://members.gamedev.net/gdunbar/blog/2009_06_26/lua.gif" align="right" /&gt;&lt;br /&gt;O Lua Workshop 2009 será realizado na PUC-Rio nos dias 6 e 7 de outubro de 2009, antecedendo o &lt;a href="http://usuarios.rdc.puc-rio.br/sbgames/09/"&gt;SBGames 2009&lt;/a&gt; e o &lt;a href="http://www.matmidia.mat.puc-rio.br/sibgrapi2009/"&gt;SIBGRAPI 2009&lt;/a&gt;. As atividades do dia 7 serão dedicadas ao uso de Lua em jogos e farão parte do Lua Games 2009, um pré-evento do SBGames 2009. &lt;p&gt;&lt;/p&gt;&lt;p&gt;  O workshop é aberto a todas as pessoas interessadas em Lua. Como há limite de espaço, é pedido &lt;span style="text-decoration: underline;"&gt;a &lt;/span&gt;&lt;a href="http://www.lua.org/wshop09.html#inscricao"&gt;pré-inscrição&lt;/a&gt; pelo link ao lado.&lt;/p&gt;&lt;p&gt;Infelizmente não poderei ir, apesar de trabalhar do lado da Gávea. O workshop cai bem no meu horário comercial. Imagino que não devo ser o único com esse problema. O time do Lua poderia ter trabalhado nisso, mas creio que eles devem ter um bom motivo para o evento bem no meio da semana.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Engraçado é que esses dias, eu vi com um amigo, um exemplo de um sistema em c# que consumia classes do LUA e a possibilidade de integrá-lo com um sistema que nós estamos construindo.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Também fiz contato com a equipe de organização sugerindo a gravação a reunião (ou parte dela). Seria interessante para divulgar a linguagem, que apesar de estar desde 1993 (se não me engano) não tem sua visibilidade merecida.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-823857385400176893?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/823857385400176893/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=823857385400176893' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/823857385400176893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/823857385400176893'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/07/workshop-lua-rio-de-janeiro.html' title='Workshop Lua - Rio de Janeiro'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-3574318912341920151</id><published>2009-07-22T23:31:00.000-03:00</published><updated>2009-07-22T23:32:30.065-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Atualidades'/><title type='text'>Uma Microsof 2.0 - Constribuição da Microsoft para o Kernel do Linux</title><content type='html'>Além de termos conhecimento de projetos open-source/livres como o ASP.NET MVC, Sandcastle, e mais especificamente, o projeto Mono, que é liderado pela Novell e apoiado pela Microsoft, é a primeira vez que a Microsoft desenvolve diretamente para o kernel do Linux. No dia 20 de Julho de 2009, a Microsoft anuncia sua contribuição a comunidade Linux.&lt;br /&gt;&lt;br /&gt;Sobre licensa GPL, foram liberados mais 20.000 linhas de código. Mas o código apenas favorece aos interesses da própria Microsoft. A contribuição visa melhorar a performance do Hyper V, que é a plataforma de virtualização da Microsoft. Definitivamente, a Microsoft tem olhado com outros olhos a tecnologia que há em sua volta, finalmente. O que é muito bom para nós, tanto para os entusiastas de Linux quanto os usuários de Windows, pois nos acrescenta mais um item em nossa caixa de ferramentas.&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-3574318912341920151?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/3574318912341920151/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=3574318912341920151' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/3574318912341920151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/3574318912341920151'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/07/uma-microsof-20-constribuicao-da.html' title='Uma Microsof 2.0 - Constribuição da Microsoft para o Kernel do Linux'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-8794744448892303153</id><published>2009-06-28T20:01:00.004-03:00</published><updated>2009-07-19T11:55:52.414-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Asp.Net MVC'/><title type='text'>ASP.NET MVC</title><content type='html'>Ultimamente, estou tentando encontrar tempo pra estudar a fundo o asp.net mvc. Eu ando meio enrolado estudando métodos ageis, sobretudo XP e SCRUM. Mas peguei alguns livros pra me guiar no estudo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FZdBqp4CC1M/Skf2noKt13I/AAAAAAAAAWc/V8nOwWX9i-g/s1600-h/image.axd.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 190px; height: 240px;" src="http://1.bp.blogspot.com/_FZdBqp4CC1M/Skf2noKt13I/AAAAAAAAAWc/V8nOwWX9i-g/s320/image.axd.png" alt="" id="BLOGGER_PHOTO_ID_5352517842810820466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;O que estou lendo neste momento é o Professional ASP.NET MVC 1.0. Foi feito pela própria equipe do framework, e pelo que consegui acompanhar me parece ser bastante didático e conciso.&lt;br /&gt;&lt;br /&gt;O primeiro capitulo do livro pode ser encontrado gratuitamente &lt;a href="http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc-nerdinner_v1.pdf" target="a"&gt;aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Ele mostra um tutorial passo-a-passo de como criar uma aplicação completa sobre o framework utilizando a separação de camadas proposta.&lt;br /&gt;&lt;br /&gt;Boa leitura.&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-8794744448892303153?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/8794744448892303153/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=8794744448892303153' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/8794744448892303153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/8794744448892303153'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/06/aspnet-mvc.html' title='ASP.NET MVC'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_FZdBqp4CC1M/Skf2noKt13I/AAAAAAAAAWc/V8nOwWX9i-g/s72-c/image.axd.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-4498529048264985310</id><published>2009-06-26T21:13:00.003-03:00</published><updated>2009-06-26T21:17:23.070-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reflexão'/><title type='text'>A Imortalidade</title><content type='html'>&lt;center&gt;&lt;img style="width: 187px; height: 144px;" src="http://documentotupiniquim.com/wp-content/uploads/2008/01/morte.jpg" /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Pois é... outro dos nossos se vai hoje. A morte é um dos grandes erros da vida... daí eu vos pergunto: já não era hora de termos vencido?&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-4498529048264985310?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/4498529048264985310/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=4498529048264985310' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/4498529048264985310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/4498529048264985310'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/06/imortalidade.html' title='A Imortalidade'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-7186038571101743496</id><published>2009-06-21T02:16:00.010-03:00</published><updated>2009-06-21T12:04:44.182-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Certificacao'/><title type='text'>Visão Geral da 70-528</title><content type='html'>Bom, meu nome é Rodrigo Macedo, e neste tópico falarei de maneira breve sobre o exame 70-528. Pretendo dar algumas dicas para aqueles que estão se preparando para a prova.  &lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://chrisfulstow.com/images/mcts.png" border="0" /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. Visão do Exame&lt;/span&gt;&lt;br /&gt;São 45 questões que você deve responder em até 2h30min. Você pode escolher uma linguagem, entre C# e Visual Basic que ficará no code-behind das questões. Caso esta avaliação sendo seu primeiro exame, você ganha o título de MCP (Microsoft Certified Professional). Com o exame 70-536 (Fundamentos), você adquire o título de MCTS (Microsoft Tecnology Specialist) em ASP.NET. As questões baseiam-se nos tópicos abaixo:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Desenvolver e publicar uma aplicação web &lt;br /&gt;&lt;li&gt;Integrar dados em uma aplicação web utilizando ADO.NET, XML, e Data-Bound Controls &lt;br /&gt;&lt;li&gt;Desenvolver controles Web personalizados &lt;br /&gt;&lt;li&gt;Monitorar, configurar e instalar aplicações &lt;br /&gt;&lt;li&gt;Customizar e personalizar uma aplicação web &lt;br /&gt;&lt;li&gt;Implementar autenticação e autorização em uma aplicação web &lt;br /&gt;&lt;li&gt;Desenvolver aplicações web ASP.NET móveis&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Para agendar o exame, você deve ir ao site da Prometric (http://www.prometric.com). É um site de baixa acessibilidade, infelizmente, mas é o único caminho que você tem para conseguir o voucher. A prova custa em torno do $80. Periodicamente, a Microsoft fornece o Second Shot, que é a possibilidade de refazer o teste caso não passe, gratuitamente. Como não é regular, caso tenha interesse é necessário visitar com frequencia o site da Microsoft para saber se a promoção é válida.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Guia de Estudo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Eu aconselho utilizar o Training Kit do exame 70-528 e a biblioteca do MSDN. Ao estudar, tenha em mente, fixar os conceitos e as classes que participam do contexto.&lt;br /&gt;Claro que como tudo na vida, há mais de uma maneira de se realizar algo, mas tenha foco nas melhores práticas, no menor esforço e na melhor legibilidade de código. Reserve algum tempo para ler e reproduzir exemplos de artigos de internet. Há alguns bem esclarecedores. São úteis porque muitas vezes não compreendemos muito bem determinado assunto, ou por falta de prática ou por não entender como o autor discutiu determinado conceito, daí é fundamental o interesse e iniciativa de buscar novas fontes de estudo. Um dos sites que complementou meus estudos foi o ASpnet Tutorials (http://www.aspnettutorials.com/). Ele possui um bom material e recomendo a consulta.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. Sobre a prova&lt;/span&gt;&lt;br /&gt;Conteúdo suspenso.&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-7186038571101743496?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/7186038571101743496/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=7186038571101743496' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/7186038571101743496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/7186038571101743496'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/06/visao-geral-da-70-528.html' title='Visão Geral da 70-528'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-4852434459765057295</id><published>2009-05-23T02:56:00.003-03:00</published><updated>2009-05-23T11:58:22.101-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reflexão'/><title type='text'>Comunidade .Net é insular?</title><content type='html'>Hoje, li uma discursão no grupo .Net Architects que me chamou muito atenção. Foi uma discursão sobre a comunidade de desenvolvedores Microsoft, iniciado pelo meu xará Rodrigo Vieira. O título era: A Comunidade .net&lt;br /&gt;&lt;br /&gt;Segundo o dictionary.com:&lt;br /&gt;&lt;pre&gt;&lt;font size="1" face="arial"&gt;In-su-lar&lt;br /&gt;&lt;br /&gt;–adjective&lt;br /&gt;1.     of or pertaining to an island or islands: insular possessions.&lt;br /&gt;2.     dwelling or situated on an island.&lt;br /&gt;3.     forming an island: insular rocks.&lt;br /&gt;4.     detached; standing alone; isolated.&lt;br /&gt;5.     of, pertaining to, or characteristic of islanders.&lt;br /&gt;6.     narrow-minded or illiberal; provincial: insular attitudes toward foreigners.&lt;br /&gt;7.     Pathology. occurring in or characterized by one or more isolated spots, patches, or the like.&lt;br /&gt;8.     Anatomy. pertaining to an island of cells or tissue, as the islets of Langerhans.&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Desde quando iniciei minha carreira, venho acompanhando os desenvolvedores Microsoft, e posso afirmar que há uma cultura de isolar o que não é Microsoft, simplesmente porque não herda o Nome. Isso significa: ignorar cegamente todos os projetos open-sources, deificando apenas tecnologias Microsoft  e criticando sem fundamentos outras linguagens. Mas a questão é: que tipo de profissional nos tornamos com esse tipo de comportamento?&lt;br /&gt;&lt;br /&gt;Este cenário não é apenas do nosso país. Acabamos por dividir as tecnologias, e por conseqüência adaptar nosso estilo de vida para acomodar uma plataforma. De um lado, linguagens como Python, Ruby, bancos como MySql, e do outro a Microsoft, sozinha. Ao invés de termos a tecnologia como uma ferramenta, nós deixamos que a tecnologia nos escravizasse. Diariamente, encontro profissionais que se limitam e recriminam outros por usar o Firefox ou o Opera como navegador principal ao invés do Internet Explorer.&lt;br /&gt;&lt;br /&gt;Antes de trabalhar com .Net, passei por algumas linguagens como Java, Delphi e etc. Antes de começar na plataforma, eu senti um certo preconceito. Porque há preconceito do outro lado. E posso adivinhar o porquê.  Há um problema cultural em comunidades de tecnologia, não só em .Net, mas nas comunidades Java, Ruby, Boo. Cada grupo, por conveniência, levanta a bandeira da própria linguagem, e conseqüência, os produtos que os criadores da linguagem apóiam/criam. Há um certo “companheirismo” entre grupos não vinculados a Microsoft, pois há um certo modismo em ser contra a Microsoft. Não creio que toda resistência contra o Windows seja simplesmente porque os requisitos do SO não atendam esses usuários especiais ou porque o código simplesmente é uma caixa-preta para usuários comuns, mas claro, há sim quem use o Linux e goste. Eu sou um deles também.&lt;br /&gt;&lt;br /&gt;Não acho sustentável como profissional de tecnologia tal tipo de postura. Além de me cheirar como fanatismo religioso de pior espécie, isso impede o crescimento e compacta a visão do profissional.  Conhecer mais a fundo um framework específico de Java, por exemplo, pode trazer novas idéias e implementações. Um bom exemplo é o caso do Log4N e o NHibernate, que surgiram primeiro no Java, e vieram pra .Net com apoio da comunidade. Em falar em Hibernate, o surgimento de ferramentas ORM da Microsoft vieram como uma verdadeira novidade. Eu inclusive lembro-me de um artigo cujo autor trata o release como uma verdadeira revolução, um acontecimento inédito da história, sendo que isso já existe há anos em outras plataformas, e inclusive já disponível ao .net, mantido pela nata mais ativa da comunidade Microsoft.&lt;br /&gt;&lt;br /&gt;Pode parecer absurdo, mas já vi gente comemorando até quando o servidor do Google cai.&lt;br /&gt;&lt;br /&gt;O que é fato, é que a Microsoft vêm acompanhando outras tecnologias de perto, e a maior prova disso é o release do framework MVC logo após do boom do Ruby on Rails, que é inteiramente MVC. Outro bom exemplo é que a Microsoft usa Java Applet na transmissão ao vivo de webcast pelo navegador, e Adobe Flash, ao invés do Silverlight, em algumas páginas comerciais. Isso demonstra alguma fraqueza? Absolutamente não. Demonstra maturidade por parte dos líderes, pois nem a Microsoft se fecha em sua própria tecnologia.&lt;br /&gt;&lt;br /&gt;Devemos questionar a postura cômoda de estudar apenas uma tecnologia, e estudar mais de uma. Mesmo que seja o NAint, o NHibernate próprios para uso do Framework. O .Net Architects, que é uma comunidade .Net para arquitetos, propôs uma discursão sobre Ruby on Rails. Isso os fez menos capazes? Eles migraram seus sistemas para RoR? Muito provavelmente não. Mas agora possuem conhecimento e prática de um novo framework. E isso pode ser aproveitado.&lt;br /&gt;&lt;br /&gt;Precisamos limpar nossas mentes para aprender dos dois lados. Mesmo que não planejamos implementar em tal linguagem, porque não estudá-la simplesmente para conhecê-la? O Python, por exemplo, vem sendo discutido e sendo amplamente usado em diversos setores e industrias, inclusive pela própria NASA e pelo Google, e pelo que li até agora, é digna de uma atenção especial. Como um profissional .net, continuo estudando o framework e as novidades que vem surgindo, afinal é a linguagem que eu escolhi. Mas isso não impede que eu descontinue minha curiosidade.&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-4852434459765057295?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/4852434459765057295/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=4852434459765057295' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/4852434459765057295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/4852434459765057295'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/05/comunidade-net-e-insular.html' title='Comunidade .Net é insular?'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-3580510004868609092</id><published>2009-05-17T11:22:00.003-03:00</published><updated>2009-05-17T11:47:33.294-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><title type='text'>Número de série de celulares</title><content type='html'>&lt;center&gt;&lt;img style="width: 214px; height: 193px;" src="http://simultanea.files.wordpress.com/2008/03/celular-e-cadeado.jpg?w=1365&amp;amp;h=1393" /&gt;&lt;/center&gt;&lt;br /&gt;Todo aparelho celular possui um número serial de 15 algarismos. Para descobrir o número, digite *#06#. Escreva este número e o guarde. Caso seu aparelho seja furtado, você pode telefonar para operadora e informar este código. O seu celular será completamente bloqueado, mesmo que troquem o cartão SIM.&lt;br /&gt;&lt;br /&gt;Isso invalida o aparelho, reduzindo o valor do aparelho, que poderá ser comercializado apenas algumas peças. &lt;span style="font-weight: bold;"&gt;Se todos tomassem essa precaução, o roubo de celulares seria inútil.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-3580510004868609092?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/3580510004868609092/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=3580510004868609092' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/3580510004868609092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/3580510004868609092'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/05/numero-de-serie-de-celulares.html' title='Número de série de celulares'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-3282032932530802993</id><published>2009-05-01T16:04:00.010-03:00</published><updated>2009-05-01T16:41:59.356-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><title type='text'>Como dinamicamente traduzir uma Página Web em ASP.NET</title><content type='html'>Com a globalização, nossas aplicações, além de fazerem o usual impossível, devem estar preparadas para serem multi-linguagem. Isso significa, que um cliente deve acessar sua aplicação na língua familiar. Como muitos de nós, várias soluções a esses problemas foram dadas. Poderíamos, simplesmente, colocar diversos campos no banco de dados e consumir de acordo com a língua, mas sabemos que isso, além de uma solução não muito simples (leia MANUTENÇÃO) não é a mais agradável.&lt;br /&gt;&lt;br /&gt;No ASP.NET, temos o conceito de LocalResources, que são arquivos em formatação XML, que armazenam valores-chaves. Dessa forma, podemos sem muito esforço, abstrair a interface de usuário dos textos exibidos. Isso nos dá flexibilidade linguistica, uma vez que podemos ter uma aplicação que suporte mais de uma língua, sem criar diretamente um único trecho de código.&lt;br /&gt;&lt;br /&gt;Para exemplificar, criei uma aplicação com as seguintes itens:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FZdBqp4CC1M/SftIqfziCaI/AAAAAAAAAV8/Dm2s_AccOcw/s1600-h/aplicacaoTeste.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 454px; height: 130px;" src="http://1.bp.blogspot.com/_FZdBqp4CC1M/SftIqfziCaI/AAAAAAAAAV8/Dm2s_AccOcw/s320/aplicacaoTeste.JPG" alt="" id="BLOGGER_PHOTO_ID_5330934478852458914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Neste momento com a página renderizada, eu tenho duas formas de criar o LocalResource. A primeira forma, é criar o elemento XML , ou utilizando o notepad, ou a interface do VS para criação de LocalResources. A segunda é deixar que a IDE faça o trabalho. Naturalmente, preferi a segunda opção. Na página, vá em Tools -&gt; Generate Local Resource.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FZdBqp4CC1M/SftJkMZlafI/AAAAAAAAAWE/Zyxkr5Mz81A/s1600-h/generateLocalResource.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 195px;" src="http://3.bp.blogspot.com/_FZdBqp4CC1M/SftJkMZlafI/AAAAAAAAAWE/Zyxkr5Mz81A/s320/generateLocalResource.JPG" alt="" id="BLOGGER_PHOTO_ID_5330935470075767282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Com isso, temos um dicionário de chave/valor. Neste momento, nossa página ASPX possui a referência a este arquivo XML. Agora, nossa aplicação web possui uma lingua-padrão porém independe da camada de interface para textos. Estamos no caminho certo. Para suportar mais de uma língua, copie o arquivo gerado e entitule-o como "(&lt;span style="font-style: italic;"&gt;nomedaPagina&lt;/span&gt;).aspx.en-US.resx". Altere os valores que estão em português para o idioma.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FZdBqp4CC1M/SftMMtPMJ_I/AAAAAAAAAWM/IxBCcGVZ7nY/s1600-h/solutionExplorer.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 260px; height: 142px;" src="http://4.bp.blogspot.com/_FZdBqp4CC1M/SftMMtPMJ_I/AAAAAAAAAWM/IxBCcGVZ7nY/s320/solutionExplorer.JPG" alt="" id="BLOGGER_PHOTO_ID_5330938365108561906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Provavelmente, sua aplicação está em português. Isso deve-se a personalização do seu navegador. Para alterar o idioma de preferência, vá &lt;span style="font-weight: bold;"&gt;Languages &lt;/span&gt;e adicione a linguagem "English-en-US". E mude a posição de modo que o idioma inglês fique como prioridade. Salve, e execute a página novamente.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FZdBqp4CC1M/SftQbfHaPeI/AAAAAAAAAWU/AxI3hpXMajQ/s1600-h/resultAspNetPage.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 148px;" src="http://1.bp.blogspot.com/_FZdBqp4CC1M/SftQbfHaPeI/AAAAAAAAAWU/AxI3hpXMajQ/s320/resultAspNetPage.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5330943017062383074" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Agora, sua página está preparada para falar em outras línguas e dar boas vindas (mesmo que atrasadas) ao mundo globalizado.&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-3282032932530802993?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/3282032932530802993/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=3282032932530802993' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/3282032932530802993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/3282032932530802993'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/05/como-dinamicamente-traduzir-uma-pagina.html' title='Como dinamicamente traduzir uma Página Web em ASP.NET'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_FZdBqp4CC1M/SftIqfziCaI/AAAAAAAAAV8/Dm2s_AccOcw/s72-c/aplicacaoTeste.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-8375755181468803558</id><published>2009-05-01T14:03:00.010-03:00</published><updated>2009-05-30T14:33:36.832-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><title type='text'>Como debugar Javascript em ASP.NET</title><content type='html'>&lt;img style="width: 168px; height: 155px;" src="http://4.bp.blogspot.com/_FZdBqp4CC1M/Sfsx8AAyLUI/AAAAAAAAAVs/S4aCMEjRp_0/s320/netscape9.jpg" alt="" id="BLOGGER_PHOTO_ID_5330909490788314434" align="right" border="0" /&gt;&lt;br /&gt;Javascript (anteriormente chamado de Livescript) surgiu por volta de 1995 no navegador chamado Netscape, principal concorrente na corrida do monopólio de browsers na época. Hoje em dia, é incomum ver uma aplicação web sem qualquer uso de scripts em Javascript. Hoje irei demostrar como depurar (debugar) uma aplicação em ASP.NET com o Visual Studio 2008. Você pode utilizar a versão 2005 também.&lt;br /&gt;&lt;br /&gt;O Internet Explorer oferece um programa de depuração chamado Microsoft Script Debugger, próprio para depuração de Scripts. Há também um plugin (que é muito bom, diga-se de passagem) para o Mozilla Firefox. Em outro momento, abordaremos como utiliza-lo. Voltando para o Internet Explorer, para torna-lo ativo, você precisa ir em &lt;span style="font-weight: bold;"&gt;Tools&lt;/span&gt; -&gt; &lt;span style="font-weight: bold;"&gt;Internet Options&lt;/span&gt; -&gt;&lt;span style="font-weight: bold;"&gt; Advanced &lt;/span&gt;e desmarcar a opção "Disable Script Debug (Internet Explorer)".&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FZdBqp4CC1M/SfstZ7oCSoI/AAAAAAAAAVk/uqaFox8-qFI/s1600-h/internetexploreroptions.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 187px;" src="http://3.bp.blogspot.com/_FZdBqp4CC1M/SfstZ7oCSoI/AAAAAAAAAVk/uqaFox8-qFI/s320/internetexploreroptions.JPG" alt="" id="BLOGGER_PHOTO_ID_5330904507448707714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;No Javascript, acrescente a palavra "debugger;" no ponto onde você deseja começar a depuração.&lt;br /&gt;&lt;div   style="border: 1px solid black; overflow: scroll; width: 460px; height: 130px; background-color: rgb(255, 250, 250);font-family:Consolas,&amp;quot;;font-size:11px;"&gt;&lt;pre&gt;&amp;lt;script language="JavaScript"&amp;gt;&lt;br /&gt;function resultado() {&lt;br /&gt;&lt;span style="color:red;"&gt; debugger; &lt;/span&gt;&lt;br /&gt;var somaValores = parseFloat(document.all('parcela1').value) + parseFloat(document.all('parcela2').value);&lt;br /&gt;document.all('total').value = eval(somaValores)&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Dessa forma, você conseguirá debugar facilmente seu javascript, sem fazer um "chinês" mental.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FZdBqp4CC1M/Sfs0BJG9xSI/AAAAAAAAAV0/ZQtG4u7O93Y/s1600-h/debuggingjavascript.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 413px; height: 389px;" src="http://3.bp.blogspot.com/_FZdBqp4CC1M/Sfs0BJG9xSI/AAAAAAAAAV0/ZQtG4u7O93Y/s320/debuggingjavascript.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;O exemplo na íntegra se encontra abaixo:&lt;br /&gt;&lt;div style="border: 1px solid black; overflow: scroll; width: 460px; height: 400px; background-color: rgb(255, 250, 250); font-family: Consolas,&amp;quot; Courier New&amp;quot;,Courier,Monospace; font-size: 11px;"&gt;&lt;pre&gt;&amp;lt;%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;&lt;br /&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&lt;br /&gt;&amp;lt;head runat="server"&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;Untitled Page&amp;lt;/title&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script language="JavaScript"&amp;gt;&lt;br /&gt;&lt;br /&gt;function resultado() {&lt;br /&gt;debugger;&lt;br /&gt;var somaValores = parseFloat(document.all('parcela1').value) + parseFloat(document.all('parcela2').value);&lt;br /&gt;document.all('total').value = eval(somaValores)&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;form id="form1" runat="server"&amp;gt;&lt;br /&gt;&amp;lt;div&amp;gt;&lt;br /&gt;   &amp;lt;form name="calc"&amp;gt;&lt;br /&gt;   &amp;lt;input type="text" name="parcela1" size="20" maxlength="30" class="disp"&amp;gt;+&lt;br /&gt;   &amp;lt;input type="text" name="parcela2" size="20" maxlength="30" class="disp"&amp;gt;=&lt;br /&gt;   &amp;lt;input type="text" name="total" size="20" maxlength="30" class="disp"&amp;gt;&lt;br /&gt;   &amp;lt;input type="button" name="closeprth" value="OK" class="btswhite" onclick="resultado()"&amp;gt;&lt;br /&gt;   &amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-8375755181468803558?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/8375755181468803558/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=8375755181468803558' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/8375755181468803558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/8375755181468803558'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/05/como-debugar-javascript-em-aspnet.html' title='Como debugar Javascript em ASP.NET'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FZdBqp4CC1M/Sfsx8AAyLUI/AAAAAAAAAVs/S4aCMEjRp_0/s72-c/netscape9.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-5677766098396493330</id><published>2009-04-21T15:26:00.018-03:00</published><updated>2009-05-30T13:59:44.550-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>Singleton</title><content type='html'>Dar a responsabilidade a uma classe de controlar a própria instância, e fornecer um método de acesso a mesma de forma global. Utilize o padrão quando for necessário apenas uma instância em toda aplicação. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. Diagrama de Classes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 227px; height: 109px;" src="http://4.bp.blogspot.com/_FZdBqp4CC1M/SfscnRxlh-I/AAAAAAAAAVM/BJXEjC5BXM0/s320/singleton.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5330886045034973154" /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Benefícios x Desvantagens&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Controle da instância: possui total controle da instância, já que a mesma controla o processo de instancialização.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. Código&lt;/span&gt;&lt;br /&gt;&lt;div  style="width: 460px; height: 10px;font-family: Consolas, &amp;quot; Courier New&amp;quot;, Courier, Monospace; font-size : 10px;"&gt;&lt;br /&gt;&lt;b&gt;C#&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div  style="width: 460px; height: 400px; overflow: scroll; border: 1px solid black; background-color: #FFFAFA; font-family: Consolas, &amp;quot; Courier New&amp;quot;, Courier, Monospace; font-size : 11px;"&gt;&lt;pre&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Text;&lt;br /&gt;&lt;br /&gt;namespace SingletonTest&lt;br /&gt;{&lt;br /&gt;    class Program&lt;br /&gt;    {&lt;br /&gt;        static void Main(string[] args)&lt;br /&gt;        {&lt;br /&gt;            ServerList serverList = ServerList.GetInstance();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /// &lt;summary&gt;&lt;br /&gt;    /// Singleton&lt;br /&gt;    /// &lt;/summary&gt;&lt;br /&gt;    sealed class ServerList&lt;br /&gt;    {&lt;br /&gt;        private static readonly ServerList _instance = new ServerList();&lt;br /&gt;        private IDictionary&lt;string, string&gt; _serverList = new Dictionary&lt;string, string&gt;();&lt;br /&gt;&lt;br /&gt;        private ServerList()&lt;br /&gt;        {&lt;br /&gt;            PopulateServerList();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        /// &lt;summary&gt;&lt;br /&gt;        /// Popula lista para o exemplo.&lt;br /&gt;        /// &lt;/summary&gt;&lt;br /&gt;        private void PopulateServerList()&lt;br /&gt;        {&lt;br /&gt;            this._serverList.Add("DarthVader", "192.168.0.1");&lt;br /&gt;            this._serverList.Add("Luke Skywalker", "192.168.0.2");&lt;br /&gt;            this._serverList.Add("Obi-wan", "192.168.0.3");&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        /// &lt;summary&gt;&lt;br /&gt;        /// Retorna a instancia de ServerList.&lt;br /&gt;        /// &lt;/summary&gt;&lt;br /&gt;        public static ServerList GetInstance()&lt;br /&gt;        {&lt;br /&gt;            return _instance;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div  style="width: 460px; height: 10px;font-family: Consolas, &amp;quot; Courier New&amp;quot;, Courier, Monospace; font-size : 10px;"&gt;&lt;br /&gt;&lt;b&gt;VB.NET&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div  style="width: 460px; height: 400px; overflow: scroll; border: 1px solid black; background-color: #FFFAFA; font-family: Consolas, &amp;quot; Courier New&amp;quot;, Courier, Monospace; font-size : 11px;"&gt;&lt;pre&gt;&lt;br /&gt;Imports System&lt;br /&gt;Imports System.Collections.Generic&lt;br /&gt;Imports System.Text&lt;br /&gt;&lt;br /&gt;Namespace SingletonTest&lt;br /&gt;    Class Program&lt;br /&gt;        Private Shared Sub Main(ByVal args As String())&lt;br /&gt;            Dim serverList__1 As ServerList = ServerList.GetInstance()&lt;br /&gt;        End Sub&lt;br /&gt;    End Class&lt;br /&gt;    &lt;br /&gt;    ''' &lt;summary&gt;&lt;br /&gt;    ''' Singleton&lt;br /&gt;    ''' &lt;/summary&gt;&lt;br /&gt;    NotInheritable Class ServerList&lt;br /&gt;        Private Shared ReadOnly _instance As New ServerList()&lt;br /&gt;        Private _serverList As IDictionary(Of String, String) = New Dictionary(Of String, String)()&lt;br /&gt;        &lt;br /&gt;        Private Sub New()&lt;br /&gt;            PopulateServerList()&lt;br /&gt;        End Sub&lt;br /&gt;        &lt;br /&gt;        ''' &lt;summary&gt;&lt;br /&gt;        ''' Popula lista para o exemplo.&lt;br /&gt;        ''' &lt;/summary&gt;&lt;br /&gt;        Private Sub PopulateServerList()&lt;br /&gt;            Me._serverList.Add("DarthVader", "192.168.0.1")&lt;br /&gt;            Me._serverList.Add("Luke Skywalker", "192.168.0.2")&lt;br /&gt;            Me._serverList.Add("Obi-wan", "192.168.0.3")&lt;br /&gt;        End Sub&lt;br /&gt;        &lt;br /&gt;        ''' &lt;summary&gt;&lt;br /&gt;        ''' Retorna a instancia de ServerList.&lt;br /&gt;        ''' &lt;/summary&gt;&lt;br /&gt;        Public Shared Function GetInstance() As ServerList&lt;br /&gt;            Return _instance&lt;br /&gt;        End Function&lt;br /&gt;    End Class&lt;br /&gt;End Namespace&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-5677766098396493330?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/5677766098396493330/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=5677766098396493330' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/5677766098396493330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/5677766098396493330'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/04/singleton.html' title='Singleton'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FZdBqp4CC1M/SfscnRxlh-I/AAAAAAAAAVM/BJXEjC5BXM0/s72-c/singleton.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-5132202383982250884</id><published>2009-04-21T15:20:00.005-03:00</published><updated>2009-05-30T14:24:41.922-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>Prototype</title><content type='html'>Especifica os tipos de objetos a serem criados usando uma instância-protótipo e cria novos objetos a partir do mesmo. É recomendado usar este padrão para evitar o crescimento de classes no sistema. &lt;br /&gt;&lt;br /&gt;O Prototype e os padrões fábricas são similares em sua intenção. Ambos são criacionais. A principal diferença entre eles é o modo que são construídos. Nas fábricas, pode-se construir objetos usando os parâmetros de cada vez. Há uma similaridade entre eles. O Prototype, é usado para clonar qualquer objeto dado. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. Diagrama de Classes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FZdBqp4CC1M/SfsgFu8eenI/AAAAAAAAAVU/Bp84IXDfMao/s1600-h/prototype.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 241px;" src="http://2.bp.blogspot.com/_FZdBqp4CC1M/SfsgFu8eenI/AAAAAAAAAVU/Bp84IXDfMao/s320/prototype.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5330889866796235378" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Considerações Importantes&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; Provavelmente, o mais complexo deste padrão é o método clone. Ela pode ser difícil quando a clone faz o uso de referências. Para algumas linguagens mais dinâmicas, como nosso c# ou Java, há uma implementação genérica  por reflection. O nome da técnica usada é shallow clone. Naturalmente, você pode implementar seu próprio método-clone, programaticamente (chama-se deep copy).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. Benefícios x Desvantagens&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Acrescenta e remove produtos em tempo de execução: permite que incorporar uma nova classe concreta apenas registrando uma instância prototype com o cliente, deixando flexível instalar e remover em tempo de execução.&lt;br /&gt;&lt;br /&gt;Reduz o número de subclasses: evita uma explosão de classes, pois permite clonar em vez de criar um novo objeto. Você pode especificar novos objetos a partir da variação da estrutura interna.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4. Código&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div  style="width: 460px; height: 10px; font-family: Consolas, &amp;quot; Courier New&amp;quot;, Courier, Monospace; font-size : 10px;"&gt;&lt;br /&gt;&lt;b&gt;C#&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div  style="width: 460px; height: 400px; overflow: scroll; border: 1px solid black; background-color: #FFFAFA; font-family: Consolas, &amp;quot; Courier New&amp;quot;, Courier, Monospace; font-size : 11px;"&gt;&lt;pre&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Text;&lt;br /&gt;&lt;br /&gt;namespace Prototype&lt;br /&gt;{&lt;br /&gt;    class Program&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;        static void Main(string[] args)&lt;br /&gt;        {&lt;br /&gt;            Prototype p1 = new ConcretePrototype1("ID");&lt;br /&gt;            Prototype c1 = p1.Clone();&lt;br /&gt;            Console.WriteLine("Real: {0} - Clone: {1}", p1.ToString(), c1.ToString());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    public abstract class Prototype&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;        private string _id;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        public string ID&lt;br /&gt;        {&lt;br /&gt;            get { return _id; }&lt;br /&gt;            set { _id = value; }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        public Prototype(string id)&lt;br /&gt;        {&lt;br /&gt;            this.ID = id;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        public override string ToString()&lt;br /&gt;        {&lt;br /&gt;            return ID;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public abstract Prototype Clone();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;    public class ConcretePrototype1 : Prototype&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;        public ConcretePrototype1(string id) :base(id)&lt;br /&gt;        {&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        public override Prototype Clone()&lt;br /&gt;        {&lt;br /&gt;            return (Prototype)this.MemberwiseClone();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    public class ConcretePrototype2 : Prototype&lt;br /&gt;    {&lt;br /&gt;        public ConcretePrototype2(string id) : base(id)&lt;br /&gt;        {&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public override Prototype Clone()&lt;br /&gt;        {&lt;br /&gt;            return (Prototype)this.MemberwiseClone();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div  style="width: 460px; height: 10px; font-family: Consolas, &amp;quot; Courier New&amp;quot;, Courier, Monospace; font-size : 10px;"&gt;&lt;br /&gt;&lt;b&gt;VB.NET&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div  style="width: 460px; height: 400px; overflow: scroll; border: 1px solid black; background-color: #FFFAFA; font-family: Consolas, &amp;quot; Courier New&amp;quot;, Courier, Monospace; font-size : 11px;"&gt;&lt;pre&gt;Imports System&lt;br /&gt;Imports System.Collections.Generic&lt;br /&gt;Imports System.Text&lt;br /&gt;&lt;br /&gt;Namespace Prototype&lt;br /&gt;    Class Program&lt;br /&gt;        &lt;br /&gt;        Private Shared Sub Main(ByVal args As String())&lt;br /&gt;            Dim p1 As Prototype = New ConcretePrototype1("ID")&lt;br /&gt;            Dim c1 As Prototype = p1.Clone()&lt;br /&gt;            Console.WriteLine("Real: {0} - Clone: {1}", p1.ToString(), c1.ToString())&lt;br /&gt;        End Sub&lt;br /&gt;    End Class&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    Public MustInherit Class Prototype&lt;br /&gt;        &lt;br /&gt;        Private _id As String&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        Public Property ID() As String&lt;br /&gt;            Get&lt;br /&gt;                Return _id&lt;br /&gt;            End Get&lt;br /&gt;            Set(ByVal value As String)&lt;br /&gt;                _id = value&lt;br /&gt;            End Set&lt;br /&gt;        End Property&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        Public Sub New(ByVal id As String)&lt;br /&gt;            Me.ID = id&lt;br /&gt;        End Sub&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        Public Overloads Overrides Function ToString() As String&lt;br /&gt;            Return ID&lt;br /&gt;        End Function&lt;br /&gt;        &lt;br /&gt;        Public MustOverride Function Clone() As Prototype&lt;br /&gt;    End Class&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    Public Class ConcretePrototype1&lt;br /&gt;        Inherits Prototype&lt;br /&gt;        &lt;br /&gt;        Public Sub New(ByVal id As String)&lt;br /&gt;            MyBase.New(id)&lt;br /&gt;        End Sub&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        Public Overloads Overrides Function Clone() As Prototype&lt;br /&gt;            Return DirectCast(Me.MemberwiseClone(), Prototype)&lt;br /&gt;        End Function&lt;br /&gt;    End Class&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    Public Class ConcretePrototype2&lt;br /&gt;        Inherits Prototype&lt;br /&gt;        Public Sub New(ByVal id As String)&lt;br /&gt;            MyBase.New(id)&lt;br /&gt;        End Sub&lt;br /&gt;        &lt;br /&gt;        Public Overloads Overrides Function Clone() As Prototype&lt;br /&gt;            Return DirectCast(Me.MemberwiseClone(), Prototype)&lt;br /&gt;        End Function&lt;br /&gt;    End Class&lt;br /&gt;End Namespace&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-5132202383982250884?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/5132202383982250884/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=5132202383982250884' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/5132202383982250884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/5132202383982250884'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/04/prototype.html' title='Prototype'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_FZdBqp4CC1M/SfsgFu8eenI/AAAAAAAAAVU/Bp84IXDfMao/s72-c/prototype.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-6878557137471526801</id><published>2009-04-21T15:16:00.006-03:00</published><updated>2009-05-30T14:21:39.891-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>Builder</title><content type='html'>Separa a construção de um objeto complexo de sua representação para que o processo de construção seja criado diferentemente da suas representações.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. Diagrama de Classes&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FZdBqp4CC1M/SfshhB-YG0I/AAAAAAAAAVc/Sqrcfy76CwE/s1600-h/Builder.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 126px;" src="http://2.bp.blogspot.com/_FZdBqp4CC1M/SfshhB-YG0I/AAAAAAAAAVc/Sqrcfy76CwE/s320/Builder.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5330891435272575810" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Participantes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Builder: especifica a interface abstrata para criação de partes de um objeto-builder.&lt;br /&gt;BuilderConcreto: constrói as partes do produto, define e mantém a representação que cria.&lt;br /&gt;Diretor: constrói um objeto apartir da interface do builder.&lt;br /&gt;Produto: representa o objeto complexo que será construído.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. Vantagens e Desvantagens&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; Permite variar a representação interna de um produto. O objeto builder fornece ao produtor/diretor apenas a sua abstração. Ou seja, o mesmo tem apenas a assinatura dos métodos para controlar a produção. &lt;br /&gt;&lt;br /&gt; O cliente não precisa saber como é o processo interno do método. Apenas é de responsabilidade dele delegar aos métodos da abstração.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4. Padrões com a mesma finalidade&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A diferença do padrão Builder para o Abstract Factory é o domínio da fabricação do objeto, pois cria o objeto final passo-a-passo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;5. Código&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div  style="width: 460px; height: 10px; font-family: Consolas, &amp;quot; Courier New&amp;quot;, Courier, Monospace; font-size : 10px;"&gt;&lt;br /&gt;&lt;b&gt;C#&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div  style="width: 460px; height: 400px; overflow: scroll; border: 1px solid black; background-color: #FFFAFA; font-family: Consolas, &amp;quot; Courier New&amp;quot;, Courier, Monospace; font-size : 11px;"&gt;&lt;br /&gt;&lt;pre&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Text;&lt;br /&gt;&lt;br /&gt;namespace BuilderTest&lt;br /&gt;{&lt;br /&gt;    class Program&lt;br /&gt;    {&lt;br /&gt;        static void Main(string[] args)&lt;br /&gt;        {&lt;br /&gt;            Director director = new Director();&lt;br /&gt;&lt;br /&gt;            Builder b1 = new ConcreteBuilder1();&lt;br /&gt;            Builder b2 = new ConcreteBuilder2();&lt;br /&gt;&lt;br /&gt;            director.Construct(b1);&lt;br /&gt;            BuilderTest.ConcreteBuilder2.Product p1 = b1.GetResult();&lt;br /&gt;&lt;br /&gt;            p1.Show();&lt;br /&gt;            Console.ReadKey();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    class Director&lt;br /&gt;    {&lt;br /&gt;        public void Construct(Builder builder)&lt;br /&gt;        {&lt;br /&gt;            builder.BuildPartA();&lt;br /&gt;            builder.BuildPartB();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    abstract class Builder&lt;br /&gt;    {&lt;br /&gt;        public abstract void BuildPartA();&lt;br /&gt;        public abstract void BuildPartB();&lt;br /&gt;        public abstract BuilderTest.ConcreteBuilder2.Product GetResult();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    class ConcreteBuilder1 : Builder&lt;br /&gt;    {&lt;br /&gt;        private BuilderTest.ConcreteBuilder2.Product _product = new BuilderTest.ConcreteBuilder2.Product();&lt;br /&gt;&lt;br /&gt;        public override void BuildPartA()&lt;br /&gt;        {&lt;br /&gt;            _product.Add("PartA");&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public override void BuildPartB()&lt;br /&gt;        {&lt;br /&gt;            _product.Add("PartB");&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public override BuilderTest.ConcreteBuilder2.Product GetResult()&lt;br /&gt;        {&lt;br /&gt;            return _product;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    class ConcreteBuilder2 : Builder&lt;br /&gt;    {&lt;br /&gt;        private Product _product = new Product();&lt;br /&gt;&lt;br /&gt;        public override void BuildPartA()&lt;br /&gt;        {&lt;br /&gt;            _product.Add("PartX");&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public override void BuildPartB()&lt;br /&gt;        {&lt;br /&gt;            _product.Add("PartY");&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public override Product GetResult()&lt;br /&gt;        {&lt;br /&gt;            return _product;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        public class Product&lt;br /&gt;        {&lt;br /&gt;            private IList&lt;string&gt; _parts = new List&lt;string&gt;();&lt;br /&gt;&lt;br /&gt;            public void Add(string part)&lt;br /&gt;            {&lt;br /&gt;                _parts.Add(part);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            public void Show()&lt;br /&gt;            {&lt;br /&gt;                Console.WriteLine("\n Product Parts");&lt;br /&gt;&lt;br /&gt;                foreach (string part in _parts)&lt;br /&gt;                {&lt;br /&gt;                    Console.WriteLine(part);&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div  style="width: 460px; height: 10px; font-family: Consolas, &amp;quot; Courier New&amp;quot;, Courier, Monospace; font-size : 10px;"&gt;&lt;br /&gt;&lt;b&gt;VB.NET&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div  style="width: 460px; height: 400px; overflow: scroll; border: 1px solid black; background-color: #FFFAFA; font-family: Consolas, &amp;quot; Courier New&amp;quot;, Courier, Monospace; font-size : 11px;"&gt;&lt;pre&gt;&lt;br /&gt;Imports System&lt;br /&gt;Imports System.Collections.Generic&lt;br /&gt;Imports System.Text&lt;br /&gt;&lt;br /&gt;Namespace BuilderTest&lt;br /&gt;    Class Program&lt;br /&gt;        Private Shared Sub Main(ByVal args As String())&lt;br /&gt;            Dim director As New Director()&lt;br /&gt;            &lt;br /&gt;            Dim b1 As Builder = New ConcreteBuilder1()&lt;br /&gt;            Dim b2 As Builder = New ConcreteBuilder2()&lt;br /&gt;            &lt;br /&gt;            director.Construct(b1)&lt;br /&gt;            Dim p1 As BuilderTest.ConcreteBuilder2.Product = b1.GetResult()&lt;br /&gt;            &lt;br /&gt;            p1.Show()&lt;br /&gt;            Console.ReadKey()&lt;br /&gt;        End Sub&lt;br /&gt;    End Class&lt;br /&gt;    &lt;br /&gt;    Class Director&lt;br /&gt;        Public Sub Construct(ByVal builder As Builder)&lt;br /&gt;            builder.BuildPartA()&lt;br /&gt;            builder.BuildPartB()&lt;br /&gt;        End Sub&lt;br /&gt;    End Class&lt;br /&gt;    MustInherit Class Builder&lt;br /&gt;        Public MustOverride Sub BuildPartA()&lt;br /&gt;        Public MustOverride Sub BuildPartB()&lt;br /&gt;        Public MustOverride Function GetResult() As BuilderTest.ConcreteBuilder2.Product&lt;br /&gt;    End Class&lt;br /&gt;    &lt;br /&gt;    Class ConcreteBuilder1&lt;br /&gt;        Inherits Builder&lt;br /&gt;        Private _product As New BuilderTest.ConcreteBuilder2.Product()&lt;br /&gt;        &lt;br /&gt;        Public Overloads Overrides Sub BuildPartA()&lt;br /&gt;            _product.Add("PartA")&lt;br /&gt;        End Sub&lt;br /&gt;        &lt;br /&gt;        Public Overloads Overrides Sub BuildPartB()&lt;br /&gt;            _product.Add("PartB")&lt;br /&gt;        End Sub&lt;br /&gt;        &lt;br /&gt;        Public Overloads Overrides Function GetResult() As BuilderTest.ConcreteBuilder2.Product&lt;br /&gt;            Return _product&lt;br /&gt;        End Function&lt;br /&gt;    End Class&lt;br /&gt;    &lt;br /&gt;    Class ConcreteBuilder2&lt;br /&gt;        Inherits Builder&lt;br /&gt;        Private _product As New Product()&lt;br /&gt;        &lt;br /&gt;        Public Overloads Overrides Sub BuildPartA()&lt;br /&gt;            _product.Add("PartX")&lt;br /&gt;        End Sub&lt;br /&gt;        &lt;br /&gt;        Public Overloads Overrides Sub BuildPartB()&lt;br /&gt;            _product.Add("PartY")&lt;br /&gt;        End Sub&lt;br /&gt;        &lt;br /&gt;        Public Overloads Overrides Function GetResult() As Product&lt;br /&gt;            Return _product&lt;br /&gt;        End Function&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        Public Class Product&lt;br /&gt;            Private _parts As IList(Of String) = New List(Of String)()&lt;br /&gt;            &lt;br /&gt;            Public Sub Add(ByVal part As String)&lt;br /&gt;                _parts.Add(part)&lt;br /&gt;            End Sub&lt;br /&gt;            &lt;br /&gt;            Public Sub Show()&lt;br /&gt;                Console.WriteLine(vbLf &amp; " Product Parts")&lt;br /&gt;                &lt;br /&gt;                For Each part As String In _parts&lt;br /&gt;                    Console.WriteLine(part)&lt;br /&gt;                    &lt;br /&gt;                Next&lt;br /&gt;            End Sub&lt;br /&gt;        End Class&lt;br /&gt;    End Class&lt;br /&gt;End Namespace&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-6878557137471526801?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/6878557137471526801/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=6878557137471526801' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/6878557137471526801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/6878557137471526801'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/04/builder.html' title='Builder'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_FZdBqp4CC1M/SfshhB-YG0I/AAAAAAAAAVc/Sqrcfy76CwE/s72-c/Builder.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-8801156122389066495</id><published>2009-04-21T14:41:00.007-03:00</published><updated>2009-05-30T14:28:43.397-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>Abstract Factory</title><content type='html'>A intenção do padrão é criar um objeto-fábrica que orquestra a instância dos objetos que serão produzidos, fornecendo uma interface comum para estes objetos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. Diagrama de Classes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Desvantagens x Benefícios&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;• Por isolar as classes concretas, o cliente controla o componente apenas a partir da assinatura da abstração da classe.  &lt;br /&gt;• Facilidade na troca de família de objetos, uma vez que a família implementa a mesma abstração e a fábrica é montada apenas na instancialização do objeto.&lt;br /&gt;• Dificuldade em extensão da família. Estender uma classe pode acarretar dificuldades, pois deve se alterar a assinatura da fábrica e todas as classes herdadas. &lt;br /&gt;• Há um senso harmônico entre os objetos produzidos. Todos possuem a mesma característica de sua abstração. E ainda há a possibilidade de fabricação de objetos apenas uma vez de cada vez.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. Código&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div  style="width: 460px; height: 10px; font-family: Consolas, &amp;quot; Courier New&amp;quot;, Courier, Monospace; font-size : 10px;"&gt;&lt;br /&gt;&lt;b&gt;C#&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div  style="width: 460px; height: 400px; overflow: scroll; border: 1px solid black; background-color: #FFFAFA; font-family: Consolas, &amp;quot; Courier New&amp;quot;, Courier, Monospace; font-size : 11px;"&gt;&lt;pre&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Text;&lt;br /&gt;&lt;br /&gt;namespace AbstractFactoryTest&lt;br /&gt;{&lt;br /&gt;    class Program&lt;br /&gt;    {&lt;br /&gt;        static void Main(string[] args)&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;            // Cria celulares da Companhia A.&lt;br /&gt;            CellphoneFactory factoryOne = new CompanyACellphoneFactory();&lt;br /&gt;            Industry industryOne = new Industry(factoryOne);&lt;br /&gt;            industryOne.Produce();&lt;br /&gt;&lt;br /&gt;            // Cria celulares da Companhia B.&lt;br /&gt;            CellphoneFactory factoryTwo = new CompanyBCellphoneFactory();&lt;br /&gt;&lt;br /&gt;            Industry industryTwo = new Industry(factoryTwo);&lt;br /&gt;            industryTwo.Produce();&lt;br /&gt;&lt;br /&gt;            Console.ReadKey();&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    #region ProductsFromACompany&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    public class CompanyATouchedScreenCellphone : AbstractCellphoneWithTouchedScreen&lt;br /&gt;    {&lt;br /&gt;        public override string ToString()&lt;br /&gt;        {&lt;br /&gt;            return "Um celular touch screen da empresa A";&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public class CompanyARegularCellphone : AbstractRegularCellphone&lt;br /&gt;    {&lt;br /&gt;        public override string ToString()&lt;br /&gt;        {&lt;br /&gt;            return "Um celular comum da empresa A";&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    #endregion&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    #region ProductsFromBCompany&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    public class CompanyBTouchedScreenCellphone : AbstractCellphoneWithTouchedScreen&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;        public override string ToString()&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;            return "Cellphone touch screen da empresa B";&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    public class CompanyBRegularCellphone : AbstractRegularCellphone&lt;br /&gt;    {&lt;br /&gt;        public override string ToString()&lt;br /&gt;        {&lt;br /&gt;            return "Um celular comum da empresa B";&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    #endregion&lt;br /&gt;&lt;br /&gt;    #region Abstracoes dos Produtos&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    public abstract class AbstractCellphoneWithTouchedScreen&lt;br /&gt;    {&lt;br /&gt;        public abstract override string ToString();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    public abstract class AbstractRegularCellphone&lt;br /&gt;    {&lt;br /&gt;        public abstract override string ToString();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    #endregion&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    abstract class CellphoneFactory&lt;br /&gt;    {&lt;br /&gt;        public abstract AbstractCellphoneWithTouchedScreen CreateCellphoneA();&lt;br /&gt;        public abstract AbstractRegularCellphone CreateCellphoneB();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    class CompanyACellphoneFactory : CellphoneFactory&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;        public override AbstractCellphoneWithTouchedScreen CreateCellphoneA()&lt;br /&gt;        {&lt;br /&gt;            return new CompanyATouchedScreenCellphone();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        public override AbstractRegularCellphone CreateCellphoneB()&lt;br /&gt;        {&lt;br /&gt;            return new CompanyARegularCellphone();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    class CompanyBCellphoneFactory : CellphoneFactory&lt;br /&gt;    {&lt;br /&gt;        public override AbstractCellphoneWithTouchedScreen CreateCellphoneA()&lt;br /&gt;        {&lt;br /&gt;            return new CompanyBTouchedScreenCellphone();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        public override AbstractRegularCellphone CreateCellphoneB()&lt;br /&gt;        {&lt;br /&gt;            return new CompanyBRegularCellphone();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    class Industry&lt;br /&gt;    {&lt;br /&gt;        private AbstractCellphoneWithTouchedScreen cellphoneOne;&lt;br /&gt;        private AbstractRegularCellphone cellphoneTwo;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        public Industry(CellphoneFactory cellphoneFactory)&lt;br /&gt;        {&lt;br /&gt;            this.cellphoneOne =cellphoneFactory.CreateCellphoneA();&lt;br /&gt;            this.cellphoneTwo = cellphoneFactory.CreateCellphoneB();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public void Produce()&lt;br /&gt;        {&lt;br /&gt;            Console.WriteLine("Construção do celular: {0}. ", this.cellphoneOne.ToString());&lt;br /&gt;            Console.WriteLine("Construção do celular: {0}. ", this.cellphoneTwo.ToString());&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div  style="width: 460px; height: 10px; font-family: Consolas, &amp;quot; Courier New&amp;quot;, Courier, Monospace; font-size : 10px;"&gt;&lt;br /&gt;&lt;b&gt;VB.NET&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div  style="width: 460px; height: 400px; overflow: scroll; border: 1px solid black; background-color: #FFFAFA; font-family: Consolas, &amp;quot; Courier New&amp;quot;, Courier, Monospace; font-size : 11px;"&gt;&lt;pre&gt;&lt;br /&gt;Imports System&lt;br /&gt;Imports System.Collections.Generic&lt;br /&gt;Imports System.Text&lt;br /&gt;&lt;br /&gt;Namespace AbstractFactoryTest&lt;br /&gt;    Class Program&lt;br /&gt;        Private Shared Sub Main(ByVal args As String())&lt;br /&gt;            &lt;br /&gt;            ' Cria celulares da Companhia A.&lt;br /&gt;            Dim factoryOne As CellphoneFactory = New CompanyACellphoneFactory()&lt;br /&gt;            Dim industryOne As New Industry(factoryOne)&lt;br /&gt;            industryOne.Produce()&lt;br /&gt;            &lt;br /&gt;            ' Cria celulares da Companhia B.&lt;br /&gt;            Dim factoryTwo As CellphoneFactory = New CompanyBCellphoneFactory()&lt;br /&gt;            &lt;br /&gt;            Dim industryTwo As New Industry(factoryTwo)&lt;br /&gt;            industryTwo.Produce()&lt;br /&gt;            &lt;br /&gt;                &lt;br /&gt;            Console.ReadKey()&lt;br /&gt;        End Sub&lt;br /&gt;    End Class&lt;br /&gt;    &lt;br /&gt;    #Region "ProductsFromACompany"&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    Public Class CompanyATouchedScreenCellphone&lt;br /&gt;        Inherits AbstractCellphoneWithTouchedScreen&lt;br /&gt;        Public Overloads Overrides Function ToString() As String&lt;br /&gt;            Return "Um celular touch screen da empresa A"&lt;br /&gt;        End Function&lt;br /&gt;    End Class&lt;br /&gt;    &lt;br /&gt;    Public Class CompanyARegularCellphone&lt;br /&gt;        Inherits AbstractRegularCellphone&lt;br /&gt;        Public Overloads Overrides Function ToString() As String&lt;br /&gt;            Return "Um celular comum da empresa A"&lt;br /&gt;        End Function&lt;br /&gt;    End Class&lt;br /&gt;    &lt;br /&gt;    #End Region&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    #Region "ProductsFromBCompany"&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    Public Class CompanyBTouchedScreenCellphone&lt;br /&gt;        Inherits AbstractCellphoneWithTouchedScreen&lt;br /&gt;        &lt;br /&gt;        Public Overloads Overrides Function ToString() As String&lt;br /&gt;            &lt;br /&gt;                &lt;br /&gt;            Return "Cellphone touch screen da empresa B"&lt;br /&gt;        End Function&lt;br /&gt;    End Class&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    Public Class CompanyBRegularCellphone&lt;br /&gt;        Inherits AbstractRegularCellphone&lt;br /&gt;        Public Overloads Overrides Function ToString() As String&lt;br /&gt;            Return "Um celular comum da empresa B"&lt;br /&gt;        End Function&lt;br /&gt;    End Class&lt;br /&gt;    &lt;br /&gt;    #End Region&lt;br /&gt;    &lt;br /&gt;    #Region "Abstracoes dos Produtos"&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    Public MustInherit Class AbstractCellphoneWithTouchedScreen&lt;br /&gt;        Public MustOverride Overloads Overrides Function ToString() As String&lt;br /&gt;    End Class&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    Public MustInherit Class AbstractRegularCellphone&lt;br /&gt;        Public MustOverride Overloads Overrides Function ToString() As String&lt;br /&gt;    End Class&lt;br /&gt;    &lt;br /&gt;    #End Region&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    MustInherit Class CellphoneFactory&lt;br /&gt;        Public MustOverride Function CreateCellphoneA() As AbstractCellphoneWithTouchedScreen&lt;br /&gt;        Public MustOverride Function CreateCellphoneB() As AbstractRegularCellphone&lt;br /&gt;    End Class&lt;br /&gt;    &lt;br /&gt;    Class CompanyACellphoneFactory&lt;br /&gt;        Inherits CellphoneFactory&lt;br /&gt;        &lt;br /&gt;        Public Overloads Overrides Function CreateCellphoneA() As AbstractCellphoneWithTouchedScreen&lt;br /&gt;            Return New CompanyATouchedScreenCellphone()&lt;br /&gt;        End Function&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        Public Overloads Overrides Function CreateCellphoneB() As AbstractRegularCellphone&lt;br /&gt;            Return New CompanyARegularCellphone()&lt;br /&gt;        End Function&lt;br /&gt;    End Class&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    Class CompanyBCellphoneFactory&lt;br /&gt;        Inherits CellphoneFactory&lt;br /&gt;        Public Overloads Overrides Function CreateCellphoneA() As AbstractCellphoneWithTouchedScreen&lt;br /&gt;            Return New CompanyBTouchedScreenCellphone()&lt;br /&gt;        End Function&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        Public Overloads Overrides Function CreateCellphoneB() As AbstractRegularCellphone&lt;br /&gt;            Return New CompanyBRegularCellphone()&lt;br /&gt;        End Function&lt;br /&gt;    End Class&lt;br /&gt;    &lt;br /&gt;    Class Industry&lt;br /&gt;        Private cellphoneOne As AbstractCellphoneWithTouchedScreen&lt;br /&gt;        Private cellphoneTwo As AbstractRegularCellphone&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        Public Sub New(ByVal cellphoneFactory As CellphoneFactory)&lt;br /&gt;            Me.cellphoneOne = cellphoneFactory.CreateCellphoneA()&lt;br /&gt;            Me.cellphoneTwo = cellphoneFactory.CreateCellphoneB()&lt;br /&gt;        End Sub&lt;br /&gt;        &lt;br /&gt;        Public Sub Produce()&lt;br /&gt;            Console.WriteLine("Construção do celular: {0}. ", Me.cellphoneOne.ToString())&lt;br /&gt;                &lt;br /&gt;            Console.WriteLine("Construção do celular: {0}. ", Me.cellphoneTwo.ToString())&lt;br /&gt;        End Sub&lt;br /&gt;    End Class&lt;br /&gt;End Namespace&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-8801156122389066495?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/8801156122389066495/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=8801156122389066495' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/8801156122389066495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/8801156122389066495'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/04/abstract-factory.html' title='Abstract Factory'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-910253854534233527</id><published>2009-04-21T14:38:00.007-03:00</published><updated>2009-05-30T14:30:51.632-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>Introdução aos Padrões de Criação</title><content type='html'>Os padrões de criação são os padrões de projeto que abstraem o processo de instanciação das classes, ajudando o sistema ser independe dos objetos concretos criados. &lt;br /&gt;&lt;br /&gt;Para o sistema, tudo o que se sabe é que suas classes são definidas por classes abstratas. Isso facilita muito expansão do sistema no futuro. Iremos analisar os cinco padrões de criação escritos pela gangue dos quatro (GoF).&lt;table bgcolor="#FFFAFA"&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://rodrigomacedo.blogspot.com/2009/04/abstract-factory.html"&gt;Abstract Factory&lt;/a&gt;&lt;/td&gt;&lt;td&gt; criar um objeto-fábrica que orquestra a instância dos objetos que serão produzidos.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://rodrigomacedo.blogspot.com/2009/04/builder.html"&gt;Builder&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Separa a construção de um objeto complexo de sua representação.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://rodrigomacedo.blogspot.com/2009/04/prototype.html"&gt;Prototype&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Especifica os tipos de objetos a serem criados usando uma instância-protótipo e cria novos objetos a partir do mesmo.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://rodrigomacedo.blogspot.com/2009/04/singleton.html"&gt;Singleton&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Dar a responsabilidade a uma classe de controlar a própria instância.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-910253854534233527?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/910253854534233527/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=910253854534233527' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/910253854534233527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/910253854534233527'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/04/introducao-aos-padroes-de-criacao.html' title='Introdução aos Padrões de Criação'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-6329663822679920607</id><published>2009-04-21T14:27:00.006-03:00</published><updated>2009-05-30T14:30:03.863-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><title type='text'>Introdução aos Padrões de Projeto</title><content type='html'>Design pattern (ou padrão de projetos) foi originado pela gangue dos quatro (Gang of Four). Décadas depois, padrões de projeto costuma ser uma novidade para programadores. Além de aumentar a qualidade de software com sua unificação de linha  lógica de raciocínio, pode também aumentar a produtividade e qualidade do desenvolvimento de software. &lt;br /&gt;&lt;br /&gt;A motivação dos padrões de projeto não é deixar os conjuntos de classes menores, mas sim mais flexíveis. Isso facilita muito expansão do sistema no futuro, uma vez 70% do tempo gasto no sistema são de manutenção e extensão. E nos dá o conceito de escalabilidade, que está ligada a capacidade de um sistema de crescer e evoluir.&lt;br /&gt;&lt;br /&gt;Podemos resumir o conceito como elementos de códigos que são implementados de acordo com as necessidades que temos no decorrer dos nossos dias como desenvolvedores. &lt;br /&gt;&lt;br /&gt;Naturalmente, dividimos os padrões de projeto em três grupos: os padrões criacionais, os estruturais e os comportamentais.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Criacionais &lt;/span&gt;: tem a responsabilidade de controlar a instância do objeto, abstraindo e deixando-as independentes de suas classes concretas. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Estruturais &lt;/span&gt;: tem a responsabilidade de planejar a estrutura da classe que se está construindo, aumentando a possibilidade de extensão das mesmas sem alteração grandes esforços.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Comportamentais &lt;/span&gt;: tem a responsabilidade de controlar comportamentos em tempo de execução.&lt;br /&gt;&lt;br /&gt;Nos próximos artigos iremos falar sobre cada um desses tipos e seus padrões. Até a próxima.&lt;br /&gt;&lt;br /&gt;Bibliografia:&lt;br /&gt;[GoF] Gamma, Helm, Johnson, Vlissides. Prototype Pattern. Design Patterns — Elements of Reusable Object-Oriented Software, 1995.&lt;br /&gt;&lt;br /&gt;Do Factory! - http://www.dofactory.com/&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-6329663822679920607?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/6329663822679920607/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=6329663822679920607' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/6329663822679920607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/6329663822679920607'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/04/introducao-aos-padroes-de-projeto.html' title='Introdução aos Padrões de Projeto'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-471074028204699656</id><published>2009-04-21T13:57:00.004-03:00</published><updated>2009-05-30T14:15:08.342-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Certificacao'/><title type='text'>Indiana possui sua certificação aos 9 anos</title><content type='html'>Para você que estudou no exame para se tornar um MCP, ou pra você que pensa em realizar a prova. Uma indiana, de 9 anos, conseguiu passar o teste, batendo o recorde mundial de um outro garoto de 10 anos. &lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:13a51175-5676-455c-b416-c1cbce37720c" style="padding-right: 0px; display: block; padding-left: 0px; float: none; padding-bottom: 0px; margin-left: auto; width: 425px; margin-right: auto; padding-top: 0px"&gt;&lt;div id="0dc584da-fb81-4bcb-8886-e0fdcfff0dcf" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=OQcElFUmXFo&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1" target="_new"&gt;&lt;img src="http://lh6.ggpht.com/_1KPoaV5zv2w/SVib32xCdLI/AAAAAAAAALI/4g2RUPjWB4s/video1c8dd3bcc3dd%5B3%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('0dc584da-fb81-4bcb-8886-e0fdcfff0dcf'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/OQcElFUmXFo&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/OQcElFUmXFo&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-471074028204699656?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/471074028204699656/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=471074028204699656' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/471074028204699656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/471074028204699656'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/04/para-voce-que-se-matou-pra-se-tornar-um.html' title='Indiana possui sua certificação aos 9 anos'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_1KPoaV5zv2w/SVib32xCdLI/AAAAAAAAALI/4g2RUPjWB4s/s72-c/video1c8dd3bcc3dd%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-548524918800108440</id><published>2009-03-28T22:14:00.014-03:00</published><updated>2009-05-03T11:09:11.416-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><title type='text'>Configuração de uma aplicação em ASP.NET</title><content type='html'>Este artigo se trata de uma visão geral dos arquivos de configuração usados pelo ASP.NET. Pretendo dar uma introdução sobre os arquivos de configuração do ASP.NET e expor algumas funcionalidades interessantes do framework. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;1. Introdução&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Arquivos de configuração são usados para setar dados iniciais em um sistema. São usados nas mais diversas aplicações, nos dá a flexibilidade de alterar propriedades sem auxílio de um compilador. E isso pode nos ser útil. Imagine o seguinte cenário: você acaba de desenvolver uma ferramenta que auxilia o gerenciamento de usuários de uma pequena rede e o administrador deverá escolher quais grupos tem permissões. Você tem três opções: a primeira era forçar o administrador a dizer quais permissões pertencem a quais grupos todas as vezes que rodar o programa, a segunda é criar propriedades por código  e fazer com que o administrador aprenda a sintaxe para altere os campos, ou ter um arquivo fácil de ser manipulado e de leve curva de aprendizado, da qual deixaria o administrador mais motivado.&lt;br /&gt;&lt;br /&gt;A importância de um arquivo de configuração no ASP.Net é essencial para um bom desenvolvimento. Você pode controlar sua aplicação com praticamente todos as funcionalidades do ASP.NET. Trata-se de um conjunto poderoso de especificações que são guardadas em cachê, disponíveis globalmente para sua aplicação. &lt;br /&gt;&lt;br /&gt; Os arquivos de configuração se comportam de maneira hierárquica, ou seja, as configurações de um arquivo “inferior” podem ser substituídas. Há dois arquivos de configuração:&lt;br /&gt;&lt;br /&gt;• Machine.Config – Este arquivo se encontra no topo hierárquico. Contém configurações que serão aplicadas em todas as aplicações.NET. Nas versões anteriores à 3.0, se encontra em “C:\WINDOWS\Microsoft.NET\Framework\vx.x.xxxx\CONFIG".&lt;br /&gt;&lt;br /&gt;• Web.Config – Este arquivo se encontra em uma aplicação específica, de acordo com as necessidades da mesma. Cada aplicação pode conter um web.config. Esse arquivo de configuração é opcional. &lt;br /&gt;&lt;br /&gt;Como o arquivo “Web.Config” é mais específico, ele tende a substituir as configurações do “Machine.Config” por padrão. Caso não seja desejado, o atributo allowOverride na tag &lt;location&gt; deve ser setado como false.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;2. Usando uma interface gráfica para configuração&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Para administradores, há uma preferência por uma interface para gerenciar a configuração. O ASP.NET provê uma interface chamada Web Site Administrator Tool, que permite editar configurações de diversos tipos como segurança e habilitar/desabilitar opções de tracing. Você encontra na opção WebSite -&gt; ASP.NET Configuration, .&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FZdBqp4CC1M/Sc7OMf-LSCI/AAAAAAAAAVE/c2CvIikN7b0/s1600-h/web+site+administration+tool.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 172px;" src="http://1.bp.blogspot.com/_FZdBqp4CC1M/Sc7OMf-LSCI/AAAAAAAAAVE/c2CvIikN7b0/s320/web+site+administration+tool.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5318414924107171874" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 1: Interface para o Web.Config (Web Site Administrator).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;3. Definindo variáveis globais a sua aplicação&lt;br /&gt;&lt;/span&gt;&lt;br /&gt; A tag appSettings provê uma definição de variáveis estáticas, que podem ser usadas em toda aplicação. Isso nos dá a capacidade de configurar nossa aplicação em um único arquivo, modificando apenas os parâmetros. Sem precisar de que um desenvolvedor faça o trabalho. &lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;appSettings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;key&lt;/span&gt;&lt;span class="kwrd"&gt;="initialRow"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="15"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;key&lt;/span&gt;&lt;span class="kwrd"&gt;="finalRow"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="55"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;appSettings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;//Primeiro Método:&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;ApplicationStarter.InitialNumber = (&lt;span class="kwrd"&gt;int&lt;/span&gt;) ConfigurationSettings.AppSettings["initialRow];&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;//Segundo Método:&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;ConfigurationManager.AppSettings["initialRow”];&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;O primeiro método se encontra depreciado. Isso significa que você pode usá-lo, mas o framework parou de fazer manutenção neste método. Apenas para fins didáticos.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;&lt;br /&gt;4. Fornecendo suporte com a tag &lt;globazation&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; A tag &lt;globalization&gt; permite configurar a aplicação para responder diferentes opções de codificação, garantindo assim o tipo de codificação correta da cada país. Por padrão, o requestEnconding dentro do arquivo machine.config é utf-8. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;requestEnconding &lt;/span&gt;- Especifica a codificação assumida para as requisições que chegarem.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;responseEnconding &lt;/span&gt;- Especificação de resposta&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;fileEnconding &lt;/span&gt;- Especifica a codificação para análise de arquivos asmx, aspx e asax.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Culture &lt;/span&gt;- Especifica a cultura padrão para processar as requisições que chegam&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;uiCulture &lt;/span&gt;- Especifica a cultura padrão para processar pesquisas de recurso do local.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;globalization&lt;/span&gt; &lt;span class="attr"&gt;requestEncoding&lt;/span&gt;&lt;span class="kwrd"&gt;="Shift-JIS"&lt;/span&gt; &lt;span class="attr"&gt;responseEncoding&lt;/span&gt;&lt;span class="kwrd"&gt;="Shift-JIS"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;5. Usando a tag identity para criar uma identidade de usuário&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; A tag identity nos permite criar uma identidade de usuário para aplicação. É uma tag útil para definir o nome de usuário e senha de uma base de dados. &lt;br /&gt; &lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;  &lt;span class="rem"&gt;&amp;lt;!-- &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="rem"&gt;            Set compilation debug="true" to insert debugging &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="rem"&gt;            symbols into the compiled page. Because this &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="rem"&gt;            affects performance, set this value to true only &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="rem"&gt;            during development.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="rem"&gt;        --&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;identity&lt;/span&gt; &lt;span class="attr"&gt;userName&lt;/span&gt;&lt;span class="kwrd"&gt;="rmacedo"&lt;/span&gt; &lt;span class="attr"&gt;password&lt;/span&gt;&lt;span class="kwrd"&gt;="passwrd445"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;6. Atribuindo especificações com a tag &lt;Pages&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; A tag &lt;pages&gt; nos permite definir aspectos de cada página, como o uso de Viewstates e buffering. Mudando essas características, você automaticamente muda em todas as páginas de sua aplicação.&lt;br /&gt;&lt;br /&gt;Buffer - Especifica se sua página aceita o uso de buffer. &lt;br /&gt;enableSessionState - Especifica se o SessionState está ativado. Recebe valor booleano.&lt;br /&gt;enableViewState - Especifica se o ViewState está ativado. Recebe valor booleano.&lt;br /&gt;userControlBaseType - Permite especificar uma classe de code-behind seja herdade por uma página aspx.&lt;br /&gt;autoEventWireup - Especifica se os eventos de página são ativados. Recebe valor booleano.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; Você também pode definir especificamente para cada página através da diretiva que se encontra no topo de cada página aspx.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;7. Ativando o rastreamento (trace) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Na engenharia de software, trace é a capacidade de obter informações de enquanto sua aplicação está em execução. Pode nos ajudar a encontrar bugs e outras falhas. Podemos especificar facilmente as funcionalidades de tracing com as propriedades abaixo:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Enabled &lt;/span&gt;- Especifica se o trace está ligado.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;localOnly &lt;/span&gt;- Especifica se o trace apenas pode estar lgiado se for local ou acessado remotamente. É útil, caso se esqueça de trocar o enabled para falso antes de publicar a aplicação. Por este motivo, o padrão deste atributo está setado como true.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;pageOutput &lt;/span&gt;- Especifica se o resultado está disponível através de um utilitário de rastreamento. O padrão é false, ou seja, aparecerá no final de cada página.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;requestLimit &lt;/span&gt;- Valor que limita o número de requisições de tracing armazenadas no servidor. Por padrão, o número é 10.&lt;br /&gt;traceMode - Especifica se o resultado do tracing deve ser classificado por hora ou por categoria.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;  &lt;span class="rem"&gt;&amp;lt;!-- &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="rem"&gt;            Set compilation debug="true" to insert debugging &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="rem"&gt;            symbols into the compiled page. Because this &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="rem"&gt;            affects performance, set this value to true only &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="rem"&gt;            during development.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="rem"&gt;        --&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;trace&lt;/span&gt; &lt;span class="attr"&gt;enabled&lt;/span&gt;&lt;span class="kwrd"&gt;="true"&lt;/span&gt; &lt;span class="attr"&gt;localOnly&lt;/span&gt; &lt;span class="kwrd"&gt;="true"&lt;/span&gt; &lt;span class="attr"&gt;pageOutput&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt; &lt;span class="attr"&gt;traceMode&lt;/span&gt;&lt;span class="kwrd"&gt;="SortByCategory"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    &lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;8. Definindo exceções personalizadas.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt; O uso da tag customErros pode gerenciar exceções não-tratadas, redirecionando ao cliente uma página mais amigável. A sub tag error de customError especifica erros, como veremos no exemplo a seguir. &lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;  &lt;span class="rem"&gt;&amp;lt;!-- &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="rem"&gt;            Set compilation debug="true" to insert debugging &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="rem"&gt;            symbols into the compiled page. Because this &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="rem"&gt;            affects performance, set this value to true only &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="rem"&gt;            during development.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="rem"&gt;        --&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;customErrors&lt;/span&gt; &lt;span class="attr"&gt;defaultRedirect&lt;/span&gt;&lt;span class="kwrd"&gt;="errorpage.aspx"&lt;/span&gt; &lt;span class="attr"&gt;mode&lt;/span&gt;&lt;span class="kwrd"&gt;="RemoteOnly"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;customErrors&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    &lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.web&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;  &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;9. Autenticando usuários &lt;/span&gt;&lt;br /&gt;São raras as aplicações que não usam uma forma de autenticar usuários. Usamos a tag authentication para autenticar usuários por questões de segurança. Abaixo seguem as opções do atribute mode:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Windows &lt;/span&gt;- Especifica o modo de autenticação Windows/IIS&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Forms &lt;/span&gt;- Especifica um modo de autenticação baseado nos formulários Asp.Net&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Passport &lt;/span&gt;- Especifica o uso de autenticação através do passport da Microsoft.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;None &lt;/span&gt;- Nenhuma autenticação especificada.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Referências &lt;/span&gt;&lt;br /&gt;ASP.NET Guia do Desenvolvedor.&lt;br /&gt;MCTS Self-Paced Training Kit : Microsoft Web Based Client.&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-548524918800108440?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/548524918800108440/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=548524918800108440' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/548524918800108440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/548524918800108440'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/03/configuracao-de-uma-aplicacao-em-asp.html' title='Configuração de uma aplicação em ASP.NET'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_FZdBqp4CC1M/Sc7OMf-LSCI/AAAAAAAAAVE/c2CvIikN7b0/s72-c/web+site+administration+tool.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-8162559079348982167</id><published>2009-02-12T13:22:00.002-02:00</published><updated>2009-02-12T13:25:47.460-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reflexão'/><title type='text'>Para refletir: Conselhos de Bill Gates</title><content type='html'>&lt;center&gt;&lt;img src="http://www.larsoft.com.br/Pics/News/BillGates04.jpg" alt="Bill Gates"&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Discurso de Bill Gates em uma escola, aconselhando os alunos sobre coisas que a instituição não ensina. Como eu sempre falo, há um longo percurso entre o ensino de uma faculdade e a vivência profissional.&lt;br /&gt;&lt;br /&gt;Bill Gates falou por menos de cinco minutos, e foi aplaudido por mais de cinco minutos sem parar. Agradeceu e foi embora em seu helicóptero.&lt;br /&gt;&lt;br /&gt;1. A vida não é fácil, acostume-se com isso.&lt;br /&gt;&lt;br /&gt;2. O mundo não está preocupado com sua auto-estima. O mundo espera que você faça alguma coisa útil por ele antes de sentir-se bem com você mesmo.&lt;br /&gt;&lt;br /&gt;3. Você não ganhará vinte milhões por mês assim que sair da escola. Você não será vice-presidente de uma empresa com carro e telefone à sua disposição antes que você tenha conseguido comprar seu próprio carro e telefone.&lt;br /&gt;&lt;br /&gt;4. Se você acha seu professor rude, espere até ter um chefe. Ele não terá pena de você.&lt;br /&gt;&lt;br /&gt;5. Vender jornal velho ou trabalhar durante as férias não está abaixo de sua posição social. Seus avós têm uma palavra diferente para isso: eles chamam de oportunidade.&lt;br /&gt;&lt;br /&gt;6. Se você fracassar, não é culpa de seus pais. Então não lamente seus erros, aprenda com eles.&lt;br /&gt;&lt;br /&gt;7. Antes de você nascer seus pais não eram tão críticos como agora. Eles só ficaram assim por pagar suas contas, lavar suas roupas e ouvir você dizer que eles são "ridículos". Então antes de salvar o planeta para a próxima geração, querendo consertar os erros da geração de seus pais, tente limpar seu próprio quarto.&lt;br /&gt;&lt;br /&gt;8. Sua escola pode ter eliminado a distinção entre vencedores e perdedores, mas a vida NÃO é assim. Em algumas escolas você não repete mais de ano e tem quantas chances precisar até acertar. Isto não se parece com absolutamente NADA na vida real. Se pisar na bola, está despedido, Rua! Faça certo da primeira vez!&lt;br /&gt;&lt;br /&gt;9. A vida não é dividida em semestres. Você não terá sempre os verões livres e é pouco provável que outros empregados o ajudem a cumprir suas tarefas no fim de cada período.&lt;br /&gt;&lt;br /&gt;10. Televisão NÃO é vida real. Na vida real, as pessoas têm que deixar o barzinho ou boate e ir trabalhar.&lt;br /&gt;&lt;br /&gt;11. Seja legal com os CDFs ou Nerds - aqueles estudantes que os demais julgam que são uns babacas - Existe uma grande probabilidade de você vir a trabalhar para um deles.&lt;br /&gt;&lt;br /&gt;Fonte: http://www.larsoft.com.br/&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-8162559079348982167?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/8162559079348982167/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=8162559079348982167' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/8162559079348982167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/8162559079348982167'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/02/para-refletir-conselhos-de-bill-gates.html' title='Para refletir: Conselhos de Bill Gates'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-2833670112580829549</id><published>2009-02-12T13:17:00.003-02:00</published><updated>2009-06-21T12:04:18.483-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Certificacao'/><title type='text'>Visão Geral sobre o Exame 70-536</title><content type='html'>Meu objetivo aqui é auxiliar, ou se preferirem, dar um empurrão (nada como um bom usuário agressivo!) para os que desejam realizar o exame 70-536 (Microsoft .NET Framework 2.0 Application Development Foundation). Para melhoria dos próximos, gostaria muito do seu feedback sobre este artigo. Bom, vamos lá!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. Visão do Exame&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A prova foi designada para profissionais que tenham ao menos dois ou três anos de experiência em desenvolvimento Web, ou Windows, ou em serviços, claro, teoricamente. Já vi alguns profissionais que conseguiram com bem menos do que isso passar. Você deve conhecer pelo menos uma linguagem. Antigamente, você precisava conhecer as duas linguagens e suas características. Há uma coisa que gostaria de destacar: passando neste exame, prova que você tem bons conhecimentos do .NET Framework, mas não mostra que você é um bom desenvolvedor. Para isso, dedique-se também a UML, padrões de projetos, e também investindo em seus próprios frameworks, e acima de tudo, corra atrás de sua experiência. Para não fugir do foco, basicamente as questões do exame referem-se aos itens abaixo:&lt;br /&gt;&lt;br /&gt;• System types and collections: desenvolvendo aplicações que usam classes do Framework e coleções.&lt;br /&gt;&lt;br /&gt;• Services, threading and application domains: implementando serviços (basicamente Windows Services), multithread e Application Domain.&lt;br /&gt;&lt;br /&gt;• Configuration, diagnostic, management, and installation: implementando objetos de configuração, diagnóstico, e classes de instalação.&lt;br /&gt;&lt;br /&gt;• Serialization and input / output: implementando serialização e deserialização.&lt;br /&gt;&lt;br /&gt;• Security: desenvolvimento de classes de criptografia e característica de segurança do .Net Framework.&lt;br /&gt;&lt;br /&gt;• Interoperability, Reflection, and Mailing: implementando interoperabilidade entre componentes COM, Reflection, e funcionalidade de e-mail.&lt;br /&gt;&lt;br /&gt;• Globalization, Drawing, and Text manipulation: implementando classes como RegionInfo, CultureInfo, a parte de desenhos (Drawing), e manipulação de textos.&lt;br /&gt;&lt;br /&gt;Você pode agendar sua prova através do site da Prometric (http://www.prometric.com). A Prometric é uma empresa de grande peso no mercado para provas de certificação, não apenas da Microsoft, mas também de diversas empresas de tecnologia. A prova em questão custa em torno de $80 (oitenta dolares). Está disponível nas línguas: Inglês, Francês, Alemão e Japonês. Antes de efetuar o teste, você também pode escolher em qual linguagem em que o teste se basea: C++, C# ou VB.NET.&lt;br /&gt;&lt;br /&gt;Após concluir o exame e passar, a Microsoft envia um certificado, um broche e um cartão de identificação. Seu certificado virá com a assinatura do Steve Ballmer, em até quatro semanas. Sem falar no reconhecimento profissional que você ganha ao concluir.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Programa de Estudo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Eu aconselho os interessados em estudar usando o livro MCTS Self-Paced Training Kit (Exam 70-536), anotando as classes usadas e testando-as. É um livro bastante conciso, sem redundâncias, o que é muito bom. Com ele, você tem a certeza que terá uma boa base para certificação, pois o mesmo é focado no exame. Ao estudar, tenha como principal objetivo fixar os conceitos, as responsabilidades de cada classe, conhecer as diferenças entre os métodos e suas assinaturas.&lt;br /&gt;&lt;br /&gt;Para ganhar mais de experiência e familiaridade com os temas, após terminar de ler o livro, procure ler artigos relacionados ao exame. Também tenha interesse por revistas técnicas. Eles te darão o mesmo conteúdo sob uma outra perspectiva, provavelmente mais focado nos problemas reais do dia-a-dia. Destaco os seguintes artigos:&lt;br /&gt;• Todos artigos do Israel Aéce (Por Dentro da Base Class Library): http://www.linhadecodigo.com.br/Artigo.aspx?id=2148&lt;br /&gt;• .NET Tutorials : http://www.beansoftware.com/NET-Tutorials/&lt;br /&gt;&lt;br /&gt;Também sugiro o livro CLR via C Second Edition Pro Developer. É um livro, que inclusive, é referenciado no MCTS Self-Paced Training Kit. É útil para ter um conhecimento mais forte sobre plataforma, recomendo para aqueles que tem tempo sobrando para lê-lo.&lt;br /&gt;&lt;br /&gt;Depois, com a base sólida, responder questões de simulados. O melhor jeito de fixar pontos é trabalhando com eles. Os testes sugeridos pela Microsoft são:&lt;br /&gt;• MeasureUp (Measureup.com)&lt;br /&gt;• Self Test Software (Selftestsoftware.com)&lt;br /&gt;&lt;br /&gt;Há também o polêmico Testking. Há preconceito quanto a esse simulado. Como muito de vocês já sabem, o Testking é conhecido por ter questões semelhantes às do exame real. Custa aproximadamente $70. Não tenho conhecimento sobre a opinião oficial da Microsoft a respeito da empresa.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. Visão geral as questões&lt;/span&gt;&lt;br /&gt;Conteúdo suspenso.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4. Na hora do Exame&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Faça um lanche reforçado, descanse bem e vá à luta! A Prometric pede para que o candidato chegue com meia hora de antecedência. É preciso ter duas formas de identificação, pode ser tanto sua identidade quanto sua carteira de motorista. Uma obrigatoriamente, precisa ter sua foto.&lt;br /&gt;&lt;br /&gt;Chegando ao local, não fique tímido pelas câmeras que estarão te filmando. Há uma grande introdução ao exame, mas nada do que você já não saiba. Também será pedido qualquer aparelho eletrônico que você possua, como celulares e players. Você tem aproximadamente duas horas para completar o exame de 40 questões. Leia atentamente as questões. Observe que há uma Checkbox no campo “Mark for Review” no campo esquerdo superior, use-a para marcar as questões que tem dúvida e focar nelas após o exame.&lt;br /&gt;&lt;br /&gt;Nunca deixe de revisar as questões! É de extrema importância, ao revisar uma questão você estará mais apto a identificar os detalhes relevantes para resolução do problema.&lt;br /&gt;&lt;br /&gt;Preste atenção nas questões deixadas para atrás. Há uma coisa muito chata (e que me tirou do sério) foi o fato de que clicar em alguns lugares fora das alternativas pode retirar a opção marcada. Certifique-se que todas as questões foram preenchidas. Antes finalizar o exame, o sistema mostra um grid com as questões deixadas em branco e as que foram marcadas para revisar. Há também uma calculadora caso você precise fazer algum cálculo.&lt;br /&gt;&lt;br /&gt;O principal é manter a calma, ler a questão se necessário mais de uma vez. E gastar tempo pensando e observando os detalhes. Sobrou tempo? Gaste o tempo revisando! Afinal, você não ganhará nada terminando mais cedo que seus amigos, e isso pode te salvar teu pescoço.&lt;br /&gt;&lt;br /&gt;Espero que este artigo tenha ajudado, qualquer dúvida fique a vontade para entrar em contato comigo. Um forte abraço a todos e boa sorte em seus exames!&lt;br /&gt;&lt;br /&gt;Referências:&lt;br /&gt;http://www.microsoft.com/learning/en/us/exams/70-536.aspx&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-2833670112580829549?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/2833670112580829549/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=2833670112580829549' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/2833670112580829549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/2833670112580829549'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2009/02/visao-geral-sobre-o-exame-70-536.html' title='Visão Geral sobre o Exame 70-536'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-5290077555885816493</id><published>2008-05-23T22:49:00.005-03:00</published><updated>2009-05-30T14:34:04.332-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>XML e WebService</title><content type='html'>1. o que é XML?&lt;br /&gt;XML (eXtensible Markup Language) é uma linguagem case sensitive de marcação (tag) utilizada para descrever dados e apresenta um conjunto extensível de comandos.&lt;br /&gt;&lt;br /&gt;ex.:&lt;br /&gt;&amp;lt;conjuntofamilia&amp;gt;&lt;br /&gt;&amp;lt;família&amp;gt;&lt;br /&gt;&amp;lt;nome&gt;Macedo&amp;lt;/nome&amp;gt;&lt;br /&gt;&amp;lt;componentes&gt;4&amp;lt;/componentes&amp;gt;&lt;br /&gt;&amp;lt;/família&amp;gt;&lt;br /&gt;&amp;lt;/conjuntofamilia&amp;gt;&lt;br /&gt;&lt;br /&gt;2. Definição dos tipos&lt;br /&gt;Para especificar os tipos de dados temos dois objetos:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;DTD - Data Type Definition&lt;br /&gt;&lt;/li&gt;&lt;li&gt;XML Schema - Sucessor do DTD&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;3. WebService&lt;br /&gt;&lt;br /&gt;É um serviço disponível para Internet com o objetivo de transmitir resultados de métodos e assim permitir a intercomunicação entre sistemas através do protocolo SOAP. Os dados trafegam em formato XML independentemente da linguagem usada na aplicação cliente do WebService.&lt;br /&gt;&lt;br /&gt;SOAP (Simple Object Access Protocol) é um protocolo que define como as &lt;i&gt;mensagens&lt;/i&gt; serão enviadas e recebidas entre dois sistemas. Ele pode ser veiculado pela porta 80 (a mesma porta de uso do protocolo HTTP).&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-5290077555885816493?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/5290077555885816493/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=5290077555885816493' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/5290077555885816493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/5290077555885816493'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2008/05/xml-e-webservice.html' title='XML e WebService'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-7770131942093897253</id><published>2008-05-19T14:53:00.010-03:00</published><updated>2009-05-30T14:34:29.248-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Objetos ADO.NET</title><content type='html'>&lt;span style="font-family:arial;font-size:78%;color:blue;"&gt;Video-Aula: Não disponível;&lt;br /&gt;Linguagem: Independe de Linguagem.&lt;/span&gt; &lt;p&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;1. Introdução&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Um banco de dados é uma coleção de informações. Nestes sistemas são contidas diferentes estratégias para a rápida manipulação e consistência de dados. Com esse tipo de sistema, o programador não precisa se preocupar com o modo em que os dados estão organizados internamente na base de dados.&lt;br /&gt;&lt;br /&gt;Como exemplo de sistemas de Banco de Dados de nível coorporativo, podemos citar o Microsoft SQL Server, Oracle, Informix, MySql, HSQL e DB2.&lt;br /&gt;&lt;br /&gt;O ADO.NET (ActiveX Data Objects)é a mais recente solução à acesso a camada de persistência da Microsoft. Através deste objeto uma linguagem de programação .NET é capaz de interagir com um banco de dados relacional. Conforme vimos, o ADO clássico sofreu muitas mudanças desde correção de vulnerabilidade até questões de agilidade.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;2. NET Providers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FZdBqp4CC1M/SDG_rBD86iI/AAAAAAAAAIE/vxKv8afuxQA/s1600-h/DotNetProvider.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5202149790329924130" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_FZdBqp4CC1M/SDG_rBD86iI/AAAAAAAAAIE/vxKv8afuxQA/s320/DotNetProvider.PNG" border="0" /&gt; &lt;/p&gt;&lt;/a&gt;&lt;center&gt;&lt;span style="font-family:arial;font-size:78%;"&gt;Fig01: Modelo do ADO.NET&lt;/span&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Providers são classes especiais que implementam a interface de acesso à dados do Banco. No Framework existem várias classes de acesso ao banco. São elas:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;SQL Provider : Acesso à base de dados SQL Server;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Oracle Provider : Provê acesso à bases Oracle&lt;/li&gt;&lt;br /&gt;&lt;li&gt;OleDB Provider: Provê acesso à bases de dados com Driver OleDB&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ODBC Provider: Acesso à banco de Dados com Driver ODBC&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;3. Namespaces&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O Namespace &lt;em&gt;System.Data&lt;/em&gt; contém todas as classes que implementam a arquitetura ADO.NET. Usualmente, o Namespace &lt;em&gt;System.Data&lt;/em&gt; é importado para evitar a necessidade de descrevermos sua origem. Vamos estudar agora os Namespaces do &lt;em&gt;System.Data&lt;/em&gt;.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;System.Data.Common&lt;/em&gt; : Este namespace contém classes que são compartilhadas em toda arquitetura ADO.NET.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;System.Data.OleDB : Contém objetos que permitem acessar provedores OLE-DB. Trata-se de classes flexíveis e são capazes de acessar muitas fontes de dados. O namespace foi testado pela Microsoft nos bancos SQL Server, Oracle e Access&lt;/li&gt;.&lt;br /&gt;&lt;li&gt;&lt;em&gt;System.Data.SqlClient: Este namespace herda do System.Data.Common anteriormente dito, contudo, ele é específico para o Microsoft SQL Server devido ao uso do protocolo TDS.&lt;/li&gt;&lt;span style="FONT-STYLE: italic"&gt;&lt;br /&gt;(Em Construção)&lt;/span&gt;&lt;/ul&gt;&lt;/em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;em&gt;&lt;/em&gt;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-7770131942093897253?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/7770131942093897253/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=7770131942093897253' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/7770131942093897253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/7770131942093897253'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2008/05/objetos-adonet.html' title='Objetos ADO.NET'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FZdBqp4CC1M/SDG_rBD86iI/AAAAAAAAAIE/vxKv8afuxQA/s72-c/DotNetProvider.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-1740367008155084135</id><published>2008-05-19T12:48:00.010-03:00</published><updated>2009-05-30T14:35:55.965-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Fazendo uma aplicação acessar o Banco de Dados</title><content type='html'>&lt;span style="font-family:arial;font-size:78%;color:blue;"&gt;Video-Aula: Não disponível;&lt;br /&gt;Linguagem: C#.&lt;/span&gt; &lt;p&gt;&lt;br /&gt;Neste artigo, irei demonstrar como uma conexão com banco de dados pode ser feita.Não irei entrar em muitos detalhes sobre o .NET Provider pois em breve, teremos um artigo que será estudado a fundo todos os atributos de conexão.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;1. Primeira Parte&lt;/span&gt;&lt;br /&gt;Inicie o Visual Studio. Nós teremos dois projetos. Um do tipo Windows Application, e o outroteremos uma Class Library. O projeto Windows Application será a Interface com o usuárioenquanto o segundo será o que chamaremos de DAL (Data Access Layer), a nossa base de Persistência.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_FZdBqp4CC1M/SDGhdBD86hI/AAAAAAAAAH8/K6DGLcwDN6E/s1600-h/SolutionExplorer.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5202116564462922258" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_FZdBqp4CC1M/SDGhdBD86hI/AAAAAAAAAH8/K6DGLcwDN6E/s320/SolutionExplorer.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;2. Sobre os objetos que iremos usar:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;DataGridView - Trata-se de uma grid que usamos para mostrar dados ao usuário final.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;br /&gt;3. Design Pattner&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pois bem. Vamos lá. Primeiro, criamos dois projetos que estão associados a uma Solução (Solution). O nosso projeto Windows Form irá usar os métodos de acesso ao Banco através do AccessDAL, isso torna o nosso Class Library o que chamamos de camada de Persistência. Ela irá acessar os dados do Banco e irá retornar apenas estas informações, com as quais a aplicação Windows irá organizar. Também é conhecido como MVC (Model-View-Controler).&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;br /&gt;4. No Windows Form&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Em Toolbox, instancie o componente DataGridView para o Form.&lt;br /&gt;&lt;span style="FONT-STYLE: italic"&gt;(Em Construção)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;5. No Class Library&lt;/span&gt;&lt;br /&gt;Crie um código parecido com o que há abaixo:&lt;br /&gt;&lt;br /&gt;&lt;table style="BORDER-COLLAPSE: collapse" bordercolor="#111111" cellspacing="0" cellpadding="0" width="95%" align="center" border="1"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;&lt;td width="100%" bgcolor="#ffffc4"&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Text;&lt;br /&gt;using System.Data.OleDb;&lt;br /&gt;using System.Data;&lt;br /&gt;&lt;br /&gt;namespace AccessDAL&lt;br /&gt;{&lt;br /&gt;public class Access&lt;br /&gt;{&lt;br /&gt;private OleDbConnection _conexaoAberta;&lt;br /&gt;&lt;br /&gt;public Access()&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void AbrirConexao()&lt;br /&gt;{&lt;br /&gt;String endBanco = "C:\\BDados1.mdb";&lt;br /&gt;String ConAccess = "provider=Microsoft.Jet.OLEDB.4.0;data source=" + endBanco;&lt;br /&gt;OleDbConnection Conn = new OleDbConnection(ConAccess);&lt;br /&gt;_conexaoAberta = Conn;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public DataTable ExibirDados()&lt;br /&gt;{&lt;br /&gt;String Consulta = "Select * From Alunos";&lt;br /&gt;DataTable DT = new DataTable();&lt;br /&gt;OleDbDataAdapter DA = new OleDbDataAdapter(Consulta, _conexaoAberta);&lt;br /&gt;DataSet DSet1 = new DataSet();&lt;br /&gt;&lt;br /&gt;DA.Fill(DSet1, "Alunos");&lt;br /&gt;DT = DSet1.Tables["Alunos"];&lt;br /&gt;&lt;br /&gt;return DT;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void FecharConexao()&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;_conexaoAberta.Close();&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="FONT-STYLE: italic"&gt;(Em construção...)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-1740367008155084135?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/1740367008155084135/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=1740367008155084135' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/1740367008155084135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/1740367008155084135'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2008/05/fazendo-uma-aplicao-acessar-o-banco-de.html' title='Fazendo uma aplicação acessar o Banco de Dados'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FZdBqp4CC1M/SDGhdBD86hI/AAAAAAAAAH8/K6DGLcwDN6E/s72-c/SolutionExplorer.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-4564697933448777050</id><published>2008-05-17T21:37:00.003-03:00</published><updated>2008-05-17T21:56:54.811-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Atualidades'/><title type='text'>Microsoft Surface</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_FZdBqp4CC1M/SC99kBD86fI/AAAAAAAAAHs/uAZps7JjeT4/s1600-h/surface.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5201514152349985266" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 116px; CURSOR: hand; HEIGHT: 105px" height="202" alt="" src="http://2.bp.blogspot.com/_FZdBqp4CC1M/SC99kBD86fI/AAAAAAAAAHs/uAZps7JjeT4/s320/surface.bmp" width="182" border="0" /&gt;&lt;/a&gt; Microsoft Surface é um produto similar ao que seria a uma superfície inteligente. Contém funções multi-touch&lt;br /&gt;e interage de acordo com os movimentos.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;embed src="http://www.youtube.com/v/keAp6iLiyWw&amp;amp;hl=" width="425" height="355" type="application/x-shockwave-flash" wmode="transparent"&gt;&lt;/embed&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Site Oficial: &lt;a href="http://www.microsoft.com/surface/" target="_blank"&gt;http://www.microsoft.com/surface/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-4564697933448777050?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/4564697933448777050/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=4564697933448777050' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/4564697933448777050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/4564697933448777050'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2008/05/microsoft-surface.html' title='Microsoft Surface'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_FZdBqp4CC1M/SC99kBD86fI/AAAAAAAAAHs/uAZps7JjeT4/s72-c/surface.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-4197686954519407308</id><published>2008-05-17T20:03:00.013-03:00</published><updated>2009-05-30T14:36:25.305-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><title type='text'>Introdução ao ASP.NET</title><content type='html'>Vamos falar um pouco sobre ASP.NET e sua colaboração com a construção da Web. Um pouco da tragetória até chegarmos a solução atual da Microsoft.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;1. Arquitetura Cliente/Servidor&lt;/span&gt;&lt;br /&gt;Definimos arquitetura Cliente/Servidor como um sistema com o qual contamos com dois componentes essenciais:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Uma máquina do tipo Cliente - A máquina receptora &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Uma máquina Servidora - A máquina que transmite informações para o computador de um cliente&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;2. O que é ASP.NET?&lt;/span&gt;&lt;br /&gt;&lt;center&gt;&lt;img id="BLOGGER_PHOTO_ID_5201505253177747938" style="WIDTH: 294px; HEIGHT: 90px" src="http://2.bp.blogspot.com/_FZdBqp4CC1M/SC91eBD86eI/AAAAAAAAAHk/nJ5swuSPhI0/s320/aspnet.gif" border="0" /&gt;&lt;/center&gt;&lt;br /&gt;Trata-se de uma solução vinda do ASP (Active Server Pages). Possui alguns bons atributos do ASP clássico porém com diferenças significativas. Por exemplo, no ASP, programa-se juntamente com VBScript, sem qualquer recurso de orientação a objetos e forçados a escrever tags HTML, JavaScript e scripts do lado do servidor em um mesmo módulo, sem qualquer suporte para depuração. Com o ASP.NET, temos o código do client e do server separados, que facilita a vida de programadores e de designers.&lt;br /&gt;&lt;br /&gt;Outra característica é que podemos escrever em qualquer linguagem disponível para o framework, ou seja, podemos escrever nossas aplicações tanto C#, tanto em Visual Basic, tanto em Cobol.Net.&lt;br /&gt;Para desenvolver em ASP.NET, pode-se começar usando o simples Notepad e um compilador .NET. Contudo, há ambientes de desenvolvimento com recursos interessantes, entre outros.&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-4197686954519407308?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/4197686954519407308/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=4197686954519407308' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/4197686954519407308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/4197686954519407308'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2008/05/que-aspnet.html' title='Introdução ao ASP.NET'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_FZdBqp4CC1M/SC91eBD86eI/AAAAAAAAAHk/nJ5swuSPhI0/s72-c/aspnet.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-1975824368191832616</id><published>2008-05-16T19:05:00.014-03:00</published><updated>2009-05-30T14:35:35.283-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Criando sua Primeira Aplicação em .NET</title><content type='html'>&lt;font color="blue" size="1"face="arial"&gt;Video-Aula: Não disponível;&lt;br /&gt;Linguagem: VB.NET.&lt;/font&gt;&lt;p/&gt;&lt;br /&gt;Vamos criar uma pequena calculadora somente para fins de estudo. Faremos a mesma passo-a-passo e exploraremos um pouco mais sobre os recursos e vantagens do Windows Form.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Primeiros Passos&lt;/span&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FZdBqp4CC1M/SC4HIRD86bI/AAAAAAAAAHM/TEF7SE0FdS0/s1600-h/imgStartPage.PNG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; cursor: pointer;" src="http://2.bp.blogspot.com/_FZdBqp4CC1M/SC4HIRD86bI/AAAAAAAAAHM/TEF7SE0FdS0/s320/imgStartPage.PNG" alt="" id="BLOGGER_PHOTO_ID_5201102458259827122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Inicie o Visual Studio. Estou usando a versão 2005, usando o framework 2.0. Neste exemplo, escreverei em VB.NET. Portanto, Vá em &lt;span style="font-style: italic;"&gt;File -&gt; New -&gt; Project&lt;/span&gt;. No campo Name, devemos escrever o nome do nosso projeto. Colocarei &lt;span style="font-weight: bold;"&gt;RMCalculadora&lt;/span&gt;. Em Location, que é o endereço físico onde a aplicação estará, normalmente como padrão é a pasta Projects, e finalmente a &lt;span style="font-style: italic;"&gt;Solution Name &lt;/span&gt;é o nome da solução, propriamente dita, neste Campo coloque Calculadora. Em Templates, selecione o Item &lt;span style="font-style: italic;"&gt;Windows Application&lt;/span&gt;. Clique em &lt;span style="font-style: italic;"&gt;'Ok'&lt;/span&gt; para iniciar o Template.&lt;br /&gt;&lt;br /&gt;Neste momento, o Visual Studio fará todas as referências e importará todas as classes para que seja possivel nossa programação. Teremos a seguinte janela abaixo:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FZdBqp4CC1M/SC4LqxD86cI/AAAAAAAAAHU/F7avHH4LE_Y/s1600-h/imgFormulario.PNG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; cursor: pointer;" src="http://4.bp.blogspot.com/_FZdBqp4CC1M/SC4LqxD86cI/AAAAAAAAAHU/F7avHH4LE_Y/s320/imgFormulario.PNG" alt="" id="BLOGGER_PHOTO_ID_5201107449011825090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Vamos para uma parte um pouco mais interessante. Vamos falar sobre alguns controles do menu ToolBox:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Label - Nos permite escrever textos em aplicações. O valor desses textos podem ser mudados de acordo com a programação feita. Por definição, os usuários do sistema não serão capazes de alterar seu valor.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Textbox - Trata-se de um verdadeiro canal de entrada de informações por parte do usuário. Por definição apenas o usuário pode preencher valores.&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Button - Trata-se de um botão, algo que poderá gerar um &lt;span style="font-style: italic;"&gt;evento&lt;/span&gt; no sistema.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Faremos nossa pequena calculadora com apenas estes três controles. Para você que conhece sobre Delphi, não terá dificuldade em realizar a próxima etapa.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Organizando seu Windows Form&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Em cada controle, existe uma propriedade chamada &lt;span style="font-style: italic;"&gt;Name&lt;/span&gt;. Essa propriedade nos permite chamar estes objetos e assim programa-los. Para acessar, selecione o objeto (por exemplo, a Textbox) e vá em Properties. Por definição, ele está localizado abaixo do Solution Explorer. Organize os objetos e modifique suas propriedades de acordo com a imagem explicativa abaixo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FZdBqp4CC1M/SC4RaBD86dI/AAAAAAAAAHc/9kn7thwAPiQ/s1600-h/imgPropriedades.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_FZdBqp4CC1M/SC4RaBD86dI/AAAAAAAAAHc/9kn7thwAPiQ/s320/imgPropriedades.PNG" alt="" id="BLOGGER_PHOTO_ID_5201113758318782930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Vamos com a Programação!&lt;/span&gt;&lt;br /&gt;Vamos fazer a parte um pouco mais interessante neste exemplo e vamos às facilidares do framework. Clique duas vezes sobre o objeto btnCalcular, ele irá criar um método e  associá-lo ao evento &lt;span style="font-style:italic;"&gt;Click&lt;/span&gt; do botão. O código gerado é similar abaixo:&lt;br /&gt;&lt;br /&gt;&lt;font face="arial" color="blue" size="2"&gt;Private Sub &lt;/font&gt;txtCalcular_Click&lt;font face="arial" color="blue" size="2"&gt;(ByVal &lt;/font&gt; sender &lt;font face="arial" color="blue" size="2"&gt;As&lt;/font&gt; System.Object, &lt;font face="arial" color="blue" size="2"&gt;ByVal &lt;/font&gt; e &lt;font face="arial" color="blue" size="2"&gt;As &lt;/font&gt;System.EventArgs&lt;font face="arial" color="blue" size="2"&gt;) Handles &lt;/font&gt; txtCalcular.Click&lt;br /&gt;&lt;font face="arial" color="blue" size="2"&gt; End Sub&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Temos aqui algumas palavras-reservadas da linguagem.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt; Private - Garante que o método só possa ser invocado dentro da Classe que pertence&lt;/li&gt;  &lt;br /&gt;&lt;li&gt; Sub - Refere-se a um método que não retorna valor algum.&lt;/li&gt;&lt;br /&gt;&lt;li&gt; End Sub - Significa o fim do método&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;O que precisamos entender é que este método no momento é que este método é referenciado pelo evento click apartir da palavra reservada &lt;span style="font-style:italic;"&gt;handles&lt;/span&gt;. Para fins academicos, criaremos um método chamado Somar, que receberá dois valores do tipo Inteiro. Teremos o seguinte método:&lt;br /&gt;&lt;br /&gt;&lt;font face="arial" color="blue" size="2"&gt;Private Function &lt;/font&gt; Calcular(&lt;font face="arial" color="blue" size="2"&gt;ByVal&lt;/font&gt; numeroUm, &lt;font face="arial" color="blue" size="2"&gt;ByVal&lt;/font&gt; numeroDois) &lt;font face="arial" color="blue" size="2"&gt;as Integer&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;        &lt;font face="arial" color="blue" size="2"&gt;Dim &lt;/font&gt; Resultado &lt;font face="arial" color="blue" size="2"&gt;As Integer&lt;/font&gt;&lt;br /&gt;        Resultado = numeroUm + numeroDois&lt;br /&gt;        &lt;font face="arial" color="blue" size="2"&gt;Return&lt;/font&gt; Resultado&lt;br /&gt;   &lt;font face="arial" color="blue" size="2"&gt; End Function &lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Então, no momento temos dois métodos em nossa Classe. Neste último, temos a declaração da variável Resultado, e dos parâmetros numeroUm e numeroDois. Parâmetros são valores que passaremos para o nosso método Calcular, e como veremos posteriormente, é o que chamamos de encapsulamento na Programação Orientada a Objetos (OO). &lt;br /&gt;&lt;br /&gt;Agora, vamos usar este método. Lembram-se do método que o Visual Studio criou automaticamente? Pois bem, veja o código do uso do método abaixo:&lt;br /&gt;&lt;br /&gt;   &lt;font face="arial" color="blue" size="2"&gt;Private Sub&lt;/font&gt; txtCalcular_Click(&lt;font face="arial" color="blue" size="2"&gt;ByVal &lt;/font&gt; sender As System.Object, ByVal e As System.EventArgs) &lt;font face="arial" color="blue" size="2"&gt;Handles txtCalcular.Click&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;font face="arial" color="blue" size="2"&gt;Dim &lt;/font&gt; intResultado &lt;font face="arial" color="blue" size="2"&gt;As Integer&lt;/font&gt;&lt;br /&gt;        intResultado = Calcular(txtValor1.Text, txtValor2.Text)&lt;br /&gt;&lt;br /&gt;        MessageBox.Show("Valor" + intResultado.ToString(), "Resultado")&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;Este método declara uma variável do tipo inteiro, e atribui o valor da nossa função Calcular a esta variável. Nós usamos o método Show do Objeto MessageBox para mostrar uma mensagem do tipo Alert do Windows, informando o resultado.&lt;br /&gt;&lt;br /&gt;Um bom exercício para se praticar é acrescentar os métodos Subtrair/Multiplicar e Dividir.&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-1975824368191832616?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/1975824368191832616/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=1975824368191832616' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/1975824368191832616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/1975824368191832616'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2008/05/criando-sua-primeira-aplicao-em-net.html' title='Criando sua Primeira Aplicação em .NET'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_FZdBqp4CC1M/SC4HIRD86bI/AAAAAAAAAHM/TEF7SE0FdS0/s72-c/imgStartPage.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-8225661288386253834</id><published>2008-05-16T15:28:00.015-03:00</published><updated>2009-05-30T14:35:00.249-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Introdução ao .NET Framework</title><content type='html'>&lt;font color="blue" size="1"face="arial"&gt;Video-Aula: Não disponível;&lt;br /&gt;Linguagem: Independe de Linguagem.&lt;/font&gt;&lt;p/&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.commercehelper.com/Images/dotnet_logo.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 192px; height: 112px;" src="http://www.commercehelper.com/Images/dotnet_logo.jpg" alt="" border="0" /&gt;&lt;/a&gt; Trata-se de um novo paradigma que provê benefícios e vantagens para quem se dedica no estudo dessa técnica. Antes de iniciarmos os estudos, vejamos como funcionava a programação antes do uso de Máquinas Virtuais.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Conceitos&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FZdBqp4CC1M/SC3VURD86XI/AAAAAAAAAGs/e_uXnjqf5Fg/s1600-h/visaodotnetframework.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_FZdBqp4CC1M/SC3VURD86XI/AAAAAAAAAGs/e_uXnjqf5Fg/s320/visaodotnetframework.png" alt="" id="BLOGGER_PHOTO_ID_5201047688836868466" border="0" /&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;center&gt;Figura 01 : Esta é a visão geral de como funciona o .NET Framework.&lt;/center&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Antigamente, programavamos diretamente no hardware das máquinas, com linguagens tipo Assembly. Mas havia um crucial problema: Era difícil manter a operatividade entre diversas máquinas, ou seja, programava-se para apenas um tipo de hardware.&lt;br /&gt;&lt;br /&gt;Com o avanço da Tecnologia, surgiu a possibilidade de programar diretamente para o Sistema Operacional, ao invés de programar diretamente no hardware. Logo, todas as máquinas que rodavam determinado sistema operacional poderiam rodar os aplicativos criados. Pois era o Sistema Operacional que controlava o Hardware, não mais o programador. Algumas das linguagens que controlam o sistema operacional: Delphi, Visual Basic 6.0, C, C++ e Lazarus.&lt;br /&gt;&lt;br /&gt;Com o passar dos tempos, ainda permanecemos com o problema de incompatibilidade entre sistemas operacionais. por exemplo: Um sistema feito para Windows, dificilmente funcionaria em uma plataforma diferente como Unix ou Linux. Daí surge o conceito de Máquina Virtual. O novo paradigma é programar em cima de uma máquina Virtual conforme pode-se observar na figura 01. Com isso, nós ganhamos &lt;span style="font-weight: bold;"&gt;Portabilidade&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. O que é .NET FrameWork?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;.NET Framework é um software gratuito tipo máquina virtual, necessário para rodar aplicações escritas em .NET. Provê a CLR (Common Language Runtime) que é uma enorme biblioteca nativa do .NET, presente em todas as linguagens.NET.&lt;br /&gt;&lt;br /&gt;Ao contrário que muitos imaginam, .NET não é uma linguagem de programação. Trata-se de uma plataforma de desenvolvimento de última geração e em constante aprimoramento. A partir desta plataforma, temos aproximadamente 96 linguagens para programação neste framework, inclusive uma desenvolvida por brasileiros chamada Lunar. As linguagens mais conhecidas em .NET são: VB.NET (Totalmente orientada a Objetos, como veremos nos próximos artigos), C# (Linguagem nascida apartir do glorioso c++) e F#.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Qual a melhor linguagem?&lt;/span&gt;&lt;br /&gt;Não existe melhor linguagem para a plataforma. Isso pode ser explicado ao analisarmos o processo de compilação.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FZdBqp4CC1M/SC3gkxD86YI/AAAAAAAAAG0/gGTzIkXh8gI/s1600-h/visaodecompilacao.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_FZdBqp4CC1M/SC3gkxD86YI/AAAAAAAAAG0/gGTzIkXh8gI/s320/visaodecompilacao.PNG" alt="" id="BLOGGER_PHOTO_ID_5201060066932615554" border="0" /&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;center&gt;Figura 01 : Esta é a visão geral de como funciona o .NET Framework.&lt;/center&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Na imagem acima, vemos o primeiro estágio do nosso programa, o código-fonte. Ao iniciarmos o processo de compilação, tudo o que escrevemos passa pelo compilador, e traduzirá todo o nosso código para uma espécie de código pré-pronto da plataforma.&lt;br /&gt;&lt;br /&gt;Todo solicitação de seu aplicativo irá acontecer graças ao segundo compilador, o JIT, levando à máquina virtual apenas o que foi pedido pelo usuário, isso em tempo de execução. Resumindo: Todo código que criamos é convertido ao que chamamos de MSIL (Microsoft Intermediate Language), portanto acabou o chororô dos VBmaniacs =)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Comparação entre as Linguagens&lt;/span&gt;&lt;br /&gt;Apenas para analisarmos o quão fácil e limpa são as linguagens .Net, acompanhe abaixo a comparação entre as linguagens C# e VB.NET.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FZdBqp4CC1M/SC3tbxD86aI/AAAAAAAAAHE/UoOXix87XRg/s1600-h/comparacaocsharpvb.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_FZdBqp4CC1M/SC3tbxD86aI/AAAAAAAAAHE/UoOXix87XRg/s400/comparacaocsharpvb.PNG" alt="" id="BLOGGER_PHOTO_ID_5201074205964954018" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-8225661288386253834?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/8225661288386253834/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=8225661288386253834' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/8225661288386253834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/8225661288386253834'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2008/05/introduo-ao-net-framework.html' title='Introdução ao .NET Framework'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_FZdBqp4CC1M/SC3VURD86XI/AAAAAAAAAGs/e_uXnjqf5Fg/s72-c/visaodotnetframework.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-114515486131464876</id><published>2006-04-15T22:49:00.000-03:00</published><updated>2006-04-15T23:34:21.333-03:00</updated><title type='text'>Analisando o Sucesso</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/6770/2524/1600/albhabibs.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 142px; height: 233px;" src="http://photos1.blogger.com/blogger/6770/2524/320/albhabibs.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Vamos analisar aqui a rede de restaurante Habib's. Quando tiver mais tempo, escreverei um resumo sobre a história do Habib's e também sobre seu fundador: Alberto Saraiva.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1) Descreva as 5 forças competitivas de M. Porter:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    Constantes inovações:&lt;/span&gt; criação de vantagens competitivas apropriadas;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    Potencial dos clientes: &lt;/span&gt;fidelização dos clientes aliado a um bom serviço;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    Competição:&lt;/span&gt; maior preocupação com a qualidade do serviço prestado e seu preço;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    Potencial dos Fornecedores:&lt;/span&gt; produto do fornecedor deve ser único;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    Entrada de novos concorrentes em potencial:&lt;/span&gt; nocivo à empresa pois a expectativa dos consumidores geralmente cresce com novos produtos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2) Quais as vantagens competitivas do HABIB’s?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    Atendimento: &lt;/span&gt;funcionários especializados no atendimento ao cliente;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    Preço acessível a população:&lt;/span&gt; a variedade de produtos com preços acessíveis é um grande diferencial positivo neste restaurante;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    Premiaçào dos funcionários:&lt;/span&gt; Com a congratulação com prêmios, os funcionários sentem-se mais capacitados e mais dispostos à servir melhor a empresa;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    Solidez financeira: &lt;/span&gt;com endividamento ZERO, garante de estabilidade à empresa financeira e lucratividade sem auxílio de emprestimos bancários;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    Fidelização dos clientes:&lt;/span&gt; clientes são tratados especialmente;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    Criação do UTI HABIB’s:&lt;/span&gt; um setor especial da empresa cuja função é gratificar os clientes que se sentirem prejudicados.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    Capacitação dos funcionários&lt;/span&gt;: cursos gratuitos aos funcionários para melhor atender os requisitos empresariais;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;p:colorscheme colors="#ffffff,#000000,#808080,#000000,#00cc99,#3333cc,#ccccff,#b2b2b2"&gt;  &lt;/p:colorscheme&gt;&lt;div shape="_x0000_s1026" class="O" style="text-align: center;"&gt;&lt;span style="font-family: Verdana; font-size: 20pt;"&gt;“Passei minha vida oferecendo MAIS e cobrando MENOS, sempre tentando surpreender as pessoas e &lt;/span&gt;&lt;span style="font-family: Verdana; font-size: 28pt;"&gt;meus clientes com esse diferencial”.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-114515486131464876?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/114515486131464876/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=114515486131464876' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/114515486131464876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/114515486131464876'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2006/04/analisando-o-sucesso.html' title='Analisando o Sucesso'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-114515180899723522</id><published>2006-04-15T22:27:00.000-03:00</published><updated>2006-04-15T22:43:29.010-03:00</updated><title type='text'>Conhecendo o Meio Empresarial</title><content type='html'>Vamos conhecer a liberdade e o ambiente empresarial em que o funcionário Antônio J.S.H tem em seu trabalho &lt;span style="font-weight: bold;"&gt;X&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Qual é o organograma da empresa, ou de sua área de trabalho?&lt;/span&gt;&lt;br /&gt;R: Presidência,  segue após as diretorias e depois a coordenadoria.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. A Estrutura da administração é vertical ou horizontal?&lt;/span&gt;&lt;br /&gt;R: Vertical&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Por quantos degraus sua idéia tem que passar para chegar até o conhecimento da diretoria?&lt;/span&gt;&lt;br /&gt;R: Uns cinco degraus. Por aí.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Você sabe qual é a estratégia da Empresa? Sabe quem são os responsáveis por ela?&lt;/span&gt;&lt;br /&gt;R: Não sei responder essa questão. Talvez criar uma fidelidade nos clientes. Trabalhamos com alimentos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5. Existe algum plano de carreira, cargos e salários?&lt;/span&gt;&lt;br /&gt;R. Há uma evolução dos cargos, por exemplo, se um funcionário se mostra interessado em crescer na empresa e juntamente se mostra capacitado,  depois de alguns testes feito pelos diretores, esse funcionário tem uma oportunidade de evoluir de cargo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6. Existe algum projeto de retenção de talentos, como por exemplo, o&lt;br /&gt;pagamento de MBA, prêmios, ações preferenciais ou promoções aos que mais se desatacam?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;R. Sim, há, como expliquei anteriormente, uma evolução nos cargos quando o profissional se mostra capacitado para o mesmo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;7. A empresa distribui participação nos lucros para todos os&lt;br /&gt;&lt;br /&gt;empregados?&lt;/span&gt;&lt;br /&gt;R. Não.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;8. Existe algum tipo de avaliação do seu trabalho? Qual é a&lt;br /&gt;&lt;br /&gt;periodicidade? Suas chefias também são avaliadas?&lt;/span&gt;&lt;br /&gt;R: Sim. Normalmente sou avaliado pelas horas que fico na empresa, e&lt;br /&gt;&lt;br /&gt;pela pontualidade na entrega de trabalhos. Todos são       &lt;br /&gt;&lt;br /&gt;avaliados.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;9. A empresa segue algum tipo de dress code?&lt;/span&gt;&lt;br /&gt;R: Sim, apenas usamos um crachá com o logotipo da empresa e o nome do&lt;br /&gt;&lt;br /&gt;funcionário mais o número de identificação do mesmo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;10. Existe plano de treinamento/capacitação individual? Algum treinamento virtual como um e-learning?&lt;/span&gt;&lt;br /&gt;R: No site da empresa, o administrador disponibiliza algumas&lt;br /&gt;&lt;br /&gt;apostilas para capacitação profissional. Há também palestras.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;11. A sua empresa tem ou segue algum sistema de qualidade do tipo ISO&lt;br /&gt;&lt;br /&gt;ou metodologia?&lt;/span&gt;&lt;br /&gt;R: Não que eu saiba.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;12. Seu ambiente de trabalho é agradável, bem iluminado, tem&lt;br /&gt;temperatura adequada, é limpo e arejado?&lt;/span&gt;&lt;br /&gt;R: Se há um ponto positivo em minha empresa, eu posso afirmar que o&lt;br /&gt;ambiente certasmente é. Bastante florido, e ainda tenho a possibilidade de arrumar minha mesa e colocá-la do modo que eu quero.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;13. Você é cobrado pelo cumprimento dos prazos e qualidade do trabalho executado ou pela quantidade de horas trabalhadas e pela sua assiduidade e pontualidade? Ambos?&lt;/span&gt;&lt;br /&gt;R: Sim. Ainda mais que tenho um chefe estupidamente chato (risos).&lt;br /&gt;Porém há outros, os chamados privilegiados, não são cobrados da mesma forma.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;14. Seu chefe valoriza o profissional do tipo "puxa saco"?&lt;/span&gt;&lt;br /&gt;R: Com certeza. Aquele que apenas faz o que é pedido é o perfil profissional modelo em minha doce empresa (risos).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;15: Como é feita a escolha de possíveis candidatos a vagas de emprego na sua empresa?&lt;/span&gt;&lt;br /&gt;R: Das mais variadas formas: Desde provas até indicações de profissionais.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;16: Qual é o modelo que você acha que seria o ideal?&lt;/span&gt;&lt;br /&gt;R:Tratamento dos funcionários de maneira igualitária. Percebo que os mais distantes dos cargos "principais" (limpadores, digitadores...) são tratados de forma diferente dos que ocupam os cargos de elite. Também percebo o desleixo de alguns funcionários, e como são parentes de "funcionários de alto nível" não são punidos e/ou cobrados da mesma forma que eu e outros funcionários.&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-114515180899723522?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/114515180899723522/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=114515180899723522' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/114515180899723522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/114515180899723522'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2006/04/conhecendo-o-meio-empresarial.html' title='Conhecendo o Meio Empresarial'/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24355819.post-114279524644229352</id><published>2006-03-19T16:05:00.000-03:00</published><updated>2006-03-19T16:07:26.443-03:00</updated><title type='text'></title><content type='html'>Antes de mais nada, agradeço sua visita a este blog. Espero que ele lhe seja útil de alguma forma.  Confesso que a idéia de ter um blog (ou flog) nunca me veio a mente, mas  graças ao Horácio (um professores da UCAM)  sugeriu que eu criasse este espaço com fins profissionais. E aqui estou, como um grande guerreiro, aprendendoa mexer nessa "novidade antiga" Espero não precisar de me humilhar por comentários e/ou receber mensagens do tipo "Muito interessante seu Blog. Visite o meu", se quiser comente, senão sinta-se a vontade apenas por olhas as imagens rs. &lt;br /&gt;É isso aí, abraços a todos que tiveram a paciência de ler isso tudo.&lt;br /&gt;&lt;br /&gt;Caso você seja da minha universidade, cobre-me um doce na próxima segunda-feira.&lt;br /&gt;&lt;br /&gt;Rodrigo.&lt;div class="blogger-post-footer"&gt;As informaç?es contidas aqui n?o foram retiradas de qualquer outro meio. 
Caso alguma informaç?o seja de seu interesse e com isso deseja copi?-la,
mande-me um e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24355819-114279524644229352?l=rodrigomacedo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodrigomacedo.blogspot.com/feeds/114279524644229352/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24355819&amp;postID=114279524644229352' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/114279524644229352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24355819/posts/default/114279524644229352'/><link rel='alternate' type='text/html' href='http://rodrigomacedo.blogspot.com/2006/03/antes-de-mais-nada-agradeo-sua-visita_19.html' title=''/><author><name>Rodrigo Macedo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_FZdBqp4CC1M/R-kX4kwT24I/AAAAAAAAADs/__Dz-1OR0Po/S220/eu.JPG'/></author><thr:total>1</thr:total></entry></feed>
