<?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>Eliezer Rodrigues &#187; Python</title>
	<atom:link href="http://www.eliezer.com.br/post/tag/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.eliezer.com.br</link>
	<description>Desenvolvimento de software, linguagens de programação, artigos, utils, scrum, testes, linux e tecnologia de um modo geral</description>
	<lastBuildDate>Thu, 08 Apr 2010 12:42:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Template Engine em Python &#8211; Cheetah</title>
		<link>http://www.eliezer.com.br/post/template-engine-em-python-cheetah/</link>
		<comments>http://www.eliezer.com.br/post/template-engine-em-python-cheetah/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 04:38:32 +0000</pubDate>
		<dc:creator>eliezer</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[boas praticas]]></category>
		<category><![CDATA[cheetah]]></category>
		<category><![CDATA[legal]]></category>
		<category><![CDATA[template]]></category>

		<guid isPermaLink="false">http://www.eliezer.com.br/?p=76</guid>
		<description><![CDATA[Um modulo simples para python, cheetah. Ele tem tudo que programadores python gosta, simples, bem documentado, comunidade ativa, rápido, possui um mecanismo de cache entre outras funcionalidades. Onde baixar? http://www.cheetahtemplate.org Instalando 1 python setup.py install Criando um objeto simples Cliente 1 2 3 4 class Cliente&#40;&#41;: def __init__&#40;self, nome, email&#41;: self.nome = nome self.email = [...]]]></description>
			<content:encoded><![CDATA[<p>Um modulo simples para python, cheetah. Ele tem tudo que programadores python gosta, simples, bem documentado, comunidade ativa, rápido, possui um mecanismo de cache entre outras funcionalidades.</p>
<li>Onde baixar?</li>
<p><a href="http://www.cheetahtemplate.org">http://www.cheetahtemplate.org</a></p>
<li>Instalando</li>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="python" style="font-family:monospace;">python setup.<span style="color: black;">py</span> install</pre></td></tr></table></div>

<li>Criando um objeto simples Cliente</li>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">class</span> Cliente<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
	<span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, nome, <span style="color: #dc143c;">email</span><span style="color: black;">&#41;</span>:
		<span style="color: #008000;">self</span>.<span style="color: black;">nome</span> = nome
		<span style="color: #008000;">self</span>.<span style="color: #dc143c;">email</span> = <span style="color: #dc143c;">email</span></pre></td></tr></table></div>

<li>Criando um template</li>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">html</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">head</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">title</span>&gt;</span>$title<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">title</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
	#for $cliente in $clientes        
		<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
		<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">b</span>&gt;</span>$cliente.nome<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">b</span>&gt;</span>
		(<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;mailto:$cliente.email&quot;</span>&gt;</span>$cliente.email<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>)
		<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
	#end for
	<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">html</span>&gt;</span></pre></td></tr></table></div>

<li>Executando</li>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">from</span> Cheetah.<span style="color: black;">Template</span> <span style="color: #ff7700;font-weight:bold;">import</span> Template
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">&quot;__main__&quot;</span>:
&nbsp;
	clientes = <span style="color: black;">&#91;</span>Cliente<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Eliezer Rodrigues&quot;</span>, <span style="color: #483d8b;">&quot;eliezer@teste.net&quot;</span><span style="color: black;">&#41;</span>, 
                       Cliente<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Maria&quot;</span>, <span style="color: #483d8b;">&quot;maria@teste.net&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#93;</span>
&nbsp;
	template = Template<span style="color: black;">&#40;</span><span style="color: #008000;">file</span>=<span style="color: #483d8b;">&quot;page.tpl&quot;</span><span style="color: black;">&#41;</span>
	template.<span style="color: black;">title</span> = <span style="color: #483d8b;">&quot;Todos os clientes&quot;</span>
	template.<span style="color: black;">clientes</span> = clientes
&nbsp;
	<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>template<span style="color: black;">&#41;</span></pre></td></tr></table></div>

<li>Resultado:</li>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">html</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">head</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">title</span>&gt;</span>Todos os clientes<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">title</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
        <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
                <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
                <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">b</span>&gt;</span>Eliezer Rodrigues<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">b</span>&gt;</span>
                (<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;mailto:eliezer@teste.net&quot;</span>&gt;</span>eliezer@teste.net<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>)
                <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
                <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
                <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">b</span>&gt;</span>Maria<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">b</span>&gt;</span>
                (<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;mailto:maria@teste.net&quot;</span>&gt;</span>maria@teste.net<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>)
                <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
        <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">body</span>&gt;</span></pre></td></tr></table></div>

<p>Curtiu?? para saber mais sobre o projeto entre no<a href="http://www.cheetahtemplate.org/docs/users_guide_html/"> guia do usuário</a> e confira tudo sobre o cheetah.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eliezer.com.br/post/template-engine-em-python-cheetah/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Persistência em Python com módulo Shelve</title>
		<link>http://www.eliezer.com.br/post/persistencia-em-python-com-modulo-shelve/</link>
		<comments>http://www.eliezer.com.br/post/persistencia-em-python-com-modulo-shelve/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 06:41:53 +0000</pubDate>
		<dc:creator>eliezer</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[persistência]]></category>

		<guid isPermaLink="false">http://www.eliezer.com.br/?p=21</guid>
		<description><![CDATA[Uma das coisa que atualmente mais acho legal em programação é Python. É muito bem documentado, simples e rápido. Em um projeto open source que estou parcipando, o Peanut [Explico melhor em um outro post ], tive que persistir uma configuração do software, e com isso veio a possibilidade de utilizar o módulo shelve do [...]]]></description>
			<content:encoded><![CDATA[<p>Uma das coisa que atualmente mais acho legal em programação é Python. É muito bem documentado, simples e rápido. Em um projeto open source que estou parcipando, o Peanut [Explico melhor em um outro post <img src='http://www.eliezer.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ], tive que persistir uma configuração do software, e com isso veio a possibilidade de utilizar o módulo shelve do python.</p>
<p>O shelve foi criado para trabalhar com persistência de dicionários (dict) python em arquivo. Para operações simples, configuração, dados não muito grandes, é perfeito. Sua chave sempre deve ser uma string.</p>
<p>Como a maioria dos módulos em python, é tudo muito simples:</p>
<p><strong>Exemplo 1: Vamos salvar uma lista de e-mail em um arquivo</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">shelve</span>
emails = <span style="color: #dc143c;">shelve</span>.<span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'emails.db'</span><span style="color: black;">&#41;</span>
&nbsp;
emails<span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;maria&quot;</span><span style="color: black;">&#93;</span> = <span style="color: #483d8b;">&quot;exemplo@maria.com.br&quot;</span>
emails<span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;joao&quot;</span><span style="color: black;">&#93;</span> = <span style="color: #483d8b;">&quot;exemplo@joao.com.br&quot;</span>
&nbsp;
emails.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>Recuperando os e-mails</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">shelve</span>
emails = <span style="color: #dc143c;">shelve</span>.<span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'emails.db'</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> emails<span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;maria&quot;</span><span style="color: black;">&#93;</span>
&nbsp;
emails.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p><br/><strong>Exemplo 2: Persistência de um objeto mais completo</strong></p>
<p>Criação de um objeto simples</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">class</span> Profile<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
   <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, name, <span style="color: #008000;">type</span>, username, password=<span style="color: #008000;">None</span>, auto_login=<span style="color: #483d8b;">'off'</span><span style="color: black;">&#41;</span>:
   <span style="color: #008000;">self</span>.<span style="color: black;">name</span> = name
   <span style="color: #008000;">self</span>.<span style="color: #008000;">type</span> = <span style="color: #008000;">type</span>
   <span style="color: #008000;">self</span>.<span style="color: black;">username</span> = username
   <span style="color: #008000;">self</span>.<span style="color: black;">password</span> = password
   <span style="color: #008000;">self</span>.<span style="color: black;">auto_login</span> = auto_login</pre></td></tr></table></div>

<p>Classe util para acesso a shelve</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">shelve</span>
<span style="color: #ff7700;font-weight:bold;">class</span> Db<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
&nbsp;
  <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
    <span style="color: #008000;">self</span>.__db = <span style="color: #dc143c;">shelve</span>.<span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;profiles.db&quot;</span><span style="color: black;">&#41;</span>
&nbsp;
  <span style="color: #ff7700;font-weight:bold;">def</span> close<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
    <span style="color: #008000;">self</span>.__db.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
  <span style="color: #ff7700;font-weight:bold;">def</span> add<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, <span style="color: #dc143c;">profile</span><span style="color: black;">&#41;</span>:
    <span style="color: #008000;">self</span>.__db<span style="color: black;">&#91;</span><span style="color: #dc143c;">profile</span>.<span style="color: black;">name</span><span style="color: black;">&#93;</span> = <span style="color: #dc143c;">profile</span><span style="color: #66cc66;">;</span>
&nbsp;
  <span style="color: #ff7700;font-weight:bold;">def</span> size<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.__db<span style="color: black;">&#41;</span>
&nbsp;
  <span style="color: #ff7700;font-weight:bold;">def</span> find_all<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">self</span>.__db.<span style="color: black;">values</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span>
&nbsp;
  <span style="color: #ff7700;font-weight:bold;">def</span> get<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, key<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">self</span>.__db<span style="color: black;">&#91;</span>key<span style="color: black;">&#93;</span>
&nbsp;
  <span style="color: #ff7700;font-weight:bold;">def</span> get_first<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">self</span>.<span style="color: black;">get</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.__db.<span style="color: black;">keys</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>Inserindo um perfil</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="python" style="font-family:monospace;">db = Db<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
db.<span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #dc143c;">profile</span> = Profile<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;maria&quot;</span>, <span style="color: #483d8b;">&quot;user&quot;</span>, <span style="color: #483d8b;">&quot;mariazinha&quot;</span>, <span style="color: #483d8b;">&quot;123&quot;</span><span style="color: black;">&#41;</span>
db.<span style="color: black;">add</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">profile</span><span style="color: black;">&#41;</span>
db.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.eliezer.com.br/post/persistencia-em-python-com-modulo-shelve/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
