<?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>Blog do Gusmão</title>
	<atom:link href="http://blogdogusmao.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogdogusmao.wordpress.com</link>
	<description>Games + Programação = Gusmão</description>
	<lastBuildDate>Fri, 16 Jul 2010 20:39:47 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blogdogusmao.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Blog do Gusmão</title>
		<link>http://blogdogusmao.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blogdogusmao.wordpress.com/osd.xml" title="Blog do Gusmão" />
	<atom:link rel='hub' href='http://blogdogusmao.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Configurando áudio frontal em placas com Realtek HD Audio (ICH10R)</title>
		<link>http://blogdogusmao.wordpress.com/2010/02/01/configurando-audio-frontal-em-placas-com-realtek-hd-audio-ich10r/</link>
		<comments>http://blogdogusmao.wordpress.com/2010/02/01/configurando-audio-frontal-em-placas-com-realtek-hd-audio-ich10r/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 01:55:20 +0000</pubDate>
		<dc:creator>Fábio Gusmão</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[hardware]]></category>

		<guid isPermaLink="false">http://blogdogusmao.wordpress.com/?p=179</guid>
		<description><![CDATA[Recentemente troquei de placa-mãe, e para não ter que destruir o gabinete tão bonito que acomodava meu antigo PC comprado no supermercado comprei um gabinete novo com USB e áudio frontal, este último ausente no gabinete antigo (um absurdo!). Pos bem, além do painel frontal ter desgrudado do encaixe uma vez o áudio frontal nunca [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blogdogusmao.wordpress.com&amp;blog=6471039&amp;post=179&amp;subd=blogdogusmao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Recentemente troquei de placa-mãe, e para não ter que destruir o gabinete tão bonito que acomodava meu antigo PC comprado no supermercado comprei um gabinete novo com USB e áudio frontal, este último ausente no gabinete antigo (um absurdo!). Pos bem, além do painel frontal ter desgrudado do encaixe uma vez o áudio frontal nunca funcionava (até hoje) apesar das 2 portas USB estarem OK. Pois bem hoje estava bisbilhotando as opções da BIOS e resolvi testar uma opção <em>Onboard Peripherals &gt; Front Panel Type [ HD Audio | AC97 ]</em>. Curiosamente descobri que o painel funciona como AC97.</p>
<p>Para configurar os speakers de forma que os conectores frontais possam ser usados juntos com os trazeiros (permitindo a você ligar suas caixas / receiver OU usar o fone de ouvido no painel frontal, podendo inclusive ligar dois receivers um em cada lado (!), abra o programa de configuração do Realtek HD Audio, clique no link da direita (opções avançadas) e marque o primeiro radio button e clique OK. Agora os conectores frontais não aparecem mais nas abas do programa (2nd Speaker) e você só precisa selecionar a aba Speaker e clicar no botão para torná-lo a saída preferencial. Para testar basta colocar uma música para tocar. Se tocar no fone de ouvido e nas caixas deu certo!</p>
<br /> Tagged: <a href='http://blogdogusmao.wordpress.com/tag/hardware/'>hardware</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/blogdogusmao.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/blogdogusmao.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/blogdogusmao.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/blogdogusmao.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/blogdogusmao.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/blogdogusmao.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/blogdogusmao.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/blogdogusmao.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/blogdogusmao.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/blogdogusmao.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/blogdogusmao.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/blogdogusmao.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/blogdogusmao.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/blogdogusmao.wordpress.com/179/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blogdogusmao.wordpress.com&amp;blog=6471039&amp;post=179&amp;subd=blogdogusmao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blogdogusmao.wordpress.com/2010/02/01/configurando-audio-frontal-em-placas-com-realtek-hd-audio-ich10r/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ac60aa7ee8ce1dc710087d35e5041c1b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Fábio Gusmão</media:title>
		</media:content>
	</item>
		<item>
		<title>Problema com &#8220;Open with Notepad++&#8221; no Windows 7</title>
		<link>http://blogdogusmao.wordpress.com/2010/02/01/problema-com-open-with-notepad-no-windows-7/</link>
		<comments>http://blogdogusmao.wordpress.com/2010/02/01/problema-com-open-with-notepad-no-windows-7/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 17:59:11 +0000</pubDate>
		<dc:creator>Fábio Gusmão</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://blogdogusmao.wordpress.com/?p=176</guid>
		<description><![CDATA[Voltei hoje das minhas férias e estava tranquilamente instalando meus programas favoritos no Windows 7 x64 zerinho que aqui me esperava quando percebi que o Notepad++ não estava abrindo a partir do Windows Explorer (Shell). Tentava usar o comando Open with Notepad++, Abrir com&#8230; &#62; Notepad++, arrastar do Explorer para o programa e NADA! Com [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blogdogusmao.wordpress.com&amp;blog=6471039&amp;post=176&amp;subd=blogdogusmao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Voltei hoje das minhas férias e estava tranquilamente instalando meus programas favoritos no Windows 7 x64 zerinho que aqui me esperava quando percebi que o Notepad++ não estava abrindo a partir do Windows Explorer (Shell). Tentava usar o comando Open with Notepad++, Abrir com&#8230; &gt; Notepad++, arrastar do Explorer para o programa e NADA!</p>
<p>Com um pouco de pesquisa achei <a href="http://www.howtogeek.com/howto/windows-vista/add-open-with-notepad-to-the-context-menu-for-all-files/">um tutorial</a> sobre como editar o registro do Windows e adicionar meu próprio comando &#8220;Abrir com Notepad++&#8221;. Desta forma funcionou, então vamos divulgar o passo-a-passo porque pode ser útil para outros programas também.<span id="more-176"></span>O procedimento é muito simples e pode ser executado em qualquer versão do Windows:</p>
<ol>
<li>Abra o editor de registro do Windows (regedit.exe)</li>
<li>Navegue para a chave HKEY_CLASSES_ROOT/*/shell</li>
<li>Clique com o botão direito em shell e selecione Novo =&gt; Chave.</li>
<li>Escreva o nome do novo comando como nome da chave (ex: Abrir com Notepad++</li>
<li>Crie uma sub-chave command.</li>
<li>Do lado direito, edite o valor da chave para o comando que você quer executar. O nome do arquivo será o primeiro argumento do comando então no caso do Notepad++ em um Windows de 64-bits serie &#8220;C:\program files (x86)\notepad++\notepad++.exe %1&#8243;</li>
<li>Clique OK e a alteração já terá efeito imediatamente.</li>
</ol>
<p>O link mencionado anteriormente traz screenshots de como realizar este procedimento.</p>
<br /> Tagged: <a href='http://blogdogusmao.wordpress.com/tag/windows/'>windows</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/blogdogusmao.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/blogdogusmao.wordpress.com/176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/blogdogusmao.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/blogdogusmao.wordpress.com/176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/blogdogusmao.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/blogdogusmao.wordpress.com/176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/blogdogusmao.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/blogdogusmao.wordpress.com/176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/blogdogusmao.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/blogdogusmao.wordpress.com/176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/blogdogusmao.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/blogdogusmao.wordpress.com/176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/blogdogusmao.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/blogdogusmao.wordpress.com/176/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blogdogusmao.wordpress.com&amp;blog=6471039&amp;post=176&amp;subd=blogdogusmao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blogdogusmao.wordpress.com/2010/02/01/problema-com-open-with-notepad-no-windows-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ac60aa7ee8ce1dc710087d35e5041c1b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Fábio Gusmão</media:title>
		</media:content>
	</item>
		<item>
		<title>Introdução à programação paralela em sistemas heterogêneos com OpenCL</title>
		<link>http://blogdogusmao.wordpress.com/2010/01/21/introducao-opencl/</link>
		<comments>http://blogdogusmao.wordpress.com/2010/01/21/introducao-opencl/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 23:28:17 +0000</pubDate>
		<dc:creator>Fábio Gusmão</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[gpgpu]]></category>
		<category><![CDATA[opencl]]></category>

		<guid isPermaLink="false">http://blogdogusmao.wordpress.com/?p=168</guid>
		<description><![CDATA[Aproveitando meus 20 preciosos dias de férias agora em janeiro resolvi bisbilhotar uma tecnologia muito interessante e com amplas perspectivas no mercado que é a computação paralela, especialmente no que diz respeito a GPGPU (General Computing on the GPU), técnica que consiste em atribuir tarefas repetitivas ou que lidam com grandes volumes de dados ao [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blogdogusmao.wordpress.com&amp;blog=6471039&amp;post=168&amp;subd=blogdogusmao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://blogdogusmao.files.wordpress.com/2010/01/opencl_logo_rgb.png?w=468" alt="OpenCL" align="right" />Aproveitando meus 20 preciosos dias de férias agora em janeiro resolvi bisbilhotar uma tecnologia muito interessante e com amplas perspectivas no mercado que é a computação paralela, especialmente no que diz respeito a GPGPU (General Computing on the GPU), técnica que consiste em atribuir tarefas repetitivas ou que lidam com grandes volumes de dados ao acelerador gráfico do computador, aumentando assim o poder de processamento.</p>
<p>Neste artigo vamos falar um pouco sobre GPGPU e minhas primeiras impressões sobre a OpenCL, uma nova API criada para ser o padrão para computação distribuída.</p>
<h2><span id="more-168"></span>General Programming on the GPU</h2>
<p>Já faz algum tempo (pelo menos nos últimos 7 anos desde o lançamento da série GeForce3 pela NVIDIA) que a indústria de jogos vem escrevendo pequenos programinhas (<em>shaders</em>) que permitiam maior controle por parte dos desenvolvedores sobre o hardware gráfico, permitindo que eles criassem efeitos inéditos como modelos de iluminação avançados, mapeamento de sombras e outras técnicas que tornassem os novos jogos cada vez mais realistas, indo além dos modelos de texturização e iluminação do então chamado <em>pipeline de funções fixas</em>, que são as funcionalidades padrão do OpenGL e Direct3D.</p>
<p>Os primeiros shaders (da época do Direct3D8 e Direct3D8.1 eram escritos em um dialeto de assembly com instruções como as seguintes:</p>
<pre>; Scale by fog parameters :
; c5.x = fog start
; c5.y = fog end
; c5.z = 1/range
; c5.w = fog max
dp4 r2, v0, c2 ; r2 = distance to camera
sge r3, c0, c0 ; r3 = 1
add r2, r2, -c5.x           ; camera space depth (z) - fog start
mad r3.x, -r2.x, c5.z, r3.x ; 1.0 - (z - fog start) * 1/range
                            ; because fog=1.0 means no fog, and
                            ; fog=0.0 means full fog
max oFog.x, c5.w, r3.x      ; clamp the fog with our custom max value</pre>
<p>Anos depois surgiram linguagens como a GLSL (OpenGL Shading Language, Khronos), HLSL (High Level Shading Language, Microsoft) e Cg (C for Graphics, NVIDIA). Estas linguagens se pareciam muito com a linguagem C, porém com extensões apropriadas para GPUs, como tipos vetoriais (float2, float3, float4 &#8230;) e matriciais (float4x4, float4x3) com um abrangente acervo de funções para manipular estes tipos com o mínimo de <em>overhead</em> possível.</p>
<p>Com a adoção de tais linguagens e hardware preparado para usar PCI Express (PCIe),  um barramento mais veloz que os antigos AGP e PCI, alguns pesquisadores da indústria e acadêmicos começaram a se interessar pelo uso das GPUs como uma unidade auxiliar de processamento, principalmente em cálculos cientificos e motores de física para jogos, fazendo com que os shaders escrevessem o resultado de seu processamento em texturas que depois eram recuperadas pela aplicação. O uso destes shaders ficou conhecido como GPGPU, porque utiliza os porcessadores gráficos (GPUs) para programação de propósito geral.</p>
<p>De uns anos para cá as GPUs evoluiram muito tanto vertical quanto horizontalmente. A cada nova geração elas ficam mais velozes e trazem mais e mais <em>stream processors</em> (nome dado aos núcleos, <em>cores</em>, que executam shaders na GPU). Por exemplo, a ATI Radeon HD 5970 (placa top de linha da série Radeon HD 5000) vem equipada com 3200 stream processors executando a um clock de 725MHz e 2GB de memória a um clock de 1GHz. Todo este aparato é capaz de processar 4.64TFLOPS. Em comparação, segundo o site <a href="http://www.maxxpi.net/pages/result-browser/top10---flops.php">MaxxPF</a>, Core 2 Quads chegam em torno de 7,5GFLOPS e Core i7s ficam em torno dos 14GFLOPS.  É importante lembrar que a correlação destes dados pode induzir conclusões erradas: uma CPU tem uma arquitetura muito mais rica e abrangente que uma GPU, que é um hardware dedicado a cálculos e gráficos.</p>
<h2>OpenCL</h2>
<p><a href="http://www.khronos.org/opencl/">Open Computing Language</a> é uma nova linguagem de programação de GPUs proposta pela Apple em 2008 e desenvolvida pelo Khronos Group em parceria com empresas como Intel, AMD, NVIDIA e IBM para criar uma arquitetura padrão para computação em sistemas heterogêneos. Por sistema heterogêneo podemos entender sistemas que utilizam processamento distribuído entre vários dispositivos em um mesmo computador, como CPU, GPU, chips aceleradores e outros. A proposta da OpenCL é prover uma especificação que, quando implementada, permita acessar os diversos dispositivos da mesma forma, podendo-se trocar o dispositivo e executar os mesmos kernels (programas) em outros dispositivos. Na prática, isto significa que o mesmo kernel pode ser compilado e executado em uma GPU conectada a um PC, no MacOS X Snow Leopard ou no processador Cell do PlayStation 3.</p>
<p>É muito comum encontrar na internet documentos que comparem OpenCL à tecnologia CUDA da NVIDIA. Isto acontece porque, de uma certa forma, a OpenCL é uma versão royalty-free da CUDA, planejada para ser implementada pelos diversos fabricantes de chips e processadores. Atualmente tanto NVIDIA como ATI já lançaram drivers e SDKs com suporte a OpenCL 1.0. Para executar OpenCL na GPU é necessário uma placa de vídeo GeForce 8 ou superior ou ATI Radeon HD das séries 4000 e 5000.</p>
<p>A especificação da OpenCL determina uma API que permite a comunicação entre a aplicação e o dispositivo OpenCL (Host API) e uma linguagem que estende o padrão C89 para a escrita dos kernels.</p>
<p>A Host API tem uma nomenclatura e paradigma de programação muito parecido com a OpenGL, onde a comunicação entre aplicação e API é feita com funções simples e os recursos alocados dinamicamente são tratados como IDs numéricos, o que facilita muito a criação de pontes entre a API em C e outras linguagens de programação como Python e C#.</p>
<p>Outra característica interessante é a presença de callbacks na API, permitindo que algumas tarefas demoradas (como compilar um kernel, executá-lo ou ler o valor de um buffer) podem ser executadas sem bloquear a aplicação.</p>
<h2>Aplicativo de Exemplo</h2>
<p><a href="http://k.domaindlx.com/fabiogusmao/OpenCLSamples.z">Faça download do aplicativo de exemplo</a></p>
<p>Escrevi um pequeno programa de exemplo para estudar o funcionamento da OpenCL e suas vantagens em relação ao código executado somente na CPU. Neste exemplo, crio dois vetores, um de entrada e um de saída, preenche o primeiro com números aleatórios e executa um algoritmo trivial a escolha do usuário (calcular fatorial ou determinar se o número é primo). Os dois algoritmos estão implementados tanto em C quanto em OpenCL e o programa imprime o tempo gasto para alocar memória, fazer cálculos usando a CPU, criar contexto OpenCL, compilar o kernel selecionado e executá-lo. É importante notar que, tirando o passo de executar o algoritmo, todos os outros precisam ser feitos apenas uma vez por execução, o que significa que um sistema real que use OpenCL pode compilar seus kernels ao iniciar e depois apenas escrever nos buffers e executar os kernels quando necessário.</p>
<h3>Observações</h3>
<ol>
<li>Neste exemplo estou usando a implementação da OpenCL que vem no ATI Stream SDK 2.0 e uma placa de vídeo ATI Radeon HD 5750. Não testei este software em outras máquinas ainda!</li>
<li>Como existem várias implementações de OpenCL (NVIDIA, ATI&#8230;.) coloquei o caminho para os arquivos .h (include) e .lib (Library) fora do arquivo de projeto, ou seja, você precisará incluir estes caminhos para recompilar o programa!</li>
</ol>
<h2>Resultados dos testes</h2>
<p>A diferença de performance entre executar um algoritmo dentro da aplicação ou na GPU é altamente dependente do hardware que executa a aplicação, mas na minha máquina de teste os algoritmos rodaram com uma economia de tempo entre 50% e 70%, chegando algumas vezes a 85%. Por serem algoritmos triviais fica difícil saber se estes valores podem ser reproduzidos em uma aplicação completa.</p>
<h2>Conclusão</h2>
<p>Apesar de ser um paradigma diferente de programação, as técnicas de GPGPU vem sendo aprimoradas a cada dia. O foco da GPGPU não é trocar a CPU por uma placa de vídeo, mas sim abrir novos caminhos para aumentar a escalabilidade do processamento em desktop e estações de trabalho. Uma das otimizações do Windows 7 em relação ao Vista é o uso mais intenso de pixel shaders para criar os efeitos especiais do Windows Aero.</p>
<br /> Tagged: gpgpu, opencl <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/blogdogusmao.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/blogdogusmao.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/blogdogusmao.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/blogdogusmao.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/blogdogusmao.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/blogdogusmao.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/blogdogusmao.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/blogdogusmao.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/blogdogusmao.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/blogdogusmao.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/blogdogusmao.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/blogdogusmao.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/blogdogusmao.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/blogdogusmao.wordpress.com/168/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blogdogusmao.wordpress.com&amp;blog=6471039&amp;post=168&amp;subd=blogdogusmao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blogdogusmao.wordpress.com/2010/01/21/introducao-opencl/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ac60aa7ee8ce1dc710087d35e5041c1b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Fábio Gusmão</media:title>
		</media:content>

		<media:content url="http://blogdogusmao.files.wordpress.com/2010/01/opencl_logo_rgb.png" medium="image">
			<media:title type="html">OpenCL</media:title>
		</media:content>
	</item>
		<item>
		<title>Otimizando o desempenho do Firefox</title>
		<link>http://blogdogusmao.wordpress.com/2009/12/10/otimizando-o-desempenho-do-firefox/</link>
		<comments>http://blogdogusmao.wordpress.com/2009/12/10/otimizando-o-desempenho-do-firefox/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 12:54:07 +0000</pubDate>
		<dc:creator>Fábio Gusmão</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[firefox]]></category>

		<guid isPermaLink="false">http://blogdogusmao.wordpress.com/?p=165</guid>
		<description><![CDATA[Esta semana percebi que o pessoal do trabalho estava meio triste com a performance do Firefox, alegando que nas primeiras versões ele costumava ser menos bugado e consumia menos recurso. De fato, descobrimos uns meses atrás que na  sua configuração padrão o Firefox mantém em memória dados sobre as abas que você já fechou e [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blogdogusmao.wordpress.com&amp;blog=6471039&amp;post=165&amp;subd=blogdogusmao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Esta semana percebi que o pessoal do trabalho estava meio triste com a performance do Firefox, alegando que nas primeiras versões ele costumava ser menos bugado e consumia menos recurso. De fato, descobrimos uns meses atrás que na  sua configuração padrão o Firefox mantém em memória dados sobre as abas que você já fechou e em alguns sites o cosnumo de memória aumenta absurdamente conforme você vai dando F5, Isso é péssimo para desenvolvedores, que geralmente necessitam navegar na mesma página muitas vezes para testar o que estão produzindo.</p>
<p>Ontem pesquisei um guia para melhorar a performance do navegador. Todas as mudanças propostas no artigo no final deste post são feitas através de parâmetros do navegador acessados pelo comando <strong>about:config</strong> e muitos dos parâmetros disponíveis exigem algum grau de conhecimento técnico.</p>
<p>Talvez nem todas as modificações propostas façam muita diferença para você, mas certamente os primeiros ajustes (pipeline e aumento do limite de conexões) vão deixar seu Firefox bem mais rápido!</p>
<p>Segue o link: <a href="http://www.boygeniusreport.com/2009/01/25/a-handful-of-firefox-tweaks-that-will-double-your-browser-speed/">A Handful of Firefox Tweaks That Will Double Your Browser Speed</a></p>
<br /> Tagged: firefox <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/blogdogusmao.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/blogdogusmao.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/blogdogusmao.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/blogdogusmao.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/blogdogusmao.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/blogdogusmao.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/blogdogusmao.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/blogdogusmao.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/blogdogusmao.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/blogdogusmao.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/blogdogusmao.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/blogdogusmao.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/blogdogusmao.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/blogdogusmao.wordpress.com/165/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blogdogusmao.wordpress.com&amp;blog=6471039&amp;post=165&amp;subd=blogdogusmao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blogdogusmao.wordpress.com/2009/12/10/otimizando-o-desempenho-do-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ac60aa7ee8ce1dc710087d35e5041c1b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Fábio Gusmão</media:title>
		</media:content>
	</item>
		<item>
		<title>DOSVOX: o que você deseja?</title>
		<link>http://blogdogusmao.wordpress.com/2009/11/22/dosvox-o-que-voce-deseja/</link>
		<comments>http://blogdogusmao.wordpress.com/2009/11/22/dosvox-o-que-voce-deseja/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 16:25:21 +0000</pubDate>
		<dc:creator>Fábio Gusmão</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[acessibilidade]]></category>
		<category><![CDATA[dosvox]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://blogdogusmao.wordpress.com/?p=152</guid>
		<description><![CDATA[Introduz o sistema DOSVOX, principal sistema usado para inclusão digital de deficientes visuais em todo o Brasil, além de trazer diversas soluções técnicas para facilitar e habilitar a nevegação de usuários de DOSVOX, como tratamento correto de campos de formulários, cookies e rotinas de autenticação, porque SIM, O DOSVOX ACEITA COOKIES!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blogdogusmao.wordpress.com&amp;blog=6471039&amp;post=152&amp;subd=blogdogusmao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>O DOSVOX é um sistema utilizado por milhares de deficientes visuais, tanto no Brasil como em Portugal e outros países da América Latina. Ele vem com mais de 100 programas e para muitos usuários é sua principal interface com o mundo digital. O <a href="http://intervox.nce.ufrj.br/dosvox/">site oficial</a> do DOSVOX contém informações de como baixa-lo e manuais de uso.</p>
<p>Neste artigo iremos descrever problemas encontrados por desenvolvedores para adequar seus sites ao navegador Web do DOSVOX, o Webvox, e principalmente como implementar uma rotina de autenticação de usuários (login) que funcione neste sistema.<span id="more-152"></span></p>
<h2>Projetando sites para funcionar no Webvox</h2>
<p>Abaixo descrevo algumas  técnicas que desenvolvi durante alguns meses de projeto para criar um site navegável pelo DOSVOX.</p>
<h3>Escolhendo uma DTD adequada</h3>
<p>Apesar de não aplicar nenhum tratamento especial à maioria das marcações HTML,  o Webvox tem consciência de que deve seguir uma DTD (definição de tipo de documento) quando uma é informada no início da página. Se seu site usar XHTML, fique de olho no Apêndice C.8. Fragment Identifiers da <a href="http://www.w3.org/TR/xhtml1/#issues">especificação do XHTML 1.0</a>. que recomenda utilizar os atributos <code>name</code> e <code>id</code> com o mesmo valor de forma a manter compatibilidade com navegadores antigos.</p>
<h3>Cada louco com sua mania: HTTP  na visão do Webvox</h3>
<p>Um detalhe importante do funcionamento do Webvox é como ele trata os cabeçalhos HTTP, principalmente os descritos abaixo:</p>
<ul>
<li><strong>Content-Type: </strong>Você pode especificar o charset que quiser, mas o Webvox só trabalha com ISO-8859-1. Em outras palavras, se você usa uma tecnologia moderna como ASP.NET, Java e outras deve ter notado que os caracteres acentuados são lidos de forma errada. Isso acontece porque o Webvox não entende nada de Unicode e tentará interpretar suas páginas como ISO-8859-1, mesmo que você indique UTF-8 no Content-Type. Este problema não acontece com texto codificado usando as entidades do HTML/XHTML (&amp;acute; , &amp;ccedil; entre outras) porque neste caso o código enviado pelo servidor só contem caracteres reconhecidos na codificação ISO-8859-1.</li>
<li><strong>Response.Redirect(url):</strong> a clássica instrução do ASP, herdada pelo ASP.NET e presente em 10 em cada 10 tecnologias Web, equivalente a retornar um status HTTP 302 e uma nova URL que deve ser chamada pelo navegador. O Webvox, como qualquer outro navegador Web, interpreta tal instrução, porém do jeito &#8220;dele&#8221;. Veja só: o WebServer retornou um código 302 (recurso foi movido permanentemente), então ele desconsidera qualquer cookie que tenha sido informado na resposta e reenvia a solicitação para a nova URL do recurso. Assim, o cookie é perdido!</li>
</ul>
<h3>Por que não loga?</h3>
<p>Uma reclamação constante de usuários de DOSVOX é não conseguir passar da tela de login em sites como Gmail, Orkut, Facebook e outros. O comportamento é parecido com o que acontece se você desligar os cookies de um navegador tradicional: após enviar o formulário o sistema volta na tela de login, sem mensagem de erro ou aviso. Daí vem a crença de que o DOSVOX não suporta cookies. Na verdade, ele suporta. O problema destes sites que citei e de muitos outros está entre o teclado e a cadeira, e no velho hábito que nós desenvolvedores temos de achar que uma tela de login é &#8220;somente mais uma tela de login&#8221;.</p>
<p>Lembram quando  falei do Response.Redirect() e que o DOSVOX entende que se o recurso foi movido ele deve correr atrás da URL indicada pelo servidor? Pos bem,  quando recebe os cabeçalhos de redirecionamento o DOSVOX ignora qualquer outra informação que venha depois no cabeçlalho HTTP, inclusive os cookies!</p>
<p>Pois bem, a solução pode ser algo tão simples quanto trocar o Response.Redirect() por uma trecho de HTML com uma mensagem de sucesso edisponibilizar um link para a área restrita do site. Só isso <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Campos de formulário</h3>
<p>Por fim, temos dois campos de formulário problemáticos, pois se comportam de maneira atípica no Webvox:</p>
<ul>
<li><strong>Checkboxes</strong>: por padrão, uma checkbox tem o valor &#8220;on&#8221; se o atributo value não for especificado. Quando enviamos o formulário, é normal que o navegador envie o valor da checkbox (&#8220;on&#8221; ou o que foi especificado pelo desenvolvedor) se a checkbox foi marcada. Do contrário, não envia nada. O Webvox tem novamente uma interpretação singular, e envia &#8220;off&#8221; quando a checkbox não está marcada, &#8220;on&#8221; quando marcada e sem valor no atributo value, e &#8220;on,valor&#8221; se informarmos algum valor para a checkbox.</li>
<li><strong>Textarea: </strong> Uma coisa chata em relação às caixas de texto com múltiplas linhas no Webvox é o número de colunas. O  navegador obedece à risca o valor do atributo cols, porém não muda de linha quando chega no limite, nem emite um bipe para avisar ao usuário que chegou no limite daquela linha. Não fiz muitos testes com textyareas, mas este aspecto me irrita muito quando estou homologando meus sites pelo DOSVOX!</li>
</ul>
<h2>Conclusão</h2>
<p>É incrível acreditar como alguns poucos detalhes, que normalmente passam despercebidos, podem fazer a diferença entre um site funcionar ou não no Webvox. Se você tiver dúvidas, ou souber de mais alguma particularidade do Webvox, comente este post! Acredite, pode ser algo que só você conheça e compartilhar este conhecimento pode contribuir para que todos os usuários, deficientes ou não, tenham acesso à Informação.</p>
<br /> Tagged: acessibilidade, dosvox, http, programação <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/blogdogusmao.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/blogdogusmao.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/blogdogusmao.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/blogdogusmao.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/blogdogusmao.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/blogdogusmao.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/blogdogusmao.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/blogdogusmao.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/blogdogusmao.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/blogdogusmao.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/blogdogusmao.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/blogdogusmao.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/blogdogusmao.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/blogdogusmao.wordpress.com/152/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blogdogusmao.wordpress.com&amp;blog=6471039&amp;post=152&amp;subd=blogdogusmao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blogdogusmao.wordpress.com/2009/11/22/dosvox-o-que-voce-deseja/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ac60aa7ee8ce1dc710087d35e5041c1b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Fábio Gusmão</media:title>
		</media:content>
	</item>
		<item>
		<title>5 de Novembro &#8211; Dia do Designer</title>
		<link>http://blogdogusmao.wordpress.com/2009/11/05/5-de-novembro-dia-do-designer/</link>
		<comments>http://blogdogusmao.wordpress.com/2009/11/05/5-de-novembro-dia-do-designer/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 01:02:38 +0000</pubDate>
		<dc:creator>Fábio Gusmão</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[curiosidades]]></category>
		<category><![CDATA[games]]></category>

		<guid isPermaLink="false">http://blogdogusmao.wordpress.com/?p=146</guid>
		<description><![CDATA[Hoje descobri que 5 de novembro é o Dia do Designer, data em que todo mundo que sabe usar mais de 5 ícones da barra de ferramentas do Photoshop se acha homenageado. Então, para ser do contra, vou prestar homenagem a alguns dos maiores designers de games da história, todos consagrados por sua criatividade e [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blogdogusmao.wordpress.com&amp;blog=6471039&amp;post=146&amp;subd=blogdogusmao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hoje descobri que 5 de novembro é o Dia do Designer, data em que todo mundo que sabe usar mais de 5 ícones da barra de ferramentas do Photoshop se acha homenageado. Então, para ser do contra, vou prestar homenagem a alguns dos maiores designers de games da história, todos consagrados por sua criatividade e habilidade para transformá-la em software.<span id="more-146"></span></p>
<h3>Shigeu Miyamoto (Nintendo)</h3>
<div class="wp-caption alignleft" style="width: 220px"><a href="http://en.wikipedia.org/wiki/Shigeru_Miyamoto"><img src="http://bestuff.com/images/images_of_stuff/210x600/shigeru-miyamoto-2199.jpg?1173280804" alt="" width="210" height="160" /></a><p class="wp-caption-text">Shigeru Miyamoto, pai do Mario Bros.</p></div>
<p>Considerado por muitos o Walt Disney dos videogames, Miyamoto nasceu em 1952 em Kyoto e começou a trabalhar na Nintendo em 1977 como artista em um jogo para arcade chamado Radar Scope.  Dentre os games criados por ele, os mais famosos foram as séries Mario,  Donkey Kong, Zelda e Pokemon. A primeira aparição do personagem Mario foi em 1981 no arcade Donkey Kong, no qual o personagem aparecia com o nome Jumpman em sua versão japonesa. Durante a localização de Donkey Kong para a América o nome foi mudado para Mario em homenagem a Mario Segali, que bateu as portas da Nintendo para cobrar o aluguel atrasado.</p>
<p>Tenho que confessar que nunca tive um videogame da Nintendo, mas realmente o cara é bom e criou vários jogos que serão lembrados por muitas gerações <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><br style="clear:left;" /></p>
<h3>Yu Suzuki (Sega / AM2)</h3>
<div class="wp-caption alignleft" style="width: 201px"><img src="http://mob40.photobucket.com/albums/e201/nocontinues/outros/YuSuzuki.jpg?t=1242305133" alt="" width="191" height="240" /><p class="wp-caption-text">Yu Suzuki, principal produtor do estúdio AM2 da Sega</p></div>
<p>Rival de Miyamoto, Yu Suzuki nasceu em 1958 e se formou como programador no início dos anos 80. Começou a trabalhar para a Sega em 1983 no estúdio AM2 em um jogo de Boxe para os arcades. Também idealizou grandes clássicos, cada novo jogo trazendo inovações para a indústria como os clássicos Hang-On, Space Harrier, Out Run, Virtua Racing e Virtua Fighter.</p>
<p>Para criar Hang-On, Suzuki passou horas aprendendo como pilotar motos e muitas outras horas testando o gabinete protótipo do jogo, que era composto apenas de uma moto estacionada queo  jogador deveria deitar para os lados. Out Run foi outro jogo inovador, com uma trilha sonora inesquecível e vários caminhos que levavam a uma das 5 fases finais do jogo. Virtua Racing era inicialmente apenas uma prova de conceito para que a equipe da AM2 ganhasse mais experiência com a nova placa Model-1, mas os resultados foram tão bons que a AM2 decidiu terminar o jogo e lança-lo em outubro de 1992. Em 1993 Suzuki lançou Virtua Fighter, primeiro jogo de luta 3D a fazer sucesso nos arcades.</p>
<p>Atualmente Suzuki trabalha no departamento de pesquisas da Sega em um novo estúdio chamado AM Plus.</p>
<p><br style="clear:left;" /></p>
<h3>John Carmack (Id Software)</h3>
<div class="wp-caption alignleft" style="width: 235px"><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/a/a6/John_Carmack_E3_2006.jpg/225px-John_Carmack_E3_2006.jpg" alt="" width="225" height="225" /><p class="wp-caption-text">John Carmack, co-fundador da Id Software</p></div>
<p>Nascido em 20 de agosto de 1970, John Carmack era um moleque problemático que aos 14 anos foi preso por invadir uma escola para roubar alguns computadores Apple II. Após cursar dois semestres na University of Missouri–Kansas City, Carmack começou a faer freelances como programador para uma empresa chamada Softdisk, onde conheceu outros programadores com os quais fundaria anos depois a Id Software.</p>
<p>Dos primeiros títulos da Id Software os mais importantes certamente foram as séries Wolfstein, DOOM e Quake, que deixaram Carmack conhecido por desenvolver e adaptar técnicas avançadas de computação gráfica em jogos de computador. Suas engines 3D foram usadas posteriormente por várias empresas e desenvolvedores independentes, o que deu a Carmack e sua empresa uma boa reputação na comunidade do software livre.</p>
<p>Uma filosofia interessante de Carmack adotada por sua antiga parceira Apogee e por outras empresas como a Blizzard Entertyainment é a forma como ele gosta de trabalhar com prazos. Quando perguntado quando seu novo jogo será lançado não se espante se ele responder &#8220;quando estiverem prontos&#8221;.</p>
<p>Durante suas férias em 2005, Carmack estava jogando no celular de sua esposa e concluiu que os jogos para celular disponíveis até então eram muito ruins. Ao voltar de férias John anunciou o desenvolvimento de Doom RPG.</p>
<p><br style="clear:left;" /></p>
<h3>David Jaffe (Lionhead Studios / Microsoft)</h3>
<p>Nascido em 1973, David desenvolve jogos profissionalmente desde os tempos do SuperNES (Mickey Mania), mas ficou consagrado mesmo com as séries Twisted Metal (1995-2008) e mais recentemente God of War.</p>
<h3>Conclusão</h3>
<p>Este artigo é curto demais para expressar toda a criatividade que move as engrenagens da maior indústria de entretenimento do mundo (já foi tempo do cinema), mas com algumas pesquisas na Wikipedia pude relembrar alguns fatos e descobrir outros que mostram que ser criativo e inovador exige mais do que simplesmente vontade: é preciso experiência, conhecimento técnico e acima de tudo dedicação.  Tente trazer as experiências destes gênios para seu dia-a-dia e encontrar maneiras de surpreender seus clientes e parceiros com naturalidade.</p>
<p>Feliz dia do designer a todos aqueles que usam a criatividade, seja em programas de manipulação de imagens, seja criando modelos e animações em 3D ou escrevendo códigos de qualidade para seu próximo produto.</p>
<br /> Tagged: curiosidades, games <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/blogdogusmao.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/blogdogusmao.wordpress.com/146/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/blogdogusmao.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/blogdogusmao.wordpress.com/146/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/blogdogusmao.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/blogdogusmao.wordpress.com/146/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/blogdogusmao.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/blogdogusmao.wordpress.com/146/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/blogdogusmao.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/blogdogusmao.wordpress.com/146/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/blogdogusmao.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/blogdogusmao.wordpress.com/146/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/blogdogusmao.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/blogdogusmao.wordpress.com/146/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blogdogusmao.wordpress.com&amp;blog=6471039&amp;post=146&amp;subd=blogdogusmao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blogdogusmao.wordpress.com/2009/11/05/5-de-novembro-dia-do-designer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ac60aa7ee8ce1dc710087d35e5041c1b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Fábio Gusmão</media:title>
		</media:content>

		<media:content url="http://bestuff.com/images/images_of_stuff/210x600/shigeru-miyamoto-2199.jpg?1173280804" medium="image" />

		<media:content url="http://mob40.photobucket.com/albums/e201/nocontinues/outros/YuSuzuki.jpg?t=1242305133" medium="image" />

		<media:content url="http://upload.wikimedia.org/wikipedia/commons/thumb/a/a6/John_Carmack_E3_2006.jpg/225px-John_Carmack_E3_2006.jpg" medium="image" />
	</item>
		<item>
		<title>CUIDADO: criando componentes ActionScript que devoram a CPU!</title>
		<link>http://blogdogusmao.wordpress.com/2009/10/21/cuidado-criando-componentes-actionscript-que-devoram-a-cpu/</link>
		<comments>http://blogdogusmao.wordpress.com/2009/10/21/cuidado-criando-componentes-actionscript-que-devoram-a-cpu/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 20:14:06 +0000</pubDate>
		<dc:creator>Fábio Gusmão</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://blogdogusmao.wordpress.com/?p=143</guid>
		<description><![CDATA[Já faz alguns dias que estava encabulado (para não usar outras palavras) com um aplicativo em Flex que estava escrevendo para um projeto que estamos entregando agora no fim do mês. Este foi meu primeiro aplicativo em Flex e aprendi várias novidades sobre o ActionScript 3.0 e como customizar a aparência dos componentes do Flex. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blogdogusmao.wordpress.com&amp;blog=6471039&amp;post=143&amp;subd=blogdogusmao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Já faz alguns dias que estava encabulado (para não usar outras palavras) com um aplicativo em Flex que estava escrevendo para um projeto que estamos entregando agora no fim do mês. Este foi meu primeiro aplicativo em Flex e aprendi várias novidades sobre o ActionScript 3.0 e como customizar a aparência dos componentes do Flex.</p>
<p>Porém, como nem tudo na vida é perfeito, é claro que sempre encontramos problemas pela frente&#8230;.<span id="more-143"></span></p>
<h3>O problema do Flex Devorador de CPU</h3>
<p>O problema acontecia na tela principal do &#8220;programinha&#8221;, que com o passar do tempo aumentava o volume de processamento até o navegador alocar entre 90% e 100% do tempo de CPU da máquina. Depois de algumas pesquisas em fóruns e blogs descobri que o mecanismo de binding  do Flex é inacreditavelmente lento, mas mesmo reduzindo a quantidade de bindings não resolvia o problema, no máximo amenizava sensivelmente.</p>
<p>Por incrível que pareça descobri hoje que o problema não era o Flex, nem as músicas que eu carregava via streaming, nem o data binding do MXML, nem a classe que eu implementei para fazer background em degradê, nem o frameRate da aplicação e muito menos o Garbage Collector do Flash Player! Era tudo culpa de um componente safado que eu escrevi para representar uma barra de progresso no estilo do site porque a que vem com o Flex é muito feia e estava sem paciência de customiza-la!</p>
<p>Mágias à parte, vamos à lição aprendida:</p>
<h3>Criando um componente em Flex</h3>
<p>Se no Flash criamos classes derivadas de flash.display.MovieClip para criar MovieClips baseados em classes, componentes Flex puros devem herdar de UIComponent, a classe pai de todos os outros componentes Flex (VBox, LinkButton. Herdar de UIComponent nos dá um componente vazio, inanimado, que não desenha nada e não dispara eventos. Bom, vamos colocar alguma coisa dentro de nosso componente!</p>
<p><code><br />
&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />
&lt;mx:UIComponent xmlns:mx="http://www.adobe.com/2006/mxml"<br />
&gt;<br />
&lt;mx:Script&gt;<br />
&lt;![CDATA[<br />
[Bindable]<br />
public var maximum:Number;<br />
[Bindable]<br />
public var value:Number;<br />
public function setProgress(v:Number, max:Number):void<br />
{<br />
var oldPerc:Number = int(100 * ( (1.0 * this.value) / this.maximum));<br />
var newPerc:Number = int(100 * ((1.0 * v) / max));<br />
maximum = max;<br />
if(oldPerc != newPerc)<br />
{<br />
value = v;<br />
<span style="color:#ff0000;"> <strong>this.invalidateDisplayList();</strong></span><br />
}<br />
}<br />
<strong><span style="color:#ff0000;">override protected function updateDisplayList(uw:Number, uh:Number):void</span></strong><br />
{<br />
graphics.beginFill(0x333333);<br />
graphics.drawRect(0, 0, uw, uh);<br />
graphics.endFill();<br />
if(this.maximum &gt; 0 &amp;&amp; this.value &gt; 0)<br />
{<br />
graphics.beginFill(0xAAAAAA);<br />
graphics.drawRect(0, 0, uw * this.value / this.maximum, uh);<br />
graphics.endFill();<br />
}</code></p>
<p>}<br />
]]&gt;<br />
&lt;/mx:Script&gt;<br />
&lt;/mx:UIComponent&gt;</p>
<p>Observe as linhas em vermelho. O método invalidateDisplayList() informa ao Flash Player que aquele componente precisa ser redesenhado. Isso é uma prática comum na programação de aplicativos Windows (os antigos costumavam chamar esta técnica de Dirty Rectangles). Já o método updateDisplayList serve para informarmos ao Flash Player como desenhar nosso componente. É nele que redimensionamos componentes internos (no caso de nosso componente ser um container) e podemos usar a Drawing API para desenhar a interface de nosso componente (no meu caso uma barra de progresso flat). Este evento não é chamado a cada frame do filme, por isso precisamos chamar invalidateDisplayList a cada vez que quisermos atualizar a exibição de nosso componente. Parece uma boa idéia chamar invalidateDisplayList a cada frame e a informação estará sempre atualizada, certo? Errado!</p>
<h3>A solução</h3>
<p>A chamada ao método invalidateDisplayList dentro do evento enterFrame do componente causa um aumento exponencial no processamento do Flash Player, até que o processamento chega a 100% e o frameRate fica extremamente lento! Com este simples descuido seu aplicativo revolucionário pode ficar conhecido como um comilão de CPU!</p>
<p>No caso da minha barra de progresso, eu alterei o método setValue para cuidar desta nobre tarefa de redesenhar o componente, e ele só faz isso quando o percentual (armazenado na variável newPerc) é alterado. Esta é uma forma grosseira de fazer as coisas, mas funciona para o que eu preciso e passa a idéia de que não devemos redesenhar loucamente na tela, mesmo que seja apenas em um pequeno retângulo&#8230;.</p>
<p>Ufa! Depois de remexer todo o código e muita pesquisa, finalmente posso dormir em paz sem me preocupar com o Flex Devorador de CPU <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<br /> Tagged: as3, programação <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/blogdogusmao.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/blogdogusmao.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/blogdogusmao.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/blogdogusmao.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/blogdogusmao.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/blogdogusmao.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/blogdogusmao.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/blogdogusmao.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/blogdogusmao.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/blogdogusmao.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/blogdogusmao.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/blogdogusmao.wordpress.com/143/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/blogdogusmao.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/blogdogusmao.wordpress.com/143/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blogdogusmao.wordpress.com&amp;blog=6471039&amp;post=143&amp;subd=blogdogusmao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blogdogusmao.wordpress.com/2009/10/21/cuidado-criando-componentes-actionscript-que-devoram-a-cpu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ac60aa7ee8ce1dc710087d35e5041c1b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Fábio Gusmão</media:title>
		</media:content>
	</item>
		<item>
		<title>Detectando versão do Flash Player com AS3</title>
		<link>http://blogdogusmao.wordpress.com/2009/10/15/detectando-versao-do-flash-player-com-as3/</link>
		<comments>http://blogdogusmao.wordpress.com/2009/10/15/detectando-versao-do-flash-player-com-as3/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 19:20:12 +0000</pubDate>
		<dc:creator>Fábio Gusmão</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://blogdogusmao.wordpress.com/?p=140</guid>
		<description><![CDATA[Mesmo a poucos meses do lançamento do Flash Player 10.1 (CS5) ainda existem muitos usuários desatentos que usam o Flash Player 9.0. Isso acontece porque as aplicações criadas a partir daquela versão (quando foi lançado o ActionScript 3) funcionam sem problemas nos players mais novos (o que é esperado) e as aplicações mais novas feitas [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blogdogusmao.wordpress.com&amp;blog=6471039&amp;post=140&amp;subd=blogdogusmao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Mesmo a poucos meses do lançamento do Flash Player 10.1 (CS5) ainda existem muitos usuários desatentos que usam o Flash Player 9.0. Isso acontece porque as aplicações criadas a partir daquela versão (quando foi lançado o ActionScript 3) funcionam sem problemas nos players mais novos (o que é esperado) e as aplicações mais novas feitas com Flash CS4 ou Flex 3.4, que usam o Flash Player 10, são compatíveis com o player antigo, desde que não usem recursos adicionados na versão 10. Isso é muito bom.</p>
<p>Porém, assim como acontecem com programadores JavaScript e estilizadores CSS, programadores ActionScript também precisam ficar atentos aos recursos disponíveis para suas aplicações, principalmente quando desenvolvendo componentes que rodem em vários runtimes (Flash 9, Flash 10, AIR). Podemos detectar facilmente a versão do Flash Player e os recursos disponíveis na plataforma usando a classe Capabilities, como no exemplo abaixo, onde recupero a versão do Flash Player para distinguir entre a versão 9 e a 10:</p>
<p><code>private function getMajorVersion():uint<br />
</code><code>{<br />
var xp:RegExp = new RegExp("^\\w+ (\\d+)");<br />
var match:Array = xp.exec(Capabilities.version);<br />
return uint(match[1]);<br />
}</code></p>
<br /> Tagged: as3, programação <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/blogdogusmao.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/blogdogusmao.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/blogdogusmao.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/blogdogusmao.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/blogdogusmao.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/blogdogusmao.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/blogdogusmao.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/blogdogusmao.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/blogdogusmao.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/blogdogusmao.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/blogdogusmao.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/blogdogusmao.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/blogdogusmao.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/blogdogusmao.wordpress.com/140/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blogdogusmao.wordpress.com&amp;blog=6471039&amp;post=140&amp;subd=blogdogusmao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blogdogusmao.wordpress.com/2009/10/15/detectando-versao-do-flash-player-com-as3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ac60aa7ee8ce1dc710087d35e5041c1b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Fábio Gusmão</media:title>
		</media:content>
	</item>
		<item>
		<title>Limpando HTML facilmente em .NET</title>
		<link>http://blogdogusmao.wordpress.com/2009/10/08/limpando-html-facilmente-em-net/</link>
		<comments>http://blogdogusmao.wordpress.com/2009/10/08/limpando-html-facilmente-em-net/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 15:03:47 +0000</pubDate>
		<dc:creator>Fábio Gusmão</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://blogdogusmao.wordpress.com/?p=134</guid>
		<description><![CDATA[Uma maneira fácil de transformar trechos de código HTML acentuados em texto puro usando C#.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blogdogusmao.wordpress.com&amp;blog=6471039&amp;post=134&amp;subd=blogdogusmao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ontem estava pesquisando uma maneira de remover os tags HTML de uma string e ficar apenas com o texto, sem entidades &amp;aacute; etc e vi que muitos blogs e fóruns dão a volta ao mundo com códigos  que fazem a mesma coisa que a classe HttpServerUtility, que substitui apenas caracteres no formato &amp;#XXX;. Enfim, código demais que não me servia.</p>
<p>Com um pouco de criatividade criei o seguinte método que resolve o problema acima com menos linhas de código:<br />
<code><br />
private string CleanupHTML(string html)<br />
{</code></p>
<p style="padding-left:30px;"><code> html = Regex.Replace(html, @"(&lt;\w+&gt;|&lt;\/\w+&gt;)", "\n");<br />
XmlDocument doc = new XmlDocument();<br />
doc.LoadXml(@"&lt;?xml version=""1.0""?&gt;<br />
<strong> &lt;!DOCTYPE html SYSTEM """ + HttpContext.Current.Server.MapPath("~/XML/DTD/xhtml1-transitional-1.dtd")</strong> + @"""&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;simple document&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
" + html + "&lt;/body&gt;&lt;/html&gt;");<br />
return doc.DocumentElement.LastChild.InnerText;</code></p>
<p>}</p>
<p>A primeira instrução remove as tags HTML e coloca uma quebra de linha para evitar que as palavras se juntem. Exemplo: <code>&lt;p&gt;Hello&lt;/p&gt;&lt;p&gt;World&lt;/p&gt;</code>. O restante do método carrega a string dentor de um documento XHTML (o DOCTYPE é obrigatório para que o XmlDocument entenda as entidades &amp;aacute; &amp;agrave; etc) e recupera o InnerText do Body. Desta forma, substituimos todas as entidades XHTML muito esforço <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>ATUALIZADO EM 15/10/2009</h3>
<p>A solução que eu havia postado anteriormente deu problema porque o servidor do W3C  controla os acessos às DTDs para evitar abuso (dispara erros HTTP 503 se a DTD for acessada repetidamente pelo mesmo IP) de forma que o método parou de funcionar. Sabendo que o dia hoje seria corrido (vai ser ainda!) e que não tenho muito tempo para pesquisar outros métodos, customizei a minha solução usando uma DTD montada localmente, que não acessa nenhum arquivo externo, o que é bom pois vários data centers costumam limitar as portas e protocolos que um Application Server pode usar para se comunicar com o mundo exterior.</p>
<p>O código acima já está corrigido.</p>
<p><a href="http://k.domaindlx.com/fabiogusmao/xhtml1-transitional-1.dtd">Baixa a DTD modificada</a>.</p>
<br /> Tagged: programação <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/blogdogusmao.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/blogdogusmao.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/blogdogusmao.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/blogdogusmao.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/blogdogusmao.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/blogdogusmao.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/blogdogusmao.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/blogdogusmao.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/blogdogusmao.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/blogdogusmao.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/blogdogusmao.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/blogdogusmao.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/blogdogusmao.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/blogdogusmao.wordpress.com/134/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blogdogusmao.wordpress.com&amp;blog=6471039&amp;post=134&amp;subd=blogdogusmao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blogdogusmao.wordpress.com/2009/10/08/limpando-html-facilmente-em-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ac60aa7ee8ce1dc710087d35e5041c1b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Fábio Gusmão</media:title>
		</media:content>
	</item>
		<item>
		<title>Erro de compilação com ASP.NET MVC:     Could not load type ‘System.Web.Mvc.ViewPage</title>
		<link>http://blogdogusmao.wordpress.com/2009/09/30/erro-de-compilacao-com-asp-net-mvc-could-not-load-type-%e2%80%98system-web-mvc-viewpage/</link>
		<comments>http://blogdogusmao.wordpress.com/2009/09/30/erro-de-compilacao-com-asp-net-mvc-could-not-load-type-%e2%80%98system-web-mvc-viewpage/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 01:48:39 +0000</pubDate>
		<dc:creator>Fábio Gusmão</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://blogdogusmao.wordpress.com/?p=131</guid>
		<description><![CDATA[Curto e grosso, só para documentar. Problema Could not load type ‘System.Web.Mvc.ViewPage&#60;…&#62; Evidência / Exemplo &#60;%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/MeuPerfil.Master" Inherits="System.Web.Mvc.ViewPage" %&#62; Solução Substituir a tag &#60;pages&#62; no web.config pela tag abaixo. Mantenha qualquer atributo que você eventualmente tenha adicionado. &#60;pages pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blogdogusmao.wordpress.com&amp;blog=6471039&amp;post=131&amp;subd=blogdogusmao&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Curto e grosso, só para documentar.</p>
<h3>Problema</h3>
<blockquote><p>Could not load type ‘System.Web.Mvc.ViewPage&lt;…&gt;</p></blockquote>
<h3>Evidência / Exemplo</h3>
<h3></h3>
<p><code> &lt;%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/MeuPerfil.Master"<br />
Inherits="System.Web.Mvc.ViewPage" %&gt;<br />
</code></p>
<h3>Solução</h3>
<p>Substituir a tag &lt;pages&gt; no web.config pela tag abaixo. Mantenha qualquer atributo que você eventualmente tenha adicionado.<code><br />
&lt;pages<br />
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"<br />
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"<br />
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"&gt;</code></p>
<br /> Tagged: programação <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/blogdogusmao.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/blogdogusmao.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/blogdogusmao.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/blogdogusmao.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/blogdogusmao.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/blogdogusmao.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/blogdogusmao.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/blogdogusmao.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/blogdogusmao.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/blogdogusmao.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/blogdogusmao.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/blogdogusmao.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/blogdogusmao.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/blogdogusmao.wordpress.com/131/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blogdogusmao.wordpress.com&amp;blog=6471039&amp;post=131&amp;subd=blogdogusmao&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blogdogusmao.wordpress.com/2009/09/30/erro-de-compilacao-com-asp-net-mvc-could-not-load-type-%e2%80%98system-web-mvc-viewpage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ac60aa7ee8ce1dc710087d35e5041c1b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Fábio Gusmão</media:title>
		</media:content>
	</item>
	</channel>
</rss>
