<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>®::Rafael Rodrigues::®</title>
	<atom:link href="http://rafaelrgi.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://rafaelrgi.wordpress.com</link>
	<description>«Uéb Blógue»</description>
	<lastBuildDate>Fri, 09 Apr 2010 14:51:23 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='rafaelrgi.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>®::Rafael Rodrigues::®</title>
		<link>http://rafaelrgi.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://rafaelrgi.wordpress.com/osd.xml" title="®::Rafael Rodrigues::®" />
	<atom:link rel='hub' href='http://rafaelrgi.wordpress.com/?pushpress=hub'/>
		<item>
		<title>SQL Snippets</title>
		<link>http://rafaelrgi.wordpress.com/2010/04/09/sql_snippets/</link>
		<comments>http://rafaelrgi.wordpress.com/2010/04/09/sql_snippets/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 14:42:00 +0000</pubDate>
		<dc:creator>Rafael Rodrigues</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[Sql]]></category>
		<category><![CDATA[snippet]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://rafaelrgi.wordpress.com/?p=32</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;&#8221;Snippets&#8221; são pequenos trechos de código reutilizável que é sempre bom termos à mão, em caso de esquecimento! Eles normalmente resolvem um problema bem específico &#8211; acertam &#8220;na mosca&#8221;. &#160;&#160;&#160;&#160;Listo abaixo então alguns snippets de Sql &#8211; todos utilizados no SqlServer, por ser o banco que mais tenho usado atualmente: Formatar data (dd/mm/aaaa): Mudar o [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rafaelrgi.wordpress.com&amp;blog=2170734&amp;post=32&amp;subd=rafaelrgi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div style="text-align:justify;"> &nbsp;&nbsp;&nbsp;&nbsp;&#8221;<em>Snippets</em>&#8221; são pequenos trechos de código reutilizável que é sempre bom termos à mão, em caso de esquecimento! Eles normalmente resolvem um problema bem específico &#8211; acertam &#8220;na mosca&#8221;.<br />
&nbsp;&nbsp;&nbsp;&nbsp;Listo abaixo então alguns <em>snippets</em> de Sql &#8211; todos utilizados no SqlServer, por ser o banco<br />
que mais tenho usado atualmente:<strong> </strong></p>
<p><span style="color:#000080;"><strong><br />
Formatar data (<em>dd/mm/aaaa</em>):</strong></span><strong> </strong></p>
<p><pre class="brush: sql;">SELECT CONVERT(CHAR, GETDATE(), 103)</pre></p>
<p><span style="color:#000080;"><strong>Mudar o dia de uma data (ex.: dia 10):</strong></span></p>
<p><pre class="brush: sql;">UPDATE tabela SET DATAATUALIZACAO = DATEADD(D, 10-DATEPART(DAY, campo_data), campo_data)</pre></p>
<p><strong> </strong></p>
<p><span style="color:#000080;"><strong>Truncar uma data (remover o horário):</strong></span><strong> </strong></p>
<p><pre class="brush: sql;">SELECT DATEADD(d, DATEDIFF(d, 0, GETDATE()), 0)</pre></p>
<p>OU</p>
<p><pre class="brush: sql;">SELECT CAST(FLOOR(CAST(campo_data AS DECIMAL(12, 5))) AS DATETIME) FROM tabela</pre></p>
<p><span style="color:#000080;"><strong><br />
Ano é bissexto?</strong></span></p>
<p><pre class="brush: sql;">
SELECT
CASE DATEPART(d, DATEADD(d, 1, (CAST((CONVERT(VARCHAR(4), @ano) + '0228') AS DATETIME))))
  WHEN 29 THEN 1
  ELSE 0
END
</pre></p>
<p><strong> </strong></p>
<p><span style="color:#000080;"><strong>Concatenar linhas de um campo (exibir s/ quebras de linha):</strong></span><strong> </strong></p>
<p><pre class="brush: sql;">
SELECT REPLACE(campo, CHAR(13), ' ') FROM tabela
</pre></p>
<p><span style="color:#000080;"><strong><br />
Remover quebras de linha de um campo:</strong></span></p>
<p><pre class="brush: sql;">
UPDATE tabela SET campo = REPLACE(campo, CHAR(13), ' ') FROM tabela
</pre></p>
<p><strong> </strong></p>
<p><span style="color:#000080;"><strong><br />
Encontrar registros duplicados:</strong></span><strong> </strong></p>
<p><pre class="brush: sql;">
SELECT campo, COUNT(*) Qtde FROM tabela GROUP BY campo HAVING COUNT(*) &gt; 1
</pre></p>
<p>OU</p>
<p><pre class="brush: sql;">SELECT campo_comparar, campo_id FROM tabela WHERE campo_comparar IN
(
  SELECT campo_comparar FROM tabela GROUP BY campo_comparar HAVING COUNT(*) &gt; 1
)
ORDER BY campo_comparar</pre></p>
<p><strong> </strong></p>
<p><span style="color:#000080;"><strong>Excluir registros duplicados:</strong></span><strong> </strong></p>
<p><pre class="brush: sql;">
DELETE X
FROM
(
  SELECT ROW_NUMBER() OVER(PARTITION BY campo_comparar ORDER BY campo_id) AS SEQ FROM tabela
) X
WHERE SEQ &gt; 1
</pre></p>
<p><strong> </strong></p>
<p><span style="color:#000080;"><strong>Fazer backup:</strong></span><strong> </strong></p>
<p><pre class="brush: sql;">
BACKUP DATABASE NOME_BANCO_DADOS TO DISK = caminho WITH CHECKSUM, DESCRIPTION = description
</pre></p>
<p><strong> </strong></p>
<p><span style="color:#000080;"><strong>Verificar se uma tabela existe:</strong></span><strong> </strong></p>
<p><pre class="brush: sql;">
IF EXISTS (SELECT 1 FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[tabela]') AND TYPE IN (N'U'))
  PRINT 'Ufa, a tabela existe!'
ELSE
  PRINT 'Ops...'
</pre></p>
<p><span style="color:#000080;"><strong>Obtendo informações sobre uma tabela:</strong></span></p>
<p><pre class="brush: sql;">
SELECT
   ORDINAL_POSITION
  ,COLUMN_NAME
  ,DATA_TYPE
  ,CHARACTER_MAXIMUM_LENGTH
  ,IS_NULLABLE
  ,COLUMN_DEFAULT
FROM
  INFORMATION_SCHEMA.COLUMNS
WHERE
  TABLE_NAME = 'tabela'
ORDER BY
  ORDINAL_POSITION ASC;
</pre></p>
<p><span style="color:#888888;"><br />
Você sabia:<br />
Que a luz do sol leva aproximadamente 8 minutos para chegar à terra?</span></p>
</div>
<br />Filed under: <a href='http://rafaelrgi.wordpress.com/category/todas/programacao/'>Programação</a>, <a href='http://rafaelrgi.wordpress.com/category/todas/programacao/sql-programacao-todas/'>Sql</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rafaelrgi.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rafaelrgi.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rafaelrgi.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rafaelrgi.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rafaelrgi.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rafaelrgi.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rafaelrgi.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rafaelrgi.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rafaelrgi.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rafaelrgi.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rafaelrgi.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rafaelrgi.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rafaelrgi.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rafaelrgi.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rafaelrgi.wordpress.com&amp;blog=2170734&amp;post=32&amp;subd=rafaelrgi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rafaelrgi.wordpress.com/2010/04/09/sql_snippets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c7a297cfe4acc33c1f6e1cb1dac817c0?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Rafael Rodrigues</media:title>
		</media:content>
	</item>
		<item>
		<title>Usabilidade</title>
		<link>http://rafaelrgi.wordpress.com/2008/05/16/usabilidade/</link>
		<comments>http://rafaelrgi.wordpress.com/2008/05/16/usabilidade/#comments</comments>
		<pubDate>Fri, 16 May 2008 14:07:00 +0000</pubDate>
		<dc:creator>Rafael Rodrigues</dc:creator>
				<category><![CDATA[Todas]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[qualidade]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Usabilidade]]></category>

		<guid isPermaLink="false">http://rafaelrgi.wordpress.com/?p=30</guid>
		<description><![CDATA[OU &#8221;Seja Amigo Do Usuário&#8221;   As pessoas querem comodidade. Queremos sempre fazer as coisas do modo mais fácil possível. Trocamos o canal da TV usando o controle remoto, ao invés de termos de levantar da poltrona e ir até o aparelho. Jogamos a roupa suja na máquina e ela nos devolve limpa e perfumada. Comodidade, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rafaelrgi.wordpress.com&amp;blog=2170734&amp;post=30&amp;subd=rafaelrgi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h3 style="text-align:justify;">OU &#8221;Seja Amigo Do Usuário&#8221;</h3>
<p style="text-align:justify;">  As pessoas querem comodidade. Queremos sempre fazer as coisas do modo mais fácil possível. Trocamos o canal da TV usando o controle remoto, ao invés de termos de levantar da poltrona e ir até o aparelho. Jogamos a roupa suja na máquina e ela nos devolve limpa e perfumada. Comodidade, conforto, bem-estar, tempo livre para gastar como acharmos melhor. Fantástico, não?</p>
<p style="text-align:justify;">  Agora imagine proporcionar ao usuário do seu software essa comodidade, conforto, bem-estar, tempo livre para gastar como ele achar melhor. Como? a resposta é <strong>Usabilidade</strong>.<br />
 <br />
Conforme a <a title="Wikipédia (Usabilidade)" href="http://pt.wikipedia.org/wiki/Usabilidade" target="_blank"><span style="color:#0000ff;">Wikipédia</span></a>: <br />
  &#8220;Usabilidade é um termo usado para definir a facilidade com que as pessoas podem empregar uma ferramenta ou objeto a fim de realizar uma tarefa específica e   importante.&#8221;<br />
   &#8220;Na Interação Humano-computador e na Ciência da Computação, usabilidade normalmente se refere à simplicidade e facilidade com que uma interface, um programa de computador ou um website pode ser utilizado.&#8221;<br />
 <br />
  Podemos então simplificar e dizer que Usabilidade é tornar seu <em>software</em> mais &#8220;usável&#8221;, fácil, amigável ou, ainda, de operação mais simples. Isso agrega valor, deixando o usuário mais satisfeito com o <em>software</em>, que pode adquirir outros produtos/serviços no futuro, ou ainda indicar outros clientes. Sim, parece bom, mas como aplicar isso aos nossos <em>softwares</em>?</p>
<p style="text-align:justify;">  A Usabilidade é um assunto extenso, que lida com muitos conceitos subjetivos, mas podemos facilmente delinear algumas ações:</p>
<p style="text-align:justify;">          <strong>Padronização.</strong><br />
  Siga sempre o mesmo padrão na interface com o usuário. Isso inclui a posição dos controles, esquemas de cores, mensagens, comportamento&#8230; &#8211; ou seja, tudo.<br />
  As pessoas esperam que as coisas sejam de determinada maneira. Já pensou se em cada modelo de carro os pedais tivessem posições diferentes? Se cada fabricante de teclado usasse uma disposição diferente de teclas?<br />
  Procure também seguir o padrão da plataforma para a qual está desenvolvendo &#8211; se o atalho padrão para &#8216;Copiar&#8217; é Ctrl + C, não use Ctrl + Shift + Alt + Ins + F12!<br />
  <br />
          <strong>Prevenção contra erros.</strong><br />
  Nunca confie em seu usuário. Sempre consista as entradas. Verifique se o campo numérico é realmente numérico, se campos obrigatórios não estão vazios, etc. É muito mais fácil, tanto para você quanto para o usuário, descobrir que o CPF do funcionário está em branco no momento do cadastro do que descobrir, no final do mês, por que o salário dele não foi depositado.<br />
  Procure também verificar outros tipos de entradas, como  a existência de um arquivo antes de sua abertura, se o dataset já foi carregado antes de acessar seus campos, etc.<br />
   <br />
          <strong>Mensagens e alertas.</strong><br />
  Sempre escreva mensagens claras e objetivas. Usuários não gostam de ler mensagens longas demais &#8211; na verdade, usuários raramente lêem mensagens -, quanto mais curta a mensagems, maior a chance dela ser lida. &#8220;Confirma a exclusão?&#8221; é preferível à &#8220;O arquivo será apagado em caráter permanente, gerando um estado preeminentemente imutável, promovendo uma possível perda de relevantes informações. Você tem absoluta convicção de seu intento de efetivar a operação outrora requisitada?&#8221;</p>
<p style="text-align:justify;">          <strong>Documentação</strong>.<br />
  Se usuários não costumam ler mensagens, imagine documentação (manual do usuário, help on-line, etc). Mesmo assim, é importante prover a documentação &#8211; ainda que quase ninguém a leia.</p>
<p style="text-align:justify;">  E tanto na Documentação quanto nas Mensagens: use uma linguagem simples e de fácil entendimento; evite gírias, termos técnicos, <a title="Artigo sobre informatiquês" href="http://rafaelrgi.wordpress.com/2007/11/27/mim-fala-portuges/" target="_blank"><span style="color:#0000ff;">informatiquês</span></a>, etc. Não enfeite demais o texto, mas não seja minimalista: diga o que tem que dizer &#8211; nem mais, nem menos.</p>
<p style="text-align:justify;">          <strong>Facilidade de uso</strong>.<br />
  Quando comecei à usar computadores, a interface usuário/computador era feita em modo caratere (&#8220;<em>modo DOS</em>&#8220;). Tinhamos que decorar diversos comandos (dir, copy, cd, etc). Era perfeitamente possível usar os computadores assim, mas não era muito prático. Quando as interfaces gráficas (GUI) surgiram, houve uma revolução incrível, tornando os computadores extremamente populares. Porque? Porque seu uso tornou-se muito mais fácil, acessível a praticamente qualquer pessoa.<br />
  Se quiser que seu <em>software</em> seja popular, torne-o mais fácil de ser usado. Torne a operação mais intuitiva, reduza a quantidade de passos necessária para executar as tarefas e deixe os comandos mais usados à mão.<br />
 <br />
  Vimos como dar os primeiros passos para tornar nossos <em>softwares</em> mais &#8220;usáveis&#8221;. Usabilidade é um assunto muito extenso, que obviamente não acaba aqui.</p>
<p style="text-align:justify;">  Vale à pena investir algum tempo em Usabilidade &#8211; seu usuário agradece!</p>
<p style="text-align:justify;"> <br />
<span style="color:#888888;">Você sabia que&#8230;<br />
A American Airlines economizou US$ 40.000 em um ano eliminando uma azeitona de cada salada?</span></p>
<p style="text-align:justify;"> <br />
 </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/rafaelrgi.wordpress.com/30/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/rafaelrgi.wordpress.com/30/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rafaelrgi.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rafaelrgi.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rafaelrgi.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rafaelrgi.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rafaelrgi.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rafaelrgi.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rafaelrgi.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rafaelrgi.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rafaelrgi.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rafaelrgi.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rafaelrgi.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rafaelrgi.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rafaelrgi.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rafaelrgi.wordpress.com/30/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rafaelrgi.wordpress.com&amp;blog=2170734&amp;post=30&amp;subd=rafaelrgi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rafaelrgi.wordpress.com/2008/05/16/usabilidade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c7a297cfe4acc33c1f6e1cb1dac817c0?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Rafael Rodrigues</media:title>
		</media:content>
	</item>
		<item>
		<title>jDominó</title>
		<link>http://rafaelrgi.wordpress.com/2008/04/29/jdomino/</link>
		<comments>http://rafaelrgi.wordpress.com/2008/04/29/jdomino/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 12:49:15 +0000</pubDate>
		<dc:creator>Rafael Rodrigues</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Todas]]></category>
		<category><![CDATA[Dominó]]></category>
		<category><![CDATA[Jogo]]></category>
		<category><![CDATA[Uml]]></category>

		<guid isPermaLink="false">http://rafaelrgi.wordpress.com/?p=25</guid>
		<description><![CDATA[jDomino é um jogo de dómino bastante simples, escrito em Java, em um trabalho para a faculdade. Você pode usar o material publicado apenas para fins não comerciais; se publicar/distribuir, deve obrigatoriamente citar a autoria original. Estão disponíveis o código-fonte, descrição das classes e diagrama Uml: Clique Aqui Para Baixar       Você sabia que&#8230; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rafaelrgi.wordpress.com&amp;blog=2170734&amp;post=25&amp;subd=rafaelrgi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="Nenhum"></a></p>
<p><a href="http://rafaelrgi.files.wordpress.com/2008/04/jdomino.png"></a><a href="Nenhum"></a><a href="Nenhum"><img class="alignnone size-full wp-image-29" src="http://rafaelrgi.files.wordpress.com/2008/04/jdomino3.png?w=450&#038;h=323" alt="jDominó" width="450" height="323" /></a></p>
<p style="text-align:justify;">jDomino é um jogo de dómino bastante simples, escrito em Java, em um trabalho para a faculdade.</p>
<p style="text-align:justify;">Você pode usar o material publicado apenas para fins não comerciais; se publicar/distribuir, deve obrigatoriamente citar a autoria original.</p>
<p style="text-align:justify;">Estão disponíveis o código-fonte, descrição das classes e diagrama Uml:<br />
<a href="http://downloadsrgi.googlepages.com/jDomino.zip"><span style="color:#0000ff;">Clique Aqui Para Baixar</span></a></p>
<p style="text-align:justify;"> <br />
   </p>
<p style="text-align:justify;"><span style="color:#888888;">Você sabia que&#8230;<br />
Os olhos humanos tem sempre o mesmo tamanho desde o nascimento mas o nariz e as orelhas nunca param de crescer?</span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/rafaelrgi.wordpress.com/25/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/rafaelrgi.wordpress.com/25/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rafaelrgi.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rafaelrgi.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rafaelrgi.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rafaelrgi.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rafaelrgi.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rafaelrgi.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rafaelrgi.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rafaelrgi.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rafaelrgi.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rafaelrgi.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rafaelrgi.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rafaelrgi.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rafaelrgi.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rafaelrgi.wordpress.com/25/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rafaelrgi.wordpress.com&amp;blog=2170734&amp;post=25&amp;subd=rafaelrgi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rafaelrgi.wordpress.com/2008/04/29/jdomino/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c7a297cfe4acc33c1f6e1cb1dac817c0?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Rafael Rodrigues</media:title>
		</media:content>

		<media:content url="http://rafaelrgi.files.wordpress.com/2008/04/jdomino3.png" medium="image">
			<media:title type="html">jDominó</media:title>
		</media:content>
	</item>
		<item>
		<title>Criando Controles Em C#</title>
		<link>http://rafaelrgi.wordpress.com/2008/03/06/criando-controles-em-c/</link>
		<comments>http://rafaelrgi.wordpress.com/2008/03/06/criando-controles-em-c/#comments</comments>
		<pubDate>Thu, 06 Mar 2008 19:02:20 +0000</pubDate>
		<dc:creator>Rafael Rodrigues</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Todas]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Controle]]></category>
		<category><![CDATA[UserControl]]></category>
		<category><![CDATA[WinForms]]></category>

		<guid isPermaLink="false">http://rafaelrgi.wordpress.com/?p=17</guid>
		<description><![CDATA[    Criar seus próprios controles é muito fácil com C#. Veremos um pequeno exemplo, passo à passo, criando um controle para exibição/seleção de nome de arquivo. Então, sem mais delongas:   1º Crie um novo projeto C# WinForms   2º Adicione um novo &#8220;controle do usuário&#8221; (UserControl):       &#8211; No Visual Studio: Project, Add UserControl, UserControl [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rafaelrgi.wordpress.com&amp;blog=2170734&amp;post=17&amp;subd=rafaelrgi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p align="justify">    Criar seus próprios controles é muito fácil com C#. Veremos um pequeno exemplo, passo à passo, criando um controle para exibição/seleção de nome de arquivo. Então, sem mais delongas:</p>
<p>  1º Crie um novo projeto C# WinForms</p>
<p>  2º Adicione um novo &#8220;controle do usuário&#8221; (<em>UserControl</em>):<br />
      &#8211; No Visual Studio: Project, Add UserControl, UserControl<br />
      &#8211; No SharpDevelop: (File, New, File, C#, UserControl)</p>
<p align="justify">  3º Se seu controle não estiver em &#8220;modo de desenho&#8221; (<em>Design Mode</em>), alterne para este modo; você deve estar vendo algo como a figura abaixo:<br />
     <img src="http://rafaelrgi.files.wordpress.com/2008/03/figura1.jpg?w=450" alt="figura1.jpg" /></p>
<p>  4º Adicione um <em>TextBox</em> e um <em>Button </em>ao controle:<br />
     <img src="http://rafaelrgi.files.wordpress.com/2008/03/figura2.jpg?w=450" alt="figura2.jpg" /></p>
<p align="justify">  5º Altere o texto do botão para &#8220;&#8230;&#8221; (s/ as aspas!), redimensione  e posicione  os controles conforme a figura abaixo:<br />
  <img src="http://rafaelrgi.files.wordpress.com/2008/03/figura3.jpg?w=450" alt="figura3.jpg" /></p>
<p align="justify">  6º Quando formos usar nosso controle (adicionando à um formulário) queremos que, ao alterar o tamanho do controle:<br />
     &#8211; a largura do <em>TextBox</em> acompanhe a mudança, aumentando ou diminuindo, conforme a situação; e<br />
     &#8211; o <em>Button</em> permaneça alinhado à direita, mantendo seu tamanho.<br />
     Para atingir esse objetivo, altere as propriedades indicadas abaixo:<br />
      TextBox: Anchor = Left, Rigth, Top<br />
      Button: Anchor = Rigth, Top</p>
<p align="justify">      Pronto, nosso controle já está bonito <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ; agora só falta fazê-lo funcionar:</p>
<p align="justify">  7º Clique duas vezes sobre o <em>Button</em>, para tratar o evento <em>OnClick</em>, e digite o seguinte código:</p>
<p><pre class="brush: csharp;">
System.Windows.Forms.OpenFileDialog openDlg = new OpenFileDialog();
openDlg.Title = Text;
openDlg.Filter = Filter;
openDlg.FilterIndex = 0;
openDlg.InitialDirectory = InitialDir;
if (openDlg.ShowDialog() == DialogResult.OK)
  textBox1.Text = openDlg.FileName;</pre><br />
  8º Abaixo do construtor, digite as seguintes propriedades:<br />
<pre class="brush: csharp;">
///filtro do diálogo de seleção de arquivo
string mFilter;
public string Filter
{
  get { return mFilter; }
  set { mFilter = value.Trim(); }
}

///diretório inicial do diálogo de seleção de arquivo
string mInitialDir;
public string InitialDir
{
  get { return mInitialDir; }
  set
  {
    if (value == null)
      mInitialDir = value;
    else
      mInitialDir = value.Trim();
  }
}

///permitir digitação diretamente no TextBox?
public bool CanType
{
  get { return textBox1.ReadOnly; }
  set { textBox1.ReadOnly = value; }
}</pre></p>
<p align="justify">  9º No construtor, abaixo de <em>InitializeComponent();</em>, digite:</p>
<p><pre class="brush: csharp;">
  Filter = &quot;Todos os arquivos (*.*)|*.*&quot;;
  Text = &quot;Selecione o arquivo:&quot;;</pre></p>
<p align="justify">    Nosso controle está pronto! Vamos testá-lo?</p>
<p align="justify">    Compile o projeto e visualize o formulário (<em>MainForm</em>) em &#8220;modo de desenho&#8221; (<em>Design Mode</em>).</p>
<p align="justify">    Na &#8220;caixa de ferramentas&#8221; (<em>ToolBox</em>), localize nosso controle e adicione-o ao formulário<br />
  <img width="469" src="http://rafaelrgi.files.wordpress.com/2008/03/figura4.jpg?w=469&#038;h=405" alt="figura4.jpg" height="405" /></p>
<p align="justify">    Visualize as propriedades do controle, e veja que nossas propriedades (<em>Filter</em>, <em>InitialDir</em> &amp; <em>CanType</em>) já estão lá.</p>
<p align="justify">    Execute a aplicação; nosso controle estará lá, 100% funcional!</p>
<p align="justify">    Criar controles no C# é algo muito simples, que pode trazer grandes vantagens, como o ganho de produtividade (trazido pelo reaproveitamento), facilidade de manutenção, criação de visuais arrojados para as aplicações, etc.<br />
 </p>
<p><font color="#999999">Você sabia que&#8230;<br />
O músculo mais potente do nosso corpo é a língua?<br />
</font></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/rafaelrgi.wordpress.com/17/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/rafaelrgi.wordpress.com/17/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rafaelrgi.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rafaelrgi.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rafaelrgi.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rafaelrgi.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rafaelrgi.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rafaelrgi.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rafaelrgi.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rafaelrgi.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rafaelrgi.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rafaelrgi.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rafaelrgi.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rafaelrgi.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rafaelrgi.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rafaelrgi.wordpress.com/17/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rafaelrgi.wordpress.com&amp;blog=2170734&amp;post=17&amp;subd=rafaelrgi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rafaelrgi.wordpress.com/2008/03/06/criando-controles-em-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c7a297cfe4acc33c1f6e1cb1dac817c0?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Rafael Rodrigues</media:title>
		</media:content>

		<media:content url="http://rafaelrgi.files.wordpress.com/2008/03/figura1.jpg" medium="image">
			<media:title type="html">figura1.jpg</media:title>
		</media:content>

		<media:content url="http://rafaelrgi.files.wordpress.com/2008/03/figura2.jpg" medium="image">
			<media:title type="html">figura2.jpg</media:title>
		</media:content>

		<media:content url="http://rafaelrgi.files.wordpress.com/2008/03/figura3.jpg" medium="image">
			<media:title type="html">figura3.jpg</media:title>
		</media:content>

		<media:content url="http://rafaelrgi.files.wordpress.com/2008/03/figura4.jpg" medium="image">
			<media:title type="html">figura4.jpg</media:title>
		</media:content>
	</item>
		<item>
		<title>Usando Sqlite Com C#</title>
		<link>http://rafaelrgi.wordpress.com/2008/01/30/usando-sqlite-com-c/</link>
		<comments>http://rafaelrgi.wordpress.com/2008/01/30/usando-sqlite-com-c/#comments</comments>
		<pubDate>Wed, 30 Jan 2008 17:05:50 +0000</pubDate>
		<dc:creator>Rafael Rodrigues</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Todas]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[Sqlite]]></category>

		<guid isPermaLink="false">http://rafaelrgi.wordpress.com/?p=15</guid>
		<description><![CDATA[    Vamos ver uma forma muito fácil de usar o SQlite com C#, desde a obtenção do driver até a construção de uma pequena aplicação de exemplo.              Apresentando o SQlite.     Para quem não conhece, o SQlite é uma biblioteca, escrita em C, que implementa um banco de dados relacional auto-contido &#8211; e [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rafaelrgi.wordpress.com&amp;blog=2170734&amp;post=15&amp;subd=rafaelrgi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p align="justify">    Vamos ver uma forma muito fácil de usar o SQlite com C#, desde a obtenção do driver até a construção de uma pequena aplicação de exemplo.</p>
<p align="justify">             <strong>Apresentando o SQlite.<br />
</strong>    Para quem não conhece, o SQlite é uma biblioteca, escrita em C, que implementa um banco de dados relacional auto-contido &#8211; e Open Source! Com SQlite não há necessidade de configurações, servidor, etc &#8211; basta distribuir a DLL e apontar para a base! Você pode saber mais sobre o SQlite no site oficial: <a href="http://www.sqlite.org/"><font color="#0000ff">http://www.sqlite.org/</font></a>.</p>
<p align="justify">    Apesar de escrito em C, é usado em com muitas outras linguagens, como C++, Java, Delphi, etc. Nós vamos utilizar um driver (também Open-Source!) para Ado.Net. Baixe o driver do site <a href="http://sqlite.phxsoftware.com/"><font color="#0000ff">http://sqlite.phxsoftware.com/</font></a>.<br />
    Para usar o driver, existem duas opções: adicionar a DLL ao GAC (Global Assembly Cache), usando o GacUtils, ou copiar a DLL para a mesma pasta do executável. Note que nossa única dependência é o arquivo System.Data.SQLite.DLL, não precisamos nem mesmo da DLL original em C (&#8220;Sqlite3.dll&#8221;).<br />
 <br />
<strong>             Botando a mão na massa!<br />
</strong>    Caso ainda não tenha baixado e instalado o driver, baixe e instale-o agora. Abra a sua IDE e crie uma nova solução WinForms; vamos chamá-la de SqliteNet. Adicione, às referências do projeto, a DLL (System.Data.SQLite.DLL).<br />
 <br />
    Certifique-se de estar visualizando o formulário (não o código) e adicione os seguintes componentes:<br />
SQLiteCommand<br />
SQLiteCommandBuilder<br />
SQLiteDataAdapter<br />
SQLiteConnection<br />
DataSet<br />
DataGrid</p>
<p align="left">  Configure os componentes adicionados conforme abaixo (altere apenas as propriedades indicadas):<br />
<font color="#000080">SQLiteConnection<br />
</font>  Name: connection<br />
  ConnectionString: Data Source=Teste.db3</p>
<p><font color="#000080">SQLiteCommand</font><br />
  Name: command<br />
  CommandText: SELECT * from Contatos<br />
  Connection: connection</p>
<p><font color="#000080">SQLiteDataAdapter</font><br />
  Name: adapter<br />
  SelectCommand: command<br />
 <br />
<font color="#000080">DataSet</font><br />
  Name: dataset<br />
  DataSetName: Contatos</p>
<p><font color="#000080">SQLiteCommandBuilder<br />
</font>  Name: commandBuilder<br />
  DataAdapter: adapter<br />
 <br />
<font color="#000080">DataGrid</font><br />
  Name: grid<br />
  DataSource: dataset<br />
  DataMember: Contatos<br />
  Dock: Fill<br />
 </p>
<p>  Visualize o código do formulário. Certifique-se de que todas as diretivas abaixo estejam no início do código:</p>
<p><pre class="brush: csharp;">
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
using System.Data;
using System.Data.Common;
using System.Data.SQLite;</pre><br />
No evento Load do form, digite:<br />
<pre class="brush: csharp;">
  if (!File.Exists(&quot;Teste.db3&quot;))
    CriaDb();
  LeDados();</pre><br />
No evento FormClosing, digite:<br />
<pre class="brush: csharp;">
  adapter.Update(dataset, &quot;Contatos&quot;);
 </pre><br />
Digite as duas rotinas abaixo:<br />
<pre class="brush: csharp;">
  void CriaDb()
  {
    SQLiteConnection.CreateFile(&quot;Teste.db3&quot;);
   
    connection.Open();
    string s = command.CommandText;
    command.CommandText = &quot;CREATE TABLE Contatos ([ID] INTEGER PRIMARY KEY, [Nome] NVARCHAR(40), [Email] NVARCHAR(50))&quot;;
    command.ExecuteNonQuery();
    command.CommandText = &quot;INSERT INTO Contatos (Nome,Email) VALUES ('Teste',  '')&quot;;
    command.ExecuteNonQuery();
    connection.Close();
    command.CommandText = s;
  }
 
  void LeDados()
  {
    connection.Open();
    adapter.Fill(dataset, &quot;Contatos&quot;);
    adapter.UpdateCommand = commandBuilder.GetUpdateCommand();
    adapter.InsertCommand = commandBuilder.GetInsertCommand();
    adapter.DeleteCommand = commandBuilder.GetDeleteCommand();
    connection.Close();
  } </pre><br />
  Execute a aplicação. Você deve ver uma tela como a abaixo:<br />
<img src="http://rafaelrgi.files.wordpress.com/2008/01/sqlitenet.jpg?w=450" alt="Sqlite.Net" />  Pronto! Temos um aplicativo simples e funcional, onde podemos inserir registros, alterá-los, etc, utilizando o SQlite. </p>
<p>- Links:<br />
  SQlite: <a href="http://www.sqlite.org/"><font color="#0000ff">http://www.sqlite.org/</font></a><br />
  System.Data.SQLite: <a href="http://sqlite.phxsoftware.com/"><font color="#0000ff">http://sqlite.phxsoftware.com/</font></a><br />
<font color="#808080"> </font><font color="#808080"><br />
Você sabia que&#8230;<br />
Uma pessoa passa em média 20 anos de sua vida dormindo?<br />
</font></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/rafaelrgi.wordpress.com/15/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/rafaelrgi.wordpress.com/15/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rafaelrgi.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rafaelrgi.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rafaelrgi.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rafaelrgi.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rafaelrgi.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rafaelrgi.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rafaelrgi.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rafaelrgi.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rafaelrgi.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rafaelrgi.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rafaelrgi.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rafaelrgi.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rafaelrgi.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rafaelrgi.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rafaelrgi.wordpress.com&amp;blog=2170734&amp;post=15&amp;subd=rafaelrgi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rafaelrgi.wordpress.com/2008/01/30/usando-sqlite-com-c/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c7a297cfe4acc33c1f6e1cb1dac817c0?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Rafael Rodrigues</media:title>
		</media:content>

		<media:content url="http://rafaelrgi.files.wordpress.com/2008/01/sqlitenet.jpg" medium="image">
			<media:title type="html">Sqlite.Net</media:title>
		</media:content>
	</item>
		<item>
		<title>Não Sabe Não Fale</title>
		<link>http://rafaelrgi.wordpress.com/2007/12/20/nao-sabe-nao-fale/</link>
		<comments>http://rafaelrgi.wordpress.com/2007/12/20/nao-sabe-nao-fale/#comments</comments>
		<pubDate>Thu, 20 Dec 2007 13:54:50 +0000</pubDate>
		<dc:creator>Rafael Rodrigues</dc:creator>
				<category><![CDATA[Opinião]]></category>
		<category><![CDATA[Todas]]></category>
		<category><![CDATA[comunicação]]></category>

		<guid isPermaLink="false">http://rafaelrgi.wordpress.com/2007/12/20/nao-sabe-nao-fale/</guid>
		<description><![CDATA[    Um tempo atrás estava lendo um livro sobre C#, quando me deparei com uma frase que dizia em C++ não existem referências. Obviamente o autor do livro não conhece C++:       Pensando um pouco sobre o assunto, podemos ver que isso não é um fato isolado; muito pelo contrário: é muito comum as [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rafaelrgi.wordpress.com&amp;blog=2170734&amp;post=14&amp;subd=rafaelrgi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p align="left">    Um tempo atrás estava lendo um livro sobre C#, quando me deparei com uma frase que dizia em C++ não existem referências. Obviamente o autor do livro não conhece C++:<br />
 </p>
<p><pre class="brush: cpp;">
    string&amp; s = t; //s é uma referência para uma string
 </pre></p>
<p align="justify">    Pensando um pouco sobre o assunto, podemos ver que isso não é um fato isolado; muito pelo contrário: é muito comum as pessoas falarem sobre o que não sabem. Mas por que as pessoas falam sore o que não sabem? Não sei.<br />
    Talvez por achar que sabem. Nesse caso, o ideal seria confirmar a informação antes de falar; como isso nem sempre é possível, colocar um &#8220;eu creio&#8221; ou &#8220;talvez&#8221; (ou qualquer coisa que indique que você não tem certeza) já resolve, evitando que você passe adiante uma idéia errada e/ou passe por idiota. Talvez as pessoas falem sobre o que não sabem tentando parecer espertas. Querendo parecer que são espertas, que dominam o assunto, correm um grande risco de passarem por idiotas. Basta ter algum participante da conversa que conhça o assunto o suficiente para ver que você está falando asneiras e pronto, você faz papel de idiota, correndo ainda o risco de perder totalmente sua credibilidade (principalmente se for reincidente na contravenção =] ). Imagine o diálogo:<br />
 - Java é a única linguagem preparada para os ambientes multi-processados.<br />
 - Ah, é? Por quê?<br />
 - Porque possui suporte à multitarefa.<br />
 - Interessante, eu já usei multitarefa em Delphi, C++, C#&#8230; talvez fosse possível porque eu tinha a JVM instalada, né?</p>
<p align="justify"> - Java é lento porque é interpretado.<br />
 - Nossa, então aquele papo de &#8220;compilado para bytecode&#8221; e o tal JIT é tudo propaganda enganosa da Sun?!?  </p>
<p align="justify">   <br />
    É claro que isso não se restringe à informática; as pessoas falam sobre o que não sabem o tempo todo, em todos os assuntos. E outras ouvem inverdades e saem repetindo, formando um círculo vicioso.<br />
   <br />
    Evitar esse tipo de situação é muito simples: se não sabe, não fale; se não tem cereza, não afirme; e, principalmente, pense antes de falar. Pensar antes de falar não é difícil, e com um pouquinho de prática você adquire o hábito, torna-se automático! Pensando antes de falar, você pode evitar muitos problemas, como falar o que não deve ou o que não sabe.<br />
   Ah, e se algum dia for escrever um livro, procure conferir as informações &#8211; revisão técnica não dói!.</p>
<p align="justify"><font color="#999999">Você sabia que&#8230;<br />
A cada hora extinguem-se cerca de 3 espécies de animais e, a cada dia, aproximadamente 150?<br />
  </font></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/rafaelrgi.wordpress.com/14/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/rafaelrgi.wordpress.com/14/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rafaelrgi.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rafaelrgi.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rafaelrgi.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rafaelrgi.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rafaelrgi.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rafaelrgi.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rafaelrgi.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rafaelrgi.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rafaelrgi.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rafaelrgi.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rafaelrgi.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rafaelrgi.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rafaelrgi.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rafaelrgi.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rafaelrgi.wordpress.com&amp;blog=2170734&amp;post=14&amp;subd=rafaelrgi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rafaelrgi.wordpress.com/2007/12/20/nao-sabe-nao-fale/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c7a297cfe4acc33c1f6e1cb1dac817c0?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Rafael Rodrigues</media:title>
		</media:content>
	</item>
		<item>
		<title>Matemática Básica Na Programação</title>
		<link>http://rafaelrgi.wordpress.com/2007/12/15/matematica-basica-na-programacao/</link>
		<comments>http://rafaelrgi.wordpress.com/2007/12/15/matematica-basica-na-programacao/#comments</comments>
		<pubDate>Sat, 15 Dec 2007 11:46:43 +0000</pubDate>
		<dc:creator>Rafael Rodrigues</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Todas]]></category>
		<category><![CDATA[matemática]]></category>
		<category><![CDATA[Pascal]]></category>

		<guid isPermaLink="false">http://rafaelrgi.wordpress.com/2007/12/15/matematica-basica-na-programacao/</guid>
		<description><![CDATA[    Noto que muitos programadores iniciantes (e outros nem tão iniciantes assim) têm dificuldade em aplicar coisas simples da matemática na programação. Resolvi compilar uma pequena lista com alguns exemplos do cotidiano. Cada exemplo contém a fórmula matemática usada e uma ou mais implementações.     § Um exemplo clássico, que já vi muitas vezes: limitar [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rafaelrgi.wordpress.com&amp;blog=2170734&amp;post=13&amp;subd=rafaelrgi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p align="justify" style="margin:0;"><span style="font-size:10pt;"><font face="Arial">    Noto que muitos programadores iniciantes (e outros nem tão iniciantes assim) têm dificuldade em aplicar coisas simples da matemática na programação. Resolvi compilar uma pequena lista com alguns exemplos do cotidiano. Cada exemplo contém a fórmula matemática usada e uma ou mais implementações.<br />
</font></span></p>
<p><span style="font-size:10pt;"></span><span style="font-size:10pt;"></span><span style="font-size:10pt;"><font face="Arial">    <strong>§</strong> Um exemplo clássico, que já vi muitas vezes: limitar o número de casas decimais de um número real (para evitar problemas de arredondamento).<br />
    Ao invés de apelar para a formatação de strings e conversão da string de volta a número real, que tal o seguinte:</font></span><span style="font-size:10pt;color:#333399;"><font face="Arial"><br />
  numero = Trunca(numero X (10 ^ decimais)) ÷ decimais</font></span><span style="font-size:10pt;"><font face="Arial">   <br />
  X: multiplicação<br />
  ÷: divisão<br />
  decimais: número de casas decimais desejadas<br />
  ^: exponenciação<br />
  Trunca: truncar, cortar a parte decimal (também é possível arredondar)<br />
</font></span><span style="font-size:10pt;"><font face="Arial"><br />
Pascal/Delphi:<br />
<pre class="brush: delphi;">
function RoundTo(valor: Currency; decimais: Integer=2): Currency;
begin
decimais := Trunc(Power(10, decimais));
Result := (Floor(valor * decimais + 0.5) / decimais);
end;</pre><br />
</font></span></p>
<p><span style="font-size:10pt;"><font face="Arial">C/C++:<br />
</font></span><span style="font-size:10pt;"><font face="Arial"><br />
<pre class="brush: cpp;">
double RoundTo(double valor, int decimais=2)
{
  decimais = int(pow(10, decimais));
  return (floor(valor * decimais +.5) / decimais);
}</pre><br />
</font></span></p>
<p><span style="font-size:10pt;">C#:</span><span style="font-size:10pt;"><br />
<pre class="brush: csharp;">
double TruncTo(double valor, int decimais)
{
  decimais = int(Math.Power(10, decimais));
  return (Math.Truncate(valor * decimais) / decimais);
}</pre><br />
<font face="Arial"><br />
 <br />
<span>  </span><span>  </span><strong>§</strong> Calcular porcentagem:<br />
<span> </span><span> </span>Podemos usar a famosa Regra de Três:<br />
</font><font face="Arial"><span style="color:#333399;">  1       3<br />
  2       x</span><br />
 <br />
  <span style="color:#333399;">1x = 2 X 3</span>   (multiplicação das diagonais)<br />
 <br />
  Ex.: calcular 10% de 200:<br />
<span style="color:#333399;">    200     100%</span>    (200 é o total, 100%)<br />
<span style="color:#333399;">       x       10%</span>    (x, o valor que quero saber, representa 10% do total)<br />
 <br />
    <span style="color:#333399;">100x = 200 X 10     x = 20</span><br />
  <br />
  Pela Regra de Três,<br />
</font><font face="Arial"><span style="color:#333399;">    valor         100<br />
    resultado     taxa<br />
</span> <br />
  deduzimos a fórmula:<br />
  <br />
</font><font face="Arial"><span style="color:#333399;">  resultado = valor X taxa ÷ 100 <br />
</span> <br />
</font><span style="font-size:10pt;"><font face="Arial">Pascal/Delphi:</font></span> </span><br />
<pre class="brush: delphi;">
resultado := valor * taxa / 100;</pre><br />
<span style="font-size:10pt;"><font face="Arial">C/C++/C#:<br />
<pre class="brush: cpp;">
resultado = valor * taxa / 100;</pre><br />
<span style="font-size:10pt;"><font face="Arial"><br />
    Como em qualquer fórmula matemática, é possível fazer diversas &#8220;transformações&#8221;:<br />
  &#8211; Ex.: você sabe o resultado, o valor, mas não sabe a taxa.<br />
    Ex. concreto: quanto por cento de 200 15 representa?<br />
 <br />
  Voltando à nossa Regra de Três, inserimos os valores que conhecemos:<br />
</font><font face="Arial"><span style="color:#333399;">    200         100<br />
      15            x</span>    <br />
    <br />
<span style="color:#333399;">    200x = 100 X 15    x = 7,5%</span><br />
    <br />
  Deduzimos então que:<br />
 <br />
<span style="color:#333399;">    taxa = resultado X 100 ÷ valor</span>  <br />
  <br />
Pascal/Delphi:</font></span><span style="font-size:10pt;"><font face="Arial"><br />
</font></span><span style="font-size:10pt;"><font face="Arial"><br />
</font></span><span style="font-size:10pt;"><font face="Arial"><br />
<pre class="brush: delphi;">
taxa := resultado * 100 / valor;</pre><br />
C/C++/C#:<br />
<pre class="brush: cpp;">
taxa = resultado * 100 / valor;</pre></p>
<p align="justify"><span style="font-size:10pt;"><font face="Arial"><br />
  <br />
<strong>    §</strong> Diferença entre datas (em meses):<br />
<span style="color:#333399;">  resultado = ((ano2 &#8211; ano1) X 12) + (mes2 &#8211; mes1)</span></font><span style="font-size:10pt;"><br />
<font face="Arial"><span>  </span><span>  </span>Este cálculo não leva em consideração os dias. A implementação (em uma ou mais linguagens de programação, como preferir) fica à seu encargo (não se preocupe, é bastante simples); caso você tenha as datas em valores agrupados (TDateTime, DateTime, etc), basta decompor a data em dia, mês, ano antes de efetuar o cálculo.</font></span><span style="font-size:10pt;"><font face="Arial">  <br />
  <br />
<strong>    §</strong> Juros Compostos (juros sobre juros):<br />
</font><font face="Arial"><span style="color:#333399;">  resultado = capital X (1 + taxa) ^ tempo<br />
</span> <br />
C#:<br />
</font></span></span><span style="font-size:10pt;"><span style="font-size:10pt;"><font face="Arial"><br />
<pre class="brush: csharp;">
resultado = capital * Math.Pow(1 + taxa, tempo);</pre><br />
Pascal/Delphi:<br />
</font></span></span></p>
<p><span style="font-size:10pt;"><font face="Arial"><br />
<pre class="brush: delphi;">
resultado := capital * Power(1 + taxa, tempo);</pre><br />
 <br />
C/C++:<br />
</font></span></p>
<p><span style="font-size:10pt;"><font face="Arial"><br />
<pre class="brush: cpp;">
resultado = capital * pow(1 + taxa, tempo);</pre><br />
</font></span></p>
<p></font></span><span style="font-size:10pt;"><font face="Arial"><br />
 <br />
   </font></span></font></span><span style="font-size:10pt;"><font face="Arial"></p>
<p align="justify">    O objetivo aqui foi mostrar que aplicando alguns elementos básicos da matemática podemos resolver alguns problemas de forma simples e elegante. Vimos alguns exemplos simples mas bastante comuns, com teoria e prática (implementações).</p>
<p><span>  </span><span>  </span><span> </span><span>  </span><span>  </span><span>  </span><span>  </span><span> </span><span> </span><span> </span><span>  </span><span>  </span><span>  </span><span> </span><span>  </span><span> </span><span>  </span><span> </span><br />
 <br />
 <span style="font-size:10pt;"><font face="Arial"><font color="#999999">Você sabia que&#8230;<br />
Na história original de Pinóquio ele <span> </span>mata o Grilo Falante com uma martelada?</font><br />
 </font></span></p>
<p></font></span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/rafaelrgi.wordpress.com/13/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/rafaelrgi.wordpress.com/13/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rafaelrgi.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rafaelrgi.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rafaelrgi.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rafaelrgi.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rafaelrgi.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rafaelrgi.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rafaelrgi.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rafaelrgi.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rafaelrgi.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rafaelrgi.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rafaelrgi.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rafaelrgi.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rafaelrgi.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rafaelrgi.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rafaelrgi.wordpress.com&amp;blog=2170734&amp;post=13&amp;subd=rafaelrgi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rafaelrgi.wordpress.com/2007/12/15/matematica-basica-na-programacao/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c7a297cfe4acc33c1f6e1cb1dac817c0?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Rafael Rodrigues</media:title>
		</media:content>
	</item>
		<item>
		<title>Java e o Fanatismo Religioso</title>
		<link>http://rafaelrgi.wordpress.com/2007/12/10/java-e-o-fanatismo-religioso/</link>
		<comments>http://rafaelrgi.wordpress.com/2007/12/10/java-e-o-fanatismo-religioso/#comments</comments>
		<pubDate>Mon, 10 Dec 2007 20:24:07 +0000</pubDate>
		<dc:creator>Rafael Rodrigues</dc:creator>
				<category><![CDATA[Opinião]]></category>
		<category><![CDATA[Todas]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[fanatismo]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[linguagem]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[VB]]></category>
		<category><![CDATA[Visual Basic]]></category>

		<guid isPermaLink="false">http://rafaelrgi.wordpress.com/2007/12/10/java-e-o-fanatismo-religioso/</guid>
		<description><![CDATA[    Lembro, alguns anos atrás, quando conheci o Delphi. Na época programava principalmente em C++, e assisti de camarote à briga Delphi X Visual Basic. O Delphi era chamado de &#8220;VB Killer&#8221;, muitos programadores Delphi execravam o VB por não ser OO, e por aí vai.     Conheci a linguagem Java quando ela ainda era [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rafaelrgi.wordpress.com&amp;blog=2170734&amp;post=12&amp;subd=rafaelrgi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p align="justify" style="margin-bottom:0;" class="western">    Lembro, alguns anos atrás, quando conheci o Delphi. Na época programava principalmente em C++, e assisti de camarote à briga Delphi X Visual Basic. O Delphi era chamado de &#8220;VB Killer&#8221;, muitos programadores Delphi execravam o VB por não ser OO, e por aí vai.</p>
<p align="justify" style="margin-bottom:0;" class="western">    Conheci a linguagem Java quando ela ainda era bebê. quando muita gente ainda achava que Java era apenas uma ilha da Indonésia, eu experimentei a linguagem. Achei interessante, mas era leeeento demais.</p>
<p align="justify" style="margin-bottom:0;" class="western">    O tempo passou, o Delphi realmente cresceu muito no mercado, mas não matou o VB &#8211; vide o VB .Net. Java evoluiu, melhorou sua performance e cresceu MUITO no mercado &#8211; a Sun mostrou-se muito eficaz na divulgação do Java.</p>
<p align="justify" style="margin-bottom:0;" class="western">    A estratégia de divulgação do Java é eficaz, mas tem seus efeitos colaterais. A comunidade Java possui um grande número de fanáticos, que consideram os programadores de outras linguagens infiéis pecadores que merecem arder no mármore do inferno =P. Antigamente o alvo preferido eram os infiéis do C++ &#8211; há quem diga que o alvo era a Microsoft e atiraram no pessoal do C++ por acidente &#8211; inclusive existem milhares de comparações entre as duas linguagens na internet, incluindo benchmarks; cito duas:<br />
      <a target="_blank" href="http://www.kano.net/javabench/" title="Java é mais rápido que C++"><font color="#0000ff">http://www.kano.net/javabench/</font></a><font color="#0000ff"><br />
</font>      <a target="_blank" href="http://www.freewebs.com/godaves/javabench_revisited/" title="C++ é mais rápido que Java"><font color="#0000ff">http://www.freewebs.com/godaves/javabench_revisited/</font></a></p>
<p align="justify" style="margin-bottom:0;" class="western">    No primeiro link temos a prova irrefutável de que Java é mais rápido que C++; no segundo temos a prova cabal de que C++ é mais rápido que Java (você pode escolher o resultado que mais lhe agrada &#8211; esses benchmarks são facilmente manipuláveis, e normalmente manipulados para &#8220;demonstrar&#8221; o que se quer provar – não confie nesses benchmarks!).</p>
<p align="justify" style="margin-bottom:0;" class="western">    Uma nova versão da IDE NetBeans do Java está sendo chamada de &#8220;Delphi Killer&#8221;, muitos programadores Java execram o Delphi por não ser totalmente OO, e por aí vai. Uma reprise com novos personagens. O Delphi vai morrer? É possível, mas pouco provável &#8211; nem o Cobol morreu!</p>
<p align="justify" style="margin-bottom:0;" class="western">    Existem fanáticos em outras comunidades de desenvolvedores além da de Java &#8211; provavelmente em todas. O título deste artigo (artigo? post? sei lá!) citou Java apenas porque vejo muitos fanáticos por Java. Talvez pelo tamanho da comunidade, talvez por ter uma porcentagem maior de fanáticos, não sei (e também não importa).</p>
<p align="justify" style="margin-bottom:0;" class="western">    Considero o Java uma linguagem bem legal. Gosto de programar em Java. Mas Java não é perfeito &#8211; aliás, linguagem perfeita não existe; todas tem pontos fortes e fracos. O mesmo vale para Delphi, C++, C#, etc. Nenhuma linguagem vai resolver todos os teus problemas &#8211; em algumas situações uma determinada linguagem pode ter vantagens em relação à outra, mas a <em>bala de prata</em> não existe.</p>
<p align="justify" style="margin-bottom:0;" class="western">    Procure manter a mente aberta, e ver todas as linguagens com olhos críticos, vendo o que ela tem de bom e ruim e, principalmente, onde ela pode ser mais útil para você. Aprender várias linguagens inclusive pode trazer outras perspectivas ao abordar um problema.</p>
<p align="justify" style="margin-bottom:0;" class="western">    Linguagens de programação não são religiões, e não deviam der encaradas como tal. Fanatismo não é sadio em religiões, imagine em simples ferramentas de trabalho!<br />
 </p>
<p><font color="#999999">Você sabia que&#8230;<br />
O animal terrestre mais rápido é a Chita, que chega a passar dos 110 km/h?<br />
 </font></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/rafaelrgi.wordpress.com/12/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/rafaelrgi.wordpress.com/12/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rafaelrgi.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rafaelrgi.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rafaelrgi.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rafaelrgi.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rafaelrgi.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rafaelrgi.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rafaelrgi.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rafaelrgi.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rafaelrgi.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rafaelrgi.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rafaelrgi.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rafaelrgi.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rafaelrgi.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rafaelrgi.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rafaelrgi.wordpress.com&amp;blog=2170734&amp;post=12&amp;subd=rafaelrgi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rafaelrgi.wordpress.com/2007/12/10/java-e-o-fanatismo-religioso/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c7a297cfe4acc33c1f6e1cb1dac817c0?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Rafael Rodrigues</media:title>
		</media:content>
	</item>
		<item>
		<title>Programador X Dragão</title>
		<link>http://rafaelrgi.wordpress.com/2007/12/01/programador-x-dragao/</link>
		<comments>http://rafaelrgi.wordpress.com/2007/12/01/programador-x-dragao/#comments</comments>
		<pubDate>Sat, 01 Dec 2007 11:02:36 +0000</pubDate>
		<dc:creator>Rafael Rodrigues</dc:creator>
				<category><![CDATA[Humor]]></category>
		<category><![CDATA[Todas]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Analista]]></category>
		<category><![CDATA[Assembly]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Clipper]]></category>
		<category><![CDATA[Cobol]]></category>
		<category><![CDATA[Dragão]]></category>
		<category><![CDATA[Fortran]]></category>
		<category><![CDATA[Fox Pro]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Pascal]]></category>
		<category><![CDATA[Princesa]]></category>
		<category><![CDATA[programador]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Smalltalk]]></category>
		<category><![CDATA[VB]]></category>

		<guid isPermaLink="false">http://rafaelrgi.wordpress.com/2007/12/01/programador-x-dragao/</guid>
		<description><![CDATA[    Quer saber como um programador mata um dragão?     Essa é velha, mas muito boa (autoria deconhecida)! C Chega, olha para o dragão com olhar de desprezo, puxa seu canivete, degola o dragão, encontra a princesa, mas a ignora para ver os últimos checkins no cvs do kernel do linux. C++ Cria um template [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rafaelrgi.wordpress.com&amp;blog=2170734&amp;post=11&amp;subd=rafaelrgi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>    Quer saber como um programador mata um dragão?<br />
    Essa é velha, mas muito boa (autoria deconhecida)!</p>
<p><font color="#0000ff">C<br />
</font>Chega, olha para o dragão com olhar de desprezo, puxa seu canivete, degola o dragão, encontra a princesa, mas a ignora para ver os últimos checkins no cvs do kernel do linux.</p>
<p><font color="#0000ff">C++</font><br />
Cria um template de canivete básico e vai juntando funcionalidades até ter uma espada complexa que apenas ele consegue entender. Mata o dragão mas trava no meio da ponte por causa dos memory leaks.</p>
<p><font color="#0000ff">Java</font><br />
Chega, encontra o dragão, desenvolve um framework para aniquilamento de dragões em múltiplas camadas, escreve vários artigos sobre o framework mas não mata o dragão.</p>
<p><font color="#0000ff">.NET</font><br />
Chega, olha a idéia do Javanes e a copia, tenta matar o dragão, mas é comido pelo réptil.</p>
<p><font color="#0000ff">Cobol</font><br />
Chega, olha o dragão, pensa que ta velho demais para conseguir matar um bicho daquele tamanho e pegar a princesa e, então, vai embora.</p>
<p><font color="#0000ff">Pascal</font><br />
Se prepara durante 10 anos para criar um sistema de aniquilamento de dragão … chegando lá descobre q o programa só aceita lagartixas como entrada.</p>
<p><font color="#0000ff">VB</font><br />
Monta uma arma de destruição de dragões a partir de vários componentes COM, parte pro pau pra cima do dragão e, na hora H, descobre que a espada só funciona durante noites chuvosas.</p>
<p><font color="#0000ff">PL/SQL</font><br />
Coleta dados de outros matadores de dragão, cria tabelas com N relacionamentos complexidade ternária, dados em 3 dimensões, OLAP, demora 15 anos para processar a informação. Enquanto isso a princesa virou lésbica e casou com o dragão, que era femêa.</p>
<p><font color="#0000ff">Ruby<br />
</font>Chega com uma p* fama, falando que é o melhor faz tudo, quando vai enfrentar o dragão mostra um videozinho dele matando um dragão. O dragão come ele de tédio.</p>
<p><font color="#0000ff">Smalltalk</font><br />
Chega, analisa o dragão e a princesa, vira as costas e vai embora, pois eles são muito inferiores.</p>
<p><font color="#0000ff">shell</font><br />
Cria uma arma poderosa para matar os dragões, mas, na hora H, não se lembra como usá-la.</p>
<p><font color="#0000ff">shell (2)</font><br />
O cara chega no dragão com um script de 2 linhas que mata, corta, estripa, empala, pica em pedacinhos e empalha o bicho, mas na hora q ele roda o script o dragão aumenta, engorda e enfurece.</p>
<p><font color="#0000ff">Assembly</font><br />
Acha que ta fazendo o mais certo e enxuto, porém troca um A por D, mata a princesa e transa com o dragão.</p>
<p><font color="#0000ff">Fox Pro</font><br />
Desenvolve um sistema para matar o dragão, por fora é bonitinho e funciona, mas por dentro está tudo remendado, quando ele vai executar o aniquilador de dragões lembra que esqueceu de indexar os DBF.</p>
<p><font color="#0000ff">Analista de Processos<br />
</font>Chega ao dragão com duas toneladas de documentação desenvolvida sobre o processo de se matar um dragão genérico, desenvolve um fluxograma super complexo para libertar a princesa e se casar com ela, convence o dragão que aquilo vai ser bom pra ele, e que não será doloroso. Ao executar o processo ele estima o esforço e o tamanho do estrago que isso vai causar, a assinatura do papa, do buda e do Raul Seixas para o plano, e então compra 2 bombas nucleares, 45 canhões, 1 porta aviões, contrata 300 homens armados até os dentes, quando na verdade necessitaria apenas da espada que estava na sua mão o tempo todo.</p>
<p><font color="#0000ff">Clipper</font><br />
Monta uma rotina que carrega um array de codeblocks para insultar o dragão, cantar a princesa, carregar a espada para memória, moer o dragão, limpar a sujeira, lascar leite condensado com morangos na princesa gostosa, transar com a princesa, tomar banho, ligar o carro, colocar gasolina e voltar pra casa. Na hora de rodar recebe um “Bound Error: Array Access” e o dragão come ele com farinha.</p>
<p><font color="#0000ff">Fortran</font><br />
Chega desenvolve uma solução com 45000 linhas de código, mata o dragão vai ao encontro da princesa. Mas ela só diz &#8220;Valeu, tiozinho!&#8221; e sai correndo atrás do programador Java que ficou rico.</p>
<p><font color="#999999">Você sabia que&#8230;<br />
Cerca de 80% do peso do cérebro é devido à água?</font></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/rafaelrgi.wordpress.com/11/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/rafaelrgi.wordpress.com/11/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rafaelrgi.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rafaelrgi.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rafaelrgi.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rafaelrgi.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rafaelrgi.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rafaelrgi.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rafaelrgi.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rafaelrgi.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rafaelrgi.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rafaelrgi.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rafaelrgi.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rafaelrgi.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rafaelrgi.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rafaelrgi.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rafaelrgi.wordpress.com&amp;blog=2170734&amp;post=11&amp;subd=rafaelrgi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rafaelrgi.wordpress.com/2007/12/01/programador-x-dragao/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c7a297cfe4acc33c1f6e1cb1dac817c0?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Rafael Rodrigues</media:title>
		</media:content>
	</item>
		<item>
		<title>Programação Genérica Para Leigos</title>
		<link>http://rafaelrgi.wordpress.com/2007/11/28/programacao-generica-para-leigos/</link>
		<comments>http://rafaelrgi.wordpress.com/2007/11/28/programacao-generica-para-leigos/#comments</comments>
		<pubDate>Wed, 28 Nov 2007 19:56:11 +0000</pubDate>
		<dc:creator>Rafael Rodrigues</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Todas]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Generic Programming]]></category>
		<category><![CDATA[generics]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Metaprogramação]]></category>
		<category><![CDATA[Metaprogramming]]></category>
		<category><![CDATA[Programação Genérica]]></category>

		<guid isPermaLink="false">http://rafaelrgi.wordpress.com/2007/11/28/programacao-generica-para-leigos/</guid>
		<description><![CDATA[    Programação Genérica (ou Generic Programming, para quem gosta de termos em inglês &#8211; Mim Fala Portugês), apesar de não ser algo recente, vem se tornado bastante popular ultimamente, o que leva muita gente à perguntar: que raio é isso? Vamos tentar responder de forma bastante simples (e fácil de entender).     A Programação Genérica, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rafaelrgi.wordpress.com&amp;blog=2170734&amp;post=10&amp;subd=rafaelrgi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p align="justify" style="margin-bottom:0;" class="western">    Programação Genérica (ou <em>Generic Programming</em>, para quem gosta de termos em inglês &#8211; <a target="_blank" href="http://rafaelrgi.wordpress.com/2007/11/27/mim-fala-portuges/" title="Mim Fala Portugês">Mim Fala Portugês</a>), apesar de não ser algo recente, vem se tornado bastante popular ultimamente, o que leva muita gente à perguntar: que raio é isso? Vamos tentar responder de forma bastante simples (e fácil de entender).</p>
<p align="justify" style="margin-bottom:0;" class="western">    A Programação Genérica, tambem chamada de Metaprogramação (Metaprogramming) é um paradigma (&#8220;modelo&#8221;) de programação no qual o tipo de dado é abstraído. Imagine, Por exemplo, que você crie uma classe que manipule uma lista de inteiros. Depois você precisa duma lista semelhante para números reais. Copiar e colar o código, fazendo as modificações necessárias? Não, melhor abstrair o tipo de dado, e usar a mesma classe. Como? Usando <em>generics</em>!</p>
<p align="justify" style="margin-bottom:0;" class="western">Ex. (C++):</p>
<p><pre class="brush: cpp;">
template &lt;typename T&gt;
class ListaNumeros
{
...
};

ListaNumeros &lt;int&gt; listaInteiros;
ListaNumeros &lt;double&gt; listaReais;</pre><br />
    Em C++, o compilador geraria, à partir de uma única definição da classe ListaNumeros, uma classe para o tipo int e uma classe para o tipo double.</p>
<p align="justify" style="margin-bottom:0;" class="western">    Este paradigma de programação surgiu nos anos 70, em linguagens como Ada. Começou a tornar-se popular quando foi incorporado à linguagem C++, no início dos anos 90. Depois diversas outras linguagens adotaram a Programação Genérica, como Java, .Net (C#/VB .Net/Delphi .Net/etc) e outras.</p>
<p align="justify" style="margin-bottom:0;" class="western">    Abstrair o tipo de dado pode levar à uma grande economia de código, pois um mesmo código pode operar diversos tipos de dados, levando a um grande reaproveitamento de código, redução de complexidade, além de outros usos mais avançados, como novas possibilidades em hierarquias de classes, policy-based design (&#8220;comportamento genérico&#8221;) / polimorfismo estático, etc.</p>
<p align="justify" style="margin-bottom:0;" class="western">    Exemplos em algumas linguagens:</p>
<p align="justify" style="margin-bottom:0;" class="western">*C++:</p>
<p><pre class="brush: cpp;">
//cria um vetor de string's
vector&lt;string&gt; vetor;
//adiciona uma string ao vetor
vetor.push_back(&quot;linha 1&quot;);
//adiciona uma string ao vetor
vetor.push_back(&quot;linha 2&quot;);</pre></p>
<p align="justify" style="margin-bottom:0;" class="western">*Java:</p>
<p><pre class="brush: java;">
//cria um vetor de string's
Vector&lt;String&gt; vetor = new Vector&lt;String&gt;();
//adiciona uma string ao vetor
vetor.add(&quot;linha 1&quot;);
//adiciona uma string ao vetor
vetor.add(&quot;linha 2&quot;);</pre></p>
<p align="justify" style="margin-bottom:0;" class="western">*C#:</p>
<p><pre class="brush: csharp;">
//cria um vetor de string's
List&lt;string&gt; vetor = new List&lt;string&gt;();
//adiciona uma string ao vetor
vetor.Add(&quot;linha 1&quot;);
//adiciona uma string ao vetor
vetor.Add(&quot;linha 2&quot;);</pre><br />
<font color="#999999"><br />
Você sabia que&#8230;<br />
Os golfinhos dormem com um olho aberto?</font></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/rafaelrgi.wordpress.com/10/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/rafaelrgi.wordpress.com/10/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rafaelrgi.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rafaelrgi.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rafaelrgi.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rafaelrgi.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rafaelrgi.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rafaelrgi.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rafaelrgi.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rafaelrgi.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rafaelrgi.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rafaelrgi.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rafaelrgi.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rafaelrgi.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rafaelrgi.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rafaelrgi.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rafaelrgi.wordpress.com&amp;blog=2170734&amp;post=10&amp;subd=rafaelrgi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rafaelrgi.wordpress.com/2007/11/28/programacao-generica-para-leigos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c7a297cfe4acc33c1f6e1cb1dac817c0?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Rafael Rodrigues</media:title>
		</media:content>
	</item>
	</channel>
</rss>
