<?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>Fábio Tomio # Web Analyst &#38; Developer</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>Wed, 21 Jul 2010 16:16:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Facilitando o trabalho com o Zend Framework</title>
		<link>http://www.fabiotomio.com.br/blog/2010/05/12/facilitando-o-trabalho-com-o-zend-framework/</link>
		<comments>http://www.fabiotomio.com.br/blog/2010/05/12/facilitando-o-trabalho-com-o-zend-framework/#comments</comments>
		<pubDate>Wed, 12 May 2010 06:11:39 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[cli tool]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zendframework]]></category>
		<category><![CDATA[zf]]></category>

		<guid isPermaLink="false">http://www.fabiotomio.com.br/blog/?p=331</guid>
		<description><![CDATA[Precisando de mais agilidade no desenvolvimento de aplicações utilizando o Zend Framework? O próprio Zend Framework pode te ajudar. A partir da versão 1.8, surgiu uma nova ferramenta para ajudar no desenvolvimento de aplicações MVC utilizando o Zend Framework, me &#8230; <a href="http://www.fabiotomio.com.br/blog/2010/05/12/facilitando-o-trabalho-com-o-zend-framework/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Precisando de mais agilidade no desenvolvimento de aplicações utilizando o Zend Framework?<br />
O próprio Zend Framework pode te ajudar.<br />
A partir da versão 1.8, surgiu uma nova ferramenta para ajudar no desenvolvimento de aplicações MVC utilizando o Zend Framework, me lembrou muito os scripts/generator do RoR. O <acronym>CLI</acronym> Tool surgiu com a idéia de automatizar a criação da estrutura do projeto e seus componentes em comum, o objetivo é liberar o desenvolvedor das tarefas repetitivas. \o/<br />
Dependendo da ferramenta de desenvolvimento que você utiliza, é bem provável que a mesma já possua alguns recursos do zf, principalmente se essa ferramenta for o Zend Studio, mas mesmo assim vale a pena dar uma olhada.</p>
<p>Segue o link da própria Zend para a instalação.</p>
<p><a href="http://zendframework.com/manual/en/zend.tool.framework.clitool.html#zend.tool.framework.clitool.setup-general" target="_blank">http://zendframework.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2010/05/12/facilitando-o-trabalho-com-o-zend-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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 &#8230; <a href="http://www.fabiotomio.com.br/blog/2009/04/06/amfrest-webservices-com-php-e-zend-framework-conceitos/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></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>6</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 &#8230; <a href="http://www.fabiotomio.com.br/blog/2009/01/17/entendo-a-estrutura-de-diretorios-do-rails/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></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-2-2-no-mac-leopard/</link>
		<comments>http://www.fabiotomio.com.br/blog/2009/01/14/ruby-on-rails-2-2-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, &#8230; <a href="http://www.fabiotomio.com.br/blog/2009/01/14/ruby-on-rails-2-2-no-mac-leopard/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></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.br/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.br/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">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.br/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"> sudo sh</pre>
<p style="text-align: center;">Vamos atualizar o gem utilizando o comando gem update &#8211;system</p>
<pre class="php"> 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.br/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.br/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">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.br/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"> gem install 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.br/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"> 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"> 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.br/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"> 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.br/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.br/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">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.br/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.br/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" 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">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">gem -v
ruby -v</pre>
<p><strong>Atualizando versões e instalando o Rails e suporte ao MySQL do Ruby</strong></p>
<pre class="php">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">gem -v
ruby -v
rails -v</pre>
<p><strong>Testando</strong></p>
<pre class="php">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-2-2-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 &#8230; <a href="http://www.fabiotomio.com.br/blog/2009/01/06/ruby-on-rails-22-e-mysql-no-leopard/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></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 style="text-align: center;"><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.br/blog/wp-content/uploads/2009/01/install-mysql-on-leopard-02-300x230.png" alt="install-mysql-on-leopard-02" /></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.br/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.br/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.br/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.br/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.br/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.br/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.br/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.br/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.br/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.br/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.br/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.br/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.br/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.br/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.br/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>12</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 &#8230; <a href="http://www.fabiotomio.com.br/blog/2008/12/21/iniciando-em-ruby-on-rails/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></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 &#8230; <a href="http://www.fabiotomio.com.br/blog/2008/12/20/db2-para-mac-osx/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></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 é &#8230; <a href="http://www.fabiotomio.com.br/blog/2008/10/27/o-que-e-um-banco-de-dados/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></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. &#8230; <a href="http://www.fabiotomio.com.br/blog/2008/09/03/bate-papo-sobre-tv-digital/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></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 &#8230; <a href="http://www.fabiotomio.com.br/blog/2008/08/20/streaming-parte-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></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>
		<item>
		<title>Perceptron</title>
		<link>http://www.fabiotomio.com.br/blog/2008/08/20/perceptron/</link>
		<comments>http://www.fabiotomio.com.br/blog/2008/08/20/perceptron/#comments</comments>
		<pubDate>Wed, 20 Aug 2008 17:15:54 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[Estudando]]></category>
		<category><![CDATA[Inteligência Artificial]]></category>
		<category><![CDATA[Softwares]]></category>
		<category><![CDATA[artificial]]></category>
		<category><![CDATA[inteligência]]></category>
		<category><![CDATA[neurônio]]></category>
		<category><![CDATA[perceptron]]></category>

		<guid isPermaLink="false">http://fabiotomio.wordpress.com/?p=49</guid>
		<description><![CDATA[Tudo muito corrido&#8230; mas vamos que vamos&#8230; Dando continuidade aos estudos de Inteligência Artificial&#8230;. dessa vez vou publicar o Perceptron, tendo como base o neurônio no post anterior, efetuando alguns cálculos para isolarmos a Limiar, com isso chegamos a um &#8230; <a href="http://www.fabiotomio.com.br/blog/2008/08/20/perceptron/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Tudo muito corrido&#8230; mas vamos que vamos&#8230;</p>
<p>Dando continuidade aos estudos de Inteligência Artificial&#8230;. dessa vez vou publicar o Perceptron, tendo como base o neurônio no post anterior, efetuando alguns cálculos para isolarmos a Limiar, com isso chegamos a um outro modelo de neurônio chamado Perceptron, não vou entrar em detalhes com relação aos cálculos, o objetivo aqui é demonstrar a prática do funcionamento do Perceptron, pra isso abaixo segue a aplicação desenvolvida por mim utilizando o Adobe Flex 3.</p>
<p>Qual a diferença desse Perceptron para o Neurônio postado anteriormente? O Perceptron através de cálculos consegue calcular seus pesos (Weight) para que sua saída seja a saída pretendida, contrário do neurônio que mantinha todos os seus parâmetros fixos.</p>
<p>Não sei se fui claro, para mais detalhes;</p>
<p><a href="http://en.wikipedia.org/wiki/Perceptron" target="_blank">http://en.wikipedia.org/wiki/Perceptron</a></p>
<p><a href="http://pt.wikipedia.org/wiki/Rede_neural" target="_blank">http://pt.wikipedia.org/wiki/Rede_neural</a></p>
<p>O Perceptron abaixo foi desenvolvido com o objetivo de se comportar como funções lógicas conhecidas.</p>
<p>OBS: O XOR não pode ser resolvido através de um único Perceptron por não ser linearmente divisível, ou seja é necessário no mínimo dois Perceptrons para que consigamos convergir.</p>
<p>Abraços a todos, até mais&#8230;.</p>
<p><span style="text-decoration:line-through;"><a href="http://www.fabiotomio.com/perceptron/" target="_blank">http://www.fabiotomio.com/perceptron/</a></span></p>
<p><a href="http://www.fabiotomio.com/projects/perceptron/" target="_blank">http://www.fabiotomio.com/projects/perceptron/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2008/08/20/perceptron/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Neurônio artificial</title>
		<link>http://www.fabiotomio.com.br/blog/2008/08/01/neuronio-artificial/</link>
		<comments>http://www.fabiotomio.com.br/blog/2008/08/01/neuronio-artificial/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 03:55:59 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[Inteligência Artificial]]></category>
		<category><![CDATA[Softwares]]></category>
		<category><![CDATA[a.i.]]></category>
		<category><![CDATA[artificial intelligence]]></category>
		<category><![CDATA[i.a.]]></category>
		<category><![CDATA[neuronio artificial]]></category>

		<guid isPermaLink="false">http://fabiotomio.wordpress.com/?p=47</guid>
		<description><![CDATA[Desenvolvi um neurônio artificial com 3 entradas (dentritos) e a saída (axônio)&#8230;. Para quem está estudando Inteligência Artificial/Redes neurais é uma boa&#8230;. Semana que vem vou precisar desenvolver um algorítimo que calcule os pesos e a limiar, em outras palavras, &#8230; <a href="http://www.fabiotomio.com.br/blog/2008/08/01/neuronio-artificial/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Desenvolvi um neurônio artificial com 3 entradas (dentritos) e a saída (axônio)&#8230;.</p>
<p>Para quem está estudando Inteligência Artificial/Redes neurais é uma boa&#8230;.</p>
<p>Semana que vem vou precisar desenvolver um algorítimo que calcule os pesos e a limiar, em outras palavras, um neurônio que &#8220;aprende&#8221;&#8230;</p>
<p>Posto aqui também o resultado&#8230;..</p>
<p>Abraços e até mais.</p>
<p><span style="text-decoration:line-through;">Segue o link: <a href="http://www.fabiotomio.com/neuronio/" target="_blank">http://www.fabiotomio.com/neuronio/</a></span></p>
<p>Segue o link: <a href="http://www.fabiotomio.com/projects/neuronio/" target="_blank">http://www.fabiotomio.com/projects/neuronio/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2008/08/01/neuronio-artificial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP e o DB2 (ibm_db2)</title>
		<link>http://www.fabiotomio.com.br/blog/2008/07/24/pear-pecl-ibm_db2/</link>
		<comments>http://www.fabiotomio.com.br/blog/2008/07/24/pear-pecl-ibm_db2/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 21:31:53 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[DB2]]></category>
		<category><![CDATA[ibm_db2]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zend core]]></category>

		<guid isPermaLink="false">http://fabiotomio.wordpress.com/?p=37</guid>
		<description><![CDATA[Como fazer o PHP acessar o Banco de Dados DB2? Uma saida saria utilizar o Zend Core for IBM, que é uma solução que combina o Apache, PHP, etc, e disponibiliza acesso ao DB2, tive problemas com ele com relação &#8230; <a href="http://www.fabiotomio.com.br/blog/2008/07/24/pear-pecl-ibm_db2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Como fazer o PHP acessar o Banco de Dados DB2?</p>
<p>Uma saida saria utilizar o Zend Core for IBM, que é uma solução que combina o Apache, PHP, etc, e disponibiliza acesso ao DB2, tive problemas com ele com relação a flexibilidade, precisei instalar o php-pgsql e não consegui, isso porque é o Zend Core que gerencia os pacotes relacionados ao PHP e ao Apache, disponibilizando um utilitário que acessando um repositório próprio, com pacotes homologados.</p>
<p>A saída foi utilizar uma biblioteca do PEAR. A princípio a sua instalação era pra ser fácil, mas levei um pouco de tempo pra conseguir instalar a primeira vez.</p>
<p><strong>A primeira forma seria subir o pear:</strong></p>
<p>Executar o comando -&gt; <em>yum install pear</em></p>
<p>e em seguida utilizar o comando -&gt; pecl install ibm_db2</p>
<p>Comigo não funcionou em nenhuma das vezes que eu tentei instalar.</p>
<p><strong>A segunda forma seria compilar e instalar manualmente.</strong></p>
<p>Instalar o php-devel -&gt; <em>yum install php-devel gcc</em> (precisa também do gcc)</p>
<p>Baixar o pacote disponível em http://pecl.php.net/package/ibm_db2 -&gt; <em>wget http://pecl.php.net/get/ibm_db2-1.6.6.tgz</em></p>
<p>Descompactar -&gt; <em>tar -zxvf ibm_db2-1.6.6.tgz</em></p>
<p>Entrar na pasta ibm_db2-1.6.6 -&gt; <em>cd ibm_db2-1.6.6</em></p>
<p>Executar o comando -&gt; <em>phpize</em></p>
<p>Executar o comando -&gt; <em>./configure &#8211;with-IBM_DB2=/opt/ibm/db2/V9.5/</em></p>
<p>Executar o comando -&gt; <em>make</em></p>
<p>Executar o comando -&gt; <em>make install</em></p>
<p>Editar o php.ini -&gt; <em>vi /etc/php.ini</em><br />
<em>e adicionar as linhas abaixo:<br />
extension=ibm_db2.so<br />
ibm_db2.instance_name=db2inst1</em></p>
<p>Como comentei acima eu não consegui utilizar o pecl para instalar a biblioteca, somente compilando e instalando manualmente, qualquer dúvida é só enviar entrar em contato.</p>
<p>Passo a passo executado em Linux <a href="http://www.centos.org/" target="_blank">CentOS</a> 5.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2008/07/24/pear-pecl-ibm_db2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Resolver com tecnologia?</title>
		<link>http://www.fabiotomio.com.br/blog/2008/07/07/resolver-com-tecnologia/</link>
		<comments>http://www.fabiotomio.com.br/blog/2008/07/07/resolver-com-tecnologia/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 12:28:01 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[Para Refletir]]></category>
		<category><![CDATA[problemas]]></category>
		<category><![CDATA[resolução]]></category>
		<category><![CDATA[ti]]></category>

		<guid isPermaLink="false">http://fabiotomio.wordpress.com/?p=29</guid>
		<description><![CDATA[Tecnologia não soluciona todos os problemas! (&#8230;) é preciso compreentender que nem todos os problemas serão resolvidos com tecnologia. O CEO ainda relembra o conselho de um CIO com quem trabalhou na Cedant, Dave McNichols: “Para um homem com um &#8230; <a href="http://www.fabiotomio.com.br/blog/2008/07/07/resolver-com-tecnologia/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Tecnologia não soluciona todos os problemas!</p>
<p>(&#8230;)</p>
<p>é preciso compreentender que nem todos os problemas serão resolvidos com tecnologia.</p>
<p>O CEO ainda relembra o conselho de um CIO com quem trabalhou na Cedant, Dave McNichols: “Para um homem com um martelo, tudo parece prego. As pessoas de tecnologia tentarão resolver todos os problemas com tecnologia. Algumas vezes, alguém pode resolver um problema que você estava analisando, apenas de forma pragmática. Esteja focado em como resolver o problema e não como usar a TI para resolver o problema”.</p>
<p>(&#8230;)</p>
<p>fonte: <a href="http://cio.uol.com.br/carreira/2008/06/30/de-programador-a-ceo/" target="_blank">http://cio.uol.com.br/carreira/2008/06/30/de-programador-a-ceo/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2008/07/07/resolver-com-tecnologia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gestão do Conhecimento</title>
		<link>http://www.fabiotomio.com.br/blog/2008/07/03/gestao-do-conhecimento/</link>
		<comments>http://www.fabiotomio.com.br/blog/2008/07/03/gestao-do-conhecimento/#comments</comments>
		<pubDate>Thu, 03 Jul 2008 04:34:30 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[Pausa para o café]]></category>
		<category><![CDATA[conhecimento]]></category>
		<category><![CDATA[desenvolvimento pessoal]]></category>
		<category><![CDATA[gestão do conhecimento]]></category>

		<guid isPermaLink="false">http://fabiotomio.wordpress.com/?p=24</guid>
		<description><![CDATA[Organizando os documentos no computador depois de mais um módulo concluído na faculdade, encontrei um texto que escreví em 2006 para um trabalho da matéria de Desenvolvimento Pessoal. Achei interessante publicar aqui&#8230; Segue abaixo o texto&#8230; Que tal dar uma &#8230; <a href="http://www.fabiotomio.com.br/blog/2008/07/03/gestao-do-conhecimento/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Organizando os documentos no computador depois de mais um módulo concluído na faculdade, encontrei um texto que escreví em 2006 para um trabalho da matéria de Desenvolvimento Pessoal. Achei interessante publicar aqui&#8230;</p>
<p>Segue abaixo o texto&#8230; Que tal dar uma refletida?</p>
<p>Abraços a todos&#8230;.</p>
<p style="text-align:center;"><strong>Desenvolvimeno Profissional e Pessoal</strong></p>
<p>Em tempos atuais as competências estão muito mais rígidas se comparado com anos passados, a evolução dos sistemas de comunicação com o desenvolvimento da TI, a globalização mundial, a abertura dos mercados, etc. Fatores estes que fazem com que empresas busquem profissionais altamente qualificados e especializados não somente em funções específicas mas sim em diversas funções, fato esse que impulsiona tantos as empresas quanto os profissionais a buscarem cada vez mais conhecimento. É sobre essa competência que procuramos abordar com esse texto.<br />
O conceito da Gestão do Conhecimento tem sido criado, divulgado e publicado. É um campo em rápida evolução, resultado da multidisciplinaridade resultante da interação entre as áreas de Gestão de Pessoas e da Mudança, Desenvolvimento Organizacional, Tecnologia da Informação e outros.<br />
A Gestão do Conhecimento é o processo pelo qual a organização gera riqueza a partir do seu conhecimento, explícito ou tácito, que norteia o seu capital intelectual. Conceito que está caminhando rapidamente para ser prioridade máxima das organizações, em função da urgência e necessidade de diferenciação, sendo o conhecimento a fonte clara de competitividade duradoura. Ou num ponto de vista voltada mais para o profissional, uma qualidade relevante dos profissionais da atualidade é a inquietude relativa ao aprendizado. Manter o “coração de estudante” batendo durante toda a vida passou a ser fundamental para o desenvolvimento profissional e para a sobrevivência no mercado (Emilia Lima Leme Diretora da Mell Coaching &amp; Desenvolvimento).<br />
Por esses motivos entendemos que uma competência muito significativa para um profissional (não esquecendo das competências básicas necessárias) é a Gestão do Conhecimento, uma característica para profissionais que buscam um diferencial significativo no mercado de trabalho atual.</p>
<p>Fábio Tomio</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2008/07/03/gestao-do-conhecimento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe Flex, RED5 e Streaming</title>
		<link>http://www.fabiotomio.com.br/blog/2008/06/25/adobe-flex-red5-e-streaming/</link>
		<comments>http://www.fabiotomio.com.br/blog/2008/06/25/adobe-flex-red5-e-streaming/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 02:28:07 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Softwares]]></category>
		<category><![CDATA[Streaming]]></category>
		<category><![CDATA[1080p]]></category>
		<category><![CDATA[adobe flex 3]]></category>
		<category><![CDATA[flash media server]]></category>
		<category><![CDATA[full hd]]></category>
		<category><![CDATA[HDV]]></category>
		<category><![CDATA[red5]]></category>
		<category><![CDATA[web cam]]></category>

		<guid isPermaLink="false">http://fabiotomio.wordpress.com/?p=15</guid>
		<description><![CDATA[Introdução Ainda lembro a minha primeira quase &#8220;transmissão&#8221; de um evento pela Internet, um festival de dublagem na minha cidade natal (litoral do Paraná) em meados de 1997/1998, o objetivo era enviar para o site do colégio imagens das apresentações. &#8230; <a href="http://www.fabiotomio.com.br/blog/2008/06/25/adobe-flex-red5-e-streaming/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>Introdução</strong></p>
<p>Ainda lembro a minha primeira quase &#8220;transmissão&#8221; de um evento pela Internet, um festival de dublagem na minha cidade natal (litoral do Paraná) em meados de 1997/1998, o objetivo era enviar para o site do colégio imagens das apresentações. Na época a conexão mais rápida era de 56Kbps, é isso mesmo, linha discada, um modem externo US. Robotics que se conectava com o PC pela porta paralela, um servidor Linux para compartilhamento da conexão. Conexões USB`s não eram muito utilizadas, a Web Cam utilizava a interface paralela e também a conexão do teclado, nem perto da qualidade da imagem das Web Cams atuais. Bom, com toda essa limitação tecnológica e os meus 15 anos o que consegui foi, fazer capturas das apresentações utilizando a Web Cam, (demorava um bocadinho), e com um programa FTP eu enviava essas imagens para o host onde o site do colégio estava hospedado. Só foi possível porque o software de captura da câmera podia ser configurada para capturar as imagens quando detectava movimento, e o software FTP possibilitava o agendamento de upload toda vez que um arquivo era modificado. Foi divertido, um desafio, que foi solucionado com o pouco conhecimento e os poucos recursos disponíveis na época.</p>
<p><strong>Por que tudo isso?</strong></p>
<p>Em um passeio para ir pegar café, e dar um out do computador pra respirar um pouco, fui informado que o próximo evento da empresa que será em setembro será transmitido pela Internet, e que a responsabilidade de levantar o Know How estava nas minhas mãos. Gostei, mais um desafio para ser superado, e mais conhecimento para ser adquirido. Voltei pra minha mesa já pensando em mil possibilidade e entendendo a complexidade de concretizar tudo isso.</p>
<p><strong>Realidade</strong></p>
<p>Muitas pessoas já pensaram, é fácil, mas vamos a realidade, fatos que devemos levar em consideração:</p>
<ul>
<li>A captura da imagens é feita em HD (High Quality), 1080p pra ser mais preciso;</li>
<li>O evento não tem um local fixo para acontecer;</li>
<li>Levar em consideração a possibilidade de envio de audio/vídeos simultâneos (vários &#8220;canais&#8221;);</li>
<li>Prever como enviar ao servidor de Streaming o conteúdo (acesso à Internet);</li>
<li>A mesa de corte utilizada não possui saida de vídeo em FireWire, somente em Y,B,R e SDI;</li>
<li>Custos tendendo a zero, principalmente no que se diz respeito à Infra-estrutura e Softwares.</li>
</ul>
<p><strong>Tecnologia</strong></p>
<p>Levando em consideração esses pontos semana passada, mais exatamente na quinta-feira comecei um estudo sobre transmissão de audio/vídeo utilizando FMS (Flash Media Server), já tinha visto a algum tempo o RED5 (<span class="a">osflash.org/<strong>red5</strong></span>) achei interessante pois é Open Source (custos reduzidos) e utilizando o Java, é possivel criar os serviços e mais, montar serviços que interajam com outras aplicações, interfaces, dispositivos, tudo que o Java possibilita, isso é interessante quando se precisa de flexibilidade, característica essa que o Open Source carrega no sangue.</p>
<p>Comecei o estudo, baixei sua versão para o MAC OSX, e instalei. Sua instalação no Mac é simples, não tive problemas, o RED5 vem com uns demos, todos funcionaram perfeitamente. Bom o servidor estava rodando, agora faltava a aplicação.</p>
<p>Para a construção das aplicações decidí utilizar o Adobe Flex 3, pois já desenvolvo aplicações com ele a algum tempo, isso facilita bastante =). Não achei muita documentação do RED5 e o Flex, foi dificil fazer com que a aplicação conversasse com o RED5, mas funcionou. Primeiramente tentei reescrever as classes que vieram nos exemplos do RED5 de (Flash) ActionScript2 para (Flex) ActionScript3, foi sinistro e frustrante, dai pesquisando um pouco mais, consegui somente a classe de conexão pro RED5 em ActionScript3 (<a href="http://www.vadus.de/uni/red5/AS_red5_Connection.zip" target="_blank">http://www.vadus.de/uni/red5/AS_red5_Connection.zip</a>). Foi aí que a conexão funcionou.</p>
<p><strong>Transmissão</strong></p>
<p>Com a conexão em pé era a hora de tentar enviar o vídeo, trabalhar com as classes Video, Camera, NetStream no Flex não foi tão complicado, o Google ajudou bastante, foi atravéz dele que cheguei ao site <a href="http://www.rafaeldohms.com.br/2007/04/16/transmitindo-um-evento-ao-vivo-com-fms-os-bastidores/pt/" target="_blank">www.rafaeldohms.com.br</a> muito bom o artigo, e o Source Code disponibilizado pelo Rafael me ajudou muuuuito. Utilizei o código do Rafael como base pra montagem da classe de envio de recepção de audio/vídeo.<br />
Mas faltava uma coisa ainda, o serviço no RED5 que ficaria responsável recebimento e distribuição do audio/vídeo. Tentei algumas vezes montar um novo serviço, sem sucesso. Foi então que tive a brilhante, ou nem tão brilhante idéia de utilizar o serviço da apicação demo. Um Chat com Vídeo que vem junto com o RED5. Depois de ler e re-ler o Java do serviço identifiquei o funcionamento do serviço e consegui enviar o conteúdo. Utilizei a própria interface do chat pra ver o resultado da transmissão. Faltava a última coisa agora, a parte de recepção do conteúdo. Essa não foi tão difícil, mais um pouco de leitura do Java do serviço do RED5 e, pronto, funcionando.</p>
<p><strong>Testes</strong></p>
<p>Testes de preformance e consumo de banda, na rede da minha casa, apontaram uma boa qualidade e um consumo de banda próximo a 250Kbps, isso efetuando a transmissão de uma camera (Web Cam) com audio. Mais testes, dessa vez na empresa, conectei uma camera de vídeo no meu note utilizando a interface FireWire, o sinal que estava sendo injetado era HDV, 60fps, [16:9]. O Flash Player não detectou o sinal, tive que configurar a camera pra DV, 60 fps, 16:9, menos qualidade, e o Flash Player detectou. Comecei as transmissões, não sei se é pelo fato da minha aplicação pegar a imagem gerada pela câmera e reduzir o tamanho dela, mas a imagem ficou bem ruim, o interlaçado quando o movimento era rápido, era mais do que visível. Fiz vários testes esperimentando reconfigurar o FPS da aplicação, o Bandwidth, a qualidade do vídeo, o Frame Interval, e quando cheguei a um resultado satisfatório, fui verificar a utilização da banda. É definitivamente não vai dar pra utilizar o RED5. Se fosse uma Web Cam as coisas já estariam resolvidas, mas como a realidade é outra, vou ter mais trabalho pela frente.</p>
<p><strong>Encoder</strong></p>
<p>Comecei pesquisas sobre a utilização de um Encoder no RED5 e ví que não é possivel a utilização de um.<br />
Vou seguir com o projeto e pesquisar agora o Flash Media Server (<a href="http://www.adobe.com/products/flashmediaserver/" target="_blank">Adobe</a>) e o Wonza Media Server (<a href="http://www.wowzamedia.com/" target="_blank">Wonza</a>) esses possibilitam a utilização de um Encoder.</p>
<p><strong>Código</strong></p>
<p>Vou disponibilizar o código das aplicações pro pessoal que precisar montar uma aplicação Flex utilizando recursos de audio/vídeo e o RED5, como por exemplo um software de Vídeo conferência. Eu montei a aplicação pra suportar vários streams, a qualidade é setada toda na aplicação, dando flexibilidade pra configurar como quizer.</p>
<p>Vai aqui o meu agradecimento ao Rafael por disponibilizar o conteúdo da aplicação dele, achei uma ótima iniciativa e seguindo este exemplo, também vou disponibilizar os códigos.</p>
<p>Abraços a todos&#8230;. qualquer dúvida estou a disposição&#8230;. <a href="mailto:fabiotomio@gmail.com">fabiotomio@gmail.com</a></p>
<p>Source Code</p>
<p><strong>Links:</strong></p>
<p><a href="http://osflash.org/red5" target="_blank">http://osflash.org/red5</a></p>
<p><a href="http://www.adobe.com/products/flashmediaserver/" target="_blank">http://www.adobe.com/products/flashmediaserver/</a></p>
<p><a href="http://www.rafaeldohms.com.br/pt/" target="_blank">http://www.rafaeldohms.com.br/pt/</a></p>
<p><a href="http://www.wowzamedia.com/" target="_self">http://www.wowzamedia.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2008/06/25/adobe-flex-red5-e-streaming/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bate-papo sobre e-Learning</title>
		<link>http://www.fabiotomio.com.br/blog/2008/06/13/bate-papo-sobre-e-learning/</link>
		<comments>http://www.fabiotomio.com.br/blog/2008/06/13/bate-papo-sobre-e-learning/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 12:05:05 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[Estudando]]></category>
		<category><![CDATA[asincrono]]></category>
		<category><![CDATA[e-learning]]></category>
		<category><![CDATA[sincrono]]></category>
		<category><![CDATA[tecnologia]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://fabiotomio.wordpress.com/?p=11</guid>
		<description><![CDATA[Tudo muito corrido, muitos trabalhos tanto na faculdade quanto no trabalho&#8230;. Apresentei ontem um trabalho em grupo na faculdade sobre e-Learning (Eu, Thiago Rosseto e Caroline Izabel) foi um bate papo rápido com o pessoal que sobrou na sala&#8230;.. (o &#8230; <a href="http://www.fabiotomio.com.br/blog/2008/06/13/bate-papo-sobre-e-learning/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Tudo muito corrido, muitos trabalhos tanto na faculdade quanto no trabalho&#8230;.<br />
Apresentei ontem um trabalho em grupo na faculdade sobre e-Learning (Eu, Thiago Rosseto e Caroline  Izabel) foi um bate papo rápido com o pessoal que sobrou na sala&#8230;.. (o pessoal não anda muito motivado), mas estamos lá firme e forte.</p>
<p>Bom por hoje é só, tenho q voltar ao trabalho, muuuuuitas coisas a fazer&#8230;..</p>
<p><a href="http://fabiotomio.files.wordpress.com/2008/06/apresentacao-gestao-de-pessoas.pdf">Apresentação</a></p>
<p>Abraços a todos e até mais.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2008/06/13/bate-papo-sobre-e-learning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conhecendo o DB2 Express-C</title>
		<link>http://www.fabiotomio.com.br/blog/2008/05/28/conhecendo-o-db2-express-c/</link>
		<comments>http://www.fabiotomio.com.br/blog/2008/05/28/conhecendo-o-db2-express-c/#comments</comments>
		<pubDate>Wed, 28 May 2008 21:01:18 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[DB2]]></category>

		<guid isPermaLink="false">http://fabiotomio.wordpress.com/?p=10</guid>
		<description><![CDATA[Olá pessoal segue abaixo o link do endereço do livro FREE Book- Getting Started with DB2 Express-C o qual foi traduzido e está disponível para download. http://www.ibm.com/developerworks/wikis/display/DB2/FREE+Book-+Getting+Started+with+DB2+Express-C Parabéns à equipe formada por: Andrea Rodacki, Caroline Beatriz Perlin e Wellington Sampaio &#8230; <a href="http://www.fabiotomio.com.br/blog/2008/05/28/conhecendo-o-db2-express-c/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal segue abaixo o link do endereço do livro <span class="pagetitle" style="text-decoration:none;margin:0;padding:0;"> FREE Book- Getting Started with DB2 Express-C o qual foi traduzido e está disponível para download.</span></p>
<p><span class="pagetitle" style="text-decoration:none;margin:0;padding:0;"><a href="http://www.ibm.com/developerworks/wikis/display/DB2/FREE+Book-+Getting+Started+with+DB2+Express-C" target="_blank">http://www.ibm.com/developerworks/wikis/display/DB2/FREE+Book-+Getting+Started+with+DB2+Express-C</a></span></p>
<p>Parabéns à equipe formada por:</p>
<p>Andrea Rodacki, Caroline Beatriz Perlin e Wellington Sampaio Martins;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2008/05/28/conhecendo-o-db2-express-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe Media Player</title>
		<link>http://www.fabiotomio.com.br/blog/2008/05/26/adobe-media-player/</link>
		<comments>http://www.fabiotomio.com.br/blog/2008/05/26/adobe-media-player/#comments</comments>
		<pubDate>Mon, 26 May 2008 05:58:45 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[Softwares]]></category>
		<category><![CDATA[adobe media player]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[player]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://fabiotomio.wordpress.com/?p=8</guid>
		<description><![CDATA[Não, não é mais um player comum! Primeiro começa com sua tecnologia de desenvolvimento, ele foi desenvolvido com o Adobe Air, tive que instalar o suporte ao meu Mac pro Air, o qual foi feito automaticamente, em seguida veio um &#8230; <a href="http://www.fabiotomio.com.br/blog/2008/05/26/adobe-media-player/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Não, não é mais um player comum! Primeiro começa com sua tecnologia de desenvolvimento, ele foi desenvolvido com o Adobe Air, tive que instalar o suporte ao meu Mac pro Air, o qual foi feito automaticamente, em seguida veio um Wizard bem simples perguntando o destino da instalação e algumas coisinhas mais. Logo pensei que teria que me inscrever ou me cadastrar, mas isso não foi necessário. Ao final de instalação ele abriu automaticamente eee&#8230;.</p>
<p>É ele funciona muito bem, meu primeiro vídeo foi sobre o Photoshop no canal da Adobe, a qualidade da resolução é muuuito boa se comparado com os vídeos que estamos acostumados a assistir na Internet.</p>
<p>Minha reclamação nessa primeira impressão que tive é que alguns dos canais não disponiblizam os vídeos para o nosso país (MTV News &#8211; CSI &#8211; Survivor &#8211; MTV Cribs), isso é realmente muito frustrante, tentei vários, alguns tem um aviso em texto, alguns tem uma voz falando que não está disponível.</p>
<p>Pela qualidade do vídeo e pelo tempo que foi preciso pra armazenar o buffer mínimo, acho que a Adobe esta trabalhando com o novo Flash Server.</p>
<p>Então, minha primeira impressão foi: bom aplicativo, seguindo as novas tecnologias da Adobe o Air, um player que possui vários canais e programas, onde a navegação é simples e intuitiva, a qualidade do vídeo é boa, dá até pra assistir em fullscreem sem a imagem ficar horrível, o problema são os conteúdos, não estão todos disponíveis para o Brasil. Tem bastaaaante vídeos.</p>
<p>Esses foram meus primeirs 20 minutos no Adobe Media Player&#8230;..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2008/05/26/adobe-media-player/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Análise estruturada</title>
		<link>http://www.fabiotomio.com.br/blog/2008/05/26/analise-estruturada/</link>
		<comments>http://www.fabiotomio.com.br/blog/2008/05/26/analise-estruturada/#comments</comments>
		<pubDate>Mon, 26 May 2008 04:01:26 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[Estudando]]></category>
		<category><![CDATA[analise de sistemas]]></category>
		<category><![CDATA[analise estruturada]]></category>
		<category><![CDATA[projeto de sistemas]]></category>

		<guid isPermaLink="false">http://fabiotomio.wordpress.com/?p=5</guid>
		<description><![CDATA[Após trabalhar num feriado de quita-feira, trabalhar sábado, e um domingo me preparando e preparando a apresentação da matéria de Análise e Projeto de Sistemas de Informação, a bateria acabou&#8230;. Amanhã segunda e começa tudo de novo&#8230; Vou postar o &#8230; <a href="http://www.fabiotomio.com.br/blog/2008/05/26/analise-estruturada/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Após trabalhar num feriado de quita-feira, trabalhar sábado, e um domingo me preparando e preparando a apresentação da matéria de Análise e Projeto de Sistemas de Informação, a bateria acabou&#8230;.</p>
<p>Amanhã segunda e começa tudo de novo&#8230;</p>
<p>Vou postar  o <a title="Análise Estruturada" href="http://fabiotomio.files.wordpress.com/2008/05/analise-estruturada.pdf" target="_blank">trabalho do meu grupo</a> caso alguém precise algum dia do material, ou queria saber sobre Análise Estruturada.</p>
<p>Vou ver se posto ainda alguma coisa sobre Flex ainda hoje.</p>
<p>Abraços e uma ótima semana a todos que passam por aqui&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2008/05/26/analise-estruturada/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Workaholic, eu?</title>
		<link>http://www.fabiotomio.com.br/blog/2008/05/23/workaholic-ou-worklover/</link>
		<comments>http://www.fabiotomio.com.br/blog/2008/05/23/workaholic-ou-worklover/#comments</comments>
		<pubDate>Fri, 23 May 2008 14:31:33 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[Pausa para o café]]></category>
		<category><![CDATA[trabalho]]></category>
		<category><![CDATA[workaholic]]></category>
		<category><![CDATA[worklover]]></category>

		<guid isPermaLink="false">http://fabiotomio.wordpress.com/?p=4</guid>
		<description><![CDATA[Olá pessoal, bom dia.. Após ler uma artigo muito interessante no site da Catho (aqui) eis que estou aqui. Meus amigos sempre pegaram no meu pé com relação ao trabalho, e após esse artigo paro pra refletir&#8230;.. Workaholic? eu? será? &#8230; <a href="http://www.fabiotomio.com.br/blog/2008/05/23/workaholic-ou-worklover/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal, bom dia..<br />
Após ler uma artigo muito interessante no site da Catho (<a title="Workaholic ou Worklover" href="http://www.catho.com.br/jcs/inputer_view.phtml?id=9302" target="_self">aqui</a>) eis que estou aqui.<br />
Meus amigos sempre pegaram no meu pé com relação ao trabalho, e após esse artigo paro pra refletir&#8230;..<br />
Workaholic? eu? será?<br />
Primeiramente com base no artigo vamos definir uma pessoa Workaholic</p>
<ul>
<li>Portador de uma patologia específica;</li>
<li>Possui um distúrbio psíquico;</li>
<li>Toda perspectiva de realização está no trabalho;</li>
<li>Seu mundo é o seu trabalho;</li>
<li>Sua existência é para o trabalho;</li>
</ul>
<p>Preocupante essa definição em&#8230;<br />
Indo um pouco mais longe, na wikipedia (<a href="http://pt.wikipedia.org/wiki/Workaholic" target="_blank">aqui</a>), não lí atentamente, foi apenas uma <em>zapeada</em>, mas ví alguma coisa com mau-humorado, impotência e poucos amigos&#8230;..</p>
<p>Definitivamente, chego a uma conclusão: Não sou Workaholic, apenas gosto muito do que faço, podemos definir o meu relacionamento com o trabalho como algo saudável&#8230;.<br />
Complicado só quando há uma desmotivação&#8230;. mas aí já entramos em um outro assunto que eu comento depois&#8230;</p>
<p>Abraços aos Worklovers que nem eu&#8230;</p>
<p>Podiam criar um dia internacional aos Worklovers&#8230; que tal a idéia?</p>
<p>Mas é isso&#8230;. de volta a realidade e ao trabalho&#8230;.</p>
<p>Até a próxima&#8230;..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2008/05/23/workaholic-ou-worklover/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Start</title>
		<link>http://www.fabiotomio.com.br/blog/2008/05/19/the-start/</link>
		<comments>http://www.fabiotomio.com.br/blog/2008/05/19/the-start/#comments</comments>
		<pubDate>Mon, 19 May 2008 17:38:58 +0000</pubDate>
		<dc:creator>Fábio Tomio</dc:creator>
				<category><![CDATA[Start]]></category>
		<category><![CDATA[inicio]]></category>
		<category><![CDATA[start. comecando]]></category>

		<guid isPermaLink="false">http://fabiotomio.wordpress.com/?p=3</guid>
		<description><![CDATA[Welcome. Start the blog. =)]]></description>
			<content:encoded><![CDATA[<p>Welcome.</p>
<p>Start the blog. =)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabiotomio.com.br/blog/2008/05/19/the-start/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
