<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>fabiotomio.com + br</title>
	<atom:link href="http://www.fabiotomio.com.br/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fabiotomio.com.br/blog</link>
	<description>Internet and continuous evolution</description>
	<lastBuildDate>Tue, 07 Apr 2009 00:38:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Amf/Rest WebServices com PHP e Zend Framework &#8211; Conceitos!</title>
		<link>http://www.fabiotomio.com.br/blog/2009/04/06/amfrest-webservices-com-php-e-zend-framework-conceitos/</link>
		<comments>http://www.fabiotomio.com.br/blog/2009/04/06/amfrest-webservices-com-php-e-zend-framework-conceitos/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 00:38:57 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[Arquitetura de Softwares]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[amf]]></category>
		<category><![CDATA[Arquitetura de Software]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[web services]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://www.fabiotomio.com/blog/?p=242</guid>
		<description><![CDATA[Olá pessoal, faz tempo, mas estou de volta! Esse ano tem TCC e além disso resolví fazer um curso de Java nos finais de semana, é, as coisas estão corridas, mas interessantes. Isso tirando o trabalho, parece que quanto mais fecho jobs mais eles surgem. Por falar em jobs estou precisando de um profissional que [...]]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal, faz tempo, mas estou de volta! Esse ano tem TCC e além disso resolví fazer um curso de Java nos finais de semana, é, as coisas estão corridas, mas interessantes. Isso tirando o trabalho, parece que quanto mais fecho jobs mais eles surgem. Por falar em jobs estou precisando de um profissional que tenha programado uma aplicação pra MP4 playes, esses chineses genéricos, estou com um projeto e me liberaram contrar um profissional que desenvolva os firmwares pra esses dispositivos. Bom o convite está feito, quem tiver alguma experiência com esses dispositivos é só mandar email pra fabio.tomio@mindsetfilms.com.br.</p>
<p>Mas vamos falar do assunto do post!</p>
<p>Chega um certo momento em que suas aplicações alcançam uma dimensão na qual é preciso fazer umas conversarem com as outras, nem sempre isso acontece, vai muito das necessidades, mas quando isso acontece, você se depara com ambientes distintos, datacentes distintos, banco de dados distintos, frameworks distintos, tecnologias distintas, arquiteturas distintas, problemas com performance, lógicas sem lógica&#8230; E como fazer seus mini-monstros conversarem? Foi essa a minha necessidade nos últimos meses. Como conseguir melhorar a qualidade no desenvolvimento de aplicativos web, e fazer a integração entre eles, se os mesmos não permitem fazer isso? Várias realidades, várias variáveis, que muitas vezes descobrimos somente quando alguma coisa é alterada, um ninho de abelhas.</p>
<p>Vendo esse senário a primeira saída era estudar. Entendi com a realidade na qual estava imerso que as coisas estavam grandes de uma forma, que não podia mais trabalhar com sistemas e sites distintos, tudo estava pulverizado em vários lugares diferentes, se um domínio caía, não impactava somente o mesmo, várias coisas paravam. Muita coisa devia ser refeita, mas refazer da mesma maneira não seria a solução, como fazer então? Só o MVC não estava me ajudando a organizar as coisas, muita coisa não era aproveitada.</p>
<p>As coisas são mais ou menos assim.<a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/04/old-archtecture2.png"><img class="aligncenter size-full wp-image-253" title="old-archtecture" src="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/04/old-archtecture2.png" alt="old-archtecture" width="351" height="437" /></a></p>
<p>A figura ilustra de uma forma resumida como estão estruturadas as aplicações. Aplicações independentes e que em um determinado ponto precisavam consumir informações de outras aplicações. A figura não leva em consideração os datacenters, que em alguns dos casos eram distintos.</p>
<p>Como dá pra perceber na figuram existem <em>n</em> aplicações consumindo os mesmo bancos de dados, essas aplicações muitas vezes executavam processos iguais, por esse motivo mesmos processos precisavam ser reescritos em aplicações direrenres, ou pelo menos portados de um framework para outro quando fosse possível. Sem documentação, como lembrar onde o mesmo processo é executado para efetuar uma manutenção?</p>
<p>Comecei a estudar Ruby on Rails, gostei muito do que aprendí, muito rápido e objetivo, mas minha equipe iria demorar um pouco pra conseguir absorver essa nova linguagem e como as coisas são a 1000 por hora, não seria viável, espero um dia ainda poder trabalhar essa linguagem = Ruby / framework = Rails. Comecei também a ver Java e no momento que escrevo este post ainda estou fazendo um curso aos finais de semana, está me abrindo a mente pra OOP avançada e Design Patterns, o professor é muito bom, trabalha à muitos anos com o Java, a &#8220;turma&#8221; é de 3 pessoas, estou aproveitando muito, recomendo! Se forem de Curitiba mandem um e-mail que passo o contato. Depois da merchan, e muito estudo, quase espanei os parafusos, e acabei refletindo muito, levei em consideração os seguintes ítems:</p>
<ul>
<li>Equipe de desenvolvimento 100% PHP (limitador);</li>
<li>Datacenter terceirizado sem suporte à Ruby on Rails e Java (não limitador, mas burocrático/perda de agilidade);</li>
<li>Tempo necessário pra disseminar a metodologia, padrões e conhecimento necessários extremamente curto;</li>
<li>Tempo e complexidade do deployment;</li>
<li>Infraestrutura contratada, PHP + MySQL + PostgreSQL e DB2;</li>
<li>Necessidade em lidar com Flash, Flex e FMS sem traumas (prover serviços para Flash e Flex).</li>
<li>Integração com o ERP da Microsiga acessando direto o Database e/ou utilizando WebServices;</li>
</ul>
<p>Creio que esses foram os principais fatores, a minha infraestrutura é um problema, não gerencio os servidores, é tudo atravéz de chamados, isso deixa tudo muito interativo, no sentido de precisar trocar no mínimo umas 3 mensagem com o pessoal de infraestrutura da empresa pra eles interagirem com o pessoal do Datacenter, e aí o ticket ser executado. Minhas aplicações começaram a apresentar problemas, estão crescendo, e enfrento graves problemas de desempenho. Existem várias aplicações em Flex e Flash consumindo serviços desenvolvidos em PHP, um know-how que já possuímos, não seria interessante ter que reaprender tudo!</p>
<p>Sem alternativas, adivinha qual foi a minha saída? Acertou, PHP!!! É&#8230;, mas como nada nessa vida é em vão, como executar e planejar a nova arquitetura de desenvolvimento? Pensei, pensei, quando estava quase tudo meio que alinhado na minha cabeça, chamei os dois melhores programadores de equipe e joguei o desafio &#8211; Como desenvolver um webservices utilizando PHP de uma forma simples e direta?</p>
<p>Mas por que WebServices? Você vai entender mais a frente.</p>
<p>Pensaram e logo veio a ideia, trabalhar com rotas e serviços publicados utilizando WSDL e SOAP. Bem lógica a resposta. Fui mais longe, porque não implementar um Rest WS? Seguindo a idéia de &#8211; por que complicar se podemos fazer as coisas de uma forma mais simples? Se não me engano foi em um podcast do <a href="http://www.akitaonrails.com" target="_blank">Fabio Akita</a> onde ele falava de Restful e routes no Ruby on Rails que eu entendi, porque complicar uma coisa se podemos utilizar recursos já consolidados na Internet como o HTTP e suas actions? Isso pra mim iria descomplicar muita coisa, não haveria a necessidade de aprendizado de WSDL, SOAP do PHP ou o nuSOAP, sem serviços de descobertas de serviços e todas essas coisas. Existe cases melhores que o Amazon, Twitter e o Facebook pra entender que o Rest dá conta do recado no que diz respeito à aplicações com milhões de page views e que precisam de segurança?</p>
<p>Resolví o meu problema do WS, mas ainda não tinha terminado. Como mudar o resto da arquitetura a fim de conseguir consumir os serviços disponibilizados pelo WS? Como facilitar a atualização, implementação de novas funcionalidades sem ter que portar pedaços de views de uma aplicação para outra?  Pois as regras de negócios estariam no WS, cada aplicação trabalharia com as suas interfaces com o usuário, caso a funcionalidade fosse a mesma, ainda teria repetições de &#8220;pedaços&#8221; de processos, nesse caso Views repetidas.</p>
<p>Me deparei com o conceito de portlets, apresentado pela minha amiga Desirre, adaptei pra minha realidade essa idéia. Não montar uma aplicação pra cada portlet (como o Java implementa), mas montar uma aplicação com vários módulos, cada módulo com os comportamentos necessários, por exemplo, módulo de notícias, vou programar ele pra consumir os serviços das notícias necessários para exibição, paginação, busca por exemplo, e eu iria conseguir disponibilizar o mesmo módulo em aplicações distintas sem traumas sem a necessidade de replicar a mesma coisa em lugares diferentes.</p>
<p>A arquitetura como um todo ficou assim.</p>
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/04/new-archtecture1.png"><img class="aligncenter size-full wp-image-259" title="new-archtecture" src="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/04/new-archtecture1.png" alt="new-archtecture" width="551" height="206" /></a></p>
<p>Cabia a mim agora decidir entre utilizar um framework ou codificar tudo do zero com PHP &#8220;puro&#8221;, comecei a estudar alguns frameworks em PHP, não muitos, Code Igniter e Zend. Parei a minha busca por um framework com o Zend, mas por que um framework se possuo na minha equipe bons programadores? Simples! frameworks ajudam o desenvolvimento provendo funcionalidades testadas, em constante manutenção e evolução, mais que isso, eles provém um &#8220;conceito&#8221; de desenvolvimento, uma forma já pré definida de como codificar, cada framework define formas de como programar, como consumir as funcionalidades disponibilizadas entre outras coisas. Sabendo que no PHP o que se escreve funciona, independente da arquitetura, orientação, formatação, e conhecendo os prazos dos projetos, a idéia de utilizar um framework para o nosso desenvolvimento é obter uma fonte de recursos e funcionalidades de uma forma mais rápida e segura, além disso, ajudar a definir um conjunto de boas práticas.</p>
<p>O que mais me chamou atenção a princípio no Zend foi a quantidade de recursos disponíveis, muita coisa, dei uma olhada na sua documentação e fiquei surpreso, mais ainda por suportar publicação de serviços em Amf  e Rest, a primeira supriria a minha necessidade por prover serviços a aplicativos com tecnologia Flex e Flash a segunda era brinde&#8230;. =)</p>
<p>Me deparei então em montar o início de tudo, como trabalhar com o Zend? Um livro me ajudou em entender como as coisas funcionavam no Zend, e como as coisas não funcionavam também, minha preocupação era sempre em escalar, precisava montar um provedor de serviços em Amf/Rest com alto desempenho, já que estaria centralizando tudo, a idéia de fazer um LB (load balance) no Apache teria que ser algo simples e rápido, já que a proposta da empresa é de crescimento. Foi aí que percebí que tinha feito uma boa escolha, vindo de uma experiência com o Code Igniter (CI), Expression Engine e afins, o Zend era totalmente diferente, um novo conceito pra mim, uma lógica diferente em utilizar uma frameworrk, eu teria que montar a aplicação de acordo com as minhas necessidades, fazer o load das bibliotecas necessárias para a minha aplicação na medida que eu fosse precisando, diferente do CI onde já vem tudo estruturado e você só precisa configurar a sua aplicação, o Zend é tudo do zero, ele disponibiliza uma Library e só, você se encarrega de utilizar da forma que precisar, bem coisa do PHP isso&#8230;.</p>
<p>Depois de idealizado e estruturado e implementado o Web Services ficou como a figura abaixo.</p>
<p style="text-align: center;"><a href="http://www.fabiotomio.com/blog/wp-content/uploads/2009/04/zend-rest-amf-webservices1.png"><img class="aligncenter size-full wp-image-255" title="zend-rest-amf-webservices" src="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/04/zend-rest-amf-webservices1.png" alt="zend-rest-amf-webservices" /></a></p>
<p>Vou explicar mais ou menos como fizemos.</p>
<p>Todos as requisições dos módulos aos serviços chegam no WS no Facade, ele é responsável por pegar todas as requisições, ele valida para qual serviço foi feita a requisição e qual sua Action (POST, GET, PUT ou DELETE), em seguida valida o Token, que é um código que os modulos passam para se identificarem, como uma chave pública de criptografia. O token faz parte da camada Security, estudamos a implementação também nessa camada de validação de IP`s, como o sistema roda ditribuído no datacenter, é possível fazer a validação das máquinas que estão consumindo os serviços, melhorando ainda mais a segurança do WS. Seguindo a sequência, após a validação do token e IP, é feito o load do Server requisitado, conseguimos implementar um serviço genérico, o mesmo pode ser &#8220;rodado&#8221; pelo Zend_Rest_Server ou pelo Zend_Amf_Server sem nenhum problema, creio que essa foi uma característica muito interessante do nosso projeto, com um mesmo conjunto de classes, conseguimos disponibilizar serviços em Rest e Amf escrevendo somente uma vez. Por último um conjunto de DAO`s (Data Access Object), que nos auxiliam com o IO de dados a Bases de Dados, outros Web Services e Envio de e-Mails por exemplo.</p>
<p>No momento que escrevo este post faz mais ou menos um mês que o Amf/Rest está em funcionamento, ainda tem muita coisa pra evoluir&#8230;</p>
<p>No próximo post entro em detalhes, de como implementar o Amf e Rest Servers com exemplos e afins. Esse post foi mais a viagem do oriental aqui em como resolver o grande problema enfrentado por mim e pela equipe de desenvolvimento em manter as coisas organizadas e como conseguir um melhor aproveitamento dos funcionalidades implementadas.</p>
<p>Caso tenha alguma idéia ou dúvida fique a vontade de comentar esse post, será muito bem vindo. E caso não tenha entendido nadinha de nada comente também, posso explicar de uma outra forma em um outro post&#8230;..</p>
<p>É isso, ótima semana a todos e até mais.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2009/04/06/amfrest-webservices-com-php-e-zend-framework-conceitos/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Entendo a estrutura de diretórios do Rails</title>
		<link>http://www.fabiotomio.com.br/blog/2009/01/17/entendo-a-estrutura-de-diretorios-do-rails/</link>
		<comments>http://www.fabiotomio.com.br/blog/2009/01/17/entendo-a-estrutura-de-diretorios-do-rails/#comments</comments>
		<pubDate>Sat, 17 Jan 2009 04:35:29 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[estrutura]]></category>
		<category><![CDATA[projeto]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://www.fabiotomio.com/blog/?p=236</guid>
		<description><![CDATA[Bom já temos o MySQL e o Ruby on Rails na máquina, já sabemos também como criar um projeto Rails. Mas o que ele cria? Por que todas aquelas pastas? Precisa de tudo isso pra funcionar? Com esse post dou início aos estudos efetivos do Rails, particularmente estou começando ainda meus estudos com o Rails, [...]]]></description>
			<content:encoded><![CDATA[<p>Bom já temos o MySQL e o Ruby on Rails na máquina, já sabemos também como criar um projeto Rails. Mas o que ele cria? Por que todas aquelas pastas? Precisa de tudo isso pra funcionar? Com esse post dou início aos estudos efetivos do Rails, particularmente estou começando ainda meus estudos com o Rails, comprei o meu segundo livro de Rails recentemente e este é mais detalhado, recomendo. O título é &#8220;Programando Rails A Bíblia&#8221; de Obie Fernandez, um experiente programador Java que acabou migrando pro Raisl logo quando o Rails estava surgindo.</p>
<p>Minha idéia é ir postando os conteúdos na medida que eu vou evoluindo nos estudo do Rails. Assim quem quizer aprender é só seguir os posts. Bom vamos ver se isso vai dar certo.</p>
<p>Mas vamos ao que interessa!</p>
<p>Bom, digitamos no Terminal o comando: rails NomeDoProjeto, e o resultado é</p>
<p><strong>README<br />
Rakefile<br />
app/<br />
config/<br />
db/<br />
doc/<br />
lib/<br />
log/<br />
public/<br />
script/<br />
test/<br />
tmp/<br />
vendor/</strong></p>
<p>É sobre essa organização de pastas que vamos falar hoje.</p>
<p><strong>README</strong> &#8211; arquivo com instruções de uso;<br />
<strong>Rakefile</strong> &#8211; script de construção;<br />
<strong>app/</strong> &#8211; Dentro dessa pasta estão os arquivos da estrutura MVC &#8211; (Model, View e Controller);<br />
<strong>components/</strong> &#8211; componentes reutilizáveis;<br />
<strong>config/</strong> &#8211; parâmetros de configurações tanto do projeto quanto do banco de dados;<br />
<strong>db/</strong> &#8211; Informações sobre o esquema e as migrations geradas para modificar o banco de dados;<br />
<strong>doc/</strong> &#8211; Documentação auto gerada, utilizando o Rdoc,<br />
<strong>lib/</strong> &#8211; Código compartilhado códigos que não podemos adicionar a uma um modelo, view ou controller, algo como um gerador de arquivos pdf.<br />
<strong>log/</strong> &#8211; documentos de log produzidos pelo seu aplicativo;<br />
<strong>public/</strong> &#8211; Diretório acessível pela Web. É a pasta onde o HTTP server utiliza pra rodar o seu aplicativo;<br />
<strong>script/</strong> &#8211; Scripts utilitários, onde estão os programas utilizados pelos desenvolvedores Rails, para entede-los você pode executalos sem nenhum argumento, você obterá informações sobre de uso;<br />
<strong>test/</strong> &#8211; Utilitários de testes, onde escrevemos os teste funcionais, testes de integração, fixtures e simulações;<br />
<strong>tmp/</strong> &#8211; Arquivos temporários utilizados e gerados em tempo de execução do seu aplicativo;<br />
<strong>vendor/</strong> &#8211; Código importado onde você irá por os seus plugins utilizados pela aplicação, código de terceiros.</p>
<p>As pastas app/ e test/ é onde fica quase toda a nossa aplicação, é onde mais iremos trabalhar!</p>
<p>Bom hoje é isso. Acho que com isso conseguimos ver com outros olhos toda a estrutura de pastas criada automaticamente pelo Rails. Nos próximos posts vou detalhar mais cada uma destas pastas falando dos seus arquivos internos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2009/01/17/entendo-a-estrutura-de-diretorios-do-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails 2.2 no Mac (Leopard)</title>
		<link>http://www.fabiotomio.com.br/blog/2009/01/14/ruby-on-rails-22-no-mac-leopard/</link>
		<comments>http://www.fabiotomio.com.br/blog/2009/01/14/ruby-on-rails-22-no-mac-leopard/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 00:44:41 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.fabiotomio.com/blog/?p=206</guid>
		<description><![CDATA[Para instalar o Ruby on Rails você precisa do MySQL, como instalar o MySQL no Mac você encontra esse post Instalando o MySQL no Mac (Leopard) e precisa também do Xcode Tools. O Xcode Tools veio com o seu Mac, é o CD2 de instalação do Mac OS X. Com o Xcode é instalado também [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Para instalar o Ruby on Rails você precisa do MySQL, como instalar o MySQL no Mac você encontra esse post <a href="http://www.fabiotomio.com/blog/2009/01/ruby-on-rails-22-e-mysql-no-leopard/" target="_blank">Instalando o MySQL no Mac (Leopard)</a> e precisa também do Xcode Tools. O Xcode Tools veio com o seu Mac, é o CD2 de instalação do Mac OS X. Com o Xcode é instalado também o gcc, um compilador necessário para instalar o suporte do MySQL para o Ruby.</p>
<p style="text-align: left;">Fiz a instalação em vários Mac`s diferentes até chegar nesse tutorial, pra validar refiz em outro Mac no trabalho. Ao todo foram 4 instalações em 4 Mac`s diferentes, em ambientes totalmente diferentes, com proxy, sem proxy, mini Mac, iMac e Macbook. Espero que você não tenha problemas, se tiver é só comentar o post que retorno.</p>
<p style="text-align: left;">Caso você já instalou o MySQL e o Xcode então vamos ao que interessa.</p>
<p style="text-align: left;">Primeiro é atualizar o Gem, que é o gerenciados de pacotes do Ruby. Pra ilustrar abaixo estão as versões que acompanham o Leopard.</p>
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-ruby-on-rails-on-leopard-011.png"><img class="aligncenter size-medium wp-image-145" title="install-ruby-on-rails-on-leopard-01" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-ruby-on-rails-on-leopard-01-300x205.png" alt="install-ruby-on-rails-on-leopard-01" width="300" height="205" /></a></p>
<p style="text-align: center;">Você deve ter notado, a instalação do Ruby on Rails é feita no Terminal.<br />
Para iniciar a instalação precisamos ter permissões root, o comando sudo sh resolve essa questão:</p>
<pre class="php" name="code" style="display: none;">sudo sh</pre>
<p style="text-align: center;">Ele vai pedir a senha, dai você se pergunta: que senha? É a mesma senha do seu usuário, mas não pode ser em branco, caso sua senha esteja em branco, defina uma em System Preferences -&gt; Accounts. Não esqueça que o seu usuário tem que pertencer ao grupo Admin, caso não pertença é preciso acessar o Mac com um ususário que pertença.</p>
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/new-password1.png"><img class="aligncenter size-medium wp-image-180" title="new-password" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/new-password-300x238.png" alt="new-password" width="300" height="238" /></a></p>
<p style="text-align: center;">Agora sim, com a senha definida, vamos ao Terminal e digitamos: sudo sh</p>
<pre class="php" name="code" style="display: none;"> sudo sh</pre>
<p style="text-align: center;">Vamos atualizar o gem utilizando o comando gem update &#8211;system</p>
<pre class="php" name="code" style="display: none;"> gem update --system</pre>
<p style="text-align: center;">Quando fiz esses printscreen eu estava no trabalho, lá para acessar a Internet precisamos autenticar no proxy a primeira linha do print abaixo faz isso, diz pro sistema pra quando acessar algum conteúdo utilizando o protocolo HTTP efetue essa requisição utilizando o proxy, esse comando eu utilizo no Linux toda a vez que preciso atualizar algum pacote ao baixar algum arquivo utilizando o wget, como o Leopard é irmão do Linux não custa garantir.</p>
<p style="text-align: center;">Se você não estiver em uma rede que precise se autenticar no proxy pra acessar a Internet esqueça isso, caso esse seja o seu caso não custa ter 100% de certeza configurando as opções de Proxy em System Preferences -&gt; Network -&gt; Sua Conexão -&gt; Advanced -&gt; Proxies.</p>
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-ruby-on-rails-on-leopard-021.png"><img class="aligncenter size-medium wp-image-146" title="install-ruby-on-rails-on-leopard-02" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-ruby-on-rails-on-leopard-02-300x204.png" alt="install-ruby-on-rails-on-leopard-02" width="300" height="204" /></a></p>
<p style="text-align: center;">Vai apararecer na sua tela algo parecido com o print abaixo.</p>
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-ruby-on-rails-on-leopard-031.png"><img class="aligncenter size-medium wp-image-147" title="install-ruby-on-rails-on-leopard-03" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-ruby-on-rails-on-leopard-03-300x205.png" alt="install-ruby-on-rails-on-leopard-03" width="300" height="205" /></a></p>
<p style="text-align: center;">Digitando gem -v  e rails -v validamos se foi atualizado com sucesso.</p>
<pre class="php" name="code" style="display: none;">
gem -v
ruby -v
</pre>
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-ruby-on-rails-on-leopard-0421.png"><img class="aligncenter size-medium wp-image-182" title="install-ruby-on-rails-on-leopard-042" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-ruby-on-rails-on-leopard-042-300x204.png" alt="install-ruby-on-rails-on-leopard-042" width="300" height="204" /></a></p>
<p style="text-align: center;">Agora é a vez do Rails, para instalar o Rails pedimos para o Gem agora atualizado instalar utilizando o comando</p>
<pre class="php" name="code" style="display: none;"> gem instal rails --include-dependencies</pre>
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-ruby-on-rails-on-leopard-071.png"><img class="aligncenter size-medium wp-image-151" title="install-ruby-on-rails-on-leopard-07" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-ruby-on-rails-on-leopard-07-300x204.png" alt="install-ruby-on-rails-on-leopard-07" width="300" height="204" /></a></p>
<p style="text-align: center;">Pronto, pra validar é só digitar o comando rails -v</p>
<pre class="php" name="code" style="display: none;"> rails -v</pre>
<p style="text-align: center;">Agora precisamos instalar o suporte do Ruby ao MySQL, esse comando é um pouco mais extenso:</p>
<pre class="php" name="code" style="display: none;"> env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config</pre>
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-ruby-on-rails-on-leopard-091.png"><img class="aligncenter size-medium wp-image-153" title="install-ruby-on-rails-on-leopard-09" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-ruby-on-rails-on-leopard-09-300x204.png" alt="install-ruby-on-rails-on-leopard-09" width="300" height="204" /></a></p>
<p style="text-align: center;">Pronto, Gem e Ruby atualizados e Rails e suporte do Ruby pro MySQL instalados, para testes vamos criar nossa primeiro projeto:</p>
<pre class="php" name="code" style="display: none;"> rails FirstRailsApp --database=mysql</pre>
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-ruby-on-rails-on-leopard-101.png"><img class="aligncenter size-medium wp-image-154" title="install-ruby-on-rails-on-leopard-10" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-ruby-on-rails-on-leopard-10-300x204.png" alt="install-ruby-on-rails-on-leopard-10" width="300" height="204" /></a></p>
<p style="text-align: center;">Vai aparecer na tela o seguinte</p>
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-ruby-on-rails-on-leopard-111.png"><img class="aligncenter size-medium wp-image-155" title="install-ruby-on-rails-on-leopard-11" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-ruby-on-rails-on-leopard-11-300x205.png" alt="install-ruby-on-rails-on-leopard-11" width="300" height="205" /></a></p>
<p style="text-align: center;">Vamos entrar na pasta do projeto cd FirstRailsApp e iniciar o servidor Web para ver se está funcionando.</p>
<pre class="php" name="code" style="display: none;">
cd FirstRailsApp
script/server</pre>
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-ruby-on-rails-on-leopard-121.png"><img class="aligncenter size-medium wp-image-156" title="install-ruby-on-rails-on-leopard-12" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-ruby-on-rails-on-leopard-12-300x205.png" alt="install-ruby-on-rails-on-leopard-12" width="300" height="205" /></a></p>
<p style="text-align: center;">Que tal ver se funcionou? Abra o seu navegador e acesse http://localhost:3000 irá aparecer o seguinte conteúdo</p>
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-ruby-on-rails-on-leopard-131.png"><img class="aligncenter size-medium wp-image-157" title="install-ruby-on-rails-on-leopard-13" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-ruby-on-rails-on-leopard-13-300x230.png" alt="install-ruby-on-rails-on-leopard-13" width="300" height="230" /></a></p>
<p>Se quizer testar se a conexão com o banco está ok, precisamos antes configurar o arquivo database.yml que está dentro da pasta config do seu projeto (config/database.yml).</p>
<pre class="ruby" name="code" style="display: none;">
development:
  adapter: mysql
  encoding: utf8
  database: FirstRailsApp_development
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: mysql
  encoding: utf8
  database: FirstRailsApp_test
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

production:
  adapter: mysql
  encoding: utf8
  database: FirstRailsApp_production
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock
</pre>
<p>Após configurado crie o database no MySQL utilizando por exemplo o MySQL Query Browser ou a sua ferramenta favorita.<br />
Para testar o acesso ao banco digite rake db:migrate, ele irá tentar conectar com o banco e verificar se existe a base definida no arquivo de configuração.</p>
<pre class="php" name="code" style="display: none;">rake db:migrate</pre>
<p>Pronto, ambiente praparado.</p>
<h3><strong>Agora vamos revisar o nosso trabalho.</strong></h3>
<ul>
<li>Atualizar o gerenciador de pacotes nativo do Leopard e com ele o Ruby</li>
<li>Instalar o Rails</li>
<li>Instalar o suporte do Ruby pro MySQL direcionando o arquivo de configuração do MySQL</li>
<li>Testar montando um projeto Rails</li>
</ul>
<h3><strong>Resumo dos comandos &#8211; Indo direto ao ponto</strong></h3>
<p><strong>Versões instaladas.</strong></p>
<pre class="php" name="code" style="display: none;">
gem -v
ruby -v
</pre>
<p><strong>Atualizando versões e instalando o Rails e suporte ao MySQL do Ruby</strong></p>
<pre class="ruby" name="code" style="display: none;">
sudo sh
gem update --system
gem install rails --include-dependencies
env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
</pre>
<p><strong>Versões finais</strong></p>
<pre class="php" name="code" style="display: none;">
gem -v
ruby -v
rails -v
</pre>
<p><strong>Testando</strong></p>
<pre class="php" name="code" style="display: none;">
rails FirstRailsApp --database-mysql
cd FirstRailsApp
rake db:migrate
script/server
</pre>
<p><strong>Ver conteúdo no endereço: http://localhost:3000</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2009/01/14/ruby-on-rails-22-no-mac-leopard/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Instalando o MySQL no Mac (Leopard)</title>
		<link>http://www.fabiotomio.com.br/blog/2009/01/06/ruby-on-rails-22-e-mysql-no-leopard/</link>
		<comments>http://www.fabiotomio.com.br/blog/2009/01/06/ruby-on-rails-22-e-mysql-no-leopard/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 02:19:15 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[Leopard]]></category>
		<category><![CDATA[Mac OSX]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.fabiotomio.com/blog/?p=119</guid>
		<description><![CDATA[Organizando um pouco o blog e segmentando o post &#8220;Ruby on Rails 2.2 e MySQL no Leopard&#8221; em dois pos estava muito comprido, não complexo, só por questão de busca e estética.
Você deve estar se perguntando por que instalar o MySQL sozinho se existem combinações do tipo MySQL + Apache e PHP. Vou explicar o [...]]]></description>
			<content:encoded><![CDATA[<p>Organizando um pouco o blog e segmentando o post &#8220;Ruby on Rails 2.2 e MySQL no Leopard&#8221; em dois pos estava muito comprido, não complexo, só por questão de busca e estética.</p>
<p>Você deve estar se perguntando por que instalar o MySQL sozinho se existem combinações do tipo MySQL + Apache e PHP. Vou explicar o porquê. Você lembra daqueles modelos de televisores que vinham com o vídeocassete junto, conhecidos como duetos, existem hoje uns que vem com o DVD acoplado. Quando acontece alguma coisa com o seu televisor e você precisa levar pra alguma assistência técnica pra arrumar, você fica sem o videocassete, caso dê problema no seu videocassete e você precise fazer a mesma coisa, você fica sem o televisor, sendo mais claro, a combinação é muito útil quando pensamos em praticidade e facilidade de uso, mas quando paramos pra pensar em manutenção, configurações e personalizações ficamos muitos amarrados. Outro motivo seria, o Mac já possui por padrão o Apache, porque instalar outro se já possuímos um? Dois Apaches na maquina? Por esses motivos prefiro trabalha com meus serviços não agrupados, em troca de um maior nível de flexibilidade e personalização.</p>
<p>Mas isso não o impede de ignorar esse tutorial e baixar o MAMP, mas se o caso não for esse vamos iniciar a instalação do MySQL?</p>
<p style="text-align: left;">Para instalar o MySQL precisamos fazer o download da última versão estável disponível no site. <a href="http://dev.mysql.com/downloads/mysql/5.1.html#macosx-dmg" target="_blank">http://dev.mysql.com/downloads/mysql/5.1.html#macosx-dmg</a></p>
<p style="text-align: center;">Baixar a opção Packager Formated &#8211; Mac OSX 10.5 (Leopard)<br />
se você utiliza o Tiger baixar a opção Packager Formated &#8211; Mac OSX 10.4</p>
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-021.png"><img class="aligncenter size-medium wp-image-128" title="install-mysql-on-leopard-02" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-02-300x230.png" alt="install-mysql-on-leopard-02" width="300" height="230" /></a></p>
<p style="text-align: center;">Escolher o Mirror para download.</p>
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-031.png"><img class="aligncenter size-medium wp-image-129" title="install-mysql-on-leopard-03" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-03-300x231.png" alt="install-mysql-on-leopard-03" width="300" height="231" /></a></p>
<p style="text-align: center;">Montar o dmg e executar o arquivo X.X.X-osx10.X-x86.dmg<br />
no meu caso mysql-5.1.30-osx10.5-x86.dmg<br />
(este é o arquivo de instalação do MySQL).</p>
<p style="text-align: center;"><span style="color: #ff0000;">Obs: Caso você utilize algum programa<br />
com a famosa combinação AMP (Apache + MySQL e PHP)<br />
como por exemplo o MAMP,<br />
não esqueça de parar os servidores.</span></p>
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-051.png"><br />
<img class="aligncenter size-medium wp-image-131" title="install-mysql-on-leopard-05" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-05-300x174.png" alt="install-mysql-on-leopard-05" width="300" height="174" /></a></p>
<p style="text-align: center;">Seguir os seguintes passos no estilo NNF (Next-Next-Finish)</p>
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-061.png"><img class="aligncenter size-medium wp-image-132" title="install-mysql-on-leopard-06" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-06-300x212.png" alt="install-mysql-on-leopard-06" width="300" height="212" /></a></p>
<p style="text-align: center;">
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-071.png"><img class="aligncenter size-medium wp-image-133" title="install-mysql-on-leopard-07" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-07-300x212.png" alt="install-mysql-on-leopard-07" width="300" height="212" /></a></p>
<p style="text-align: center;">
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-081.png"><img class="aligncenter size-medium wp-image-134" title="install-mysql-on-leopard-08" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-08-300x213.png" alt="install-mysql-on-leopard-08" width="300" height="213" /></a></p>
<p style="text-align: center;">
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-091.png"><img class="aligncenter size-medium wp-image-135" title="install-mysql-on-leopard-09" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-09-300x212.png" alt="install-mysql-on-leopard-09" width="300" height="212" /></a></p>
<p style="text-align: center;">
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-101.png"><img class="aligncenter size-medium wp-image-136" title="install-mysql-on-leopard-10" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-10-300x212.png" alt="install-mysql-on-leopard-10" width="300" height="212" /></a></p>
<p style="text-align: center;">
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-111.png"><img class="aligncenter size-medium wp-image-137" title="install-mysql-on-leopard-11" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-11-300x212.png" alt="install-mysql-on-leopard-11" width="300" height="212" /></a></p>
<p style="text-align: center;">
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-121.png"><img class="aligncenter size-medium wp-image-138" title="install-mysql-on-leopard-12" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-12-300x169.png" alt="install-mysql-on-leopard-12" width="300" height="169" /></a></p>
<p style="text-align: center;">
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-131.png"><img class="aligncenter size-medium wp-image-139" title="install-mysql-on-leopard-13" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-13-300x213.png" alt="install-mysql-on-leopard-13" width="300" height="213" /></a></p>
<p style="text-align: center;">
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-141.png"><img class="aligncenter size-medium wp-image-140" title="install-mysql-on-leopard-14" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-14-300x211.png" alt="install-mysql-on-leopard-14" width="300" height="211" /></a></p>
<p style="text-align: center;">Instalar o MySQL Preference Pane.<br />
É um utilitário que fica no System Preferences<br />
que inicia e para o MySQL e configura a inicialização automática.<br />
O nome do arquivo é MySQL.prefPane.</p>
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-151.png"><img class="aligncenter size-medium wp-image-141" title="install-mysql-on-leopard-15" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-15-300x174.png" alt="install-mysql-on-leopard-15" width="300" height="174" /></a></p>
<p style="text-align: center;">Deseja disponibilizar o Preference Pane<br />
para todos os usuários?</p>
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-161.png"><img class="aligncenter size-medium wp-image-142" title="install-mysql-on-leopard-16" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-16-300x207.png" alt="install-mysql-on-leopard-16" width="300" height="207" /></a></p>
<p style="text-align: center;">Feito isso é só clicar em &#8220;Start MySQL Server&#8221;.</p>
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-171.png"><img class="aligncenter size-medium wp-image-143" title="install-mysql-on-leopard-17" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-17-300x148.png" alt="install-mysql-on-leopard-17" width="300" height="148" /></a></p>
<p style="text-align: center;">
<p><a href="http://www.fabiotomio.com.br/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-181.png"><img class="aligncenter size-medium wp-image-144" title="install-mysql-on-leopard-18" src="http://www.fabiotomio.com/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-18-300x147.png" alt="install-mysql-on-leopard-18" width="300" height="147" /></a></p>
<p style="text-align: center;">O usuário default é root sem senha.</p>
<p>O MySQL é bem intuitivo, não tem segredo, coloquei os prints das janelas pois não tem muito o que comentar, a instalação é simples e direta. Alguma dúvida comente o post que eu retorno.</p>
<p>Para ajudar o seu trabalho podemos baixar o PhpMyAdmin, ou bem mais fácil podemos baixar o MySQL Admin no link <a href="http://dev.mysql.com/downloads/gui-tools/5.0.html" target="_blank">http://dev.mysql.com/downloads/gui-tools/5.0.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2009/01/06/ruby-on-rails-22-e-mysql-no-leopard/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Iniciando em Ruby on Rails</title>
		<link>http://www.fabiotomio.com.br/blog/2008/12/21/iniciando-em-ruby-on-rails/</link>
		<comments>http://www.fabiotomio.com.br/blog/2008/12/21/iniciando-em-ruby-on-rails/#comments</comments>
		<pubDate>Sun, 21 Dec 2008 04:46:51 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[conceito]]></category>
		<category><![CDATA[Convention over configuration]]></category>
		<category><![CDATA[DRY]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.fabiotomio.com/blog/?p=109</guid>
		<description><![CDATA[Em uma das minhas visitas à livraria, comprei um livro de Ruby on Rails e estou achando fascinante as possibilidades que a combinação do Ruby e do Rails possibilitam para nós que desenvolvemos web sites. O Ruby é uma linguagem de programação que tem origem no Japão, é totalmente Orientada a Objetos e inicialmente era [...]]]></description>
			<content:encoded><![CDATA[<p>Em uma das minhas visitas à livraria, comprei um livro de Ruby on Rails e estou achando fascinante as possibilidades que a combinação do Ruby e do Rails possibilitam para nós que desenvolvemos web sites. O Ruby é uma linguagem de programação que tem origem no Japão, é totalmente Orientada a Objetos e inicialmente era utilizada para desenvolvimento de aplicativos e sistemas não client-server, sua sintaxe é simples e direta.</p>
<p>O propósito do Rails é tornar mais fácil desenvolver, instalar e mantes aplicativos Web, utilizam a arquitetura MVC, alé disso, quando se cria um projeto Rails, ele automaticamente cria todo o &#8220;esqueleto&#8221;, relacionei essa estrutura, quando utilizamos um framework tipo Code Igniter pro PHP, após &#8220;deszipar&#8221; o arquivo do Code Igniter, surge toda uma estrutura, a única diferença é que no Rails essa estrutura é criada em tempo real. O Rails cria automaticamente programas temporários de testes &#8220;stubs&#8221;para as novas funcionalidades que vão sendo adicionadas.</p>
<p>Rails utiliza também alguns outros conceitos: DRY &#8211; Don&#8217;t Repeat Yourself &#8211; Não se Repita &#8211; que emprega que todo conhecimento de um sistema deve ser escrito em um único determinado local, ORM &#8211; Object-Relational Mapping, que utiliza as tabelas do banco de dados para definir os models, não há a necessidade de escrever um model, eles automaticamente são mapeados para as classes, suas linhas para objetos e suas colunas para atributos, portanto quando modificamos um banco automaticamente isso é refletido para a aplicação, Convention over configuration &#8211; essa convenção diz basicamente que deve-se assumir valores padrão onde existe uma convenção.</p>
<p>Uma coisa que achei bem interessante são os migrations, todas as modificações no banco de dados são documentadas pelo Rails, na verdade as modificações são escritas no Rails e ele mesmo as executa no banco de dados, há um controle sobre as modificações no banco, podendo ser aplicadas em outro banco com por exemplo a deploy da aplicação ou até mesmo desfazer uma modificação.<br />
Suporte integrado ao AJAX e RESTful.</p>
<p>Tudo isso e muito mais é resultado da combinação de 5 componentes:</p>
<ul>
<li>Active Record &#8211; mapeamento objeto-relacional (Model do MVC);</li>
<li>Action Pack &#8211; compreende o Action-view e o Action-Controller (Visão e Controller do MVC);</li>
<li>Action Mailer &#8211; suporte a envio de recebimento de e-mails;</li>
<li>Active Support &#8211; coleção de classes e extensões;</li>
<li>Action Webservices &#8211; implementa WSDL e SOAP;</li>
</ul>
<p>O discurso dos evangelistas do Rails me lembra muito os designers da Apple, a história do &#8220;Estado da Arte&#8221;, que é a busca constante pela simplicidade, praticidade, design, perfeição, facilidade. Até onde estão os meus estudos o Rails está suprindo muito bem essas espectativas, é claro que como qualquer outra linguagem de programação é possível escrever um código sujo, mas garanto que ela facilita muito as boas práticas, ela dá suporte a diversos gems que automatizam determinados processos e diversos plugins que expandem as funcionalidades da sua aplicação sem muito esforço.</p>
<p>Caso esteja interessado em iniciar seus estudo também segue algumas dicas:</p>
<p>Livro: Desenvolvimento Web Ágil com Rails &#8211; <a href="http://www.livrariasaraiva.com.br/produto/produto.dll/detalhe?pro_id=2581305&amp;ID=BD3A1DDE7D80C140F24080486" target="_blank">Link Saraiva</a> &#8211; foi o livro que comprei.<a href="http://www.livrariasaraiva.com.br/produto/produto.dll/detalhe?pro_id=2581305&amp;ID=BD3A1DDE7D80C140F24080486" target="_blank"><br />
</a></p>
<p>Podcast: <a href="http://podcast.rubyonrails.pro.br/" target="_blank">Podcast Ruby on Rails Brasil</a> com Fábio Akita e Carlos Eduardo Brando &#8211; só não espere escutar somente coisas sobre Rails, os caras são sinistros, os assuntos vão de Cloud Computing a Compiladores, de Jruby a Rails! Muuuito bom mesmo (Open Your Mind). Estou fazendo uma sessão Rails Podcast Brasil, escutando todos desde o início.</p>
<p>Blogs em pt-BR: <a href="http://akitaonrails.com" target="_blank">http://akitaonrails.com</a> do Fábio Akita e <a href="http://www.nomedojogo.com" target="_blank">http://www.nomedojogo.com</a> Carlos Brando &#8211; estão sendo as minhas referências de Ruby on Rails.</p>
<p>Bom sobre Rails hoje é só, vou postar mais coisas com o desenrolar dos estudos.</p>
<p>Com relação ao Streaming, estamos finalizando outra etapa do projeto, estou preparando um Screencast junto com o pessoal que está participando do projeto comigo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2008/12/21/iniciando-em-ruby-on-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DB2 para Mac OSX</title>
		<link>http://www.fabiotomio.com.br/blog/2008/12/20/db2-para-mac-osx/</link>
		<comments>http://www.fabiotomio.com.br/blog/2008/12/20/db2-para-mac-osx/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 05:18:56 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[DB2]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://www.fabiotomio.com/blog/?p=95</guid>
		<description><![CDATA[A IBM lançou em fase beta o DB2 para Mac OSX (Leopard 64 bits).
Estava me sentindo excluído agora que sou usuário Mac, mas nossos problemas estão resolvidos.
http://www-01.ibm.com/software/data/db2/express/download.html?S_CMP=ecddww01&#38;S_TACT=mac952
Estou baixando e logo posto alguma coisa sobre a instalação do DB2 no Mac. Será que segue o mesmo padrão do Linux? ou algo parecido como Drag-and-Drop do Mac?
]]></description>
			<content:encoded><![CDATA[<p>A IBM lançou em fase beta o DB2 para Mac OSX (Leopard 64 bits).</p>
<p>Estava me sentindo excluído agora que sou usuário Mac, mas nossos problemas estão resolvidos.</p>
<p><a href="http://www-01.ibm.com/software/data/db2/express/download.html?S_CMP=ecddww01&amp;S_TACT=mac952" target="_blank">http://www-01.ibm.com/software/data/db2/express/download.html?S_CMP=ecddww01&amp;S_TACT=mac952</a></p>
<p>Estou baixando e logo posto alguma coisa sobre a instalação do DB2 no Mac. Será que segue o mesmo padrão do Linux? ou algo parecido como Drag-and-Drop do Mac?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2008/12/20/db2-para-mac-osx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O que é um Banco de Dados?</title>
		<link>http://www.fabiotomio.com.br/blog/2008/10/27/o-que-e-um-banco-de-dados/</link>
		<comments>http://www.fabiotomio.com.br/blog/2008/10/27/o-que-e-um-banco-de-dados/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 19:57:15 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[conceito]]></category>
		<category><![CDATA[introdução banco de dados]]></category>
		<category><![CDATA[teoria]]></category>

		<guid isPermaLink="false">http://fabiotomio.wordpress.com/?p=83</guid>
		<description><![CDATA[Estou sem tempo ultimamente, pra não ficar muito tempo sem postar, vou reunir meus posts do outro blog. (www.blogdaweb.com.br).
Abraços e fico devendo um post sobre o evento da empresa, que aconteceu em setembro, falando de Streaming.
O que é um banco de dados?
Como saber identificar um banco de dados?
Não tem a mínima idéia? Então esse post [...]]]></description>
			<content:encoded><![CDATA[<p>Estou sem tempo ultimamente, pra não ficar muito tempo sem postar, vou reunir meus posts do outro blog. (<a href="http://www.blogdaweb.com.br" target="_blank">www.blogdaweb.com.br</a>).</p>
<p>Abraços e fico devendo um post sobre o evento da empresa, que aconteceu em setembro, falando de Streaming.</p>
<p>O que é um banco de dados?<br />
Como saber identificar um banco de dados?<br />
Não tem a mínima idéia? Então esse post é pra você.</p>
<p>Entendemos como banco de dados, um conjunto de dados organizados, é planejado e construído para um propósito específico possuindo assim um conjunto de usuários e aplicativos pré-definidos, tem como base de seu projeto o mundo real, onde é chamado de mini-mundo, qualquer modificação nas características do mini-mundo refletem diretamente no banco de dados.<br />
O banco de dados é mantido por aplicativos desenvolvidos especialmente para esse fim, são chamados de SGBD – Sistema Gerenciador de Banco de Dados ou em inglês DBMS – Database Management System, sua função é possibilitar aos usuários criar, consultar, editar e excluir dados do banco de dados, para as mais diversas aplicações. Alguns dos SGBD`s mais conhecidos são:</p>
<p><strong>Comerciais</strong><br />
Oracle: <a title="Oracle" href="http://www.oracle.com/" target="_blank">http://www.oracle.com</a><br />
DB2: <a title="DB2" href="http://www-306.ibm.com/software/data/db2/" target="_blank">http://www-306.ibm.com/software/data/db2/</a><br />
Sybase: <a title="Sybase" href="http://www.sybase.com.br/" target="_blank">http://www.sybase.com.br/</a><br />
MS SQL Server: <a title="SQL Server" href="http://www.microsoft.com/sql/default.mspx" target="_blank">http://www.microsoft.com/sql/default.mspx</a></p>
<p><a title="SQL Server" href="http://www.microsoft.com/sql/default.mspx" target="_blank"></a><strong>Open Source</strong><br />
MySQL: <a title="MySQL" href="http://www.mysql.com/" target="_blank">http://www.mysql.com</a><br />
Postgre SQL: <a title="Postgre SQL" href="http://www.postgresql.org/" target="_blank">http://www.postgresql.org</a><br />
Firebird:<a title="Firebird" href="http://www.firebirdsql.org/" target="_blank"> http://www.firebirdsql.org/</a></p>
<p><a title="Firebird" href="http://www.firebirdsql.org/" target="_blank"></a><br />
<strong>Banco de dados vs. Gerenciador de arquivos (SGBD`s vs. GA`s)</strong><br />
Algumas características são necessárias para que um sistema de manipulação de dados seja considerado um SGBD. Caso alguma das características abaixo não for um atributo do sistema de manipulação de dados avaliado, o mesmo não pode ser classificado como um SGBD, resumindo, para ser um SGBD o software deve necessáriamente ter as características abaixo, caso não tenha ele pode ser classificado como um gerenciador de arquivos.</p>
<p>• <strong>Auto-contenção</strong>: um SGBD armazena mais que os dados em sí (dados do mini-mundo) como também toda a descrição dos dados, seus relacionamentos, e formas de acesso. Esta regra é conhecida como Dicionário de Dados.<br />
• <strong>Independência dos dados</strong>: nenhuma definição dos dados poderá estar contida na aplicação que utiliza o SGBD para armazenar os dados. Portanto modificações na forma de acesso aos dados, novos indices não podem afetar a aplicação.<br />
• <strong>Abstração dos dados</strong>: um SGBD fornece ao usuário apenas uma representação conceitual dos dados, normalmente é utilizado um Modelo de Dados para fornecer essa abstração, sendo assim um SGBD não fornece informações sobre a criação dos indices, ou como serão mantidos, ou qual relação entre as tabelas que deverá ser mantida íntegra.<br />
• <strong>Visões</strong>: um SGBD deve permitir que cada usuário visualize os dados de uma forma diferente daquela existente fisicamente no banco de dados.<br />
• <strong>Transações</strong>: um SGBD deve gerenciar completamente a integridade referencial dos dados definida em seu esquema, sem precisar em nenhum momento da ajuda do aplicativo para executar essa tarefa. Sendo assim um SGBD deve possuir pelo menos uma instrução que permita a execução de instruções simultâneas (execuções de vários comandos, um em seguida do outro) e um único comando que desfaça todas essas execuções, em outras palavas, ou executa todos os comandos ou não executa nenhum.<br />
• <strong>Acesso automático</strong>: um SGBD deve gerenciar o acesso aos dados com o intúito de evitar DEADLOCKS sem a necessidade de auxílio da aplicação. Um exemplo de DEADLOCK é, um usuário A está esperando a liberação de um registro que está sendo acessado por um usuário B e usiário B espera a liberação de um registro que está sendo acessado pelo usário A, esse bloqueio mútuo é chamado de “abraço mortal” pois o usuário A e o B não vão conseguir acessar os registros.</p>
<p>Abraços….. até a próxima…</p>
<p>Fábio Tomio</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2008/10/27/o-que-e-um-banco-de-dados/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bate-papo sobre TV Digital</title>
		<link>http://www.fabiotomio.com.br/blog/2008/09/03/bate-papo-sobre-tv-digital/</link>
		<comments>http://www.fabiotomio.com.br/blog/2008/09/03/bate-papo-sobre-tv-digital/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 13:43:53 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[Estudando]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[iptv]]></category>
		<category><![CDATA[tv digital]]></category>

		<guid isPermaLink="false">http://fabiotomio.wordpress.com/?p=65</guid>
		<description><![CDATA[Fiz um trabalho sobre TV Digital e Interface para a matéria de Interface Humano Computador.
Segue abaixo&#8230; Procurei fazer um apanhado geral sobre a TV do início até hoje, as diferenças e alguns exemplos. Tem alguma coisa também sobre IPTV. Para quem está pesquisando algo sobre TV Digital e IPTV, nos últimos slides tem a Bibliografia, [...]]]></description>
			<content:encoded><![CDATA[<p>Fiz um trabalho sobre TV Digital e Interface para a matéria de Interface Humano Computador.</p>
<p>Segue abaixo&#8230; Procurei fazer um apanhado geral sobre a TV do início até hoje, as diferenças e alguns exemplos. Tem alguma coisa também sobre IPTV. Para quem está pesquisando algo sobre TV Digital e IPTV, nos últimos slides tem a Bibliografia, uma coletânea de links sobre o assunto e um livro sobre Streaming.</p>
<p><a href="http://fabiotomio.files.wordpress.com/2008/09/interface-tv-digital.pdf">Arquivo &#8211; Slides em PDF<br />
</a></p>
<p>Mudando um pouco de assunto, semana que vem irá acontecer a transmissão, não deu certo o QuickTime, o equilíbrio entre qualidade/peso (Kbps) não chegou nem próximo ao do Flash. Decidí utilizar o Flash Media, mesmo não podendo utilizar o Akamai.</p>
<p>Posto o resultado na sequência&#8230; Abraços, e me desejem boa sorte&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2008/09/03/bate-papo-sobre-tv-digital/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flash Media Live Encoder 2.5 &#8211; On The Fly</title>
		<link>http://www.fabiotomio.com.br/blog/2008/08/25/flash-media-live-encoder-25-on-the-fly/</link>
		<comments>http://www.fabiotomio.com.br/blog/2008/08/25/flash-media-live-encoder-25-on-the-fly/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 19:29:18 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[Streaming]]></category>
		<category><![CDATA[flash encoder]]></category>
		<category><![CDATA[live streaming]]></category>

		<guid isPermaLink="false">http://fabiotomio.wordpress.com/?p=58</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><object width="425" height="344" data="http://www.youtube.com/v/RLmqGCtsSEg&amp;hl=pt-br&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/RLmqGCtsSEg&amp;hl=pt-br&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2008/08/25/flash-media-live-encoder-25-on-the-fly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Streaming parte 2</title>
		<link>http://www.fabiotomio.com.br/blog/2008/08/20/streaming-parte-2/</link>
		<comments>http://www.fabiotomio.com.br/blog/2008/08/20/streaming-parte-2/#comments</comments>
		<pubDate>Wed, 20 Aug 2008 19:14:27 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[Streaming]]></category>
		<category><![CDATA[akamai]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[darwin]]></category>
		<category><![CDATA[exceda]]></category>
		<category><![CDATA[flash media]]></category>
		<category><![CDATA[flash media encoder]]></category>
		<category><![CDATA[flash media server]]></category>
		<category><![CDATA[fms]]></category>
		<category><![CDATA[quicktime]]></category>

		<guid isPermaLink="false">http://fabiotomio.wordpress.com/?p=51</guid>
		<description><![CDATA[Fala pessoal, coloquei em prática as teorias sobre a transmissão de audio/video atravéz da internet.
Como fiz?

A estrutura foi dividida em Encoder e Servidor de entraga do conteúdo. Para o encoder utilizei o Flash Media Encoder,para a parte de entrega de conteúdo foi um serviço contratado da LocaWeb.
A transmissão ocorreu perto das 19:00 horas, com origem [...]]]></description>
			<content:encoded><![CDATA[<p>Fala pessoal, coloquei em prática as teorias sobre a transmissão de audio/video atravéz da internet.<br />
<strong>Como fiz?</strong></p>
<p><a href="http://fabiotomio.files.wordpress.com/2008/08/locaweb.png"><img class="aligncenter size-medium wp-image-52" src="http://fabiotomio.files.wordpress.com/2008/08/locaweb.png?w=300" alt="" width="300" height="122" /></a></p>
<p>A estrutura foi dividida em Encoder e Servidor de entraga do conteúdo. Para o encoder utilizei o <a href="http://www.adobe.com/products/flashmediaserver/flashmediaencoder/" target="_blank">Flash Media Encoder</a>,para a parte de entrega de conteúdo foi um serviço contratado da <a href="http://www.locaweb.com.br/flashcom/default.asp" target="_blank">LocaWeb</a>.</p>
<p>A transmissão ocorreu perto das 19:00 horas, com origem em São Paulo capital e com os principais espectadores em Curitiba.</p>
<p>Os principais problemas foram:</p>
<ul>
<li>O não suporte ao H.264 pelo serviço de Flash Server disponibilizado pela Loca Web;</li>
<li>O não suporte do Flash Media Encoder ao sistema operacional Mac OS X;</li>
<li>Horário da transmissão;</li>
</ul>
<p>Por não poder utilizar o H.264 tive que efetuar o encoder do vídeo utilizando o VP6, o resultado final foi um maior peso do vídeo e com isso a necessidade de um Link com maior capacidade.<br />
Com relação ao encoder, o problema é a plataforma, tive instabilidades com o Windows, o Flash Media Encoder fechava sem nenhum motivo aparente, ou não fazia o streaming, somente no último minuto antes da transmissão ele estabilizou (foi um sufoco).<br />
Com relação ao horário o impacto é o trafego da Internet no Brasil, aconpanhei através do site da <a href="http://www.rnp.br/ceo/trafego/panorama.php" target="_blank">RNP</a> que o horário escolhido pelo pessoal organizador do evento era justamente o horário de pico da Internet do Brasil, não somente por esse problema, mas também por problemas de estreitamento de banda no local do evento, tive problemas com a &#8220;up&#8221; do conteúdo até a Loca Web.</p>
<p>Mas no final deu tudo certo, a transmissão durante todo o evento não teve problemas de instabilidade, o antes foi muito complicado, o durante e depois fui super tranquilo.</p>
<p>Poderia ter utilizado o Red5, mas o meu principal problema foi conseguir uma documentação explicando como fazer a instação no centOS e a minha falta de tempo. Por esses motivos utilizei o Flash Media da Loca Web, supriu as minhas necessidades.</p>
<p>A aplicação client foi desenvolvida por mim e pela equipe de desenvolvimento web da empresa, utilizando o Adobe Flex 3, a base do código foi o programa postado aqui no blog.</p>
<p><a href="http://fabiotomio.wordpress.com/2008/06/25/adobe-flex-red5-e-streaming/" target="_blank">http://fabiotomio.wordpress.com/2008/06/25/adobe-flex-red5-e-streaming/</a></p>
<p><strong>Qual o meu parecer?</strong></p>
<p>Transmissão utilizando a Internet é extremamente complexa, existem inúmeros fatores que podem afetar a transmissão, não somente sua aplicação ou mesmo o seu serviço de entrega utilizado. A tecnologia em sí e forma de entrega são sim os principais focos na hora de projetar uma transmissão, mas não se pode esquecer os outros fatores que são importantes também, como:</p>
<ul>
<li>A entrega dos sinais será feita como? Há a necessidade de um conversor de mídia?</li>
<li>O audio? como será entregue? há um sistema de compressão de audio? Clips (Overload) no audio geram instabilidades.</li>
<li>Qual a tecnologia utilizada para acesso a Internet? É estável? ADSL, Fibra, Frame-Relay, Radio? Mais instavel maior a necessidade da largura.</li>
<li>Nunca utilizar 100% do Link disponível, se necessário diminua a qualidade do vídeo! Existem muitos picos durante a transmissão, se não existir banda disponível há perda de sincronismo.</li>
</ul>
<ul>
<li>Qual o seu público? Onde ele está? Quanto mais proximo a origem da transmissão melhor.</li>
<li>Qual a distância da origem do sinal e do servidor que irá distribuir o conteúdo? Quanto mais próximo melhor!</li>
</ul>
<p>Esses são alguns pontos importantes e que devem ser levados em consideração.</p>
<p>As duas últimas questões levam em conta que existam gargalos de comunicação entre uma região e outra. Por exemplo, se o o conteúdo for trafegar na Internet existem diferentes tecnologias de comunicação para entregar a Internet no Brasil, por exemplo, Paraná &#8211; São Paulo, o link é DWDM de 2.5 Gps já São Paulo com Manaus são 20 Mbps. Mais informações em <a href="http://www.rnp.br/backbone/index.php" target="_blank">RNP</a>. Uma alternativa a esse problema é locar uma rede terceira para trafegar seu conteúdo.</p>
<p><strong>Próxima etapa:</strong></p>
<p>Setembro está chegando e lá vou eu de novo, dessa vez vou mudar muita coisa, ou quase tudo, vou migrar do Flash pro QuickTime, o servidor de streaming do QuickTime tem ume versão Open Source, mais conhecida como Darwin, tem muitos recursos e o melhor, dá suporte ao H.264.</p>
<p>Adicionei mais uma camada para a entrega do conteúdo, é um serviço que faz cache do conteúdo e utiliza rede própria para trafegar o conteúdo, e faz a entrega do conteúdo utilizando várias conexões simultâneas, sabe o superdownload ou getright? é o mesmo conceito, só que em vez de ser na aquisição do conteúdo, é na entrega. Este serviço é utilizado pelos maiores sites e portais do mundo, como Apple, Adobe, CNN, etc. Segue abaixo uma imagem exemplificando o funcionamento. Quem fornece esse serviço no mundo é a <a href="www.akamai.com" target="_blank">Akamai</a>, seu representante no Brasil é a <a href="http://exceda.com/" target="_blank">Exceda</a>.</p>
<p><a href="http://fabiotomio.files.wordpress.com/2008/08/image001.jpg"><img class="aligncenter size-medium wp-image-53" src="http://fabiotomio.files.wordpress.com/2008/08/image001.jpg?w=300" alt="" width="300" height="224" /></a></p>
<p>Estou efetuando testes, sem o serviço da Akamai a princípio, procurando o melhor configuração entre qualidade do vídeo e consumo de banda, essa semana ainda começamos os testes com a Akamai distribuindo o conteúdo.</p>
<p>Vamos ver os resultados, para quem quizer fazer testes com o QuikTime/Darwin, os sites são:</p>
<p><a href="http://developer.apple.com/opensource/server/streaming/index.html" target="_blank">Darwin</a></p>
<p><a href="http://streaming411.com/wiki/Darwin_Streaming_Server" target="_blank">Instalar Darwin on centOS</a></p>
<p>Assim que tiver outras novidades posto aqui&#8230;</p>
<p>Abraços a todos, e se pintar alguma dúvida, é só enviar um email para <a href="mailto:fabiotomio@gmail.com" target="_blank">fabiotomio@gmail.com</a></p>
<p>Links:</p>
<ul>
<li>http://www.adobe.com/products/flashmediaserver/flashmediaencoder/</li>
<li>http://www.locaweb.com.br/flashcom/default.asp</li>
<li>http://www.rnp.br/backbone/index.php</li>
<li>http://www.akamai.com</li>
<li>http://exceda.com</li>
<li>http://developer.apple.com/opensource/server/streaming/index.html</li>
<li>http://streaming411.com/wiki/Darwin_Streaming_Server</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2008/08/20/streaming-parte-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
