<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Hidenowt's Weblog by Herminio Torres.</title>
	<atom:link href="http://hidenowt.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://hidenowt.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Sat, 28 Feb 2009 03:48:43 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='hidenowt.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Hidenowt's Weblog by Herminio Torres.</title>
		<link>http://hidenowt.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://hidenowt.wordpress.com/osd.xml" title="Hidenowt&#039;s Weblog by Herminio Torres." />
	<atom:link rel='hub' href='http://hidenowt.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Mudei meu blog de domínio!</title>
		<link>http://hidenowt.wordpress.com/2009/02/28/mudei-meu-blog-de-dominio/</link>
		<comments>http://hidenowt.wordpress.com/2009/02/28/mudei-meu-blog-de-dominio/#comments</comments>
		<pubDate>Sat, 28 Feb 2009 03:48:43 +0000</pubDate>
		<dc:creator>hidenowt</dc:creator>
				<category><![CDATA[Sem-categoria]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[meu]]></category>
		<category><![CDATA[mudei]]></category>

		<guid isPermaLink="false">http://hidenowt.wordpress.com/?p=56</guid>
		<description><![CDATA[Sim mudei, mudei de domínio, estou utilizando o meu próprio domínio, HerminioTorres.com Sim, se alguem assinava o feed desse blog, também quero informar que o feed alterou, estou utilizando um novo feed. Publicado emSem-categoria Tagged: blog, meu, mudei<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hidenowt.wordpress.com&amp;blog=1989264&amp;post=56&amp;subd=hidenowt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sim mudei, mudei de domínio, estou utilizando o meu próprio domínio, <a href="http://www.herminiotorres.com" target="_blank">HerminioTorres.com</a></p>
<p>Sim, se alguem assinava o feed desse blog, também quero informar que o feed alterou, estou utilizando um <a href="http://feeds.feedburner.com/HerminioTorres" target="_blank">novo feed</a>.</p>
<br />Publicado emSem-categoria Tagged: blog, meu, mudei <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hidenowt.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hidenowt.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hidenowt.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hidenowt.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hidenowt.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hidenowt.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hidenowt.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hidenowt.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hidenowt.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hidenowt.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hidenowt.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hidenowt.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hidenowt.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hidenowt.wordpress.com/56/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hidenowt.wordpress.com&amp;blog=1989264&amp;post=56&amp;subd=hidenowt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hidenowt.wordpress.com/2009/02/28/mudei-meu-blog-de-dominio/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8c0de411472c66cc9ea9bb7c4a80b6be?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hidenowt</media:title>
		</media:content>
	</item>
		<item>
		<title>Code Kata? O que &#233; isto?</title>
		<link>http://hidenowt.wordpress.com/2008/11/13/code-kata-o-que-isto/</link>
		<comments>http://hidenowt.wordpress.com/2008/11/13/code-kata-o-que-isto/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 15:16:28 +0000</pubDate>
		<dc:creator>hidenowt</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[aprender]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[kata]]></category>
		<category><![CDATA[treino]]></category>

		<guid isPermaLink="false">http://hidenowt.wordpress.com/2008/11/13/code-kata-o-que-isto/</guid>
		<description><![CDATA[Dave Thomas escreveu uma serie de Code Kata. Bem mas qual é a ideia desse Code Kata? Bem o code kata faz a mesma referencia ao kata do karatê. Onde o kata descreve uma simulação real, que é praticada constantemente. O praticante deve passar por uma seqüência de técnicas, aonde se vai adquirindo experiências conforme [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hidenowt.wordpress.com&amp;blog=1989264&amp;post=45&amp;subd=hidenowt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Dave Thomas escreveu uma serie de Code Kata.</p>
<p>Bem mas qual é a ideia desse Code Kata? Bem o code kata faz a mesma referencia ao kata do karatê. Onde o kata descreve uma simulação real, que é praticada constantemente. O praticante deve passar por uma seqüência de técnicas, aonde se vai adquirindo experiências conforme for aumentando o nivel. Esta simulação representa uma seqüência de movimentos. Cada movimento tem sua interpretação e é assim como cada desenvolvedor deveria vê os problemas que ele tem que resolver. O objetivo do code kata é a resolução desses problemas e onde a pessoa pode está constantemente desenvolvendo novos katas para resolver o mesmo problema e com isso a pratica se torne tão natural na interação homem &#8211; maquina, para a resolução dos problemas. E com isso ajudar no desenvolvimento das aptidões psicológicas e físicas necessárias para os problemas reais, que nos desenvolvedores iremos enfrentar. O Dave Thomas disponibilizou uma serie contendo 21 code katas para essa pratica.</p>
<p>Site: <a href="http://codekata.pragprog.com">http://codekata.pragprog.com</a></p>
<br />Publicado emProgramação Tagged: aprender, code, kata, Programação, treino <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hidenowt.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hidenowt.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hidenowt.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hidenowt.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hidenowt.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hidenowt.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hidenowt.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hidenowt.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hidenowt.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hidenowt.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hidenowt.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hidenowt.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hidenowt.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hidenowt.wordpress.com/45/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hidenowt.wordpress.com&amp;blog=1989264&amp;post=45&amp;subd=hidenowt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hidenowt.wordpress.com/2008/11/13/code-kata-o-que-isto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8c0de411472c66cc9ea9bb7c4a80b6be?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hidenowt</media:title>
		</media:content>
	</item>
		<item>
		<title>Ruby On Rails &#8211; Associa&#231;&#245;es no ActiveRecord</title>
		<link>http://hidenowt.wordpress.com/2008/11/10/ruby-on-rails-associaes-no-activerecord/</link>
		<comments>http://hidenowt.wordpress.com/2008/11/10/ruby-on-rails-associaes-no-activerecord/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 17:23:41 +0000</pubDate>
		<dc:creator>hidenowt</dc:creator>
				<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[activerecord]]></category>
		<category><![CDATA[associações]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[relacionamentos]]></category>

		<guid isPermaLink="false">http://hidenowt.wordpress.com/2008/11/10/ruby-on-rails-associaes-no-activerecord/</guid>
		<description><![CDATA[Associações – ActiveRecord Este guia aborda as características de associação do ActiveRecord. Ao fazer referência a este guia, você será capaz de: · Declarar associações entre os Models do ActiveRecord. · Compreender os diferentes tipos de associações do ActiveRecord. · Utilizar os métodos adicionados aos seus modelos através das associações criadas. 1. Associações, Por quê? [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hidenowt.wordpress.com&amp;blog=1989264&amp;post=41&amp;subd=hidenowt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h3>Associações – ActiveRecord</h3>
<p>Este guia aborda as características de associação do <span style="text-decoration:underline;">ActiveRecord</span>. Ao fazer referência a este guia, você será capaz de:</p>
<p>· Declarar associações entre os Models do ActiveRecord.</p>
<p>· Compreender os diferentes tipos de associações do ActiveRecord.</p>
<p>· Utilizar os métodos adicionados aos seus modelos através das associações criadas.</p>
<h4>1. Associações, Por quê?</h4>
<p>Por que precisamos de associações entre os modelos? Porque tornam mais fácil e mais simples operações comuns no código. Considere, por exemplo, uma simples aplicação Rails que inclui um modelo para os clientes e um modelo para as encomendas. Cada cliente pode ter muitas encomendas. Sem as associações, os modelos de declarações seriam mais ou menos assim:</p>
<pre class="brush: ruby;">
class Customer &lt; ActiveRecord::Base
end

class Order &lt; ActiveRecord::Base
end
</pre>
<p>Agora, suponha se quisesse acrescentar uma nova encomenda de um cliente existente. Gostaríamos de fazer algo parecido com isto:</p>
<pre class="brush: ruby;">
@order = Order.create(:order_date =&gt; Time.now, :customer_id =&gt; @customer.id)
</pre>
<p>Ou apagar um cliente, e garantindo que todas as suas ordens fossem excluídas também:</p>
<pre class="brush: ruby;">
@orders = Order.find_by_customer_id(@customer.id)
@orders.each do |order|
  order.destroy
end
@customer.destroy
</pre>
<p>Com as associações do ActiveRecord, que podemos simplificar &#8211; e outras &#8211; operações por declarações dizendo que existe uma conexão entre os dois modelos. Veja abaixo o código revisado para a criação de clientes e encomendas:</p>
<pre class="brush: ruby;">
class Customer &lt; ActiveRecord::Base
  has_many :orders
end

class Order &lt; ActiveRecord::Base
  belongs_to :customer
end
</pre>
<p>Com essa mudança, criando uma nova ordem para um determinado cliente é mais fácil:</p>
<pre class="brush: ruby;">
@order = @customer.orders.create(:order_date =&gt; Time.now)
</pre>
<p>Excluindo um cliente e todas as suas encomendas é <em>muito mais fácil:</em></p>
<pre class="brush: ruby;">
@customer.destroy
</pre>
<p>Para saber mais sobre os diferentes tipos de associações, leia a próxima seção deste Guia. Seguido por alguns truques e dicas para trabalhar com as associações e, em seguida, por uma referência completa para os métodos e opções para as associações em Rails.</p>
<h4>2. Os tipos de associações</h4>
<p>Em Rails, uma <em>associação é</em> uma conexão entre os dois modelos do ActiveRecord. As associações são implementadas usando macro de chamadas, de modo que você pode adicionar funcionalidades nos seus modelos. Por exemplo, declarando que um modelo possui <tt>belongs_to</tt> com outro, você instrui o Rails a manter as informações de Chave Primária entre instâncias dos dois modelos, e você também receberá um número métodos úteis adicionado ao seu modelo. Rails suporta seis tipos de associação:</p>
<pre class="brush: ruby;">
* belongs_to 

* has_one 

* has_many 

* has_many :through 

* has_one :through 

* has_and_belongs_to_many
</pre>
<p>No restante deste guia, você aprenderá a declarar e utilizar as diversas formas de associações. Mas, primeiro, uma introdução rápida a situações em que cada tipo de associação é adequado.</p>
<h5>2.1. A Associação <tt>belongs_to</tt></h5>
<p>Uma associação <tt>belongs_to</tt> cria uma conexão um-para-um com outro modelo, de modo a que cada instância do modelo com a declaração &#8220;pertence a&#8221; uma instancia de um outro modelo. Por exemplo, se sua aplicação incluir clientes e encomendas, e cada encomenda pode ser atribuído por exatamente um cliente, você declararia o modelo desta forma:</p>
<pre class="brush: ruby;">
class Order &lt; ActiveRecord::Base
  belongs_to :customer
end
</pre>
<p><a href="http://hidenowt.files.wordpress.com/2008/11/clip-image0025.jpg"><img style="border-width:0;" src="http://hidenowt.files.wordpress.com/2008/11/clip-image0025-thumb.jpg?w=461&#038;h=265" border="0" alt="clip_image002[5]" width="461" height="265" /></a></p>
<h5>2.2. A Associação <tt>has_one</tt></h5>
<p>A associação <tt>has_one</tt> também prevê a criação de uma conexão um-para-um com outro modelo, mas com uma semântica um pouco diferente (e conseqüências). Esta associação indica que cada instância de um modelo contém ou possui uma instancia de outro modelo. Por exemplo, se cada um fornecedor na sua aplicação possui somente uma conta, você iria declarar o modelo fornecedor como este:</p>
<pre class="brush: ruby;">
class Supplier &lt; ActiveRecord::Base
  has_one :account
end
</pre>
<p><a href="http://hidenowt.files.wordpress.com/2008/11/clip-image0045.jpg"><img style="border-width:0;" src="http://hidenowt.files.wordpress.com/2008/11/clip-image0045-thumb.jpg?w=454&#038;h=250" border="0" alt="clip_image004[5]" width="454" height="250" /></a></p>
<h5>2.3. A Associação <tt>has_many</tt></h5>
<p>Uma associação <tt>has_many</tt> indica uma conexão um-para-muitos com outro modelo. Você irá encontrar muitas vezes esta associação do &#8220;outro lado&#8221; de uma associação <tt>belongs_to.</tt> Esta associação indica que cada instância do modelo possui nenhuma ou mais instancias do outro modelo. Por exemplo, em uma aplicação contendo clientes e encomendas, o modelo cliente deve ser declarado como este:</p>
<pre class="brush: ruby;">
class Customer &lt; ActiveRecord::Base
  has_many :orders
end
</pre>
<p><a href="http://hidenowt.files.wordpress.com/2008/11/clip-image0066.jpg"><img style="border-width:0;" src="http://hidenowt.files.wordpress.com/2008/11/clip-image0066-thumb.jpg?w=52&#038;h=52" border="0" alt="clip_image006[6]" width="52" height="52" /></a></p>
<p>O nome do outro modelo é pluralizado quando declarado uma associação <tt>has_many.</tt></p>
<p><a href="http://hidenowt.files.wordpress.com/2008/11/clip-image0085.jpg"><img style="border-width:0;" src="http://hidenowt.files.wordpress.com/2008/11/clip-image0085-thumb.jpg?w=439&#038;h=241" border="0" alt="clip_image008[5]" width="439" height="241" /></a></p>
<h5>2.4. A Associação <tt>has_many :through</tt></h5>
<p>Um associação <tt>has_many :through</tt> é freqüentemente utilizado para criar um conexão muitos-para-muitos com outro modelo. Esta associação indica que a declaração do modelo possa ser compensada com zero ou mais instancias de outro modelo “<em>através de”</em> um processo de um terceiro modelo. Por exemplo, considere uma prática médica onde pacientes podem marcar para ver médicos. As declarações relevantes da associação devem ser semelhantes a este:</p>
<pre class="brush: ruby;">
class Physician &lt; ActiveRecord::Base
  has_many :appointments
  has_many :patients, :through =&gt; :appointments
end

class Appointment &lt; ActiveRecord::Base
  belongs_to :physician
  belongs_to :patient
end

class Patient &lt; ActiveRecord::Base
  has_many :appointments
  has_many :physicians, :through =&gt; :appointments
end
</pre>
<p><a href="http://hidenowt.files.wordpress.com/2008/11/clip-image0105.jpg"><img style="border-width:0;" src="http://hidenowt.files.wordpress.com/2008/11/clip-image0105-thumb.jpg?w=456&#038;h=581" border="0" alt="clip_image010[5]" width="456" height="581" /></a></p>
<p>O associação <tt>has_many :through</tt> é também útil para a criação de &#8220;atalhos&#8221; através de associações <tt>has_many</tt> aninhadas. Por exemplo, se um documento tem muitas seções, e uma seção possui muitos parágrafos, você pode algumas vezes pegar uma simples coleção de todos os parágrafos no documento. Você poderia declarar desta forma:</p>
<pre class="brush: ruby;">
class Document &lt; ActiveRecord::Base
  has_many :sections
  has_many :paragraphs, :through =&gt; :sections
end

class Section &lt; ActiveRecord::Base
  belongs_to :document
  has_many :paragraphs
end

class Paragraph &lt; ActiveRecord::Base
  belongs_to :section
end
</pre>
<h5>2.5. A Associação <tt>has_one: through</tt></h5>
<p>Uma associação <tt>has_one :through</tt> cria uma conexão de um-para-um com outro modelo. Esta associação indica que a declaração do modelo possa ser combinada com uma instancia de outro modelo <em>através</em> de um terceiro modelo. Por exemplo, se cada fornecedor possui uma conta, e cada conta está associada a um histórico da conta, então o modelo cliente poderá ser declarado desta forma:</p>
<pre class="brush: ruby;">
class Supplier &lt; ActiveRecord::Base
  has_one :account
  has_one :account_history, :through =&gt; :account
end

class Account &lt; ActiveRecord::Base
  belongs_to :supplier
  has_one :account_history
end

class AccountHistory &lt; ActiveRecord::Base
  belongs_to :account
end
</pre>
<p><a href="http://hidenowt.files.wordpress.com/2008/11/clip-image0125.jpg"><img style="border-width:0;" src="http://hidenowt.files.wordpress.com/2008/11/clip-image0125-thumb.jpg?w=444&#038;h=607" border="0" alt="clip_image012[5]" width="444" height="607" /></a></p>
<h5>2.6. A Associação <tt>has_and_belongs_to_many</tt></h5>
<p>Uma associação <tt>has_and_belongs_to_many</tt> cria uma conexão direta muitos-para-muitos com outro modelo, sem intervir no modelo. Por exemplo, se a sua aplicação incluir peças e conjuntos, onde cada conjunto inclui várias peças e que cada peça aparece em muitos conjuntos, você poderia declarar os modelos desta maneira:</p>
<pre class="brush: ruby;">
class Assembly &lt; ActiveRecord::Base
  has_and_belongs_to_many :parts
end

class Part &lt; ActiveRecord::Base
  has_and_belongs_to_many :assemblies
end
</pre>
<p><a href="http://hidenowt.files.wordpress.com/2008/11/clip-image0147.jpg"><img style="border-width:0;" src="http://hidenowt.files.wordpress.com/2008/11/clip-image0147-thumb.jpg?w=448&#038;h=493" border="0" alt="clip_image014[7]" width="448" height="493" /></a></p>
<h5>2.7. Escolhendo Entre <tt>belongs_to</tt> e <tt>has_one</tt></h5>
<p>Se você deseja criar uma relação 1&#215;1 entre dois modelos, será necessário adicionar a um <tt>belongs_to</tt> e ao outro <tt>has_one</tt>. Como você sabe quem é quem?</p>
<p>A distinção está no lugar onde você colocou a chave estrangeira (ele fica na tabela da classe que foi declarada a associação <tt>belongs_to</tt>), mas você deveria refletir um pouco mais sobre o real significado desses dados. O relacionamento <tt>has_one</tt> fala alguma coisa para os seus &#8211; ou seja, algo que aponta de volta para você. Por exemplo, faz mais sentido dizer que um fornecedor possui uma conta do que uma conta que possui um fornecedor. Isso sugere que o relacionamento correto é algo como este:</p>
<pre class="brush: ruby;">
class Supplier &lt; ActiveRecord::Base
  has_one :account
end

class Account &amp;lt; ActiveRecord::Base
  belongs_to :supplier
end
</pre>
<p>A migração correspondente se parece com isso:</p>
<pre class="brush: ruby;">
class CreateSuppliers &lt; ActiveRecord::Migration
  def self.up
    create_table :suppliers do |t|
      t.string  :name
      t.timestamps
    end

    create_table :accounts do |t|
      t.integer :supplier_id
      t.string  :account_number
      t.timestamps
    end
  end

  def self.down
    drop_table :accounts
    drop_table :suppliers
  end
end
</pre>
<p><a href="http://hidenowt.files.wordpress.com/2008/11/clip-image0067.jpg"><img style="border-width:0;" src="http://hidenowt.files.wordpress.com/2008/11/clip-image0067-thumb.jpg?w=52&#038;h=52" border="0" alt="clip_image006[7]" width="52" height="52" /></a></p>
<p>Usando <tt>t.integer :supplier_id</tt> faz a nomeação da chave estrangeira óbvia e implicitamente. Nas versões atuais do Rails, você pode abstrair a implementação deste detalhe usando <tt>t.references :supplier.</tt></p>
<h5>2.8. Escolhendo Entre <tt>has_many :through </tt>e <tt>has_and_belongs_to_many</tt></h5>
<p>Rails oferece duas maneiras diferentes para declarar um relacionamento um-para-muitos entre modelos. A maneira mais simples é usar <tt>has_and_belongs_to_many</tt>, que permite que você faça a associação diretamente:</p>
<pre class="brush: ruby;">
class Assembly &lt; ActiveRecord::Base
  has_and_belongs_to_many :parts
end

class Part &lt; ActiveRecord::Base
  has_and_belongs_to_many :assemblies
end
</pre>
<p>A segunda forma de declarar o relacionamento muitos-para-muitos é usar <tt>has_many :through.</tt> Isto faz com que crie uma associação indiretamente, através de um join no modelo:</p>
<pre class="brush: ruby;">
class Assembly &lt; ActiveRecord::Base
  has_many :manifests
  has_many :parts, :through =&gt; :manifests
end

class Manifest &lt; ActiveRecord::Base
  belongs_to :assembly
  belongs_to :part
end

class Part &lt; ActiveRecord::Base
  has_many :manifests
  has_many :assemblies, :through =&gt; :manifests
end
</pre>
<p>A regra é simples, você deve criar um relacionamento <tt>has_many :through</tt> se você precisa trabalhar com o relacionamento do modelo como uma entidade independente. Se você não precisa fazer nada com relacionamento do modelo, pode ser mais simples se criar um relacionamento <tt>has_and_belongs_to_many</tt> (mas você precisa se lembrar se precisa criar joins nas tabelas).</p>
<p>Você deve usar <tt>has_many :through</tt> se você precisar de validações, callbacks (chamadas), ou atributos extras no join do modelo.</p>
<h5>2.9. Associações polimórficas</h5>
<p>Um pouco mais avançado é o twist em associações <em>polimórficas.</em> Com associações Polimórficas, um modelo pode pertencer a mais de um modelo, em uma única associação. Por exemplo, imagine que você possa ter um modelo foto que pertence a um empregado ou ao modelo produto. Veja como isso poderia ser declarada:</p>
<pre class="brush: ruby;">
class Picture &lt; ActiveRecord::Base
  belongs_to :imageable, :polymorphic =&gt; true
end

class Employee &lt; ActiveRecord::Base
  has_many :pictures, :as =&gt; :imageable
end

class Product &lt; ActiveRecord::Base
  has_many :pictures, :as =&gt; :imageable
end
</pre>
<p>Você pode pensar em uma declaração <tt>belongs_to</tt> polimórfica criando uma interface que pode ser usada por qualquer outro modelo. A partir de uma instância do modelo <tt>Employee</tt>, você pode recuperar uma coleção de fotos: <tt>@employee.pictures</tt>. Da mesma forma, você pode usar <tt>@product.pictures.</tt> Se você tem uma instancia do modelo <tt>Picture</tt> você pode pegar seu pai através <tt>@picture.imageable</tt>. Para que isto funcione, você necessita declarar tanto uma coluna chave estrangeira e uma coluna tipo no modelo declarado com uma interface polimórficas:</p>
<pre class="brush: ruby;">
class CreatePictures &lt; ActiveRecord::Migration
  def self.up
    create_table :pictures do |t|
      t.string  :name
      t.integer :imageable_id
      t.string  :imageable_type
      t.timestamps
    end
  end

  def self.down
    drop_table :pictures
  end
end
</pre>
<p>Esta migração pode ser simplificada utilizando o formulário <tt>t.references:</tt></p>
<pre class="brush: ruby;">
class CreatePictures &lt; ActiveRecord::Migration
  def self.up
    create_table :pictures do |t|
      t.string  :name
      t.references :imageable, :polymorphic =&gt; true
      t.timestamps
    end
  end

  def self.down
    drop_table :pictures
  end
end
</pre>
<p><a href="http://hidenowt.files.wordpress.com/2008/11/clip-image0169.jpg"><img style="border-width:0;" src="http://hidenowt.files.wordpress.com/2008/11/clip-image0169-thumb.jpg?w=457&#038;h=548" border="0" alt="clip_image016[9]" width="457" height="548" /></a></p>
<h5>2.10. Self Joins</h5>
<p>Na criação de um modelo de dados, às vezes você irá encontrar um modelo que deverá ter uma relação a si própria. Por exemplo, você pode armazenar todos os empregados em uma única base de dados, mas ser capaz de rastrear relacionamentos como gerentes e subordinados. Esta situação pode ser modelada com as associações com ele mesmo:</p>
<pre class="brush: ruby;">
class Employee &lt; ActiveRecord::Base
  has_many :subordinates, :class_name =&gt; &quot;User&quot;, :foreign_key =&gt; &quot;manager_id&quot;
  belongs_to :manager, :class_name =&gt; &quot;User&quot;
end
</pre>
<p>Com essa configuração, você pode utilizar <tt>@employee.subordinates</tt> e <tt>@employee.manager.</tt></p>
<p><strong><em></em></strong></p>
<p><strong><em>Créditos:</em></strong></p>
<p><strong><em>Link Conteúdo Original: </em></strong><em><a href="http://guides.rails.info/association_basics.html">http://guides.rails.info/association_basics.html</a></em></p>
<p><strong><em>Tradução:</em></strong><em> Herminio Torres.</em> [ <a href="http://hidenowt.wordpress.com/">http://hidenowt.wordpress.com</a> ]</p>
<p><strong><em>Revisão:</em></strong><em> Cairo Noleto. </em>[ <a href="http://www.caironoleto.com">http://www.caironoleto.com</a> ]</p>
<br />Publicado emMetodologia, Programação, Ruby on Rails Tagged: activerecord, associações, rails, relacionamentos <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hidenowt.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hidenowt.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hidenowt.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hidenowt.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hidenowt.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hidenowt.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hidenowt.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hidenowt.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hidenowt.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hidenowt.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hidenowt.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hidenowt.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hidenowt.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hidenowt.wordpress.com/41/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hidenowt.wordpress.com&amp;blog=1989264&amp;post=41&amp;subd=hidenowt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hidenowt.wordpress.com/2008/11/10/ruby-on-rails-associaes-no-activerecord/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8c0de411472c66cc9ea9bb7c4a80b6be?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hidenowt</media:title>
		</media:content>

		<media:content url="http://hidenowt.files.wordpress.com/2008/11/clip-image0025-thumb.jpg" medium="image">
			<media:title type="html">clip_image002[5]</media:title>
		</media:content>

		<media:content url="http://hidenowt.files.wordpress.com/2008/11/clip-image0045-thumb.jpg" medium="image">
			<media:title type="html">clip_image004[5]</media:title>
		</media:content>

		<media:content url="http://hidenowt.files.wordpress.com/2008/11/clip-image0066-thumb.jpg" medium="image">
			<media:title type="html">clip_image006[6]</media:title>
		</media:content>

		<media:content url="http://hidenowt.files.wordpress.com/2008/11/clip-image0085-thumb.jpg" medium="image">
			<media:title type="html">clip_image008[5]</media:title>
		</media:content>

		<media:content url="http://hidenowt.files.wordpress.com/2008/11/clip-image0105-thumb.jpg" medium="image">
			<media:title type="html">clip_image010[5]</media:title>
		</media:content>

		<media:content url="http://hidenowt.files.wordpress.com/2008/11/clip-image0125-thumb.jpg" medium="image">
			<media:title type="html">clip_image012[5]</media:title>
		</media:content>

		<media:content url="http://hidenowt.files.wordpress.com/2008/11/clip-image0147-thumb.jpg" medium="image">
			<media:title type="html">clip_image014[7]</media:title>
		</media:content>

		<media:content url="http://hidenowt.files.wordpress.com/2008/11/clip-image0067-thumb.jpg" medium="image">
			<media:title type="html">clip_image006[7]</media:title>
		</media:content>

		<media:content url="http://hidenowt.files.wordpress.com/2008/11/clip-image0169-thumb.jpg" medium="image">
			<media:title type="html">clip_image016[9]</media:title>
		</media:content>
	</item>
		<item>
		<title>Primeiro Evento de Ruby On Rails no Ceará!</title>
		<link>http://hidenowt.wordpress.com/2008/10/26/primeiro-evento-de-ruby-on-rails-no-ceara/</link>
		<comments>http://hidenowt.wordpress.com/2008/10/26/primeiro-evento-de-ruby-on-rails-no-ceara/#comments</comments>
		<pubDate>Sun, 26 Oct 2008 19:34:50 +0000</pubDate>
		<dc:creator>hidenowt</dc:creator>
				<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[cearaonrails]]></category>
		<category><![CDATA[evento]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://hidenowt.wordpress.com/?p=14</guid>
		<description><![CDATA[O que é CearáOnRails? O CearáOnRails é um evento solidário que tem como tema o desenvolvimento de sistemas web e pretende divulgar e popularizar a linguagem de desenvolvimento Ruby e o Framework Rails no estado do Ceará. Esta iniciativa contribuirá de modo relevante para promover o uso e a difusão das tecnologias entre pessoas, especialmente [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hidenowt.wordpress.com&amp;blog=1989264&amp;post=14&amp;subd=hidenowt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://4.bp.blogspot.com/_7aRbtKcx0ck/SP-4kXeZI6I/AAAAAAAAAM8/Uxh1C15r_p4/s1600-h/logomarca_cearaonrails.png"><img style="display:block;text-align:center;cursor:pointer;width:194px;height:130px;margin:0 auto 10px;" src="http://4.bp.blogspot.com/_7aRbtKcx0ck/SP-4kXeZI6I/AAAAAAAAAM8/Uxh1C15r_p4/s320/logomarca_cearaonrails.png" border="0" alt="" /></a></p>
<p class="western" style="margin-bottom:0;" align="justify">
<p><strong></strong></p>
<p class="western" style="margin-bottom:0;" align="justify"><strong><strong><span style="font-family:Bitstream Charter,serif;">O que é CearáOnRails?</span></strong><strong><span style="font-family:Bitstream Charter,serif;"> </span></strong></strong></p>
<p class="western" style="margin-bottom:0;" align="justify"><span style="font-family:Bitstream Charter,serif;"> O <a title="Site do CearaOnRails" href="http://www.cearaonrails.org" target="_blank">CearáOnRails</a> é um evento solidário que tem como tema o desenvolvimento de sistemas web e pretende divulgar e popularizar a linguagem de desenvolvimento <a title="Site da Linguagem de Programação Ruby" href="http://www.ruby-lang.org" target="_blank">Ruby</a> e o <a href="http://www.rubyonrails.com/" target="_blank">Framework Rails</a> no estado do Ceará. Esta iniciativa contribuirá de modo relevante para promover o uso e a difusão das tecnologias entre pessoas, especialmente profissionais na área e afins, servindo como um veículo de integração, interação e colaboração. Tanto o ruby como o Rails vem mudando a forma de desenvolvimento padrão adotada pelas demais tecnologias. A linguagem Ruby foi criada em 1993 no Japão pelo <a href="http://www.ruby-lang.org/pt/sobre-o-ruby/" target="_blank">Yukihiro Matsumoto</a>. Esta só se tornou popular após a primeira apresentação do Framework Rails em 2003 criado por <a href="http://www.loudthinking.com/about.html" target="_blank">David Heinemeir Hansson</a>, a sua apresentação foi bastante polêmica e mudou a visão sobre a metodologia de desenvolvimento de software. O nosso intuito é apresentar esta nova forma de desenvolver software e quanto ela é poderosa, rápida e produtiva. Com isso tentar mudar a visão atual de desenvolvimento de software na região, ou a implantação dessa nova tecnologia.</span></p>
<p class="western" style="margin-bottom:0;" align="justify"><span style="font-family:Bitstream Charter,serif;"> O ingresso será de 2kgs de alimentos não perecíveis por pessoa </span><span style="font-family:Bitstream Charter,serif;">(<em>exceto sal</em>)</span><span style="font-family:Bitstream Charter,serif;"> em troca do acesso às palestras. Iremos doar os alimentos arrecadados para a <a href="http://www.cearaonrails.org/inicio/aa" target="_blank">ONG 2A(Acreditando e Aprendendo)</a>. O evento além de sua função social e integradora, também permite uma grande difusão da tecnologia e ainda oportuniza o network entre profissionais, estudantes, professores entre outros, que irão comparecer ao evento. </span></p>
<p class="western" style="margin-bottom:0;" align="justify"><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p class="western" align="left"><strong>Organizadores do CearaOnRails</strong></p>
<p class="western" align="left">Os abaixo indicados subscrevem essa proposta, considerando-se responsáveis pelo evento:</p>
<ul>
<li>
<p class="western" style="margin-bottom:0;" align="justify">Herminio 	Cesar Muniz Torres, Programador Júnior da Oktiva.</p>
</li>
</ul>
<p class="western" style="margin-left:1.27cm;margin-bottom:0;" align="justify">Telefone: (85) &#8211; 8884.8466 / E-mail: <span style="color:#000080;"><span style="text-decoration:underline;"><a href="mailto:herminiocesar@gmail.com">herminiocesar@gmail.com</a></span></span></p>
<ul>
<li>
<p class="western" style="margin-bottom:0;" align="justify"><a name="yb1"></a> Ítalo Matos Cavalcante Santos, Analista de Sistemas da Active 	Brasil.</p>
</li>
</ul>
<p class="western" style="margin-left:1.27cm;margin-bottom:0;" align="justify">Telefone: (85) &#8211; 8867.0055 / E-mail: <span style="color:#000080;"><span style="text-decoration:underline;"><a href="mailto:italomatos@gmail.com">italomatos@gmail.com</a></span></span></p>
<ul>
<li>
<p class="western" style="margin-bottom:0;" align="justify"><a name="12z1"></a><a name="13e1"></a> Rafael Cruz Rubert, Programador Júnior da RJ contabilidade.</p>
</li>
</ul>
<p class="western" style="margin-left:1.27cm;margin-bottom:0;" align="justify">Telefone: (85) &#8211; 8830.3547 / E-mail: <span style="color:#000080;"><span style="text-decoration:underline;"><a href="mailto:rafarubert@yahoo.com.br">rafarubert@yahoo.com.br</a></span></span></p>
<ul>
<li>
<p class="western" style="margin-bottom:0;" align="justify">Victor 	Sobreira, Programador Júnior da Itarget.</p>
</li>
</ul>
<p class="western" style="margin-left:1.27cm;margin-bottom:0;" align="justify"><span>Telefone: (85) &#8211; 8719.3391 / E-mail: </span><span style="color:#000080;"><span style="text-decoration:underline;"><a href="mailto:victorcsv@gmail.com"><span>victorcsv@gmail.com</span></a></span></span></p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p class="western" style="margin-bottom:0;font-style:normal;" align="justify"><strong>Realização do CearaOnRails</strong></p>
<p class="western" style="margin-bottom:0;" align="justify"><span style="font-style:normal;"> O evento será realizado no dia 14 de Novembro de 2008 das 19:00 às 22:30 horas. Na </span>Faculdade Christus, Avenida Dom Luís, 911, Fortaleza-Ce<span style="font-style:normal;">, no 15º Andar, em Fortaleza-Ceará. </span><span style="font-style:normal;"><span>A programação prévia estabelecida pela organização será a seguinte:</span></span></p>
<p class="western" style="margin-bottom:0;" align="justify"><span style="font-style:normal;"><strong>19:00-19:10</strong></span><span style="font-style:normal;"> </span><em><strong>Abertura</strong></em></p>
<p class="western" style="margin-bottom:0;font-style:normal;" align="justify">
<p class="western" style="margin-bottom:0;" align="justify"><span style="font-style:normal;"><strong>19:10-19:40</strong></span><span style="font-style:normal;"> </span><em><strong>Palestra 1</strong></em></p>
<p class="western" style="margin-bottom:0;" align="justify"><em> </em><em><strong>Palestrante:</strong></em><span style="font-style:normal;"><strong> </strong></span><em><span style="text-decoration:underline;"><strong>Tiago Bastos</strong></span></em></p>
<p class="western" style="margin-bottom:0;" align="justify"><em> </em><em><strong>Tema:</strong></em><span style="font-style:normal;"><strong> </strong></span><span style="font-style:normal;"><span style="text-decoration:underline;">Onde está o método?</span></span></p>
<p class="western" style="margin-left:3.84cm;text-indent:-3.02cm;margin-bottom:0;" align="justify"><em> </em><em><strong>Descrição:</strong></em><span style="font-style:normal;"> </span>Uma introdução a recursos avançados da linguagem. Explicando como interceptar chamadas à métodos, monkey patching e avaliação de código. Mercado de trabalho.</p>
<p class="western" style="margin-bottom:0;" align="justify">
<p class="western" style="margin-bottom:0;" align="justify"><span style="font-style:normal;"><strong>19:40-20:40</strong></span><span style="font-style:normal;"> </span><em><strong>Palestra 2</strong></em></p>
<p class="western" style="margin-bottom:0;" align="justify"><em> </em><em><strong>Palestrante:</strong></em><span style="font-style:normal;"><strong> </strong></span><em><span style="text-decoration:underline;"><strong>Nabucodonosor Coutinho</strong></span></em></p>
<p class="western" style="margin-bottom:0;" align="justify"><em> </em><em><strong>Tema:</strong></em><span style="font-style:normal;"><strong> </strong></span><span style="font-style:normal;"><span style="text-decoration:underline;">ORM On Rails</span></span></p>
<p class="western" style="margin-left:3.78cm;text-indent:-2.01cm;margin-bottom:0;" align="justify"><em> </em><em><strong>Descrição:</strong></em><span style="font-style:normal;"><strong> </strong></span><span style="font-style:normal;">A camada de persistência do ROR está realmente nos trilhos? A visão de um DBA sobre a camada de persistência do Rails. Analise dos padrões DAO e ActiveRecord. Análise das implementações ActiveRecord e iBatis para Ruby. Análise das implementações Rails ActiveRecord e Hibernate (java).</span></p>
<p class="western" style="margin-bottom:0;" align="justify">
<p class="western" style="margin-bottom:0;" align="justify"><span style="font-style:normal;"><strong>20:40-21:00</strong></span><span style="font-style:normal;"> </span><em><strong>Coffee Break</strong></em></p>
<p class="western" style="margin-bottom:0;font-style:normal;" align="justify">
<p class="western" style="margin-bottom:0;" align="justify"><span style="font-style:normal;"><strong>21:00-22:00</strong></span><span style="font-style:normal;"> </span><em><strong>Palestra 3</strong></em></p>
<p class="western" style="margin-bottom:0;" align="justify"><em> </em><em><strong>Palestrante:</strong></em><span style="font-style:normal;"><strong> </strong></span><em><span style="text-decoration:underline;"><strong>Fábio Akita</strong></span></em></p>
<p class="western" style="margin-bottom:0;" align="justify"><em> </em><em><strong>Tema:</strong></em><span style="font-style:normal;"><strong> </strong></span><span style="font-style:normal;"><span style="text-decoration:underline;">Desenvolvimento fora da Média com Ruby e Rails</span></span></p>
<p class="western" style="margin-left:3.81cm;text-indent:-2.04cm;margin-bottom:0;" align="justify"><em> </em><em><strong>Descrição:</strong></em><em> </em>Porque é importante entender as novas tecnologias como Ruby e Rails e como elas agilizam seus projetos web.</p>
<p class="western" style="margin-left:3.81cm;text-indent:-2.04cm;margin-bottom:0;" align="justify">
<p class="western" style="margin-bottom:0;" align="justify"><span style="font-style:normal;"><strong>22:00-22:10</strong></span><span style="font-style:normal;"><span> </span></span><em><strong>Encerramento e Sorteio de brindes[Livros e Camisetas]</strong></em></p>
<p class="western" style="margin-bottom:0;" align="justify"><strong><em>Maiores informações:</em></strong> <a title="Site CearaOnRails" href="http://www.cearaonrails.org"><em>http://www.cearaonrails.org</em></a></p>
<br />Publicado emMetodologia, Programação, Ruby on Rails Tagged: cearaonrails, evento, rails, ruby <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hidenowt.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hidenowt.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hidenowt.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hidenowt.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hidenowt.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hidenowt.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hidenowt.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hidenowt.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hidenowt.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hidenowt.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hidenowt.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hidenowt.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hidenowt.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hidenowt.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hidenowt.wordpress.com&amp;blog=1989264&amp;post=14&amp;subd=hidenowt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hidenowt.wordpress.com/2008/10/26/primeiro-evento-de-ruby-on-rails-no-ceara/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8c0de411472c66cc9ea9bb7c4a80b6be?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hidenowt</media:title>
		</media:content>

		<media:content url="http://4.bp.blogspot.com/_7aRbtKcx0ck/SP-4kXeZI6I/AAAAAAAAAM8/Uxh1C15r_p4/s320/logomarca_cearaonrails.png" medium="image" />
	</item>
		<item>
		<title>Limpando/Liberando mem&#243;ria cache</title>
		<link>http://hidenowt.wordpress.com/2008/08/21/limpandoliberando-memria-cache/</link>
		<comments>http://hidenowt.wordpress.com/2008/08/21/limpandoliberando-memria-cache/#comments</comments>
		<pubDate>Thu, 21 Aug 2008 18:49:06 +0000</pubDate>
		<dc:creator>hidenowt</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[drop]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[liberando]]></category>
		<category><![CDATA[limpeza]]></category>
		<category><![CDATA[memória]]></category>
		<category><![CDATA[root]]></category>

		<guid isPermaLink="false">http://hidenowt.wordpress.com/2008/08/21/limpandoliberando-memria-cache/</guid>
		<description><![CDATA[Usando um gancho para repassar uma dica que cont&#233;m no blog do caro amigo kalib sobre essa limpeza da mem&#243;ria cache. Mas porque fazer essa limpeza? &#201; sempre bom limpar, pois a mem&#243;ria cache aloca espa&#231;o na mesma de algo que n&#227;o esteja sendo utilizado e ocupando espa&#231;o com algo n&#227;o &#250;til no momento. E [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hidenowt.wordpress.com&amp;blog=1989264&amp;post=11&amp;subd=hidenowt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p align="justify">Usando um gancho para repassar uma dica que cont&#233;m no blog do caro amigo <a href="http://marcelokalib.blogspot.com/2008/07/limpando-o-cache-de-forma-rpida.html">kalib</a> sobre essa limpeza da mem&#243;ria cache. Mas porque fazer essa limpeza? &#201; sempre bom limpar, pois a mem&#243;ria cache aloca espa&#231;o na mesma de algo que n&#227;o esteja sendo utilizado e ocupando espa&#231;o com algo n&#227;o &#250;til no momento. E assim a maquina ir&#225; consumir menos recurso. Enfim vamos aos passos:</p>
<p align="justify"><b><i>*OBS:</i></b> Para executar o comando que ir&#225; dropar(limpar) a mem&#243;ria cache s&#243; pode ser executado em modo super usu&#225;rio(root). Ent&#227;o &#233; preciso virar super usu&#225;rio da maquina.</p>
<p align="justify"><i>1- Primeiramente vamos usar um comando para chegar &#224; mem&#243;ria total da maquina, o que est&#225; sendo consumido e o que est&#225; alocado e livre. </i></p>
<blockquote><p><b>root:~# free -mlot </b>      <br /><b>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; total&#160;&#160;&#160;&#160;&#160;&#160; used&#160;&#160;&#160;&#160;&#160;&#160; free&#160;&#160;&#160;&#160; shared&#160;&#160;&#160;&#160; buffers&#160;&#160;&#160;&#160; cached</b>       <br /><strong>Mem:&#160;&#160;&#160; 2023&#160;&#160;&#160;&#160;&#160;&#160;&#160; 757&#160;&#160;&#160;&#160;&#160; 1266&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 198&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 102        <br />Low:&#160;&#160;&#160;&#160;&#160;&#160; 876&#160;&#160;&#160;&#160;&#160;&#160;&#160; 348&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 527</strong>       <br /><strong>High:&#160;&#160;&#160; 1147&#160;&#160;&#160;&#160;&#160;&#160;&#160; 409&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 738        <br />Swap:&#160;&#160; 1906&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0&#160;&#160;&#160;&#160;&#160;&#160; 1906</strong>       <br /><b>Total:&#160;&#160; 3929&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 757&#160;&#160;&#160;&#160;&#160; 3172</b>       </p>
</blockquote>
<p align="justify"><i>2- Ap&#243;s chegar &#224; mem&#243;ria iremos executar o comando para limpar o cache.</i></p>
<blockquote><p><b>root:~# echo 3 &gt; /proc/sys/vm/drop_caches </b></p>
<p><strong>root:~# sysctl -w vm.drop_caches=3</strong></p>
</blockquote>
<p align="justify"><i>3- E ap&#243;s isso executaremos novamente o comando de v&#234; a mem&#243;ria e poderemos comparar ap&#243;s a limpeza.</i></p>
<blockquote><p><b>root :~# free -mlot</b>&#160; <br /><b>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; total&#160;&#160;&#160;&#160;&#160; used&#160;&#160;&#160;&#160;&#160;&#160;&#160; free&#160;&#160;&#160;&#160; shared&#160;&#160;&#160;&#160; buffers&#160;&#160;&#160;&#160; cached</b>     <br /><b>Mem:&#160;&#160;&#160;&#160; 2023&#160;&#160;&#160;&#160;&#160;&#160; 416&#160;&#160;&#160;&#160;&#160;&#160; 1606&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 52</b> <b>Low:&#160;&#160;&#160;&#160;&#160;&#160;&#160; 876&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 54&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 821</b>     <br /><b>High:&#160;&#160;&#160;&#160; 1147&#160;&#160;&#160;&#160;&#160;&#160;&#160; 361&#160;&#160;&#160;&#160;&#160;&#160;&#160; 785</b>     <br /><b>Swap:&#160;&#160;&#160; 1906&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0&#160;&#160;&#160;&#160;&#160;&#160; 1906</b>     <br /><b>Total:&#160;&#160;&#160; 3929&#160;&#160;&#160;&#160;&#160;&#160;&#160; 416&#160;&#160;&#160;&#160;&#160;&#160; 3513</b>     </p></blockquote>
<p align="justify"><b><i>*Dados:</i></b> A mem&#243;ria usada de 757mb caiu para 416, o buffer de 198 foi a 0(zero) e o cache de 102mb foi para 52, foi uma limpeza at&#233; razo&#225;vel.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hidenowt.wordpress.com/11/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hidenowt.wordpress.com/11/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hidenowt.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hidenowt.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hidenowt.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hidenowt.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hidenowt.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hidenowt.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hidenowt.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hidenowt.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hidenowt.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hidenowt.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hidenowt.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hidenowt.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hidenowt.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hidenowt.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hidenowt.wordpress.com&amp;blog=1989264&amp;post=11&amp;subd=hidenowt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hidenowt.wordpress.com/2008/08/21/limpandoliberando-memria-cache/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8c0de411472c66cc9ea9bb7c4a80b6be?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hidenowt</media:title>
		</media:content>
	</item>
		<item>
		<title>Criando senhas seguras com o mkpasswd</title>
		<link>http://hidenowt.wordpress.com/2008/07/31/criando-senhas-seguras-com-o-mkpasswd/</link>
		<comments>http://hidenowt.wordpress.com/2008/07/31/criando-senhas-seguras-com-o-mkpasswd/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 13:23:04 +0000</pubDate>
		<dc:creator>hidenowt</dc:creator>
				<category><![CDATA[Sem-categoria]]></category>

		<guid isPermaLink="false">http://hidenowt.wordpress.com/?p=6</guid>
		<description><![CDATA[Aqui segue uma lista dos principais parâmetros do mkpasswd: -l &#8212; Define quantos caracteres você deseja na sua senha. Por padrão ele trás 9. -d &#8212; Define quantos números no mínimo deverão fazer parte de sua senha. O padrão é 2. -c &#8212; Define quantas letras minúsculas no mínimo deverão fazer parte de sua senha. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hidenowt.wordpress.com&amp;blog=1989264&amp;post=6&amp;subd=hidenowt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Aqui segue uma lista dos principais parâmetros do mkpasswd:</p>
<ul>
<li> -l &#8212;  Define quantos caracteres você deseja na sua senha. Por padrão ele trás 9.</li>
<li> -d &#8212; Define quantos números no mínimo deverão fazer parte de sua senha. O padrão é 2.</li>
<li> -c &#8212; Define quantas letras minúsculas no mínimo deverão fazer parte de sua senha. O padrão é 2.</li>
<li> -C &#8212; O oposto de -c. Aqui você define o mínimo de letras maiúsculas. O padrão também é 2.</li>
<li> -s &#8212; Define quantos caracteres especiais você deseja em sua senha. O padrão é 1.</li>
<li> -2 &#8212; Esta é ótima. Define e distribui a senha de forma a misturar teclas do lado direito e esquerdo do teclado. Isto serve para dificultar a vida dos olheiros. :p</li>
<li> &#8211;nodigits &#8212; Esta apenas anula os números de sua senha. Mesmo que -d 0.</li>
<li> &#8211;noupper &#8212; Anula letras maiúsculas em sua senha. Mesmo que -C 0.</li>
<li> &#8211;nospecial &#8212; Anula caracteres especiais. Mesmo que -s 0.</li>
</ul>
<p>Agora que conhecemos os principais parâmetros do mkpasswd, vamos ver alguns exemplos de senhas com ele.</p>
<p>Exemplo 1: Suponhamos que eu queira uma senha completamente aleatória sem definição de padrões. Basta usar o mkpasswd sem parâmetros:</p>
<p><strong>$ mkpasswd</strong><br />
neI24mX~s</p>
<p>Exemplo 2: Supondo que agora eu quero uma senha com 10 caracteres, sendo pelo menos 3 deles caracteres especiais e 1 seja um número:</p>
<p><strong>$ mkpasswd -l 10 -s 3 -d 1</strong><br />
gN8_r:Wru*</p>
<p>Exemplo 3: E se eu quiser agora uma senha com o tamanho padrão de 9 caracteres, porém com 2 números pelo menos e 2 letras maiúsculas:</p>
<p><strong>$ mkpasswd -d 2 -C 2</strong><br />
5dJz.qYt3</p>
<p>Bom, como podem ver as possibilidades são inúmeras. Basta pensar em sua combinação e mandar ver na sua senha.</p>
<p>by kalib.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hidenowt.wordpress.com/6/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hidenowt.wordpress.com/6/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hidenowt.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hidenowt.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hidenowt.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hidenowt.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hidenowt.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hidenowt.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hidenowt.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hidenowt.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hidenowt.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hidenowt.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hidenowt.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hidenowt.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hidenowt.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hidenowt.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hidenowt.wordpress.com&amp;blog=1989264&amp;post=6&amp;subd=hidenowt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hidenowt.wordpress.com/2008/07/31/criando-senhas-seguras-com-o-mkpasswd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8c0de411472c66cc9ea9bb7c4a80b6be?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hidenowt</media:title>
		</media:content>
	</item>
		<item>
		<title>Trilhando meu aprendizado&#8230;</title>
		<link>http://hidenowt.wordpress.com/2008/06/06/trilhando-meu-aprendizado/</link>
		<comments>http://hidenowt.wordpress.com/2008/06/06/trilhando-meu-aprendizado/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 03:00:21 +0000</pubDate>
		<dc:creator>hidenowt</dc:creator>
				<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://hidenowt.wordpress.com/?p=3</guid>
		<description><![CDATA[Inicialmente eu comecei lendo o tutorialruby tentando entender sem ao menos digitar nenhuma linha de código para treino como se eu fosse um “compilador”, li ele até a pagina 65, porque as demais eu li e estou voando, então eu decidi pegar algo mais simples e iniciar novamente o aprendizado então achei dois tutoriais super [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hidenowt.wordpress.com&amp;blog=1989264&amp;post=3&amp;subd=hidenowt&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Inicialmente eu comecei lendo o <span style="color:#ff0000;"><a title="Links active once published" href="http://eustaquiorangel.com/downloads/tutorialruby.pdf">tutorialruby</a> </span>tentando entender sem ao menos digitar nenhuma linha de código para treino como se eu fosse um “compilador”, li ele até a pagina 65, porque as demais eu li e estou voando, então eu decidi pegar algo mais simples e iniciar novamente o aprendizado então achei dois tutoriais super simples para começar. Inicialmente vou está estudando pelo <a title="Links active once published" href="http://aprendaaprogramar.rubyonrails.pro.br/">aprendaaprogramar</a>, e logo após estarei partindo para o <a title="Links active once published" href="http://www.sismicro.com.br/ruby/pequenolivrodoruby.pdf">pequenolivroruby</a>. O <a title="Links active once published" href="http://aprendaaprogramar.rubyonrails.pro.br/">aprendaaprogramar</a> é ótimo para aprender ruby estruturado e o <a title="Links active once published" href="http://aprendaaprogramar.rubyonrails.pro.br/">aprendaaprogramar</a> é melhor para a programação orientada a objeto e em paralelo aos dois estarei lendo o livro <a title="Links active once published" href="http://gettingreal.37signals.com/GR_por.php">Getting Real</a> traduzido pelo <a title="Links active once published" href="http://www.akitaonrails.com/">Fabio Akita</a>, e quando termina essas leitura retornarei para a apostila do <a title="Links active once published" href="http://eustaquiorangel.com/">Taq</a>. E para quem entende inglês uma boa pedida é <span style="color:#ff0000;"><a title="Links active once published" href="http://www.noobkit.com/">noobkit</a></span> é um site onde bem estruturado onde você pode navegar dentro da documentação/api tanto de ruby como rails e gems.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hidenowt.wordpress.com/3/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hidenowt.wordpress.com/3/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hidenowt.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hidenowt.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hidenowt.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hidenowt.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hidenowt.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hidenowt.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hidenowt.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hidenowt.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hidenowt.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hidenowt.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hidenowt.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hidenowt.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hidenowt.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hidenowt.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hidenowt.wordpress.com&amp;blog=1989264&amp;post=3&amp;subd=hidenowt&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hidenowt.wordpress.com/2008/06/06/trilhando-meu-aprendizado/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8c0de411472c66cc9ea9bb7c4a80b6be?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hidenowt</media:title>
		</media:content>
	</item>
	</channel>
</rss>
