<?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>Lucas Teixeira &#187; dica</title>
	<atom:link href="http://lucastex.com.br/tag/dica/feed/" rel="self" type="application/rss+xml" />
	<link>http://lucastex.com.br</link>
	<description>@lucastex</description>
	<lastBuildDate>Fri, 07 Jan 2011 12:44:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Usando o textmate como editor de texto padrão do Mac</title>
		<link>http://lucastex.com.br/2010/04/20/usando-o-textmate-como-editor-de-texto-padrao-do-mac/</link>
		<comments>http://lucastex.com.br/2010/04/20/usando-o-textmate-como-editor-de-texto-padrao-do-mac/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 22:18:55 +0000</pubDate>
		<dc:creator>Lucas Teixeira</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[dica]]></category>
		<category><![CDATA[textmate]]></category>

		<guid isPermaLink="false">http://lucastex.com.br/?p=365</guid>
		<description><![CDATA[

Uma coisa bem chata que acontece, é que quando tentava abrir arquivos com a extensão txt no Mac, sempre abria o TextEdit, o editor padrão do Mac OS.
É um editor muito simples e pouco funcional, o que me fazia todas as vezes buscar o textmate para editar e trabalhar com os arquivos. Resolvi definir ele [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Flucastex.com.br%252F2010%252F04%252F20%252Fusando-o-textmate-como-editor-de-texto-padrao-do-mac%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FdmMdHF%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Usando%20o%20textmate%20como%20editor%20de%20texto%20padr%C3%A3o%20do%20Mac%22%20%7D);"></div>
<p>Uma coisa bem chata que acontece, é que quando tentava abrir arquivos com a extensão txt no Mac, sempre abria o TextEdit, o editor padrão do Mac OS.</p>
<p>É um editor muito simples e pouco funcional, o que me fazia todas as vezes buscar o textmate para editar e trabalhar com os arquivos. Resolvi definir ele como padrão da seguinte forma</p>
<ol>
<li>Localize algum arquivo com a extensão que quer mudar (no meu caso, .txt)</li>
<li>Vá em propriedades deste arquivo (ou selecione-o e aperte cmd+I)</li>
<li>Na &#8216;aba&#8217; &#8220;Open with&#8221;, selecione o programa que deseja usar</li>
<li>Selecione o botão &#8220;Change All&#8221; para setar como padrão para todos os arquivos deste tipo.</li>
</ol>
<p>Pronto, agora os arquivos TXT serão abertos diretamente no Textmate!</p>

]]></content:encoded>
			<wfw:commentRss>http://lucastex.com.br/2010/04/20/usando-o-textmate-como-editor-de-texto-padrao-do-mac/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Como acessar uma taglib de dentro de um service</title>
		<link>http://lucastex.com.br/2010/02/03/como-acessar-uma-taglib-de-dentro-de-um-service/</link>
		<comments>http://lucastex.com.br/2010/02/03/como-acessar-uma-taglib-de-dentro-de-um-service/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 00:35:31 +0000</pubDate>
		<dc:creator>Lucas Teixeira</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[controller]]></category>
		<category><![CDATA[dica]]></category>
		<category><![CDATA[service]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[taglib]]></category>

		<guid isPermaLink="false">http://lucastex.com.br/?p=277</guid>
		<description><![CDATA[

Uma situação que acontece muito, é a reutilização das funções de taglibs dentro dos controllers de sua aplicação grails. Isso é muito fácil de se fazer, basta chamar o método usando o objeto com o nome do namespace da taglib.
Ou seja, para usar dentro do controller a função de formatação de números, definida pela função [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Flucastex.com.br%252F2010%252F02%252F03%252Fcomo-acessar-uma-taglib-de-dentro-de-um-service%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FblFNGk%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Como%20acessar%20uma%20taglib%20de%20dentro%20de%20um%20service%22%20%7D);"></div>
<p>Uma situação que acontece muito, é a reutilização das funções de taglibs dentro dos controllers de sua aplicação grails. Isso é muito fácil de se fazer, basta chamar o método usando o objeto com o nome do namespace da taglib.<br />
Ou seja, para usar dentro do controller a função de formatação de números, definida pela função formatNumber (<a href="http://grails.org/doc/latest/ref/Tags/formatNumber.html" target="_blank">taglib já no core do grails</a>), é só fazer a chamada assim:</p>
<pre class="brush: groovy; title: ;">def myAction = {
render g.formatNumber([number:5000.234, type: &quot;number&quot;, maxFractionDigits: 2])
}</pre>
<p>Esta função é equivalente a chamar a taglib de dentro de um gsp da seguinte maneira:</p>
<pre class="brush: xml; title: ;">&lt;g:formatNumber number=&quot;5000.234&quot; type=&quot;number&quot; maxFractionDigits=&quot;2&quot; /&gt;</pre>
<p>Mas quando precisamos fazer isto, por exemplo, dentro de um service, encontramos um probleminha chato, as taglibs não são injetadas automaticamente. Para contornar essa &#8220;<a href="http://upload.wikimedia.org/wikipedia/commons/7/7d/Bug.png" target="_blank">situação</a>&#8220;, temos que buscar a taglib manualmente, da seguinte maneira:</p>
<pre class="brush: groovy; title: ;">def myTag = grailsApplication.mainContext.
            getBean('org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib')
def value = myTag.formatNumber([number:5000.234, type: &quot;number&quot;, maxFractionDigits: 2])</pre>
<p>Ahhh, para isso não se esqueca de injetar o objeto da grailsApplication da seguinte maneira</p>
<pre class="brush: groovy; title: ;">class MeuService {
   def grailsApplication
   (...)
}</pre>
<p>Bin-go.</p>

]]></content:encoded>
			<wfw:commentRss>http://lucastex.com.br/2010/02/03/como-acessar-uma-taglib-de-dentro-de-um-service/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Usando JNDI na configuração do DataImportHandler</title>
		<link>http://lucastex.com.br/2010/01/18/usando-jndi-na-configuracao-do-dataimporthandler/</link>
		<comments>http://lucastex.com.br/2010/01/18/usando-jndi-na-configuracao-do-dataimporthandler/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 11:27:03 +0000</pubDate>
		<dc:creator>Lucas Teixeira</dc:creator>
				<category><![CDATA[Solr]]></category>
		<category><![CDATA[dataimporthandler]]></category>
		<category><![CDATA[dica]]></category>
		<category><![CDATA[indexação]]></category>
		<category><![CDATA[jndi]]></category>

		<guid isPermaLink="false">http://lucastex.com.br/?p=254</guid>
		<description><![CDATA[

Quer evitar que suas credenciais (usuário e senha) estejam abertas no seu data-config.xml? A melhor alternativa com certeza é usar um datasource JNDI para isso e manter usuário, senha e url de conexão do banco de dados dentro do cointainer.
Para isso, é só declarar a tag dataSource do data-config.xml desta maneira:
&#60;dataSource user=&#34;&#34; password=&#34;&#34; jndiName=&#34;JndiDoMeuDs&#34;
Sim, os [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Flucastex.com.br%252F2010%252F01%252F18%252Fusando-jndi-na-configuracao-do-dataimporthandler%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2F5PuEzp%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Usando%20JNDI%20na%20configura%C3%A7%C3%A3o%20do%20DataImportHandler%22%20%7D);"></div>
<p>Quer evitar que suas credenciais (usuário e senha) estejam abertas no seu <strong>data-config.xml</strong>? A melhor alternativa com certeza é usar um datasource JNDI para isso e manter usuário, senha e url de conexão do banco de dados dentro do cointainer.</p>
<p>Para isso, é só declarar a tag <strong>dataSource</strong> do <strong>data-config.xml</strong> desta maneira:</p>
<pre class="brush: xml; title: ;">&lt;dataSource user=&quot;&quot; password=&quot;&quot; jndiName=&quot;JndiDoMeuDs&quot;</pre>
<p>Sim, os parametros <strong>user</strong> e <strong>password</strong> devem ser declados vazios, não se esqueça disso.</p>

]]></content:encoded>
			<wfw:commentRss>http://lucastex.com.br/2010/01/18/usando-jndi-na-configuracao-do-dataimporthandler/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Config.groovy &#8211; Cuidado ao manipular suas configurações</title>
		<link>http://lucastex.com.br/2010/01/11/config-groovy-cuidado-ao-manipular-suas-configuracoes/</link>
		<comments>http://lucastex.com.br/2010/01/11/config-groovy-cuidado-ao-manipular-suas-configuracoes/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 00:18:00 +0000</pubDate>
		<dc:creator>Lucas Teixeira</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Maldades do Groovy]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[dica]]></category>
		<category><![CDATA[grailsapplication]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[problema]]></category>
		<category><![CDATA[referencia]]></category>

		<guid isPermaLink="false">http://lucastex.com.br/?p=234</guid>
		<description><![CDATA[

Hum, reportando uma situação no mínimo inusitada que tive por aqui.
Acabei descobrindo, da maneira ruim, que no Grails, quando lêmos a configuração da aplicação (Config.groovy) através da referência grailsApplication.config estamos manipulando uma variável passível de alterações, ou seja, qualquer atributo que você recuperar de lá, e modificar, assim estará para toda a execução.
Na minha situação, [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Flucastex.com.br%252F2010%252F01%252F11%252Fconfig-groovy-cuidado-ao-manipular-suas-configuracoes%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2F6RuMHa%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Config.groovy%20-%20Cuidado%20ao%20manipular%20suas%20configura%C3%A7%C3%B5es%20%22%20%7D);"></div>
<p>Hum, reportando uma situação no mínimo inusitada que tive por aqui.</p>
<p>Acabei descobrindo, da maneira ruim, que no Grails, quando lêmos a configuração da aplicação (Config.groovy) através da referência <strong>grailsApplication.config</strong> estamos manipulando uma variável passível de alterações, ou seja, qualquer atributo que você recuperar de lá, e modificar, assim estará para toda a execução.</p>
<p>Na minha situação, eu mantinha uma lista de e-mails lá no arquivo de configuração para que quando disparado, eu pudesse enviar o e-mail a estes destinatários somados ao e-mail do usuário, que tinha acabado de ser inputado no formulário. Tinha algo assim:</p>
<pre class="brush: groovy; title: ;">contato.destinatarios = [&quot;email1@xpto.com&quot;, &quot;email2@xpto.com&quot;, &quot;email3@xpto.com&quot;]</pre>
<p>E dentro do controller, usando o mail plugin (<a href="http://lucastex.com.br/2010/01/02/envio-de-e-mails-com-o-mail-plugin/">leia este post sobre o mail plugin</a>), executava o seguinte trecho de código:</p>
<pre class="brush: groovy; title: ;">def destinatarios = grailsApplication.config.contato?.destinatarios?.toArray()
destinatarios &lt;&lt; params.email
sendMail {
    to destinatarios
    subject &quot;Contato ...&quot;
    body &quot;......&quot;
 }</pre>
<p>Ou seja, quando eu pegava a referência dos destinatários do Config, eu mantinha essa referência em &#8216;destinatários&#8217;. Quando eu adicionava neste array o destinatário que vinha do formulários &#8220;params.email&#8221;, eu alterava a *instância* e referência da configuração da aplicação, e aquele e-mail ali ficava.</p>
<p>Resultado, no primeiro contato, receberam o e-mail a lista de destinatários e o primeirocontato@xpto.com, na segunda execução, todos eles da configuração, o primeirocontato@xpto.com e também o segundocontato@xpto.com foram copiados.</p>
<p>E assim sucessivamente.</p>
<p>Vivendo e aprendendo, tomem cuidado com isso!</p>

]]></content:encoded>
			<wfw:commentRss>http://lucastex.com.br/2010/01/11/config-groovy-cuidado-ao-manipular-suas-configuracoes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Grails e GORM: Logando as consultas SQL no console</title>
		<link>http://lucastex.com.br/2009/11/05/grails-e-gorm-logando-as-consultas-sql-no-console/</link>
		<comments>http://lucastex.com.br/2009/11/05/grails-e-gorm-logando-as-consultas-sql-no-console/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 13:38:57 +0000</pubDate>
		<dc:creator>Lucas Teixeira</dc:creator>
				<category><![CDATA[GORM]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[dica]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://lucastex.com.br/?p=137</guid>
		<description><![CDATA[

Uma dica pra acompanhar o uso do seu banco de dados, e saber o que o hibernate e o gorm estão fazendo por trás dos panos, é logar as queries que estão sendo feitas.
Você pode acompanhar isto detalhadamente configurando seu DataSource.groovy para fazer isso com o parâmetro loggingSql. E o mais bacana na minha opinião [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Flucastex.com.br%252F2009%252F11%252F05%252Fgrails-e-gorm-logando-as-consultas-sql-no-console%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Grails%20e%20GORM%3A%20Logando%20as%20consultas%20SQL%20no%20console%22%20%7D);"></div>
<p>Uma dica pra acompanhar o uso do seu banco de dados, e saber o que o <a href="https://www.hibernate.org/" target="_blank">hibernate</a> e o <a href="http://grails.org/GORM" target="_blank">gorm</a> estão fazendo por trás dos panos, é logar as queries que estão sendo feitas.</p>
<p>Você pode acompanhar isto detalhadamente configurando seu <strong>DataSource.groovy </strong>para fazer isso com o parâmetro <strong>loggingSql</strong>. E o mais bacana na minha opinião é poder fazer isso de forma independente para cada ambiente. Lembre-se que por default esta configuração vem desligada.</p>
<pre class="brush: groovy; title: ;">environments {
  development {
    dataSource {
      url = &quot;...&quot;    //banco de dev
      loggingSql = true
    }
  }
  test {
    dataSource {
      url = &quot;...&quot; //banco de testes
    }
  }
  production {
    dataSource {
      url = &quot;...&quot; //banco de produção
    }
  }
}</pre>

]]></content:encoded>
			<wfw:commentRss>http://lucastex.com.br/2009/11/05/grails-e-gorm-logando-as-consultas-sql-no-console/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

