<?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:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title></title>
	<atom:link href="http://imasters.com.br/feed/" rel="self" type="application/rss+xml" />
	<link>http://imasters.com.br</link>
	<description></description>
	<lastBuildDate>Sat, 25 May 2013 11:00:00 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
	<copyright>Copyright ©  2013 </copyright>
	<managingEditor>wpinstall@apiki.com (iMasters)</managingEditor>
	<webMaster>wpinstall@apiki.com (iMasters)</webMaster>
	<ttl>1440</ttl>
	<image>
		<url>/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
		<title></title>
		<link>http://imasters.com.br</link>
		<width>144</width>
		<height>144</height>
	</image>
	<itunes:subtitle></itunes:subtitle>
	<itunes:summary>iMasters podcast</itunes:summary>
	<itunes:keywords></itunes:keywords>
	<itunes:category text="Society &#38; Culture" />
	<itunes:author>iMasters</itunes:author>
	<itunes:owner>
		<itunes:name>iMasters</itunes:name>
		<itunes:email>wpinstall@apiki.com</itunes:email>
	</itunes:owner>
	<itunes:block>no</itunes:block>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<item>
		<title>Cobertura WWW2013 – Conversando com Vanessa Tonini</title>
		<link>http://imasters.com.br/front-end/cobertura-www2013-conversando-com-vanessa-tonini/</link>
		<comments>http://imasters.com.br/front-end/cobertura-www2013-conversando-com-vanessa-tonini/#comments</comments>
		<pubDate>Fri, 24 May 2013 19:00:05 +0000</pubDate>
		<dc:creator>Vanessa Guedes</dc:creator>
				<category><![CDATA[Front-End]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[front-end]]></category>
		<category><![CDATA[vanessa tonini]]></category>
		<category><![CDATA[www2013]]></category>

		<guid isPermaLink="false">http://imasters.com.br/?p=42575</guid>
		<description><![CDATA[<p>Vanessa Tonini é front-end developer e foi uma das poucas pessoas a encarar o desafio proposto por Bert Bos, pai do CSS, durante a Conferência.</p><p>O post <a href="http://imasters.com.br/front-end/cobertura-www2013-conversando-com-vanessa-tonini/">Cobertura WWW2013 – Conversando com Vanessa Tonini</a> apareceu primeiro em <a href="http://imasters.com.br"></a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Durante a conferência internacional da W3C deste ano, a <a href="http://www2013.org/">WWW2013</a>, vimos inúmeras figuras conhecidas da área de Tecnologia e Web. O evento democrático, que focou tanto na área de pesquisa, quanto na indústria e o mercado de novos negócios (start-ups), também contou com desafios práticos de tecnologia voltados para o mundo da web. Para a atividade organizada por <a href="http://www.w3.org/People/Bos/">Bert Bos</a> o pai do CSS (<a title="Entrevista com Bert Bos, criador do padrão CSS" href="http://imasters.com.br/front-end/css/entrevista-com-bert-bos-criador-do-padrao-css/">confira uma entrevista</a> com ele feita pela Carine Roos), foi proposto um desafio que envolvia a produção de um tabuleiro de xadrez sem o uso de imagens.</p>
<p>Durante esse desafio, conhecemos <a href="http://about.me/vanessametonini">Vanessa Tonini</a>, uma front-end developer gaúcha, que mora em Londrina (PR), e que está acabando sua pesquisa de pós-graduação em UX. Conversamos com ela e descobrimos mais sobre o seu trabalho e como foi participar do desafio que envolvia a responsabilidade de ser avaliada por quem criou a tecnologia que ela estava usando.</p>
<p>Vanessa tem apenas 23 anos, mas é bem ativa na <a href="http://www.magentocommerce.com/pt_BR">comunidade do Magento</a>, a plataforma em que é especialista, e que a inspirou a fazer seu curso de pós-graduação. Ela também está começando a <a href="http://www.w3c.br/Filiese">colaborar com a W3C</a> em alguns workgroups, e além de estudar, ela é desenvolvedora da <a href="http://www.ilegra.com">Ilegra</a>, empresa de Porto Alegre. Em 2010 ela soube da conferência anual da w3c Brasil, a <a href="http://conferenciaweb.w3c.br">WebBr</a>, e acabou vindo participar no ano seguinte -  momento em que conheceu <a href="https://twitter.com/reinaldoferraz">Reinaldo Ferraz</a>, com quem só falava por Twitter.</p>
<p>O objeto da sua pesquisa é acessibilidade em e-commerces brasileiros. &#8220;<i>Sempre tive admiração pelo trabalho da W3C em se empenhar em fazer a web acessível para todas as pessoas. Me identifico com os objetivos</i>&#8220;, ela contou quando perguntei como ela se interessou pelos projetos realizados pela organização, cujo trabalho ela conheceu no primeiro ano de faculdade.</p>
<p>Ela foi uma das poucas a encarar o desafio do Bert Bos, e gostou do resultado final do seu projeto. &#8220;<i>Comecei no sábado de manhã, e tive pouco tempo para desenvolver. No fim, fazer o tabuleiro em si foi bem rápido e fácil, o desafio estava em colocar graça no visual e fazer as peças &#8211; sempre usando as novas features de background. Fiz uma variação de cores para imitar textura de madeira, usando background-color normal com linear-gradient. Não houve grandes problemas com cross-browser, usei somente web-kit. Mesmo usando as coisas mais modernas, segui os padrões recomendados e isso evitou maiores problemas.</i>&#8221; No final, seu projeto entrou na galeria do site do evento, e ela nos contou que gostaria de ter feito seu tabuleiro de modo que se ajustasse em outros dispositivos também, aplicado conceitos de <i>responsive design</i> antes de entregar o css, mas não deu tempo.</p>
<p>Quando perguntada como lida com a maioria esmagadora de homens na área, Vanessa respondeu sem pensar duas vezes &#8220;<i>Não me sinto intimidada, me sinto estimulada</i>&#8220;, declarando que sabe que existe preconceito, mas o encara da melhor forma possível. Ela ainda contou que nos momentos em que se sobressai aos colegas em algum assunto, sempre tenta deixar claro que todos são iguais e um sempre pode aprender com o outro.</p>
<p>Uma das pessoas que serve de inspiração para Vanessa, é a Martha Gabriel. &#8220;<i>Conheci ela quando ainda não era popular, em um evento. Queria ser igual a ela, apesar de ela ser da área de social media analysis, eu admirei seu trabalho e o jeito que ela se vestia &#8211; muito alternativo em comparação às outras pessoas da área, com aqueles saiões</i>&#8220;. Outra que ela citou foi a própria Yasodára Córdova, do W3C Brasil, &#8220;<i>Fiquei fascinada com as coisas que ela já fez, é um exemplo a ser seguido</i>&#8220;. Além disso, outra mulher da W3C também chama a atenção de Vanessa: Lea Verou. &#8220;<i>Vou no Front in Sampa por causa da presença dela, em setembro. Quando a conheci, fiquei pensando em até onde as mulheres poderiam chegar. Gostaria de chegar no nível dela até fazer 30 anos. Haha.</i>&#8220;.</p>
<p>No final da entrevista, perguntei para ela qual a mensagem que ela gostaria de deixar para novas desenvolvedoras, que estão chegando na área agora. &#8220;<i>Acostume-se com os homens. Somos minoria nessa área, mas ainda vamos conquistar nosso espaço. A web é para todos, inclusive para as mulheres</i>&#8220;.</p>
<div id="attachment_42578" class="wp-caption alignnone" style="width: 495px"><a href="http://imasters.com.br/front-end/cobertura-www2013-conversando-com-vanessa-tonini/attachment/20130515_171354/" rel="attachment wp-att-42578"><img class=" wp-image-42578 " alt="20130515_171354" src="http://imasters.com.br/wp-content/uploads/2013/05/20130515_1713541.jpg" width="485" height="667" /></a><p class="wp-caption-text">Vanessa Tonini</p></div>
<p>A Vanessa escreve no <a href="http://www.magefront.com.br/">MageFront</a>, um blog sobre dicas de desenvolvimento front-end focado em Magento. Ela também mantém seu <a href="https://github.com/vanessametonini">GitHub </a>com projetos que surgem de vez em quando, e pretende começar a colaborar com seus forks logo.</p>
<p>O post <a href="http://imasters.com.br/front-end/cobertura-www2013-conversando-com-vanessa-tonini/">Cobertura WWW2013 – Conversando com Vanessa Tonini</a> apareceu primeiro em <a href="http://imasters.com.br"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://imasters.com.br/front-end/cobertura-www2013-conversando-com-vanessa-tonini/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exemplos de utilização do comando lsof – Parte 01</title>
		<link>http://imasters.com.br/infra/linux/exemplos-de-utilizacao-do-comando-lsof-parte-01/</link>
		<comments>http://imasters.com.br/infra/linux/exemplos-de-utilizacao-do-comando-lsof-parte-01/#comments</comments>
		<pubDate>Fri, 24 May 2013 18:00:32 +0000</pubDate>
		<dc:creator>Deividson Ludolf</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[lsof]]></category>
		<category><![CDATA[software livre]]></category>

		<guid isPermaLink="false">http://imasters.com.br/?p=42417</guid>
		<description><![CDATA[<p>Hoje daremos nosso pontapé inicial para dissecarmos e agregarmos conhecimento dessa ferramenta interessante.</p><p>O post <a href="http://imasters.com.br/infra/linux/exemplos-de-utilizacao-do-comando-lsof-parte-01/">Exemplos de utilização do comando lsof – Parte 01</a> apareceu primeiro em <a href="http://imasters.com.br"></a>.</p>]]></description>
				<content:encoded><![CDATA[<p>O comando lsof exibe uma listagem de arquivos abertos no sistema. Como os sistemas Linux tratam tudo como arquivos, inclusive soquetes de rede, o lsof é útil para diagnosticar problemas de conectividade, pois basta algumas poucas opções para determinar a origem de conexões dev, ou encontrar portas abertas no sistema local.</p>
<p style="text-align: center"><a href="http://imasters.com.br/?attachment_id=42419" rel="attachment wp-att-42419"><img class="aligncenter  wp-image-42419" alt="linux36" src="http://imasters.com.br/wp-content/uploads/2013/05/linux36.jpg" width="368" height="277" /></a></p>
<h2>Simples utilização</h2>
<pre class="brush: shell; gutter: true"># lsof</pre>
<p>Listando todos os arquivos abertos com os seguintes campos: Command, PID, USER, FD, TYPE etc.</p>
<h2>Visualizando conexões de rede abertas</h2>
<pre class="brush: shell; gutter: true"># lsof -i -n</pre>
<p>O comando acima exibe uma lista de todas as conexões de rede abertas.</p>
<h2>Somente conexões de rede tcp</h2>
<pre class="brush: shell; gutter: true"># lsof -i tcp -n</pre>
<h2>Restringindo a saída para apenas conexões UDP:</h2>
<pre class="brush: shell; gutter: true"># lsof -i udp -n</pre>
<h2>Utilizando juntamente com o grep</h2>
<pre class="brush: shell; gutter: true"># lsof -i -n -P | grep sendmail</pre>
<p>Outra forma de utilizar o lsof é especificar o soquete de comunicação que deve ser “pesquisado”. Por exemplo, para verificar qual processo está “escutando” na porta 22, execute:</p>
<pre class="brush: shell; gutter: true"># lsof -n -P -i:22</pre>
<p>Com isso, demos nosso pontapé inicial para dissecarmos e agregarmos conhecimento dessa ferramenta interessante.</p>
<p>Não perca os próximos capítulos, até breve!</p>
<p>O post <a href="http://imasters.com.br/infra/linux/exemplos-de-utilizacao-do-comando-lsof-parte-01/">Exemplos de utilização do comando lsof – Parte 01</a> apareceu primeiro em <a href="http://imasters.com.br"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://imasters.com.br/infra/linux/exemplos-de-utilizacao-do-comando-lsof-parte-01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guia definitivo do plugin Google Analytics para WordPress</title>
		<link>http://imasters.com.br/analytics/guia-definitivo-do-plugin-google-analytics-para-wordpress/</link>
		<comments>http://imasters.com.br/analytics/guia-definitivo-do-plugin-google-analytics-para-wordpress/#comments</comments>
		<pubDate>Fri, 24 May 2013 17:00:30 +0000</pubDate>
		<dc:creator>Bruno Rodrigo Souza</dc:creator>
				<category><![CDATA[Analytics]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[google analytics]]></category>
		<category><![CDATA[informações]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[visitantes]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://imasters.com.br/?p=42488</guid>
		<description><![CDATA[<p>Como conseguir informações detalhadas sobre os visitantes de seu site, com orientações para obter uma configuração ideal para o plugin.</p><p>O post <a href="http://imasters.com.br/analytics/guia-definitivo-do-plugin-google-analytics-para-wordpress/">Guia definitivo do plugin Google Analytics para WordPress</a> apareceu primeiro em <a href="http://imasters.com.br"></a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Quem tem um site precisa, por muitos motivos, ter informações sobre o tráfego de visitantes do site. A melhor ferramenta para ter esse acompanhamento detalhado é o Google Analytics. Neste artigo, você vai encontrar algumas dicas para conseguir informações mais detalhadas sobre os visitantes de seu site WordPress, com algumas orientações para conseguir uma configuração ideal para o plugin em seu site.</p>
<p>Muitas pessoas perdem informações importantes devido ao fato de terem apenas copiado o código de acompanhamento do Google Analytics em seu template, perdendo algumas funcionalidades muito interessantes Analytics. Para ajudar os gestores de sites WordPress, a Yoast de  <a href="http://yoast.com/author/joost/" target="_blank" rel="nofollow">Joost de Valk</a> desenvolveu o plugin <a href="http://wordpress.org/extend/plugins/google-analytics-for-wordpress/" target="_blank" rel="nofollow">Google Analytics para WordPress</a>. Vamos verificar que informações são essas que o plugin pode adicionar ao Google Analytics?</p>
<h2>Informações básicas de tráfego</h2>
<p>Para quem só deseja informações básicas sobre o tráfego do seu site, o trabalho com esse plugin é mínimo. Veja como é simples interligar o seu Google Analytics ao seu site WordPress com o uso desse plugin:</p>
<p><a href="http://imasters.com.br/?attachment_id=42489" rel="attachment wp-att-42489"><img class="aligncenter size-full wp-image-42489" alt="configurar-plugin-google-analytics" src="http://imasters.com.br/wp-content/uploads/2013/05/configurar-plugin-google-analytics.jpg" width="498" height="261" /></a></p>
<p>O plugin oferece a integração através da autenticação do seu login e senha do Google. Já tive alguns sites que apresentaram problemas com essa autenticação, mas a situação é facilmente contornada com a opção “Manualy enter your UA code”, permitindo que você insira manualmente a ID do perfil do Google Analytics que deseja associar.</p>
<p>Existe uma opção que permite ao plugin inserir automaticamente o código de monitoramento do Analytics no cabeçalho de seu template, possibilitando o carregamento do código em todas as páginas do site. Não vejo por que não selecionar essa opção para optar por inserir manualmente esse código, por isso deixe essa opção como default.</p>
<p>Pelo que é dito na documentação, e confirmei pelo código fonte da página, o plugin utiliza as alterações que foram feitas no código de monitoramento para o Google Analytics, permitindo usufruir das novidades da ferramenta nesta última atualização, assim como nas futuras, sem que você precise ficar renovando o código em seu template.</p>
<p>Vamos verificar o restante da configuração, que lhe oferecerá uma série de informações valiosas para a sua gestão de conteúdo, tais como rastreamento de cliques em links internos e externos, downloads de arquivos e variáveis personalizadas que o Google Analytics permite que você defina.</p>
<h2>Informações avançadas de tráfego</h2>
<p>O Analytics oferece informações detalhadas sobre ações que podem influenciar a sua estratégia de conteúdo, mas para tal é preciso fazer algumas configurações complicadas em seu site, mas que com o uso do Plugin Google Analytics para WordPress da Yoast é tudo muito mais simples. Vejamos:</p>
<h3>Track outbound clicks &amp; downloads</h3>
<p>Com essa opção ativada, você poderá monitorar com os relatórios do Google Analytics os cliques e os downloads realizados em seu site como eventos.</p>
<p><strong>Onde encontrar esta informação no Analytics:</strong> Conteúdo » Eventos</p>
<p><strong>Como usar essa informação: </strong>Você pode monitorar os downloads de arquivos como e-books ou ainda monitorar qual é a página que mais atrai clientes às páginas de produtos até a venda em seu site.</p>
<p>Veja abaixo como serão apresentadas as informações ativadas:</p>
<p><a href="http://imasters.com.br/?attachment_id=42490" rel="attachment wp-att-42490"><img class="aligncenter size-full wp-image-42490" alt="configuracao-plugin-google-analytics" src="http://imasters.com.br/wp-content/uploads/2013/05/configuracao-plugin-google-analytics.jpg" width="385" height="261" /></a></p>
<h3>Opção “Show advanced settings”</h3>
<p>Marque esta opção para ativar as configurações de Variáveis Personalizadas e configurações Avançadas do plugin.</p>
<h3>Configuração de Variáveis Personalizadas:</h3>
<p>As variáveis personalizadas do Google Analytics lhe permitem visualizar informações adicionais em três níveis: no nível de página, no nível de usuário e no nível de “sessão”. Assim, podemos monitorar essas informações adicionais, juntamente com as informações básicas do Analytics &#8211; por exemplo, o nome do autor, possibilitando visão de estatísticas do seu site por autor.</p>
<p>O Google Analytics permite que você defina até cinco variáveis personalizadas. Para acessar essas estatísticas, siga o seguinte caminho no seu perfil do Analytics: Público Alvo &gt; Personalizado &gt; Variáveis personalizadas.</p>
<p>Veja abaixo como o plugin pode ajudar a analisar algumas das variáveis disponíveis:</p>
<p><a href="http://imasters.com.br/?attachment_id=42491" rel="attachment wp-att-42491"><img class="aligncenter size-large wp-image-42491" alt="variaveis" src="http://imasters.com.br/wp-content/uploads/2013/05/variaveis-620x622.png" width="620" height="622" /></a></p>
<ul>
<li><strong>Logged in Users</strong>: permite identificar o tipo do usuário que está visitando o site (há uma opção avançada para ignorar os usuários de um determinado nível).<br />
Como usar: para sites que precisam monitorar o tráfego de usuários de diversos níveis de acesso como assinantes, autores, administradores, editores etc., e é muito útil em sites BuddyPress.</li>
<li><strong>Post Type</strong>: permite que você veja as estatísticas separadamente em artigos, páginas ou outro tipo de página que você tenha.<br />
Como usar: analisar as visitas às páginas de artigos (informação) e às visitas em páginas estáticas (conversão);</li>
<li><strong>Author Name: </strong>permite que você veja as estatísticas por autor.<br />
Como usar: ideal para quem precisa analisar o tráfego gerado para cada autor de artigos.</li>
<li><strong>Tags</strong>: permite que você veja as estatísticas por tags usando segmentos avançados do Google Analytics.<br />
Como usar: caso você prefira usar taxonomia para analisar uma determinada preferência de seus visitantes por determinado assunto.</li>
<li><strong>Publication year</strong>: permite que você veja as estatísticas por ano de publicação, mostrando-lhe se os seus artigos antigos ainda no tráfego.<br />
Como usar: caso você prefira usar categorias para analisar uma determinada preferência de seus visitantes por determinado assunto.</li>
<li><strong>Single Category</strong>: permite que você veja as estatísticas por categoria, funciona melhor quando cada artigo é colocado em uma categoria apenas.<br />
Como usar: caso você prefira usar categorias para analisar uma determinada preferência de seus visitantes por determinado assunto.</li>
<li><strong>All Categories</strong>: permite que você veja as estatísticas por categoria usando segmentos avançados; deve ser usado quando você utiliza várias categorias por artigo.<br />
Como usar: caso você prefira usar categorias para analisar uma determinada preferência de seus visitantes por determinado assunto.</li>
</ul>
<h2>Configurações avançadas</h2>
<p><a href="http://imasters.com.br/?attachment_id=42492" rel="attachment wp-att-42492"><img class="aligncenter size-full wp-image-42492" alt="variaveis-personalizadas-google-analytics" src="http://imasters.com.br/wp-content/uploads/2013/05/variaveis-personalizadas-google-analytics.jpg" width="478" height="542" /></a></p>
<p>Uma opção interessante para filtrar as estatísticas de seu site, ignorando tráfego de administradores, editores, ou até mesmo todos os usuários logados. Quanto ao monitoramento de downloads sobre o qual falamos no início, a configuração “Extensions of files to track as downloads” é onde você informa as extensões dos arquivos que deseja monitorar.</p>
<p>Outra configuração importantes é a ativação do “Track AdSense”, mas para isso você precisa ter vinculadas as contas de Adsense e Analytics. Você pode optar por analisar também o tráfego vindo do Feed do seu site; para tal, basta ativar a opção “Tag links in RSS feed with campaign variables”. Mas, atenção, não marque essa opção caso você utilize o FeedBurner.</p>
<p>Ative a opção “Add tracking to the comment forms”, caso seja relevante controlar o tráfego nos links dos comentários do seu site. Essa informação só será relevante quando você tiver uma grande quantidade de comentários por página. As outras opções não devem ser usadas para monitoramento de sites, exigem conhecimentos avançados e podem gerar uma grande confusão nas estatísticas do seu sites caso algo seja feito de errado.</p>
<h2>Conclusão</h2>
<p>Se você já analisa o tráfego do seu site com o Google Analytics, agora você sabe como ter mais informações sobre os hábitos dos seus visitantes. Não se esqueça de deixar seus comentários depois que começar a receber informações que permitam que você melhore a estratégia de conteúdo online.</p>
<p>Abraços!</p>
		<div class="apiki-wp-taxonomy-content-ads">
			<h6>Mensagem do anunciante:</h6>
			<p>
				Receba consultoria especializada em WordPress com os melhores profissionais do mercado.				<a href="http://wpconsultoria.apiki.com/?utm_source=iMasters&amp;utm_medium=Bloco_Texto&amp;utm_content=04_2013&amp;utm_campaign=ApikiWPConsultoria">Conheça o Apiki WP Consultoria.</a>
			</p>
		</div>
		<p>O post <a href="http://imasters.com.br/analytics/guia-definitivo-do-plugin-google-analytics-para-wordpress/">Guia definitivo do plugin Google Analytics para WordPress</a> apareceu primeiro em <a href="http://imasters.com.br"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://imasters.com.br/analytics/guia-definitivo-do-plugin-google-analytics-para-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Estudo de Caso AWS: ZocPrint – Loja online de impressos e presentes personalizados</title>
		<link>http://imasters.com.br/infra/aws/estudo-de-caso-aws-zocprint-loja-online-de-impressos-e-presentes-personalizados/</link>
		<comments>http://imasters.com.br/infra/aws/estudo-de-caso-aws-zocprint-loja-online-de-impressos-e-presentes-personalizados/#comments</comments>
		<pubDate>Fri, 24 May 2013 13:00:01 +0000</pubDate>
		<dc:creator>AWS HUB</dc:creator>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[computação em nuvem]]></category>
		<category><![CDATA[nuvem]]></category>

		<guid isPermaLink="false">http://imasters.com.br/?p=42398</guid>
		<description><![CDATA[<p>Hoje vamos publicar um estudo de caso de uso da Nuvem da AWS: ZocPrint, uma loja online de impressos e presentes personalizados.</p><p>O post <a href="http://imasters.com.br/infra/aws/estudo-de-caso-aws-zocprint-loja-online-de-impressos-e-presentes-personalizados/">Estudo de Caso AWS: ZocPrint – Loja online de impressos e presentes personalizados</a> apareceu primeiro em <a href="http://imasters.com.br"></a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Hoje temos o prazer de publicar mais um estudo de caso da utilização da Nuvem da Amazon Web Services. Se você também quer contar sua estória para nós, <a href="http://www.cardcloud.com/josepapo" target="_self">entre em contato conosco</a>!</p>
<p>O caso é da <a href="http://www.zocprint.com.br/" target="_self">ZocPrint</a>, uma loja online de impressos e presentes personalizados.</p>
<p style="text-align: center"><a href="http://imasters.com.br/?attachment_id=42399" rel="attachment wp-att-42399"><img class="aligncenter  wp-image-42399" alt="6a00d8341c534853ef019101c24e9d970c" src="http://imasters.com.br/wp-content/uploads/2013/05/6a00d8341c534853ef019101c24e9d970c.png" width="572" height="448" /></a></p>
<p style="text-align: center">
<p>Herbert Fischer, CTO da ZocPrint, nos conta abaixo como usa a nuvem da AWS:</p>
<p>“A Zocprint é uma loja online de impressos e presentes personalizados, desde cartões de visita até capas de smartphones. Temos um catálogo de mais de seis mil designs prontos para o cliente escolher e personalizar. Hoje temos cerca de 30 colaboradores e nossa sede está localizada em São Paulo.</p>
<p>Atualmente, utilizamos AWS para hospedar toda a infraestrutura da loja online e sistemas de backoffice. Antes de migrarmos para o AWS, o site era hospedado num colocation de um provedor americano, onde a prioridade era o custo baixo. Este provedor estava passando por vários problemas de estabilidade em sua rede, ao mesmo tempo que a Zocprint estava buscando melhorar a performance de acesso ao site pelos nossos clientes, problema que poderia ser mitigado com a migração do site para um datacenter no Brasil. Ao tentar aliar esta migração para o Brasil com a preocupação em manter custos, nossa melhor alternativa foi o AWS, onde pudemos trazer o site para o Brasil e utilizar os recursos para crescer ou reduzir a infraestrutura de acordo com a demanda variável de cada dia. Outro ponto importante é que um dos nossos desafios técnicos é a grande quantidade de imagens com que temos que lidar e o uso de storage compartilhado para isso estava se tornando dispendioso no dia-a-dia. Para solucionar este problema, adotamos o S3 com sucesso e hoje não temos mais que nos preocupar com isto.</p>
<p>Eu já possuia alguma experiência com AWS de quando trabalhei em outra empresa e vi o AWS como a oportunidade ideal para startups como a Zocprint. Atualmente, não temos nenhuma outra alternativa além do AWS, que possua datacenter no Brasil, uma API estável, bastante difundida e que possibilite automação e custos acessíveis. Do ponto de vista do negócio, o elemento mais importante foi a melhoria de performance do acesso ao site à um baixo custo, sob demanda e sem custos de aquisição. Do ponto de vista técnico, foi a possibilidade de automatizar quase que todo o processo de manutenção da infraestrutura, termos agilidade para atender picos de tráfego e simplificar a operação do site ao delegar para a AWS a operação de alguns dos componentes da arquitetura.</p>
<p>Atualmente utilizamos os seguintes serviços da Nuvem da Amazon: EC2, EBS, ELB, Route53, RDS, S3, IAM, SES e SNS. Usamos tecnologias como Ubuntu Server Linux, PHP, Puppet, Nginx, Solr, Fabric, Graylog e NewRelic.</p>
<p>A primeira etapa do processo foi definida pelos testes de performance da plataforma sendo executada no AWS. Efetuamos testes com a arquitetura antiga que envolvia o uso de um storage compartilhado. Durante os testes resolvemos adotar o S3 como substituto para o storage compartilhado, implementando uma camada lógica de content-addressable-storage entre a aplicação e o armazenamento dos arquivos, com abstrações para um storage compartilhado e para o S3, desta forma simplificando o processo de migração. Esta alteração na arquitetura do site levou cerca de cinco semanas para ser executada.</p>
<p>Com tal alteração e testes de performance aprovados, iniciamos a etapa de implementação da infraestrutura. Efetuamos todo o mapeamento da instalação e configuração de todos os componentes da arquitetura no Puppet, utilizando um modelo masterless para evitar que um possível servidor puppet seja um ponto único de falha. Também refizemos a automação do processo de deploy para algo compatível com a arquitetura no AWS, utilizando Fabric e Boto. O processo de automação da infraestrutura e migração levou cerca de 5 semanas para ser executada.</p>
<p>Com a utilização do AWS e toda automação envolvida, pude eliminar os gastos com operação terceirizada da infraestrutura e trazer as tarefas remanescentes como parte do trabalho da equipe atual. Economizamos cerca de 80% do custo mensal. Além disso reduzimos o número de problemas e quedas de serviços. Outro ponto que analisamos durante nossa avaliação foi a latência. Considerando-se a comunicação entre nossa solução nos datacenters da AWS em São Paulo e um computador na região de São Paulo, a queda foi de cerca de 170ms, principalmente porque migramos para um datacenter no Brasil”.</p>
<p>E este foi mais um estudo de caso de uso da Nuvem da AWS. Aproveite para também contar sua estória para nós, <a href="http://www.cardcloud.com/josepapo" target="_self">entre em contato conosco</a>!</p>
<p>O post <a href="http://imasters.com.br/infra/aws/estudo-de-caso-aws-zocprint-loja-online-de-impressos-e-presentes-personalizados/">Estudo de Caso AWS: ZocPrint – Loja online de impressos e presentes personalizados</a> apareceu primeiro em <a href="http://imasters.com.br"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://imasters.com.br/infra/aws/estudo-de-caso-aws-zocprint-loja-online-de-impressos-e-presentes-personalizados/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O marketing de convergência</title>
		<link>http://imasters.com.br/tecnologia/e-commerce/o-marketing-de-convergencia/</link>
		<comments>http://imasters.com.br/tecnologia/e-commerce/o-marketing-de-convergencia/#comments</comments>
		<pubDate>Fri, 24 May 2013 12:00:03 +0000</pubDate>
		<dc:creator>Roberta Schaffer</dc:creator>
				<category><![CDATA[E-commerce]]></category>
		<category><![CDATA[Marketing Digital]]></category>
		<category><![CDATA[cliente]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[marketing de convergência]]></category>
		<category><![CDATA[marketing digital]]></category>

		<guid isPermaLink="false">http://imasters.com.br/?p=42443</guid>
		<description><![CDATA[<p>Ele é um processo colaborativo, em que estratégias do marketing convencional e do marketing online são usadas para atender um novo cliente.</p><p>O post <a href="http://imasters.com.br/tecnologia/e-commerce/o-marketing-de-convergencia/">O marketing de convergência</a> apareceu primeiro em <a href="http://imasters.com.br"></a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Com a nova era digital, o fluxo de comunicação no marketing online se inverteu. O cliente tem mais poder, podendo criar comunidades, informações e fazer exigências de preço e atendimento. Já o marketing de convergência não ocorre em uma só direção, é um processo colaborativo, em que estratégias do marketing convencional e do marketing online são usadas para atender um novo cliente, o híbrido.</p>
<h2><strong>Mas quem é o novo consumidor?</strong></h2>
<p>O novo consumidor é  um pessoa resultante da convergência entre online e offline. É um “consumidor centauro”, não se considera um e-consumidor, tampouco pode ser classificado como um consumidor tradicional. São pessoas que buscam exclusividade e personalização, mas também compram produtos de prateleiras. Querem interação social, participam de comunidades virtuais, mas não deixam de se encontrar com os amigos em locais físicos. Desejam opções variadas de canais para comprar, têm sede por competitividade de valor e utilizam diferentes meios para obter informações e tomar melhores decisões.</p>
<h2><strong>Voltando ao marketing de convergência</strong></h2>
<p>Esse novo consumidor, que caminha com pés rápidos nas novas tecnologias mas ainda possui o antigo e imprevisível coração humano, abre várias e novas oportunidades de crescimento, isso porque mercados antes esquecidos ou considerados impossíveis agora são acessíveis, pois não há limite de distância para a Internet.</p>
<p>O marketing de convergência visa à união do online e offline, do emocional com o racional, da comunicação via Web com a física. Por isso, propõe uma nova estrutura do mix de marketing.</p>
<ul>
<li>Convergência na customização</li>
</ul>
<p>O cliente pode participar do planejamento, da elaboração dos produtos, deixando-os customizados, os clientes ainda podem construir seus próprios produtos.</p>
<ul>
<li>Convergência de comunidades</li>
</ul>
<p>O cliente híbrido valoriza relacionamentos interpessoais, tanto no mundo virtual quanto no real, e pode fazer comunidades do modo que mais desejar. As redes sociais são a prova disso.</p>
<ul>
<li>Convergência dos canais</li>
</ul>
<p>Os clientes querem se conectar às empresas em todos os canais, e serem reconhecido por conectarem-se em canais múltiplos.</p>
<ul>
<li>Convergência de valor competitivo</li>
</ul>
<p>É o cliente quem faz a relação valor x preço do produto. Como ele tem esse poder, é preciso ter certeza de que deseja  ter a experiência de compra.</p>
<ul>
<li> Convergência de escolha</li>
</ul>
<p>As empresas precisam oferecer ferramentas que disponibilizem as informações suficientes para o cliente tomar a decisão de compra.</p>
<p>Esses pontos mostram o que o novo consumidor centauro busca agora com mais poderes e cada vez mais autonomia no processo da compra. Basta a cada empresa se adequar a essas novas exigências ou serem moldadas pelo mercado.</p>
<p>O post <a href="http://imasters.com.br/tecnologia/e-commerce/o-marketing-de-convergencia/">O marketing de convergência</a> apareceu primeiro em <a href="http://imasters.com.br"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://imasters.com.br/tecnologia/e-commerce/o-marketing-de-convergencia/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Entrevista com Bert Bos, criador do padrão CSS</title>
		<link>http://imasters.com.br/front-end/css/entrevista-com-bert-bos-criador-do-padrao-css/</link>
		<comments>http://imasters.com.br/front-end/css/entrevista-com-bert-bos-criador-do-padrao-css/#comments</comments>
		<pubDate>Thu, 23 May 2013 18:00:26 +0000</pubDate>
		<dc:creator>Carine Roos</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html4]]></category>
		<category><![CDATA[HTML5]]></category>

		<guid isPermaLink="false">http://imasters.com.br/?p=42386</guid>
		<description><![CDATA[<p>Entre os dias 13 e 17 de maio, no Windsor Barra Hotel, Rio de Janeiro, ocorreu a 22ª Conferência da Web, a WWW2013, na qual estive presente e pude conferir workshops e palestras sobre visualização de dados, big data, data mining, análise de dados, web semântica, linked data, uso de dados para a saúde pública, [...]</p><p>O post <a href="http://imasters.com.br/front-end/css/entrevista-com-bert-bos-criador-do-padrao-css/">Entrevista com Bert Bos, criador do padrão CSS</a> apareceu primeiro em <a href="http://imasters.com.br"></a>.</p>]]></description>
				<content:encoded><![CDATA[<p align="JUSTIFY">Entre os dias 13 e 17 de maio, no Windsor Barra Hotel, Rio de Janeiro, ocorreu a <a href="http://www2013.org/" target="_blank">22ª Conferência da Web</a>, a WWW2013, na qual estive presente e pude conferir workshops e palestras sobre visualização de dados, big data, data mining, análise de dados, web semântica, linked data, uso de dados para a saúde pública, futuro do jornalismo, entre outros temas.</p>
<p align="JUSTIFY">O evento contou com cerca de 500 atividades e todas de que participei foram interessantes e geraram debates produtivos. Na terça-feira, 14 de maio, participei de uma <a href="http://www.w3.org/Talks/2013/0516-CSS-WWW2013/" target="_blank">oficina tutorial sobre CSS3 com o Bert Bos</a>, um dos criadores do padrão CSS. Como o conheci pessoalmente, não podia perder a oportunidade de fazer uma entrevista com ele sobre algumas questões sobre as quais tenho curiosidade, como: o contexto que o levou a trabalhar nos primeiros rascunhos do padrão CSS, o que ainda falta ser aprimorado e a sua perspectiva para a evolução do CSS e do HTML em longo prazo.</p>
<p align="JUSTIFY"><a href="http://imasters.com.br/?attachment_id=42388" rel="attachment wp-att-42388"><img class="aligncenter size-full wp-image-42388" alt="me-and-bert-bos" src="http://imasters.com.br/wp-content/uploads/2013/05/me-and-bert-bos.jpg" width="225" height="300" /></a></p>
<p align="JUSTIFY">Confira a entrevista completa abaixo:</p>
<p align="JUSTIFY">Versão em inglês <a href="http://androidella.org/2013/05/19/an-interview-with-the-creator-of-the-css-standard/" target="_blank">aqui</a>.</p>
<p><strong>1. Quais eram as necessidades específicas e o contexto que o levaram a trabalhar nos primeiros rascunhos do padrão CSS ?</strong></p>
<p>Quando Tim Berners-Lee criou seu primeiro navegador Web, este possuía folhas de estilos, mas apenas para o usuário. A ideia era que o autor especificasse o conteúdo de um documento, mas que o navegador junto com o usuário determinassem como melhor exibi-lo.</p>
<p>Durante certo tempo, esse foi o modelo, afinal de contas, o usuário é quem melhor sabe qual tipo de tela ele tem, de quais cores ele gosta mais, o quão grande são as janelas em seu sistema. Foram criados diversos outros navegadores que permitiam ao usuário configurar a exibição do conteúdo, como o <a href="https://en.wikipedia.org/wiki/ViolaWWW" target="_blank">Viola</a> e o <a href="https://en.wikipedia.org/wiki/Mosaic_%28web_browser%29" target="_blank">Mosaic</a>. Eu mesmo criei também um navegador dessa forma, chamado <a href="https://en.wikipedia.org/wiki/Argo_%28web_browser%29" target="_blank">Argo</a>. As folhas de estilo no meu navegador eram mais poderosas, mas ainda assim apenas para o usuário, e não para o autor.</p>
<p>Os primeiros autores na Web eram em sua maioria cientistas. Eles estavam acostumados a escrever documentos e deixar outra pessoa decidir sua aparência: jornais científicos normalmente fornecem suas próprias folhas de estilo (em <a href="https://en.wikipedia.org/wiki/LaTeX" target="_blank">LaTeX</a>, por exemplo), assim o HTML se encaixou bem nesse modelo.</p>
<p>Mas conforme a Web se tornava mais popular, designers começaram a se interessar e a opinião deles era de que, por serem designers, eles sabiam com mais propriedade que os usuários como apresentar um documento da melhor forma. Assim como a aparência de um livro lhe informa sobre que tipo de livro se trata, a aparência de um documento deveria também lhe dizer algo sobre seu conteúdo.</p>
<p>Mas, naquela época, em 1994, isso era impossível de se fazer usando HTML. Assim, duas coisas aconteceram: os designers perceberam que o HTML permitia o uso de imagens, e então eles começaram a substituir textos por imagens, porque assim eles tinham total controle. E o Netscape, o primeiro navegador comercial, notando essa demanda dos designers, começou a adicionar extensões proprietárias ao HTML, como atributos de cor e de plano de fundo, um elemento &lt;center&gt;, e elementos de espaçamento.</p>
<p>Os usuários não estavam felizes com isso: você não pode redimensionar imagens ou recortar e colar partes delas, e imagens também não proviam acessibilidade. E os elementos proprietários faziam os documentos ficarem grandes e difíceis de serem mantidos, e mais difíceis para o usuário aplicar estilos. E, assim, pessoas na lista de discussão www-talk@w3.org começaram a procurar soluções.</p>
<p>Se você quiser ler a história completa do que aconteceu naquela época, você pode ler o <a href="http://www.w3.org/Style/LieBos2e/history/" target="_blank">capítulo relevante no livro que Håkon e eu escrevemos</a> ou a <a href="http://people.opera.com/howcome/2006/phd/" target="_blank">tese de PhD do Håkon</a>. Em suma: diversas pessoas propuseram linguagens de folhas de estilo, algumas vezes versões simplificadas do que já existia no mundo do SGML, por que o HTML foi derivado do SGML. Duas dessas linguagens eram a “Cascading HTML Style Sheets” do Håkon e a minha linguagem “Streaming Style Sheets”.</p>
<p>Quando eu olhei para a linguagem do Håkon, eu vi uma ideia interessante, que era a de que você poderia ter um tipo de negociação entre o que o autor propunha e o que o usuário queria. Nós começamos a trabalhar juntos, combinando as ideias dele e as minhas (por exemplo, seletores contextuais e a aplicação de folhas de estilos para outros tipo de documento além de HTML), nós inventamos uma nova sintaxe e logo nossa proposta (chamada “Cascading Style Sheets” omitindo o “HTML” do nome) se tornou a mais popular, e outras pessoas começaram a contribuir.</p>
<p>Em 1995, o novo grupo de trabalho de HTML assumiu a tarefa, de modo a torná-lo um padrão. E um pouco depois o grupo se separou, formando o grupo de trabalho de CSS existente ainda hoje.</p>
<p><strong>2. Você já considerou aplicar regras de estilo CSS em outros tipos de conteúdo (além de HTML)? Se isso já foi feito, você poderia fornecer um exemplo? Caso contrário, você poderia discutir em que outros conteúdos poderia ser útil o uso de CSS?</strong></p>
<p>Uma das ideias da minha proposta original de folhas de estilo era justamente isto: usar a mesma linguagem de folhas de estilo para uma ampla gama de documentos, não apenas para HTML (meu próprio navegador podia exibir muitos documentos SGML, e HTML era apenas uma subclasse destes).</p>
<p>Naquela época, ainda não existia XML, mas nós pensamos que deveríamos ter uma linguagem de folhas de estilo para SGML simples ou qualquer coisa que tivesse uma estrutura simples de árvore.</p>
<p>Quando o XML foi criado um pouco depois, acabou combinando muito bem com o que tínhamos em mente e assim o CSS pôde ser utilizado com grande parte de documentos XML também.</p>
<p>E o CSS pode ser usado, e está de fato sendo usado, para outras coisas também. Um exemplo é a biblioteca de interfaces gráficas <a href="http://qt-project.org/doc/qt-4.8/stylesheet.html" target="_blank">Qt</a>. Ela usa CSS para aplicar estilo aos componentes da interface gráfica.</p>
<p><strong> 3. Quais partes da atual versão da estecificação do CSS você acha que ainda precisa de mais aprimoramentos?</strong></p>
<p>Tem muitas coisas que ainda estão faltando, especialmente agora que editores estão usando CSS fortemente para editoração de livros, tanto em papel quanto para e-books.</p>
<p>Originalmente nós desenhamos o CSS para ser a linguagem de estilos simples, e adicionamos XSL (por exemplo, XSLT + XSL-FO) para as tarefas complexas, como edição de livros. Mas, no momento, o desenvolvimento do XSL parou, e nós não sabemos quando ele irá continuar, e então os editores estão migrando para o CSS.</p>
<p>Apenas para dar alguns exemplos de coisas que estão faltando no CSS: para o tratamento adequado de hipertexto, nós precisamos de elementos colapsantes (veja <a href="http://en.wikipedia.org/wiki/StretchText" target="_blank">aqui</a>) ou, de modo geral, uma forma de alternar o estado de elementos (e não apenas ‘checkboxes’) entre dois possíveis estilos. Nós também não temos ainda containers que formem uma pilha de páginas em abas.</p>
<p>E temos *muito* trabalho a ser feito para tudo que envolva texto paginado: notas de rodapé, elementos flutuantes no topo ou no pé da página, texto que se estenda atravessando colunas, divisão de texto em múltiplos fluxos e alinhamento desses fluxos de texto em um template de página baseado em uma grade, referências cruzadas (como “veja página 7″), índices alfabéticos, ‘copyfitting’ (fazer um texto caber exatamente em um espaço alocado), cabeçalhos e rodapés contendo texto bidirecional ou fórmulas matemáticas etc. Eu comecei a colecionar uma lista de requisitos que pode sr vista <a href="http://www.w3.org/Style/2013/paged-media-tasks" target="_blank">aqui</a>.</p>
<p><strong>4. Qual é a sua perspectiva para a evolução do CSS e do HTML em longo prazo? Como você acha que essas tecnologias evoluirão nas próximas décadas?</strong></p>
<p>Foi muito bom o HTML4 ter permanecido sem modificações por tanto tempo. Isso nos permitiu compreendê-lo e criar softwares interessantes. Nós esperávamos certos tipos de aplicações, mas algumas vezes levou muitos anos para que as pessoas se tornassem capazes de efetivamente criá-los. Por exemplo, nós esperávamos que algo como os microformatos fosse surgir, mas levou bastante tempo até algumas pessoas de fato descobrirem como fazê-lo corretamente. E algumas coisas foram inesperadas e apenas descobertas depois.</p>
<p>Então, de certa forma, é uma pena que agora nós tenhamos que migrar nossos softwares para o HTML5, mesmo que o HTML5 adicione novas funcionalidades interessantes. Eu estou lentamente migrando meus softwares, mas levará um bom tempo até que eu possa fazer com o HTML5 o que eu posso fazer com o HTML4. Assim, estou esperançoso de que grande parte de tudo o que é o HTML5, ou sua próxima revisão, volte a permanecer estável por 10 ou 15 anos.</p>
<p>Para o CSS, não tenho muita certeza sobre o que quero. Como visto acima, há várias coisas que precisamos adicionar para satisfazer os vários novos usos. Mas o CSS não foi desenhado para tarefas complexas. Ele foi feito para ser usado por usuários comuns para aplicação de estilos simples. Ao contrário do proposto, o CSS está se tornando complexo demais para a maioria das pessoas. Então talvez seja o momento de se recomeçar do zero criando duas novas linguagens: uma simples que todas as pessoas saibam usar, mas que talvez seja limitada na quantidade de controles detalhados que oferece, e uma avançada, adequada até mesmo para editoração complexa de livros e revistas. Mas eu ainda não vi nenhuma proposta que tenha me agradado.</p>
<p>É bom ver diversos pré-processadores de CSS para ajudar os usuários avançados, como o <a href="http://en.wikipedia.org/wiki/Sass_%28stylesheet_language%29" target="_blank">SASS</a> e o <a href="http://en.wikipedia.org/wiki/LESS_%28stylesheet_language%29" target="_blank">LESS</a>. Eu tinha esperança de eles aparecessem mais cedo. Espero que eles se desenvolvam e se tornem ainda melhores. Por outro lado, estou surpreso com o tamanho de algumas folhas de estilo que as pessoas têm criado. As mais complexas que eu mesmo criei têm 10 kbytes, e a maioria é bem menor que isso. Fico me questionando se eles estão fazendo a coisa certa…</p>
<p>Dessa forma, em termos práticos, acho que ainda iremos adicionar novas funcionalidades ao CSS durante os próximos poucos anos. Haverá, sem dúvidas, novos módulos no CSS3, e alguns módulos que já estão finalizados serão provavelmente estendidos ou substituídos por um módulo do CSS4.</p>
<p>Continuaremos mantendo a retrocompatibilidade do CSS, mas isso também significa se tornará gradativamente mais difícil de adicionar novas funcionalidades a ele, e suas sintaxes poderão não ser as mais intuitivas.</p>
<p><em>Tradução técnica: Felipe Sanches </em></p>
		<div class="apiki-wp-taxonomy-content-ads">
			<h6>Mensagem do anunciante:</h6>
			<p>
				Receba consultoria especializada em WordPress com os melhores profissionais do mercado.				<a href="http://wpconsultoria.apiki.com/?utm_source=iMasters&amp;utm_medium=Bloco_Texto&amp;utm_content=04_2013&amp;utm_campaign=ApikiWPConsultoria">Conheça o Apiki WP Consultoria.</a>
			</p>
		</div>
		<p>O post <a href="http://imasters.com.br/front-end/css/entrevista-com-bert-bos-criador-do-padrao-css/">Entrevista com Bert Bos, criador do padrão CSS</a> apareceu primeiro em <a href="http://imasters.com.br"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://imasters.com.br/front-end/css/entrevista-com-bert-bos-criador-do-padrao-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP .NET 4.5 Web Forms &#8211; Tratamento de erros e registro de log &#8211; Parte 09</title>
		<link>http://imasters.com.br/framework/dotnet/asp-net-4-5-web-forms-tratamento-de-erros-e-registro-de-log-parte-09/</link>
		<comments>http://imasters.com.br/framework/dotnet/asp-net-4-5-web-forms-tratamento-de-erros-e-registro-de-log-parte-09/#comments</comments>
		<pubDate>Thu, 23 May 2013 17:00:56 +0000</pubDate>
		<dc:creator>José Carlos Macoratti</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://imasters.com.br/?p=42363</guid>
		<description><![CDATA[<p>Neste artigo aprendemos como manipular erros ao nível da aplicação, a nível da página, e do nível de código.</p><p>O post <a href="http://imasters.com.br/framework/dotnet/asp-net-4-5-web-forms-tratamento-de-erros-e-registro-de-log-parte-09/">ASP .NET 4.5 Web Forms &#8211; Tratamento de erros e registro de log &#8211; Parte 09</a> apareceu primeiro em <a href="http://imasters.com.br"></a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Neste artigo, vamos incluir o tratamento de erros e o registro de erros em nossa aplicação.</p>
<p>O tratamento de erros vai permitir que o aplicativo lide de forma mais amigável com os erros, exibindo mensagens de erros adequadas em cada situação. O registro de erros permitirá que possamos encontrar e corrigir os erros que ocorreram durante a execução da aplicação.</p>
<p>O que você vai aprender:</p>
<ul>
<li>Como adicionar manipulação de erro global para a configuração do aplicativo;</li>
<li>Como adicionar o tratamento de erros a nível de aplicação, de página e de código;</li>
<li>Como registrar erros para posterior análise;</li>
<li>Como exibir mensagens de erro que não comprometam a segurança;</li>
<li>Como implementar módulos registro de erros e manipuladores (ELMAH) de registro de erros;</li>
</ul>
<p>Este artigo foi integralmente baseado no artigo original: <a href="http://www.asp.net/web-forms/tutorials/aspnet-45/getting-started-with-aspnet-45-web-forms/aspnet-error-handling">http://www.asp.net/web-forms/tutorials/aspnet-45/getting-started-with-aspnet-45-web-forms/aspnet-error-handling</a> (com algumas alterações e portado para a linguagem VB .NET).</p>
<h2>Conceitos</h2>
<p>As aplicações ASP.NET devem ser capaz de lidar com os erros que ocorrem durante a execução de uma forma consistente. A ASP.NET usa o Common Language Runtime (CLR), que fornece uma maneira de notificar as aplicações de erros de uma maneira uniforme. Quando ocorre um erro, uma exceção é lançada. Uma exceção é qualquer erro, condição ou comportamento inesperado que um aplicativo encontra durante sua execução.</p>
<p>Na plataforma .NET, uma exceção é um objeto que herda da classe System.Exception. Uma exceção é lançada a partir de uma área de código onde ocorreu um problema. A exceção é passada para a pilha de chamadas, um lugar onde a aplicação fornece código para manipular a exceção. Se o aplicativo não tratar a exceção, o navegador é forçado a exibir os detalhes do erro.</p>
<p>Como melhor prática, lidamos com os erros ao nível do código usando blocos try/catch /finally dentro do código. Geralmente, colocamos esses blocos de modo que o usuário possa corrigir problemas no contexto em que eles ocorrem. Se os blocos de tratamento de erros estiverem muito longe de onde ocorreu o erro, torna-se mais difícil fornecer aos usuários a informação do que ele precisa para corrigir o problema.</p>
<h2>Classe de exceção</h2>
<p>A classe Exception é a classe base da qual as exceções herdam. A maioria dos objetos de exceção são instâncias de alguma classe derivada da classe Exception, como a classeSystemException, a classe IndexOutOfRangeException, ou a classe ArgumentNullException. A classe Exception tem propriedades, tais como a propriedade StackTrace, a propriedadeInnerExceptio e a propriedade Message, que fornecem informações específicas sobre o erro que ocorreu.</p>
<h2>Hierarquia de herança de exceção</h2>
<p>O runtime tem um conjunto base de exceções que derivam da classe SystemException, que ele lança quando uma exceção for encontrada. A maioria das classes que herdam da classe de exceção, como a classe IndexOutOfRangeException e a classe ArgumentNullException, não implementam membros adicionais. Portanto, a informação mais importante para uma exceção pode ser encontrada na hierarquia das exceções, o nome da exceção, e as informações contidas no exceção.</p>
<h2>Hierarquia manipulação de exceção</h2>
<p>Em uma aplicação ASP.NET Web Forms, exceções podem ser tratadas com base em uma hierarquia de tratamento específico. Uma exceção pode ser tratada nos seguintes níveis:</p>
<ol>
<li>Nível de aplicação;</li>
<li>Nível de página;</li>
<li>Nível de código.</li>
</ol>
<p>Quando um aplicativo lida com exceções, informações adicionais sobre a exceção que é herdada da classe Exception muitas vezes podem ser recuperadas e exibidas para o usuário. Além do nível de aplicativo, página e código, você também pode lidar com exceções no nível de módulo HTTP e/ou usando um manipulador personalizado IIS.</p>
<h3>Tratamento de erros a nível de aplicação</h3>
<p>Você pode lidar com erros padrão no nível do aplicativo, quer seja modificando a configuração de seu aplicativo ou adicionando um manipulador Application_Error no arquivoGlobal.asax de sua aplicação.</p>
<p>Você pode lidar com erros padrão e erros de HTTP adicionando uma seção customErrors no arquivo Web.config. A seção customErrors permite que você especifique uma página padrão para a qual os usuários serão redirecionados quando ocorrer um erro. Ele também permite que você especifique páginas individuais para erros de código específicos de status.</p>
<p>A seguir, temos um exemplo de configuração feita no arquivo web.config que define o tratamento de erro neste escopo:</p>
<pre class="brush: vbnet; gutter: true">&lt;configuration&gt;
 &lt;system.web&gt;
 &lt;customErrors mode=&quot;On&quot; defaultRedirect=&quot;ErrorPage.aspx?handler=customErrors%20section%20-%20Web.config&quot;&gt;
 &lt;error statusCode=&quot;404&quot; redirect=&quot;ErrorPage.aspx?msg=404&amp;amp;handler=customErrors%20section%20-%20Web.config&quot;/&gt;
 &lt;/customErrors&gt;
 &lt;/system.web&gt;
&lt;/configuration&gt;</pre>
<p>Infelizmente, quando usamos a configuração para redirecionar o usuário para uma página diferente, não temos os detalhes do erro que ocorreu.No entanto, podemos capturar os erros que ocorrem em qualquer lugar na aplicação, adicionando código para o manipulador Application_Error no arquivo Global.asax, conforme mostra o exemplo a seguir:</p>
<pre class="brush: vbnet; gutter: true">Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
        &#039; dispara quando um erro ocorrer
        Dim exc As Exception = Server.GetLastError()

        If TypeOf exc Is HttpUnhandledException Then
            &#039; Passa o erro para a página de erro.
            Server.Transfer(&quot;ErrorPage.aspx?handler=Application_Error%20-%20Global.asax&quot;, True)
        End If
    End Sub</pre>
<h3>Tratamento de erro a nível de página</h3>
<p>Um manipulador a nível de página retorna o usuário para a página onde o erro ocorreu, mas como as instâncias dos controles não são mantidas, não haverá mais nada na página. Para fornecer os detalhes do erro para o usuário, devemos escrever especificamente os detalhes do erro na página.</p>
<p>Devemos usar um manipulador de erro a nível de página para registrar erros sem tratamento ou para levar o usuário para uma página que pode exibir informações úteis.</p>
<p>Este exemplo de código mostra um manipulador para o evento de erro em uma página ASP.NET. Este manipulador captura todas as exceções que não estão sendo tratadas dentro do bloco try/catch na página.</p>
<pre class="brush: vbnet; gutter: true">Private Sub Page_Error(sender As Object, e As EventArgs)

Dim exc As Exception = Server.GetLastError()
&#039; Trata o erro
If TypeOf exc Is HttpUnhandledException Then
     ErrorMsgTextBox.Text = &quot;Ocorreu um erro nesta página &quot; 
End If
    &#039; LImpar ao erro a partir do servidor
    Server.ClearError()
End Sub</pre>
<p>Depois de tratar um erro, você deve limpá-lo, chamando o método ClearError do objeto Server (classe HttpServerUtility); caso contrário, você vai ver um erro que tenha ocorrido anteriormente.</p>
<h3>Tratamento de erro a nível de código</h3>
<p>A instrução try-catch consiste em um bloco try seguido de uma ou mais cláusulas de captura, que especificam os manipuladores para exceções diferentes. Quando uma exceção é lançada, o Common Language Runtime (CLR) procura a instrução catch que trata esta exceção.</p>
<p>Se o método atualmente em execução não contém um bloco catch, a CLR olha para o método que chamou o método atual, e assim por diante, até a pilha de chamadas. Se nenhum bloco catch é encontrado, a CLR exibe uma mensagem de exceção não tratada para o usuário e para a execução do programa.</p>
<p>O exemplo de código a seguir mostra uma maneira comum de usar try/catch/finally para manipular erros:</p>
<pre class="brush: vbnet; gutter: true">Try
    file.ReadBlock(buffer, index, buffer.Length)
Catch e As FileNotFoundException
    Server.Transfer(&quot;NoFileErrorPage.aspx&quot;, True)
Catch e As System.IO.IOException
    Server.Transfer(&quot;IOErrorPage.aspx&quot;, True)
Finally
    If file IsNot Nothing Then
 	file.Close()
   End If
End Try</pre>
<p>No código acima, o bloco try contém o código que precisa ser protegido contra uma possível exceção. O bloco é executado até que uma exceção é lançada ou o bloco é concluído com êxito. Se uma excepção FileNotFoundException ou uma exceção IOException ocorre, a execução é transferida para uma página diferente. Em seguida, o código contido no bloco finally é executado, se ocorreu um erro ou não &#8211; o código do bloco finally sempre será executado.</p>
<h2>Incluindo o suporte ao registro de erros</h2>
<p>Antes de adicionar a manipulação de erros em nossa aplicação, vamos adicionar o suporte ao registro de erros, adicionando uma classe ExceptionUtility na pasta de Logic do nosso projeto.</p>
<p>Ao fazer isso, cada vez que o aplicativo tratar um erro, os detalhes do erro serão adicionados ao arquivo de log de erros.</p>
<p>Clique com o botão direito do mouse sobre a pasta Logic e selecione Add -&gt; New Item;</p>
<p>A seguir, selecione Visual Basic -&gt; Code e o template Class e informe o nome ExceptionUtility.vb e clique no botão Add;</p>
<p style="text-align: center"><a href="http://imasters.com.br/?attachment_id=42364" rel="attachment wp-att-42364"><img class="aligncenter  wp-image-42364" alt="aspn_4591" src="http://imasters.com.br/wp-content/uploads/2013/05/aspn_4591.gif" width="595" height="335" /></a></p>
<p style="text-align: left">A seguir, digite o código abaixo neste arquivo:</p>
<pre class="brush: vbnet; gutter: true">Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.IO

Namespace WingtipToys.Logic
    &#039; Creia o nosso utilitário de tratamenteo de exceptions
    Public NotInheritable Class ExceptionUtility
        &#039; Todos os métodos são estativiso 
        Private Sub New()
        End Sub

        &#039; Registra uma exceção
        Public Shared Sub LogException(exc As Exception, source As String)
            &#039; Inclui a logica para as registrar as exceções
            &#039; Pega o caminho absoluto para o arquivo de log
            Dim logFile As String = &quot;App_Data/ErrorLog.txt&quot;
            logFile = HttpContext.Current.Server.MapPath(logFile)

            &#039; Abre o arquivo de log para acnexar e escrever o log
            Dim sw As New StreamWriter(logFile, True)
            sw.WriteLine(&quot;********** {0} **********&quot;, DateTime.Now)
            If exc.InnerException IsNot Nothing Then
                sw.Write(&quot;Inner Exception Type: &quot;)
                sw.WriteLine(exc.InnerException.[GetType]().ToString())
                sw.Write(&quot;Inner Exception: &quot;)
                sw.WriteLine(exc.InnerException.Message)
                sw.Write(&quot;Inner Source: &quot;)
                sw.WriteLine(exc.InnerException.Source)
                If exc.InnerException.StackTrace IsNot Nothing Then
                    sw.WriteLine(&quot;Inner Stack Trace: &quot;)
                    sw.WriteLine(exc.InnerException.StackTrace)
                End If
            End If
            sw.Write(&quot;Exception Type: &quot;)
            sw.WriteLine(exc.[GetType]().ToString())
            sw.WriteLine(&quot;Exception: &quot; + exc.Message)
            sw.WriteLine(&quot;Source: &quot; + source)
            sw.WriteLine(&quot;Stack Trace: &quot;)
            If exc.StackTrace IsNot Nothing Then
                sw.WriteLine(exc.StackTrace)
                sw.WriteLine()
            End If
            sw.Close()
        End Sub
    End Class
End Namespace</pre>
<p>Quando ocorre uma exceção, ela pode ser gravada em um arquivo de log de exceção chamando o método LogException. Este método tem dois parâmetros: o objeto da exceção e uma string contendo detalhes sobre a origem da exceção. O log de exceção é gravado no arquivo ErrorLog.txt na pasta App_Data.</p>
<h2>Adicionando uma página de erro</h2>
<p>Em nossa aplicação usaremos uma página para exibir erros. A página de erro é projetada para mostrar uma mensagem de erro segura para os usuários do site. No entanto, se o usuário for um desenvolvedor fazendo uma solicitação HTTP que está sendo servida localmente na máquina onde reside o código, iremos exibir detalhes de erro adicionais na página de erro que serão vistas apenas pelo desenvolvedor.</p>
<p>Clique com o botão direito do mouse sobre o nome do projeto e selecione Add -&gt; New Item. Selecione Visual Basic -&gt; Web e, a seguir, o template Web Form using Master Page e informe o nome ErrorPage.aspx e clique no botão Add.</p>
<p style="text-align: center"><a href="http://imasters.com.br/?attachment_id=42366" rel="attachment wp-att-42366"><img class="aligncenter  wp-image-42366" alt="aspn_4592" src="http://imasters.com.br/wp-content/uploads/2013/05/aspn_4592.gif" width="610" height="333" /></a></p>
<p>Selecione o arquivo Site.Master como a página principal e, em seguida, escolha OK.</p>
<p>A seguir, substitua a marcação existente pelo código a seguir:</p>
<pre class="brush: vbnet; gutter: true">&lt;%@ Page Title=&quot;&quot; Language=&quot;vb&quot; AutoEventWireup=&quot;false&quot; MasterPageFile=&quot;~/Site.Master&quot; CodeBehind=&quot;ErrorPage.aspx.vb&quot; Inherits=&quot;WingTipToys.ErrorPage&quot; %&gt;
&lt;asp:Content ID=&quot;Content1&quot; ContentPlaceHolderID=&quot;HeadContent&quot; runat=&quot;server&quot;&gt;
&lt;/asp:Content&gt;
&lt;asp:Content ID=&quot;Content2&quot; ContentPlaceHolderID=&quot;FeaturedContent&quot; runat=&quot;server&quot;&gt;
     &lt;h2&gt;Erro:&lt;/h2&gt;
    &lt;p&gt;&lt;/p&gt;
    &lt;asp:Label ID=&quot;FriendlyErrorMsg&quot; runat=&quot;server&quot; Text=&quot;Label&quot; Font-Size=&quot;Large&quot; style=&quot;color: red&quot;&gt;&lt;/asp:Label&gt;

    &lt;asp:Panel ID=&quot;DetailedErrorPanel&quot; runat=&quot;server&quot; Visible=&quot;false&quot;&gt;
        &lt;p&gt;
            Erro Detalhado:
            &lt;br /&gt;
            &lt;asp:Label ID=&quot;ErrorDetailedMsg&quot; runat=&quot;server&quot; Font-Bold=&quot;true&quot; Font-Size=&quot;Large&quot; /&gt;&lt;br /&gt;
        &lt;/p&gt;
        &lt;p&gt;
            Tratamento Erro:
            &lt;br /&gt;
            &lt;asp:Label ID=&quot;ErrorHandler&quot; runat=&quot;server&quot; Font-Bold=&quot;true&quot; Font-Size=&quot;Large&quot; /&gt;&lt;br /&gt;
        &lt;/p&gt;
        &lt;p&gt;
            Mensagem de erro Detalhada:
            &lt;br /&gt;
            &lt;asp:Label ID=&quot;InnerMessage&quot; runat=&quot;server&quot; Font-Bold=&quot;true&quot; Font-Size=&quot;Large&quot; /&gt;&lt;br /&gt;
        &lt;/p&gt;
        &lt;pre&gt;
            &lt;asp:Label ID=&quot;InnerTrace&quot; runat=&quot;server&quot;  /&gt;
        &lt;/pre&gt;
    &lt;/asp:Panel&gt;

&lt;/asp:Content&gt;
&lt;asp:Content ID=&quot;Content3&quot; ContentPlaceHolderID=&quot;MainContent&quot; runat=&quot;server&quot;&gt;
&lt;/asp:Content&gt;</pre>
<p>No arquivo code-behind ErrorPage.aspx.vb inclua o código abaixo:</p>
<pre class="brush: vbnet; gutter: true">Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports WingTipToys.WingtipToys.Logic

Public Class ErrorPage
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        &#039; Cria as mensagens de erro seguras
        Dim generalErrorMsg As String = &quot;Ocorreu um problema na aplicação web. Tente novamente. &quot; + &quot;Se o ocorre persistir contacte o suporte técnico.&quot;
        Dim httpErrorMsg As String = &quot;Ocorreu um erro HTTP. Página não encontrada. Tente novamente.&quot;
        Dim unhandledErrorMsg As String = &quot;O erro não foi tratado pelo código da aplicação.&quot;

        &#039; exibe as mensagens de erro
        FriendlyErrorMsg.Text = generalErrorMsg

        &#039; Determina onde o erro foi tratado
        Dim errorHandler__1 As String = Request.QueryString(&quot;handler&quot;)
        If errorHandler__1 Is Nothing Then
            errorHandler__1 = &quot;Error Page&quot;
        End If

        &#039; pegao ultimo erro do servidor.
        Dim ex As Exception = Server.GetLastError()

        &#039; Pega o numero do erro passado como um valor querystring 
        Dim errorMsg As String = Request.QueryString(&quot;msg&quot;)
        If errorMsg = &quot;404&quot; Then
            ex = New HttpException(404, httpErrorMsg, ex)
            FriendlyErrorMsg.Text = ex.Message
        End If

        &#039;Se a exceção não existe mais, cria uma exceção genérica
        If ex Is Nothing Then
            ex = New Exception(unhandledErrorMsg)
        End If

        &#039; exibe os detalhes de erro somente para o desenvolvedor.SOMENTE ACESSO LOCAL
        If Request.IsLocal Then
            &#039;mensagem de erro detalhada
            ErrorDetailedMsg.Text = ex.Message

            &#039; mostra onde o erro foi tratado
            ErrorHandler.Text = errorHandler__1

            &#039; mostra o acesso local 
            DetailedErrorPanel.Visible = True

            If ex.InnerException IsNot Nothing Then
                InnerMessage.Text = ex.[GetType]().ToString() + &quot;&lt;br/&gt;&quot; + ex.InnerException.Message
                InnerTrace.Text = ex.InnerException.StackTrace
            Else
                InnerMessage.Text = ex.[GetType]().ToString()
                If ex.StackTrace IsNot Nothing Then
                    InnerTrace.Text = ex.StackTrace.ToString().TrimStart()
                End If
            End If
        End If

        &#039; registra a exceção
        ExceptionUtility.LogException(ex, errorHandler__1)

        &#039; limpa o erro do servidor
        Server.ClearError()
    End Sub

End Class</pre>
<p>Quando a página de erro for exibida, o evento Page_Load é executado. No manipulador Page_Load, o local onde o erro foi primeiro tratado é determinado. Então, o último erro que ocorreu é obtido através do método GetLastError do objeto Server.</p>
<p>Se a exceção não existir mais, uma exceção genérica será criada. Então, se o pedido HTTP foi feita localmente, todos os detalhes do erro serão mostrados. Neste caso, apenas a máquina local executando a aplicação web vai ver esses detalhes do erro. Depois que as informações do erro forem exibidas, o erro é adicionado ao arquivo de log e o erro é eliminado do servidor.</p>
<h2>Exibindo mensagens de erro não tratadas para a aplicação</h2>
<p>Ao adicionar uma seção customErrors no arquivo Web.config, você pode rapidamente tratar erros simples que ocorrem na aplicação. Você também pode especificar como lidar com erros com base no seu valor de código de status, como 404 &#8211; Arquivo não encontrado.</p>
<p>Abra o arquivo web.config da raiz do projeto e inclua a seção customErrors no interior do nó conforme abaixo:</p>
<p style="text-align: center"><a href="http://imasters.com.br/?attachment_id=42369" rel="attachment wp-att-42369"><img class="aligncenter  wp-image-42369" alt="aspn_4593" src="http://imasters.com.br/wp-content/uploads/2013/05/aspn_4593.gif" width="587" height="172" /></a></p>
<p>A seção customErrors especifica o modo, o que é definido como &#8220;On&#8221; (mode=&#8221;On&#8221;). Também especifica o defaultRedirect, que diz à aplicação para qual página navegar quando ocorrer um erro.</p>
<p>Além disso, adicionamos um elemento de erro específico que define como lidar com um erro 404 quando uma página não for encontrada. Mais adiante, vamos adicionar o tratamento de erro adicional que irá capturar os detalhes de um erro a nível de aplicação.</p>
<h2>Testando a aplicação</h2>
<p>Execute a aplicação pressionando CTRL+F5 (ou clicando no botão do menu que executa a aplicação). O navegador irá abrir e apresentar a página Default.aspx:</p>
<p style="text-align: center"><a href="http://imasters.com.br/?attachment_id=42371" rel="attachment wp-att-42371"><img class="aligncenter  wp-image-42371" alt="aspn_4584 (1)" src="http://imasters.com.br/wp-content/uploads/2013/05/aspn_4584-1.gif" width="591" height="347" /></a></p>
<p>Informe a seguinte URL no navegador para provocar um erro: http://localhost:674846/NoPage.aspx (o número da porta para sua aplicação será diferente).</p>
<p>A página de erro ErrorPage.aspx será exibida conforme a figura a seguir:</p>
<p style="text-align: center"><a href="http://imasters.com.br/?attachment_id=42372" rel="attachment wp-att-42372"><img class="aligncenter  wp-image-42372" alt="aspn_4594" src="http://imasters.com.br/wp-content/uploads/2013/05/aspn_4594.gif" width="536" height="336" /></a></p>
<p>Quando você solicita a página NoPage.aspx que não existe, a página de erro irá mostrar a mensagem de erro simples e as informações de erro detalhadas (se detalhes adicionais estiverem disponíveis).</p>
<p>No entanto, se o usuário solicitou uma página inexistente a partir de um local remoto, a página de erro só vai mostrar a mensagem de erro em vermelho.</p>
<h2>Incluindo uma exceção para testes</h2>
<p>Para verificar como o aplicativo irá funcionar quando ocorre um erro, você pode deliberadamente criar condições de erro. Vamos lançar uma exceção de teste quando a página padrão for carregada para ver o que acontece.</p>
<p>Abra o arquivo code-behind Default.aspx.vb e no evento Load da página inclua o código abaixo:</p>
<pre class="brush: vbnet; gutter: true">Public Class _Default
    Inherits Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        Throw New InvalidOperationException(&quot;O Erro : InvalidOperationException &quot; + &quot;õcorreu no evento Page_Load ná página Default.aspx.&quot;)
    End Sub
End Class</pre>
<p>No código acima estamos criando uma exceção do tipo InvalidOperationException, que irá ocorrer quando a página Default.aspx for carregada.</p>
<h3>Testando a aplicação</h3>
<p>Execute a aplicação novamente pressionando CTRL+F5 (ou clicando no botão do menu que executa a aplicação). O navegador irá abrir e apresentar a página Default.aspx.</p>
<p>A página exibirá a mensagem de erro conforme abaixo:</p>
<p style="text-align: center"><a href="http://imasters.com.br/?attachment_id=42373" rel="attachment wp-att-42373"><img class="aligncenter  wp-image-42373" alt="aspn_4596" src="http://imasters.com.br/wp-content/uploads/2013/05/aspn_4596.gif" width="547" height="349" /></a></p>
<h2>Adicionando o tratamento de erros a nível de aplicativo</h2>
<p>Em vez de capturar a exceção usando a seção customErrors no arquivo Web.config, onde você ganha pouca informação sobre a exceção, você pode interceptar o erro no nível da aplicação e recuperar detalhes do erro.</p>
<p>Abra o arquivo Global.asax e atualize o código do evento Application_Error conforme abaixo:</p>
<pre class="brush: vbnet; gutter: true"> Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
        &#039; pega o último erro do servidor
        Dim exc As Exception = Server.GetLastError()

        If TypeOf exc Is HttpUnhandledException Then
            If exc.InnerException IsNot Nothing Then
                exc = New Exception(exc.InnerException.Message)
                Server.Transfer(&quot;ErrorPage.aspx?handler=Application_Error%20-%20Global.asax&quot;, True)
            End If
        End If

    End Sub</pre>
<p>Quando ocorre um erro na aplicação, o manipulador Application_Error é chamado. Nesse manipulador, a última exceção é recuperada e revisada. Se a exceção ocorreu sem um tratamento e a exceção contém detalhes de uma exceção interior (InnerException não é nulo), a aplicação transfere a execução para a página de erro onde os detalhes da exceção são exibidos.</p>
<h3>Testando a aplicação</h3>
<p>Execute a aplicação novamente pressionando CTRL+F5 (ou clicando no botão do menu que executa a aplicação). O navegador irá abrir e apresentar a página Default.aspx.</p>
<p>A página exibirá a mensagem de erro conforme abaixo:</p>
<p style="text-align: center"><a href="http://imasters.com.br/?attachment_id=42374" rel="attachment wp-att-42374"><img class="aligncenter  wp-image-42374" alt="aspn_4595" src="http://imasters.com.br/wp-content/uploads/2013/05/aspn_4595.gif" width="538" height="373" /></a></p>
<h2>Adicionando o tratamento de erros a nível de página</h2>
<p>Podemos adicionar a manipulação de erros a nível de página para uma página, seja adicionando um atributo ErrorPage na diretiva @Page da página, ou pela adição de um manipulador de eventos Page_Error ao código-behind da página. Vamos adicionar um manipulador de eventos Page_Error que irá transferir a execução para a página ErrorPage.aspx.</p>
<p>Abra o arquivo code-behind Default.aspx.vb e inclua o código para o evento Page_Error() conforme abaixo:</p>
<pre class="brush: vbnet; gutter: true">Private Sub Page_Error(sender As Object, e As EventArgs)
        &#039; pega o ultimo erro do servidor.
        Dim exc As Exception = Server.GetLastError()

        &#039; trata o erro
        If TypeOf exc Is InvalidOperationException Then
            &#039; Passa o erro para pagina de erro
            Server.Transfer(&quot;ErrorPage.aspx?handler=Page_Error%20-%20Default.aspx&quot;, True)
        End If
    End Sub</pre>
<p>Quando ocorre um erro na página, o manipulador de eventos Page_Error é chamado. Nesse manipulador, a última exceção é recuperada e revisada. Se um erro do tipo InvalidOperationException ocorrer, o manipulador de eventos Page_Error transfere a execução para a página de erro onde os detalhes da exceção são exibidos.</p>
<h3>Testando a aplicação</h3>
<p>Execute a aplicação novamente pressionando CTRL+F5 (ou clicando no botão do menu que executa a aplicação). O navegador irá abrir e apresentar a página Default.aspx.</p>
<p>A página exibirá a mensagem de erro conforme abaixo:</p>
<p style="text-align: center"><a href="http://imasters.com.br/?attachment_id=42375" rel="attachment wp-att-42375"><img class="aligncenter  wp-image-42375" alt="aspn_4597" src="http://imasters.com.br/wp-content/uploads/2013/05/aspn_4597.gif" width="554" height="358" /></a></p>
<p>Após essa bateria de testes, remova ou comente o código usado no evento Load da página Default.aspx para lançar deliberadamente um erro.</p>
<h2>Usando ELMAH</h2>
<p>ELMAH (módulos de registro de erros e manipuladores) é uma unidade de registro de erros que você conecta em sua aplicação ASP.NET como um pacote NuGet. A ELMAH oferece os seguintes recursos:</p>
<ul>
<li>Registro de exceções não tratadas;</li>
<li>Uma página da Web para exibir todo o log de exceções não tratadas;</li>
<li>Uma página da Web para exibir os detalhes de cada exceção logada;</li>
<li>Uma notificação por e-mail de cada erro no momento em que ocorre;</li>
<li>Um feed RSS dos últimos 15 erros do registro.</li>
</ul>
<p>Antes de trabalhar com o ELMAH, temos que instalá-lo. Isto é fácil usando o instalador de pacotes NuGet.</p>
<p><strong>Obs:</strong> O NuGet é uma extensão do Visual Studio que faz com que seja fácil de instalar e atualizar bibliotecas de código aberto e ferramentas no Visual Studio.</p>
<p>Com o projeto aberto no Visual Web Developer for Web, clique no menu TOOLS  e a seguir selecione Library Package Manager -&gt; Manage Nuget Packages for Solution.</p>
<p><a href="http://imasters.com.br/?attachment_id=42376" rel="attachment wp-att-42376"><img class="aligncenter size-full wp-image-42376" alt="aspn_4598" src="http://imasters.com.br/wp-content/uploads/2013/05/aspn_4598.gif" width="612" height="272" /></a></p>
<p>A janela - Manage Nuget Packages - será exibida. Selecione o item OnLine e digite na caixa de busca a palavra ELMAH. O pacote ELMAH deverá ser exibido no topo da lista de itens encontrados. Clique no botão Install para instalar o pacote ELMAH. A instalação apresentará uma tela solicitando a confirmação para instalar o pacote no projeto. Confirme clicando em OK.</p>
<p><strong>Obs:</strong> Você deve estar conectado para poder baixar o pacote.</p>
<p style="text-align: center"><a href="http://imasters.com.br/?attachment_id=42377" rel="attachment wp-att-42377"><img class="aligncenter  wp-image-42377" alt="aspn_4599" src="http://imasters.com.br/wp-content/uploads/2013/05/aspn_4599.gif" width="543" height="296" /></a></p>
<p>Se for solicitado, recarregar os arquivos abertos, selecione &#8220;Sim para Todos&#8221; (Yes to All).</p>
<p>O pacote ELMAH adiciona entradas na seção &lt;modules&gt; do nó &lt;system.webServer&gt; no arquivo Web.config. Se o sistema solicitar se você deseja recarregar o arquivo Web.config modificado, clique em Sim(Yes).</p>
<p>Com essa etapa concluída, estamos pronto para usar o pacote ELMAH.</p>
<h2>Visualizando o log ELMAH</h2>
<p>Ver o log ELMAH é fácil, mas primeiro vamos criar uma exceção não tratada que será gravada no log ELMAH.</p>
<p>Pressione CTRL + F5 para executar nossa aplicação. A seguir, digite a seguinte URL (usando o seu número de porta) no navegador para provocar uma exceção não tratada no log ELMAH: localhost:64786/NoPage.aspx.</p>
<p style="text-align: center"><a href="http://imasters.com.br/?attachment_id=42378" rel="attachment wp-att-42378"><img class="aligncenter  wp-image-42378" alt="aspn_459a" src="http://imasters.com.br/wp-content/uploads/2013/05/aspn_459a.gif" width="612" height="302" /></a></p>
<p style="text-align: center">
<p style="text-align: left">A página de erro será exibida conforme abaixo:</p>
<p style="text-align: center"><a href="http://imasters.com.br/?attachment_id=42379" rel="attachment wp-att-42379"><img class="aligncenter  wp-image-42379" alt="aspn_459b" src="http://imasters.com.br/wp-content/uploads/2013/05/aspn_459b.gif" width="603" height="364" /></a></p>
<p style="text-align: center">
<p>Para visualizar o log de erros ELMAH digite a url no navegador: http://localhost:64786/elmah.axd</p>
<p style="text-align: center"><a href="http://imasters.com.br/?attachment_id=42380" rel="attachment wp-att-42380"><img class="aligncenter  wp-image-42380" alt="aspn_459c" src="http://imasters.com.br/wp-content/uploads/2013/05/aspn_459c.gif" width="576" height="160" /></a></p>
<p>O log de erros ELMAH será exibido indicando informações sobre a ocorrência:</p>
<p style="text-align: center"><a href="http://imasters.com.br/?attachment_id=42381" rel="attachment wp-att-42381"><img class="aligncenter  wp-image-42381" alt="aspn_459d" src="http://imasters.com.br/wp-content/uploads/2013/05/aspn_459d.gif" width="594" height="211" /></a></p>
<p>Se você clicar no link Details, irá obter os detalhes da exceção:</p>
<p style="text-align: center"><a href="http://imasters.com.br/?attachment_id=42382" rel="attachment wp-att-42382"><img class="aligncenter  wp-image-42382" alt="aspn_459e" src="http://imasters.com.br/wp-content/uploads/2013/05/aspn_459e.gif" width="577" height="407" /></a></p>
<p><strong>Atenção!!!</strong> Cuidado ao usar o recurso ELMAH, pois qualquer um pode ler o código de erro acessando a página, e existem exploits (um exploit é um programa de computador ou uma sequência de comandos que se aproveita das vulnerabilidades de um sistema) que exploram isso.</p>
<ul>
<li>Veja como hackear Elmah <a href="http://www.troyhunt.com/2012/01/aspnet-session-hijacking-with-google.html">aqui</a>.</li>
<li>Para implementar seguro (não testei): <a id="yui_3_7_2_1_1365635417613_6259" href="http://haacked.com/archive/2007/07/24/securely-implement-elmah-for-plug-and-play-error-logging.aspx" target="_blank" rel="nofollow">http://haacked.com/archive/2007/07/24/securely-implement-elmah-for-plug-and-play-error-logging.aspx</a></li>
</ul>
<p>***</p>
<p>Colaboração de Vitor Hugo.</p>
<p>Neste artigo aprendemos como manipular erros ao nível da aplicação, a nível da página, e do nível de código. Aprendemos também a registrar erros tratados e sem tratamento para posterior análise. Além disso, aprendemos  sobre a importância das mensagens de erro seguras.</p>
<p>E com isso encerramos essa série de tutoriais onde acompanhamos a criação de uma aplicação ASP .NET Web Forms usando o Visual Studio Express For Web 2012.</p>
<p>Embora a aplicação possa ser melhorada em muitos aspectos, o objetivo foi mostrar como podemos criar aplicações dinâmicas com acesso a dados usando recursos integrados do Visual Studio.</p>
<p>Espero que esses artigos tenham contribuído para aguçar o seu desejo em aprender mais sobre a tecnologia ASP .NET, pois o que vimos foi só a ponta do Iceberg.</p>
<p>Bom estudo!!!</p>
<p>O post <a href="http://imasters.com.br/framework/dotnet/asp-net-4-5-web-forms-tratamento-de-erros-e-registro-de-log-parte-09/">ASP .NET 4.5 Web Forms &#8211; Tratamento de erros e registro de log &#8211; Parte 09</a> apareceu primeiro em <a href="http://imasters.com.br"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://imasters.com.br/framework/dotnet/asp-net-4-5-web-forms-tratamento-de-erros-e-registro-de-log-parte-09/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aparelho gerencia dois cartões SIM e sintoniza TV Digital no Android 4.1.2</title>
		<link>http://imasters.com.br/tecnologia/aparelho-gerencia-dois-cartoes-sim-e-sintoniza-tv-digital-no-android-4-1-2/</link>
		<comments>http://imasters.com.br/tecnologia/aparelho-gerencia-dois-cartoes-sim-e-sintoniza-tv-digital-no-android-4-1-2/#comments</comments>
		<pubDate>Thu, 23 May 2013 16:13:59 +0000</pubDate>
		<dc:creator>Info Online</dc:creator>
				<category><![CDATA[Tecnologia]]></category>

		<guid isPermaLink="false">http://imasters.com.br/desenvolvimento/aparelho-gerencia-dois-cartoes-sim-e-sintoniza-tv-digital-no-android-4-1-2/</guid>
		<description><![CDATA[<p>					
							   Seguindo o mesmo padrão de layout aplicado no Razr D3, o Motorola Razr D1 é um smartphone compacto, com preço competitivo e bons recursos. Equipado com TV digital,...						
							</p><p>O post <a href="http://imasters.com.br/tecnologia/aparelho-gerencia-dois-cartoes-sim-e-sintoniza-tv-digital-no-android-4-1-2/">Aparelho gerencia dois cartões SIM e sintoniza TV Digital no Android 4.1.2</a> apareceu primeiro em <a href="http://imasters.com.br"></a>.</p>]]></description>
				<content:encoded><![CDATA[<p><img src="http://imasters.com.br/wp-content/uploads/2013/05/130548-razr-d1-250.jpg" alt="" width="250" height="153" class="align size-large wp-image-42600" />							</p>
<p>Seguindo o mesmo padrão de layout aplicado no <b><a href="http://info.abril.com.br/reviews/smartphones/motorola-razr-d3.shtml" title="" target="_blank">Razr D3</a></b>, o Motorola Razr D1 é um smartphone compacto, com preço competitivo e bons recursos. Equipado com TV digital, dois cartões SIM e processador de 1 GHz, o gadget roda o Android 4.1.2 sem muitos engasgos e com desempenho acima da média para a categoria.</p>
<p>Custando 529 reais, o D1 é uma opção mais econômica para quem precisa gerenciar duas linhas e não abre mão de maior velocidade nas tarefas básicas. O processador ARMv7 com um núcleo de 1 GHz, somado à memória RAM de 1 GB, garantiu em nossos testes uma boa experiência de uso. O smartphone rodou os principais aplicativos, como Facebook, Instagram e games sem grandes problemas. Há lentidão em alguns pontos, como na gestão do app de TV digital e com muitos aplicativos abertos simultaneamente, mas nada acima do normal para um smartphone de entrada.</p>
<p><strong>Benchmark Quadrant (em pontos)</strong><br />
Barras maiores indicam melhor desempenho<br />
<!-- compini --></p>
<div class="comparativo">
<p>Motorola / Razr D1</p>
<div class="bar" style="width:80%">2.450</div>
<p>Positivo/YPY 400</p>
<div class="bar" style="width:85%">2.557</div>
<p>Sony / Xperia J</p>
<div class="bar" style="width:65%">1.844</div>
</div>
<p><!-- compfim --></p>
<p><strong>Benchmark AnTuTu (em pontos)</strong><br />
Barras maiores indicam melhor desempenho<br />
<!-- compini --></p>
<div class="comparativo">
<p>Motorola / Razr D1</p>
<div class="bar" style="width:85%">6.739</div>
<p>Positivo/YPY 400</p>
<div class="bar" style="width:72%">5.586</div>
<p>Sony / Xperia J</p>
<div class="bar" style="width:45%">3.755</div>
</div>
<p><!-- compfim -->
</p>
<p>Ao contrário de outros modelos com TV digital, o D1 não possui uma antena retrátil. A sintonia dos canais é feita quando os fones de ouvido estão conectados. Dessa forma, assim como para a sintonia de rádio, o cabo dos fones assume o papel da antena. Na prática isso resulta em uma redução na força de sinal. Em nossos testes, isso não significou perda em qualidade ou recepção de menos canais, mas houve demora na sintonia. O aplicativo de TV exibe guia de programação, grava trechos dos programas direto no cartão microSD e salva capturas de tela. O layout é muito similar ao do Atrix TV Dual, também da Motorola.</p>
<p>Com 3,5 polegadas, a tela do D1 oferece 480 por 320 pixels. O brilho intenso e a fidelidade nas cores compensam a resolução baixa. É possível reparar serrilhados em menus e ícones do sistema. O resultado com vídeos também não é dos melhores. Por outro lado, há precisão nos toques e, no geral, a interface da Motorola, que se aproxima do Android em sua versão pura, causa boa impressão.</p>
<p>Com 5 megapixels, a câmera do Razr D1 faz fotos medianas em boas condições de luz. Durante a noite ou em ambientes pouco iluminados, o excesso de ruído e a falta de flash LED tornam o registro de imagens inviável. Os vídeos são gravados em 480p a 30 quadros por segundo.</p>
</p>
<p><strong>Fonte:</strong> <a href="http://info.abril.com.br/reviews/smartphones/motorola-razr-d1.shtml">http://info.abril.com.br/reviews/smartphones/motorola-razr-d1.shtml</a></p>
<p>O post <a href="http://imasters.com.br/tecnologia/aparelho-gerencia-dois-cartoes-sim-e-sintoniza-tv-digital-no-android-4-1-2/">Aparelho gerencia dois cartões SIM e sintoniza TV Digital no Android 4.1.2</a> apareceu primeiro em <a href="http://imasters.com.br"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://imasters.com.br/tecnologia/aparelho-gerencia-dois-cartoes-sim-e-sintoniza-tv-digital-no-android-4-1-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
			<media:content url="http://imasters.com.br/wp-content/uploads/2013/05/130548-razr-d1-250.jpg" medium="image" />
	</item>
		<item>
		<title>Você conhece o Supersumer?</title>
		<link>http://imasters.com.br/tecnologia/e-commerce/voce-conhece-o-supersumer/</link>
		<comments>http://imasters.com.br/tecnologia/e-commerce/voce-conhece-o-supersumer/#comments</comments>
		<pubDate>Thu, 23 May 2013 14:00:33 +0000</pubDate>
		<dc:creator>Armindo Ferreira</dc:creator>
				<category><![CDATA[E-commerce]]></category>
		<category><![CDATA[consumidor]]></category>
		<category><![CDATA[ecommerce]]></category>
		<category><![CDATA[prosumer]]></category>
		<category><![CDATA[supersumer]]></category>

		<guid isPermaLink="false">http://imasters.com.br/?p=42517</guid>
		<description><![CDATA[<p>O Supersumer é um consumidor bem diferente do que vemos hoje. Ele está conectado 24h/dia e quer atendimento a qualquer hora e em qualquer lugar.</p><p>O post <a href="http://imasters.com.br/tecnologia/e-commerce/voce-conhece-o-supersumer/">Você conhece o Supersumer?</a> apareceu primeiro em <a href="http://imasters.com.br"></a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Primeiro veio o consumidor, depois o prosumer – um termo em inglês que junta as palavras producer (produtor) com consumer (consumidor).</p>
<p>Se antes o consumidor que tinha um problema com um produto dependia de um grande veículo de comunicação, agora basta estar conectado à internet para ele possa fazer barulho nas redes sociais. Este é o Prosumer.</p>
<p>Mas as empresas mal se acostumaram a este novo cenário e vem aí a evolução disso tudo que é o Supersumer. É um consumidor bem diferente do que vemos hoje. Ele está conectado 24 horas por dia e quer atendimento a qualquer hora e em qualquer lugar.</p>
<p>É o consumidor que usará Google Glass e outros gadgets que nem conhecemos ainda. Quase um consumidor cibernético que poderá transmitir falhas ou reclamações em tempo real e sua rede de contatos irá reverberar este problema até em alguns casos causar dores fortes de cabeça nos gestores.</p>
<p>Mas como podemos nos preparar para estes novos cenários que virão? Pode parecer clichê mas não vamos resolver novos problemas com soluções antigas. É preciso que os SACs se renovem urgentemente. Sistemas de informação de marketing, BI – Business Inteligence e SAC totalmente integrados farão toda a diferença.</p>
<p>E para um superconsumidor vamos precisar de um SuperSAC que use referenciamento geográfico, dispositivos móveis e vídeo-chamadas. Dei uma palestra recentemente sobre o tema:</p>
<p><iframe src="http://www.slideshare.net/slideshow/embed_code/19983360" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen webkitallowfullscreen mozallowfullscreen> </iframe>
<div style="margin-bottom:5px"> <strong> <a href="http://www.slideshare.net/armindoferreira/estamos-preparados-para-o-super-consumidor-supersumer-ou-superprosumer" title="Estamos preparados para o super consumidor (Supersumer ou SuperProsumer)" target="_blank">Estamos preparados para o super consumidor (Supersumer ou SuperProsumer)</a> </strong> from <strong><a href="http://www.slideshare.net/armindoferreira" target="_blank">Armindo Ferreira</a></strong> </div>
<p>E se você acha tudo isso muito utopia dê uma olhada no vídeo abaixo:</p>
<p><iframe width="500" height="281" src="http://www.youtube.com/embed/SS_aR99Nxrg?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>O vídeo está em inglês mas basicamente uma consumidora recebe a câmera quebrada, entra em contato com o SAC que já identifica o defeito e fala que irá trocar o produto, porém como a cliente precisa do produto o quanto antes a equipe localiza uma loja que tem a câmera nas imediações da casa da cliente. Pode parecer tudo muito utópico para a realidade brasileira, mas sinto que precisamos pelo menos discutir estas novas relações você não acha?</p>
<p>O post <a href="http://imasters.com.br/tecnologia/e-commerce/voce-conhece-o-supersumer/">Você conhece o Supersumer?</a> apareceu primeiro em <a href="http://imasters.com.br"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://imasters.com.br/tecnologia/e-commerce/voce-conhece-o-supersumer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Business Intelligence para pequenas empresas</title>
		<link>http://imasters.com.br/gerencia-de-ti/business-intelligence-para-pequenas-empresas/</link>
		<comments>http://imasters.com.br/gerencia-de-ti/business-intelligence-para-pequenas-empresas/#comments</comments>
		<pubDate>Thu, 23 May 2013 13:00:37 +0000</pubDate>
		<dc:creator>Marcos Abellón</dc:creator>
				<category><![CDATA[Gerência de TI]]></category>
		<category><![CDATA[BI]]></category>
		<category><![CDATA[business intelligence]]></category>
		<category><![CDATA[empresas]]></category>

		<guid isPermaLink="false">http://imasters.com.br/?p=42409</guid>
		<description><![CDATA[<p>Muita gente ainda vê o BI como algo que só serve para grandes empresas. Mas ele pode ser adaptado para o tamanho de qualquer empresa.</p><p>O post <a href="http://imasters.com.br/gerencia-de-ti/business-intelligence-para-pequenas-empresas/">Business Intelligence para pequenas empresas</a> apareceu primeiro em <a href="http://imasters.com.br"></a>.</p>]]></description>
				<content:encoded><![CDATA[<p>De acordo com dados do IBGE, as pequenas e médias empresas são responsáveis por 20% da riqueza produzida no país. Isso significa algo em torno de 700 bilhões de dólares. Além disso, 60% dos empregos no Brasil são gerados pelas pequenas e médias empresas. Inserir as ferramentas de Business Intelligence nesSe nicho pode influenciar muito a economia do País!</p>
<p>Entretanto, muita gente ainda vê o Business Intelligence como algo distante, que só serve para as grandes empresas. Mas essa é uma visão equivocada. Na verdade o BI é uma ferramenta que pode ser adaptada para o tamanho de qualquer empresa.</p>
<p>Uma pesquisa realizada pela ComputerWorld Brasil, em 2010, mostrou que na América Latina foram investidos cerca de us$ 504 milhões em BI, sendo que metade dessa quantia veio para o Brasil. Segundo a consultoria IDC, em pesquisa do mesmo ano, as pequenas e médias empresas já estavam optando por essa solução, mas utilizando versões mais simples. Ou seja, pode-se afirmar que implementação do BI nesSas empresas é apontada como responsável por diversos resultados positivos, entre eles: redução de custos, melhoria de processos e aumento da retenção de clientes.</p>
<p>Mas se ainda assim você não está convencido, proponho que imagine a seguinte situação: uma rede de três mercadinhos que precisa saber quais são os produtos mais vendidos no começo do mês (momento de mais compra pelos consumidores em virtude do recebimento do salário). Essa informação é muito importante e interfere automaticamente no departamento de compras, logística, estoque e até na exposição dos produtos na loja, e o gestor precisa tomar uma decisão rapidamente para atender bem e não ficar sem produtos ou ficar com muitos produtos que não vendem em estoque. E é aí que entra o BI para resolver isso tudo.</p>
<p>Um sistema de Business Intelligence ajuda na tomada de decisão, e as possibilidades são muito maiores do que acabei de citar. Com as métricas e os KPIs corretos, é possível enxergar e entender melhor o cenário de atuação de qualquer empresa, seja grande ou pequena, e como agir de maneira correta e assertiva.</p>
<p>Uma pequena fábrica de sapatos, por exemplo, precisa saber quais são os clientes que mais compram sapatos masculinos bico fino na região Sudeste? Quais os modelos mais vendidos de sandálias para o Nordeste e quanto isso representa das vendas totais da empresa? As respostas dessas perguntas influenciam na elaboração da próxima coleção e, se a empresa não tem isso nas mãos, fica muito complicado decidir e garantir sucesso.</p>
<p>Podem ser perguntas simples, mas difíceis de serem respondidas em um primeiro momento. EsSas informações, no entanto, podem gerar <em>insights</em> valiosíssimos para a sua pequena empresa, capazes de gerar uma economia de tempo e custos. E ainda pode e deve influenciar na estratégia de vendas dos seus produtos ou serviços.</p>
<p>E isso tudo já pode ser acessado pelo tablet ou smartphone do dono da empresa. Com uma ferramenta de BI móvel, é possível acessar, analisar e cruzar dados estando em qualquer lugar.</p>
<p>Enfim, as possibilidades de utilização do Business Intelligence são inúmeras. Será que não é isso o que está faltando para a sua pequena ou média empresa crescer cada vez mais?</p>
<p>O post <a href="http://imasters.com.br/gerencia-de-ti/business-intelligence-para-pequenas-empresas/">Business Intelligence para pequenas empresas</a> apareceu primeiro em <a href="http://imasters.com.br"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://imasters.com.br/gerencia-de-ti/business-intelligence-para-pequenas-empresas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
