<?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>Alexandre Marinho</title>
	<atom:link href="http://alexandre.cuboestudioweb.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://alexandre.cuboestudioweb.com</link>
	<description>Tecnologia, Programação, Gadgets, etc...</description>
	<lastBuildDate>Fri, 05 Aug 2011 12:51:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Como ajustar o chat do Gmail no tema Preview (Dense)</title>
		<link>http://alexandre.cuboestudioweb.com/2011/08/como-ajustar-o-chat-do-gmail-no-tema-preview-dense/</link>
		<comments>http://alexandre.cuboestudioweb.com/2011/08/como-ajustar-o-chat-do-gmail-no-tema-preview-dense/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 13:03:08 +0000</pubDate>
		<dc:creator>alexandre</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://alexandre.cuboestudioweb.com/?p=135</guid>
		<description><![CDATA[Olá pessoas, estou tentando tirar as moscas desse blog, a muito sem nenhuma atualização nova! Vamos lá! Recentemente o Google realizou grandes mudanças visuais em seus principais serviços como a Agenda os deixando mais parecidos com o Google+. O Gmail &#8230; <a href="http://alexandre.cuboestudioweb.com/2011/08/como-ajustar-o-chat-do-gmail-no-tema-preview-dense/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Olá pessoas, estou tentando tirar as moscas desse blog, a muito sem nenhuma atualização nova! Vamos lá!</p>
<p>Recentemente o Google realizou grandes mudanças visuais em seus principais serviços como a Agenda os deixando mais parecidos com o Google+. O Gmail introduziu dois novos temas baseados nessa nova interface gráfica, são o Preview e  Preview Dense. Como o nome já diz se tratam de temas ainda não terminados e possuem alguns bugs.</p>
<p>Se você é como eu e prefere o chat do Gmail do lado direito, esses novos temas deixam o chat bem espremido. Por sorte tem uma maneira bem simples de resolver isso.</p>
<p>Estou usando o Firefox, mas o mesmo efeito pode ser conseguido tambêm no Google Chrome de forma bem fácil.</p>
<p>Primeiro vamos precisar da extensão <a href="http://userstyles.org/" target="_blank">Stylish</a>.<br />
Depois de instalar é preciso criar um novo estilo específico para o gmail. Acesse seu gmail, clique no ícone do Stylish (na barra de extensões do firefox) e escolha &#8220;Escrever novo estilo&#8221; &gt; &#8220;Para mail.google.com&#8230;&#8221;</p>
<p>Coloque o nome que você desejar e para o texto use:</p>
<pre>@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("mail.google.com") {
    .T0{margin-left:0 !important}
    .q0CeU{margin-right:0 !important}
}</pre>
<p>Clique em salvar e pronto, seu chat estará melhor posicionado.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexandre.cuboestudioweb.com/2011/08/como-ajustar-o-chat-do-gmail-no-tema-preview-dense/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress 3.0 é lançado!</title>
		<link>http://alexandre.cuboestudioweb.com/2010/06/wordpress-3-0-e-lancado/</link>
		<comments>http://alexandre.cuboestudioweb.com/2010/06/wordpress-3-0-e-lancado/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 12:49:15 +0000</pubDate>
		<dc:creator>alexandre</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://alexandre.cuboestudioweb.com/?p=126</guid>
		<description><![CDATA[Foi lançado ontem, 17/06 a versão 3.0 do WordPress. O CMS que gerencia esse blog. A grande novidade dessa versão é a fusão com o WordPress MU, possibilitando o uso e vários blogs numa única instalação. Além disso foi adicionado &#8230; <a href="http://alexandre.cuboestudioweb.com/2010/06/wordpress-3-0-e-lancado/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Foi lançado ontem, 17/06 a versão 3.0 do WordPress. O CMS que gerencia esse blog.</p>
<p><a href="http://alexandre.cuboestudioweb.com/wp-content/uploads/2010/06/wordpress-logo-300x282.png"><img class="alignleft size-thumbnail wp-image-127" title="Wordpress" src="http://alexandre.cuboestudioweb.com/wp-content/uploads/2010/06/wordpress-logo-300x282-150x150.png" alt="" width="150" height="150" /></a>A grande novidade dessa versão é a fusão com o WordPress MU, possibilitando o uso e vários blogs numa única instalação. Além disso foi adicionado um novo tema padrão chamado Twenty Ten.</p>
<p>Já fiz a atualização desse blog para a versão 3.0 e estou usando o tema novo, ficou bem mais simples o blog não acham?</p>
]]></content:encoded>
			<wfw:commentRss>http://alexandre.cuboestudioweb.com/2010/06/wordpress-3-0-e-lancado/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Postando pelo Iphone</title>
		<link>http://alexandre.cuboestudioweb.com/2010/05/postando-pelo-iphone/</link>
		<comments>http://alexandre.cuboestudioweb.com/2010/05/postando-pelo-iphone/#comments</comments>
		<pubDate>Wed, 05 May 2010 00:13:14 +0000</pubDate>
		<dc:creator>alexandre</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[movel]]></category>

		<guid isPermaLink="false">http://alexandre.cuboestudioweb.com/2010/05/postando-pelo-iphone/</guid>
		<description><![CDATA[Bom estou postando no blog pelo iphone!! Baixei a app do wordpress e configurei para usar no meu blog&#8230; Tudo bem simples e fácil. Viva a modernidade !!!]]></description>
			<content:encoded><![CDATA[<p>Bom estou postando no blog pelo iphone!!</p>
<p>Baixei a app do wordpress e configurei para usar no meu blog&#8230; Tudo bem simples e fácil.</p>
<p>Viva a modernidade !!!</p>
]]></content:encoded>
			<wfw:commentRss>http://alexandre.cuboestudioweb.com/2010/05/postando-pelo-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adium em português do Brasil (Snow Leopard)</title>
		<link>http://alexandre.cuboestudioweb.com/2010/02/adium-em-portugues-do-brasil-snow-leopard/</link>
		<comments>http://alexandre.cuboestudioweb.com/2010/02/adium-em-portugues-do-brasil-snow-leopard/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 13:40:20 +0000</pubDate>
		<dc:creator>alexandre</dc:creator>
				<category><![CDATA[mac]]></category>
		<category><![CDATA[adium]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[snow leopard]]></category>

		<guid isPermaLink="false">http://alexandre.cuboestudioweb.com/?p=119</guid>
		<description><![CDATA[Para quem o prazer de possuir um MAC conhece o cliente IM Adium. Uma coisa que sempre me iritava era que o Adium só abria em Português de Portugal (pt_PT) e não havia nenhuma opção para mudar isso. Procurando na &#8230; <a href="http://alexandre.cuboestudioweb.com/2010/02/adium-em-portugues-do-brasil-snow-leopard/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://alexandre.cuboestudioweb.com/wp-content/uploads/2010/02/adium.png"><img class="alignleft size-thumbnail wp-image-120" title="Adium" src="http://alexandre.cuboestudioweb.com/wp-content/uploads/2010/02/adium-150x150.png" alt="" width="150" height="150" /></a>Para quem o prazer de possuir um MAC conhece o cliente IM <a href="http://adium.im/" target="_blank">Adium</a>. Uma coisa que sempre me iritava era que o Adium só abria em Português de Portugal (pt_PT) e não havia nenhuma opção para mudar isso.</p>
<p>Procurando na internet vários sites me apontaram para mudar o idioma da aplicação usando o &#8220;Get Info&#8221; ou Obter Informações. O detalhe ai é que no Snow Leopard não possui mais a opção de idioma no &#8220;Get Info&#8221;.</p>
<p>Para solucionar isso existe uma aplicação chamada <a href="http://www.tj-hd.co.uk/en-gb/languageswitcher/">Language  Switcher</a> que possibilita abrir as apps em qualquer idioma disponível. É uma aplicação grátis e ocupa somente 1.2MB de espaço. Agora consigo usar o Adium totalmente em português do Brasil.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexandre.cuboestudioweb.com/2010/02/adium-em-portugues-do-brasil-snow-leopard/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Criando novas views para o admin</title>
		<link>http://alexandre.cuboestudioweb.com/2010/01/criando-novas-views-para-o-admin/</link>
		<comments>http://alexandre.cuboestudioweb.com/2010/01/criando-novas-views-para-o-admin/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 01:24:12 +0000</pubDate>
		<dc:creator>alexandre</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[admin]]></category>

		<guid isPermaLink="false">http://alexandre.cuboestudioweb.com/?p=109</guid>
		<description><![CDATA[Um bom tempo sem postar nada novo&#8230; porém estou de volta com uma dica simples que já usei bastante. Quem utiliza o Django com certeza adora a app admin que o acompanha, nós desenvolvedores ganhamos de presente uma administração de &#8230; <a href="http://alexandre.cuboestudioweb.com/2010/01/criando-novas-views-para-o-admin/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Um bom tempo sem postar nada novo&#8230; porém estou de volta com uma dica simples que já usei bastante.</p>
<p>Quem utiliza o Django com certeza adora a app admin que o acompanha, nós desenvolvedores ganhamos de presente uma administração de sites útil para praticamente qualquer site, e diga-se de passagem as administrações são sempre as partes mais chatas quando se produz um site.</p>
<p>Como nem tudo é perfeito, quando é necessário customizar o admin temos diversas opções, porém essa não é a intenção desse post. Quem quiser saber mais detalhes sobre customização do admin pode acessar a <a href="http://docs.djangoproject.com/en/1.1/" target="_blank">documentação do django</a> e essa <a href="http://www.ibm.com/developerworks/opensource/library/os-django-admin/index.html" target="_self">página da IBM</a>.</p>
<p>O nosso caso é diferente, existem situações em que precisamos criar novas funcionalidades específicas para a administracao (não estão relacionadas a nenhum model), mantendo o layout e as restrições de acesso.</p>
<p>O primeiro passo é criar a view:</p>
<pre><code>from django.shortcuts import render_to_response
from django.template import RequestContext</code>

def minha_view(request):
    #executa alguma funcionalidade
    return render_to_response('app/minha_view.html',locals(),request_instance=RequestContext(request))
</pre>
<p>Note que a view acima é igual a qualquer outra que se faz normalmente.<br />
Em seguida definimos uma url para nossa view:</p>
<pre><code>urlpatterns = patterns('',
    (r'^admin/admin_view','app.views.minha_view'),
    (r'^admin/', include(admin.site.urls)),
)
</code></pre>
<p>Eu preciso definir a minha url antes da url do admin, se ela for colocada após o admin a view não é encontrada. Cuidado para não sobrepor nenhuma view já existente do admin.</p>
<p>Agora criamos o template minha_view.html:</p>
<pre><code>{% extends 'admin/base_site.html' %}
{% block content %}
Aqui ficarão os dados da sua view
{% endblock %}
</code></pre>
<p>O template acima é muito simples, caso queira fazer algo mais sofisticado (como css, breadcrumbs e forms) sugiro olhar os templates padrões do admin. Eles podem ser encontrados em: %DJANGO_DIR%/contrib/admin/templates/admin.</p>
<p>Pronto, sua view já possui a &#8216;cara&#8217; do admin. Porém ela pode ser acessada por qualquer usuário, até mesmo os logados.</p>
<p>O passo natural seria usar o decorator <em>login_required</em> para exigir o login, so que por algum motivo desconhecido os redirecionamentos do admin não combinam muito bem com views externas. Nesso caso a solução é transformar a nossa view numa view do admin, para isso editamos o urls.py:</p>
<pre><code>from django.contrib import admin
from app.views import minha_view

urlpatterns = patterns('',
    (r'^admin/admin_view',admin.site.admin_view(minha_view),
    (r'^admin/', include(admin.site.urls)),
)
</code></pre>
<p>Pronto sua view está protegida de acessos anônimos e todos os redirecionamentos funcionam corretamente.<br />
Agora é só criar suas novas funcionalidades embutidas diretamente no admin.</p>
<p>Espero ter ajudado. Até a próxima.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexandre.cuboestudioweb.com/2010/01/criando-novas-views-para-o-admin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Um pouco de metaprogramação</title>
		<link>http://alexandre.cuboestudioweb.com/2009/10/um-pouco-de-metaprogramacao/</link>
		<comments>http://alexandre.cuboestudioweb.com/2009/10/um-pouco-de-metaprogramacao/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 13:39:32 +0000</pubDate>
		<dc:creator>alexandre</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[metaprogramacao]]></category>
		<category><![CDATA[software livre]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://alexandre.cuboestudioweb.com/?p=99</guid>
		<description><![CDATA[Quem assina a lista django-brasil recebeu essa mensagem do Luciano Ramalho sobre metaprogramação. Achei muito interressante e demonstra perfeitamente o quão poderosa é a linguagem Python. Estou reproduzindo o texto sem alterações: Em geral não é tedioso programar com o &#8230; <a href="http://alexandre.cuboestudioweb.com/2009/10/um-pouco-de-metaprogramacao/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Quem assina a lista <a href="http://groups.google.com.br/group/django-brasil" target="_blank">django-brasil</a> recebeu essa mensagem do <a href="http://blog.ramgarlic.com/" target="_blank">Luciano Ramalho</a> sobre metaprogramação. Achei muito interressante e demonstra perfeitamente o quão poderosa é a linguagem Python.</p>
<p>Estou reproduzindo o texto sem alterações:</p>
<p>Em geral não é tedioso programar com o Django, mas às vezes é, veja só quanta repetição:</p>
<p># <a href="http://pastebin.com/f2fc7b238" target="_blank">http://pastebin.com/f2fc7b238</a></p>
<pre>class DescriptorInline(admin.TabularInline):
   model = Descriptor

class RecruitmentCountryInline(admin.TabularInline):
   model = RecruitmentCountry

class OutcomeInline(admin.StackedInline):

   model = Outcome

class TrialInterventionCodeInline(admin.TabularInline):

   model = TrialInterventionCode

class SecondaryNumberInline(admin.TabularInline):

   model = TrialNumber

class TrialContactInline(admin.TabularInline):

   model = TrialContact

class TrialInstitutionInline(admin.TabularInline):

   model = TrialInstitution

class ClinicalTrialAdmin(admin.ModelAdmin):

   inlines = [SecondaryNumberInline, RecruitmentCountryInline,

              OutcomeInline, TrialContactInline, TrialInstitutionInline,

              DescriptorInline, TrialInterventionCodeInline]</pre>
<p>No código acima, cada nome de modelo aparece três vezes&#8230; (uma vez ao<br />
declarar a classe XXXInline, no atributo model do inline, e mais uma<br />
vez no atributo inlines).</p>
<p>Além disso, quase todas as declarações de inlines são idênticas&#8230; E o<br />
princípio DRY, como fica?</p>
<p>Felizmente Django é Python. Então aquilo pode ser reescrito de uma<br />
maneira mais legal assim:</p>
<p># <a href="http://pastebin.com/f5af2bd28" target="_blank">http://pastebin.com/f5af2bd28</a></p>
<pre>tabular_inline_models = [Descriptor, RecruitmentCountry, TrialInterventionCode,

                        TrialNumber, TrialContact, TrialInstitution]

tabular_inlines = []

for model in tabular_inline_models:

   cls_name = model.__name__+'Inline'

   cls = type(cls_name, (admin.TabularInline,), {'model':model})

   tabular_inlines.append(cls)

class OutcomeInline(admin.StackedInline):

   model = Outcome

class ClinicalTrialAdmin(admin.ModelAdmin):

   inlines = tabular_inlines + [OutcomeInline]</pre>
<p>O truque aqui foi usar a função type(), que pode ser usada para criar<br />
classes dinamicamente. Para isso a gente passa três argumentos para a<br />
função type():</p>
<p>- uma string que será o __name__ da classe<br />
- uma tupla de super-classes (importante: a vírgula dentro do<br />
parêntesis indica que é uma tupla de um elemento)<br />
- um dicionário com os atributos da classe (métodos e variáveis)</p>
<p>Não tente fazer isso em Java <img src='http://alexandre.cuboestudioweb.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</p>
<p>[ ]s<br />
Luciano</p>
]]></content:encoded>
			<wfw:commentRss>http://alexandre.cuboestudioweb.com/2009/10/um-pouco-de-metaprogramacao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IV Encontro do GruPy-AL</title>
		<link>http://alexandre.cuboestudioweb.com/2009/08/iv-encontro-do-grupy-al/</link>
		<comments>http://alexandre.cuboestudioweb.com/2009/08/iv-encontro-do-grupy-al/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 18:24:28 +0000</pubDate>
		<dc:creator>alexandre</dc:creator>
				<category><![CDATA[eventos]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[grupy-al]]></category>

		<guid isPermaLink="false">http://alexandre.cuboestudioweb.com/?p=96</guid>
		<description><![CDATA[Para quem não sabe faço parte do GruPy-Al. Um grupo de desenvolvedores python do estado de Alagoas. Tudo bem que ainda não é uma participação muito ativa, mas pretendo mudar isso ai. Quinta-feira aconteceu o IV Encontro, no auditório da &#8230; <a href="http://alexandre.cuboestudioweb.com/2009/08/iv-encontro-do-grupy-al/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Para quem não sabe faço parte do GruPy-Al. Um grupo de desenvolvedores python do estado de Alagoas. Tudo bem que ainda não é uma participação muito ativa, mas pretendo mudar isso ai.</p>
<p>Quinta-feira aconteceu o IV Encontro, no auditório da IFAL (antigo CEFET), com a presença de 84 participantes, até agora o encontro com o maior número de participantes. Tudo bem que boa parte do pessoal eram alunos do IFAL, mas isso não vem ao caso.</p>
<p>Foram 3 palestras, uma sobre o wiki <a href="http://moinmo.in/"><em>Moin Moin</em></a>, uma sobre <a href="https://garage.maemo.org/projects/brisa/"><em>BRisa</em></a> e outra sobre BRiGas.</p>
<p>Quem quiser saber mais detalhes sobre o grupo pode acessar a lista de discussão:</p>
<p>http://groups.google.com/group/grupy-al</p>
<p>Ou então acessar o blog:</p>
<p>http://grupyal.blogspot.com/</p>
]]></content:encoded>
			<wfw:commentRss>http://alexandre.cuboestudioweb.com/2009/08/iv-encontro-do-grupy-al/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Templates em PHP, só se for com PHPTAL</title>
		<link>http://alexandre.cuboestudioweb.com/2009/07/templates-em-php-so-se-for-com-phptal/</link>
		<comments>http://alexandre.cuboestudioweb.com/2009/07/templates-em-php-so-se-for-com-phptal/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 18:05:21 +0000</pubDate>
		<dc:creator>alexandre</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[zope]]></category>

		<guid isPermaLink="false">http://alexandre.cuboestudioweb.com/?p=91</guid>
		<description><![CDATA[Para os desenvolvedores PHP segue uma dica de uma ferramenta de templates muito legal! O PHPTAL é um motor de geração de templates para PHP5 que implementa a sintaxe ZPT (Zope Page Templates) ex.: &#60;div class="item" tal:repeat="item itemsArray"&#62; &#60;span tal:condition="item/hasDate" &#8230; <a href="http://alexandre.cuboestudioweb.com/2009/07/templates-em-php-so-se-for-com-phptal/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Para os desenvolvedores PHP segue uma dica de uma ferramenta de templates muito legal!</p>
<p>O <a href="http://phptal.org/" target="_blank">PHPTAL</a> é um motor de geração de templates para PHP5 que implementa a sintaxe ZPT (Zope Page Templates) ex.:</p>
<pre><code><span>&lt;div<span> class</span><span>=</span><span>"item"</span><span> tal:repeat</span><span>=</span><span>"item itemsArray"</span>&gt;</span>
    <span>&lt;span<span> tal:condition</span><span>=</span><span>"item/hasDate"</span><span> tal:replace</span><span>=</span><span>"item/getDate"</span>/&gt;</span>
    <span>&lt;a<span> href</span><span>=</span><span>"${item/getUrl}"</span><span> tal:content</span><span>=</span><span>"item/getTitle"</span>/&gt;</span>
  <span>&lt;p<span> tal:content</span><span>=</span><span>"value/getContent"</span>/&gt;</span>
<span>&lt;/div&gt;
</span></code></pre>
<p>Enquanto a maioria dos desenvolvedores continua a usar tags ASP/JSP/PHP como principal linguagem para seus templates, a comunidade Zope teve a ótima idéia chamada TAL. A idéia era mover a ações para dentro de atributos XHML ao invés de usar outras tags e elementos.</p>
<p>Essa é grande vantagem da sintaxe do ZPT, sua simplicidade, não existem novas tags para aprender, e sim novos atributos que podem ser adicionados a qualquer tag XHTML e que atribuem comportamentos específicos. Esses novos atributos possibilitam ações como: condição, definição, repetição, inclusão de attributos, substituição de conteúdo, entre outros.</p>
<p>No exemplo disponível no site do projeto podemos ver o equivalente ao código acima:</p>
<pre><code><span><span>&lt;?php</span> <span>foreach </span><span>(</span><var>$values</var> <span>as</span> <var>$value</var><span>):</span> <span>?&gt;</span></span>
<span>&lt;div<span> class</span><span>=</span><span>"item"</span>&gt;</span>
  <span>&lt;div<span> class</span><span>=</span><span>"title"</span>&gt;</span>
    <span><span>&lt;?php</span> <span>if </span><span>(</span><var>$value</var><span>-&gt;</span><span>hasDate</span><span>()):</span> <span>?&gt;</span></span><span><span>&lt;?=</span><var>$value</var><span>-&gt;</span><span>getDate</span><span>()</span><span>?&gt;</span></span><span><span>&lt;?php</span> <span>endif</span><span>;</span> <span>?&gt;</span></span>
    <span>&lt;a<span> href</span><span>=</span><span>"<span><span>&lt;?=</span> <var>$value</var><span>-&gt;</span><span>getUrl</span><span>()</span> <span>?&gt;</span></span>"</span>&gt;</span><span><span>&lt;?=</span>
		<span>htmlentities</span><span>(</span><var>$value</var><span>-&gt;</span><span>getTitle</span><span>())</span>
	<span>?&gt;</span></span><span>&lt;/a&gt;</span>
  <span>&lt;/div&gt;</span>
  <span>&lt;div<span> class</span><span>=</span><span>"content"</span>&gt;</span>
    <span><span>&lt;?=</span> <span>htmlentities</span><span>(</span><var>$value</var><span>-&gt;</span><span>getContent</span><span>())</span> <span>?&gt;</span></span>
  <span>&lt;/div&gt;</span>
<span>&lt;/div&gt;</span>
<span><span>&lt;?php</span> <span>endforeach</span><span>;</span> <span>?&gt;</span></span></code></pre>
<p>Nota-se a economia de código fonte que o PHPTAL oferece.</p>
<p>Outra grande vantagem so PHPTAL é que, o tamplates são compilados para código fonte PHP5. Funcionando semelhante a idéia de bytecode em python, onde o código fonte em PHPTAL é compilado para PHP na primeira vez em que for executado, sendo o mesmo somente gerado novamente se o código fonte for alterado.</p>
<p>Abaixo a lista funcionalidades do PHPTAL</p>
<ul>
<li>separação da lógica e apresentação,</li>
<li>avisa se você esquecer de fechar uma tag ou se tem erros no template</li>
<li>templates limpos e legíveis,</li>
<li>fácil integração com editores HTML WYSIWYG,</li>
<li>abstração de dados usando um sistema similar a XPath,</li>
<li>interessante sistema de macros HTML,</li>
<li>sistema de internacionalização integrado (usando gettext),</li>
<li>habilidade de substituir expressões XPath por expressões PHP,</li>
<li>quase nenhuma perda de velocidade (templates são compilados, grandes expressões podem ser substituídas por código PHP,</li>
<li>compatível com aceleradores PHP,</li>
<li>mais de quatro anos de suporte da comunidade ZPT,</li>
<li>código extensível.</li>
</ul>
<p>Bom, segue ai a dica para quem quiser um motor de templates interessante e fácil de aprender.<br />
Mais detalhes no site do projeto: http://phptal.org</p>
<p>Até a próxima.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexandre.cuboestudioweb.com/2009/07/templates-em-php-so-se-for-com-phptal/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>FISL 10 foi mara!</title>
		<link>http://alexandre.cuboestudioweb.com/2009/07/fisl-10-foi-mara/</link>
		<comments>http://alexandre.cuboestudioweb.com/2009/07/fisl-10-foi-mara/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 23:07:00 +0000</pubDate>
		<dc:creator>alexandre</dc:creator>
				<category><![CDATA[eventos]]></category>
		<category><![CDATA[fisl]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[software livre]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://alexandre.cuboestudioweb.com/?p=77</guid>
		<description><![CDATA[Bom, já passou uma semana do FISL10, foi uma semana muito corrida em POA, entre palestras, feira de tecnologia, saídas a noite, ida ao Beira Rio, etc&#8230;.. Com tudo isso não deu para atualizar o blog. Mas agora estou de &#8230; <a href="http://alexandre.cuboestudioweb.com/2009/07/fisl-10-foi-mara/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Bom, já passou uma semana do FISL10, foi uma semana muito corrida em POA, entre palestras, feira de tecnologia, saídas a noite, ida ao Beira Rio, etc&#8230;.. Com tudo isso não deu para atualizar o blog. Mas agora estou de volta ao calor de Maceió e aqui estão minhas impressões da décima edição do Fórum Internacional de Software Livre.</p>
<div id="attachment_78" class="wp-caption alignright" style="width: 160px"><a href="http://alexandre.cuboestudioweb.com/wp-content/uploads/2009/07/SDC12296.JPG"><img class="size-thumbnail wp-image-78" title="FISL 10" src="http://alexandre.cuboestudioweb.com/wp-content/uploads/2009/07/SDC12296-150x150.jpg" alt="FISL 10" width="150" height="150" /></a><p class="wp-caption-text">FISL 10 - Multidão</p></div>
<p>Pra comecar vale dizer que tinha MUITA gente no evento, 7 mil pessoas num so lugar é um pouco claustrofóbico, porém não faltaram atividades para todos durante os 4 dias de evento.</p>
<p>Tinhamos representantes de várias áreas no suporte a causa do Software Livre, como: Free Software Foundation, Mozilla, Ubuntu-br, Fedora, Sun, Oracle, Associação Python Brasil, Globo.com e vários outros.</p>
<p>Muitos brindes! Vai a dica a que se aventurar nas próximas edições do FISL, gaste as primeiras horas do dia inicial para &#8220;caçar&#8221; os brindes. Eles têm de tudo, camisas, adesivos, cds. Nem sempre é de graça, a Mozilla, por exemplo, estava distribuindo camisetas a quem achasse pistas escondidas no galpão da PUC. No último caso pode-se comprar algumas lembraças, mas é bom correr também pois acabam rápido.</p>
<p>As palestras estavam pouas, porém é tanta coisa acontecendo ao mesmo tempo que fica dicifil acompanhar as quem você quer assistir, precisa-se de um pouco de prática. Da proxima vez estarei mais esperto.</p>
<p>Ainda teve a visita do lula, que eu não vi&#8230;. mas foi muito importante para a causa Software Livre o apoio do Goveno Federal.</p>
<p>No final das contas o FISL vale muito a pena, quem tiver a oportunidade de ir não vai se arrepender. Abaixo tem algumas fotos que tirei no evento.</p>
<div id="attachment_79" class="wp-caption alignleft" style="width: 160px"><a href="http://alexandre.cuboestudioweb.com/wp-content/uploads/2009/07/DSC00522.JPG"><img class="size-thumbnail wp-image-79" title="Jogo da Mente" src="http://alexandre.cuboestudioweb.com/wp-content/uploads/2009/07/DSC00522-150x150.jpg" alt="Jogo da Mente" width="150" height="150" /></a><p class="wp-caption-text">Jogo da Mente</p></div>
<div id="attachment_80" class="wp-caption alignleft" style="width: 160px"><a href="http://alexandre.cuboestudioweb.com/wp-content/uploads/2009/07/DSC00524.JPG"><img class="size-thumbnail wp-image-80" title="Placas" src="http://alexandre.cuboestudioweb.com/wp-content/uploads/2009/07/DSC00524-150x150.jpg" alt="Não entendi muito, mas achei legal!" width="150" height="150" /></a><p class="wp-caption-text">PLACAS</p></div>
<div id="attachment_81" class="wp-caption alignleft" style="width: 160px"><a href="http://alexandre.cuboestudioweb.com/wp-content/uploads/2009/07/DSC00529.JPG"><img class="size-thumbnail wp-image-81" title="Richard Stallman" src="http://alexandre.cuboestudioweb.com/wp-content/uploads/2009/07/DSC00529-150x150.jpg" alt="Richard Stallman" width="150" height="150" /></a><p class="wp-caption-text">Richard Stallman</p></div>
<div id="attachment_82" class="wp-caption alignleft" style="width: 160px"><a href="http://alexandre.cuboestudioweb.com/wp-content/uploads/2009/07/DSC00541.JPG"><img class="size-thumbnail wp-image-82" title="CAIXA" src="http://alexandre.cuboestudioweb.com/wp-content/uploads/2009/07/DSC00541-150x150.jpg" alt="CAIXA" width="150" height="150" /></a><p class="wp-caption-text">CAIXA</p></div>
<div id="attachment_83" class="wp-caption alignleft" style="width: 160px"><a href="http://alexandre.cuboestudioweb.com/wp-content/uploads/2009/07/SDC12282.JPG"><img class="size-thumbnail wp-image-83" title="Credenciamento" src="http://alexandre.cuboestudioweb.com/wp-content/uploads/2009/07/SDC12282-150x150.jpg" alt="Credenciamento" width="150" height="150" /></a><p class="wp-caption-text">Credenciamento</p></div>
<div id="attachment_84" class="wp-caption alignleft" style="width: 160px"><a href="http://alexandre.cuboestudioweb.com/wp-content/uploads/2009/07/SDC12290.JPG"><img class="size-thumbnail wp-image-84" title="SERPRO" src="http://alexandre.cuboestudioweb.com/wp-content/uploads/2009/07/SDC12290-150x150.jpg" alt="SERPRO" width="150" height="150" /></a><p class="wp-caption-text">SERPRO</p></div>
<div id="attachment_85" class="wp-caption alignleft" style="width: 160px"><a href="http://alexandre.cuboestudioweb.com/wp-content/uploads/2009/07/SDC12297.JPG"><img class="size-thumbnail wp-image-85" title="Bolinhas da SUN" src="http://alexandre.cuboestudioweb.com/wp-content/uploads/2009/07/SDC12297-150x150.jpg" alt="Bolinhas da SUN" width="150" height="150" /></a><p class="wp-caption-text">Bolinhas da SUN</p></div>
<div class="clear"></div>
]]></content:encoded>
			<wfw:commentRss>http://alexandre.cuboestudioweb.com/2009/07/fisl-10-foi-mara/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chegamos em POA</title>
		<link>http://alexandre.cuboestudioweb.com/2009/06/chegamos-em-poa/</link>
		<comments>http://alexandre.cuboestudioweb.com/2009/06/chegamos-em-poa/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 22:51:25 +0000</pubDate>
		<dc:creator>alexandre</dc:creator>
				<category><![CDATA[eventos]]></category>
		<category><![CDATA[fisl]]></category>
		<category><![CDATA[software livre]]></category>

		<guid isPermaLink="false">http://alexandre.cuboestudioweb.com/?p=74</guid>
		<description><![CDATA[Depois de um vôo meio turbulento pousamos em POA agora a noite. Muita chuva e frio nessa noite de terça feira. Amanhã começa o FISL. Em breve as fotos!!]]></description>
			<content:encoded><![CDATA[<p>Depois de um vôo meio turbulento pousamos em POA agora a noite. Muita chuva e frio nessa noite de terça feira. Amanhã começa o FISL.</p>
<p>Em breve as fotos!!</p>
]]></content:encoded>
			<wfw:commentRss>http://alexandre.cuboestudioweb.com/2009/06/chegamos-em-poa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

