<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3238689029190355690</id><updated>2011-11-27T15:30:18.502-08:00</updated><title type='text'>Testando com a testa</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gimenes-alves.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://gimenes-alves.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Altherlex Alves</name><uri>http://www.blogger.com/profile/08141329424051857933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3238689029190355690.post-2769716952483219756</id><published>2010-02-12T08:26:00.001-08:00</published><updated>2010-02-12T08:26:40.938-08:00</updated><title type='text'>JS: Prototype and Sort Table</title><content type='html'>&lt;a href="http://www.millstream.com.au/upload/code/tablekit/"&gt;tablekit&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3238689029190355690-2769716952483219756?l=gimenes-alves.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gimenes-alves.blogspot.com/feeds/2769716952483219756/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://gimenes-alves.blogspot.com/2010/02/js-prototype-and-sort-table.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default/2769716952483219756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default/2769716952483219756'/><link rel='alternate' type='text/html' href='http://gimenes-alves.blogspot.com/2010/02/js-prototype-and-sort-table.html' title='JS: Prototype and Sort Table'/><author><name>Altherlex Alves</name><uri>http://www.blogger.com/profile/08141329424051857933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3238689029190355690.post-7935677142646570133</id><published>2010-02-04T07:34:00.000-08:00</published><updated>2010-02-11T04:02:11.936-08:00</updated><title type='text'>PDF::Writer + Google Charts</title><content type='html'>&lt;style type="text/css"&gt;/* GeSHi (C) 2004 - 2007 Nigel McNie (http://qbnz.com/highlighter) */.ruby .de1, .ruby .de2 {font-family: 'Courier New', Courier, monospace; font-weight: normal;}.ruby  {font-family: monospace;}.ruby .imp {font-weight: bold; color: red;}.ruby li {background: #ffffff;}.ruby li.li2 {background: #f8f8f8;}.ruby .kw1 {color:#9966CC; font-weight:bold;}.ruby .kw2 {color:#0000FF; font-weight:bold;}.ruby .kw3 {color:#CC0066; font-weight:bold;}.ruby .kw4 {color:#CC00FF; font-weight:bold;}.ruby .co1 {color:#008000; font-style:italic;}.ruby .coMULTI {color:#000080; font-style:italic;}.ruby .es0 {color:#000099;}.ruby .br0 {color:#006600; font-weight:bold;}.ruby .st0 {color:#996600;}.ruby .nu0 {color:#006666;}.ruby .me1 {color:#9900CC;}.ruby .re0 {color:#ff6633; font-weight:bold;}.ruby .re1 {color:#0066ff; font-weight:bold;}.ruby .re2 {color:#6666ff; font-weight:bold;}.ruby .re3 {color:#ff3333; font-weight:bold;}&lt;/style&gt;&lt;script src="/pastebin.js?ver=7" type="text/javascript"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;PDF with ruby - &lt;a href="http://ruby-pdf.rubyforge.org/pdf-writer/index.html"&gt;PDF::Writer&lt;/a&gt; (&lt;a href="http://www.artima.com/rubycs/articles/pdf_writerP.html"&gt;tutorial&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;div class="syntax"&gt;&lt;div class="ruby" style="font-family: monospace;"&gt;&lt;ol&gt;&lt;li class="li1"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="de1"&gt;report = GoogleChart.&lt;span class="me1"&gt;new&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="de2"&gt;report.&lt;span class="me1"&gt;type&lt;/span&gt; = &lt;span class="re3"&gt;:bar_vertical_grouped&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="de1"&gt;report.&lt;span class="me1"&gt;height&lt;/span&gt; = &lt;span class="nu0"&gt;350&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="de2"&gt;report.&lt;span class="me1"&gt;width&lt;/span&gt; = &lt;span class="nu0"&gt;600&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="de1"&gt;report.&lt;span class="me1"&gt;colors&lt;/span&gt; = &lt;span class="st0"&gt;'346090'&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="de2"&gt;report.&lt;span class="me1"&gt;title&lt;/span&gt; = &lt;span class="st0"&gt;'Pay+Back'&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="de1"&gt;report.&lt;span class="me1"&gt;data&lt;/span&gt; = total_dist_mensal&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="de2"&gt;report.&lt;span class="me1"&gt;data&lt;/span&gt; = &lt;span class="br0"&gt;[&lt;/span&gt;&lt;span class="nu0"&gt;459&lt;/span&gt;,&lt;span class="nu0"&gt;458&lt;/span&gt;,&lt;span class="nu0"&gt;458&lt;/span&gt;,&lt;span class="nu0"&gt;453&lt;/span&gt;,&lt;span class="nu0"&gt;453&lt;/span&gt;,&lt;span class="nu0"&gt;442&lt;/span&gt;,&lt;span class="nu0"&gt;442&lt;/span&gt;,&lt;span class="nu0"&gt;442&lt;/span&gt;,&lt;span class="nu0"&gt;442&lt;/span&gt;,&lt;span class="nu0"&gt;442&lt;/span&gt;,&lt;span class="nu0"&gt;442&lt;/span&gt;,&lt;span class="nu0"&gt;1641&lt;/span&gt;&lt;span class="br0"&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="de1"&gt;report.&lt;span class="me1"&gt;data&lt;/span&gt; = &lt;span class="br0"&gt;[&lt;/span&gt;&lt;span class="nu0"&gt;10&lt;/span&gt;,&lt;span class="nu0"&gt;20&lt;/span&gt;,&lt;span class="nu0"&gt;40&lt;/span&gt;,&lt;span class="nu0"&gt;30&lt;/span&gt;,&lt;span class="nu0"&gt;10&lt;/span&gt;,&lt;span class="nu0"&gt;30&lt;/span&gt;,&lt;span class="nu0"&gt;10&lt;/span&gt;,&lt;span class="nu0"&gt;10&lt;/span&gt;,&lt;span class="nu0"&gt;10&lt;/span&gt;,&lt;span class="nu0"&gt;10&lt;/span&gt;,&lt;span class="nu0"&gt;10&lt;/span&gt;,&lt;span class="nu0"&gt;10&lt;/span&gt;&lt;span class="br0"&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="de2"&gt;report.&lt;span class="me1"&gt;labels&lt;/span&gt; = &lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="nu0"&gt;1&lt;/span&gt;..&lt;span class="nu0"&gt;12&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;.&lt;span class="me1"&gt;to_a&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="de1"&gt;report.&lt;span class="me1"&gt;eixos&lt;/span&gt; = &lt;span class="st0"&gt;'x,y'&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="de2"&gt;report = &lt;span class="kw4"&gt;URI&lt;/span&gt;.&lt;span class="me1"&gt;escape&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;a.&lt;span class="me1"&gt;to_url&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="de1"&gt;&lt;span class="re1"&gt;@pdf&lt;/span&gt;.&lt;span class="me1"&gt;add_image_from_file&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt; a , &lt;span class="nu0"&gt;60&lt;/span&gt;, &lt;span class="nu0"&gt;10&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3238689029190355690-7935677142646570133?l=gimenes-alves.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gimenes-alves.blogspot.com/feeds/7935677142646570133/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://gimenes-alves.blogspot.com/2010/02/pdfwriter-google-charts.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default/7935677142646570133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default/7935677142646570133'/><link rel='alternate' type='text/html' href='http://gimenes-alves.blogspot.com/2010/02/pdfwriter-google-charts.html' title='PDF::Writer + Google Charts'/><author><name>Altherlex Alves</name><uri>http://www.blogger.com/profile/08141329424051857933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3238689029190355690.post-8540782855120324925</id><published>2010-02-03T20:57:00.000-08:00</published><updated>2010-02-22T12:49:24.020-08:00</updated><title type='text'>Push Server and Juggernaut</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://multiplayerblog.mtv.com/wp-content/uploads/2009/05/052109_juggernaut.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://multiplayerblog.mtv.com/wp-content/uploads/2009/05/052109_juggernaut.jpg" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Server push consiste em um servidor poder se comunicar com o cliente em tempo real sem que o navegador tenha que ficar pedindo atualizações. Uma combinação de técnicas cliente/servidor da Web, onde o servidor transfere os dados para o cliente, mas a conexão de dados permanece aberta.&lt;/div&gt;&lt;h2 style="text-align: left;"&gt;Juggernaut&lt;/h2&gt;&lt;div style="text-align: left;"&gt;O Juggernaut é um plugin para Ruby on Rails que implementa o conceito de server push.&lt;/div&gt;&lt;div style="text-align: left;"&gt;Atenção: O Juggernaut usa conexão socket para trasmitir a mensagem, e para isso funcionar, ele usa um arquivo .swf (flash na versão 8) nos navegadores dos clientes que fica ouvindo determinada porta, esperando por mensagens. Ou seja o usuário deverá ter o plugin flash instalado em seu navegador.&lt;/div&gt;&lt;h3 style="text-align: left;"&gt;Como acontece&lt;/h3&gt;&lt;ol&gt;&lt;li style="margin-left: 15px; text-align: left;"&gt;Cliente A abre uma conexão socket com o servidor socket&lt;/li&gt;&lt;li style="margin-left: 15px; text-align: left;"&gt;Cliente B faz uma chamada Ajax para o Rails&lt;/li&gt;&lt;li style="margin-left: 15px; text-align: left;"&gt;Rails envia a mensagem para o servidor socket&lt;/li&gt;&lt;li style="margin-left: 15px; text-align: left;"&gt;O servidor socket retorna a mensagem para os clientes.&lt;/li&gt;&lt;/ol&gt;&lt;h3 style="text-align: left;"&gt;Implantando o processo&lt;/h3&gt;&lt;div style="text-align: left;"&gt;1 - Após a&amp;nbsp;&lt;a href="http://juggernaut.rubyforge.org/" style="color: #074d8f;" target="_blank"&gt;&amp;nbsp;instalação&lt;/a&gt;&amp;nbsp;é necessário criar o arquivo juggernaut_hosts.yml em config no projeto indicando a configuração do servidor de aplicativo do juggernaut:&lt;/div&gt;&lt;br /&gt;&lt;div class="syntax"&gt;&lt;div class="ruby" style="font-family: monospace;"&gt;&lt;ol&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&lt;span class="re3"&gt;:hosts&lt;/span&gt;:&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;&amp;nbsp;&amp;nbsp;- &lt;span class="re3"&gt;:port&lt;/span&gt;: &lt;span class="nu0"&gt;5001&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="re3"&gt;:host&lt;/span&gt;: #ip&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="re3"&gt;:environment&lt;/span&gt;: &lt;span class="re3"&gt;:development&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="de1"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;&amp;nbsp;&amp;nbsp;- &lt;span class="re3"&gt;:port&lt;/span&gt;: &lt;span class="nu0"&gt;5001&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="re3"&gt;:host&lt;/span&gt;: #ip&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="re3"&gt;:environment&lt;/span&gt;: &lt;span class="re3"&gt;:production&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="syntax"&gt;&lt;div class="ruby" style="font-family: monospace;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;2 - Acrescentar os arquivos javascript do Juggernaut (em layout/padrao.rhtml):&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="syntax"&gt;&lt;div class="ruby" style="font-family: monospace;"&gt;&lt;ol&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;lt;%= javascript_include_tag &lt;span class="re3"&gt;:juggernaut&lt;/span&gt; %&amp;gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;3 - Após, é instânciado com o código do usuário:&lt;br /&gt;&lt;br /&gt;&lt;div class="syntax"&gt;&lt;div class="ruby" style="font-family: monospace;"&gt;&lt;ol&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;lt;%= juggernaut&lt;span class="br0"&gt;(&lt;/span&gt; &lt;span class="re3"&gt;:client_id&lt;/span&gt; =&amp;gt; session&lt;span class="br0"&gt;[&lt;/span&gt;&lt;span class="re3"&gt;:UsrConectado&lt;/span&gt;&lt;span class="br0"&gt;]&lt;/span&gt;.&lt;span class="me1"&gt;cdg_usuario&lt;/span&gt; &lt;span class="br0"&gt;)&lt;/span&gt; %&amp;gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;4 - Criando o arquivo para o servidor juggernaut&lt;br /&gt;&lt;div class="syntax"&gt;&lt;div class="ruby" style="font-family: monospace;"&gt;&lt;ol&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;juggernaut -g juggernaut.&lt;span class="me1"&gt;yml&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;5 - Subindo o serviço:&lt;br /&gt;&lt;div class="syntax"&gt;&lt;div class="ruby" style="font-family: monospace;"&gt;&lt;ol&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;juggernaut -c juggernaut.&lt;span class="me1"&gt;yml&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;6 - Enviando comando javascript:&lt;br /&gt;&lt;div class="syntax"&gt;&lt;div class="ruby" style="font-family: monospace;"&gt;&lt;ol&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&lt;span class="co1"&gt;#Broadcast:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;Juggernaut.&lt;span class="me1"&gt;send_to_all&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;"alert('hi from juggernaut')"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&lt;span class="co1"&gt;#Usuario especifico:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;Juggernaut.&lt;span class="me1"&gt;send_to_client&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt; &lt;span class="st0"&gt;"alert('hi from juggernaut')"&lt;/span&gt;, &lt;span class="nu0"&gt;29&lt;/span&gt; &lt;span class="br0"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3238689029190355690-8540782855120324925?l=gimenes-alves.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gimenes-alves.blogspot.com/feeds/8540782855120324925/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://gimenes-alves.blogspot.com/2010/02/push-server-and-juggernaut.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default/8540782855120324925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default/8540782855120324925'/><link rel='alternate' type='text/html' href='http://gimenes-alves.blogspot.com/2010/02/push-server-and-juggernaut.html' title='Push Server and Juggernaut'/><author><name>Altherlex Alves</name><uri>http://www.blogger.com/profile/08141329424051857933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3238689029190355690.post-1982743854174528655</id><published>2010-01-21T10:29:00.001-08:00</published><updated>2010-02-12T08:27:30.426-08:00</updated><title type='text'>JS: Prototype and Right-Click</title><content type='html'>&lt;style type="text/css"&gt;/* GeSHi (C) 2004 - 2007 Nigel McNie (http://qbnz.com/highlighter) */.javascript .de1, .javascript .de2 {font-family: 'Courier New', Courier, monospace; font-weight: normal;}.javascript  {font-family: monospace;}.javascript .imp {font-weight: bold; color: red;}.javascript li {background: #ffffff;}.javascript li.li2 {background: #f8f8f8;}.javascript .kw1 {color: #000066; font-weight: bold;}.javascript .kw2 {color: #003366; font-weight: bold;}.javascript .kw3 {color: #000066;}.javascript .co1 {color: #009900; font-style: italic;}.javascript .coMULTI {color: #009900; font-style: italic;}.javascript .es0 {color: #000099; font-weight: bold;}.javascript .br0 {color: #66cc66;}.javascript .st0 {color: #3366CC;}.javascript .nu0 {color: #CC0000;}.javascript .me1 {color: #006600;}.javascript .re0 {color: #0066FF;}&lt;/style&gt;&lt;br /&gt;&lt;div class="syntax"&gt;&lt;div style="font-family: monospace;" class="javascript"&gt;&lt;ol&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&lt;span class="co1"&gt;// Adicionando listener para right-click&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;Object.&lt;span class="me1"&gt;extend&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;Event, &lt;span class="br0"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp;isRightClick: &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;event&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;&amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;return&lt;/span&gt; &lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;event.&lt;span class="me1"&gt;which&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt; &amp;amp;&amp;amp; &lt;span class="br0"&gt;(&lt;/span&gt;event.&lt;span class="me1"&gt;which&lt;/span&gt; == &lt;span class="nu0"&gt;1&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt; ||&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;event.&lt;span class="me1"&gt;button&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt; &amp;amp;&amp;amp; &lt;span class="br0"&gt;(&lt;/span&gt;event.&lt;span class="me1"&gt;button&lt;/span&gt; == &lt;span class="nu0"&gt;2&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;&amp;nbsp; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&lt;span class="br0"&gt;}&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;document.&lt;span class="me1"&gt;observe&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;"dom:loaded"&lt;/span&gt;, &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;&amp;nbsp; &amp;nbsp; $A&lt;span class="br0"&gt;(&lt;/span&gt;document.&lt;span class="me1"&gt;documentElement&lt;/span&gt;.&lt;span class="me1"&gt;select&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;'[rightClick]'&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;.&lt;span class="me1"&gt;each&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;i&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="br0"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i.&lt;span class="me1"&gt;observe&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;'contextmenu'&lt;/span&gt;, &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="br0"&gt;{&lt;/span&gt; &lt;span class="kw1"&gt;eval&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;i.&lt;span class="me1"&gt;readAttribute&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;'rightClick'&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;&amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&lt;span class="br0"&gt;}&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3238689029190355690-1982743854174528655?l=gimenes-alves.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gimenes-alves.blogspot.com/feeds/1982743854174528655/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://gimenes-alves.blogspot.com/2010/01/right-click-and-prototype.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default/1982743854174528655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default/1982743854174528655'/><link rel='alternate' type='text/html' href='http://gimenes-alves.blogspot.com/2010/01/right-click-and-prototype.html' title='JS: Prototype and Right-Click'/><author><name>Altherlex Alves</name><uri>http://www.blogger.com/profile/08141329424051857933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3238689029190355690.post-1933545600475503778</id><published>2010-01-09T08:44:00.000-08:00</published><updated>2010-01-09T09:03:44.173-08:00</updated><title type='text'>Ciclo vicioso VS Ciclo virtuoso</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.url.edu.gt/otros_sitios/noTabaco/Photos/PX001102.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="265" src="http://www.url.edu.gt/otros_sitios/noTabaco/Photos/PX001102.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Depois que descobri que o google app engine suportava phyton (agora Java), meu sonho é aprender sobre phyton e django.&lt;br /&gt;&lt;div&gt;Pesquisando algum material sobre, achei um artigo interessante:&amp;nbsp;&lt;a href="http://blog.ramgarlic.com/2009/08/artesanato-e-engenharia.html"&gt;Construção civil e engenharia de software&lt;/a&gt;,&amp;nbsp;que não tem nada a ver com linguagem de programação, fala de desenvolvimento ágil e experiência.&lt;span style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 16px; font-weight: bold; line-height: 17px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #333333; font-family: Verdana, Arial, sans-serif;"&gt;&lt;span style="line-height: 17px;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;Na engenharia de software o sonho que vem impulsionando a adoção da Orientação a Objetos é o uso de componentes pré-montados, permitindo a redução do tempo de desenvolvimento e o aumento da qualidade.[...]O framework é como o kit estrutural de uma casa.&lt;br /&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3238689029190355690-1933545600475503778?l=gimenes-alves.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gimenes-alves.blogspot.com/feeds/1933545600475503778/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://gimenes-alves.blogspot.com/2010/01/ciclo-vicioso-vs-ciclo-virtuoso.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default/1933545600475503778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default/1933545600475503778'/><link rel='alternate' type='text/html' href='http://gimenes-alves.blogspot.com/2010/01/ciclo-vicioso-vs-ciclo-virtuoso.html' title='Ciclo vicioso VS Ciclo virtuoso'/><author><name>Altherlex Alves</name><uri>http://www.blogger.com/profile/08141329424051857933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3238689029190355690.post-2182419405404413871</id><published>2009-12-08T06:09:00.001-08:00</published><updated>2009-12-08T06:38:36.603-08:00</updated><title type='text'>Search engine in Ruby on Rails</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://clubedolivro.files.wordpress.com/2009/01/lupa.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://clubedolivro.files.wordpress.com/2009/01/lupa.jpg" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: xx-large;"&gt;Q&lt;/span&gt;&lt;span style="font-size: 13px;"&gt;uem não gosta de facilidades no hora de navegar na&lt;/span&gt;&lt;span style="font-size: 13px;"&gt;&amp;nbsp;internet. Uma dessas facilidades pode ser chamada de &lt;b&gt;&lt;i&gt;simple text-full search engine&lt;/i&gt;&lt;/b&gt;. Em resumo são aqueles campos que aceitam qualquer coisa do usuário e devolve uma lista de possíveis registros procurados.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;Uma vantagem é que se o filtro de busca costuma ser cheio de critérios é só indexar no campo &lt;i&gt;full-text&lt;/i&gt; e está resolvido... resolvido para o programador e para o usuário que irá digitar o que sabe no campo (ou seja não existe campo não nulo neste filtro).&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;Existem vários exemplos desse campo: Google tem um campo bem grande na sua página inicial; mercado livre; submarino... tem um monte desses sites com essa solução.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;O problema na minha empresa não era tão diferente. A gente trabalha num projeto baseado em CRM (Rails and DB2) e os contatos inseridos no banco possuem várias informações, ou seja a tela de pesquisa de um contato específico é possível por várias informações (nome, data de nascimento, e-mail, endereco, cidade, etc...), todas essas informações juntas ou avulsas. Ou seja, se eu fosse fazer um filtro para isso precisaria de um monte de javascript, pois para cada tipo de informação seria apresentado um campo... para data de nascimento um campo data, para código do contato um campo para inserir o codigo e assim por diante. Depois ainda precisaria filtra na controller, na action qual é o tipo da pesquisa se é por cidade, por nome, por data de nasc, por codigo e etc. É um inferno!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;O text-full search resolve tudo isso e se pensarmos um pouco ainda adiciona algumas vantagens, uma dela é que eu posso fazer um levantamento facilmente,&amp;nbsp;por exemplo: eu preciso dos aniversariantes do mês ou os aniversariantes do mês que moram em são paulo ou entao os e-mails dos moradores do bairro do Bom Retiro.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;É uma soluçao muito legal para os sistemas. Para quem quiser saber mais sobre a tecnologia que utilizamos: &lt;a href="http://xapian.org/"&gt;Xapian&lt;/a&gt;. Existem outras mais: ferret, solr... tem outras é que eu não estou lembrando agora mas se vocês colocarem no google vão achar outras mais. O único problema é que para cada tecnologia você vai ter algumas restrição ou algo que não te deixe contente. Por exemplo tem uma dessas soluções que funciona apenas para alguns bancos de dados, outro exemplo é não conseguir indexar os novos registros inseridos em tempo de execução, ou então não conseguir associar informações de outras tabelas ou não conseguir fazer busca com range (ex. os aniversariantes do dia 1/1/2009 a 1/3/3009).&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;Vai de cada um a escolha, vai depender muito do ambiente que se encontram.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;É isso... Se alguem tiver alguma dúvida sobre como implementar o xapian para os seus projetos por favor me mande um e-mail &lt;a href="mailto:para.alves@gmail.com"&gt;Altherlex Alves&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;Abraço e até mais.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3238689029190355690-2182419405404413871?l=gimenes-alves.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gimenes-alves.blogspot.com/feeds/2182419405404413871/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://gimenes-alves.blogspot.com/2009/12/search-engine-in-ruby-on-rails.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default/2182419405404413871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default/2182419405404413871'/><link rel='alternate' type='text/html' href='http://gimenes-alves.blogspot.com/2009/12/search-engine-in-ruby-on-rails.html' title='Search engine in Ruby on Rails'/><author><name>Altherlex Alves</name><uri>http://www.blogger.com/profile/08141329424051857933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3238689029190355690.post-1659723504338182337</id><published>2009-12-08T04:58:00.000-08:00</published><updated>2009-12-08T07:01:11.581-08:00</updated><title type='text'>Noticias de São Paulo Hoje (8 dez 2009 às 8 am)</title><content type='html'>Fala ae rapazeada... faz tempo que eu nao posto nada. Hoje estou com o dia livre.&lt;br /&gt;Vou postar algumas fotos da nossa querida São Paulo.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh6.ggpht.com/_O17tH1hA4kw/Sx4r3JpPkkI/AAAAAAAAAho/ieW8DREVwYw/s1600/Imagem088.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh6.ggpht.com/_O17tH1hA4kw/Sx4r3JpPkkI/AAAAAAAAAho/ieW8DREVwYw/s640/Imagem088.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Essa é da frente da minha casa..&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://lh3.ggpht.com/_O17tH1hA4kw/Sx4r26Y9PWI/AAAAAAAAAik/er0p2evLsFw/s1600/Imagem087.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" src="http://lh3.ggpht.com/_O17tH1hA4kw/Sx4r26Y9PWI/AAAAAAAAAik/er0p2evLsFw/s640/Imagem087.jpg" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3238689029190355690-1659723504338182337?l=gimenes-alves.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gimenes-alves.blogspot.com/feeds/1659723504338182337/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://gimenes-alves.blogspot.com/2009/12/fala-ae-rapazeada.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default/1659723504338182337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default/1659723504338182337'/><link rel='alternate' type='text/html' href='http://gimenes-alves.blogspot.com/2009/12/fala-ae-rapazeada.html' title='Noticias de São Paulo Hoje (8 dez 2009 às 8 am)'/><author><name>Altherlex Alves</name><uri>http://www.blogger.com/profile/08141329424051857933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_O17tH1hA4kw/Sx4r3JpPkkI/AAAAAAAAAho/ieW8DREVwYw/s72-c/Imagem088.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3238689029190355690.post-1714147216672023276</id><published>2009-10-06T14:28:00.000-07:00</published><updated>2010-02-25T13:17:01.552-08:00</updated><title type='text'>Rails: Rotas</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://blog.bezelga.profissional.ws/up/b/be/blog.bezelga.profissional.ws/img/rails_summerhil_yonge_tall_01_blog.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="420" src="http://blog.bezelga.profissional.ws/up/b/be/blog.bezelga.profissional.ws/img/rails_summerhil_yonge_tall_01_blog.jpg" width="275" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Fala rapazeada... Hoje algumas notas sobre rotas:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1º- Diferença entre member e collection:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;map.resources :notas, :member =&amp;gt; { :baixar =&amp;gt; :get }&lt;br /&gt;map.resources :notas, :collection =&amp;gt; { :baixar =&amp;gt; :get }&lt;/blockquote&gt;A rota para collection será: "/notas/baixar". E para member será necessário informar um id, assim: "/notas/2/baixar"&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2º - Herança:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Da mesma forma que é preciso informar na model quando uma tabela depende da outra, assim:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;class Pessoa &amp;lt; ActiveRecord::Base;end class Telefone &amp;lt; ActiveRecord::Base; belongs_to Pessoa; end &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;É necessário fazer suas relações nas rotas, assim:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;map.resources :pessoas do |pessoa|&lt;br /&gt;pessoa.resources :telefones&lt;br /&gt;end&lt;/blockquote&gt;&lt;br /&gt;Ficando assim:&lt;br /&gt;&lt;blockquote&gt;---------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;|    Método     |   Rota          |           Chamada           |&lt;br /&gt;---------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;|                      new_pessoa GET   | /pessoas/new                                    | {:action=&amp;gt;"new",    :controller=&amp;gt;"pessoas"}   |&lt;br /&gt;|            formatted_new_pessoa GET   | /pessoas/new.:format                            | {:action=&amp;gt;"new",    :controller=&amp;gt;"pessoas"}   |&lt;br /&gt;|                     edit_pessoa GET   | /pessoas/:id/edit                               | {:action=&amp;gt;"edit",   :controller=&amp;gt;"pessoas"}     |&lt;br /&gt;|           formatted_edit_pessoa GET   | /pessoas/:id/edit.:format                       | {:action=&amp;gt;"edit",   :controller=&amp;gt;"pessoas"}     |&lt;br /&gt;|                          pessoa GET   | /pessoas/:id                                    | {:action=&amp;gt;"show",   :controller=&amp;gt;"pessoas"}     |&lt;br /&gt;|                formatted_pessoa GET   | /pessoas/:id.:format                            | {:action=&amp;gt;"show",   :controller=&amp;gt;"pessoas"}     |&lt;br /&gt;|                pessoa_telefones GET   | /pessoas/:pessoa_id/telefones                   | {:action=&amp;gt;"index",  :controller=&amp;gt;"telefones"}   |&lt;br /&gt;|      formatted_pessoa_telefones GET   | /pessoas/:pessoa_id/telefones.:format           | {:action=&amp;gt;"index",  :controller=&amp;gt;"telefones"}   |&lt;br /&gt;|                                 POST  | /pessoas/:pessoa_id/telefones                   | {:action=&amp;gt;"create", :controller=&amp;gt;"telefones"}   |&lt;br /&gt;|                                 POST  | /pessoas/:pessoa_id/telefones.:format           | {:action=&amp;gt;"create", :controller=&amp;gt;"telefones"}   |&lt;br /&gt;|             new_pessoa_telefone GET   | /pessoas/:pessoa_id/telefones/new               | {:action=&amp;gt;"new",    :controller=&amp;gt;"telefones"} |&lt;br /&gt;|   formatted_new_pessoa_telefone GET   | /pessoas/:pessoa_id/telefones/new.:format       | {:action=&amp;gt;"new",    :controller=&amp;gt;"telefones"} |&lt;br /&gt;|            edit_pessoa_telefone GET   | /pessoas/:pessoa_id/telefones/:id/edit          | {:action=&amp;gt;"edit",   :controller=&amp;gt;"telefones"}   |&lt;br /&gt;|  formatted_edit_pessoa_telefone GET   | /pessoas/:pessoa_id/telefones/:id/edit.:format  | {:action=&amp;gt;"edit",   :controller=&amp;gt;"telefones"}   |&lt;br /&gt;|                 pessoa_telefone GET   | /pessoas/:pessoa_id/telefones/:id               | {:action=&amp;gt;"show",   :controller=&amp;gt;"telefones"}   |&lt;br /&gt;|       formatted_pessoa_telefone GET   | /pessoas/:pessoa_id/telefones/:id.:format       | {:action=&amp;gt;"show",   :controller=&amp;gt;"telefones"}   |&lt;br /&gt;|                                 PUT   | /pessoas/:pessoa_id/telefones/:id               | {:action=&amp;gt;"update", :controller=&amp;gt;"telefones"}   |&lt;br /&gt;|                                 PUT   | /pessoas/:pessoa_id/telefones/:id.:format       | {:action=&amp;gt;"update", :controller=&amp;gt;"telefones"}   |&lt;br /&gt;|                                 DELETE| /pessoas/:pessoa_id/telefones/:id               | {:action=&amp;gt;"destroy",:controller=&amp;gt;"telefones"}   |&lt;br /&gt;|                                 DELETE| /pessoas/:pessoa_id/telefones/:id.:format       | {:action=&amp;gt;"destroy",:controller=&amp;gt;"telefones"}   |&lt;br /&gt;---------------------------------------------------------------------------------------------------------------------------------------------&lt;/blockquote&gt;&lt;br /&gt;&lt;b&gt;3º - Namespace&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Nao sei pra que serve... mas tivemos a necessidade de usa-lo pois, numa mesma estrutura de aplicativo existiam dois projetos. Ou seja, para identificar quais controllers sao usadas em um projeto e quais sao usadas em outro, voce pode suar o namespace, assim:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;map.namespace(:projeto_um) do |um|&lt;br /&gt;# rotas do projeto um&lt;br /&gt;um.resources :pessoas&lt;br /&gt;end&lt;/blockquote&gt;&lt;br /&gt;Dessa forma todos as controllers que são do projeto um, ficam numa pasta dentro de controllers chamada projeto_um e assim para o projeto_dois, ou quantos namespace eu tiver. Isso é válido para toda a estrutura da aplicação ou seja para views será necessário ter uma pasta nomeada com o namespace (projeto_um) com as respectivas views e assim por diante.&lt;br /&gt;&lt;br /&gt;Isso ficará da seguinte forma:&lt;br /&gt;http://localhost/projeto_um/pessoas&lt;br /&gt;&lt;br /&gt;Ou seja, para todas as rotas eu terei o namespace na frente.&lt;br /&gt;&lt;br /&gt;E quando eu tiver uma unica controller válida para os dois projetos, que namespace colocar na rota?&lt;br /&gt;Vamos imaginar que no projeto um eu tenho a controller telefones que pode ser usada no projeto dois também... você pode fazer da seguinte forma:&lt;br /&gt;&lt;blockquote&gt;map.namespace(:projeto_um) do |um|&lt;br /&gt;um.resources :telefones, :namespace =&amp;gt; nil&lt;br /&gt;end&lt;br /&gt;map.namespace(:projeto_dois) do |dois|&lt;br /&gt;um.resources :telefones, :namespace =&amp;gt; nil&lt;br /&gt;end&lt;/blockquote&gt;&lt;br /&gt;Assim a controller telefone será acessada de qualquer namespace: projeto_um ou projeto_dois.&lt;br /&gt;&lt;br /&gt;Lembrando que a controller e as views de telefone deverão ser posta fora das pastas que englobam os arquivos especificos de cada projeto. Ou seja, a controller telefone ficará dentro do diretorio controller.&lt;br /&gt;&lt;br /&gt;É isso... não tem muito segredo, caso pareça o contrário &lt;a href="http://guias.rubyonrails.pro.br/routing.html"&gt;aqui&lt;/a&gt; tudo o que você pode aprender sobre rotas, dentro das magias e convenções de RUBY ON RAILS.&lt;br /&gt;&lt;br /&gt;Fica assim entao, rapazeada. Duvidas, correcoes, reclamações e/ou sugestoes fiquem a vontade para informar.&lt;br /&gt;&lt;br /&gt;Abraço.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3238689029190355690-1714147216672023276?l=gimenes-alves.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gimenes-alves.blogspot.com/feeds/1714147216672023276/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://gimenes-alves.blogspot.com/2009/10/rails-rotas.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default/1714147216672023276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default/1714147216672023276'/><link rel='alternate' type='text/html' href='http://gimenes-alves.blogspot.com/2009/10/rails-rotas.html' title='Rails: Rotas'/><author><name>Altherlex Alves</name><uri>http://www.blogger.com/profile/08141329424051857933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3238689029190355690.post-765434732266664103</id><published>2009-04-15T08:56:00.000-07:00</published><updated>2009-10-06T13:01:58.914-07:00</updated><title type='text'>Aliando: Rails + Ajax</title><content type='html'>&lt;img style="margin: 0px auto 10px; display: block; text-align: center; width: 242px; height: 360px;" src="http://www.bestlinux.com.br/images/stories/Imagens_Noticias/ajax-ar.jpg" alt="" border="0" /&gt; &lt;br /&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="BrOffice.org 3.0  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt; 	&lt;/style&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;Ok, vamos a mais um post... Hoje sobre como aliar todo o poder da aplicação web, neste caso rails, com o poder da metodologia Ajax, neste caso o framework prototype. &lt;br /&gt;&lt;br /&gt;O que vamos fazer é criar um método e chamar e receber os dados via javascript. Ou em outras palavras, javascript com acesso ao banco de dados.&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Existe hoje muitos frameworks  javascrit que facilitam o trabalho na hora de fazer requisições ajax, por exemplo: jquery, motools e no nosso caso &lt;a href="http://pt.wikipedia.org/wiki/Prototype_%28Javascript%29"&gt;prototype.&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Como o rails é mantido sobre a metodologia &lt;a href="http://pt.wikipedia.org/wiki/MVC"&gt;MVC&lt;/a&gt;, ou MVC2, ou arquitetura três camadas, iremos criar uma action na controller que será visualizada pela requisição javascript.&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Vamos lá então... É bem simples: &lt;br /&gt;&lt;br /&gt;Esta é a controller: &lt;br /&gt;&lt;/p&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="BrOffice.org 3.0  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt; 	&lt;/style&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;pre background-color="#EBE8D6" style="overflow-x: auto; overflow-y: hidden;" size="11px" face="courier new"&gt;	&lt;style type="text/css"&gt;&lt;br /&gt;	.S0 {&lt;br /&gt;		color: #808080;&lt;br /&gt;	}&lt;br /&gt;	.S5 {&lt;br /&gt;		font-weight: bold;&lt;br /&gt;		color: #00007F;&lt;br /&gt;	}&lt;br /&gt;	.S6 {&lt;br /&gt;		font-family: 'Courier New';&lt;br /&gt;		color: #7F007F;&lt;br /&gt;		font-size: 10pt;&lt;br /&gt;	}&lt;br /&gt;	.S8 {&lt;br /&gt;		font-weight: bold;&lt;br /&gt;		color: #0000FF;&lt;br /&gt;	}&lt;br /&gt;	.S9 {&lt;br /&gt;		font-weight: bold;&lt;br /&gt;		color: #007F7F;&lt;br /&gt;	}&lt;br /&gt;	.S10 {&lt;br /&gt;		font-weight: bold;&lt;br /&gt;		color: #000000;&lt;br /&gt;	}&lt;br /&gt;	.S14 {&lt;br /&gt;		color: #C0A030;&lt;br /&gt;	}&lt;br /&gt;	span {&lt;br /&gt;		font-family: 'Verdana';&lt;br /&gt;		color: #000000;&lt;br /&gt;		font-size: 10pt;&lt;br /&gt;	}&lt;br /&gt;	&lt;/style&gt;&lt;br /&gt;	&lt;span&gt;&lt;span class="S5"&gt;class&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S8"&gt;TestController&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S10"&gt;&amp;lt;&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;ApplicationController&lt;br /&gt;&lt;span class="S0"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="S5"&gt;def&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S9"&gt;me_chama&lt;/span&gt;&lt;br /&gt;&lt;span class="S0"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;render&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S14"&gt;:text&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S10"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S6"&gt;"Hello, world"&lt;/span&gt;&lt;br /&gt;&lt;span class="S0"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="S5"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span class="S5"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;Ok, agora vamos invocar este método através do javascript...&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;style type="text/css"&gt;.S0 {	color: #808080;}.S1 {	font-weight: bold;	color: #00007F;}.S4 {	font-weight: bold;	color: #000000;}.S5 {	color: #7F007F;}.S11 {	color: #FF0000;}span {	font-family: 'Verdana';	color: #000000;	font-size: 10pt;}&lt;/style&gt;&lt;br /&gt;&lt;pre bgcolor="#FFFFFF" style="overflow-x: auto; overflow-y: hidden;" size="11px" face="courier new"&gt;&lt;span&gt;&lt;span class="S4"&gt;&amp;lt;&lt;/span&gt;script&lt;span class="S4"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="S0"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="S1"&gt;function&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;chama&lt;span class="S4"&gt;()&lt;/span&gt;&lt;span class="S11"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span class="S0"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;url&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S4"&gt;=&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S5"&gt;'/test/me_chama'&lt;/span&gt;&lt;span class="S4"&gt;;&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="S0"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="S1"&gt;new&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;Ajax&lt;span class="S4"&gt;.&lt;/span&gt;Request&lt;span class="S4"&gt;(&lt;/span&gt;url&lt;span class="S4"&gt;,&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S11"&gt;{onComplete&lt;/span&gt;&lt;span class="S4"&gt;:&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S1"&gt;function&lt;/span&gt;&lt;span class="S4"&gt;(&lt;/span&gt;transport&lt;span class="S4"&gt;)&lt;/span&gt;&lt;span class="S11"&gt;{&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;alert&lt;span class="S4"&gt;(&lt;/span&gt;transport&lt;span class="S4"&gt;.&lt;/span&gt;responseText&lt;span class="S4"&gt;);&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S11"&gt;}&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S11"&gt;}&lt;/span&gt;&lt;span class="S4"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span class="S0"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="S11"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="S4"&gt;&amp;lt;/&lt;/span&gt;script&lt;span class="S4"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="S0"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;E é isso... o método Request da classe Ajax do prototype irá chamar a url '/test/me_chama', que é a controller + action e que retornará a string 'Hello, world'.&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Ok, agora imagina toda vez que eu chamar a action “chama” eu quero passar um parametro e desse paramtero fazer uma pesquisa no banco...&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Vamos lá... a função javascript vai agora enviar um parametro para ser recebido lá na camda de controller e ser feito o select ao banco. Este parametro será enviado via post, extamente desta forma:&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;pre style="overflow-x: auto; overflow-y: hidden;" size="11px" face="courier new"&gt;&lt;p&gt;&lt;/p&gt;&amp;lt;script&amp;gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;function chama(){&lt;/p&gt;url = '/test/me_chama/?id_pessoa=1'; &lt;p class="western" style="margin-bottom: 0cm;"&gt;	new Ajax.Request(url, {onComplete: function(transport){ alert(transport.responseText); } });&lt;/p&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;O parametro enviado chama 'id_pessoa' e será pego na action assim: params[:id_pessoa]&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;A action será mais ou menos assim... Antes a model( &lt;a href="http://pt.wikipedia.org/wiki/Orm"&gt; ORM &lt;/a&gt; ) Pessoa (Person)  para retornar os dados do banco) :&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;pre style="overflow-x: auto; overflow-y: hidden;" size="11px" face="courier new"&gt;&lt;br /&gt;&lt;pre bgcolor="#FFFFFF"&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.S0 {&lt;br /&gt;	color: #808080;&lt;br /&gt;}&lt;br /&gt;.S2 {&lt;br /&gt;	font-family: 'Comic Sans MS';&lt;br /&gt;	color: #007F00;&lt;br /&gt;	font-size: 9pt;&lt;br /&gt;}&lt;br /&gt;.S5 {&lt;br /&gt;	font-weight: bold;&lt;br /&gt;	color: #00007F;&lt;br /&gt;}&lt;br /&gt;.S7 {&lt;br /&gt;	font-family: 'Courier New';&lt;br /&gt;	color: #7F007F;&lt;br /&gt;	font-size: 10pt;&lt;br /&gt;}&lt;br /&gt;.S8 {&lt;br /&gt;	font-weight: bold;&lt;br /&gt;	color: #0000FF;&lt;br /&gt;}&lt;br /&gt;.S9 {&lt;br /&gt;	font-weight: bold;&lt;br /&gt;	color: #007F7F;&lt;br /&gt;}&lt;br /&gt;.S10 {&lt;br /&gt;	font-weight: bold;&lt;br /&gt;	color: #000000;&lt;br /&gt;}&lt;br /&gt;.S14 {&lt;br /&gt;	color: #C0A030;&lt;br /&gt;}&lt;br /&gt;span {&lt;br /&gt;	font-family: 'Verdana';&lt;br /&gt;	color: #000000;&lt;br /&gt;	font-size: 10pt;&lt;br /&gt;}&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;span&gt;&lt;span class="S5"&gt;class&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S8"&gt;Person&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S10"&gt;&amp;lt;&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;ActiveRecord&lt;span class="S10"&gt;::&lt;/span&gt;Base&lt;span class="S10"&gt;;&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S5"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="S5"&gt;class&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S8"&gt;TestController&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S10"&gt;&amp;lt;&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;ApplicationController&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="S0"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="S5"&gt;def&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S9"&gt;me_chama&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="S0"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;nome_pessoa&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S10"&gt;=&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;Person&lt;span class="S10"&gt;.&lt;/span&gt;find&lt;span class="S10"&gt;(&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;params&lt;span class="S10"&gt;[&lt;/span&gt;&lt;span class="S14"&gt;:id_pessoa&lt;/span&gt;&lt;span class="S10"&gt;]&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S10"&gt;).&lt;/span&gt;nme_pessoa&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S5"&gt;rescue&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S7"&gt;'Nenhuma pessoa encontrada para esse código'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="S0"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;render&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S14"&gt;:text&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S10"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;nome_pessoa&lt;span class="S10"&gt;.&lt;/span&gt;to_s&lt;span class="S0"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="S0"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="S0"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="S2"&gt;#-- Ou passando um objeto jason:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="S0"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="S2"&gt;#pessoa = Person.find( params[:id_pessoa] )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="S0"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="S2"&gt;# render :json =&amp;gt; nome_pessoa.to_json&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="S0"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="S5"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="S5"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;E é isso...&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;a href="http://www.rubyonrailsexamples.com/rails-tips/rails-render/"&gt;Aqui&lt;/a&gt; alguns tipos de parametros do método render do rails, para quem quiser saber mais.&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Qualquer dúvidas, reclamações, sugestões e/ou erros de português é só entrar em contato...Abraço e até mais!!!&lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3238689029190355690-765434732266664103?l=gimenes-alves.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gimenes-alves.blogspot.com/feeds/765434732266664103/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://gimenes-alves.blogspot.com/2009/04/aliando-rails-ajax.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default/765434732266664103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default/765434732266664103'/><link rel='alternate' type='text/html' href='http://gimenes-alves.blogspot.com/2009/04/aliando-rails-ajax.html' title='Aliando: Rails + Ajax'/><author><name>Altherlex Alves</name><uri>http://www.blogger.com/profile/08141329424051857933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3238689029190355690.post-8410692011891241987</id><published>2009-01-29T14:58:00.000-08:00</published><updated>2009-02-02T15:49:13.937-08:00</updated><title type='text'>Números Primos + MMC + MDC + Ruby</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; width: 300px; height: 329px;" src="http://www.gemaffair.com/images/RUBY_FANCY_SQUARE.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Segue abaixo um exemplo de implementação de gerador de &lt;a href="http://www.somatematica.com.br/fundam/primos.php"&gt;Números Primos&lt;/a&gt; + MMC (&lt;a href="http://www.somatematica.com.br/fundam/mmc.php"&gt;Mínimo Múltiplo Comum&lt;/a&gt;) + MDC (&lt;a href="http://www.somatematica.com.br/fundam/mdc.php"&gt;Máximo Divisor Comum&lt;/a&gt;) em ruby. É um resultado de uma prova de lógica que um &lt;a href="http://flasoft.blogspot.com/2008/05/numeros-primos-mmc-mdc.html"&gt;amigo meu &lt;/a&gt;teve que fazer em java.&lt;br /&gt;Colaborações prestimosas de Cirillo Ferreira.&lt;br /&gt;&lt;br /&gt;&lt;pre face="courier new" size="11px" style="overflow-x: auto; overflow-y: hidden;"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;require 'Mathn'&lt;br /&gt;class Numeric&lt;br /&gt;def multiplos(ate = 500)&lt;br /&gt; (1..ate).to_a.map{|v| self*v}&lt;br /&gt;end&lt;br /&gt;def divisores(ate = 500)&lt;br /&gt; (1..ate).to_a.map{|v| v if (self%v == 0)}.compact&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;module Math&lt;br /&gt;def self.mmc(*valor)&lt;br /&gt; compara( valor.inject([]){|h, i| h &lt;&lt; i.multiplos} ).first&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;def self.mdc(*valor)&lt;br /&gt; compara( valor.inject([]){|h, i| h &lt;&lt; i.divisores } ).last&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;def self.nmr_primos&lt;br /&gt; numeros_primos = []&lt;br /&gt; (2..501).each{|i| numeros_primos &lt;&lt; (2..i).detect{|j| j%j ==0 &amp;amp;&amp;amp; i%j==0} }&lt;br /&gt; numeros_primos.uniq!&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;private&lt;br /&gt;def self.compara(arr)&lt;br /&gt; arr.inject(arr[0]){|ac, i| ac &amp;amp; i}&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;Math::mmc(3,5,8)&lt;br /&gt;=&gt; 120&lt;br /&gt;&lt;br /&gt;Math::mmc(3,5,8,9)&lt;br /&gt;=&gt; 360&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 0);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Os métodos mmc e mdc são métodos que aceitam parâmetros indeterminado graças a uma coisa, da linguagem ruby, chamada operador splat, que é aquele asterisco na assinatura do método. Tem a finalidade de compactar os parâmetros num única array.&lt;br /&gt;&lt;br /&gt;Este programa é um pequeno incremento da classe Numeric. Onde é adicionado dois métodos necessários para a resolução dos métodos mmc e mdc que são: multiplos e divisores.&lt;br /&gt;Após é adicionado no módulo Math (por isso a chamada inicial require 'Mathn'), como métodos de classe, o mmc e o mdc.&lt;br /&gt;O método comparar é um método usado localmente (private) para retornar de  um array de arrays os valores comuns.&lt;br /&gt;obs.: O método gerar_nmr_primos não é usado. Foi criado apenas para ilustração e fertilização das mentes.&lt;br /&gt;&lt;br /&gt;Mais informações sobre a linguagem acesse: &lt;a href="http://ruby-br.org/?p=38"&gt;&lt;em&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;a&gt;O que é Ruby&lt;/a&gt;&lt;/em&gt;&lt;a href="http://ruby-br.org/?p=38"&gt;... &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;-Depois desse pragmatismo todo dá até para tomar um café com mais calma...&lt;br /&gt;&lt;br /&gt;Abraço,&lt;br /&gt;e até a próxima.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3238689029190355690-8410692011891241987?l=gimenes-alves.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gimenes-alves.blogspot.com/feeds/8410692011891241987/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://gimenes-alves.blogspot.com/2009/01/numeros-primos-mmc-mdc-ruby.html#comment-form' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default/8410692011891241987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default/8410692011891241987'/><link rel='alternate' type='text/html' href='http://gimenes-alves.blogspot.com/2009/01/numeros-primos-mmc-mdc-ruby.html' title='Números Primos + MMC + MDC + Ruby'/><author><name>Altherlex Alves</name><uri>http://www.blogger.com/profile/08141329424051857933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3238689029190355690.post-7925804088953886865</id><published>2008-09-30T19:39:00.000-07:00</published><updated>2008-10-16T17:54:35.007-07:00</updated><title type='text'>TV Digital - Um pouco além do esperado</title><content type='html'>&lt;p style="margin-left: 0.59in; margin-bottom: 0in; text-align: left;"&gt;&lt;span style=";font-family:Arial,sans-serif;font-size:85%;"  &gt;A seguir lê-se um interessante artigo de Thais Waisman&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/span&gt; &lt;span style=";font-family:Arial,sans-serif;font-size:85%;"  &gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);font-family:arial;font-size:85%;"  &gt;&lt;u&gt;&lt;a href="mailto:Thais@futuro.usp.br"&gt;Thais@futuro.usp.br&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;) sobre a TV Digital e a sua interação na educação.&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 0.59in; margin-bottom: 0in;" align="center"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;TV DIGITAL INTERATIVA NA EDUCAÇÃO: AFINAL, INTERATIVIDADE PARA QUÊ?&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;" align="center"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: center;"&gt; &lt;/div&gt;&lt;div style="text-align: center;"&gt; &lt;/div&gt;&lt;div style="text-align: center;"&gt; &lt;/div&gt; &lt;p style="margin-left: 0.59in; margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;i&gt;Este artigo trata de pensar os usos socialmente relevantes da TV Digital Interativa no Brasil. O fato da definição do padrão de transmissão digital terrestre estar na agenda do Governo Federal para uma tomada de decisão breve,  faz com que tenhamos que considerar os usos importantes deste veículo de comunicação na educação, ocupando espaços criados pelo Telecurso 2000, agregando novas oportunidades  e discutindo a importância da interatividade no contexto da aprendizagem e das mídias digitais. A TV Digital Interativa é um meio de disseminação de informação dirigida à educação e que  apresenta elementos da TV, da internet, do rádio e do vídeo, modificando os hábitos de consumo e de atitude do usuário, proporcionando novas formas de relacionamento com a TV, as mídias digitais e a nova condição da interatividade.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;&lt;b&gt;Introdução&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Muito se tem falado ultimamente deste tema TV Digital  Interativa, porém poucos textos tratam do assunto interatividade e a relação do consumidor e usuário final com esta nova mídia que se apresenta. Parece que o país está aguardando a fase da definição do padrão, para então se posicionar e começar a entender o que poderá ser feito localmente, mas como esta definição bate à porta, alguns estudos interessantes já mostram os direcionamentos possíveis.&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Dados mundiais mostram que há mais de 24 milhões de casas conectadas na Europa e Ásia, possuindo um &lt;i&gt;set top box&lt;/i&gt; (caixa preta ou conversor), sem contar os usuários americanos. As vias de acesso variam de satélite a cabo, podendo passar pela fibra ótica e aéreo-terrestre. Com esta nova parafernália digital, o telespectador poderá manter um certo nível de interatividade com o aparelho e até utilizá-lo como gerenciador de várias atividades dentro da casa, como controle de estoque, controle de alarme, secretária eletrônica e outros.&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;O público leigo deve estar se fazendo a pergunta clássica: para que eu preciso de mais uma parafernália na minha casa, se nem uso o que tenho? E a resposta vem imediatamente quando se observam índices incríveis de participação do público em programas como Você Decide, Casa dos Artistas, Show do Milhão e até do antigo vídeo game interativo pela TV – HUGO. Isto nos leva a uma importante necessidade intrínseca e incorporada do ser humano: a de participar, o desejo das pessoas de se pronunciarem e de saírem da posição de passividade, para o outro extremo que seria a TV e os canais de comunicação como vias de mão dupla no processo de comunicação!&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Aqui cabe um pequeno parêntesis para explicarmos o que poderá compor a TV Interativa, ou seja, os canais virtuais e o &lt;i&gt;enhanced &lt;/i&gt;TV. Os canais virtuais estão mais diretamente relacionados a serviços oferecidos ao usuário, como &lt;i&gt;home banking&lt;/i&gt;, canal do tempo, guia eletrônico de programação, compras, votação, perguntas e respostas. O &lt;i&gt;enhanced&lt;/i&gt; TV estaria mais relacionado com a programação existente (que pode ser perfeitamente aproveitada), agregando-se elementos informacionais e que permitem também uma interatividade, ou seja, uma intervenção do telespectador no conteúdo exibido. Por exemplo, se você está assistindo um documentário e quer saber mais informações sobre aquele tema, ou outros programas relacionados, ou sites na internet, ou livros, ou responder perguntas ou mandar uma pergunta para o &lt;i&gt;expert &lt;/i&gt;da emissora, ou uma mensagem para algum outro usuário que está assistindo ao programas, isto tudo será possível com o simples manejo de um controle remoto semelhante ao já utilizado pelas pessoas, mas com quatro botões coloridos que indicados na tela, designam a que se referem quando o usuário aperta aquele simples comando.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-left: 0.59in; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-left: 0.59in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;&lt;b&gt;I - Inclusão cidadã&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-left: 0.59in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Imaginem a revolução e o avanço para simples cidadãos que, por todos os motivos já exaustivamente mapeados pelos inúmeros trabalhos sobre Inclusão e Exclusão Digital pode representar. Ora, em torno de 15% da população tem acesso ao computador, mas em torno de 38 milhões de lares tem pelo menos uma TV . A capilaridade da mídia TV é enorme e a sensação de inclusão e a incorporação que o cidadão poderá sentir ao usar a TV e ver que ela lhe dá poderes de cidadania, de decisão, de escolha, de participação, de acesso a informações que antes estavam restritos a internet ou outros meios que não fazem parte da cultura e do capital social desta grande massa de indivíduos. &lt;/span&gt; &lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Num exercício simples, imaginem o uso que se pode dar no setor educacional, onde programas como Telecurso 2000, programas profissionalizantes como do SEBRAE e SENAC podem ter um peso enorme na formação e educação desta massa que não pode freqüentar escolas formais e não tem acesso ao computador. Há uma experiência americana, WISH TV que conecta pessoas simples da periferia de estados como Califórnia e Louisianna, via cabo, com a escola, através da TV Interativa. Neste projeto, pais,  alunos e professores comunicam-se pela TV, pais fazem algumas atividades escolares com os filhos via TV e professores e pais trocam informações a respeito da vida escolar do filho. O resultado é diminuição da exclusão digital, aceitação simples desta mídia pelos pais e maior rendimento dos filhos na escola pelo simples fato dos pais estarem presentes.&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Devemos deixar claro que a TV Interativa não é um computador e uma mídia não irá substituir a outra. Esta é uma grande tendência do discurso de experts quando uma nova mídia aparece: morte para uma e o céu para a outra. Temos que começar a pensar no grande desafio que é a convergência inteligente das mídias atualmente disponíveis e de que forma podemos tirar benefícios sociais, econômicos e culturais para o nosso país, tão carente de soluções de grande capilaridade.  &lt;/span&gt; &lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Na Europa, continente mais desenvolvido no uso da TV Interativa, a  necessidade de sofisticados sistemas de interatividade dos set top boxes começa a surgir agora, muito depois do estabelecimento e incorporação pelos usuários. Disto tiramos uma importante lição: as soluções mais eficazes são as mais simples. O capital social, o capital cultural e a cultura tecnológica de uma população devem ser respeitados sempre, pois o período que nos espera em breve é de aculturamento e transição, de aprendizagem coletiva de uso e aplicação desta nova TV.&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;TV Interativa não é somente comércio como querem alguns, não é só entretenimento como querem outros e nem só mais uma tecnologia que vem para que o povo invista mais uma fatia do seu salário. É uma nova filosofia do processo de comunicação, do processo de aprendizagem, de encontros e trocas, de conhecermos nosso pares que estão assistindo ao mesmo programa que nós e que podem ter as mesmas idéias e necessidades. É uma forma de resgate do sentido do coletivo e das comunidades, das redes de informação e aprendizagem beneficiadas e facilitadas pela tecnologia. &lt;/span&gt; &lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;h2 class="western"&gt;II - Mudança de hábitos&lt;/h2&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;A nova tecnologia da TV Digital Interativa trará severas mudanças ao meio televisivo, aos hábitos de consumo, aos ambientes de aprendizagem, ao modo como os indivíduos se relacionarão com essa nova mídia. Como principais exemplos, podemos citar:&lt;/span&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;nova  relação sensorial-cognitiva do aspecto de 16 X 9&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;vídeo  digital de alta resolução&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;vários  canais de áudio digital&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;maior  imunidade aos fantasmas e ruídos com perceptiva melhoria da  qualidade de imagem&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;viabilidade  de trafegar simultaneamente canais de dados (datacasting)&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;possibilidade  de múltiplos canais em resolução standard  (SDTV) numa mesma faixa de 6 MHz.&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Video-on-demand,  personal video recorder, pay per view&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Video  games, apostasy jogos&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;canais  de TV personalizados&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;email,  SMS (short message servce), videoconferência&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;acesso  à internet, chat com o key speaker do programa&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;internet  banking&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;propagandas  interativas onde com um simples click pode-se comprar o produto como  resposta direta aos anúncios&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;  &lt;span style="font-family:Arial,sans-serif;"&gt;t-commerce&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;novos  ambientes de aprendizagem (corporativo e institucional, mesclando  ambiente de trabalho com ambiente de aprendizagem, tanto do ponto de  vista presencial e físico, como digital e interativo no mundo  virtual)&lt;/span&gt;&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Assim como as TVs preto-e-branca foram substituídas gradativamente por TVs coloridas, os equipamentos atuais de captação, pós-produção e exibição serão substituídos ao longo do tempo, quer seja por &lt;i&gt;set top boxes&lt;/i&gt; digitais, quer seja pelas novas TVs digitais. As TVs irão evoluir para atender e tirar proveito de todas as características potenciais da convergência de mídias, explorando ao máximo a capacidade de transmissão oferecida pelas técnicas digitais em desenvolvimento. &lt;/span&gt; &lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Novas redes surgirão, novos provedores de conteúdos e toda uma nova parafernália tecnológica com profissionais especializados irá movimentar um mercado enorme, onde o consumidor poderá usufruir, se quiser, do controle sobre a programação, sobre o que quer escutar e ver. Pela possibilidade de uma via de mão dupla instalada, a bidirecionalidade, onde a TV não será apenas a comunicação de um para muitos, mas incluirá o modelo de comunicação já presente na internet, de muitos para muitos, a DTV parece ser um &lt;i&gt;killer application&lt;/i&gt; por si só na interatividad&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2 class="western"&gt;III - Os empreendimentos educacionais&lt;/h2&gt; &lt;p style="margin-left: 0.59in; margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Empreendimentos voltados para a TV Digital Interativa são ainda um grande desafio para pesquisadores, técnicos e empresários. Os recursos envolvidos numa iniciativa de caráter televisivo via iTV são significativamente maiores que aqueles despendidos quando se produz conteúdo para internet. Mesmo assim, a justificativa dessa proposta faz-se clara quando percebemos que o mundo está caminhando rapidamente para este tipo de iniciativa, especialmente no setor educacional, apesar das tímidas experiências que se têm notícia. &lt;/span&gt; &lt;/p&gt; &lt;p style="margin-left: 0.59in; margin-top: 0.19in; margin-bottom: 0.19in;"&gt; &lt;span style="font-family:Arial Unicode MS,sans-serif;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Segundo a Unesco, a taxa de repetência de crianças brasileiras no nível básico está em 24%.  O Brasil é o recordista do continente latino-americano. Segundo estatísticas mais recentes divulgadas pelo Ministério da Educação, a taxa de repetência de 2000 - que usa dados de 1999 - é de 21,6% no nível fundamental e de 18,6% no médio. Na avaliação da Unesco, há problemas na qualidade do ensino.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-left: 0.59in; margin-top: 0.19in; margin-bottom: 0.19in;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-left: 0.59in; margin-top: 0.19in; margin-bottom: 0.19in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;&lt;b&gt;WISH TV&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;" align="justify"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Um excelente benchmarking pode ser feito com a World Gate e o Wish TV (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;a href="http://www.wgate.com/"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;www.wgate.com&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;), ou seja, um projeto em andamento que envolve escolas, residências, pais, professores e alunos conectados via cabo, utilizando os recursos educativos da TV Digital e da internet banda larga. A pouca participação dos pais no processo educativo dos filhos, no que diz respeito à vida escolar ou tempo passado dentro das escolas, é um fator crítico que assola várias comunidades no mundo todo. Para resolver esta questão crucial e diminuir o gap entre pais e filhos, escolas e pais e mesmo o fosso digital,  o programa The WISH TV (WorldGate Internet School to Home) foi desenvolvido nos EUA e utiliza-se da tecnologia disponível de TV digital via cabo e, conseqüente acesso à internet. WISH TV provê acesso à Internet para estudantes e professores na escola e nas residências, através do sistema a cabo e set top boxes instalados. Isto resolveu um outro problema que era o custo das chamadas telefônicas e dos provedores de acesso, além da velocidade de navegação e potencialidade para uploads e downloads mais velozes.  Este tipo de iniciativa  provou ser uma solução prática, uma vez que beneficia a todos que estejam conectados por cabo e possuam um key board ou teclado&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;&lt;br /&gt;&lt;/p&gt; &lt;h3 class="western"&gt;  IV - Usos socialmente relevantes&lt;/h3&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;" align="justify"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;O Relatório Integrador dos Aspectos Técnicos e Mercadológicos da Televisão Digital versão 1.0 de 28/03/2001, mostra uma grande expectativa que a ANATEL deposita nos usos sociais da TV Digital, disseminando e tornando acessíveis serviços vitais para a população em geral, dentre eles a educação à distância. Neste mesmo relatório da Anatel, no capítulo sobre “Expectativa dos usuários brasileiros para a televisão do futuro”, fica clara a disposição favorável do nosso público em relação aos recursos e facilidades que a TV Digital poderá trazer para seu cotidiano. Cabe lembrar igualmente a menção ao fato de que a TV Digital é um aparelho em tese mais simples de se operar do que o microcomputador e mais abrangente, pois mais pessoas o utilizam.  &lt;/span&gt; &lt;/p&gt; &lt;p class="western" style="margin-left: 0.49in; margin-bottom: 0in;" align="justify"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;" align="justify"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Apesar da “popularidade” da internet, o Brasil ainda não é um país on line e demorará um pouco para sê-lo. Em relatório da OECD de 2001, aponta-se 2,9% da população brasileira com acesso à internet; em contrapartida, mais de 35 milhões de residências no Brasil (mais de 90%) têm aparelhos de TV, provando a capilaridade desta mídia, do seu poder e do potencial desta demanda reprimida por conteúdos de maior informação ou como veículo de educação neste país.&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;" align="justify"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;O estudo feito pela autora para o CPqD (Centro de pesquisa e Desenvolvimento) revela que as aplicações socialmente relevantes par ao brasileiro e que poderiam te rum grande impacto no uso e aceitação da Tv interativa são: tele-educação, telemedicina, inclusão digital e governo eletrônico.&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;   &lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Tendo em vista o movimento concreto de países que já operam com a TV Digital, juntamente com a expectativa positiva do público brasileiro, os projetos de integração social e educacional, mais propriamente de inclusão digital, através da especificação e desenvolvimento dos aplicativos interativos para produções voltadas especificamente para a aprendizagem são o foco de estudos e pesquisa do LABITV – Laboratório de TV Interativa e Multimeios da Escola do Futuro da USP. &lt;/span&gt; &lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Atualmente, as interfaces disponíveis privilegiam o comércio, os jogos, o home-banking, a publicidade, o e-mail, enfim, uma série de propriedades que servirão para alavancar o negócio iTVl; além de comporem a seara de ferramentas que possam tornar mais atrativa a TV para uma geração que foge dos padrões normais da TV estática, ou seja, o Young People  Generation.&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;h2 class="western"&gt;V - LABITV&lt;/h2&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-left: 0.59in; margin-bottom: 0in;" align="left"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;"&gt;O LABITV é um laboratório de pesquisa que entende que o seu papel seja o de promover, paralelamente aos esforços da iniciativa privada, as investigações, análises, projetos, desenvolvimento de meios e ferramentas, de tecnologias e de expertise que possam incluir a iTV como mais um instrumento nesse contínuo esforço que é o de disseminar conhecimentos em nosso país&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-top: 0.03in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Seus três focos principais serão: &lt;/span&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p class="western" style="margin-top: 0.03in; margin-bottom: 0in;" align="justify"&gt;  &lt;span style="font-family:Arial,sans-serif;"&gt;&lt;b&gt;iTVeducação&lt;/b&gt;,  dedicado às produções televisivas educacionais  em Enhanced TV;&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-top: 0.03in; margin-bottom: 0in;" align="justify"&gt;  &lt;span style="font-family:Arial,sans-serif;"&gt;&lt;b&gt;Multimeios Aprendizagem&lt;/b&gt;,  dedicado aos projetos localizados, que farão uso conjunto de  TV Digital, Internet, Satélite/PC, e que atenderão às  Escolas e Empresas; &lt;/span&gt;  &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-top: 0.03in; margin-bottom: 0in;" align="justify"&gt;  &lt;span style="font-family:Arial,sans-serif;"&gt;&lt;b&gt;Escola Kids&lt;/b&gt;, dedicado à  produção de conteúdos lúdico-interativos  educacionais veiculados por TV Digital.&lt;/span&gt;&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;" align="justify"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Nossa proposta, portanto, é a de estabelecer o ciclo completo da TV Digital Interativa neste recorte específico constituído por escolas e residências:&lt;/span&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;  &lt;span style="font-family:Arial,sans-serif;"&gt;desenvolvimento de aplicativos  voltados para a aprendizagem &lt;/span&gt;  &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;  &lt;span style="font-family:Arial,sans-serif;"&gt;produção de programação  educativa – enhanced TV e canal virtual  &lt;/span&gt;  &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;  &lt;span style="font-family:Arial,sans-serif;"&gt;instalação de um  conjunto limitado de set-top box em residências e escolas   &lt;/span&gt;  &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;  &lt;span style="font-family:Arial,sans-serif;"&gt;transmissão e interação  através de canal de retorno (telefone)&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;  &lt;span style="font-family:Arial,sans-serif;"&gt;estudos avaliativos dos resultados  obtidos ao longo do ciclo de implantação. &lt;/span&gt;  &lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p class="western" style="margin-bottom: 0in;" align="justify"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-left: 0.01in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Objetivos específicos&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;Especificações  de aplicativos educacionais &lt;/span&gt;&lt;/span&gt;  &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;Pesquisas  sobre arquitetura de navegação p/ programa interativo&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Definição  de padrões de interatividade – comunicação  com o usuário&lt;/span&gt;&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Produção  de pesquisa qualitativa e quantitativa em iTV &lt;/span&gt;  &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Estudo  de convergência de mídia: internet e iTV em projetos  integrados de convergência inteligente das mídias  disponíveis&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;  &lt;span style="font-family:Arial,sans-serif;"&gt;Formação de  profissionais para a área&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Produção  de programação Enhanced TV , num primeiro momento e  depois interativo, conforme disponibilidade.&lt;/span&gt;&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;Definição  e desenvolvimento dos formatos e conteúdos para produção  de programas interativos&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Estabelecimento  de processos e procedimentos para produção de  programas interativos&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0.19in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Definição  de processos consistentes de avaliação das atividades  dos usuários, quer seja em termos de preferência de  programação, quer seja como performance no âmbito  da aprendizagem &lt;/span&gt;  &lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;h2 class="western"&gt;Metodologia geral de trabalho&lt;/h2&gt; &lt;p class="western" style="margin-left: 0.49in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Pretende-se entender o ciclo completo de ensino e aprendizagem pela mídia TV, enriquecida com os recursos que a TV Interativa pode proporcionar. A avaliação da performance no processo de aprendizagem de alunos, tanto de Ensino Fundamental, quanto de Ensino Médio, assim como da educação de adultos, que irão fazer uso da programação educativa veiculada pela TV Interativa, é um instrumento vital do ponto de vista do interesse, mudanças de comportamento, aceitação da nova tecnologia, dificuldades, encontradas, falhas na metodologia, motivação de alunos, professores e cidadãos e outros parâmetros que irão nos indicar os melhores e mais adequados usos desta nova mídia, norteando produções futuras para a inclusão social e inclusão digital da população brasileira.&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.49in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Através de capacitação tecnológica para o uso das mídias internet e TV Digital, os professores, pais e alunos trabalharão com novos conceitos da educação para a sociedade da informação e do conhecimento, visando inovar sua prática didática junto aos alunos, maior participação dos pais no processo educacional e mais recursos midiáticos para os alunos, inovando o conceito de estudar.&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.59in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;&lt;b&gt;VI - A TV educacional&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.49in; margin-top: 0.19in; margin-bottom: 0.19in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Esta pesquisa tem um caráter absolutamente inédito no que diz respeito ao olhar educacional da mídia TV, agora assumindo um outro papel dentro do contexto de vida e hábitos da população em geral. Com a facilidade de uso do laboratório de desenvolvimento e produção interativa multimeios: TV Digital e internet implantado na Escola do Futuro da USP, assim com o acordo institucional com o CPQD que permitirá o uso do seu Laboratório de Usabilidade e a realização da pesquisa em campo, pretende-se alcançar os seguintes resultados:&lt;/span&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p class="western" style="margin-top: 0.19in; margin-bottom: 0in;"&gt;  &lt;span style="font-family:Arial,sans-serif;"&gt;Capacidade de especificar e  desenvolver aplicações e interfaces na área de  educação em ambientes de TV Digital Interativa, tanto  para o ensino quanto para o trabalho;&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-top: 0.03in; margin-bottom: 0in;"&gt;  &lt;span style="font-family:Arial,sans-serif;"&gt;Análise doc comportamento do  usuário e as respostas do público alvo do projeto ;&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-top: 0.03in; margin-bottom: 0in;"&gt;  &lt;span style="font-family:Arial,sans-serif;"&gt;Especificação dos  processos para a produção de conteúdo  interativo;&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-top: 0.03in; margin-bottom: 0in;"&gt;  &lt;span style="font-family:Arial,sans-serif;"&gt;Treinamento de professores da rede  pública estadual e municipal para a utilização  produtiva e otimizada da TV Digital Interativa, em caráter  experimental, inicialmente;&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-top: 0.03in; margin-bottom: 0in;"&gt;  &lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Entendimento &lt;/span&gt;da  possibilidade de &lt;span style="color: rgb(0, 0, 0);"&gt;uso &lt;/span&gt;dos recursos&lt;span style="color: rgb(0, 0, 0);"&gt;  de aplicativos &lt;/span&gt;disponibilizados na iTV&lt;span style="color: rgb(0, 0, 0);"&gt;  no âmbito educacional:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Guia  eletrônico de programação educativa&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;VOD  de cursos  e programas já veiculados&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Web  site de apoio&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Solicitação  dos vídeos pelo web site&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Serviços  interativos de apoio ao estudante como: home banking, tempo,  livraria, &lt;/span&gt;  &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;news  , vídeos, outros programas – objetivo é situar o  aluno no mundo real&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Quizzes  , Q/A simplificados, votação&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Suporte  à lição de casa, trabalho por projetos, testes,  revisões&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Suporte  ao aluno e aos pais para o mercado – teste vocacional +  oportunidades de trabalho + conhecimentos que deve adquirir para  determinada posição + cursos para que ele atinja os  objetivos&lt;/span&gt;&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h1 class="western" style="margin-left: 0.49in;" align="left"&gt; &lt;span style="font-size:100%;"&gt;&lt;b&gt;Conclusão&lt;/b&gt;&lt;/span&gt;&lt;/h1&gt; &lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.49in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;O ciberespaço e a Tv interativa são realidades que convivem lado a lado, inseparáveis e realidades inevitáveis. O que devemos é preparar-nos para tal mudança, entendendo os processos, criando metodologias, &lt;/span&gt; &lt;/p&gt; &lt;p class="western" style="margin-left: 0.49in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Desenvolvendo produtos e testando no campo, ou seja, dentro das escolas, com alunos, pais e professores participando do processo, afinal, não dá para lançar um produto sem envolver os próprios consumidores, assim como não se pode depender do mundo globalizado, ao contrário, esta é a hora  e o local para o Brasil marcar presença neste cenário mundial.&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.49in; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;h1 class="western" style="margin-left: 0.1in;" align="left"&gt; &lt;span style="font-size:100%;"&gt;&lt;b&gt;Bibliografia&lt;/b&gt;&lt;/span&gt;&lt;/h1&gt; &lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.49in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Comentários à consulta pública 291/01 – DIBEG (Digital broadcasting experts group)&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.49in; margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;2000: Interactive Enhanced TV – a historical and critical perspective, Tracy Sweldlow, 2000&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.49in; margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Interactive TV learning services o eh European home – Inside Multimedia, 1999&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.49in; margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Development of satellite and terrestrial digital broadcasting systems and services and implications for educational and training – PJB Associates, july, 1999&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;The guide to the digital TV third edition, - &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;a href="http://www.digitaltelevision.com/"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;www.digitaltelevision.com&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.49in; margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;TV personalization – a key component of iTV, Jim Stroud – The Carmel Group, 2000&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.49in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Avaliação técnica e econômica nas áreas de telefonia celular, DTV e agroindústria – seleção padrão DTV para Brasil – NEIT/IE/Unicamp, 2000&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.49in; margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Turn on, tune in, switched off – consumers atitudes to DTV – Cosumers Association, UK, 2000&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Comntários DVB à consulta pública da Anatel no. 291, julho 2001&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;DVB-MHP White paper, Open TV, 2001&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Open TV Co. apresentação institucional, 2001&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Faith Popcorn – O relatório Pop Corn, 1990&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;a href="http://www.ibope.com.br/"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;www.ibope.com.br&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;a href="http://www.ibge.com.br/"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;www.ibge.com.br&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;a href="http://www.opentv.com/"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;www.opentv.com&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;a href="http://www.wgate.com/"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;www.wgate.com&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;a href="http://www.itvt.com/"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;www.itvt.com&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;a href="http://www.digitaltelevision.com/"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;www.digitaltelevision.com&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;a href="http://www.pace.com/"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;www.pace.com&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;a href="http://www.microsoft.com/tv"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;www.microsoft.com/tv&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;a href="http://www.ndl.com/"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;www.ndl.com&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;a href="http://www.opentv.com/"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;www.opentv.com&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;a href="http://www.pace.com/"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;www.pace.com&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;a href="http://www.pjb.co.uk/"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;www.pjb.co.uk&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;a href="http://www.tvmeetstheweb.com/"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;www.tvmeetstheweb.com&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;a href="http://www.wgate.com/"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;www.wgate.com&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;a href="http://www.broadbandbanans.com/"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;www.broadbandbanans.com&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;a href="http://www.luditv.com/"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;www.luditv.com&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;a href="http://www.twowaytv.com/"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;www.twowaytv.com&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="margin-left: 0.25in; margin-bottom: 0in;"&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;a href="http://www.nds.com/"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;www.nds.com&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3238689029190355690-7925804088953886865?l=gimenes-alves.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gimenes-alves.blogspot.com/feeds/7925804088953886865/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://gimenes-alves.blogspot.com/2008/09/tv-digital-um-pouco-alm-do-esperado.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default/7925804088953886865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3238689029190355690/posts/default/7925804088953886865'/><link rel='alternate' type='text/html' href='http://gimenes-alves.blogspot.com/2008/09/tv-digital-um-pouco-alm-do-esperado.html' title='TV Digital - Um pouco além do esperado'/><author><name>Altherlex Alves</name><uri>http://www.blogger.com/profile/08141329424051857933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
