<?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/"
	>

<channel>
	<title>BLOG - TreinaWeb &#187; Desenv. Web</title>
	<atom:link href="http://www.treinaweb.com.br/blog/category/desenvolvimento-web/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.treinaweb.com.br/blog</link>
	<description>Webstandards e Programação Web e Desktop</description>
	<lastBuildDate>Fri, 30 Jul 2010 14:06:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Novo PHP versão 6 promete ser polêmico</title>
		<link>http://www.treinaweb.com.br/blog/novo-php-versao-6-promete-ser-polemico/</link>
		<comments>http://www.treinaweb.com.br/blog/novo-php-versao-6-promete-ser-polemico/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 12:09:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Desenv. Web]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.treinaweb.com.br/blog/?p=790</guid>
		<description><![CDATA[A versão atual do PHP é a 5.3 mas o núcleo de desenvolvimento da linguagem já trabalha na versão 6. Da versão 4 para a 5 da plataforma ocorreram modificações profundas, tanto que muitos scripts deixaram de funcionar. Isso ocasionou uma série de transtornos para desenvolvedores, prestadores de serviço e usuários da linguagem. E, principalmente, um atraso muito grande na adoção da versão 5. É comum, quando se contrata um servidor de hospedagem, encontrar suporte ao PHP4 e ao PHP5 (este último normalmente em suporte Beta) pois existe uma preocupação dos prestadores de serviço em suportar os scripts mais antigos, que ainda são maioria.]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-791" title="php6_1" src="http://www.treinaweb.com.br/blog/wp-content/uploads/2010/04/php6_1.gif" alt="" width="350" height="270" /></p>
<p>A versão atual do PHP é a 5.3 mas o núcleo de desenvolvimento da  linguagem já trabalha na versão 6. Da versão 4 para a 5 da plataforma  ocorreram modificações profundas, tanto que muitos scripts deixaram de  funcionar. Isso ocasionou uma série de transtornos para desenvolvedores,  prestadores de serviço e usuários da linguagem. E, principalmente, um  atraso muito grande na adoção da versão 5. É comum, quando se contrata  um servidor de hospedagem, encontrar suporte ao PHP4 e ao PHP5 (este  último normalmente em suporte Beta) pois existe uma preocupação dos  prestadores de serviço em suportar os scripts mais antigos, que ainda  são maioria.</p>
<p>A versão 6, que gera muitas discussões nas listas de desenvolvimento  oficiais do PHP, pode retirar muitas características da plataforma em  uma operação de enxugamento para torná-la mais prática de ser usada. O  problema, novamente, é a compatibilidade legada. Com as características  que devem ser abandonadas muitos scripts escritos para as versões 4 e 5  podem, outra vez, parar de funcionar. Enquanto a equipe que desenvolve o  PHP está obviamente preocupada em tornar a linguagem mais profissional  fica a dúvida se essas modificações constantes podem afetar a  credibilidade e a adoção do PHP como ferramenta de desenvolvimento.</p>
<p>A notícia de que mudanças no <strong>PHP6</strong> poderiam criar incompatibilidade com o  legado das versões 4 e 5 surgiu de um dos desenvolvedores da linguagem,  Derick Rethans. Ele afirmou publicamente que, entre outras coisas, o  PHP6 dará suporte ao Unicode. Isso tornaria as aplicações escritas em  PHP mais internacionalizáveis, aumentando a flexibilidade do que pode  ser escrito com a plataforma. Entretanto, ao contrário dessa  modificação, as outras propostas retiram características que, quando  usadas por scripts de outras versões, podem ocasionar em erros de  execução paralisando os serviços. Entre o que está planejado para mudar  no PHP6 aparece:</p>
<p><strong>1-</strong> <strong>Remoção completa de register_globals</strong> Desde a versão 4 do PHP fala-se  em abandonar essa característica assim programadores mais experientes já  produzem código sem usá-la. Ainda que aplicativos escritos por  desenvolvedores menos preocupados possam deixar de rodar na versão 6 o  impacto disso dever ser pequeno sobre os aplicativos profissionais.</p>
<p><strong>2- Remoção de magic_quotes_*</strong> Boa parte dos programadores PHP sequer as  usa e seu abandono já era discutido há muito tempo. Deve ocasionar pouco  impacto sobre a plataforma.</p>
<p><strong>3-</strong> <strong>O PHP6 deve incluir um mecanismo para que os desenvolvedores desliguem  opções do ambiente que o administrador do site tenha deixado ligadas  por padrão, e vice-versa.</strong> Aqui vemos luzes vermelhas, pois os usuários  não deveriam poder alterar opções do sistema sem o uso de um mecanismo  que limite o que pode ser alterado, nos moldes do Apache. Não há  indicação de que esse sistema vá existir o que pode gerar a situação  incômoda do desenvolvedor administrar mais o sistema do que o próprio  administrador. É apenas uma suspeita de nossa equipe que essa  característica vá trazer problemas, mas a possibilidade está em aberto.</p>
<p><strong>4-</strong> <strong>Remoção do safe_mode e foco no uso de open_basedir</strong> O open_basedir é  mais restritivo que o safe_mode e por isso permite uma flexibilidade  maior, entretanto em servidores que armazenem diversos sites distintos  (que é o caso mais comum na internet) o compartilhamento de scripts pode  tornar-se problemático. Ponto para a segurança, mas os administradores  de sistemas com PHP6 terão que suar um pouco mais a camisa.</p>
<p><strong>5- Remoção de tudo que foi marcado como desatualizado desde o PHP 3/4</strong> Muitos scripts, principalmente os mais “antigos” vão parar de funcionar  definitivamente, exigindo que o código seja revisado e reescrito.  Somando à isso o fato de querer aproveitar as novas funcionalidades vai  haver muita gente decidindo que a migração não vale a pena ou que é  melhor escrever a aplicação do zero do que ficar tapando buracos em  código legado.</p>
<p><strong>6-Tornar os identificadores sensíveis à caixa do texto</strong> Aqui haverá um  problema para desenvolvedores de Windows, que podem não estar  acostumados com essa característica já existente em diversas outras  linguagens, como o C/C++, por exemplo. Desenvolvedores UNIX não sentirão  diferença pois nessa classe de sistema operacional a sensibilidade à  caixa é padrão. Nesse aspecto os hábitos antes alimentados pelo PHP  podem exigir adaptação de parte dos desenvolvedores. Além disso, scripts  escritos com pouco cuidado podem parar de funcionar.</p>
<p><strong>7- Remoção de vários aliases de funções Scripts que fazem uso desses  aliases não irão funcionar na nova versão do PHP.</strong> É uma simplificação  boa, já que é melhor ter apenas um nome para cada coisa, e vai reduzir a  complexidade do desenvolvimento. Mas outra vez os desenvolvedores terão  que optar entre permanecer com uma versão antiga da linguagem ou  trabalhar para modificar o código existente.</p>
<p>Essas são as principais modificações propostas para a versão 6 do PHP,  que irão exigir cuidado dos profissionais que decidam pelo upgrade em  seus servidores. Entretanto não são as únicas, mmuitas outras propostas e  suas conseqüências podem ser observadas aqui. Certamente elas devem  atrasar a adoção da nova versão, como aconteceu com o PHP5. Na versão 5  muito foi feito no sentido de tornar a linguagem orientada à objetos.  Isso permite que os programadores escrevam aplicações mais complexas e  maduras, mas as incompatibilidades com o legado das versões 3 e 4 do PHP  foram um grande obstáculo para a adoção do PHP5. De tal sorte que o  PHP5 ainda não tornou-se o padrão para as aplicações PHP no mundo,  havendo uma forte presença do PHP4 no mercado.</p>
<p>O fato do cPanel demorar cerca de 6 meses para retirar do estágio Beta  qualquer modificação na plataforma PHP irá atrasar a migração de boa  parte dos usuários. Muitos scripts livres e gratuitos que são usados por  uma parte grande do mercado, cujos administradores não são  programadores e usam código de terceiros, podem demorar para serem  migrados para o PHP6 paralisando ainda mais o movimento de migração para  a nova versão. As mudanças da versão 4 para a 5 obrigaram muitos  desenvolvedores a reescrever seus scripts do zero e as quebras de  suporte legado propostas para a versão 6 irão deixar muitos  programadores descontentes.</p>
<p>Ainda que os aplicativos desenvolvidos para o PHP4 que não tenham  recebido adaptação para a versão 5 possam ser reescritos ou adaptados  diretamente para a versão 6 é impossível negar que os programadores  ficarão desconfiados. Começar os trabalhos para levar seus scripts para a  versão 6 valerá a pena? Haverá outra quebra de suporte legado em uma  futura versão 7? Essas perguntas agora encontram-se atrás de uma cortina  de fumaça e devem levar algum tempo para serem respondidas. Talvez o  mercado só comece a migrar realmente para o PHP6 quando o grupo que  desenvolve a linguagem comprometer-se a manter suporte para uma nova  versão. Podem se passar 2 ou 3 anos até que uma migração forte para a  nova versão 6 seja verificada no mercado e até lá provavelmente poucos  decidirão investir tempo e dinheiro para adaptar scripts antigos para a  versão 5, dando uma sobrevida inusitada ao PHP4.</p>
<p>Essas mudanças na plataforma PHP que causam falta de compatibilidade com  aplicações legadas são reflexos de um projeto pouco estruturado. A  mudança de foco do PHP, desde seu nascimento até hoje, também  contribuiram para que mudanças tão profundas fossem levadas à cabo. E é  indiscutível que esse tipo de acontecimento abala o respeito que o  mercado tem por dada solução. Essas guinadas bruscas demandam retrabalho  de profissionais cuja hora de serviço não é das mais baratas. Produtos  de empresas consolidadas, como Microsoft, Oracle, e outras, raramente  colocam seus clientes em posições tão desconfortáveis em tão curto  espaço de tempo. Esse panorama deixará muitos tomadores de decisão  avessos ao PHP ainda que as mudanças efetuadas sejam reconhecidamente  necessárias e bem vindas pelos profissionais técnicos.</p>
<p>Em uma análise mais profunda esse tipo de situação pode servir para o  pessoal do Software Livre repensar um pouco mais a forma como grandes  projetos é manejada. Não são raros os casos de projetos livres que  obrigaram seus usuários a passarem pelo mesmo tipo de situação que o  PHP.</p>
<p><span style="color: #888888;"><strong>Fonte:</strong> <em> Meiobit</em></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.treinaweb.com.br/blog/novo-php-versao-6-promete-ser-polemico/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como utilizar o HTML5, atualmente?</title>
		<link>http://www.treinaweb.com.br/blog/como-utilizar-o-html5-atualmente/</link>
		<comments>http://www.treinaweb.com.br/blog/como-utilizar-o-html5-atualmente/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 18:47:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Boas práticas]]></category>
		<category><![CDATA[Desenv. Web]]></category>
		<category><![CDATA[HTML5]]></category>

		<guid isPermaLink="false">http://www.treinaweb.com.br/blog/?p=589</guid>
		<description><![CDATA[Css e JavaScript Hacks para fazer o HTML5 funcionar em browsers sem suporte.]]></description>
			<content:encoded><![CDATA[<p>Infelizmente nenhum dos maiores navegadores atuais suportam todas as novas tags inseridas no HTML5, como: article; section, header, hgroup, etc.</p>
<p>Então é necessário simular estas tags com a ajuda de hacks em CSS e JavaScript. Basicamente para estas tags, a única coisa que você precisa fazer é setá-las como display:block. Veja abaixo um exemplo de css hack para aticle, footer, section e header:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">&lt;style<span style="color: #00AA00;">&gt;</span>
article<span style="color: #00AA00;">,</span> footer<span style="color: #00AA00;">,</span> section<span style="color: #00AA00;">,</span> header <span style="color: #00AA00;">&#123;</span>
<span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span><span style="color: #993333;">block</span>
<span style="color: #00AA00;">&#125;</span>
&lt;/style<span style="color: #00AA00;">&gt;</span></pre></div></div>

<p>Simples assim. Primeiramente, nós adicionamos as tags que não são suportadas pelos navegadores, então setamos os atributos display para block.</p>
<p>Ok, o hack de CSS é realmente bem simples, mas infelizmente não funciona em todos os navegadores, como por exemplo o Internet Explorer. Para solucionar este problema também no IE, precisamos criar também um hack em JavaScript.</p>
<p>Vamos ao código:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span>
  <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> elements <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>
      <span style="color: #3366CC;">'article'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'content'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'footer'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'header'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'nav'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'section'</span>
    <span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> j <span style="color: #339933;">=</span> elements.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> j<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span>elements<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></div></div>

<p>Note que o código acima deve ser adicionado logo abaixo às tags &lt;link&gt; e &lt;style&gt;. Caso contrário, não irá funcionar.</p>
<p>Basicamente é isto, agora você pode utilizar o HTML5 em todos os principais browsers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.treinaweb.com.br/blog/como-utilizar-o-html5-atualmente/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Microsoft + Yahoo, o que muda pra você?</title>
		<link>http://www.treinaweb.com.br/blog/microsoft-yahoo-o-que-muda-pra-voce/</link>
		<comments>http://www.treinaweb.com.br/blog/microsoft-yahoo-o-que-muda-pra-voce/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 17:37:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Desenv. Desktop]]></category>
		<category><![CDATA[Desenv. Web]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://www.treinaweb.com.br/blog/?p=428</guid>
		<description><![CDATA[Este post já é um pouco antigo(dias), pensamos tê-lo publicado, mas estava nos RASCUNHOS o_O. De qualquer forma , aí vai =) Caso você não tenha sido abduzido e ter ficado os últimos 2 anos fora da Terra, sabe que a Microsoft e Yahoo, estão namorando a um bom tempo uma aquisição, fusão ou parceria. [...]]]></description>
			<content:encoded><![CDATA[<p>Este post já é um pouco antigo(dias), pensamos tê-lo publicado, mas estava nos RASCUNHOS o_O. De qualquer forma , aí vai =)</p>
<p>Caso você não tenha sido abduzido e ter ficado os últimos 2 anos fora da Terra, sabe que a Microsoft e Yahoo, estão namorando a um bom tempo uma aquisição, fusão ou parceria. E depois deste tempo todo, a parceria finalmente saiu.</p>
<p>Na última quarta-feira a Microsoft anunciou que fechou um acordo com o Yahoo, onde o Bing se tornaria o buscador padrão de todas as páginas do Yahoo e filiados. Mais precisamente o acordo inclui os seguintes termos:</p>
<ul>
<li> Duração de 10 anos, podendo ser prorrogado por mais 10.</li>
<li> A Microsfot terá acesso a tecnologia do Yahoo Search enquanto o acordo for vigente, e poderá usar quaisquer tecnologias no Bing.</li>
<li> O Bing será o único algoritmo de search e anúncios dos sites do Yahoo.</li>
<li> Os Links patrocinados serão gerenciados pelo Microsoft AdCenter.</li>
<li> Cada empresa manterá usa marca e equipes atuando separadamente.</li>
<li> A Microsft destinará parte da receita dos anúncios patrocinados ao Yahoo, sendo que nos primeiros 5 anos este percentual será de 88%.</li>
<li> O acordo protege a privacidade do consumidor, limitando os dados compartilhados entre as empresas ao mínimo necessário para operar e melhorar a plataforma.</li>
</ul>
<p>Com este acordo muito se discute, sobre o que irá acontecer com mercado de busca. Como pode demorar até 24 meses para que a integração seja concluída, não veremos seus resultados de imediato, mas alguns analistas apresentaram suas ideias:</p>
<ul>
<li> Vale investir em SEO no Bing, pois suas buscas são mais ricas e organizadas, o que deve atrair os usuários.</li>
<li> Apesar do pequeno market share (atualmente em 8% nos EUA, pode chegar a 28% com a parceira), o Bing gera mais conversões e cliques nos anúncios.</li>
<li> Com a parceria e o aumento de market share, o Bing pode atrair mais spam, o que pode afetar usa relevância.</li>
<li> Espera-se que muitos anunciantes comecem a utilizar o Bing.</li>
<li> Agora todos começam a explorar as ferramentas de análise SEO do Bing (Bing Webmaster Tools)</li>
<li> O registro de negócios locais no diretório Bing se torna importante já que o buscador destaca as listas locais em suas buscas.</li>
<li> O Bing passa a contar com a valiosa base de dados do Yahoo para customizar seu serviço por segmento-alvo e tipo de usuário.</li>
<li> Muitos usuários e clientes do Yahoo! nos EUA temem que a empresa desative recursos de busca como diretório, Delicious, maps, etc.</li>
<li> Como o Yahoo! manterá certa independência, especula-se que a sua busca siga critérios um pouco diferentes das buscas feitas via Bing.</li>
</ul>
<p>Se isto realmente irá acontecer não sabemos, mas a dica do momento é preste mais atenção ao Bing e veja no que ele pode ser útil para você.</p>
<p>Até a próxima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.treinaweb.com.br/blog/microsoft-yahoo-o-que-muda-pra-voce/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HTML 5 e o futuro da internet (Web semântica)</title>
		<link>http://www.treinaweb.com.br/blog/html-5-e-o-futuro-da-internet-web-semantica/</link>
		<comments>http://www.treinaweb.com.br/blog/html-5-e-o-futuro-da-internet-web-semantica/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 01:29:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Desenv. Web]]></category>
		<category><![CDATA[bing]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[html 5]]></category>
		<category><![CDATA[wolfram alpha]]></category>

		<guid isPermaLink="false">http://www.treinaweb.com.br/blog/?p=275</guid>
		<description><![CDATA[Hoje vamos falar sobre o futuro da internet. Antes que vocês lancem pedras ou nos chamem de videntes. Hoje vamos falar sobre Web Semântica e HTML5. Como todos já devem estar cansados de saber, o futuro da internet é a Web Semântica. O Google já tem pretensões e planos de criar uma busca mais semântica, [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje vamos falar sobre o futuro da internet. Antes que vocês lancem pedras ou nos chamem de videntes. Hoje vamos falar sobre Web Semântica e HTML5.</p>
<p>Como todos já devem estar cansados de saber, o futuro da internet é a Web Semântica. O <a rel="nofollow" title="Google" href="http://www.google.com.br" target="_blank">Google </a>já tem pretensões e planos de criar uma busca mais semântica, na verdade ele já fez algumas coisas neste sentido. E para não ficar atrás a Microsoft lançou o &#8220;<a rel="nofollow" title="Bing" href="http://www.bing.com.br" target="_blank">bing</a>&#8221; (não foi nós que escolhemos este nome XD), seu novo buscador que já está disponível desde ontem. E o Stephen Wolfram lançou no mês passado o novo buscador <a rel="nofollow" title="Wolfram|Alpha" href="http://www.wolframalpha.com/" target="_blank">Wolfram|Alpha</a>, onde o intuito não é destronar o Google, mas criar um novo conceito em busca.</p>
<p>Com todos estes investimentos, não estamos errados em prever que o futuro da internet é a Web Semântica. E não foi só nos que pensamos assim (Obvio!), desde 2004 a W3C, criou com algumas empresas, como Apple, Mozilla, Opera, e vários desenvolvedores, o WHATWG (Web Hypertext Application technology Working Group). O intuito do WHATWG é criar as especificações do HTML 5, já que o HTML 4 estava ultrapassado, por que sua última versão é datada de 1999.</p>
<p>De 2004 até hoje já saíram alguns rascunhos do HTML 5, o que se pode notar é que ele será focado na semântica, onde todas as tags terão significados, não será necessário criar vários divs, por que teremos tags para cada elemento da página. Para entender melhor o que estamos dizendo <a rel="nofollow" title="Hobo" href="http://www.hobo-web.co.uk/seo-blog/index.php/html5-html4-different/" target="_blank">aqui</a>, tem um exemplo que ilustra as diferenças entre o html4 e o html 5.</p>
<p>Com as tags mais intuitivas, também é esperado que o desenvolvimento web se torne mais simples e rápido. Ainda é cedo para vermos todo o potencial deste novo HTML, mas vamos ficar atentos, qualquer coisa nova lhe avisamos.</p>
<p>Até a próxima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.treinaweb.com.br/blog/html-5-e-o-futuro-da-internet-web-semantica/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Capitalizar Strings no C#</title>
		<link>http://www.treinaweb.com.br/blog/capitalizar-strings-no-c/</link>
		<comments>http://www.treinaweb.com.br/blog/capitalizar-strings-no-c/#comments</comments>
		<pubDate>Tue, 19 May 2009 01:03:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Desenv. Web]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://www.treinaweb.com.br/blog/?p=230</guid>
		<description><![CDATA[Hoje mostraremos uma dica útil para quem precisa ter palavras capitalizadas no C#. Como no C# não existe uma função para fazer isto, é necessário criar um método que irá capitalizar nossas strings, ou seja, irá converter para maiúscula os primeiros caracteres de cada palavra. Pode ser usado em nome de formulários, por exemplo. Primeiro [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje mostraremos uma dica útil para quem precisa ter palavras capitalizadas no C#.</p>
<p>Como no C# não existe uma função para fazer isto, é necessário criar um método que irá capitalizar nossas strings, ou seja, irá converter para maiúscula os primeiros caracteres de cada palavra. Pode ser usado em nome de formulários, por exemplo.</p>
<p>Primeiro método</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">private</span> <span style="color: #FF0000;">string</span> CapitalizeWords<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span> value<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
   <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>value <span style="color: #008000;">==</span> <span style="color: #0600FF;">null</span><span style="color: #000000;">&#41;</span> <span style="color: #0600FF;">throw</span> <span style="color: #008000;">new</span> ArgumentNullException<span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;value&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
   <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>value.<span style="color: #0000FF;">Length</span> <span style="color: #008000;">==</span> <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span> <span style="color: #0600FF;">return</span> value<span style="color: #008000;">;</span>
&nbsp;
   <span style="color: #000000;">System.<span style="color: #0000FF;">Text</span></span>.<span style="color: #0000FF;">StringBuilder</span> result <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> <span style="color: #000000;">System.<span style="color: #0000FF;">Text</span></span>.<span style="color: #0000FF;">StringBuilder</span><span style="color: #000000;">&#40;</span>value<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
   result<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#93;</span> <span style="color: #008000;">=</span> <span style="color: #FF0000;">char</span>.<span style="color: #0000FF;">ToUpper</span><span style="color: #000000;">&#40;</span>result<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
   <span style="color: #0600FF;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span> i <span style="color: #008000;">=</span> <span style="color: #FF0000;">1</span><span style="color: #008000;">;</span> i <span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span> result.<span style="color: #0000FF;">Length</span><span style="color: #008000;">;</span> <span style="color: #008000;">++</span>i<span style="color: #000000;">&#41;</span>
   <span style="color: #000000;">&#123;</span>
      <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">char</span>.<span style="color: #0000FF;">IsWhiteSpace</span><span style="color: #000000;">&#40;</span>result<span style="color: #000000;">&#91;</span>i <span style="color: #008000;">-</span> <span style="color: #FF0000;">1</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>
      <span style="color: #000000;">&#123;</span>
         result<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span> <span style="color: #008000;">=</span> <span style="color: #FF0000;">char</span>.<span style="color: #0000FF;">ToUpper</span><span style="color: #000000;">&#40;</span>result<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
      <span style="color: #000000;">&#125;</span>
   <span style="color: #000000;">&#125;</span>
   <span style="color: #0600FF;">return</span> result.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Segundo método</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">private</span> <span style="color: #FF0000;">string</span> CapitalizeWordsCulture<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span> value<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
   <span style="color: #0600FF;">return</span> <span style="color: #000000;">System.<span style="color: #0000FF;">Globalization</span></span>.<span style="color: #0000FF;">CultureInfo</span>.<span style="color: #0000FF;">CurrentCulture</span>.<span style="color: #0000FF;">TextInfo</span>.<span style="color: #0000FF;">ToTitleCase</span><span style="color: #000000;">&#40;</span>value<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Os dois métodos fazem exatamente a mesma coisa, sendo que o segundo método é melhor por ser menor (rimou =).</p>
<p>Bom proveito e até a próxima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.treinaweb.com.br/blog/capitalizar-strings-no-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trabalhando com headers em PHP</title>
		<link>http://www.treinaweb.com.br/blog/trabalhando-com-headers-em-php/</link>
		<comments>http://www.treinaweb.com.br/blog/trabalhando-com-headers-em-php/#comments</comments>
		<pubDate>Fri, 15 May 2009 01:30:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Desenv. Web]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.treinaweb.com.br/blog/?p=213</guid>
		<description><![CDATA[Algumas vezes é necessário utilizar a função header no PHP, por isto mostraremos neste tutorial a maior parte das coisas que você pode fazer com esta função. Para quem não sabe , a função header do PHP envia e altera informações do header http do browser. Vamos ao tutorial: 1 &#8211; O header do http [...]]]></description>
			<content:encoded><![CDATA[<p>Algumas vezes é necessário utilizar a função header no PHP, por isto mostraremos neste tutorial a maior parte das coisas que você pode fazer com esta função.</p>
<p>Para quem não sabe , a função header do PHP envia e altera informações do header http do browser.</p>
<p>Vamos ao tutorial:</p>
<p>1 &#8211; O header do http permite enviar varias informações para o browser, como um redirecionamento da pagina:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Location: http://www.treinaweb.com.br/blog&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Neste caso o browser será redirecionado assim que começar o carregamento da pagina. É recomendado sempre utilizar urls completas, porque alguns browsers (antigos) não suportam urls relativas.</p>
<p>2 &#8211; Também é possível mudar o content type do documento.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Content-Type: text/css&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Agora você pode apontar para o arquivo css.php, como se fosse um arquivo css. Com isto é possível criar dinamicamente arquivos css, sendo útil ao projetar css para funcionar em qualquer browser e resolução.</p>
<p>3 &#8211; É possível forçar o browser a exibir a janela de download e ter um nome recomendado para o arquivo.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Content-Type: image/jpeg&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Content-Disposition: attachment; filename=imagem.jpg&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Com isto o browser mostrará a janela de download, com o nome do arquivo sendo imagem.jpg, independente do nome do arquivo php.</p>
<p>4 &#8211; Você também pode enviar erros específicos ao browser.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;HTTP/1.0 404 Not Found&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>É importante não esquecer as diferentes mensagens de erro e o que elas significam.</p>
<p>5 &#8211; Finalizando, gostaríamos de sugerir, que sempre utilize o exit para ter certeza que nada depois do código será executado, a menos que o código seja utilizado para trazer uma imagem ou informações necessárias para o arquivo.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Location: http://www.treinaweb.com.br/blog&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">exit</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Se você quiser se aprofundar mais na função header, ou estes exemplos não atendem suas necessidades, sugerimos que leia documentação oficial e na integra da função, que pode ser encontrada <a rel="nofollow" title="PHP" href="http://us2.php.net/manual/fr/function.header.php" target="_blank">aqui</a>.</p>
<p>Até a próxima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.treinaweb.com.br/blog/trabalhando-com-headers-em-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Colocando o site ASP.NET em manutenção</title>
		<link>http://www.treinaweb.com.br/blog/colocando-o-site-aspnet-em-manutencao/</link>
		<comments>http://www.treinaweb.com.br/blog/colocando-o-site-aspnet-em-manutencao/#comments</comments>
		<pubDate>Sat, 09 May 2009 02:37:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Desenv. Web]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[IIS]]></category>

		<guid isPermaLink="false">http://www.treinaweb.com.br/blog/?p=182</guid>
		<description><![CDATA[Quando é necessário colocar um site em manutenção, por que vamos atualizar o layout, alguma página importante, ou mesmo porque ocorreu algum problema, normalmente, realizamos um trabalho complicado. No entanto,o que muita gente não sabe,  é que o ASP.NET tem um recurso para isto (tem alguma coisa que ele não pode fazer?). Basta criar um [...]]]></description>
			<content:encoded><![CDATA[<p>Quando é necessário colocar um site em manutenção, por que vamos atualizar o layout, alguma página importante, ou mesmo porque ocorreu algum problema, normalmente, realizamos um trabalho complicado. No entanto,o que muita gente não sabe,  é que o ASP.NET tem um recurso para isto (tem alguma coisa que ele não pode fazer?).</p>
<p>Basta criar um arquivo html com o nome de <strong>app_offline.htm</strong> com uma mensagem qualquer de manutenção no diretório raiz do site e pronto!</p>
<p>A presença deste arquivo  fará com que o IIS entenda que para toda requisição realizada, seja exibido esse arquivo, ou seja, não é necessário parar o serviço web ou remover qualquer arquivo.</p>
<p>Pode parecer o contrário, mas este não é um serviço do servidor web IIS, é realmente mais uma facilidade do ASP.NET (versão 2 ou superior).</p>
<p>Até a próxima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.treinaweb.com.br/blog/colocando-o-site-aspnet-em-manutencao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O que é Flex?</title>
		<link>http://www.treinaweb.com.br/blog/o-que-e-flex/</link>
		<comments>http://www.treinaweb.com.br/blog/o-que-e-flex/#comments</comments>
		<pubDate>Thu, 07 May 2009 01:41:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Desenv. Web]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.treinaweb.com.br/blog/?p=174</guid>
		<description><![CDATA[O Flex (também chamado de Adobe Flex) é um conjunto de tecnologias open source, que foi lançado em março de 2004 pela Macromedia, com o intuito de facilitar o desenvolvimento de aplicações ricas em recursos para a Internet, baseadas na plataforma Flash. É possível verificar que as aplicações feitas em Flash oferecem ao usuário uma [...]]]></description>
			<content:encoded><![CDATA[<p>O Flex (também chamado de Adobe Flex) é um conjunto de tecnologias <a rel="nofollow" title="Wikipédia" href="http://pt.wikipedia.org/wiki/C%C3%B3digo_aberto" target="_blank">open source</a>, que foi lançado em março de 2004 pela <a rel="nofollow" title="Wikipédia" href="http://pt.wikipedia.org/wiki/Macromedia" target="_blank">Macromedia</a>, com o intuito de facilitar o desenvolvimento de aplicações ricas em recursos para a Internet, baseadas na plataforma <a rel="nofollow" title="Adobe Flash" href="http://www.adobe.com/br/products/flashplayer/" target="_blank">Flash</a>.</p>
<p>É possível verificar que as aplicações feitas em Flash oferecem ao usuário uma experiência muito mais robusta, na qual a produtividade é envolvida pela facilidade de uso e interatividade em tempo real, impossível conseguir isto no HTML. Desenvolver aplicações com o Flash torna-se estranho, no início para alguns programadores, pelo fato do Flash utilizar uma linha do tempo (timeline), o que facilita o trabalho dos designers. Já o Flex remove esta timeline, fornecendo aos programadores um novo caminho de desenvolvimento de RIAs.</p>
<p><strong>Linguagem MXML</strong></p>
<p>Os arquivos desenvolvidos em Flex possuem a extensão MXML, o como o <a rel="nofollow" title="Wikipédia" href="http://pt.wikipedia.org/wiki/XML" target="_blank">XML </a>do nome sugere é mais uma linguagem de marcação baseada no XML. Para visualizar uma aplicação MXML o usuário faz uma requisição pelo seu servidor, o servidor recebe a requisição, o servidor do Flex compila o arquivo MXML para SWF (formato do Flash), e este será rodado no Flash Player como uma aplicação Flash normal.</p>
<p><strong>Flex SDK</strong></p>
<p>Flex SDK é o compilador em modo caractere do Flex, com ele é possível desenvolver as aplicações em Flex, ele é distribuído gratuitamente pela Adobe, e você pode usar qualquer editor de textos para escrever seus códigos.</p>
<p>A Adobe também comercializa o Flex Builder, que é um <a rel="nofollow" title="Wikipédia" href="http://pt.wikipedia.org/wiki/Framework" target="_blank">framework </a>que oferece várias facilidades ao usuário, que está &#8220;embutido&#8221; em uma suíte de desenvolvimento. A grosso modo podemos comprara-lo ao <a rel="nofollow" title="Wikipédia" href="http://pt.wikipedia.org/wiki/CodeGear_Delphi" target="_blank">Delphi</a>, pelas facilidades e os recursos que ambas as suítes possuem, só que o Flex Builder é voltado para o desenvolvimento web.</p>
<p>Nos próximos artigos mostraremos alguns exemplos de aplicações desenvolvidas em Flex.</p>
<p>Até a próxima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.treinaweb.com.br/blog/o-que-e-flex/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pegadinha IF em PHP</title>
		<link>http://www.treinaweb.com.br/blog/pegadinha-if-em-php/</link>
		<comments>http://www.treinaweb.com.br/blog/pegadinha-if-em-php/#comments</comments>
		<pubDate>Tue, 05 May 2009 03:20:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Desenv. Web]]></category>
		<category><![CDATA[Webstandards]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.treinaweb.com.br/blog/?p=159</guid>
		<description><![CDATA[Básico? Sim, mas vamos a uma pequena dica para aqueles que programam em PHP. Sem executar, diga-nos: Qual é o resultado dos dois IFs abaixo? if &#40;&#34;6 Galinhas&#34; + &#34;4 Patos&#34; == &#34;10 Aves&#34;&#41; &#123; echo &#34;Expressão Verdadeira!&#34;; &#125; else &#123; echo &#34;Expressão Falsa!&#34;; &#125; &#160; if &#40; 0 == &#34;Não Encontrado&#34;&#41; &#123; echo &#34;Expressão [...]]]></description>
			<content:encoded><![CDATA[<p>Básico? Sim, mas vamos a uma pequena dica para aqueles que programam em PHP.</p>
<p>Sem executar, diga-nos: Qual é o resultado dos dois IFs abaixo?</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">       <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;6 Galinhas&quot;</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;4 Patos&quot;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">&quot;10 Aves&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Expressão Verdadeira!&quot;</span><span style="color: #339933;">;</span>
       <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Expressão Falsa!&quot;</span><span style="color: #339933;">;</span>
       <span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #cc66cc;">0</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">&quot;Não Encontrado&quot;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Expressão Verdadeira';
	}else{
		echo &quot;</span>Expressão Falsa<span style="color: #339933;">!</span><span style="color: #0000ff;">&quot;;
	}</span></pre></div></div>

<p>Se dissermos que ambos irão retornar verdadeiro como resultado, você acreditaria? OK, pode testar, não somos <span style="text-decoration: line-through;">muito</span> malucos.</p>
<p>Ainda não acredita? ou acha que não é PHP? Veja a explicação lógica para isto:</p>
<p>No primeiro exemplo, quem programa em PHP deve saber, que o operador &#8216;+&#8217; é somente para expressões aritméticas (para concatenação, utiliza-se o &#8216;.&#8217;- ponto), então o PHP reconhece o primeiro digito das strings &#8220;6 Galinhas&#8221;, &#8220;4 Patos&#8221; e &#8220;10 Aves&#8221;, converte a string para o tipo inteiro e assim ignorando as palavras e deixando somente os números, resultando em 6 + 4 == 10, sendo assim o resultado será verdadeiro.</p>
<p>Já no segundo caso, o PHP irá reconhecer o número 0 e tentará converter a string &#8220;Não encontrado&#8221; para o tipo inteiro, pelo fato de não haver número na string a tentativa irá falhar e retornará Falso, como falso em PHP é 0(zero), então a pergunta será se 0(zero) == 0(zero), que também irá retornar verdadeiro.</p>
<p>Pode ser algo simples, mas quem está começando, pode perder alguns minutos até encontrar este &#8220;problema&#8221;que não ocorreria  em outras linguagens.</p>
<p>Até a próxima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.treinaweb.com.br/blog/pegadinha-if-em-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Gerar PDF em Javascript!</title>
		<link>http://www.treinaweb.com.br/blog/gerar-pdf-em-javascript/</link>
		<comments>http://www.treinaweb.com.br/blog/gerar-pdf-em-javascript/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 01:29:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Desenv. Web]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Pdf]]></category>

		<guid isPermaLink="false">http://www.treinaweb.com.br/blog/?p=142</guid>
		<description><![CDATA[Apesar de conhecemos pessoas que &#8220;odeiam&#8221; o Javascript, não podemos negar que foi o tempo, onde ele servia apenas para efeitos bobos, abrir &#8220;popups&#8221;, alertas e validação de formulários. Nos já mostramos funções em Javascript, que há tempos era impensável de se fazer na linguagem. Se você se surpreendeu com o Chrome Experiments, se prepare [...]]]></description>
			<content:encoded><![CDATA[<p>Apesar de conhecemos pessoas que &#8220;odeiam&#8221; o Javascript, não podemos negar que foi o tempo, onde ele servia apenas para efeitos bobos, abrir &#8220;popups&#8221;, alertas e validação de formulários. Nos já <a rel="nofollow" title="Treinaweb" href="http://www.treinaweb.com.br/blog/chrome-experiments/" target="_blank">mostramos </a>funções em Javascript, que há tempos era impensável de se fazer na linguagem.</p>
<p>Se você se surpreendeu com o <a rel="nofollow" title="Treinaweb" href="http://www.treinaweb.com.br/blog/chrome-experiments/">Chrome Experiments</a>, se prepare porque agora você irá cair pra atrás, pois surgiu uma função para gerar PDFs, isto mesmo, você não ouviu errado. A biblioteca chama-se <a rel="nofollow" title="jsPDF" href="http://code.google.com/p/jspdf/">jsPDF </a>(que original!) e gera PDF em Javascript puro. É um projeto open source, e atualmente só funciona no Firefox 3, Safari (até o do Iphone) e Opera, mas o suporte ao IE está a caminho.</p>
<p>Por enquanto ele gera PDF só com texto, mas o suporte a imagens, links e fontes está previsto nas próximas versões.</p>
<p>Até a próxima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.treinaweb.com.br/blog/gerar-pdf-em-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
