<?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>Leandro Barral</title>
	<atom:link href="http://blog.leandrobarral.com.br/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.leandrobarral.com.br</link>
	<description>Programação, design e novidades..</description>
	<lastBuildDate>Mon, 01 Nov 2010 16:51:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Solução para &#8216;bug&#8217; de Horário de Verão (Daylight Saving)</title>
		<link>http://blog.leandrobarral.com.br/2010/11/01/solucao-para-bug-de-horario-de-verao-daylight-saving/</link>
		<comments>http://blog.leandrobarral.com.br/2010/11/01/solucao-para-bug-de-horario-de-verao-daylight-saving/#comments</comments>
		<pubDate>Mon, 01 Nov 2010 16:41:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[ASP.net / C#]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[calendário]]></category>
		<category><![CDATA[datepicker]]></category>
		<category><![CDATA[daylight saving]]></category>
		<category><![CDATA[horario de verão]]></category>

		<guid isPermaLink="false">http://blog.leandrobarral.com.br/?p=67</guid>
		<description><![CDATA[Ao som de: Audioslave &#8211; Original Fire ♫ Fala galera, depois de quase 1 ano sem passar por aqui, dessa vez não por falta de tempo e sim por um pouco de preguiça confesso, venho trazer a vocês uma possivel solução para um problema que passei na empresa onde trabalho. Trago a solução Problema: Ao [...]<br /><div><img src="http://blog.leandrobarral.com.br/wp-content/plugins/gd-star-rating/gfx.php?value=5.0" /></div><div>Rating: 5.0/<strong>5</strong> (3 votes cast)</div><br />]]></description>
			<content:encoded><![CDATA[<p><em>Ao som de: Audioslave &#8211; Original Fire ♫</em></p>
<p>Fala galera, depois de quase 1 ano sem passar por aqui, dessa vez não por falta de tempo e sim por um pouco de preguiça <span style="text-decoration: line-through;">confesso</span>, venho trazer a vocês uma possivel solução para um problema que passei na empresa onde trabalho. Trago a solução</p>
<p><span style="text-decoration: underline;">Problema:</span> Ao utilizar o componente <a href="http://wiki.asp.net/page.aspx/417/calendar-extender/" target="_blank">CalendarExtender</a> so .net (configurado para apresentar em pt-BR) não é possivel selecionar a data 17/10/2010 (ou qualquer outra data que sejá &#8216;virada&#8217; de horário de verão), onde ao selecionar o dia 17 ele automaticamente apresentava dia 16 e se inserir manualmente dia 17 o componente retorna como uma &#8216;Data Inválida&#8221;.</p>
<p><span style="text-decoration: underline;">Causa:</span> No Brasil o horário de verão entra em vigor à meia noite, adiantando assim o relógio para 1h da manhã, nosso <a href="http://pt.wikipedia.org/wiki/Greenwich_Mean_Time" target="_blank">GMT</a> é -3 e no horário de verão -2, o que acontece, é que como à meia noite ele automaticamente vai para 1h a hora &#8220;17/10/2010 00:00:00&#8243; passa a não mais existir, o problema não é o GMT, o problema é que não dá para configurar a função <em>getDate()</em> do javascript (imbutido no Calendar Extender).</p>
<p><span style="text-decoration: underline;">Tentativa de solução:</span> Tentar interceptar no global.asax ao solicitar uma data ao .net adicionar 1 hora, assim o &#8220;limbo da meia noite&#8221; seria contornado. Achei muitas dificuldades em conseguir <em>&#8216;setar&#8217; </em>essa 1 hora, todos os métodos e propriedades referentes a Daylight Saving são apenas <em>get </em>e não é possivel modificar o <em>getDate()</em> utilizado<em>.</em></p>
<p>Foi aí que lembrei<em> </em>que em um dos meus projetos pessoais utilizei jQuery para apresentar um calendário ao usuário, chama-se <a href="http://jqueryui.com/demos/datepicker/" target="_blank">Date Picker</a>, para utiliza-lo basta adicionar em seu formulário a API <a href="http://jqueryui.com/home" target="_blank">jQuery UI</a>, é um componente totalmente personalizavel. Porém, pensando no conceito de reutilização de código criei um UserControl onde já é adicionado todas as referências de Javascript cabendo apenas referenciar o CSS nas páginas. Isso porque se eu adicionar o CSS no controle, a cada chamada do controle será colocado uma tag <em>&lt;link..&gt;</em>.</p>
<p>Criei um novo website (C#) utilizado o <a href="http://www.microsoft.com/visualstudio/pt-br/visual-studio-2010-launch" target="_blank">MS Visual Studio 2010</a>, nomeei de DatePickerTest, modifiquei o web.config para poder utilizar alguns recursos do <a href="http://www.asp.net/ajax" target="_blank">MS AjaxToolkit</a>, criei uma pasta chamada <em>dll</em>, coloquei minha dll do toolkit e referenciei no projeto (o post não é para aprender a utilizar o toolkit então não entrarei muito em detalhes nesse post. No final colocarei um link com todo projeto configurado e funcionando).</p>
<p>Criei uma nova pasta chamada <em>Controls</em>, que será onde colocaremos os controles do projeto (tenho mania de organização), dentro dela adicionei um novo <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.usercontrol.aspx" target="_blank">UserControl</a> chamado DateBox.ascx</p>
<p>DateBox.ascx</p>
<pre class="brush: xml">
&lt;%@ Control Language=&quot;C#&quot; AutoEventWireup=&quot;true&quot; CodeFile=&quot;DateBox.ascx.cs&quot; Inherits=&quot;DatePickerTest.Controls.DateBox&quot; %&gt;
&lt;asp:ScriptManagerProxy ID=&quot;sm&quot; runat=&quot;server&quot; ClientIDMode=&quot;Predictable&quot; /&gt;
&lt;asp:TextBox runat=&quot;server&quot; ClientIDMode=&quot;Predictable&quot; ID=&quot;dateTextBox&quot; Width=&quot;70px&quot; MaxLength=&quot;10&quot; /&gt;
&lt;asp:RequiredFieldValidator ID=&quot;required&quot; runat=&quot;server&quot; ClientIDMode=&quot;Predictable&quot; ControlToValidate=&quot;dateTextBox&quot; ErrorMessage=&quot;Campo obrigatório&quot; Display=&quot;None&quot; Enabled=&quot;false&quot; /&gt;
&lt;asp:ValidatorCalloutExtender ID=&quot;ValCallExtRequired&quot; TargetControlID=&quot;required&quot; runat=&quot;server&quot; ClientIDMode=&quot;Predictable&quot; HighlightCssClass=&quot;ReqWarn&quot; /&gt;
&lt;asp:CustomValidator runat=&quot;server&quot; ID=&quot;CustomVal&quot; ControlToValidate=&quot;dateTextBox&quot; ClientValidationFunction=&quot;validateDate&quot; Display=&quot;None&quot; EnableClientScript=&quot;true&quot; ErrorMessage=&quot;Data inválida.&quot; ClientIDMode=&quot;Predictable&quot; HighlightCssClass=&quot;ReqWarn&quot; /&gt;
&lt;asp:ValidatorCalloutExtender ID=&quot;ValidatorCalloutExtender1&quot; TargetControlID=&quot;CustomVal&quot; runat=&quot;server&quot; ClientIDMode=&quot;Predictable&quot; HighlightCssClass=&quot;ReqWarn&quot; /&gt;
</pre>
<p>DateBox.ascx.cs</p>
<pre class="brush: csharp">
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace DatePickerTest.Controls
{
[ValidationProperty(&quot;Date&quot;)]
public partial class DateBox : UserControl
{
protected void Page_Init(object sender, EventArgs e)
{
sm.Scripts.Add(new ScriptReference(&quot;~/scripts/jquery-1.3.2.js&quot;));
sm.Scripts.Add(new ScriptReference(&quot;~/scripts/jquery.ui.core.js&quot;));
sm.Scripts.Add(new ScriptReference(&quot;~/scripts/jquery.ui.datepicker.js&quot;));
sm.Scripts.Add(new ScriptReference(&quot;~/scripts/util.js&quot;));
}

protected void Page_PreRender(object sender, EventArgs e)
{
string script = @&quot;$(function () {
$(&#039;#&quot; + dateTextBox.ClientID + @&quot;&#039;).datepicker({
showButtonPanel: true,
currentText: &#039;Hoje&#039;,
duration: 100,
dateFormat: &#039;dd/mm/yy&#039;,
showOn: &#039;button&#039;,
buttonImage: &#039;/mapfrecap/img/calendario.gif&#039;,
buttonImageOnly: true,
dayNames: [&#039;Domingo&#039;, &#039;Segunda&#039;, &#039;Terça&#039;, &#039;Quarta&#039;, &#039;Quinta&#039;, &#039;Sexta&#039;, &#039;Sábado&#039;, &#039;Domingo&#039;],
dayNamesMin: [&#039;D&#039;, &#039;S&#039;, &#039;T&#039;, &#039;Q&#039;, &#039;Q&#039;, &#039;S&#039;, &#039;S&#039;, &#039;D&#039;],
dayNamesShort: [&#039;Dom&#039;, &#039;Seg&#039;, &#039;Ter&#039;, &#039;Qua&#039;, &#039;Qui&#039;, &#039;Sex&#039;, &#039;Sáb&#039;, &#039;Dom&#039;],
monthNames: [&#039;Janeiro&#039;, &#039;Fevereiro&#039;, &#039;Março&#039;, &#039;Abril&#039;, &#039;Maio&#039;, &#039;Junho&#039;, &#039;Julho&#039;, &#039;Agosto&#039;, &#039;Setembro&#039;, &#039;Outubro&#039;, &#039;Novembro&#039;, &#039;Dezembro&#039;],
monthNamesShort: [&#039;Jan&#039;, &#039;Fev&#039;, &#039;Mar&#039;, &#039;Abr&#039;, &#039;Mai&#039;, &#039;Jun&#039;, &#039;Jul&#039;, &#039;Ago&#039;, &#039;Set&#039;, &#039;Out&#039;, &#039;Nov&#039;, &#039;Dez&#039;],
nextText: &#039;Próximo&#039;,
prevText: &#039;Anterior&#039;,
closeText: &#039;Fechar&#039;,
buttonText: &#039;Calendário&#039;,
showOtherMonths: true,
selectOtherMonths: true
});&quot;;
if (!Enabled)
script += &quot;$(&#039;#&quot; + dateTextBox.ClientID + @&quot;&#039;).datepicker(&#039;disable&#039;);&quot;;
script += @&quot;});&quot;;

ScriptManager.RegisterStartupScript(this, typeof(DateBox), &quot;initDateBox&quot; + dateTextBox.ClientID, script, true);
}
public DateTime? Date
{
get
{
return dateTextBox.Text != string.Empty ? (DateTime?)DateTime.Parse(dateTextBox.Text) : null;
}
set
{
dateTextBox.Text = value.Value.ToString(&quot;d&quot;);
}
}

public String ValidationGroup
{
get { return required.ValidationGroup; }
set { required.ValidationGroup = value; CustomVal.ValidationGroup = value; }
}

public bool Required
{
get { return required.Enabled; }
set { required.Enabled = value; }
}

public bool Enabled { get { return dateTextBox.Enabled; } set { dateTextBox.Enabled = value; } }
public bool ReadOnly { get { return dateTextBox.ReadOnly; } set { dateTextBox.ReadOnly = value; } }

public event EventHandler TextChanged { add { dateTextBox.TextChanged += value; } remove { dateTextBox.TextChanged -= value; } }
public bool AutoPostBack
{
get { return dateTextBox.AutoPostBack; }
set { dateTextBox.AutoPostBack = value; }
}

public override string ClientID
{
get
{
return dateTextBox.ClientID;
}
}
}
}
</pre>
<p>Até aqui o componente está finalizado, com algumas particularidades que eu mesmo implementei, como uma validação de o campo será obrigatório ou nao (Required), se o componente estará ativo ou nao (Enabled), propriedade de AutoPostBack, ValidationGroup, etc. Caso surja dúvidas sobre o código &#8220;[ValidationProperty("Date")]&#8221; explico aqui&#8230; Esse código é para &#8216;expor&#8217; o valor de Date (que é onde fica armazenado o valor selecionado pelo calendário) à pagina que irá utiliza-lo, podendo assim fazer validações com <a href="http://msdn.microsoft.com/en-us/library/db330ayw.aspx" target="_blank">CompareValidator</a>.</p>
<p>No nosso DateBox.ascx temos um <em>ClientValidationFunction=&#8221;validateDate&#8221;, </em>essa é a função javascript que eu fiz para validar a data do nosso calendário, é aqui que contornamos o problema de horario de verão, dentro da nossa pasta &#8216;<em>scripts&#8217; </em>teremos um arquivo chamado &#8216;<em>util.js&#8217;</em> com o seguinte conteúdo:</p>
<p>util.js</p>
<pre class="brush: js">
function validateDate(oSrc, args) {
var iDay, iMonth, iYear;
var arrValues;
arrValues = args.Value.split(&quot;/&quot;);
iDay = arrValues[0];
iMonth = arrValues[1];
iYear = arrValues[2];

var testDate = new Date(iYear, iMonth - 1, iDay, 4, 0, 0, 0);
if ((testDate.getDate() != iDay) ||
(testDate.getMonth() != iMonth - 1) ||
(testDate.getFullYear() != iYear)) {
args.IsValid = false;
return;
}

return true;
}
</pre>
<p>O que nos importa nessa validação é parte em negrito =&gt; <em>var testDate = new Date(iYear, iMonth &#8211; 1, iDay,<strong> 4, 0, 0, 0</strong>);<br />
</em>Ali estamos adicionando 4 horas à data selecionada, eliminando assim o &#8220;limbo&#8221; da meia noite não existente, como só queremos mesmo é a Data e nao o horário, isso resolve nosso problema. Tudo isso porque não conseguimos sobrescrever a função de getDate() do CalendarExtender.</p>
<p>Agora um pequeno exemplo do como utiliza-lo:</p>
<p>Default.aspx</p>
<pre class="brush: xml">
&lt;%@ Page Language=&quot;C#&quot; AutoEventWireup=&quot;true&quot; CodeFile=&quot;Default.aspx.cs&quot; Inherits=&quot;DatePickerTest.Default&quot; %&gt;

&lt;%@ Register Src=&quot;~/Controls/DateBox.ascx&quot; TagName=&quot;DateBox&quot; TagPrefix=&quot;uc&quot; %&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head runat=&quot;server&quot;&gt;
&lt;title&gt;&lt;/title&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;~/styles/jquery-ui-1.7.3.custom.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; runat=&quot;server&quot; /&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;form id=&quot;form1&quot; runat=&quot;server&quot;&gt;
&lt;asp:ScriptManager ID=&quot;sm&quot; runat=&quot;server&quot; /&gt;
&lt;div&gt;
&lt;uc:DateBox runat=&quot;server&quot; ID=&quot;edtData&quot; /&gt;
&lt;/div&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Simple não? Só precisamos fazer 3 coisas:</p>
<p>1 &#8211; Registrar o componente =&gt; &lt;%@ Register Src=&#8221;~/Controls/DateBox.ascx&#8221; TagName=&#8221;DateBox&#8221; TagPrefix=&#8221;uc&#8221; %&gt;<br />
2 &#8211; Adicionar o CSS (pelo motivo dito na introdução do post)<br />
3 &#8211; Adicionar o componente onde você precisar =&gt; &lt;uc:DateBox runat=&#8221;server&#8221; ID=&#8221;edtData&#8221; /&gt;</p>
<p>Para obter o valor pelo seu CS é só utilizar <em>&#8216;nomeComponente.Date&#8217; </em>como é um <em>nullable </em>em alguns casos você pode precisar utilizar um <em>.Value</em> (<em>nomeComponente.Date).</em><br />
Galera, espero que todos tenham entendido, caso contrario só comentar dizendo qual linha não entendeu que eu tiro as dúvidas, e em casos de erro especificar exatamente o erro, com linha e o código da linha para que fique mais facil de ajudar. Abaixo o projeto com nosso DateBox funcionando pra quem quiser, não coloquei online pois minha hospedagem é PHP =/</p>
<p><a href="http://www.leandrobarral.com.br/arquivos-blog/DatePickerTest.rar">Baixar projeto de exemplo</a></p>
<p>Grande abraço, até a próxima.</p>
<br /><div><img src="http://blog.leandrobarral.com.br/wp-content/plugins/gd-star-rating/gfx.php?value=5.0" /></div><div>Rating: 5.0/<strong>5</strong> (3 votes cast)</div><br /><div class="tweetthis" style="text-align:left;"><p> <a target="_blank" class="tt" href="http://twitter.com/home/?status=Tutorial%3A+Solu%C3%A7%C3%A3o+para+%E2%80%98bug%E2%80%99+de+Hor%C3%A1rio+de+Ver%C3%A3o+%28Daylight+Saving%29+-+http%3A%2F%2Ftinyurl.com%2F35ygspn" title="Post to Twitter"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro4.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://twitter.com/home/?status=Tutorial%3A+Solu%C3%A7%C3%A3o+para+%E2%80%98bug%E2%80%99+de+Hor%C3%A1rio+de+Ver%C3%A3o+%28Daylight+Saving%29+-+http%3A%2F%2Ftinyurl.com%2F35ygspn" title="Post to Twitter">.</a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.leandrobarral.com.br/2010/11/01/solucao-para-bug-de-horario-de-verao-daylight-saving/&amp;title=Solu%C3%A7%C3%A3o+para+%E2%80%98bug%E2%80%99+de+Hor%C3%A1rio+de+Ver%C3%A3o+%28Daylight+Saving%29" title="Post to Delicious"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/delicious/tt-delicious-micro4.png" alt="Post to Delicious" /></a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.leandrobarral.com.br/2010/11/01/solucao-para-bug-de-horario-de-verao-daylight-saving/&amp;title=Solu%C3%A7%C3%A3o+para+%E2%80%98bug%E2%80%99+de+Hor%C3%A1rio+de+Ver%C3%A3o+%28Daylight+Saving%29" title="Post to Delicious">.</a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.leandrobarral.com.br/2010/11/01/solucao-para-bug-de-horario-de-verao-daylight-saving/&amp;title=Solu%C3%A7%C3%A3o+para+%E2%80%98bug%E2%80%99+de+Hor%C3%A1rio+de+Ver%C3%A3o+%28Daylight+Saving%29" title="Post to Digg"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/digg/tt-digg-micro4.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.leandrobarral.com.br/2010/11/01/solucao-para-bug-de-horario-de-verao-daylight-saving/&amp;title=Solu%C3%A7%C3%A3o+para+%E2%80%98bug%E2%80%99+de+Hor%C3%A1rio+de+Ver%C3%A3o+%28Daylight+Saving%29" title="Post to Digg">.</a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.leandrobarral.com.br/2010/11/01/solucao-para-bug-de-horario-de-verao-daylight-saving/&amp;t=Solu%C3%A7%C3%A3o+para+%E2%80%98bug%E2%80%99+de+Hor%C3%A1rio+de+Ver%C3%A3o+%28Daylight+Saving%29" title="Post to Facebook"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-micro4.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.leandrobarral.com.br/2010/11/01/solucao-para-bug-de-horario-de-verao-daylight-saving/&amp;t=Solu%C3%A7%C3%A3o+para+%E2%80%98bug%E2%80%99+de+Hor%C3%A1rio+de+Ver%C3%A3o+%28Daylight+Saving%29" title="Post to Facebook">.</a> <a target="_blank" class="tt" href="http://www.myspace.com/Modules/PostTo/Pages/?l=3&amp;u=http://blog.leandrobarral.com.br/2010/11/01/solucao-para-bug-de-horario-de-verao-daylight-saving/&amp;t=Solu%C3%A7%C3%A3o+para+%E2%80%98bug%E2%80%99+de+Hor%C3%A1rio+de+Ver%C3%A3o+%28Daylight+Saving%29" title="Post to MySpace"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/myspace/tt-myspace-micro4.png" alt="Post to MySpace" /></a> <a target="_blank" class="tt" href="http://www.myspace.com/Modules/PostTo/Pages/?l=3&amp;u=http://blog.leandrobarral.com.br/2010/11/01/solucao-para-bug-de-horario-de-verao-daylight-saving/&amp;t=Solu%C3%A7%C3%A3o+para+%E2%80%98bug%E2%80%99+de+Hor%C3%A1rio+de+Ver%C3%A3o+%28Daylight+Saving%29" title="Post to MySpace">.</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://blog.leandrobarral.com.br/2010/11/01/solucao-para-bug-de-horario-de-verao-daylight-saving/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IETester &#8211; Vários Engines do IE num único programa</title>
		<link>http://blog.leandrobarral.com.br/2009/11/25/ietester-varios-engines-do-ie-num-unico-programa/</link>
		<comments>http://blog.leandrobarral.com.br/2009/11/25/ietester-varios-engines-do-ie-num-unico-programa/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 13:59:47 +0000</pubDate>
		<dc:creator>Leandro Barral</dc:creator>
				<category><![CDATA[Programas / IDE's]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[ietester]]></category>
		<category><![CDATA[programas]]></category>

		<guid isPermaLink="false">http://blog.leandrobarral.com.br/?p=63</guid>
		<description><![CDATA[Galera, hoje venho pra apresentar pra quem não conhece um programa que tenho utilizado bastante aqui na empresa, e já cheguei até a mostrá-lo em reuniões para que seja adotado por outros desenvolvedores, nome dele é IETester, atualmente está na versão 0.4.2 e possui leves 25mb, nele é emulado os engines do IE 5.5 ao [...]<br /><div><img src="http://blog.leandrobarral.com.br/wp-content/plugins/gd-star-rating/gfx.php?value=5.0" /></div><div>Rating: 5.0/<strong>5</strong> (2 votes cast)</div><br />]]></description>
			<content:encoded><![CDATA[<p>Galera, hoje venho pra apresentar pra quem não conhece um programa que tenho utilizado bastante aqui na empresa, e já cheguei até a mostrá-lo em reuniões para que seja adotado por outros desenvolvedores, nome dele é <a title="IETester" href="http://www.my-debugbar.com/wiki/IETester/HomePage" target="_blank">IETester</a>, atualmente está na versão 0.4.2 e possui <span style="text-decoration: line-through;">leves</span> 25mb, nele é emulado os engines do IE 5.5 ao 8.0, só lembrando que deve-se ter no minimo a versão 7 instalada para que a emulação da versão 8.0 seja feita sem nenhum problema.<br />
O programa pode ser baixado pelo link já mencionado. O programa é &#8220;<em>easy-to-use</em>&#8220;, sendo assim qualquer dúvida, só postar um comentário.</p>
<div class="wp-caption alignnone" style="width: 537px"><img title="Screenshot do IETester" src="http://www.my-debugbar.com/wiki/uploads/IETester/ietester-0.3.png" alt="Screenshot do IETester" width="527" height="305" /><p class="wp-caption-text">Screenshot do IETester</p></div>
<p>Espero que aproveitem!</p>
<br /><div><img src="http://blog.leandrobarral.com.br/wp-content/plugins/gd-star-rating/gfx.php?value=5.0" /></div><div>Rating: 5.0/<strong>5</strong> (2 votes cast)</div><br /><div class="tweetthis" style="text-align:left;"><p> <a target="_blank" class="tt" href="http://twitter.com/home/?status=Tutorial%3A+IETester+%E2%80%93+V%C3%A1rios+Engines+do+IE+num+%C3%BAnico+programa+-+http%3A%2F%2Ftinyurl.com%2Fyfzn6xt" title="Post to Twitter"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro4.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://twitter.com/home/?status=Tutorial%3A+IETester+%E2%80%93+V%C3%A1rios+Engines+do+IE+num+%C3%BAnico+programa+-+http%3A%2F%2Ftinyurl.com%2Fyfzn6xt" title="Post to Twitter">.</a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.leandrobarral.com.br/2009/11/25/ietester-varios-engines-do-ie-num-unico-programa/&amp;title=IETester+%E2%80%93+V%C3%A1rios+Engines+do+IE+num+%C3%BAnico+programa" title="Post to Delicious"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/delicious/tt-delicious-micro4.png" alt="Post to Delicious" /></a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.leandrobarral.com.br/2009/11/25/ietester-varios-engines-do-ie-num-unico-programa/&amp;title=IETester+%E2%80%93+V%C3%A1rios+Engines+do+IE+num+%C3%BAnico+programa" title="Post to Delicious">.</a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.leandrobarral.com.br/2009/11/25/ietester-varios-engines-do-ie-num-unico-programa/&amp;title=IETester+%E2%80%93+V%C3%A1rios+Engines+do+IE+num+%C3%BAnico+programa" title="Post to Digg"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/digg/tt-digg-micro4.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.leandrobarral.com.br/2009/11/25/ietester-varios-engines-do-ie-num-unico-programa/&amp;title=IETester+%E2%80%93+V%C3%A1rios+Engines+do+IE+num+%C3%BAnico+programa" title="Post to Digg">.</a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.leandrobarral.com.br/2009/11/25/ietester-varios-engines-do-ie-num-unico-programa/&amp;t=IETester+%E2%80%93+V%C3%A1rios+Engines+do+IE+num+%C3%BAnico+programa" title="Post to Facebook"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-micro4.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.leandrobarral.com.br/2009/11/25/ietester-varios-engines-do-ie-num-unico-programa/&amp;t=IETester+%E2%80%93+V%C3%A1rios+Engines+do+IE+num+%C3%BAnico+programa" title="Post to Facebook">.</a> <a target="_blank" class="tt" href="http://www.myspace.com/Modules/PostTo/Pages/?l=3&amp;u=http://blog.leandrobarral.com.br/2009/11/25/ietester-varios-engines-do-ie-num-unico-programa/&amp;t=IETester+%E2%80%93+V%C3%A1rios+Engines+do+IE+num+%C3%BAnico+programa" title="Post to MySpace"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/myspace/tt-myspace-micro4.png" alt="Post to MySpace" /></a> <a target="_blank" class="tt" href="http://www.myspace.com/Modules/PostTo/Pages/?l=3&amp;u=http://blog.leandrobarral.com.br/2009/11/25/ietester-varios-engines-do-ie-num-unico-programa/&amp;t=IETester+%E2%80%93+V%C3%A1rios+Engines+do+IE+num+%C3%BAnico+programa" title="Post to MySpace">.</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://blog.leandrobarral.com.br/2009/11/25/ietester-varios-engines-do-ie-num-unico-programa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend &#8211; Trabalhando com Módulos</title>
		<link>http://blog.leandrobarral.com.br/2009/10/28/zend-trabalhando-com-modulos/</link>
		<comments>http://blog.leandrobarral.com.br/2009/10/28/zend-trabalhando-com-modulos/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 14:13:01 +0000</pubDate>
		<dc:creator>Leandro Barral</dc:creator>
				<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[módulos]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://blog.leandrobarral.com.br/?p=58</guid>
		<description><![CDATA[Ao som de: Neil Young &#8211; Down by the river ♫ E aí pessoal! Hoje vou explicar como trabalhar com modulos no Zend. O que consiste o termo &#8220;modulos&#8221;, seria basicamente, você criar um sistema que terá vários &#8216;sub sistemas&#8217;, como por exemplo um CMS (ex: Joomla, PhpNuke, etc), você tem um sistema principal de [...]<br /><div><img src="http://blog.leandrobarral.com.br/wp-content/plugins/gd-star-rating/gfx.php?value=0.0" /></div><div>Rating: 0.0/<strong>5</strong> (0 votes cast)</div><br />]]></description>
			<content:encoded><![CDATA[<div class="mceTemp">Ao som de: Neil Young &#8211; Down by the river ♫<br />
E aí pessoal!<br />
Hoje vou explicar como trabalhar com modulos no Zend.<br />
O que consiste o termo &#8220;modulos&#8221;, seria basicamente, você criar um sistema que terá vários &#8216;sub sistemas&#8217;, como por exemplo um CMS (ex: Joomla, PhpNuke, etc), você tem um sistema principal de gerenciamento, onde apenas administradores terão acesso, e varios outros sistemas em que o usuário ou redatores do site por exemplo, usufruirá, como área de downloads, artigos, fotos, e por aí vai.<br />
Ao invés de criar sistemas individuais para trabalhar, gerenciar e apresentar cada um deles, é utilizado a mesma estrutura/sistema para trabalhar com todos, apenas adicionando e removendo determinados modulos.<br />
A &#8216;configuração&#8217; no zend pra isso é simples, no arquivo de boostrap (o index.php, onde contém todas as configurações de caminho do Framework, visoes, formato de data e tudo mais, assunto já abordado em outro artigo aqui do blog &#8216;Zend &#8211; Início&#8217;.) você deve localizar a linha que se inicia com:</p>
<pre class="brush: php">
$frontController-&gt;setControllerDirectory.....
</pre>
</div>
<p>E modificar para por exemplo:</p>
<pre class="brush: php">
$frontController-&gt;setControllerDirectory(&#039;./application/noticias/controllers&#039;);

$frontController-&gt;addControllerDirectory(&#039;./application/admin/controllers&#039;, &#039;admin&#039;);

$frontController-&gt;addControllerDirectory(&#039;./application/fotos/controllers&#039;, &#039;fotos&#039;);
</pre>
<p>Qual a diferença entre os dois códigos? Pois bem, &#8220;setControllerDirectory&#8221; diz ao Zend qual o controlador (módulo) padrão, aquele que será exibido caso não seja especificado nenhum no link; e o &#8220;addControllerDirectory&#8221; diz ao Zend os módulos adicionais, com o caminho dele no sistema e um nome/alias para ele que será utilizado no link para acesso.<br />
No caso ao acessar a raiz do sistema www.site.com ele acessa por padrão o módulo noticias, sem ser necessário adicionar o /noticias no link, e para acessar os outros apenas entrar em www.site.com/nome-alias (admin ou fotos como no exemplo).</p>
<p>Além dessa configuração no bootstrap precisamos modificar um pouco a estrutura de pastas do projeto, como segue a imagem abaixo:</p>
<div>
<dl id="attachment_59" style="width: 169px;"><img title="estrutura-arquivos-modulos-zend" src="http://img175.imageshack.us/img175/9208/estruturaarquivosmodulo.jpg" alt="Estrutura de pastas" width="159" height="272" /> Estrutura de pastas</dl>
</div>
<p>Na pasta application, estarão todos os módulos e dentro de cada um a estrutura padrão para trabalhar com o Zend.</p>
<p>Espero que todos tenham gostado e qualquer dúvida só postar um comentário que eu ajudo com certeza a resolver.</p>
<p>Abraços.</p>
<br /><div><img src="http://blog.leandrobarral.com.br/wp-content/plugins/gd-star-rating/gfx.php?value=0.0" /></div><div>Rating: 0.0/<strong>5</strong> (0 votes cast)</div><br /><div class="tweetthis" style="text-align:left;"><p> <a target="_blank" class="tt" href="http://twitter.com/home/?status=Tutorial%3A+Zend+%E2%80%93+Trabalhando+com+M%C3%B3dulos+-+http%3A%2F%2Ftinyurl.com%2Fygrcoyj" title="Post to Twitter"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro4.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://twitter.com/home/?status=Tutorial%3A+Zend+%E2%80%93+Trabalhando+com+M%C3%B3dulos+-+http%3A%2F%2Ftinyurl.com%2Fygrcoyj" title="Post to Twitter">.</a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.leandrobarral.com.br/2009/10/28/zend-trabalhando-com-modulos/&amp;title=Zend+%E2%80%93+Trabalhando+com+M%C3%B3dulos" title="Post to Delicious"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/delicious/tt-delicious-micro4.png" alt="Post to Delicious" /></a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.leandrobarral.com.br/2009/10/28/zend-trabalhando-com-modulos/&amp;title=Zend+%E2%80%93+Trabalhando+com+M%C3%B3dulos" title="Post to Delicious">.</a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.leandrobarral.com.br/2009/10/28/zend-trabalhando-com-modulos/&amp;title=Zend+%E2%80%93+Trabalhando+com+M%C3%B3dulos" title="Post to Digg"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/digg/tt-digg-micro4.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.leandrobarral.com.br/2009/10/28/zend-trabalhando-com-modulos/&amp;title=Zend+%E2%80%93+Trabalhando+com+M%C3%B3dulos" title="Post to Digg">.</a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.leandrobarral.com.br/2009/10/28/zend-trabalhando-com-modulos/&amp;t=Zend+%E2%80%93+Trabalhando+com+M%C3%B3dulos" title="Post to Facebook"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-micro4.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.leandrobarral.com.br/2009/10/28/zend-trabalhando-com-modulos/&amp;t=Zend+%E2%80%93+Trabalhando+com+M%C3%B3dulos" title="Post to Facebook">.</a> <a target="_blank" class="tt" href="http://www.myspace.com/Modules/PostTo/Pages/?l=3&amp;u=http://blog.leandrobarral.com.br/2009/10/28/zend-trabalhando-com-modulos/&amp;t=Zend+%E2%80%93+Trabalhando+com+M%C3%B3dulos" title="Post to MySpace"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/myspace/tt-myspace-micro4.png" alt="Post to MySpace" /></a> <a target="_blank" class="tt" href="http://www.myspace.com/Modules/PostTo/Pages/?l=3&amp;u=http://blog.leandrobarral.com.br/2009/10/28/zend-trabalhando-com-modulos/&amp;t=Zend+%E2%80%93+Trabalhando+com+M%C3%B3dulos" title="Post to MySpace">.</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://blog.leandrobarral.com.br/2009/10/28/zend-trabalhando-com-modulos/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ordenando Tabelas com jQuery</title>
		<link>http://blog.leandrobarral.com.br/2009/10/12/ordenando-tabelas-com-jquery/</link>
		<comments>http://blog.leandrobarral.com.br/2009/10/12/ordenando-tabelas-com-jquery/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 02:31:59 +0000</pubDate>
		<dc:creator>Leandro Barral</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ordenação]]></category>
		<category><![CDATA[tabela]]></category>

		<guid isPermaLink="false">http://blog.leandrobarral.com.br/?p=51</guid>
		<description><![CDATA[Venho hoje quase fim de feriado postar um plugin que achei muito interessante, e fácil de usar, diga-se de passagem. Se chama TableSorter, ele nada mais faz do que ordenar sua tabela conforme quiser, o mais legal é que ele suporta paginação e tem como ordenar mais de uma coluna ao mesmo tempo, aqui vou [...]<br /><div><img src="http://blog.leandrobarral.com.br/wp-content/plugins/gd-star-rating/gfx.php?value=0.0" /></div><div>Rating: 0.0/<strong>5</strong> (0 votes cast)</div><br />]]></description>
			<content:encoded><![CDATA[<p>Venho hoje <span style="text-decoration: line-through;">quase fim de feriado</span> postar um plugin que achei muito interessante, e fácil de usar, diga-se de passagem. Se chama <a href="http://tablesorter.com" target="_blank">TableSorter</a>, ele nada mais faz do que ordenar sua tabela conforme quiser, o mais legal é que ele suporta paginação e tem como ordenar mais de uma coluna ao mesmo tempo, aqui vou postar o básico e pra quem tiver dificuldade em entender a <a href="http://tablesorter.com/docs" target="_blank">documentação</a> (em inglês) posta um comentário que eu coloco exemplos mais &#8220;bem elaborados&#8221;, pois bem, tenha certeza que tem o jQuery linkado em sua páginae que tenha baixado a <a href="http://tablesorter.com/docs/#Download" target="_blank">versão mais recente do plugin</a> com um dos &#8220;temas&#8221; disponiveis (azul e verde). Linkado todos os arquivos (jquery, tablesorter e os css do tema) vamos para os códigos.<br />
Vamos tomar base em uma tabela com thead e tbody (padrão w3c para criação de tabelas) com o seguinte conteúdo:</p>
<pre class="brush: html">&lt;table id=&quot;TabelaOrdenada&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Primeiro Nome&lt;/th&gt;
&lt;th&gt;Último Nome&lt;/th&gt;
&lt;th&gt;Email&lt;/th&gt;
&lt;th&gt;Profissão&lt;/th&gt;
&lt;th&gt;Site&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Leandro&lt;/td&gt;
&lt;td&gt;Barral&lt;/td&gt;
&lt;td&gt;webmaster@leandrobarral.com.br&lt;/td&gt;
&lt;td&gt;Controlador Operacional&lt;/td&gt;
&lt;td&gt;http://blog.leandrobarral.com.br&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;José&lt;/td&gt;
&lt;td&gt;Benedito&lt;/td&gt;
&lt;td&gt;jbenedito@yahoo.com.br&lt;/td&gt;
&lt;td&gt;Auxiliar Geral&lt;/td&gt;
&lt;td&gt;N/D&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maria&lt;/td&gt;
&lt;td&gt;João&lt;/td&gt;
&lt;td&gt;maju@hotmail.com&lt;/td&gt;
&lt;td&gt;Dona de Casa&lt;/td&gt;
&lt;td&gt;http://www.orkut.com/meu-id-do-orkut&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Karine&lt;/td&gt;
&lt;td&gt;Natali&lt;/td&gt;
&lt;td&gt;ka.natali@gmail.com&lt;/td&gt;
&lt;td&gt;Auxiliar de Classe&lt;/td&gt;
&lt;td&gt;http://www.saborcereja.co.cc&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</pre>
<p>Até aqui apenas uma tabela, com os nomes fora de ordem e tal, agora vem o plugin que nada mais é que:</p>
<pre class="brush: js">$(document).ready(function() // quando estiver carregado faça...
{
$(&quot;#TabelaOrdenada&quot;).tablesorter(); // inicia o plugin, e... só!
}
)</pre>
<p>Somente isso! Se quiserem ordenar por mais de um parametro segure shift e clique nas colunas desejadas. O plugin aceita <span style="text-decoration: line-through;">vários</span> muitos outros parametros, como iniciar com uma ou algumas colunas ordenadas, pegar resultados via requisições ajax e colocar na tabela, habilitar ordenar somente as colunas que quiser, etc&#8230;<br />
Espero que tenham gostado, qualquer dúvida só postar um comentário que ajudarei com certeza.</p>
<p>Links úteis:<br />
<a href="http://plugins.jquery.com/project/tablesorter" target="_blank">Link Oficial do Projeto</a><br />
<a href="http://tablesorter.com" target="_blank">Site do Criador</a><br />
<a href="http://tablesorter.com/docs/#Demo" target="_blank">Demonstrações Online</a></p>
<p>Até a próxima! E tenham todos um ótimo final de feriado!</p>
<br /><div><img src="http://blog.leandrobarral.com.br/wp-content/plugins/gd-star-rating/gfx.php?value=0.0" /></div><div>Rating: 0.0/<strong>5</strong> (0 votes cast)</div><br /><div class="tweetthis" style="text-align:left;"><p> <a target="_blank" class="tt" href="http://twitter.com/home/?status=Tutorial%3A+Ordenando+Tabelas+com+jQuery+-+http%3A%2F%2Ftinyurl.com%2Fyfbhvys" title="Post to Twitter"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro4.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://twitter.com/home/?status=Tutorial%3A+Ordenando+Tabelas+com+jQuery+-+http%3A%2F%2Ftinyurl.com%2Fyfbhvys" title="Post to Twitter">.</a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.leandrobarral.com.br/2009/10/12/ordenando-tabelas-com-jquery/&amp;title=Ordenando+Tabelas+com+jQuery" title="Post to Delicious"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/delicious/tt-delicious-micro4.png" alt="Post to Delicious" /></a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.leandrobarral.com.br/2009/10/12/ordenando-tabelas-com-jquery/&amp;title=Ordenando+Tabelas+com+jQuery" title="Post to Delicious">.</a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.leandrobarral.com.br/2009/10/12/ordenando-tabelas-com-jquery/&amp;title=Ordenando+Tabelas+com+jQuery" title="Post to Digg"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/digg/tt-digg-micro4.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.leandrobarral.com.br/2009/10/12/ordenando-tabelas-com-jquery/&amp;title=Ordenando+Tabelas+com+jQuery" title="Post to Digg">.</a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.leandrobarral.com.br/2009/10/12/ordenando-tabelas-com-jquery/&amp;t=Ordenando+Tabelas+com+jQuery" title="Post to Facebook"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-micro4.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.leandrobarral.com.br/2009/10/12/ordenando-tabelas-com-jquery/&amp;t=Ordenando+Tabelas+com+jQuery" title="Post to Facebook">.</a> <a target="_blank" class="tt" href="http://www.myspace.com/Modules/PostTo/Pages/?l=3&amp;u=http://blog.leandrobarral.com.br/2009/10/12/ordenando-tabelas-com-jquery/&amp;t=Ordenando+Tabelas+com+jQuery" title="Post to MySpace"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/myspace/tt-myspace-micro4.png" alt="Post to MySpace" /></a> <a target="_blank" class="tt" href="http://www.myspace.com/Modules/PostTo/Pages/?l=3&amp;u=http://blog.leandrobarral.com.br/2009/10/12/ordenando-tabelas-com-jquery/&amp;t=Ordenando+Tabelas+com+jQuery" title="Post to MySpace">.</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://blog.leandrobarral.com.br/2009/10/12/ordenando-tabelas-com-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fases de Desenvolvimento</title>
		<link>http://blog.leandrobarral.com.br/2009/10/08/fases-de-desenvolvimento/</link>
		<comments>http://blog.leandrobarral.com.br/2009/10/08/fases-de-desenvolvimento/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 11:38:50 +0000</pubDate>
		<dc:creator>Leandro Barral</dc:creator>
				<category><![CDATA[Curiosidades]]></category>

		<guid isPermaLink="false">http://blog.leandrobarral.com.br/?p=47</guid>
		<description><![CDATA[Galera eu freqüento alguns fóruns sobre Programação e alguns de Distribuições Linux, e vejo bastantes posts sobre o que é e como denominar as fases de um projeto. Pra falar a verdade não existe um padrão ou regras oficiais que definem as nomenclaturas, porém, tem alguns padrões &#8220;não-oficiais&#8221; que vou postar aqui para vocês, o [...]<br /><div><img src="http://blog.leandrobarral.com.br/wp-content/plugins/gd-star-rating/gfx.php?value=0.0" /></div><div>Rating: 0.0/<strong>5</strong> (0 votes cast)</div><br />]]></description>
			<content:encoded><![CDATA[<p>Galera eu freqüento alguns fóruns sobre Programação e alguns de Distribuições Linux, e vejo bastantes posts sobre o que é e como denominar as fases de um projeto.<br />
Pra falar a verdade não existe um padrão ou regras oficiais que definem as nomenclaturas, porém, tem alguns padrões &#8220;não-oficiais&#8221; que vou postar aqui para vocês, o que eu sei e o que tenho visto que é mais utilizado.</p>
<p>É importante sabermos que uma distribuição (release) possui um ciclo de vida. Onde, cada um é responsável por descrever a estabilidade do produto e também de mostrar quanto desenvolvimento ainda será necessário antes de entregar a versão final.<br />
O ciclo de vida é, em geral, mais ou menos assim:<br />
<strong>- pre-alpha </strong>=&gt; é a versão que fica restrita somente à organização/equipe que desenvolve o software, não tem todas as funcionalidades ainda ou está em fase de estruturamento.<br />
<strong>- alpha </strong>=&gt; é a versão que está em construção e que foi disponibilizada para a área de homologação, que é geralmente interna à comunidade ou organização que desenvolve o software.<strong><br />
- beta</strong> =&gt; é a primeira versão lançada fora da organização ou da comunidade que desenvolve o produto, para efeitos de avaliação ou de testes de caixa preta.<strong><br />
- release candidate</strong> =&gt; refere-se a liberação de uma versão com potencial para se tornar o produto final. Nesta fase, o produto apresenta todas as funcionalidades concebidas sem a presença de bugs impeditivos;<strong><br />
- final ou gold </strong>=&gt; é a versão final de um determinado produto e normalmente é quase idêntica à <strong>release candidate</strong>, só que acrescida apenas da correção de pequenos bugs identificados nos testes finais. É considerada muito estável e relativamente livre de bugs, possuindo assim uma qualidade adequada para ampla distribuição e utilização por parte dos usuários finais.</p>
<p>Ok Leandro mas e aqueles números de versão tipo 1.2.1, 0.1.7, ou como exemplo mais conhecido o Firefox que atualmente está na versão 3.5.3? Como é feito isso?</p>
<div>Então, para identificarmos unicamente uma distribuição utilizamos um esquema numérico(sequencial e incremental). Este esquema geralmente é composto por três números separados por pontos.</div>
<div>Para compreender melhor, dê uma olhada no esquema abaixo:</div>
<div><strong>X</strong>.x.x -&gt; Major Release -&gt; Possui novas funcionalidades significativas<br />
x.<strong>X</strong>.x -&gt; Minor Release -&gt; Melhorias em cima da Major Release<br />
x.x.<strong>X</strong> -&gt; Revision Release -&gt; Correções de Bugs</div>
<div>Bom pessoal espero ter tirado a dúvida de vocês sobre esses termos. Qualquer outra dúvida só postar um comentário.</div>
<div>Até a próxima.</div>
<br /><div><img src="http://blog.leandrobarral.com.br/wp-content/plugins/gd-star-rating/gfx.php?value=0.0" /></div><div>Rating: 0.0/<strong>5</strong> (0 votes cast)</div><br /><div class="tweetthis" style="text-align:left;"><p> <a target="_blank" class="tt" href="http://twitter.com/home/?status=Tutorial%3A+Fases+de+Desenvolvimento+-+http%3A%2F%2Ftinyurl.com%2Fye9kdwn" title="Post to Twitter"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro4.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://twitter.com/home/?status=Tutorial%3A+Fases+de+Desenvolvimento+-+http%3A%2F%2Ftinyurl.com%2Fye9kdwn" title="Post to Twitter">.</a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.leandrobarral.com.br/2009/10/08/fases-de-desenvolvimento/&amp;title=Fases+de+Desenvolvimento" title="Post to Delicious"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/delicious/tt-delicious-micro4.png" alt="Post to Delicious" /></a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.leandrobarral.com.br/2009/10/08/fases-de-desenvolvimento/&amp;title=Fases+de+Desenvolvimento" title="Post to Delicious">.</a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.leandrobarral.com.br/2009/10/08/fases-de-desenvolvimento/&amp;title=Fases+de+Desenvolvimento" title="Post to Digg"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/digg/tt-digg-micro4.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.leandrobarral.com.br/2009/10/08/fases-de-desenvolvimento/&amp;title=Fases+de+Desenvolvimento" title="Post to Digg">.</a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.leandrobarral.com.br/2009/10/08/fases-de-desenvolvimento/&amp;t=Fases+de+Desenvolvimento" title="Post to Facebook"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-micro4.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.leandrobarral.com.br/2009/10/08/fases-de-desenvolvimento/&amp;t=Fases+de+Desenvolvimento" title="Post to Facebook">.</a> <a target="_blank" class="tt" href="http://www.myspace.com/Modules/PostTo/Pages/?l=3&amp;u=http://blog.leandrobarral.com.br/2009/10/08/fases-de-desenvolvimento/&amp;t=Fases+de+Desenvolvimento" title="Post to MySpace"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/myspace/tt-myspace-micro4.png" alt="Post to MySpace" /></a> <a target="_blank" class="tt" href="http://www.myspace.com/Modules/PostTo/Pages/?l=3&amp;u=http://blog.leandrobarral.com.br/2009/10/08/fases-de-desenvolvimento/&amp;t=Fases+de+Desenvolvimento" title="Post to MySpace">.</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://blog.leandrobarral.com.br/2009/10/08/fases-de-desenvolvimento/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Promoção &#8211; Quero meu blog.com</title>
		<link>http://blog.leandrobarral.com.br/2009/09/27/promocao-quero-meu-blog-com/</link>
		<comments>http://blog.leandrobarral.com.br/2009/09/27/promocao-quero-meu-blog-com/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 16:56:02 +0000</pubDate>
		<dc:creator>Leandro Barral</dc:creator>
				<category><![CDATA[Promoção]]></category>
		<category><![CDATA[domínio]]></category>

		<guid isPermaLink="false">http://blog.leandrobarral.com.br/?p=42</guid>
		<description><![CDATA[[update 2] Como dito no update abaixo, esse post torna-se agora não fixo e o link para acesso ao blog ganhador é ==&#62; www.CarasDeSP.com Desfrutem de um blog de excelente qualidade. Obrigado novamente à todos que mandaram links. Dezembro tem mais! [/update 2] [update] Recebi vários links pelo wlm e twitter, e resolvi dar o [...]<br /><div><img src="http://blog.leandrobarral.com.br/wp-content/plugins/gd-star-rating/gfx.php?value=5.0" /></div><div>Rating: 5.0/<strong>5</strong> (4 votes cast)</div><br />]]></description>
			<content:encoded><![CDATA[<p>[update 2]<br />
Como dito no update abaixo, esse post torna-se agora não fixo e o link para acesso ao blog ganhador é ==&gt; <a href="http://www.CarasDeSP.com">www.CarasDeSP.com</a><br />
Desfrutem de um blog de excelente qualidade.<br />
Obrigado novamente à todos que mandaram links.<br />
Dezembro tem mais!<br />
[/update 2]</p>
<p>[update]<br />
Recebi vários links pelo <a href="http://live.com" target="_blank">wlm</a> e <a href="http://twitter.com" target="_blank">twitter</a>, e resolvi dar o domínio para o blog [<a href="http://carasdesaopaulo.blogspot.com/" target="_blank">Caras de São Paulo</a>], são 8 estudantes de Jornalismo da PUC de São Paulo, que buscam mostrar a real cara de São Paulo, o blog estará no ar essa semana, então estarei editando esse post, que tornar-se-á não fixo a partir do momento que atualizar com o link.<br />
Agradeço à todos que postaram! E em dezembro tem mais promoções, dessa vez com brindes e gadgets sensacionais.<br />
[/update]</p>
<p>Galera, é o seguinte:<br />
Estou sorteando um domínio .com  pra quem tem algum blog hospedado em sites gratuitos, tipo wordpress, blogger, blogspot, etc, que mantém seus blogs com um dominio comprido e difícil de memorizar (ex.: programatik.<strong>blogspot.com</strong>), o intuito é sortear para quem tem uma média de posts mensais razoáveis.<br />
Algumas regras básicas,  <span style="text-decoration: underline;"><strong><span style="color: #ff0000;">não é permitido sites</span></strong></span>:<br />
- Com conteúdo de pirataria e afins;<br />
- Que mantém conteúdo pornográfico;<br />
-  Que infrinjam direitos reservados;<br />
- Que mantenham conteúdo racista, ou que promova qualquer tipo de exclusão social.</p>
<p>Para participar é simples! Basta fazer um comentário nesse post dizendo o conteúdo do seu blog, o porque você merece e um link para avaliação.<br />
Indiquem o blog à seus amigos e colegas.</p>
<p>Conto com a participação de todos!</p>
<p>Att.,<br />
Leandro Barral.</p>
<br /><div><img src="http://blog.leandrobarral.com.br/wp-content/plugins/gd-star-rating/gfx.php?value=5.0" /></div><div>Rating: 5.0/<strong>5</strong> (4 votes cast)</div><br /><div class="tweetthis" style="text-align:left;"><p> <a target="_blank" class="tt" href="http://twitter.com/home/?status=Tutorial%3A+Promo%C3%A7%C3%A3o+%E2%80%93+Quero+meu+blog.com+-+http%3A%2F%2Ftinyurl.com%2Fyav5773" title="Post to Twitter"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro4.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://twitter.com/home/?status=Tutorial%3A+Promo%C3%A7%C3%A3o+%E2%80%93+Quero+meu+blog.com+-+http%3A%2F%2Ftinyurl.com%2Fyav5773" title="Post to Twitter">.</a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.leandrobarral.com.br/2009/09/27/promocao-quero-meu-blog-com/&amp;title=Promo%C3%A7%C3%A3o+%E2%80%93+Quero+meu+blog.com" title="Post to Delicious"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/delicious/tt-delicious-micro4.png" alt="Post to Delicious" /></a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.leandrobarral.com.br/2009/09/27/promocao-quero-meu-blog-com/&amp;title=Promo%C3%A7%C3%A3o+%E2%80%93+Quero+meu+blog.com" title="Post to Delicious">.</a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.leandrobarral.com.br/2009/09/27/promocao-quero-meu-blog-com/&amp;title=Promo%C3%A7%C3%A3o+%E2%80%93+Quero+meu+blog.com" title="Post to Digg"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/digg/tt-digg-micro4.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.leandrobarral.com.br/2009/09/27/promocao-quero-meu-blog-com/&amp;title=Promo%C3%A7%C3%A3o+%E2%80%93+Quero+meu+blog.com" title="Post to Digg">.</a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.leandrobarral.com.br/2009/09/27/promocao-quero-meu-blog-com/&amp;t=Promo%C3%A7%C3%A3o+%E2%80%93+Quero+meu+blog.com" title="Post to Facebook"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-micro4.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.leandrobarral.com.br/2009/09/27/promocao-quero-meu-blog-com/&amp;t=Promo%C3%A7%C3%A3o+%E2%80%93+Quero+meu+blog.com" title="Post to Facebook">.</a> <a target="_blank" class="tt" href="http://www.myspace.com/Modules/PostTo/Pages/?l=3&amp;u=http://blog.leandrobarral.com.br/2009/09/27/promocao-quero-meu-blog-com/&amp;t=Promo%C3%A7%C3%A3o+%E2%80%93+Quero+meu+blog.com" title="Post to MySpace"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/myspace/tt-myspace-micro4.png" alt="Post to MySpace" /></a> <a target="_blank" class="tt" href="http://www.myspace.com/Modules/PostTo/Pages/?l=3&amp;u=http://blog.leandrobarral.com.br/2009/09/27/promocao-quero-meu-blog-com/&amp;t=Promo%C3%A7%C3%A3o+%E2%80%93+Quero+meu+blog.com" title="Post to MySpace">.</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://blog.leandrobarral.com.br/2009/09/27/promocao-quero-meu-blog-com/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Validando Formulários com Zend Framework</title>
		<link>http://blog.leandrobarral.com.br/2009/09/27/validando-formularios-com-zend-framework/</link>
		<comments>http://blog.leandrobarral.com.br/2009/09/27/validando-formularios-com-zend-framework/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 16:14:07 +0000</pubDate>
		<dc:creator>Leandro Barral</dc:creator>
				<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zend_validate]]></category>

		<guid isPermaLink="false">http://blog.leandrobarral.com.br/?p=38</guid>
		<description><![CDATA[Esse é o segundo tutorial sobre Zend. Hoje vou mostrar como validar um formulário usando a classe Validate do Zend. Primeiramente crie um formulário básico: &#60;form action=&#34;&#60;?php echo $this-&#62;baseUrl;  ?&#62;/formulario/validar&#34; method=&#34;post&#34;&#62; &#60;table border=&#34;0&#34;&#62; &#60;tbody&#62; &#60;tr&#62; &#60;td&#62;Nome do Produto:&#60;/td&#62; &#60;td&#62;&#60;input name=&#34;nome&#34; type=&#34;text&#34; /&#62;&#60;/td&#62; &#60;/tr&#62; &#60;tr&#62; &#60;td&#62;Valor Produto:&#60;/td&#62; &#60;td&#62;&#60;input name=&#34;valor&#34; type=&#34;text&#34; /&#62;&#60;/td&#62; &#60;/tr&#62; &#60;/tbody&#62;&#60;/table&#62; &#60;input type=&#34;submit&#34; value=&#34;Validar&#34; [...]<br /><div><img src="http://blog.leandrobarral.com.br/wp-content/plugins/gd-star-rating/gfx.php?value=5.0" /></div><div>Rating: 5.0/<strong>5</strong> (1 vote cast)</div><br />]]></description>
			<content:encoded><![CDATA[<p>Esse é o segundo tutorial sobre Zend.<br />
Hoje vou mostrar como validar um formulário usando a classe Validate do Zend.</p>
<p>Primeiramente crie um formulário básico:</p>
<pre class="brush: php">
&lt;form action=&quot;&lt;?php echo $this-&gt;baseUrl;  ?&gt;/formulario/validar&quot; method=&quot;post&quot;&gt;
&lt;table border=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Nome do Produto:&lt;/td&gt;
&lt;td&gt;&lt;input name=&quot;nome&quot; type=&quot;text&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Valor Produto:&lt;/td&gt;
&lt;td&gt;&lt;input name=&quot;valor&quot; type=&quot;text&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;input type=&quot;submit&quot; value=&quot;Validar&quot; /&gt;
&lt;/form&gt;</pre>
<p>E agora vamos ao mais importante que é o controlador para a validação:<br />
/application/controllers/FormularioController.php</p>
<pre class="brush: php">class FormularioController extends Zend_Controller_Action
{
function validar(){
$nome  = $this-&gt;_request-&gt;getParam(&quot;nome&quot;);
$valor = $this-&gt;_request-&gt;getParam(&quot;valor&quot;);

/* Instanciando os validadores */
$validNome       = new Zend_Validate_StringLength(1,100);
$validValor      = new Zend_Validate_Float();

/* Aqui Personaliza as mensagens e os tipos de validação */
$validNome-&gt;setMessage(
/* Aqui se o campo estiver vazio */
&quot;Campo nome é obrigatório&quot;.,
Zend_Validate_StringLength::TOO_SHORT);

$validNome-&gt;setMessage(
/* Aqui se for maior que 100 */
&quot;Campo nome maior que o permitido.&quot;,
Zend_Validate_StringLength::TOO_LONG);

$validValor-&gt;setMessage(
/* E aqui se não for float */
&quot;Campo valor nao é um número válido.&quot;,
Zend_Validate_Float::NOT_FLOAT);

/* Aqui é verificado se os valores digitados sao válidos */
if ( $validNome-&gt;isValid(trim($nome)) &amp;amp;&amp;amp;
$validNome-&gt;isValid($nome) &amp;amp;&amp;amp;
$validValor-&gt;isValid($valor) ){

/* Se for: executa os procedimentos para insercao
Que foram omitidos pois não o objetivo desse post */
} else {
/* Se não forem válidos junta as mensagens em um array */
$this-&gt;view-&gt;msg = array_merge( $validNome-&gt;getMessages(), $validValor-&gt;getMessages() );
/* $msg tem todas os erros, agora na camada de visão você pode mostrá-los
como desejar */
}
}
}</pre>
<p>Eu carrego as mensagens de erro de um arquivo .ini e jogo na tela fica mais fácil se eu precisar usar a mesma mensagem em outros formulários ou inseções.<br />
Aconselho a todos darem uma olhada na documentação sobre o <a title="manual zend_validate" href="http://framework.zend.com/manual/en/zend.validate.html" target="_blank">Zend_Validate</a>, não é só string e float não, ele valida data, IP, email&#8230;<br />
No próximo post vou mostrar como personalizar essa validação de formulário usando em conjunto com o Zend um outro framework, porém esse é em JS, chamado jQuery, junto com um plugin fica muito mais profissional o serviço, que vai funcionar se a pessoa tiver Js habilitado, se não tiver ele usa a validação do Zend.</p>
<p>Até a próxima.</p>
<br /><div><img src="http://blog.leandrobarral.com.br/wp-content/plugins/gd-star-rating/gfx.php?value=5.0" /></div><div>Rating: 5.0/<strong>5</strong> (1 vote cast)</div><br /><div class="tweetthis" style="text-align:left;"><p> <a target="_blank" class="tt" href="http://twitter.com/home/?status=Tutorial%3A+Validando+Formul%C3%A1rios+com+Zend+Framework+-+http%3A%2F%2Ftinyurl.com%2Fydp6tvn" title="Post to Twitter"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro4.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://twitter.com/home/?status=Tutorial%3A+Validando+Formul%C3%A1rios+com+Zend+Framework+-+http%3A%2F%2Ftinyurl.com%2Fydp6tvn" title="Post to Twitter">.</a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.leandrobarral.com.br/2009/09/27/validando-formularios-com-zend-framework/&amp;title=Validando+Formul%C3%A1rios+com+Zend+Framework" title="Post to Delicious"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/delicious/tt-delicious-micro4.png" alt="Post to Delicious" /></a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.leandrobarral.com.br/2009/09/27/validando-formularios-com-zend-framework/&amp;title=Validando+Formul%C3%A1rios+com+Zend+Framework" title="Post to Delicious">.</a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.leandrobarral.com.br/2009/09/27/validando-formularios-com-zend-framework/&amp;title=Validando+Formul%C3%A1rios+com+Zend+Framework" title="Post to Digg"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/digg/tt-digg-micro4.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.leandrobarral.com.br/2009/09/27/validando-formularios-com-zend-framework/&amp;title=Validando+Formul%C3%A1rios+com+Zend+Framework" title="Post to Digg">.</a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.leandrobarral.com.br/2009/09/27/validando-formularios-com-zend-framework/&amp;t=Validando+Formul%C3%A1rios+com+Zend+Framework" title="Post to Facebook"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-micro4.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.leandrobarral.com.br/2009/09/27/validando-formularios-com-zend-framework/&amp;t=Validando+Formul%C3%A1rios+com+Zend+Framework" title="Post to Facebook">.</a> <a target="_blank" class="tt" href="http://www.myspace.com/Modules/PostTo/Pages/?l=3&amp;u=http://blog.leandrobarral.com.br/2009/09/27/validando-formularios-com-zend-framework/&amp;t=Validando+Formul%C3%A1rios+com+Zend+Framework" title="Post to MySpace"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/myspace/tt-myspace-micro4.png" alt="Post to MySpace" /></a> <a target="_blank" class="tt" href="http://www.myspace.com/Modules/PostTo/Pages/?l=3&amp;u=http://blog.leandrobarral.com.br/2009/09/27/validando-formularios-com-zend-framework/&amp;t=Validando+Formul%C3%A1rios+com+Zend+Framework" title="Post to MySpace">.</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://blog.leandrobarral.com.br/2009/09/27/validando-formularios-com-zend-framework/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Zend &#8211; Início</title>
		<link>http://blog.leandrobarral.com.br/2009/09/24/zend-inicio/</link>
		<comments>http://blog.leandrobarral.com.br/2009/09/24/zend-inicio/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 23:14:42 +0000</pubDate>
		<dc:creator>Leandro Barral</dc:creator>
				<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[básico]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://blog.leandrobarral.com.br/?p=17</guid>
		<description><![CDATA[Olá pessoal, esse é o blog que a partir de hoje pretendo começar a postar dicas, tutoriais, novidades, etc. Não terei uma periodicidade para postar, vou colocando aqui conteúdo conforme for aparecendo assuntos! Programo em PHP/MySQL há 6 anos, tenho experiência com Delphi 7, SQL Server 2000, Java.. Hoje, venho dizer um pouco sobre o [...]<br /><div><img src="http://blog.leandrobarral.com.br/wp-content/plugins/gd-star-rating/gfx.php?value=4.3" /></div><div>Rating: 4.3/<strong>5</strong> (3 votes cast)</div><br />]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal, esse é o blog que a partir de hoje pretendo começar a postar dicas, tutoriais, novidades, etc.</p>
<p>Não terei uma periodicidade para postar, vou colocando aqui conteúdo conforme for aparecendo assuntos!</p>
<p>Programo em PHP/MySQL há 6 anos, tenho experiência com Delphi 7, SQL Server 2000, Java..</p>
<p>Hoje, venho dizer um pouco sobre o framework que estou, vamos dizer, &#8220;vidrado&#8221;, o <a href="http://framework.zend.com" target="_blank">framework</a> da<a href="http://www.zend.com" target="_blank"> Zend </a>(empresa que hoje mantém as versões do <a href="http://php.net" target="_blank">PHP</a>), é um fw [<strong>f</strong>rame<strong>w</strong>ork] muito bem escrito, cheio de recursos, desde manipulação com banco de dados até criação de rss e web services!</p>
<p>Não sou nenhum profissional ainda na ferramenta, porém já estou desenvolvendo um sistema grande com ele.</p>
<p>Vamos ao que interessa: Como começar!</p>
<p>Para começar temos alguns requisitos minimos:</p>
<p>- PHP 5; [<a href="http://www.php.net/downloads.php#v5" target="_blank">download aqui</a>] [atualmente na versão 5.3.0]<br />
- Apache com mod_rewrite habilitado ou qualquer outro servidor que tenha reescrita de url; [vou postar um tutorial de como habilitar]<br />
- O Zend; [<a href="http://framework.zend.com/download/current/" target="_blank">download aqui</a>] [atualmente na versao 1.9.1, recomendo a versão full]<br />
- Conhecimento básico da linguagem [PHP];<br />
- Desejável algum conhecimento com orientação a objetos;<br />
- Vontade de aprender.</p>
<p>Depois disso vamos partir para a configuração do Zend, estrutura de pastas, bootstrap, etc&#8230;</p>
<p>Primeiramente baixe o Zend e descompacte-o em qualquer lugar do seu micro, nela estará contido varios diretórios, demos, tests, library.. para nós apenas interessa a pasta <strong>library</strong>, copie essa pasta para a raiz do seu servidor, no meu caso &#8220;public_html/&#8221;, alguns servidores &#8220;www/&#8221;, &#8220;htdocs&#8221;, tem algumas variações..</p>
<p>Nossa estrutura de arquivos deve ficar assim:</p>
<p><img title="estrutura-zend" src="http://img269.imageshack.us/img269/4397/estruturazend.jpg" alt="estrutura-zend" width="136" height="308" /></p>
<p>Vou explicar, a pasta application é subdividida em 3 pastas, sendo elas <strong>C</strong>ontrollers, <strong>V</strong>iews e <strong>M</strong>odels, perceberam? MVC, cada um trabalha com uma parte da aplicação:</p>
<p>M &#8211; Models: Onde você criará as classes para manipular o banco de dados;<br />
V &#8211; Views: Aqui é onde ficará a parte visual, os templates das páginas (vocês entenderão com o próximos tutoriais);<br />
C &#8211; Controllers: Aqui fica toda a manipulação dos dados, vindos ou não do usuário, validações, etc. É onde você cria a lógica e tal.</p>
<p>O ZF (Zend Frameworks) trabalha com url limpas (www.site.com/artigos/php/id/2), e tudo passa pelo arquivo index.php [nosso bootstrap], o conteúdo dele é extenso, então é só <a href="http://leandrobarral.com.br/arquivos-blog/zendinicio/index.txt" target="_blank">clicar aqui</a> e pegar o conteúdo, o arquivo está totalmente comentado, qualquer dúvida futura só postar..</p>
<p>Porém, para usarmos (desfrutarmos) das url limpas temos que ter alguns arquivos .htaccess e certas pastas, vou postar o local onde devem ficar e o conteúdo de cada uma delas, esses arquivos serão responsaveis tanto para a utilização das url limpas quanto para segurança de algumas pastas&#8230;</p>
<p>Local: /zf-basico1/.htaccess [raiz ok?]</p>
<p>Conteúdo:</p>
<pre class="brush: php">RewriteEngine on
RewriteRule .* index.php
php_flag magic_quotes_gpc off
php_flag register_globals off</pre>
<p>Explicação: Primeiro nos certificamos que está habilitado a reescrita de url, logo após dizemos que tudo deverá passar pelo index.php &#8220;para saber oque fazer&#8221;, e nas duas últimas linhas nos certificamos que magic_quotes e register_global estão desabilitadoa, se não estiverem disabilita-os.</p>
<p>Local: /zf-basico1/public/.htaccess</p>
<p>Conteúdo:</p>
<pre class="brush: php">RewriteEngine off</pre>
<p>Explicação: Desabilitamos a reescrita de url para essa pasta.</p>
<p>Local: /zf-basico1/application/.htaccess</p>
<p>Conteúdo:</p>
<pre class="brush: php">deny from all</pre>
<p>Explicação: Aqui nós bloqueamos qualquer tentativa de acesso às pastas onde ficará nossa aplicação e arquivos de configuração e acesso ao banco de dados e etc.. não queremos ninguém bisbilhotando não é?</p>
<p>Porém depois de tudo isso se você for acessar a index do sistema dará uma exception enooorme aí, correto?</p>
<blockquote><p>Fatal error: Uncaught exception &#8216;Zend_Controller_Dispatcher_Exception&#8217; with message &#8216;Invalid controller specified (index)&#8217;&#8230;..</p></blockquote>
<p>Ela quer dizer oquê? Fiz alguma coisa errada?</p>
<p>Não, isso quer dizer apenas que a aplicação nao possui um Controlador para o index.</p>
<p>Mas como eu crio esse negócio de controlador?</p>
<p>Bem, vamos criá-lo agora. Crie um arquivo chamado IndexController dentro da pasta &#8220;./application/controllers/&#8221; com o seguinte conteúdo:</p>
<pre class="brush: php">
&lt;?php
class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
$this-&gt;view-&gt;boasvindas = &quot;Bem-vindo ao Zend!&quot;;
}
}
?&gt;
</pre>
<p>Tentem acessar a index novamente, dará outra exception enorme mais ou menos assim:</p>
<blockquote><p>Fatal error: Uncaught exception &#8216;Zend_View_Exception&#8217; with message &#8216;script &#8216;index/index.phtml&#8217;&#8230;</p></blockquote>
<p>Essa quer dizer que a aplicação não conseguiu encontrar um arquivo de template para a index, lembra que eu disse sobre o MVC, tudo separado, independente e tal? Então, para cada action você terá um template (arquivos .phtml) que exibirá os dados que você manipular nos controllers.. Complicado no começo mas com o passar dos tutoriais você entenderá!</p>
<p>Ok, para criar um index.phtml você o deve criar dentro da pasta &#8220;./application/views/scripts&#8221; uma pasta chamada.. Adivinha&#8230; chamada index!</p>
<p>index.phtml</p>
<pre class="brush: php">&lt;?php
echo $this-&gt;boasvindas;</pre>
<p>Acessando o index você receberá uma mensagem: &#8220;Bem-vindo ao Zend!&#8221;</p>
<p>Galera, estou exausto, escrevi pra caramba! Qualquer dúvida comentem que eu farei o possível para responder!</p>
<p>P.S.: Tentem colocar no link www.seu-site.com/zf-basico1/index/index/ irá cair na index, note que não existe uma pasta index e outra index dentro da raiz do site!</p>
<p>Aguardem novos tutoriais..</p>
<p>Espero que tenham gostado!</p>
<p>Até a próxima.</p>
<br /><div><img src="http://blog.leandrobarral.com.br/wp-content/plugins/gd-star-rating/gfx.php?value=4.3" /></div><div>Rating: 4.3/<strong>5</strong> (3 votes cast)</div><br /><div class="tweetthis" style="text-align:left;"><p> <a target="_blank" class="tt" href="http://twitter.com/home/?status=Tutorial%3A+Zend+%E2%80%93+In%C3%ADcio+-+http%3A%2F%2Ftinyurl.com%2Fyc28n8a" title="Post to Twitter"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro4.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://twitter.com/home/?status=Tutorial%3A+Zend+%E2%80%93+In%C3%ADcio+-+http%3A%2F%2Ftinyurl.com%2Fyc28n8a" title="Post to Twitter">.</a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.leandrobarral.com.br/2009/09/24/zend-inicio/&amp;title=Zend+%E2%80%93+In%C3%ADcio" title="Post to Delicious"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/delicious/tt-delicious-micro4.png" alt="Post to Delicious" /></a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.leandrobarral.com.br/2009/09/24/zend-inicio/&amp;title=Zend+%E2%80%93+In%C3%ADcio" title="Post to Delicious">.</a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.leandrobarral.com.br/2009/09/24/zend-inicio/&amp;title=Zend+%E2%80%93+In%C3%ADcio" title="Post to Digg"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/digg/tt-digg-micro4.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.leandrobarral.com.br/2009/09/24/zend-inicio/&amp;title=Zend+%E2%80%93+In%C3%ADcio" title="Post to Digg">.</a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.leandrobarral.com.br/2009/09/24/zend-inicio/&amp;t=Zend+%E2%80%93+In%C3%ADcio" title="Post to Facebook"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-micro4.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.leandrobarral.com.br/2009/09/24/zend-inicio/&amp;t=Zend+%E2%80%93+In%C3%ADcio" title="Post to Facebook">.</a> <a target="_blank" class="tt" href="http://www.myspace.com/Modules/PostTo/Pages/?l=3&amp;u=http://blog.leandrobarral.com.br/2009/09/24/zend-inicio/&amp;t=Zend+%E2%80%93+In%C3%ADcio" title="Post to MySpace"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/myspace/tt-myspace-micro4.png" alt="Post to MySpace" /></a> <a target="_blank" class="tt" href="http://www.myspace.com/Modules/PostTo/Pages/?l=3&amp;u=http://blog.leandrobarral.com.br/2009/09/24/zend-inicio/&amp;t=Zend+%E2%80%93+In%C3%ADcio" title="Post to MySpace">.</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://blog.leandrobarral.com.br/2009/09/24/zend-inicio/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Olá, mundo!</title>
		<link>http://blog.leandrobarral.com.br/2009/09/20/ola-mundo/</link>
		<comments>http://blog.leandrobarral.com.br/2009/09/20/ola-mundo/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 18:00:03 +0000</pubDate>
		<dc:creator>Leandro Barral</dc:creator>
				<category><![CDATA[O começo]]></category>
		<category><![CDATA[inicio]]></category>
		<category><![CDATA[recomeço]]></category>
		<category><![CDATA[volta]]></category>

		<guid isPermaLink="false">http://leandrobarral.com.br/blog/?p=1</guid>
		<description><![CDATA[Salve galera! Depois de um bom tempo fora do blog volto com um tema novo, idéias novas,  mais conhecimento, abordando mais linguagens.. Só Melhorias!<br /><div><img src="http://blog.leandrobarral.com.br/wp-content/plugins/gd-star-rating/gfx.php?value=5.0" /></div><div>Rating: 5.0/<strong>5</strong> (2 votes cast)</div><br />]]></description>
			<content:encoded><![CDATA[<p>Salve galera! Depois de um bom tempo fora do blog volto com um tema novo, idéias novas,  mais conhecimento, abordando mais linguagens.. Só Melhorias!<br />
O outro blog hospedado em um host <span style="text-decoration: line-through;">péssimo!</span> &#8220;barato&#8221;, foi hackeado por falta de firewall e anti-vírus no servidor, perdi minha base de dados com todos os outros posts, meus temas personalizados, enfim, TUDO!<br />
Agora estou usando a UOL como host. Espero que eles, com toda infra-estrutura,  não deixem mais serem causados transtornos desse tipo!</p>
<p>Venho apenas informar que a partir de amanhã, estarei voltando a postar sobre programação, design, novidades e soluções simples para problemas complicados do dia-a-dia, com um pouco de atraso entre os posts pois estou criando o sistema de gerenciamento de uma revista online que estarei lançando até o final do ano.</p>
<p>Abraço à todos e espero voltar a ter meus 200 pageviews diários.</p>
<p>Att.,<br />
Leandro Barral.</p>
<br /><div><img src="http://blog.leandrobarral.com.br/wp-content/plugins/gd-star-rating/gfx.php?value=5.0" /></div><div>Rating: 5.0/<strong>5</strong> (2 votes cast)</div><br /><div class="tweetthis" style="text-align:left;"><p> <a target="_blank" class="tt" href="http://twitter.com/home/?status=Tutorial%3A+Ol%C3%A1%2C+mundo%21+-+http%3A%2F%2Ftinyurl.com%2Fycnfwcy" title="Post to Twitter"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro4.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://twitter.com/home/?status=Tutorial%3A+Ol%C3%A1%2C+mundo%21+-+http%3A%2F%2Ftinyurl.com%2Fycnfwcy" title="Post to Twitter">.</a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.leandrobarral.com.br/2009/09/20/ola-mundo/&amp;title=Ol%C3%A1%2C+mundo%21" title="Post to Delicious"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/delicious/tt-delicious-micro4.png" alt="Post to Delicious" /></a> <a target="_blank" class="tt" href="http://delicious.com/post?url=http://blog.leandrobarral.com.br/2009/09/20/ola-mundo/&amp;title=Ol%C3%A1%2C+mundo%21" title="Post to Delicious">.</a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.leandrobarral.com.br/2009/09/20/ola-mundo/&amp;title=Ol%C3%A1%2C+mundo%21" title="Post to Digg"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/digg/tt-digg-micro4.png" alt="Post to Digg" /></a> <a target="_blank" class="tt" href="http://digg.com/submit?url=http://blog.leandrobarral.com.br/2009/09/20/ola-mundo/&amp;title=Ol%C3%A1%2C+mundo%21" title="Post to Digg">.</a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.leandrobarral.com.br/2009/09/20/ola-mundo/&amp;t=Ol%C3%A1%2C+mundo%21" title="Post to Facebook"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-micro4.png" alt="Post to Facebook" /></a> <a target="_blank" class="tt" href="http://www.facebook.com/share.php?u=http://blog.leandrobarral.com.br/2009/09/20/ola-mundo/&amp;t=Ol%C3%A1%2C+mundo%21" title="Post to Facebook">.</a> <a target="_blank" class="tt" href="http://www.myspace.com/Modules/PostTo/Pages/?l=3&amp;u=http://blog.leandrobarral.com.br/2009/09/20/ola-mundo/&amp;t=Ol%C3%A1%2C+mundo%21" title="Post to MySpace"><img class="nothumb" src="http://blog.leandrobarral.com.br/wp-content/plugins/tweet-this/icons/en/myspace/tt-myspace-micro4.png" alt="Post to MySpace" /></a> <a target="_blank" class="tt" href="http://www.myspace.com/Modules/PostTo/Pages/?l=3&amp;u=http://blog.leandrobarral.com.br/2009/09/20/ola-mundo/&amp;t=Ol%C3%A1%2C+mundo%21" title="Post to MySpace">.</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://blog.leandrobarral.com.br/2009/09/20/ola-mundo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

