<?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"
	>

<channel>
	<title>tink!</title>
	<atom:link href="http://blog.tink.com.br/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.tink.com.br</link>
	<description>it's all about IT</description>
	<pubDate>Wed, 28 Oct 2009 15:16:47 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>Configurando Rails no Mac</title>
		<link>http://blog.tink.com.br/?p=209</link>
		<comments>http://blog.tink.com.br/?p=209#comments</comments>
		<pubDate>Mon, 23 Mar 2009 01:22:11 +0000</pubDate>
		<dc:creator>Rafael Uchôa</dc:creator>
		
		<category><![CDATA[mac]]></category>

		<category><![CDATA[português]]></category>

		<category><![CDATA[ruby on rails]]></category>

		<category><![CDATA[mac rails]]></category>

		<guid isPermaLink="false">http://blog.tink.com.br/?p=209</guid>
		<description><![CDATA[Até uns dias, meu único contato com um Mac era assistindo screencasts sobre Rails pela net. Agora, com meu própio Mac, descobri que configurar o Rails nele é tão simples como tudo mais no Rails o é. Vou relatar aqui meus passos.
Tinha lido que o Mac OS X já vinha com o Rails instalado. O [...]]]></description>
			<content:encoded><![CDATA[<p>Até uns dias, meu único contato com um Mac era assistindo screencasts sobre Rails pela net. Agora, com meu própio Mac, descobri que configurar o Rails nele é tão simples como tudo mais no Rails o é. Vou relatar aqui meus passos.</p>
<p>Tinha lido que o Mac OS X já vinha com o Rails instalado. O comando <strong>rails -v</strong> me confirmou isso, imprimindo 1.2.1 na tela. Atualmente, a versão mais nova é a 2.3.2. Então, vamos para o comando</p>
<div>
<pre>sudo gem update rails --no-ri --no-rdoc</pre>
<p>Como já era de se esperar, o RubyGems também já vem configurado. Note que que utilizei &#8211;no-ri e &#8211;no-rdoc, excluindo o download da documentação. Assim, a gem pode ser instalada até <a href="http://buddingrubyist.com/2009/02/14/how-to-speed-up-gem-installs-10x/" target="_blank">10x mais rápida</a>.</p>
<p>Depois de um certa demora, tenho o Rails atualizado. Executo o comando rails -v novamente e PAN! <em>&#8220;RubyGem version error: rake(0.7.3 not &gt;= 0.8.3) (Gem::LoadError)&#8221;</em> estoura na minha tela. Fácil, o comando abaixo atualiza meu RubyGems.</p>
<pre>sudo gem update --system</pre>
<p>Rodo mais uma vez <strong>rails -v</strong> e, advinhem, PAN! <em>&#8220;Library/Ruby/Site/1.8/rubygems.rb:636:in `report_activate_error&#8217;: Could not find RubyGem activeresource (= 2.3.2) (Gem::LoadError)&#8221;</em> Então executo o comando abaixo para atualizar meu ActiveResource.</p>
<pre>sudo gem install activeresource -v 2.3.2</pre>
<p>E, enfim, meu <strong>rails -v</strong> funciona perfeitamente. Agora é só usar <strong>rails test_app</strong> e sua primeira aplicação estará ok, rodando com o Sqlite3.</p>
<p>Bons códigos e abraços.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.tink.com.br/?feed=rss2&amp;p=209</wfw:commentRss>
		</item>
		<item>
		<title>Bug no Netbeans 6.5.x com RSpec 1.1.12</title>
		<link>http://blog.tink.com.br/?p=203</link>
		<comments>http://blog.tink.com.br/?p=203#comments</comments>
		<pubDate>Thu, 19 Mar 2009 16:53:52 +0000</pubDate>
		<dc:creator>Rafael Uchôa</dc:creator>
		
		<category><![CDATA[português]]></category>

		<category><![CDATA[ruby on rails]]></category>

		<category><![CDATA[bug]]></category>

		<category><![CDATA[ide]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[rspec]]></category>

		<guid isPermaLink="false">http://blog.tink.com.br/?p=203</guid>
		<description><![CDATA[Quem trabalha com Netbeans 6.5.x para desenvolvimento Rails utilizando o RSpec deve ter percebido que com a atualização para a versão 1.1.12 do framework seus testes simplesmente não rodam mais a partir da IDE.
Algo como isso aparece no seu &#8216;output&#8217;:

from E:/cms/cms3/vendor/plugins/rspec/lib/spec/runner/options.rb:101:in `run_examples'
Finished in  seconds

0 examples, 0 failures
	from E:/cms/cms3/vendor/plugins/rspec/lib/spec/runner/command_line.rb:9:in `run'
	from E:/cms/cms3/script/spec:5

Para resolver é simples. Substitua [...]]]></description>
			<content:encoded><![CDATA[<p>Quem trabalha com Netbeans 6.5.x para desenvolvimento Rails utilizando o RSpec deve ter percebido que com a atualização para a versão 1.1.12 do framework seus testes simplesmente não rodam mais a partir da IDE.</p>
<p>Algo como isso aparece no seu &#8216;output&#8217;:</p>
<pre>
from E:/cms/cms3/vendor/plugins/rspec/lib/spec/runner/options.rb:101:in `run_examples'
Finished in  seconds

0 examples, 0 failures
	from E:/cms/cms3/vendor/plugins/rspec/lib/spec/runner/command_line.rb:9:in `run'
	from E:/cms/cms3/script/spec:5
</pre>
<p>Para resolver é simples. Substitua o arquivo <em>$NB_PATH/ruby2/nb_rspec_mediator.rb</em> por esse <a href="http://hg.netbeans.org/main/file/d0d0c86837b0/ruby.testrunner/release/nb_rspec_mediator.rb" target="_blank">aqui</a>.</p>
<p>Você também pode baixar a versão 6.7 de desenvolvimento, mas, particularmente, não recomendo. Ela ainda não está estável e ocorrem muitos bugs.</p>
<p>Abraços</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tink.com.br/?feed=rss2&amp;p=203</wfw:commentRss>
		</item>
		<item>
		<title>instalando ruby on rails</title>
		<link>http://blog.tink.com.br/?p=192</link>
		<comments>http://blog.tink.com.br/?p=192#comments</comments>
		<pubDate>Fri, 28 Nov 2008 14:41:19 +0000</pubDate>
		<dc:creator>ontonho</dc:creator>
		
		<category><![CDATA[português]]></category>

		<category><![CDATA[ruby on rails]]></category>

		<category><![CDATA[install rails]]></category>

		<guid isPermaLink="false">http://blog.tink.com.br/?p=192</guid>
		<description><![CDATA[Existem milhares de tutoriais na internet ensinando como instalar o ruby on rails. Posto aqui sobre isso porque foi exatamente seguindo alguns desses turoriais que tive problemas. Vou mostrar, passo a passo, como fiz para poder trabalhar com o rails devidamente instalado na minha máquina:
1- Instalar Ruby:
esta parte é sem problemas, existem várias formas de [...]]]></description>
			<content:encoded><![CDATA[<p>Existem milhares de tutoriais na internet ensinando como instalar o ruby on rails. Posto aqui sobre isso porque foi exatamente seguindo alguns desses turoriais que tive problemas. Vou mostrar, passo a passo, como fiz para poder trabalhar com o rails devidamente instalado na minha máquina:</p>
<p>1- Instalar Ruby:</p>
<p style="padding-left: 30px;">esta parte é sem problemas, existem várias formas de fazer isso abaixo estão algumas formas possíveis:</p>
<p style="padding-left: 60px;">a) faça o download do ruby-x.y.z.tar.gz do site http://www.ruby-lang.org/en/. Em seguida dê os comandos</p>
<pre style="padding-left: 90px;"><strong>tar xzf ruby-x.y.z.tar.gz
cd ruby-x.y.y
./configure
make
make test
sudo make install</strong></pre>
<p style="padding-left: 30px;">
<p style="padding-left: 30px;">ou simplesmente:</p>
<pre style="padding-left: 60px;"><strong>b) apt-get install irb1.8 libreadline-ruby1.8 libruby libruby1.8 rdoc1.8 ruby ruby1.8 ruby1.8-dev</strong></pre>
<p>2) instalar o RubyGems. Esta é a parte que dá problema. A melhor solução que encontrei foi:</p>
<p style="padding-left: 30px;">entre no site: http://rubygems.rubyforge.org</p>
<p style="padding-left: 30px;">clique no link de downloads e escolha uma versão para baixar.</p>
<p style="padding-left: 30px;">Depois é só dar os sequintes comandos</p>
<pre style="padding-left: 60px;"><strong>tar xzf rubygems-x.y.y.tar.gz
cd rubygems-x.y.y
sudo ruby setup.rb</strong></pre>
<p style="padding-left: 30px;">Evite tentar instalar com o comando: <code><strong>sudo apt-get install rubygems</strong><br />
tive muitos problemas com isso.</code></p>
<p style="padding-left: 30px;">se você já tinha feito isso antes, para corrigir, basta dar um <strong>rm -f /usr/gem/gem</strong>. isso excluirá o gem errado.</p>
<p style="padding-left: 30px;">Depois é só criar um link simbólico (apenas para melhorar na hora de dar o comando)</p>
<pre style="padding-left: 60px;"><strong><code>cd /usr/bin
sudo ln -s gem1.8 gem
</code></strong></pre>
<p>3) Em seguida, basta instalar o rails :</p>
<pre style="padding-left: 60px;"><code><strong>sudo gem install rails

</strong></code></pre>
<p>Agora provavelmente o rails está instalado. espero que tenha dado tudo certo.</p>
<p>Boa sorte!</p>
<p style="padding-left: 30px;"><code><strong></strong></code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tink.com.br/?feed=rss2&amp;p=192</wfw:commentRss>
		</item>
		<item>
		<title>Generating PDF by a very (very!) simple way!</title>
		<link>http://blog.tink.com.br/?p=165</link>
		<comments>http://blog.tink.com.br/?p=165#comments</comments>
		<pubDate>Fri, 10 Oct 2008 18:02:22 +0000</pubDate>
		<dc:creator>Rafael Uchôa</dc:creator>
		
		<category><![CDATA[inglês]]></category>

		<category><![CDATA[ruby on rails]]></category>

		<category><![CDATA[pdf]]></category>

		<category><![CDATA[prince xml]]></category>

		<category><![CDATA[princely]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://blog.tink.com.br/?p=165</guid>
		<description><![CDATA[Yes, by a very, very simple way! First of all, you don&#8217;t need to worry about document&#8217;s layout, you will use your own View! Let&#8217;s see how.
Before anything, you need to install a command-line program that can convert any XML to PDF, called Prince XML. The program is distributed under a free license and can [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, by a very, very simple way! First of all, you don&#8217;t need to worry about document&#8217;s layout, you will use your own View! Let&#8217;s see how.</p>
<p>Before anything, you need to install a command-line program that can convert any XML to PDF, called <a href="http://www.princexml.com/ ">Prince XML</a>. The program is distributed under a free license and can generate PDF files based on XHTML with CSS applied. See the <a href="http://www.princexml.com/download/">site</a> for more details.</p>
<p><span id="more-165"></span></p>
<p>There is a lot of interfaces to connect your app to PrinceXML. For Ruby On Rails, you can use <a href="http://www.mbleigh.com/plugins/princely-rails-prince-xml-wrapper">Princely</a>. In your Rails app, run the git command</p>
<pre>git clone git://github.com/mbleigh/princely.git vendor/plugins/princely</pre>
<p>Don&#8217;t worry if you don&#8217;t have any idea how to use GIT (like me! :-),  this command only copies the plugin to your application.</p>
<p>Talking about the plugin, it will register PDF MimeType so you can call your action with .pdf extension on URL.</p>
<p>So, your Contoller&#8217;s action needs to be something like this:</p>
<pre>  # GET /books/1
  # GET /books/1.xml
  def show
    @book = Book.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml =&gt; @book }
      <strong>format.pdf {
            render :pdf =&gt; @book.title,
                   :template =&gt; "books/show.pdf.erb"
      }</strong>
    end
  end</pre>
<p>Now, any request with extesion .pdf will return a PDF file to client. In the View, you can especify the format of <em>link_to</em> function, just like this:</p>
<pre>&lt;%= link_to 'Show PDF', book_path(@book, :format =&gt; :pdf) %&gt;</pre>
<p>And it&#8217;s done!</p>
<p>Have fun y hasta luego!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tink.com.br/?feed=rss2&amp;p=165</wfw:commentRss>
		</item>
		<item>
		<title>Upload simples em Rails</title>
		<link>http://blog.tink.com.br/?p=134</link>
		<comments>http://blog.tink.com.br/?p=134#comments</comments>
		<pubDate>Fri, 10 Oct 2008 18:01:56 +0000</pubDate>
		<dc:creator>ontonho</dc:creator>
		
		<category><![CDATA[português]]></category>

		<category><![CDATA[ruby on rails]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://blog.tink.com.br/?p=134</guid>
		<description><![CDATA[Existem muitos plugins ótimos para fazer upload de arquivos em Rails, entretanto, é possível fazer isso de uma forma bastante simples, passo a passo.
1- Criar um projeto Rails
&#62;&#62; rails photos
&#62;&#62; cd photos
2- Criar uma pasta dentro de Public (ou qualquer outro lugar) onde ficará armazenada a foto
&#62;&#62; mkdir public/photos
3- Gerar o modelo Photo
&#62;&#62; script/generate model [...]]]></description>
			<content:encoded><![CDATA[<p>Existem muitos plugins ótimos para fazer upload de arquivos em Rails, entretanto, é possível fazer isso de uma forma bastante simples, passo a passo.<span id="more-134"></span></p>
<p>1- Criar um projeto Rails</p>
<pre style="padding-left: 30px;">&gt;&gt; rails photos</pre>
<pre style="padding-left: 30px;">&gt;&gt; cd photos</pre>
<p>2- Criar uma pasta dentro de Public (ou qualquer outro lugar) onde ficará armazenada a foto</p>
<pre style="padding-left: 30px;">&gt;&gt; mkdir public/photos</pre>
<p>3- Gerar o modelo Photo</p>
<pre style="padding-left: 30px;">&gt;&gt; script/generate model photo</pre>
<p>4- Editar o modelo (photo.rb) com o conteudo abaixo:</p>
<p style="padding-left: 30px;">É necessário que a pasta &#8220;public/photos&#8221; exista.</p>
<pre style="padding-left: 60px;">  def self.save(upload)
    name =  upload['datafile'].original_filename
    directory = "public/photos"
    # create the file path
    path = File.join(directory, name)
    # write the file
    File.open(path, "wb") { |f| f.write(upload['datafile'].read) }
  end</pre>
<p>5- Gerar o controller de photos</p>
<pre style="padding-left: 30px;">&gt;&gt; script/generate controller Photo</pre>
<p>6- Editar o controller (photos_controller.rb) com o conteudo abaixo</p>
<pre style="padding-left: 60px;">def index
     render :file =&gt; 'app\views\upload\uploadfile.rhtml'
  end
  def create
    post = Photo.save(params[:upload])
    render :text =&gt; "Arquivo enviado com sucesso"
  end</pre>
<p>7- Criar a view (uploadfile.rhtml)</p>
<pre style="padding-left: 60px;">&lt;h1&gt;File Upload&lt;/h1&gt;
&lt;% form_for(:html =&gt; { :multipart =&gt; true }, :action =&gt; :create) do |f| %&gt;
&lt;p&gt;&lt;%= file_field 'upload', 'datafile' %&gt;&lt;/p&gt;
  &lt;p&gt;&lt;%= f.submit "Create" %&gt;&lt;/p&gt;
&lt;% end %&gt;</pre>
<p>8- Abrir o navegador, fazer o upload e verificar a pasta public/photos</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tink.com.br/?feed=rss2&amp;p=134</wfw:commentRss>
		</item>
		<item>
		<title>Upload Files in Rails</title>
		<link>http://blog.tink.com.br/?p=149</link>
		<comments>http://blog.tink.com.br/?p=149#comments</comments>
		<pubDate>Fri, 10 Oct 2008 18:01:12 +0000</pubDate>
		<dc:creator>ontonho</dc:creator>
		
		<category><![CDATA[inglês]]></category>

		<category><![CDATA[ruby on rails]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://blog.tink.com.br/?p=149</guid>
		<description><![CDATA[There are many good plugins to upload files in Rails, but it is possile to do it by a simple way. I will show it step by step.
1- Create a Rails project
&#62;&#62; rails photos
&#62;&#62; cd photos
2- Create a folder inside Public (or another place you want) where the music will be.
&#62;&#62; mkdir public/photos
3- Generate model [...]]]></description>
			<content:encoded><![CDATA[<p>There are many good plugins to upload files in Rails, but it is possile to do it by a simple way. I will show it step by step.<span id="more-149"></span></p>
<p>1- Create a Rails project</p>
<pre style="padding-left: 30px;">&gt;&gt; rails photos</pre>
<pre style="padding-left: 30px;">&gt;&gt; cd photos</pre>
<p>2- Create a folder inside Public (or another place you want) where the music will be.</p>
<pre style="padding-left: 30px;">&gt;&gt; mkdir public/photos</pre>
<p>3- Generate model Photo</p>
<pre style="padding-left: 30px;">&gt;&gt; script/generate model photo</pre>
<p>4- Edit model with a content bellow:</p>
<pre style="padding-left: 60px;">  def self.save(upload)
    name =  upload['datafile'].original_filename
    directory = "public/photos"
    # create the file path
    path = File.join(directory, name)
    # write the file
    File.open(path, "wb") { |f| f.write(upload['datafile'].read) }
  end</pre>
<p>5- Generate the photo contoller</p>
<pre style="padding-left: 30px;">&gt;&gt; script/generate controller Photo</pre>
<p>6- Edit controller with a content bellow:</p>
<pre style="padding-left: 60px;">def index
     render :file =&gt; 'app\views\upload\uploadfile.rhtml'
  end
  def create
    post = Music.save(params[:upload])
    render :text =&gt; "File has been uploaded successfully"
  end</pre>
<p>7- Create a view (uploadfile.rhtml)</p>
<pre style="padding-left: 60px;">&lt;h1&gt;File Upload&lt;/h1&gt;
&lt;% form_for( :html =&gt; { :multipart =&gt; true }, :action =&gt; :create) do |f| %&gt;
&lt;p&gt;&lt;%= file_field 'upload', 'datafile' %&gt;&lt;/p&gt;
  &lt;p&gt;&lt;%= f.submit "Create" %&gt;&lt;/p&gt;
&lt;% end %&gt;</pre>
<p>8- open browser, upload a file and verify public/photos</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tink.com.br/?feed=rss2&amp;p=149</wfw:commentRss>
		</item>
		<item>
		<title>Using sphinx with Ruby on Rails</title>
		<link>http://blog.tink.com.br/?p=167</link>
		<comments>http://blog.tink.com.br/?p=167#comments</comments>
		<pubDate>Fri, 10 Oct 2008 18:00:48 +0000</pubDate>
		<dc:creator>David William</dc:creator>
		
		<category><![CDATA[inglês]]></category>

		<category><![CDATA[ruby on rails]]></category>

		<category><![CDATA[search engine]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[search]]></category>

		<category><![CDATA[Sphinx]]></category>

		<category><![CDATA[ultrasphinx]]></category>

		<guid isPermaLink="false">http://blog.tink.com.br/?p=167</guid>
		<description><![CDATA[In this post I would like to share how to use Sphinx through the Ultrasphinx plugin.
I wrote another post about the basic things you should know about Sphinx. If Sphinx is something real new for you, I highly recommend you read it before continue.
First, a quick explanation about Sphinx:
Sphinx is a full-text search engine. The [...]]]></description>
			<content:encoded><![CDATA[<p>In this post I would like to share how to use Sphinx through the Ultrasphinx plugin.</p>
<p>I wrote <a href="http://blog.tink.com.br/?p=12">another post</a> about the basic things you should know about Sphinx. If Sphinx is something real new for you, I highly recommend you read it before continue.</p>
<h3>First, a quick explanation about Sphinx:</h3>
<p>Sphinx is a full-text search engine. The main goal is to provide good and fast search with a lot of options to increase the results&#8217;s relevance.</p>
<p>The distribution includes four programs: indexer (to create fulltext indices), search (to query fulltext indices from command line), searchd (a daemon to search through fulltext indices from external software - the most common case) and sphinxapi (a set of API libraries).</p>
<h3><span id="more-167"></span>Why to use Sphinx?</h3>
<p>It&#8217;s easy to understand after take a look on Sphinx features list. Basicly, if you want high indexing and search speed, high scalability, good relevance, boolean, phrase, and word proximity queries, stopwords support, English and Russian Stemming, then, I can tell you, I&#8217;ll really want to try Sphinx.</p>
<h3>Quick tour</h3>
<p><strong>Download Sphinx:</strong><br />
http://www.sphinxsearch.com/downloads.html<br />
Get the latest release.</p>
<p><strong>Extract everything:</strong></p>
<pre>$ tar xvzf sphinx-sphinx-0.9.8.tar.gz</pre>
<pre>$ cd sphinx</pre>
<p><strong>Then, configure:</strong></p>
<pre>$ ./configure</pre>
<p>Despite the variety of options you have to configure, trust me: if you are getting started, just run ./configure with no options. By default, it will install MySQL database. Later, you can try other options, but first it will be better to see how everything works. To see all the options for configure, use &#8211;help switch.</p>
<p><strong>Build the binaries:</strong></p>
<pre>$ make</pre>
<p><strong>Install the binaries:</strong></p>
<pre>$ (sudo) make install</pre>
<p><strong>Were&#8217;re almost there.</strong></p>
<p>Now, the plugin: <strong>Ultrasphinx</strong></p>
<p>Ultrasphinx is a Ruby on Rails configurator and client to the Sphinx fulltext search engine. I just started to use it. There&#8217;s a lot of things to learn. I&#8217;m enjoing.</p>
<h3>Ultrasphinx features:</h3>
<ul>
<li>searching and ranking across multiple models</li>
<li>delta index support</li>
<li>excerpt highlighting</li>
<li>Google-style query parser</li>
<li>spellcheck</li>
<li>faceting on text, date, and numeric fields</li>
<li>field weighting, merging, and aliasing</li>
<li>geodistance</li>
<li>belongs_to and has_many includes</li>
<li>drop-in compatibility with will_paginate</li>
<li>drop-in compatibility with Interlock</li>
<li>multiple deployment environments</li>
<li>comprehensive Rake tasks</li>
</ul>
<p>Farther then Sphinx, you also need the chronic gem:</p>
<pre>$ sudo gem install chronic</pre>
<p>So, you&#8217;re ready to install the plugin:</p>
<pre>$ script/plugin install -x svn://rubyforge.org/var/svn/fauna/ultrasphinx/trunk</pre>
<p>Or you just download Ultrasphinx (yourapp/vendor/plugin/ultrasphinx/):</p>
<pre>http://github.com/fauna/ultrasphinx/tree/master</pre>
<p>Inside the plugin&#8217;s directory, there is the file examples/default.base. Copy it to the config directory (inside your app root):</p>
<pre>$ cp vendor/plugin/examples/default.base yourapp/config/ultrasphinx/default.base</pre>
<p>Let&#8217;s say you are working in a Book Store project. Assuming you have a Book model, use is_indexed method to configure a model as searchable:</p>
<pre>Class Book &lt; ActiveRecord::Base</pre>
<pre>  is_indexed :fields =&gt; ['title', 'author']</pre>
<pre>end</pre>
<p>To build the index, run:</p>
<pre>$ rake ultrasphinx:configure</pre>
<pre>$ rake ultrasphinx:index</pre>
<pre>$ rake ultrasphinx:daemon:start</pre>
<p>Or, just run:</p>
<pre>$ rake ultrasphinx:bootstrap  #(do the same thing - three in one)</pre>
<h3>Now It&#8217;s time to see some action</h3>
<p>In books_controller.rb, create a new method:</p>
<pre>def search</pre>
<pre>  @books = Ultrasphinx::Search.new(:query =&gt; params[:query])</pre>
<pre>  @books.run</pre>
<pre>  @books.results</pre>
<pre>end</pre>
<p>Assuming you have the view search.html.erb, let&#8217;s write a new entry in config/routes.rb</p>
<pre>map.search  '/books/search/:query', :controller =&gt; 'books', :action =&gt; 'search'</pre>
<p>So now, we can run a search using Sphinx trhough Ultrasphinx plugin, just typing the url with the criteria in the very end. In this example, we are gonna search for &#8220;Scott Adams&#8221; in our Books index. Remember: We have indexed title and author.</p>
<p>http://localhost:3000/books/search/scott adams</p>
<p>Easy like that.</p>
<p>By default, the search is case insensitive and symbols irrelevant. Of course, you can add some interesting features to you search, such as pagination and weights:</p>
<pre>def search</pre>
<pre>  @musics = Ultrasphinx::Search.new(</pre>
<pre>        :query =&gt; params[:query],</pre>
<pre>        :per_page =&gt; 30,</pre>
<pre>        :weights =&gt; { 'author' =&gt; 2.0} # 1.0 is the default value</pre>
<pre>        )</pre>
<pre>  @books.run</pre>
<pre>  @books.results</pre>
<pre>end</pre>
<p>If you want to learn more about Class:Ultrasphinx::Search, go to:</p>
<p><a href="http://blog.evanweaver.com/files/doc/fauna/ultrasphinx/classes/Ultrasphinx/Search.html">http://blog.evanweaver.com/files/doc/fauna/ultrasphinx/classes/Ultrasphinx/Search.html</a></p>
<p>That&#8217;s it. Hope you enjoy.</p>
<p>See you.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tink.com.br/?feed=rss2&amp;p=167</wfw:commentRss>
		</item>
		<item>
		<title>Usando Sphinx com Ruby on Rails</title>
		<link>http://blog.tink.com.br/?p=176</link>
		<comments>http://blog.tink.com.br/?p=176#comments</comments>
		<pubDate>Fri, 10 Oct 2008 18:00:18 +0000</pubDate>
		<dc:creator>David William</dc:creator>
		
		<category><![CDATA[português]]></category>

		<category><![CDATA[ruby on rails]]></category>

		<category><![CDATA[search engine]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[search]]></category>

		<category><![CDATA[Sphinx]]></category>

		<category><![CDATA[ultrasphinx]]></category>

		<guid isPermaLink="false">http://blog.tink.com.br/?p=176</guid>
		<description><![CDATA[Neste post eu gostaria de mostrar como usar Sphinx através do plugin Ultrasphinx.
Eu escrevi outro post sobre o básico que você precisa saber sobre Sphinx. Se Sphinx é algo realmente novo pra você, eu recomendo que você leia o post antes de continuar.
Primeiro, uma rápida explanação sobre Sphinx:
Sphinx é um mecanismo de busca full-text. O [...]]]></description>
			<content:encoded><![CDATA[<p>Neste post eu gostaria de mostrar como usar Sphinx através do plugin Ultrasphinx.</p>
<p>Eu escrevi outro post sobre o básico que você precisa saber sobre Sphinx. Se Sphinx é algo realmente novo pra você, eu recomendo que você leia o post antes de continuar.</p>
<h3>Primeiro, uma rápida explanação sobre Sphinx:</h3>
<p>Sphinx é um mecanismo de busca full-text. O objetivo princial é prover uma busca boa e rápida com uma série de opções para aumentar a relevância dos resultados.</p>
<p>A distribuição inclui quatro programas: indexer (para criar índices fulltext), search (para consultar índices fulltext a partir da linha de comando), searchd (um daemon para pesquisar índices fulltext a partir de softwares externos - o caso mais comum) e sphinxapi (um conunto de bibliotecas API).</p>
<h3><span id="more-176"></span>Por que usar Sphinx?</h3>
<p>É fácil entender o porquê após dar uma olhada na lista de características do Sphinx. Basicamente, se você quer alta velocidade de indexação e de busca, alta escabilidade, boa relevância, consultas de proximidade do tipo boolean, frase e palavras, suporte a stopwords, Stemming em inglês e russo, então, eu posso lhe dizer, você realmente vai querer experimentar Sphinx.</p>
<h3>Tour rápido:</h3>
<p><strong>Faça o download do Sphinx:</strong><br />
http://www.sphinxsearch.com/downloads.html<br />
Obtenha o release mais atual.</p>
<p><strong>Extraia tudo:</strong></p>
<pre>$ tar xvzf sphinx-sphinx-0.9.8.tar.gz</pre>
<pre>$ cd sphinx</pre>
<p><strong>Então, configure:</strong></p>
<pre>$ ./configure</pre>
<p>Apesar da grande variedade de opções para configurar, confie em mim: se você está iniciando, apenas use ./configure sem nenhuma opção. Por padrão, isso configurará o Sphinx para MySQL. Depois você pode experimentar outras opções, mas primeiro será melhor ver como tudo funciona. Para ver todas as opções para configurar, use ./configure &#8211;help.</p>
<p><strong>Construa os binários:</strong></p>
<pre>$ make</pre>
<p><strong>Instale os binários:</strong></p>
<pre>$ (sudo) make install</pre>
<p><strong>Nós estamos quase lá </strong></p>
<p>Agora, o plugin: <strong>Ultrasphinx</strong></p>
<p>Utrasphinx é um configurador Ruby on Rails e um cliente para o mecanismo de busca fulltext do Sphinx. Eu apenas comecei a utilizá-lo. Ainda há muito o que aprender. Estou gostando.</p>
<h3>Características do Ultrasphinx:</h3>
<ul>
<li>Busca e &#8220;rankeia&#8221; múltiplos modelos</li>
<li>Suporta delta index</li>
<li>Faz o highlight do excerpt</li>
<li>Estilo de construção da consulta semelhante ao do Google</li>
<li>Checa a ortografia</li>
<li>Modelagem em campos texto, dara e numéricos</li>
<li>Alias, mesclagem e pesos para campos</li>
<li>Geodistância</li>
<li>Inclui belongs_to e has_many</li>
<li>drop-in compatível com will_paginate</li>
<li>drop-in compatível com Interlock</li>
<li>Ambientes múltiplos de deployment</li>
<li>Rake tests compreensíveis</li>
</ul>
<p>Além do Sphinx, você também precisa do gem chronic:</p>
<pre>$ sudo gem install chronic</pre>
<p>Agora você está pronto para instalar o plugin:</p>
<pre>$ script/plugin install -x svn://rubyforge.org/var/svn/fauna/ultrasphinx/trunk</pre>
<p>Ou tão somente faça o download od Ultrasphinx: (yourapp/vendor/plugin/ultrasphinx/):</p>
<pre>http://github.com/fauna/ultrasphinx/tree/master</pre>
<p>Dentro do diretório do plugin, existe um arquivo dentro de examples chamado default.base. Copie para o diretório config de sua aplicação:</p>
<pre>$ cp vendor/plugin/examples/default.base yourapp/config/ultrasphinx/default.base</pre>
<p>Digamos que você está trabalhando em um projeto de uma livraria. Assumindo que você tem um modelo chamado Book, use o método is_indexed para configurar o modelo como &#8220;buscável&#8221;:</p>
<pre>Class Book &lt; ActiveRecord::Base</pre>
<pre>  is_indexed :fields =&gt; ['title', 'author']</pre>
<pre>end</pre>
<p>Para construir o índice, execute:</p>
<pre>$ rake ultrasphinx:configure</pre>
<pre>$ rake ultrasphinx:index</pre>
<pre>$ rake ultrasphinx:daemon:start</pre>
<p>Ou apenas execute:</p>
<pre>$ rake ultrasphinx:bootstrap  #(faz a mesma coisa - três em um)</pre>
<h3>Agora, é hora de ver alguma ação</h3>
<p>No arquivo books_controller.rb, crie um novo método:</p>
<pre>def search</pre>
<pre>  @books = Ultrasphinx::Search.new(:query =&gt; params[:query])</pre>
<pre>  @books.run</pre>
<pre>  @books.results</pre>
<pre>end</pre>
<p>Assumindo que você tem uma view chamada search.html.erb, vamos escrever uma nova entrada no arquivo config/routes.rb:</p>
<pre>map.search  '/books/search/:query', :controller =&gt; 'books', :action =&gt; 'search'</pre>
<p>Agora podemos execurar a busca usando Sphinx através do plugin Ultrasphinx, bastando apenas digitar a url da view com o critério da busca no final. Neste exemplo, nós vamos procurar por &#8220;Scott Adams&#8221; em nosso índice de livros. Lembre-se: nós indexamos o título e o autor (title e author).</p>
<p>http://localhost:3000/books/search/scott adams</p>
<p>Simples assim.</p>
<p>Por padrão, a busca é insensitiva ao caso e irrelevante quanto a acentos. É claro que você pode adicionar características interessantes à sua busca, como paginação e peso:</p>
<pre>def search</pre>
<pre>  @musics = Ultrasphinx::Search.new(</pre>
<pre>        :query =&gt; params[:query],</pre>
<pre>        :per_page =&gt; 30,</pre>
<pre>        :weights =&gt; { 'author' =&gt; 2.0} # 1.0 é o valor padrão</pre>
<pre>        )</pre>
<pre>  @books.run</pre>
<pre>  @books.results</pre>
<pre>end</pre>
<p>Se você quer aprender mais sobre Class:Ultrasphinx::Search, visite:</p>
<p><a href="http://blog.evanweaver.com/files/doc/fauna/ultrasphinx/classes/Ultrasphinx/Search.html">http://blog.evanweaver.com/files/doc/fauna/ultrasphinx/classes/Ultrasphinx/Search.html</a></p>
<p>É isso. Espero que você goste.</p>
<p>Até mais.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tink.com.br/?feed=rss2&amp;p=176</wfw:commentRss>
		</item>
		<item>
		<title>MoreCSS - An easy and clean way to write javascript</title>
		<link>http://blog.tink.com.br/?p=133</link>
		<comments>http://blog.tink.com.br/?p=133#comments</comments>
		<pubDate>Wed, 08 Oct 2008 21:43:34 +0000</pubDate>
		<dc:creator>David William</dc:creator>
		
		<category><![CDATA[inglês]]></category>

		<category><![CDATA[interface]]></category>

		<category><![CDATA[css]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[javascript library]]></category>

		<category><![CDATA[morecss]]></category>

		<guid isPermaLink="false">http://blog.tink.com.br/?p=133</guid>
		<description><![CDATA[Today I would like to talk about something I found when I was looking for some javascript integration with the project I&#8217;m working. It&#8217;s MoreCSS. A simple way to integrate the most common javascript elements in a web page.
&#8220;Imagine creating pop-ups, tab menus or tool-tips could be as easy and comfortable as writing some styles [...]]]></description>
			<content:encoded><![CDATA[<p>Today I would like to talk about something I found when I was looking for some javascript integration with the project I&#8217;m working. It&#8217;s MoreCSS. A simple way to integrate the most common javascript elements in a web page.</p>
<p>&#8220;Imagine creating pop-ups, tab menus or tool-tips could be as easy and comfortable as writing some styles in CSS&#8230;&#8221; (Is what the project page says to catch your eyes)</p>
<p><span id="more-133"></span><strong>That&#8217;s MoreCSS</strong></p>
<p>Basically, you just need to use two files: the first one is &#8216;morecss.js&#8217;, which is the Design Oriented Javascript Library. The second one is your CSS file, with your special CSS code.</p>
<h2>See how it works:</h2>
<h3>Creating Pop-ups:</h3>
<pre>a:active {</pre>
<pre>  target: popup;</pre>
<pre>  target-width: 640px;</pre>
<pre>  target-height: 480p;</pre>
<pre>  target-position: center middle;</pre>
<pre>}</pre>
<h3>Apply automatic hyphenation:</h3>
<pre>p.myClass {</pre>
<pre>  hyphenation: english;</pre>
<pre>  hyphenation-restrict: large-words;</pre>
<pre>}</pre>
<h3>Creating tool-tips:</h3>
<pre>a {</pre>
<pre>  tooltip: title;</pre>
<pre>  tooltip-class: MyTooltipStyles;</pre>
<pre>}</pre>
<h3>Advanced list styling:</h3>
<pre>ul li {</pre>
<pre>  list-type-color: #65C827;</pre>
<pre>  list-type-char: &gt;&gt;;</pre>
<pre>}</pre>
<h3>Cross-browser opacity style:</h3>
<pre>img#myImage:hover {</pre>
<pre>  opacity: 0.5;</pre>
<pre>}</pre>
<pre>img#myImage:leave {</pre>
<pre>  opacity: 1;</pre>
<pre>}</pre>
<h3>Something you should know about it:</h3>
<ul>
<li>No new syntax to learn. No programming skills needed.</li>
<li>Small 6 KB core script (GZIP compressed, 12 KB uncompressed)</li>
<li>Cross-browser compatibility for Internet Explorer 6+, Firefox 2+, Opera 9+, Safari 2+ and more</li>
<li>Valid W3C CSS</li>
<li>Plug-in interface</li>
</ul>
<h3>Project page:</h3>
<p><a href="http://yellowgreen.de/morecss">http://yellowgreen.de/morecss</a></p>
<h3>Download page:</h3>
<p><a href="http://morecss.yellowgreen.de/documentation/information/downloads/">http://morecss.yellowgreen.de/documentation/information/downloads/</a></p>
<h3>Syntax Elements</h3>
<p>The syntax in MoreCSS is very similar to real CSS, but with some limitations because of performance reasons.<br />
But MoreCSS has also some special syntax elements for advanced functions.</p>
<h3>Properties</h3>
<p>Once you have installed MoreCSS you can use the properties in the same way as regular CSS properties.<br />
With plug-ins you can include special properties for visual effects and more.</p>
<h3>How it works (a little bit more)</h3>
<p>MoreCSS runs automatically on page load and applies the properties written in external style sheets to the specified elements. You do not need to configure or code something.<br />
Installation</p>
<p>Just include MoreCSS.js and the external style sheet(s) in your page header.<br />
Be sure that you include the style sheet(s) at first, then MoreCSS.js and at least all plug-in scripts.</p>
<p>Have fun with MoreCSS.</p>
<p>See you!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tink.com.br/?feed=rss2&amp;p=133</wfw:commentRss>
		</item>
		<item>
		<title>MoreCSS - Um jeito fácil e limpo de escrever javascript</title>
		<link>http://blog.tink.com.br/?p=138</link>
		<comments>http://blog.tink.com.br/?p=138#comments</comments>
		<pubDate>Wed, 08 Oct 2008 21:42:50 +0000</pubDate>
		<dc:creator>David William</dc:creator>
		
		<category><![CDATA[interface]]></category>

		<category><![CDATA[português]]></category>

		<category><![CDATA[css]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[javascript li]]></category>

		<category><![CDATA[morecss]]></category>

		<guid isPermaLink="false">http://blog.tink.com.br/?p=138</guid>
		<description><![CDATA[Hoje eu gostaria de falar sobre algo que encontrei quando estava procurando informações sobre integração javascript com um projeto com o qual estou trabalhando. Trata-se do MoreCSS. Um jeito simples de integrar os elementos javascripts mais comuns em uma página web.
&#8220;Imagine que criar popups, tab menus ou tooltips pode ser tão fácil e confortável quanto [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje eu gostaria de falar sobre algo que encontrei quando estava procurando informações sobre integração javascript com um projeto com o qual estou trabalhando. Trata-se do MoreCSS. Um jeito simples de integrar os elementos javascripts mais comuns em uma página web.</p>
<p>&#8220;Imagine que criar popups, tab menus ou tooltips pode ser tão fácil e confortável quanto escrever alguns estilos em CSS&#8230;&#8221; (É o que a página do projeto diz para capturar os seus olhos&#8230;)</p>
<p><span id="more-138"></span><strong>Isto é MoreCSS</strong></p>
<p>Basicamente, você só precisa usar dois arquivos: o primeiro é o &#8216;morecss.js&#8217;, que é a Biblioteca Javascript Orientada a Design. O segundo é o seu arquivo CSS, com o código CSS especial.</p>
<h2>Veja como funciona:</h2>
<h3>Criando popups:</h3>
<pre>a:active {</pre>
<pre>  target: popup;</pre>
<pre>  target-width: 640px;</pre>
<pre>  target-height: 480p;</pre>
<pre>  target-position: center middle;</pre>
<pre>}</pre>
<h3>Aplicando hifenização automática:</h3>
<pre>p.myClass {</pre>
<pre>  hyphenation: english;</pre>
<pre>  hyphenation-restrict: large-words;</pre>
<pre>}</pre>
<h3>Criando tooltips:</h3>
<pre>a {</pre>
<pre>  tooltip: title;</pre>
<pre>  tooltip-class: MyTooltipStyles;</pre>
<pre>}</pre>
<h3>Estilo de lista avançado:</h3>
<pre>ul li {</pre>
<pre>  list-type-color: #65C827;</pre>
<pre>  list-type-char: &gt;&gt;;</pre>
<pre>}</pre>
<h3>Estilo de opacidade crows-browser:</h3>
<pre>img#myImage:hover {</pre>
<pre>  opacity: 0.5;</pre>
<pre>}</pre>
<pre>img#myImage:leave {</pre>
<pre>  opacity: 1;</pre>
<pre>}</pre>
<h3>Algumas coisas que você precisa saber:</h3>
<ul>
<li>Não é necessário aprender nenhuma nova sintaxe. Nenhuma habilidade de programação é necessária.</li>
<li>Pequeno core script de 6 KB (com compressão GZIP e 12 KB sem compressão)</li>
<li>Compatibilidade cross-browser para Internet Explorer 6+, Firefox 2+, Opera 9+, Safari 2+ e mais</li>
<li>W3C CSS válido</li>
<li>Plugin interface</li>
</ul>
<h3>Página do projeto:</h3>
<p><a href="http://yellowgreen.de/morecss">http://yellowgreen.de/morecss</a></p>
<h3>Endereço para download:</h3>
<p><a href="http://morecss.yellowgreen.de/documentation/information/downloads/">http://morecss.yellowgreen.de/documentation/information/downloads/</a></p>
<h3>Elementos da sintaxe:</h3>
<p>A sintaxe do MoreCSS é muito similar ao CSS real, mas com algumas limitações em função de requisitos de perfomance. Mas MoreCSS tem também alguns elmentos especiais de sintaxe para funções avançadas.</p>
<h3>Propriedades</h3>
<p>Uma vez instalado o MoreCSS você pode utilizar as propriedades da mesma forma que usa as propriedades de um CSS normal.</p>
<h3>Como isso funciona (um pouco mais)</h3>
<p>MoreCSS roda automaticamente no carregamento da página e aplica as propriedades escritas na folha de estilo externa para os elementos especificados. Você não precisa configurar ou codificar coisa alguma.</p>
<h3>Instalação</h3>
<p>Apenas inclua MoreCSS.js e a folha de estilo externa no cabeçalho da sua página. Certifique-se a ordem de inclusão é primeiro a folha de estilo e depois o javascript MoreCSS.js e por último os plugins (caso haja).</p>
<p>Divirta-se com MoreCSS.</p>
<p>Até mais!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tink.com.br/?feed=rss2&amp;p=138</wfw:commentRss>
		</item>
	</channel>
</rss>
