<?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>Blog do Alex Pimenta</title>
	<atom:link href="http://blog.alexpimenta.com/index.php/feed/rss/" rel="self" type="application/rss+xml" />
	<link>http://blog.alexpimenta.com</link>
	<description>Ideias, opniões e análises. Desde o futebol até a tecnologia.</description>
	<lastBuildDate>Thu, 04 Aug 2011 01:55:17 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
	<copyright>2006-2007 </copyright>
	<managingEditor>blog@alexpimenta.com (Blog do Alex Pimenta)</managingEditor>
	<webMaster>blog@alexpimenta.com (Blog do Alex Pimenta)</webMaster>
	<ttl>1440</ttl>
	<image>
		<url>http://blog.alexpimenta.com/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
		<title>Blog do Alex Pimenta</title>
		<link>http://blog.alexpimenta.com</link>
		<width>144</width>
		<height>144</height>
	</image>
	<itunes:subtitle></itunes:subtitle>
	<itunes:summary>Ideias, opniões e análises. Desde o futebol até a tecnologia.</itunes:summary>
	<itunes:keywords></itunes:keywords>
	<itunes:category text="Society &#38; Culture" />
	<itunes:author>Blog do Alex Pimenta</itunes:author>
	<itunes:owner>
		<itunes:name>Blog do Alex Pimenta</itunes:name>
		<itunes:email>blog@alexpimenta.com</itunes:email>
	</itunes:owner>
	<itunes:block>no</itunes:block>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://blog.alexpimenta.com/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<item>
		<title>Dicas SQL Server</title>
		<link>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/dicas-sql-server/</link>
		<comments>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/dicas-sql-server/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 22:07:52 +0000</pubDate>
		<dc:creator>Alex Pimenta</dc:creator>
				<category><![CDATA[Informática e Tecnologia]]></category>

		<guid isPermaLink="false">http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/dicas-sql-server/</guid>
		<description><![CDATA[Algumas dicas úteis de T-SQL para usarmos no dia a dia.]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.alexpimenta.com/wp-content/uploads/2011/08/SQL-Server-Logo.png"><img style="margin: 0px 5px 5px 0px; display: inline; float: left;" title="SQL Server Logo" src="http://blog.alexpimenta.com/wp-content/uploads/2011/08/SQL-Server-Logo_thumb.png" alt="SQL Server Logo thumb Dicas SQL Server" width="240" height="159" align="left" /></a>Hoje vou falar sobre alguns problemas que detectei além de algumas facetas que uso no meu dia a dia.</p>
<p>&nbsp;</p>
<h4>“Parameter Sniffing”</h4>
<p>Algumas situações fazem com que o SQL Server Engine não consiga mapear o melhor plano de execução nas consultas feitas dentro de Stored Procedures, passando os parâmetros na cláusula where.</p>
<p>&nbsp;</p>
<p>Exemplo:</p>
<pre class="brush: sql">CREATE PROC [dbo].[spExemplo] (@pcModelo VARCHAR (3) = 'MOD')
AS SELECT *
FROM [dbo].[Tabela] TAB (NOLOCK)
WHERE (TAB.Modelo = @pcModelo OR @pcModelo = 'MOD');</pre>
<p>Este é um típico caso onde o engine do SQL Server não consegue encontrar o melhor plano de execução. Para entender mais sobre o problema, procure sobre “<a href="http://www.sqlpointers.com/2006/11/parameter-sniffing-stored-procedures.html" target="_blank">Parameter Sniffing</a>”.</p>
<p>Como resolvemos?</p>
<p>Existem duas formas. Ou você usa a cláusula Option com a opção Optimize for Unknown. Ou declara variáveis locais e coloca a variável local na cláusula Where ao invés do parâmetro da Stored Procedure.</p>
<p>Solução 1:</p>
<pre class="brush: sql">CREATE PROC [dbo].[spExemplo] (@pcModelo VARCHAR (3) = 'MOD')
AS SELECT * FROM [dbo].[Tabela] TAB (NOLOCK)
WHERE (TAB.Modelo = @pcModelo OR @pcModelo = 'MOD')
OPTION (OPTIMIZE FOR UNKNOWN);</pre>
<p>Solução 2:</p>
<pre class="brush: sql">CREATE PROC [dbo].[spExemplo] (@pcModelo VARCHAR (3) = 'MOD')
AS
DECLARE @lModelo AS VARCHAR (3);
SET @lModelo = @pcModelo;

SELECT *
FROM [dbo].[Tabela] TAB (NOLOCK)
WHERE (TAB.Modelo = @lModelo OR @lModelo = 'MOD');</pre>
<h5><strong>Pesquisa de strings dentro de Stored Procedures</strong></h5>
<pre class="brush: sql">CREATE FUNCTION [dbo].[fnCountChar] (
@String AS TEXT,
@charToFind AS VARCHAR(100) )
RETURNS INT
AS BEGIN
DECLARE @Count AS INT = 0;
DECLARE @Lastpos As INT = CHARINDEX(@charToFind, @String);
IF (@Lastpos&gt;0) BEGIN
  SET @Count = 1;
  WHILE @Lastpos &gt;0 BEGIN
    SET @Count = @Count + 1;
    SET @Lastpos = CHARINDEX(@charToFind, @String, @Lastpos+1);
  END;
END;
RETURN @Count;
END
GO

DECLARE @String AS VARCHAR(8000) = 'CARACTER_A_SER_PROCURADO';
SELECT o.[name], line=[dbo].[fnCountChar](SUBSTRING(c.[text],0,CHARINDEX(@String, c.[text])),CHAR(13)),[text]=SUBSTRING(REPLACE(REPLACE(REPLACE(REPLACE(c.[text], CHAR(13), ' '), CHAR(10), ''), CHAR(9), ''), ' ', ' '),CHARINDEX(@String, REPLACE(REPLACE(REPLACE(REPLACE(c.[text], CHAR(13), '|'), CHAR(10), ''), CHAR(9), ' '), ' ', ' '))-50, 100) FROM MSCIS_Temp.sys.syscomments c JOIN MSCIS_Temp.sys.sysobjects o on o.id = c.id WHERE o.[xtype] = 'P' AND REPLACE(REPLACE(REPLACE(c.[text],CHAR(13),' '),CHAR(10),' '),CHAR(9),' ') like '%' + @String + '%';
GO

DROP FUNCTION [dbo].[fnCountChar];</pre>
<h5>Executando uma Stored Procedure em um Select From</h5>
<pre class="brush: sql">SELECT *
FROM OPENQUERY(sszsdev06,'exec [Database].[dbo].[StoredProcedure] 111,''TEXTO''');</pre>
<p><span style="font-family: Courier New;">Note que:</span></p>
<p><span style="font-family: Courier New;">&#8216;exec [Database].[dbo].[StoredProcedure] 111,&#8221;TEXTO&#8221;&#8217;</span></p>
<p><span style="font-family: Courier New;">É o mesmo que:</span></p>
<p><span style="font-family: Courier New;">exec [Database].[dbo].[StoredProcedure] 111,&#8217;TEXTO&#8217;</span></p>
<p>&nbsp;</p>
<h5>Fazendo split de string delimitada</h5>
<pre class="brush: sql">DECLARE @sNomes varchar(max)= 'Alex,Pimenta,Desenvolvedor,SQL,DOT NET';
DECLARE @sDelimitador CHAR(1) = ',';
DECLARE @xml XML = N'&lt;root&gt;&lt;strings&gt;' + replace(@sNomes,@sDelimitador,'&lt;/strings&gt;&lt;strings&gt;') + '&lt;/strings&gt;&lt;/root&gt;';
SELECT Tab.S.value('.','varchar(17)') AS [Coluna] FROM @xml.nodes('//root/strings') as Tab(S);</pre>
<p>&nbsp;</p>
<h5>Pivot Table – Consultas Cruzadas.</h5>
<p>Imaginem que temos uma tabela de alunos e cada aluno tem suas notas mensalmente.</p>
<p>Uma consulta neste cenário nos retornaria o resultado linearmente, repetindo o nome de cada aluno com suas notas mensalmente. Existe uma forma de mostrarmos uma linha com o nome do aluno e suas notas mensalmente em colunas. Para isso usamos o Pivot Table.</p>
<p>Vamos demonstrar. Primeiro, preparamos as tabelas:</p>
<pre class="brush: sql">CREATE TABLE tb_temp_alunos (
id INT NOT NULL PRIMARY KEY,
nome VARCHAR (50));
GO

INSERT INTO tb_temp_alunos VALUES (1, 'Alex Pimenta');
INSERT INTO tb_temp_alunos VALUES (2, 'Thatiane Pimenta');
INSERT INTO tb_temp_alunos VALUES (3, 'Andressa Pimenta');
INSERT INTO tb_temp_alunos VALUES (4, 'Estela Pimenta');
INSERT INTO tb_temp_alunos VALUES (5, 'Maria Pimenta');
GO

CREATE TABLE tb_temp_notas (
id INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
id_nome INT NOT NULL,
mes VARCHAR(20),
nota INT,
FOREIGN KEY (id_nome) REFERENCES tb_temp_alunos);
GO

INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (1, 'Janeiro', 10);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (1, 'Fevereiro', 9);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (1, 'Março', 8);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (1, 'Abril', 5);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (1, 'Maio', 9);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (1, 'Junho', 10);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (2, 'Janeiro', 5);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (2, 'Fevereiro', 6);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (2, 'Março', 7);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (2, 'Abril', 5);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (2, 'Maio', 9);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (2, 'Junho', 8);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (3, 'Janeiro', 4);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (3, 'Fevereiro', 2);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (3, 'Março', 8);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (3, 'Abril', 10);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (3, 'Maio', 10);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (3, 'Junho', 10);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (4, 'Janeiro', 1);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (4, 'Fevereiro', 2);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (4, 'Março', 5);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (4, 'Abril', 8);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (4, 'Maio', 9);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (4, 'Junho', 10);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (5, 'Janeiro', 1);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (5, 'Fevereiro', 1);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (5, 'Março', 10);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (5, 'Abril', 10);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (5, 'Maio', 9);
INSERT INTO tb_temp_notas (id_nome, mes, nota) VALUES (5, 'Junho', 9);
GO</pre>
<p><span style="font-family: Courier New;">Agora se fizermos um consulta teremos o resultado linear:</span></p>
<pre class="brush: sql">SELECT nm.id, nome, mes, nota
FROM tb_temp_alunos nm
JOIN tb_temp_notas nt ON (nt.id_nome=nm.id)</pre>
<table width="400" border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td valign="top" width="36"><strong>Id</strong></td>
<td valign="top" width="164"><strong>nome</strong></td>
<td valign="top" width="100"><strong>mes</strong></td>
<td valign="top" width="100"><strong>nota</strong></td>
</tr>
<tr>
<td valign="top" width="36">1</td>
<td valign="top" width="164">Alex Pimenta</td>
<td valign="top" width="100">Janeiro</td>
<td valign="top" width="100">10</td>
</tr>
<tr>
<td valign="top" width="36">1</td>
<td valign="top" width="164">Alex Pimenta</td>
<td valign="top" width="100">Fevereiro</td>
<td valign="top" width="100">9</td>
</tr>
<tr>
<td valign="top" width="36">1</td>
<td valign="top" width="164">Alex Pimenta</td>
<td valign="top" width="100">Março</td>
<td valign="top" width="100">8</td>
</tr>
<tr>
<td valign="top" width="36">1</td>
<td valign="top" width="164">Alex Pimenta</td>
<td valign="top" width="100">Abril</td>
<td valign="top" width="100">5</td>
</tr>
<tr>
<td valign="top" width="36">1</td>
<td valign="top" width="164">Alex Pimenta</td>
<td valign="top" width="100">Maio</td>
<td valign="top" width="100">9</td>
</tr>
<tr>
<td valign="top" width="36">1</td>
<td valign="top" width="164">Alex Pimenta</td>
<td valign="top" width="100">Junho</td>
<td valign="top" width="100">10</td>
</tr>
<tr>
<td valign="top" width="36">2</td>
<td valign="top" width="164">Thatiane Pimenta</td>
<td valign="top" width="100">Janeiro</td>
<td valign="top" width="100">5</td>
</tr>
<tr>
<td valign="top" width="36">2</td>
<td valign="top" width="164">Thatiane Pimenta</td>
<td valign="top" width="100">Fevereiro</td>
<td valign="top" width="100">6</td>
</tr>
<tr>
<td valign="top" width="36">2</td>
<td valign="top" width="164">Thatiane Pimenta</td>
<td valign="top" width="100">Março</td>
<td valign="top" width="100">7</td>
</tr>
<tr>
<td valign="top" width="36">2</td>
<td valign="top" width="164">Thatiane Pimenta</td>
<td valign="top" width="100">Abril</td>
<td valign="top" width="100">5</td>
</tr>
<tr>
<td valign="top" width="36">2</td>
<td valign="top" width="164">Thatiane Pimenta</td>
<td valign="top" width="100">Maio</td>
<td valign="top" width="100">9</td>
</tr>
<tr>
<td valign="top" width="36">2</td>
<td valign="top" width="164">Thatiane Pimenta</td>
<td valign="top" width="100">Junho</td>
<td valign="top" width="100">8</td>
</tr>
<tr>
<td valign="top" width="36">3</td>
<td valign="top" width="164">Andressa Pimenta</td>
<td valign="top" width="100">Janeiro</td>
<td valign="top" width="100">4</td>
</tr>
<tr>
<td valign="top" width="36">3</td>
<td valign="top" width="164">Andressa Pimenta</td>
<td valign="top" width="100">Fevereiro</td>
<td valign="top" width="100">2</td>
</tr>
<tr>
<td valign="top" width="36">3</td>
<td valign="top" width="164">Andressa Pimenta</td>
<td valign="top" width="100">Março</td>
<td valign="top" width="100">8</td>
</tr>
<tr>
<td valign="top" width="36">3</td>
<td valign="top" width="164">Andressa Pimenta</td>
<td valign="top" width="100">Abril</td>
<td valign="top" width="100">10</td>
</tr>
<tr>
<td valign="top" width="36">3</td>
<td valign="top" width="164">Andressa Pimenta</td>
<td valign="top" width="100">Maio</td>
<td valign="top" width="100">10</td>
</tr>
<tr>
<td valign="top" width="36">3</td>
<td valign="top" width="164">Andressa Pimenta</td>
<td valign="top" width="100">Junho</td>
<td valign="top" width="100">10</td>
</tr>
<tr>
<td valign="top" width="36">4</td>
<td valign="top" width="164">Estela Pimenta</td>
<td valign="top" width="100">Janeiro</td>
<td valign="top" width="100">1</td>
</tr>
<tr>
<td valign="top" width="36">4</td>
<td valign="top" width="164">Estela Pimenta</td>
<td valign="top" width="100">Fevereiro</td>
<td valign="top" width="100">2</td>
</tr>
<tr>
<td valign="top" width="36">4</td>
<td valign="top" width="164">Estela Pimenta</td>
<td valign="top" width="100">Março</td>
<td valign="top" width="100">5</td>
</tr>
<tr>
<td valign="top" width="36">4</td>
<td valign="top" width="164">Estela Pimenta</td>
<td valign="top" width="100">Abril</td>
<td valign="top" width="100">8</td>
</tr>
<tr>
<td valign="top" width="36">4</td>
<td valign="top" width="164">Estela Pimenta</td>
<td valign="top" width="100">Maio</td>
<td valign="top" width="100">9</td>
</tr>
<tr>
<td valign="top" width="36">4</td>
<td valign="top" width="164">Estela Pimenta</td>
<td valign="top" width="100">Junho</td>
<td valign="top" width="100">10</td>
</tr>
<tr>
<td valign="top" width="36">5</td>
<td valign="top" width="164">Maria Pimenta</td>
<td valign="top" width="100">Janeiro</td>
<td valign="top" width="100">1</td>
</tr>
<tr>
<td valign="top" width="36">5</td>
<td valign="top" width="164">Maria Pimenta</td>
<td valign="top" width="100">Fevereiro</td>
<td valign="top" width="100">1</td>
</tr>
<tr>
<td valign="top" width="36">5</td>
<td valign="top" width="164">Maria Pimenta</td>
<td valign="top" width="100">Março</td>
<td valign="top" width="100">10</td>
</tr>
<tr>
<td valign="top" width="36">5</td>
<td valign="top" width="164">Maria Pimenta</td>
<td valign="top" width="100">Abril</td>
<td valign="top" width="100">10</td>
</tr>
<tr>
<td valign="top" width="36">5</td>
<td valign="top" width="164">Maria Pimenta</td>
<td valign="top" width="100">Maio</td>
<td valign="top" width="100">9</td>
</tr>
<tr>
<td valign="top" width="36">5</td>
<td valign="top" width="164">Maria Pimenta</td>
<td valign="top" width="100">Junho</td>
<td valign="top" width="100">9</td>
</tr>
</tbody>
</table>
<p>Nosso objetivo é tornar a visão agrupado por usuário, mostrando suas notas mensalmente na horizontal.</p>
<pre class="brush: sql">DECLARE @COLUMNS VARCHAR (6000) = STUFF(( SELECT DISTINCT TOP 100 PERCENT
'],[' + nm.mes FROM tb_temp_notas nm ORDER BY '],[' + nm.mes FOR XML PATH('')), 1, 2, '') + ']';
DECLARE @SQL VARCHAR(max) = 'select * from (select nm.id, nome, mes, nota from tb_temp_alunos nm join tb_temp_notas nt on (nt.id_nome=nm.id)) tbl pivot (sum(nota) for tbl.mes in (' + @COLUMNS + ')) pvt';

EXEC(@SQL);</pre>
<table width="422" border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td valign="top" width="19"><strong>Id</strong></td>
<td valign="top" width="267"><strong>Nome</strong></td>
<td valign="top" width="10"><strong>Abril</strong></td>
<td valign="top" width="27"><strong>Fevereiro</strong></td>
<td valign="top" width="10"><strong>Janeiro</strong></td>
<td valign="top" width="42"><strong>Junho</strong></td>
<td valign="top" width="10"><strong>Maio</strong></td>
<td valign="top" width="35"><strong>Março</strong></td>
</tr>
<tr>
<td valign="top" width="19">1</td>
<td valign="top" width="267">Alex Pimenta</td>
<td valign="top" width="10">5</td>
<td valign="top" width="27">9</td>
<td valign="top" width="10">10</td>
<td valign="top" width="42">10</td>
<td valign="top" width="10">9</td>
<td valign="top" width="35">8</td>
</tr>
<tr>
<td valign="top" width="19">2</td>
<td valign="top" width="267">Thatiane Pimenta</td>
<td valign="top" width="10">5</td>
<td valign="top" width="27">6</td>
<td valign="top" width="10">5</td>
<td valign="top" width="42">8</td>
<td valign="top" width="10">9</td>
<td valign="top" width="35">7</td>
</tr>
<tr>
<td valign="top" width="19">3</td>
<td valign="top" width="267">Andressa Pimenta</td>
<td valign="top" width="10">10</td>
<td valign="top" width="27">2</td>
<td valign="top" width="10">4</td>
<td valign="top" width="42">10</td>
<td valign="top" width="10">10</td>
<td valign="top" width="35">8</td>
</tr>
<tr>
<td valign="top" width="19">4</td>
<td valign="top" width="267">Estela Pimenta</td>
<td valign="top" width="10">8</td>
<td valign="top" width="27">2</td>
<td valign="top" width="10">1</td>
<td valign="top" width="42">10</td>
<td valign="top" width="10">9</td>
<td valign="top" width="35">8</td>
</tr>
<tr>
<td valign="top" width="19">5</td>
<td valign="top" width="267">Maria Pimenta</td>
<td valign="top" width="10">10</td>
<td valign="top" width="27">1</td>
<td valign="top" width="10">1</td>
<td valign="top" width="42">9</td>
<td valign="top" width="10">9</td>
<td valign="top" width="35">10</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/dicas-sql-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alternativa para versionar código fonte gratuitamente</title>
		<link>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/alternativa-para-versionar-codigo-fonte-gratuitamente/</link>
		<comments>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/alternativa-para-versionar-codigo-fonte-gratuitamente/#comments</comments>
		<pubDate>Wed, 25 May 2011 03:57:30 +0000</pubDate>
		<dc:creator>Alex Pimenta</dc:creator>
				<category><![CDATA[Informática e Tecnologia]]></category>

		<guid isPermaLink="false">http://blog.alexpimenta.com/?p=266</guid>
		<description><![CDATA[Se você é um dos milhares de desenvolvedores, como eu, que tem grandes ideias de projeto mas não possui um servidor dedicado para armazenar seus projetos, aqui vai uma boa dica para versionar seu código fonte sem gastar um tostão.]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.alexpimenta.com/wp-content/uploads/2011/05/subversion-background-peq.png"><img class="alignleft size-full wp-image-267" style="margin-right: 5px; margin-bottom: 5px; border: 2px solid black;" title="Logo Subversion" src="http://blog.alexpimenta.com/wp-content/uploads/2011/05/subversion-background-peq.png" alt="subversion background peq Alternativa para versionar código fonte gratuitamente" width="170" height="128" /></a>Versionador de códigos fonte ao alcance de todos.</p>
<p>Se você é um dos milhares de desenvolvedores, como eu, que tem grandes ideias de projetos mas não possui um servidor dedicado para armazenar seus projetos, aqui vai uma boa dica para versionar seu código fonte sem gastar um tostão.</p>
<p>Vamos lá. Mas o que é um Sistema de controle de versão?</p>
<p>&#8220;<a href="http://pt.wikipedia.org/wiki/Sistema_de_controle_de_vers%C3%A3o" target="_blank">Um sistema de controle de versão (ou versionamento) VCS (do inglês version control system) ou ainda SCM (do inglês source code management) na função prática da Ciência da Computação e da Engenharia de Software, é um software com a finalidade de gerenciar diferentes versões no desenvolvimento de um documento qualquer. Esses sistemas são comumente utilizados no desenvolvimento de software para controlar as diferentes versões (histórico e desenvolvimento) dos códigos-fontes e também da documentação.</a>&#8221; (fonte <a href="http://pt.wikipedia.org/wiki/Sistema_de_controle_de_vers%C3%A3o" target="_blank">WikipédiA</a>)</p>
<p>Bom. Mas precisamos de um hosting, ou servidor para servir como repositório dos código-fontes ou documentos, e um cliente para gerenciar nosso repositório.</p>
<p>A solução:</p>
<p>Subversion. Sim, temos uma alternativa e com alguns hosts com repositorios gratuítos, podemos compartilhar projetos com outros desenvolvedores de forma bem simples e integrado ao Visual Studio 2005, 2008 and 2010.</p>
<p>Comece baixando e instalando o Subversion Client para Visual Studio através o site do <a href="http://ankhsvn.open.collab.net/" target="_blank">Collabnet</a>. Tem uma opção paga também, o <a href="http://www.visualsvn.com/visualsvn/" target="_blank">VisualSVN</a>. Para quem usa o Eclipse, aqui vai o client: <a href="http://subclipse.tigris.org/" target="_blank">Subclipse</a>.</p>
<p>Agora precisamos de um hosting para nosso repositório. A maioria são pagos, como o <a href="https://www.assembla.com/plans" target="_blank">Assembla</a> e <a href="http://beanstalkapp.com/pricing" target="_blank">Beanstalk</a>. Hoje procurei hostings com planos free. As alternativas de hosting com planos gratuitos que encontrei foram : <a href="http://www.xp-dev.com/" target="_blank">XP-Dev.com</a> e <a href="http://unfuddle.com/about/tour/plans" target="_blank">Unfuddle</a>. Uma boa forma de pesquisar hostings para svn é este site: <a href="http://www.svnhostingcomparison.com/" target="_blank">http://www.svnhostingcomparison.com/</a>.</p>
<p>Vou falar um pouco de como utilizar o Subversion no Visual Studio. É simples. Mas para quem está acostumado com outros versionadores como Visual Sourcesafe ou Clear Case, existem algumas diferenças práticas para se marcar o arquivo como sendo alterado e subir suas alterações do arquivo. Nos versionadores como o Visual Sourcesafe ou o Clear Case usamos as opções check-in e check-out. No Subversion, Lock e Submit. Abaixo os passos para começar a usá-lo no Visual Studio.</p>
<p>Após baixar o Subversion Client para Visual Studio através o site do <a href="http://ankhsvn.open.collab.net/" target="_blank">Collabnet</a>, certifique-se de que foi instalado corretamente abrindo o Visual Studio, clicando no Menu &#8220;File&#8221;, deverá ter a opção Subversion:</p>
<p style="text-align: center;"><a href="http://blog.alexpimenta.com/wp-content/uploads/2011/05/Visual-Studio-File-Subversion-Menu.png" target="_blank"><img class="aligncenter size-full wp-image-269" style="border: 1px solid black;" title="Visual-Studio-File-Subversion-Menu" src="http://blog.alexpimenta.com/wp-content/uploads/2011/05/Visual-Studio-File-Subversion-Menu.png" alt="Visual Studio File Subversion Menu Alternativa para versionar código fonte gratuitamente" width="500" height="387" /></a></p>
<p>Agora vamos configurar. No Visual Studio, selecione no menu &#8220;Tools/Options&#8221;, selecione o ítem &#8220;Source Control/ Plug-in Selection&#8221; e escolha o plug-in &#8220;AnkhSVN &#8211; Subversion Support for Visual Studio&#8221;:</p>
<p style="text-align: center;"><a href="http://blog.alexpimenta.com/wp-content/uploads/2011/05/Visual-Studio-Option-SourceControl-Plug-In-Selection.png" target="_blank"><img class="size-full wp-image-271 aligncenter" style="border: 1px solid black;" title="Visual-Studio-Option-SourceControl-Plug-In-Selection" src="http://blog.alexpimenta.com/wp-content/uploads/2011/05/Visual-Studio-Option-SourceControl-Plug-In-Selection.png" alt="Visual Studio Option SourceControl Plug In Selection Alternativa para versionar código fonte gratuitamente" width="589" height="314" /></a></p>
<p>Só para complementar. Eu, particularmente, gosto desta opção. Selecione &#8220;Source Control / Subversion Environment&#8221; e check a opção &#8220;Automatically lock files on change without user confirmation&#8221;:</p>
<p><a href="http://blog.alexpimenta.com/wp-content/uploads/2011/05/Visual-Studio-Option-SourceControl-Subversion-Environment.png"><img class="aligncenter size-full wp-image-272" style="border: 1px solid black;" title="Visual-Studio-Option-SourceControl-Subversion-Environment" src="http://blog.alexpimenta.com/wp-content/uploads/2011/05/Visual-Studio-Option-SourceControl-Subversion-Environment.png" alt="Visual Studio Option SourceControl Subversion Environment Alternativa para versionar código fonte gratuitamente" width="597" height="300" /></a></p>
<p>Pronto, agora o subversion está pronto para ser usado.</p>
<p>Eu criei um projeto no <a href="http://unfuddle.com/about/tour/plans" target="_blank">Unfuddle</a>, só para testar. Acesse direto o endereço para o cadastro do plano gratuíto <a href="https://secure.unfuddle.com/accounts/new?plan=private" target="_blank">https://secure.unfuddle.com/accounts/new?plan=private</a>. Preencha o cadastro e continue.</p>
<p>Agora crie um repositório. Criei o meu como teste, para o exemplo:</p>
<p style="text-align: center;"><a href="http://blog.alexpimenta.com/wp-content/uploads/2011/05/NovoRepositorio1.png" target="_blank"><img class="aligncenter size-medium wp-image-273" style="border: 1px solid black;" title="NovoRepositorio#1" src="http://blog.alexpimenta.com/wp-content/uploads/2011/05/NovoRepositorio1-300x173.png" alt="NovoRepositorio1 300x173 Alternativa para versionar código fonte gratuitamente" width="300" height="173" /></a></p>
<p>Crie, e clique no nome do repositório. Teremos os endereços de base, para adicionar a solução do nosso projeto através do cliente do Visual Studio:</p>
<p style="text-align: center;"><a href="http://blog.alexpimenta.com/wp-content/uploads/2011/05/NovoRepositorio2.png"><img class="aligncenter size-full wp-image-274" style="border: 1px solid black;" title="NovoRepositorio#2" src="http://blog.alexpimenta.com/wp-content/uploads/2011/05/NovoRepositorio2.png" alt="NovoRepositorio2 Alternativa para versionar código fonte gratuitamente" width="558" height="209" /></a></p>
<p>No nosso caso: http://forsells.unfuddle.com/svn/forsells_teste/</p>
<p>Agora no Visual Studio, clique com o botão direito no mouse sobre a solução. E clique em &#8220;Add Solution to Subversion&#8221;:</p>
<p style="text-align: center;"><a href="http://blog.alexpimenta.com/wp-content/uploads/2011/05/Adicionando-Solution.png"><img class="aligncenter size-full wp-image-275" style="border: 1px solid black;" title="Adicionando-Solution" src="http://blog.alexpimenta.com/wp-content/uploads/2011/05/Adicionando-Solution.png" alt="Adicionando Solution Alternativa para versionar código fonte gratuitamente" width="344" height="232" /></a></p>
<p>Aparecerá uma tela para informar o repositório. Então informe o endereço que obtivemos após criarmos o repositório: http://forsells.unfuddle.com/svn/forsells_teste/. Deverá aparecer as pastas do seu repositório, clique na ultima: &#8220;svn/forsells_teste/&#8221; . E finalize clicando em &#8220;Ok&#8221;:</p>
<p style="text-align: center;"><a href="http://blog.alexpimenta.com/wp-content/uploads/2011/05/Adicionando-Solution-2.png"><img class="aligncenter size-full wp-image-276" style="border: 1px solid black;" title="Adicionando-Solution-2" src="http://blog.alexpimenta.com/wp-content/uploads/2011/05/Adicionando-Solution-2.png" alt="Adicionando Solution 2 Alternativa para versionar código fonte gratuitamente" width="333" height="454" /></a></p>
<p style="text-align: center;"><a href="http://blog.alexpimenta.com/wp-content/uploads/2011/05/Adicionando-Solution-2.png"></a>Será requisitado uma mensagem para log, informe : &#8220;Criação do projeto&#8221;, e clique em &#8220;Ok&#8221;</p>
<p>Para concluir, selecione no menu &#8220;View / Pending Changes&#8221;, e clique em &#8220;commit&#8221;:</p>
<p style="text-align: center;"><a href="http://blog.alexpimenta.com/wp-content/uploads/2011/05/Adicionando-Solution-3.png"><img class="aligncenter size-full wp-image-277" style="border: 1px solid black;" title="Adicionando-Solution-3" src="http://blog.alexpimenta.com/wp-content/uploads/2011/05/Adicionando-Solution-3.png" alt="Adicionando Solution 3 Alternativa para versionar código fonte gratuitamente" width="602" height="204" /></a></p>
<p>Agora é só convidar mais usuários. Passar este post para aprender a configurar tudo e desenvolver uma grande ideia.</p>
<p>Espero que este post possa ajudar.</p>
<p>Até a próxima&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/alternativa-para-versionar-codigo-fonte-gratuitamente/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Android</title>
		<link>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/android/</link>
		<comments>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/android/#comments</comments>
		<pubDate>Fri, 20 May 2011 12:38:45 +0000</pubDate>
		<dc:creator>Alex Pimenta</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Informática e Tecnologia]]></category>
		<category><![CDATA[Eclair]]></category>
		<category><![CDATA[Froyo]]></category>
		<category><![CDATA[Gingerbread]]></category>
		<category><![CDATA[Milestone]]></category>
		<category><![CDATA[Smartphone]]></category>

		<guid isPermaLink="false">http://blog.alexpimenta.com/?p=250</guid>
		<description><![CDATA[Tenho um Motorola Milestone que adquiri em Agosto de 2010. Apesar das primeiras versões do Milestone virem com o Android 2.0, o meu veio com o Android 2.1 (Eclair) update instalado. O que já era uma grande coisa na época, comparado aos outros aparelhos que foram sendo lançados, como o Sony X10 que, apesar da tela [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.alexpimenta.com/wp-content/uploads/2011/05/images.jpeg"><img class="alignleft size-thumbnail wp-image-251" style="margin-right: 10px; border: 2px solid black;" title="Motorola Milestone" src="http://blog.alexpimenta.com/wp-content/uploads/2011/05/images-150x150.jpg" alt="images 150x150 Android" width="150" height="150" /></a>Tenho um Motorola Milestone que adquiri em Agosto de 2010. Apesar das primeiras versões do Milestone virem com o Android 2.0, o meu veio com o Android 2.1 (Eclair) update instalado. O que já era uma grande coisa na época, comparado aos outros aparelhos que foram sendo lançados, como o Sony X10 que, apesar da tela parecer ser maior e com mais resolução, não tem multi-touch além de ser lançado com a versão do Android 1.5 (Cupcake), mais atrasada.</p>
<p>Durante este período a ansiedade era do lançamento do Android 2.2 (Froyo) e se a Motorola atualizaria o Milestone. A Motorola ficou um tempo enorme avaliando se faria a atualização e ainda chegou a publicar que não faria a <a href="http://www.kakoholder.com/2010/08/motorola-desiste-de-atualizar-o-milestone-para-o-froyo-na-america-latina-e-mexico/" target="_blank">atualização para a América Latina</a>. Mas, diante de tanta pressão exercida pela campanha #motofail no twitter, finalmente em Março deste ano foi liberado a atualização para o Froyo que pode ser baixada no site de <a href="http://bit.ly/b0eFjC" target="_blank">Atualizações da Motorola</a>.</p>
<p>Porém, muito antes desta atualização, um usuário do Milestone no Brasil resolveu desenvolver suas próprias ROMs para o Milestone. No <a href="http://code.google.com/p/shadowmodbr/" target="_blank">ShadowmodeBR</a>, criada por Edgard Castro (<a href="http://androidblog.com.br/destaques/entrevista-edgard-castro-desenvolvedor-do-shadommod-br/" target="_blank">Veja entrevista</a>) e contando com a contribuíção de mais 3 membros, pode ser encontrado e baixado constantemente atualizações. Hoje podemos baixar o Android 2.3 (Gingerbread).</p>
<p>Eu não esperei a atualização da Motorola, e foi por meio do <a href="http://code.google.com/p/shadowmodbr/" target="_blank">ShadowmodeBR</a> que fiz a primeira atualização no meu Milestone. Primeiro para o Froyo, pois queria muito ter o recurso de mover os aplicativos instalados para o cartão SD liberando mais espaço na memória interna. E  em Fevereiro para o Gingerbread (Android 2.3).</p>
<p>Minhas considerações:</p>
<p>O Android 2.3 me pareceu mais rápido que o 2.2 além da interface mais agradável (black). Encontrei problemas apenas com a câmera. Nas atualizações do <a href="http://code.google.com/p/shadowmodbr/" target="_blank">ShadowmodeBR</a> a câmera do milestone não funciona 100%. Às vezes trava, fica lenta, e na função de filmar não são raros os travamentos. Na questão de economia de bateria, o Gingerbread me pareceu mais eficiente do que o Froyo. Também notei uma queda de qualidade na conversação via celular. Várias pessoas que eu conversei via o Milestone com o Gingerbread relataram, com uma certa frequência até desagradável, que minha voz estava cortando. No Gingerbread meu celular reiniciou com menos frequencia do que no froyo, cerca de 1 vez por mês contra umas 3 do froyo. No geral, achei que vale a pena.</p>
<p>Ontem eu baixei a versão do Froyo da Motorola, e resolvi instalar. Acho que vou manter esta versão por um único motivo. O<a href="http://blog.alexpimenta.com/wp-content/uploads/2011/05/AtualizacaoMotorola.png"><img class="alignright size-thumbnail wp-image-264" title="Atualização Motorola" src="http://blog.alexpimenta.com/wp-content/uploads/2011/05/AtualizacaoMotorola-150x150.png" alt="AtualizacaoMotorola 150x150 Android" width="150" height="150" /></a> CrystalTalk realmente faz diferença nas chamadas por celular, minha vôz não corta mais.</p>
<p>Um detalhe importante. É necessário voltar a versão do seu Milestone, baixando a imagem da ROM do <a href="http://www.4shared.com/file/7769hgSD/SHLA_U2_03050_USASHLSRETBRLA02.html" target="_blank">Android 2.1 retail</a> e seguir as instruções do seguinte blog: &#8220;<a href="http://www.blogdoandroid.com/2011/03/como-voltar-seu-milestone-para-o-android-2-1-eclair-e-como-fazer-o-debranding/" target="_blank">Como voltar seu Milestone para o Android 2.1 Eclair, e como fazer o debranding</a>&#8220;; Caso você tenha realizado atualizações de outras ROMs como as do ShadowmodBR.</p>
<p>Existem outras versões de ROM do Android, que até podem ser instaladas no Milestone, porém exigem mais conhecimento técnico, como o <a href="http://www.cyanogenmod.com/" target="_blank">CyanogenMod</a>.</p>
<p>Espero ter ajudado em minhas considerações e aproveitem seus smartphones com Android.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Uma forma simples de obter endereço pelo CEP</title>
		<link>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/uma-forma-simples-de-obter-endereco-pelo-cep/</link>
		<comments>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/uma-forma-simples-de-obter-endereco-pelo-cep/#comments</comments>
		<pubDate>Tue, 26 Apr 2011 03:31:13 +0000</pubDate>
		<dc:creator>Alex Pimenta</dc:creator>
				<category><![CDATA[Informática e Tecnologia]]></category>

		<guid isPermaLink="false">http://blog.alexpimenta.com/?p=214</guid>
		<description><![CDATA[Uma forma simples de obter endereço pelo CEP

Utilizando a url: http://ceplivre.pc2consultoria.com/index.php?module=cep&#038;cep=11060-000&#038;formato=xml podemos obter os dados de qualquer cep existente. Experimente (altere o número do CEP).]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.alexpimenta.com/wp-content/uploads/2011/04/Titulo_Cep_Livre.png"><img class="alignleft size-medium wp-image-216" style="margin: 2px 5px; border: 2px solid black;" title="Primeiro post sobre" src="http://blog.alexpimenta.com/wp-content/uploads/2011/04/Titulo_Cep_Livre-300x204.png" alt="Titulo Cep Livre 300x204 Uma forma simples de obter endereço pelo CEP" width="300" height="204" /></a>Você ainda pede o endereço completo nos seus formulários de cadastro?</p>
<p>Pois é. Muita gente ainda faz isso.</p>
<p>Mas existem algumas formas de obter o endereço completo, pedindo apenas o CEP para o usuário.</p>
<p>Vamos lá. Você pode comprar o banco de dados dos correios e manter sua base sempre atualizada (mais informações através do site dos <a title="Correios" href="http://www.correios.com.br/produtosaz/produto.cfm?id=5A62B08B-BCDF-F196-9C2C56EBD38EAC91" target="_blank">Correios</a>). É muito simples. Compre, baixe, suba para sua base de dados e mantenha sempre atualizado.</p>
<p>Compre?</p>
<p>Pois é amigos, agora só comprando. Antes eles forneciam gratuitamente.</p>
<p>Agora, se você quer algo livre e sempre atualizado, tenho outra sugestão. Aliás, mais simples do que comprar, baixar, subir na sua base de dados e implementar uma rotina para pesquisar e fazer atualizações esporádicas. Se bem que esta seria a forma mais confiável. Mas, eu uso um serviço totalmente gratuíto que me retorna os dados que eu preciso, e sempre atualizados: <a title="Cep Livre" href="http://ceplivre.pc2consultoria.com/index.php?module=main" target="_blank">CEP Livre</a>. Mas, atenção: acesse a primeira página do serviço e leia. Ninguém vive de luz.</p>
<p>Vamos ao que realmente interessa.<a href="http://blog.alexpimenta.com/wp-content/uploads/2011/04/Estrutura_Cep_Livre.png"><img class="alignright size-thumbnail wp-image-217" style="border: 1px solid black; margin-left: 5px; margin-right: 5px;" title="Estrutura" src="http://blog.alexpimenta.com/wp-content/uploads/2011/04/Estrutura_Cep_Livre-150x150.png" alt="Estrutura Cep Livre 150x150 Uma forma simples de obter endereço pelo CEP" width="150" height="150" /></a></p>
<p>Utilizando a url: http://ceplivre.pc2consultoria.com/index.php?module=cep&amp;cep=11060-000&amp;formato=xml podemos obter os dados de qualquer cep existente. <a title="Experimente CEP Livre" href="http://ceplivre.pc2consultoria.com/index.php?module=cep&amp;cep=11060-000&amp;formato=xml">Experimente</a> (altere o número do CEP).</p>
<p>Vou escrever algo simples, e bacana, para que todos possam implementar em seus sistemas.</p>
<p>Primeiro o html, onde vamos colocar o formulário pedindo o cep :</p>
<pre class="brush:xml">&lt;form id="form1" runat="server">
&lt;div>
	&lt;table>
			&lt;tr>
					&lt;td>CEP&lt;/td>
					&lt;td>&lt;asp:textbox ID="txtCEP" runat="server" MaxLength="9" AutoPostBack="True" OnTextChanged="txtCEP_TextChanged" Width="80px">&lt;/asp:textbox> nnnnn-nnn &lt;/td>
			&lt;/tr>
			&lt;tr>
					&lt;td>Logradouro&lt;/td>
					&lt;td>&lt;asp:textbox ID="txtLogradouro" runat="server" MaxLength="60" Width="500px">&lt;/asp:textbox>&lt;/td>
			&lt;/tr>
			&lt;tr>
					&lt;td>Município&lt;/td>
					&lt;td>&lt;asp:textbox ID="txtCidade" runat="server" MaxLength="50" Width="200px">&lt;/asp:textbox>&lt;/td>
			&lt;/tr>
			&lt;tr>
					&lt;td>Bairro&lt;/td>
					&lt;td>&lt;asp:textbox ID="txtBairro" runat="server" MaxLength="50" Width="200px">&lt;/asp:textbox>&lt;/td>
			&lt;/tr>
			&lt;tr>
					&lt;td>UF&lt;/td>
					&lt;td>&lt;asp:textbox ID="txtUF" runat="server" MaxLength="2" Width="50px">&lt;/asp:textbox>&lt;/td>
			&lt;/tr>
	&lt;/table>
&lt;/div>
&lt;/form></pre>
<p>Em seguida não esqueça de implementar o código para o evento TextChanged do TextBox do CEP:</p>
<pre class="brush:csharp">protected void txtCEP_TextChanged(object sender, EventArgs e)
{
	txtLogradouro.Text = "";
	txtBairro.Text = "";
	txtCidade.Text = "";
	txtUF.Text = "";
	logradouro Logradouro = EnderecoPeloCEP(txtCEP.Text);
	if (Logradouro.resultado == 1)
	{
		txtLogradouro.Text = Logradouro.logradoudo;
		txtBairro.Text = Logradouro.bairro;
		txtCidade.Text = Logradouro.cidade;
		txtUF.Text = Logradouro.uf;
	}
	else
	{
		ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Erro", string.Format("alert('{0}');", Logradouro.mensagem), true);
	}
}</pre>
<p>Agora vem a parte bacana. A classe que vai guardar os dados e o método que trará os dados do serviço:</p>
<pre class="brush:csharp">public sealed class logradouro
{
	public string cep { get; set; }
	public string logradoudo { get; set; }
	public string bairro { get; set; }
	public string cidade { get; set; }
	public string uf { get; set; }
	public int resultado { get; set; }
	public string mensagem { get; set; }

	public logradouro()
	{
		cep = string.Empty;
		logradoudo = string.Empty;
		bairro = string.Empty;
		cidade = string.Empty;
		uf = string.Empty;
		resultado = 0;
	}
}

public logradouro EnderecoPeloCEP(String cep)
{
	logradouro retorno = new logradouro();
	string url = string.Format(
		@"http://ceplivre.pc2consultoria.com/index.php?module=cep&#038;cep={0}&#038;formato=xml",
		cep);
	System.Xml.XmlTextReader lerXML = new System.Xml.XmlTextReader(url);
	lerXML.MoveToContent();
	do
	{
		if (lerXML.NodeType == System.Xml.XmlNodeType.Element)
		{
			lerXML.Read();
			switch (lerXML.Name)
			{
				case "tipo_logradouro":
					retorno.logradoudo = lerXML.Value + " ";
					break;
				case "logradouro":
					retorno.logradoudo += lerXML.Value;
					break;
				case "bairro":
					retorno.bairro = lerXML.Value;
					break;
				case "cidade":
					retorno.cidade = lerXML.Value;
					break;
				case "estado_sigla":
					retorno.uf = lerXML.Value;
					break;
				case "sucesso":
					retorno.resultado = int.Parse(lerXML.Value);
					switch (retorno.resultado)
					{
						case 1:
							retorno.mensagem = "Cep encontrado!";
							break;
						case 0:
							retorno.mensagem = "Não foi encontrado um resultado";
							break;
					}
					break;
			}
		}
	} while (lerXML.Read());
	return retorno;
}</pre>
<p>Encontrei esta solução no Devmedia, no seguinte post &#8220;<a href="http://www.devmedia.com.br/post-12172-CEP-LIVRE-CONSULTA-URL-GRATIS-COM-RETORNO-EM-XML.html" target="_blank">CEP LIVRE &#8211; CONSULTA URL GRÁTIS COM RETORNO EM XML</a>&#8220;. Me ajudou muito.</p>
<p>Espero que ajude a todos, bom proveito&#8230;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/uma-forma-simples-de-obter-endereco-pelo-cep/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JQuery com .Net &#8211; Criando algumas features</title>
		<link>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/jquery-com-net-criando-algumas-features/</link>
		<comments>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/jquery-com-net-criando-algumas-features/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 02:19:50 +0000</pubDate>
		<dc:creator>Alex Pimenta</dc:creator>
				<category><![CDATA[Informática e Tecnologia]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[BasePage]]></category>
		<category><![CDATA[C Sharp]]></category>
		<category><![CDATA[Dot Net]]></category>
		<category><![CDATA[JQuery]]></category>

		<guid isPermaLink="false">http://blog.alexpimenta.com/?p=163</guid>
		<description><![CDATA[Implemente aplicações web em .net c sharp mais elegantes, usando a basepage que venho desenvolvendo.]]></description>
			<content:encoded><![CDATA[<p><a href="http://jquery.com" target="_blank"><img class="alignleft size-full wp-image-166" style="border: 2px solid black; margin: 2px;" title="Logo JQuery" src="http://blog.alexpimenta.com/wp-content/uploads/2010/04/JQueryLogo1.png" alt="JQueryLogo1 JQuery com .Net   Criando algumas features" width="221" height="167" /></a>Faz tempo que não posto nada. Minhas desculpas por isso.</p>
<p>Mas hoje quero falar de algo que venho criando nas aplicações desenvolvidas na empresa.</p>
<p>Venho evoluindo desde o começo do ano, uma classe de base derivada da System.Web.UI.Page, para ser usada como base para qualquer web form, onde estou implementando vários métodos com base no JQuery para enriquecer as aplicações desenvolvidas na empresa. Basicamente é criar uma class.cs nova chamada PageBase (ou BasePage, como quiser) e começar assim:</p>
<div style="border: 1px solid #000000; background-color: #cacaca; margin: 5px; padding: 2px; font-family: 'Courier New', Courier, monospace; font-size: 12px;">&#8230;<br />
using System;<br />
using System.Text;<br />
&#8230;<br />
public class BasePage : System.Web.UI.Page<br />
{<br />
&#8230;</div>
<p>Se trata de uma coleção de métodos, enriquecendo o desenvolvimento de web forms com código c sharp, para realizar de forma mais elegante coisas simples mas fundamentais. Ao invés do velho e feio Alert e do Confirm usaremos o <strong>Dialog</strong>. Ao invés do maskedit do velho ajaxtoolkit usaremos o <strong>UI.MaskEdit</strong>.</p>
<p>Vamos ao código. Abaixo vou dar uma breve explicação do que é necessário. O básico. Mas não se preocupem, eu disponibilizei o projeto para vocês baixarem, usarem e até melhorarem.</p>
<p><span style="font-size: medium;"><strong>Breve Explicação</strong></span></p>
<p>Primeiro é necessário implementar nos web forms, ou em um masterpage para ser herdade nos demais web forms:</p>
<div style="border: 1px solid #000000; background-color: #cacaca; margin: 5px; padding: 2px; font-family: 'Courier New', Courier, monospace; font-size: 12px;">&#8230;<br />
&lt;script src=&#8221;/javascript/jquery.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
&lt;script src=&#8221;/javascript/ui/ui.core.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
&lt;script src=&#8221;/javascript/ui/ui.dialog.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
&lt;script src=&#8221;/javascript/ui/ui.draggable.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
&lt;script src=&#8221;/javascript/ui/ui.resizable.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
&lt;script src=&#8221;/javascript/ui/ui.datepicker.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
&lt;script src=&#8221;/javascript/ui/ui.datepicker-pt-BR.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
&lt;script src=&#8221;/javascript/ui/ui.accordion.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
&lt;script src=&#8221;/javascript/dateentry.min.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
&lt;script src=&#8221;/javascript/dateentry-br.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
&lt;script src=&#8221;/javascript/timeentry.min.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
&lt;script src=&#8221;/javascript/timeentry-pt.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
&lt;script src=&#8221;/javascript/bgiframe.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
&lt;script src=&#8221;/javascript/dimensions.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
&lt;script src=&#8221;/javascript/tooltip.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/scrip&gt;<br />
&lt;script src=&#8221;/javascript/blockUI.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
&#8230;</div>
<p><span style="color: #808080;"><strong><span style="font-family: arial,helvetica,sans-serif;"><span style="font-size: x-small;">Importante: Não esqueça de incluir todos os arquivos de estilo. Muitos recursos não funcionam adequadamente sem isso.</span></span><br />
</strong></span></p>
<p>Você pode encontrar todas as bibliotecas acima no site do <a title="JQuery" href="http://jquery.com" target="_blank">jquery</a>.</p>
<p>Agora um exemplo de código que teremos na BasePage. Lembre-se que a classe personalizada BasePage (ou PageBase) é a classe que será herdada em todos os web forms (<span style="color: #43bcbc; font-family: 'Courier New', Courier, monospace; font-size: 12px;">public partial class Cadastro</span> : <span style="color: #43bcbc; font-family: 'Courier New', Courier, monospace; font-size: 12px;">BasePage</span>);</p>
<div style="border: 1px solid #000000; background-color: #cacaca; margin: 5px; padding: 2px; font-family: 'Courier New', Courier, monospace; font-size: 12px;">&#8230;/// &lt;summary&gt;<br />
/// Envia um alert, usando os recursos do JQuery Dialog (o título será &#8220;Atenção&#8221;)<br />
/// &lt;/summary&gt;<br />
/// &lt;param name=&#8221;Message&#8221;&gt;Mensagem a ser mostrada&lt;/param&gt;<br />
/// &lt;param name=&#8221;Title&#8221;&gt;Título da Janela&lt;/param&gt;<br />
/// &lt;param name=&#8221;oFocus&#8221;&gt;Foca no objeto ao clicar em Ok ou fechar&lt;/param&gt;<br />
public static String ShowAlertToString(String Message, String Title, Control oFocus)<br />
{<br />
return String.Concat(&#8220;showJQueryAlert(&#8216;&#8221;,<br />
Message.Replace(&#8220;&#8216;&#8221;, &#8220;´&#8221;).Replace(&#8220;\r&#8221;, &#8220;\n&#8221;).Replace(&#8220;\n&#8221;, &#8220;&lt;br /&gt;&#8221;), &#8220;&#8216;,&#8217;&#8221;,<br />
(Title == String.Empty ? &#8220;Atenção&#8221; : Title), &#8220;&#8216;&#8221;,<br />
(oFocus != null ? &#8220;,&#8217;document.getElementById(\&#8221;" + oFocus.ClientID + &#8220;\&#8221;).focus(); $(\\&#8217;#dialog\\&#8217;).dialog(\&#8221;close\&#8221;);&#8217;&#8221; : &#8220;&#8221;), &#8220;);&#8221;);<br />
}<br />
&#8230;</div>
<p>O resultado são aplicações com aparência mais elegante sem muito trabalho.</p>
<div id="attachment_181" class="wp-caption aligncenter" style="width: 516px"><a href="http://blog.alexpimenta.com/wp-content/uploads/2010/04/Exemplo.png"><img class="size-full wp-image-181" title="Exemplo" src="http://blog.alexpimenta.com/wp-content/uploads/2010/04/Exemplo.png" alt="Exemplo JQuery com .Net   Criando algumas features" width="506" height="392" /></a><p class="wp-caption-text">Tela de exemplo simples</p></div>
<p>Baixe o projeto de exemplo que desenvolvi, clicando no ícone abaixo, e divirta-se.</p>
<p><a href="http://www.alexpimenta.com/samples/SimpleSample.Web.rar"><img class="aligncenter size-thumbnail wp-image-183" title="Simple Sample" src="http://blog.alexpimenta.com/wp-content/uploads/2010/04/download-icon-150x150.jpg" border="0" alt="download icon 150x150 JQuery com .Net   Criando algumas features" width="150" height="150" /></a>Experimente o projeto <a title="Experimente" href="http://www.alexpimenta.com/samples/blog-alex-pimenta-jquery-basepage/" target="_blank">aqui</a>.</p>
<p>Espero ter mais tempo para postar coisas interessantes.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/jquery-com-net-criando-algumas-features/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Visual Studio 2010 Beta 1 e Ajax Control Toolkit May 2009</title>
		<link>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/visual-studio-2010-beta-1-e-ajax-control-toolkit-may-2009/</link>
		<comments>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/visual-studio-2010-beta-1-e-ajax-control-toolkit-may-2009/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 11:24:43 +0000</pubDate>
		<dc:creator>Alex Pimenta</dc:creator>
				<category><![CDATA[Informática e Tecnologia]]></category>
		<category><![CDATA[AjaxControlToolkit]]></category>
		<category><![CDATA[HTMLEditor]]></category>
		<category><![CDATA[Unable to load the file or assembly]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>

		<guid isPermaLink="false">http://blog.alexpimenta.com/?p=113</guid>
		<description><![CDATA[Como instalar, usar e burlar alguns problemas com AjaxControlTookit May 2009 e Visual Studio 2010 Beta 1.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-129" style="border: 3px solid black; margin: 3px;" title="LogoPostVS2010XAjax" src="http://blog.alexpimenta.com/wp-content/uploads/2009/09/LogoPostVS2010XAjax.png" alt="LogoPostVS2010XAjax Visual Studio 2010 Beta 1 e Ajax Control Toolkit May 2009" width="253" height="140" />Estou usando o Visual Sudio 2010 para desenvolver aplicações web há uns dois meses. Ainda tem bastante instabilidade. Talvez a instabilidade que mais me incomodou foi quando precisei usar o <a href="http://www.asp.net/ajax/#3" target="_blank">Ajax Control ToolKit May2009 Release</a> para implementar um <a href="http://www.asp.net/AJAX/AjaxControlToolkit/Samples/HTMLEditor/HTMLEditor.aspx" target="_blank">HTMLEditor</a>.</p>
<p><span style="font-size: 14px;">Como usamos isso?</span></p>
<p>Primeiro é necessário baixar a versão <a href="http://www.asp.net/ajax/#3" target="_blank">Ajax Control ToolKit May2009 Release</a> no site <a href="http://www.asp.net/ajax/downloads/" target="_blank">http://www.asp.net/ajax/downloads/</a>. Faça o Download do arquivo AJAXControlToolkitBinary.zip, e descompacte-o na pasta C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE.</p>
<p><img class="alignleft size-full wp-image-121" style="border: 1px solid black; margin: 3px 4px;" title="ToolboxChoiceItems" src="http://blog.alexpimenta.com/wp-content/uploads/2009/09/ToolboxChoiceItems.png" alt="ToolboxChoiceItems Visual Studio 2010 Beta 1 e Ajax Control Toolkit May 2009" width="313" height="184" />Agora abra sua aplicação web, e inclua os controles AjaxControlToolkit na aba de Ferramentas (Toolbox), crie uma pasta Chamada &#8220;Ajax Control Toolkit May 2009&#8243;, clique o botão direito do mouse e escolha &#8220;Choose Items&#8230;&#8221;. Irá aparecer a tela de adição de itens. Esta tela é muito parecida a todas as versões anteriores do Visual Studio.</p>
<p style="text-align: center;"><img class="size-full wp-image-116 aligncenter" style="border: 1px solid black; margin-top: 3px; margin-bottom: 3px;" title="ChoiceToolboxItems" src="http://blog.alexpimenta.com/wp-content/uploads/2009/09/ChoiceToolboxItems.png" alt="ChoiceToolboxItems Visual Studio 2010 Beta 1 e Ajax Control Toolkit May 2009" width="591" height="337" /></p>
<p>Escolha a DLL &#8220;AjaxControlToolkit.dll&#8221; e clique em abrir.</p>
<p style="text-align: left;">Na tela de Escolha dos Itens para o Toolbox já serão mostrados todos os itens do Ajax Control Toolkit selecionados. Clique em &#8220;Ok &#8221; e os controles deverão aparecer na pasta &#8220;AJAX Control Tookit May 20009&#8243; que você criou anteriormente na barra de ferramentas.<br />
<img class="size-full wp-image-120 aligncenter" title="ItemsAjaxControlToolkit" src="http://blog.alexpimenta.com/wp-content/uploads/2009/09/ItemsAjaxControlToolkit.png" alt="ItemsAjaxControlToolkit Visual Studio 2010 Beta 1 e Ajax Control Toolkit May 2009" width="491" height="263" /></p>
<p style="text-align: left;">Agora crie um web form e insira o controle &#8220;Editor&#8221; no seu formulário. Em propriedades do controle inserido, ajuste o Height para 120px e o Width para 450px.<br />
<img class="size-full wp-image-118 aligncenter" title="EscolhendoEditorControle" src="http://blog.alexpimenta.com/wp-content/uploads/2009/09/EscolhendoEditorControle.png" alt="EscolhendoEditorControle Visual Studio 2010 Beta 1 e Ajax Control Toolkit May 2009" width="668" height="217" />
</p>
<p style="text-align: center;">
<p style="text-align: left;">Alterando a visão para &#8220;Source&#8221; você irá notar no ínicio do aspx o seguintes item:<br />
<img class="size-full wp-image-126 aligncenter" title="itemInseridoRegisterAssembly" src="http://blog.alexpimenta.com/wp-content/uploads/2009/09/itemInseridoRegisterAssembly.png" alt="itemInseridoRegisterAssembly Visual Studio 2010 Beta 1 e Ajax Control Toolkit May 2009" width="591" height="50" /></p>
<p style="text-align: left;">E no &lt;body&gt; aparecerá o seguinte item:<br />
<img class="size-full wp-image-124 aligncenter" title="controleEditorInserido" src="http://blog.alexpimenta.com/wp-content/uploads/2009/09/controleEditorInserido.png" alt="controleEditorInserido Visual Studio 2010 Beta 1 e Ajax Control Toolkit May 2009" width="606" height="13" /></p>
<p style="text-align: left;">Execute sua aplicação e você terá o seguinte resultado:<br />
<img class="size-full wp-image-127 aligncenter" title="TelaDoCadastroComHTMLEditor" src="http://blog.alexpimenta.com/wp-content/uploads/2009/09/TelaDoCadastroComHTMLEditor.png" alt="TelaDoCadastroComHTMLEditor Visual Studio 2010 Beta 1 e Ajax Control Toolkit May 2009" width="642" height="445" /></p>
<p style="text-align: left;">O HTMLEditor do Ajax Control Tookit mais detalhado:<br />
<img class="size-full wp-image-128 aligncenter" title="DetalheHTMLEditor" src="http://blog.alexpimenta.com/wp-content/uploads/2009/09/DetalheHTMLEditor.png" alt="DetalheHTMLEditor Visual Studio 2010 Beta 1 e Ajax Control Toolkit May 2009" width="516" height="217" />
</p>
<p style="text-align: left;">Pronto, agora sua aplicação terá um editor rico, que permitirá uma experiência acima da média aos usuários. Eles poderão acrescentar textos formatados, acrescentar links, adicionar imagens, alterar as cores e tipos das fontes, etc. Este controle é muito útil quando estamos desenvolvendo uma administração para o sistema, permitindo assim mais recursos aos usuários. Antigamente na época do ASP 3 colocávamos um &lt;textarea&gt; e os usuários podiam acresentar código html. Com este editor o usuário ainda pode fazer isso, alterando a visão para o código html, mas na visão wysiwyg (What You See Is What You Get). Tornando a edição mais simples.</p>
<p>Quais os problemas que tive com o &#8220;Ajax Control Toolkit&#8221; no Visual Studio 2010 Beta 1?</p>
<p style="text-align: left;">Após incluir o controle e executar a primeira vez. Tudo bem. Funcionou mostrando o controle normalmente. Porém após alguns &lt;f5&gt; o seguinte erro apareceu:<br />
<img class="aligncenter size-full wp-image-117" title="ErroAjaxToolkit" src="http://blog.alexpimenta.com/wp-content/uploads/2009/09/ErroAjaxToolkit.png" alt="ErroAjaxToolkit Visual Studio 2010 Beta 1 e Ajax Control Toolkit May 2009" width="768" height="507" /></p>
<p>O Erro em Inglês seria exatamente este:<br />
&#8220;Unable to load the file or assembly &#8216;AjaxControlToolkit,  Version=3.0.30512.29622, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e&#8217; or  one of its dependancies. The definition found of the manifest&#8217;s assembly doesn&#8217;t  match the reference&#8217;s assembly. (Exception of HRESULT : 0&#215;80131040)&#8221;</p>
<p>Pesquisando o problema, encontrei muita coisa explicando que o problema é incompatibilidade da versão do componente com a versão do framework. Pois bem, então porque ele funciona às vezes? Explicação descartada.</p>
<p>Por enquanto estou resolvendo isso de duas formas diferentes. Na primeira, eu simplesmente faço rebuild no projeto da aplicação e executo. Na maioria das vezes dá certo. Caso isso não funcione vá até a pasta &#8220;C:\Users\&#8230;\AppData\Local\Temp\Temporary ASP.NET Files\root&#8221; e exclua tudo. Esses são os arquivos temporários que o Visual Studio Development Server&#8221; usa para executar sua aplicação. Antes de excluir todos os arquivos desta pasta não esqueça de que é necessário fechar o Visual Studio, pois ele trava os arquivos enquanto estiver em uso.</p>
<p><span style="font-size: 14px;">Um outro problema mais simples de resolver:</span></p>
<p>Pode ocorrer de não funcionar, porque os arquivos bin dos componentes foram compilados no Visual Studio 2008, neste caso siga as instruções abaixo:</p>
<p>Talvez você precise rebuildar como Release o projeto AJAXControlToolkit para funcionar com o Visual Studio 2010, faça o download do arquivo AJAXControlToolkitSource.zip também e descompacte-o na pasta de projetos do Visual Studio 2010 C:\Users\&#8230;\Documents\Visual Studio 10\Projects (crie a pasta AJAXControlToolkit antes).</p>
<p>No Visual Studio 2010, abra a solução AjaxControlToolkit.sln da pasta AJAXControlToolkit no seus projetos. Clique o botão direito no projeto AjaxControlToolkit e escolha Build. Pronto, dentro de C:\Users\&#8230;\Documents\Visual Studio 10\Projects\AjaxControlToolkit\AjaxControlToolkit\bin\Release você encontrará os arquivos que deverá copiar para a pasta C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE do seu Visual Studio 2010.</p>
<p>Conclusão. É muito simples utilizar o AJAX Control Toolkit  mesmo usando o Visual Studio 2010 beta 1 e com algumas dicas contidas neste post. Até a próxima.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;"><img id="ctl00_ctl00_MasterContent_Content_ReleasePanelOrderingContainer_ReleaseFilesCtrl_recommendedFileImage" class="FileTypeImage" style="border-width: 0px;" src="http://i3.codeplex.com/Images/v15691/RuntimeBinary.gif" alt="RuntimeBinary Visual Studio 2010 Beta 1 e Ajax Control Toolkit May 2009" align="middle" title="Visual Studio 2010 Beta 1 e Ajax Control Toolkit May 2009" /> <a id="ctl00_ctl00_MasterContent_Content_ReleasePanelOrderingContainer_ReleaseFilesCtrl_recommendedFileHyperLink" class="FileNameLink" onclick="suppressUnsavedData();return OnLoadDownload(this, true, false)" tabindex="9" href="http://ajaxcontroltoolkit.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27326#DownloadId=68191">AJAXControlToolkitBinary.zip</a></div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/visual-studio-2010-beta-1-e-ajax-control-toolkit-may-2009/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Informação x Computador</title>
		<link>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/informacao-x-computador/</link>
		<comments>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/informacao-x-computador/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 00:59:48 +0000</pubDate>
		<dc:creator>Alex Pimenta</dc:creator>
				<category><![CDATA[Informática e Tecnologia]]></category>
		<category><![CDATA[computação em nuven]]></category>
		<category><![CDATA[computadores]]></category>
		<category><![CDATA[futuro da informação]]></category>
		<category><![CDATA[Informação]]></category>
		<category><![CDATA[informática]]></category>

		<guid isPermaLink="false">http://blog.alexpimenta.com/?p=97</guid>
		<description><![CDATA[A informática não é algo novo, mas vem revolucionando a forma como adquirimos informação. Mas onde vamos parar com tanta informação? ]]></description>
			<content:encoded><![CDATA[<div id="attachment_102" class="wp-caption alignleft" style="width: 241px"><img class="size-full wp-image-102" title="ENIAC" src="http://blog.alexpimenta.com/wp-content/uploads/2009/08/ENIAC.jpg" alt="ENIAC Informação x Computador" width="231" height="196" /><p class="wp-caption-text">Electrical Numerical Integrator and Calculator</p></div>
<p>Sou da época de quem &#8220;mexia&#8221; com computador, assim eu era chamado porque estudava computação, necessariamente deveria saber: instalar vídeo cassete, aparelho de som, configurar a televisão, instalar antena, e tudo mais que a família e os amigos dos meus pais achavam difícil de usar.</p>
<p>Essa mentalidade mudou muito mas, ainda recebo ligações de membros da familia perguntando porque seu monitor não está ligando. E apesar de se tratar apenas de um periférico, eu não trabalho com esta área. Não conserto computadores. Eu até sei como fazer, mas minha especialização é informação. Eu sou analista de sistemas e programador. Mas ainda acham que qualquer coisa relacionada com computadores&#8230; Só o Alex salva.</p>
<p>Mas não vim aqui para reclamar. O que eu quero falar mesmo é sobre a relação entre informação e computadores. Muitos acham que informática é algo novo e que só começou a existir depois do Eniac, dos IBM&#8217;s PC&#8217;s, ou seja, depois dos computadores. Ou seja, aquele aparelho eletrônico que ligamos, o windows entra e navegamos na internet. Mas não é. Para entendermos bem o que é informática, vamos entender o que é informação e o que é computador:</p>
<p>Definições de &#8220;<strong>informação</strong>&#8221;</p>
<p>&#8220;Informação é o resultado do processamento, manipulação e organização de dados de tal forma que represente uma modificação (quantitativa ou qualitativa) no conhecimento do sistema (pessoa, animal ou máquina) que a recebe. (ref. <a title="O que é Informação" href="http://pt.wikipedia.org/wiki/Informação" target="_blank">Wikipedia</a>)&#8221;</p>
<p>&#8220;Algo que se conhece e em que se baseia para racionalizar (ref. <a title="O que é Informação" href="http://pt.wiktionary.org/wiki/Informa%C3%A7%C3%A3o" target="_blank">Wiktionary</a><a href="http://pt.wiktionary.org/wiki/Informa%C3%A7%C3%A3o"></a>) &#8221;</p>
<p>E a que eu mais gosto:</p>
<p>&#8220;Informação é o resultado do processamento, manipulação e organização de dados de tal forma que represente um acréscimo ao conhecimento da pessoa que a recebe. Informação enquanto conceito, carrega uma diversidade de significados, do uso cotidiano ao técnico. Genericamente, o conceito de informação está intimamente ligado às noções de restrição, comunicação, controle, dados, forma, instrução, conhecimento, significado, estímulo, padrão, percepção e representação de conhecimento. (ref. <a title="O que é Informação" href="http://dicionario.babylon.com/informa%C3%A7%C3%A3o" target="_blank">Babylon</a>)&#8221;</p>
<p>Definição de &#8220;<strong>informática</strong>&#8221;</p>
<p>&#8220;Chama-se genericamente informática ao conjunto das ciências da informação, estando incluídas neste grupo: a ciência da computação, a teoria da informação, o processo de cálculo, a análise numérica e os métodos teóricos da representação dos conhecimentos e de modelagem dos problemas. &#8221;</p>
<p>&#8220;O termo informática, sendo dicionarizado com o mesmo significado amplo nos dois lados do Atlântico [1], assume em Portugal o sentido sinônimo de ciência da computação enquanto que no Brasil é habitualmente usado para referir especificamente o processo de tratamento da informação por meio de máquinas eletrônicas definidas como computadores.&#8221;</p>
<p>Parece que me contradisse quando afirmei que informática é algo que surgiu antes dos computadores (assim como a maioria o conhece) ao incluir nas definições &#8220;a ciência da computação&#8221; ou &#8220;processo de tratamento da informação por meio de máquinas eletrônicas definidas como computadores&#8221;. Pois bem, agora para a surpresa de muitos a definição de computador:</p>
<p>Definição de “<strong>computador</strong>”</p>
<p>&#8220;Denomina-se computador uma máquina capaz de variados tipos de tratamento automático de informações ou processamento de dados. Exemplos de computadores incluem o ábaco, a calculadora, o computador analógico e o computador digital. Um computador pode prover-se de inúmeros atributos, dentre eles armazenamento de dados, processamento de dados, cálculo em grande escala, desenho industrial, tratamento de imagens gráficas, realidade virtual, entretenimento e cultura.&#8221;</p>
<p>Portanto, tudo o que tem a capacidade de processar dados, sintetizá-los e retorná-los como informação é chamado computador, incluindo o Ábaco.</p>
<p>Agora que sabemos o que é informação, computador e informática,  falaremos sobre a relação entre tudo isso. A informação sempre existiu, o que a informática e os computadores trouxeram foi o melhor aproveitamento, aumento da velocidade de sintetização e até aumento da capacidade de processamento dos dados, maior exatidão de resultados, capacidade de realizar operações repetitivas sempre com a mesma exatidão e performance sem erros ou enganos.</p>
<p>A velocidade dos avanços tecnológicos em todas as áreas estão diretamente ligadas ao fato do surgimento da informática. A partir de meados do século passado, a maior velocidade do processamento dos dados proporcionaram uma gama de informações em dimensões que nunca na história da humanidade fomos capazes de reproduzir. Esta gama de informações foram suficientes para a aceleração dos avanços em que todas as áreas foram submetidas.</p>
<p>Mas para se chegar a qualidade de informação desejada que nos ajude a racionalizar melhor, é necessário aplicar determinadas técnicas de Análise de Sistemas. O termo &#8220;Sistema&#8221; (do grego σύστημα), é um conjunto de elementos interconectados, de modo a formar um todo organizado. É uma definição que acontece em várias disciplinas, como biologia, medicina, informática, administração. Vindo do grego o termo &#8220;sistema&#8221; significa &#8220;combinar&#8221;, &#8220;ajustar&#8221;, &#8220;formar um conjunto&#8221;. A Análise de Sistema estuda a fundo todo o fluxo de dados para determinar responsabilidades, diretrizes, apontar falhas e indicar o melhor direcionamento dos dados com o objetivo de otimizar os resultados. A partir das especificações produzidas pelo Analista de Sistema, a área de TI tem como objetivo decidir que tipo de equipamento atende as necessidades do projeto e a equipe de desenvolvimento terá toda base para o desenvolvimento do programa mais adequado àquele tipo de problema, ou simplesmente melhorar o sistema atual. Sem a análise a chance de desperdícios é muito grande, além dos programas de computador desenvolvidos terem grandes chances de não atenderem as necessidades exatas. O resultado pode não ser o esperado.</p>
<p>A partir da informática,  a informação se tornou algo abundante, diariamente são gerados bilhões de novas informações, e isso criou um problema novo. Hoje, temos uma gama imensa de informações espalhadas por todos os lugares, a informação chega a nós de alguma forma, mesmo sem nosso concentimento. Mas como discernirmos sobre sua credibilidade? Isso depende da fonte. Se for uma fonte conhecida com boa reputação acreditamos, caso contrário existem muitas formas de se checar sua veracidade. Quando não se trata de argumentos baseados em opiniões, você pode conferir a veracidade pesquisando dados dentro de outras informações que você considere confiável.</p>
<p>O advento da Internet proporcionou a disceminação da informação de tal forma que hoje somos capaz de encontrar tudo o queremos em questões de segundos. Não importa a distância, nem a complexidade da informação ela está disponível. O maior desafio para nós que trabalhamos com Tecnologia é como vamos organizar essas informações daqui para frente. É um grande desafio, e a <a title="Computação em Nuvem" href="http://pt.wikipedia.org/wiki/Computa%C3%A7%C3%A3o_em_nuvem" target="_blank">Computação em Nuvem</a> está chegando com soluções viáveis para que todas as informações sejam cada vez mais concentrada em um lugar só, e não espalhada em tantos lugares sem nenhuma amarração entre informações sobre o mesmo assunto, é só o início.</p>
<p style="font-size: 14px;"><strong>Futuro da informação</strong></p>
<p>Diante de tantos meios de divulgação de informações como sites de agências de comunicação, e-mails, aparelhos de comunicações como tv e rádio, blogs, twitter, etc&#8230; Qual será o destino das revistas, dos jornais, dos programas jornalísticos com janelas (bom dia brasil, jornal nacional, etc) ? Será que estes meios de nos trazerem informações se tornarão obsoletos? Acredito que sim, mas não é já. Estamos caminhando para um futuro onde todas as informações estarão nas nossas mãos, no momento que precisarmos, a informação irá aparecer na sala de casa, nas telas dos nossos aparelhos móveis, no painel do carro ou até mesmo no para brisa. Devemos nos preparar para tudo isso, pois as coisas estão acontecendo cada vez mais rápidas.</p>
<p style="font-size: 10px;">Até a próxima&#8230;</p>
<map>
<area shape="Circle" coords="596, 116, 17" href="http://twitter.com/s2comunicacao" target="_blank" />
<area shape="Circle" coords="638, 116, 17" href="http://www.youtube.com/s2comunicacao" target="_blank" />
<area shape="Rect" coords="575, 26, 701, 73" href="http://www.prgn.org/" />
<area shape="Rect" coords="174, 112, 266, 125" href="http://www.s2.com.br/" />
<area shape="Rect" coords="176, 96, 315, 108" href="mailto:aspepper@hotmail.com" target="_blank" />
<area shape="Rect" coords="174, 78, 359, 90" href="mailto:alexsandro.pimenta@s2.com.br" target="_blank" />
<area shape="Rect" coords="0, 0, 149, 142" href="http://www.s2.com.br/" />
<area shape="Circle" coords="679, 116, 17" href="http://www.flickr.com/photos/s2comunicacao" target="_blank" /></map>
]]></content:encoded>
			<wfw:commentRss>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/informacao-x-computador/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Como evitar cache de arquivos css e js?</title>
		<link>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/como-evitar-cache-de-arquivos-css-e-js/</link>
		<comments>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/como-evitar-cache-de-arquivos-css-e-js/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 04:04:25 +0000</pubDate>
		<dc:creator>Alex Pimenta</dc:creator>
				<category><![CDATA[Informática e Tecnologia]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[cache css e js]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://blog.alexpimenta.com/?p=83</guid>
		<description><![CDATA[Como evitar cache de browser dos arquivos de estilo e javascript.]]></description>
			<content:encoded><![CDATA[<div id="attachment_88" class="wp-caption alignleft" style="width: 339px"><img class="size-full wp-image-88" title="Como evitar cache de arquivos css e js?" src="http://blog.alexpimenta.com/wp-content/uploads/2009/08/chache_ierarquia.gif" alt="chache ierarquia Como evitar cache de arquivos css e js?" width="329" height="276" /><p class="wp-caption-text">Esquema de Cache</p></div>
<p>Os browsers em geral armazenam os arquivos .css e .js no cache para aumentar a velocidade de carregamento das páginas de um determinado domínio. Ótimo, isso realmente melhora muito a performance. Acontece que nós, desenvolvedores, sofremos com isso.</p>
<p>Imagine uma rotina javascript, fazemos as correções no código, mas quando subimos e testamos o erro persiste, ou você altera a cor das fontes dos elementos input sobre e a cor continua a antiga. Então continuamos nos matando tentando descobrir o por quê? A resposta é simples. A versão anterior com o erro, ou com o estilo antigo está armazenado no cache do browser e mesmo limpando cache, não resolve.</p>
<p>O problema está nestas instruções abaixo (que deverá estar de preferência no header do html):</p>
<div style="border: 1px solid #cccccc; font-family: Courier New; font-size: 12px; background-color: #dddddd;">&lt;link rel=&#8221;Stylesheet&#8221; type=&#8221;text/css&#8221; href=&#8221;css/estilo.css&#8221; /&gt;<br />
&lt;link rel=&#8221;Stylesheet&#8221; type=&#8221;text/css&#8221; href=&#8221;css/outroestilo.css&#8217;&#8221; /&gt;<br />
&lt;script type=&#8221;text/javascript&#8221; src=&#8221;js/jquery-1.3.2.js&#8221;&gt;&lt;/script&gt;<br />
&lt;script type=&#8221;text/javascript&#8221; src=&#8221;js/js/superfish.js&#8221;&gt;&lt;/script&gt;</div>
<p>O que os browsers fazem quando vê estas linhas pela primeira vêz?<img class="alignright size-full wp-image-92" title="Como evitar cache de arquivos css e js?" src="http://blog.alexpimenta.com/wp-content/uploads/2009/08/cache.png" alt="cache Como evitar cache de arquivos css e js?" width="240" height="258" /></p>
<p>Baixa os arquivos no cache do domínio em questão, e o mantém para futuras visitas ao site. A partir daí sempre que você visitar os mesmos (até o cache vencer), o browser sempre usará os arquivos que estão no cache. Exceto se algo no href ou no src seja alterado, esses arquivos sempre serão os que estão no cache.</p>
<p>Então vou mostrar uma solução simples para resolver isso. Dentro na tag header do html, substitua os código mostrados acima pelo código abaixo:</p>
<div style="border: 1px solid #cccccc; font-family: Courier New; font-size: 12px; background-color: #dddddd;">&lt;script type=&#8221;text/javascript&#8221;&gt;<br />
// coloque seus arquivos dentro do array&#8230;<br />
var aCSFiles = new Array(&#8216;<strong><span style="color: red;">css/estilo.css</span></strong>&#8216;, &#8216;<strong><span style="color: red;">css/outroestilo.css</span></strong>&#8216;);<br />
var aJSFiles = new Array(&#8216;<strong><span style="color: red;">js/jquery-1.3.2.js</span></strong>&#8216;, &#8216;<strong><span style="color: red;">js/superfish.js</span></strong>&#8216;);// Daqui pra frente é só copiar<br />
function TagLinkStyle() { var sFile = arguments[0] + (arguments[0].indexOf(&#8216;?&#8217;) &gt;= 0 ? &#8220;&amp;&#8221; : &#8220;?&#8221;) + &#8220;t=&#8221; + Math.floor(Math.random() * 5000);document.write(&#8220;&lt;link href=\&#8221;" + sFile + &#8220;\&#8221; rel=\&#8221;stylesheet\&#8221; type=\&#8221;text/css\&#8221; \/&gt;&#8221;); }<br />
function TagScriptJavascript() { var sFile = arguments[0] + (arguments[0].indexOf(&#8216;?&#8217;) &gt;= 0 ? &#8220;&amp;&#8221; : &#8220;?&#8221;) + &#8220;t=&#8221; + Math.floor(Math.random() * 5000); document.write(&#8220;&lt;script type=\&#8221;text\/javascript\&#8221; src=\&#8221;" + sFile + &#8220;\&#8221; language=\&#8221;javascript\&#8221;&gt;&lt;\/script&gt;&#8221;); }</p>
<p>for (i = 0; i &lt; aCSFiles.length; i++) TagLinkStyle(aCSFiles[i]);<br />
for (i = 0; i &lt; aJSFiles.length; i++) TagScriptJavascript(aJSFiles[i]);<br />
&lt;/script&gt;</p></div>
<p>Prontinho. Uma solução simples e que não afeta o funcionamento de nenhum browser.</p>
<p>Até ao próximo post&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/como-evitar-cache-de-arquivos-css-e-js/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>JQuery &#8211; O que é, como funciona e como eu devo começar?</title>
		<link>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/jquery-o-que-e-como-funciona-e-como-eu-devo-comecar/</link>
		<comments>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/jquery-o-que-e-como-funciona-e-como-eu-devo-comecar/#comments</comments>
		<pubDate>Sun, 09 Aug 2009 22:09:43 +0000</pubDate>
		<dc:creator>Alex Pimenta</dc:creator>
				<category><![CDATA[Informática e Tecnologia]]></category>
		<category><![CDATA[Framework Javascript]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[JQuery Como começar]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://blog.alexpimenta.com/?p=56</guid>
		<description><![CDATA[O que é e como usar o Jquery, introduz ao desenvolvedor esta framework fantástica, simples e elegante. Descubra como é simples neste post.]]></description>
			<content:encoded><![CDATA[<div id="attachment_62" class="wp-caption alignleft" style="width: 261px"><img class="size-full wp-image-62" title="Logo JQuery" src="http://blog.alexpimenta.com/wp-content/uploads/2009/08/LogoJQuery.PNG" alt=" JQuery   O que é, como funciona e como eu devo começar?" width="251" height="154" /><p class="wp-caption-text">www.jquery.com</p></div>
<p>O Jquery é uma Biblioteca JavaScript, criada por John Resig, que nos ajuda a não nos preocuparmos com compatibilidades dos browsers, além de enriquecer aplicações desenvolvidas em plataforma web.</p>
<p>Jquery é uma maneira rápida e concisa para simplificar documentos HTML, evento movimentação, animação e interação Ajax para o rápido desenvolvimento web.</p>
<p>A grande vantagem dos recursos da jQuery é permitir que você elegantemente (e eficientemente) encontre e manipule elementos HTML com o mínimo de linhas de código. JQuery faz isso através de uma simpática API seletora que permite aos desenvolvedores consulta de elementos HTML, e em seguida delegue eventos para eles. O JQuery também inclui um conjunto User Interfaces (UI) para facilitar que animações possam ser utilizadas.</p>
<p>Composto por uma biblioteca nomeada jquery[-versao].js que possui as principais funcionalidades.</p>
<p>Uma mensagem do autor do JQuery, John Resig:<br />
<em>“O foco principal da biblioteca jQuery é a simplicidade. Por que submeter os desenvolvedores ao martírio de escrever longos e complexos códigos para criar simples efeitos?”</em></p>
<p>Esta mensagem diz tudo o que é o JQuery.</p>
<p><strong>Principais Características</strong></p>
<ul>
<li>Resolução da incompatibilidade entre os navegadores.</li>
<li>Redução de código.</li>
<li>Reusabilidade do código através de plug-ins.</li>
<li>Utilização de uma vasta quantidade de plugins criados por outros desenvolvedores.</li>
<li>Trabalha com AJAX e DOM.</li>
<li>Implementação segura de recursos do CSS1, CSS2 e CSS3.</li>
</ul>
<p><strong>Como Começar?</strong></p>
<p>Baixe a ultima versão do framework em <a title="Url do framwork JQuery" href="http://jquery.com/" target="_blank">http://jquery.com</a>.</p>
<p>Em seguinda inclua a tag de javascript fazendo referência a bliblioteca JQuery que você baixou. No exemplo demonstrado aqui, eu utilizei a versão 1.3.2:</p>
<p>Crie um arquivo html e copie o arquivo jquery-1.3.2.js (altere a versão para a mesma que você baixou) para a pasta onde você criou o seu html. No header faça a referência à biblioteca JQuery:</p>
<div style="border: 1px solid #cccccc; font-family: Courier New; font-size: 12px; background-color: #dddddd;">&lt;script type=&#8221;text/javascript&#8221; src=&#8221;jquery-1.3.2.js&#8221;&gt;&lt;/script&gt;</div>
<p>O principal agora é inicializar o framework. Ainda no header, inclua o código abaixo:</p>
<div style="border: 1px solid #cccccc; background-color: #dddddd; font-family: Courier New; font-size: 12px;">&lt;script type=&#8221;text/javascript&#8221;&gt;<br />
$(function() {<br />
$(&#8220;.<strong>column</strong>&#8220;).sortable({<br />
connectWith: &#8216;.<strong>column</strong>&#8216;,<br />
update: function(event, ui) {<br />
var result = $(&#8220;.<strong>column</strong>&#8220;).sortable(&#8216;toArray&#8217;);<br />
alert(result);<br />
}<br />
});<br />
});<br />
&lt;/script&gt;</div>
<p>No body, inclua os elementos que o jquery irá usar para funcionar:</p>
<div style="border: 1px solid #cccccc; font-family: Courier New; font-size: 12px; background-color: #dddddd;">&lt;div class=&#8221;<strong>column</strong>&#8220;&gt;<br />
&lt;div id=&#8221;bloco1&#8243;&gt;<br />
&lt;div style=&#8221;cursor: move;&#8221;&gt;Bloco 1&lt;/div&gt;<br />
&lt;div style=&#8221;cursor: move;&#8221;&gt;Drag and drop este bloco&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;div id=&#8221;bloco2&#8243;&gt;<br />
&lt;div style=&#8221;cursor: move;&#8221;&gt;Bloco 2&lt;/div&gt;<br />
&lt;div style=&#8221;cursor: move;&#8221;&gt;Drag and drop este bloco&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;div id=&#8221;bloco3&#8243;&gt;<br />
&lt;div style=&#8221;cursor: move;&#8221;&gt;Bloco 3&lt;/div&gt;<br />
&lt;div style=&#8221;cursor: move;&#8221;&gt;Drag and drop este bloco&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;</div>
<p>Baixe o exemplo acima com a demonstração do  método sortable <a href="http://blog.alexpimenta.com/wp-content/uploads/2009/08/exemploSortable.rar">Exemplo de Sortable</a>.</p>
<p><strong>Alguns sites que usam JQuery</strong></p>
<p>Dell compuadores, no exemplo o pedido de Login:</p>
<p><img class="aligncenter size-full wp-image-63" title="JQuery_Sites_Dell" src="http://blog.alexpimenta.com/wp-content/uploads/2009/08/JQuery_Sites_Dell.png" alt="JQuery Sites Dell JQuery   O que é, como funciona e como eu devo começar?"  /></p>
<p>Twitter, aviso de atualização realizada:</p>
<p><img class="aligncenter size-full wp-image-66" title="JQuery_Sites_Twitter" src="http://blog.alexpimenta.com/wp-content/uploads/2009/08/JQuery_Sites_Twitter.png" alt="JQuery Sites Twitter JQuery   O que é, como funciona e como eu devo começar?"  /></p>
<p>Digg, tela de login:</p>
<p><img class="aligncenter size-full wp-image-64" title="JQuery_Sites_Digg" src="http://blog.alexpimenta.com/wp-content/uploads/2009/08/JQuery_Sites_Digg.png" alt="JQuery Sites Digg JQuery   O que é, como funciona e como eu devo começar?"  /></p>
<p>S2 Comunicação Integrada, vários elementos como Carrossel (com os logos dos clientes) e o menu com transparência com os nomes dos clientes:</p>
<p><img class="aligncenter size-full wp-image-65" title="JQuery_Sites_S2" src="http://blog.alexpimenta.com/wp-content/uploads/2009/08/JQuery_Sites_S2.png" alt="JQuery Sites S2 JQuery   O que é, como funciona e como eu devo começar?"  /></p>
<p>O use JQuery é um site com muitos exemplos, e tutoriais sobre JQuery:</p>
<p><img class="aligncenter size-full wp-image-67" title="JQuery_Sites_UseJQuery" src="http://blog.alexpimenta.com/wp-content/uploads/2009/08/JQuery_Sites_UseJQuery.png" alt="JQuery Sites UseJQuery JQuery   O que é, como funciona e como eu devo começar?"  /></p>
<p>Agradeço a ajuda do Helder Lima, um amigo que trabalhou comigo na Fundação Getúlio Vargas. Foi ele quem me apresentou ao JQuery.</p>
<p>Baixe o livro no formato PDF: <a title="JQuery a biblioteca do programador javascript" href="http://blog.alexpimenta.com/wp-content/uploads/2009/08/Livro-JQuery-a-biblioteca-do-programador-javascript.pdf" target="_blank">&#8220;JQuery a biblioteca do programador javascript&#8221; gratuitamente aqui</a>.</p>
<p>Comentem e até apróxima&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/jquery-o-que-e-como-funciona-e-como-eu-devo-comecar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visual Studio 2010</title>
		<link>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/visual-studio-2010/</link>
		<comments>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/visual-studio-2010/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 00:39:44 +0000</pubDate>
		<dc:creator>Alex Pimenta</dc:creator>
				<category><![CDATA[Informática e Tecnologia]]></category>
		<category><![CDATA[Computação em Nuvens]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>
		<category><![CDATA[VS2010]]></category>

		<guid isPermaLink="false">http://blog.alexpimenta.com/?p=43</guid>
		<description><![CDATA[Visual Studio 2010, primeiro contato.]]></description>
			<content:encoded><![CDATA[<div id="attachment_44" class="wp-caption alignleft" style="width: 399px"><img class="size-full wp-image-44" title="VS2010FirstLook_Initializing" src="http://blog.alexpimenta.com/wp-content/uploads/2009/07/VS2010FirstLook_Initializing.JPG" alt=" Visual Studio 2010" width="389" height="239" /><p class="wp-caption-text">Visual Studio 2010</p></div>
<p>O Visual Studio 2010 Professional Beta 1 já está disponível para download <a title="Download Visual Studio 2010 e Frameword 4.0 beta" href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx" target="_blank">aqui</a>.</p>
<p>Ainda não testei, mas a primeira vista, me parece bem estável. Melhorias na interface, com designer mais limpo são características do novo Visual Studio. Além de suporte ao novo Framework.Net 4 Beta 1.</p>
<p>A instalação foi simples e não tive problema algum no windows 7.</p>
<p>Os novos recursos incluem suporte ao desenvolvimento de websites com silverlight 2.0. Além do suporte para Desenvolvimento de aplicações para computação em nuvens.</p>
<p>Algumas das características da nova IDE são:</p>
<ul>
<li>Será possível desenvolver ou atualizar aplicações que serão suportadas pelo novo Windows 7, mais facilmente;</li>
<li>Habilitar ferramentas do Office, que permitirão tornar suas solutions mais flexíveis e aumentar a produtividade em necessidades específicas;</li>
<li>Alta performance e maior facilidade de usar o IntelliSense no editor Web;</li>
<li>Total suporte ao Silverlight;</li>
<li>&#8220;One Click Deployment&#8221; que permite facilmente publicar os arquivos e as configurações de uma máquina de desenvolvimento para um site em produção;</li>
<li>Utilizando a ferramenta Windows Azure, os desenvolvedores poderão facilmente desenvolver, debugar ou publicar serviços e aplicações na nova plataforma de núvem da Microsoft;</li>
<li>Mais suporte a banco de dados (IBM DB2 e Oracle);</li>
<li>Dentre vários outros ajustes.</li>
</ul>
<p>Abaixo algumas imagens:</p>
<p style="text-align: center;"><img class="size-full wp-image-45 aligncenter" title="VS2010FirstLook_EnvironmentChoice_2" src="http://blog.alexpimenta.com/wp-content/uploads/2009/07/VS2010FirstLook_EnvironmentChoice_2.JPG" alt=" Visual Studio 2010" width="583" height="563" /></p>
<p>Acima você escolhe o ambiente desejado. Assim como em todos os seus antecessores.</p>
<p style="text-align: center;"><img class="size-full wp-image-46 aligncenter" title="VS2010FirstLook_Wellcome" src="http://blog.alexpimenta.com/wp-content/uploads/2009/07/VS2010FirstLook_Wellcome.JPG" alt=" Visual Studio 2010" width="500" height="313" /></p>
<p>Com IDE mais limpa o Visual Studio 2010 se tornou mais agradável.</p>
<p>Só senti falta de suporte para aplicações Windows Mobile. Ainda será necessário baixar todo o SDK e instalá-lo. Pelo menos nesta edição Profissional.</p>
<p>Bom, a partir de agora vou testá-lo. Mais pra frente postarei mais sobre esta nova ferramenta da microsoft.</p>
<p>Abraço a todos e até&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alexpimenta.com/index.php/informatica-e-tecnologia/visual-studio-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

