Mostrando postagens com marcador apache. Mostrar todas as postagens
Mostrando postagens com marcador apache. Mostrar todas as postagens

sexta-feira, março 13, 2009

Quer começar a programar em nuvem? Veja aqui as opções!

No artigo chamado Cloud Computing - Programando nas nuvens, explicamos um pouco sobre essa nova tendência na área de desenvolvimento de sistemas, além de explicar um pouco a respeito sobre os conceitos relacionados, bem como quem atualmente está investindo na área. Sendo assim, nesse post pretendo abordar uma nova vertente da Cloud Computing que tem um potencial de crescimento significativo, o desenvolvimento para Sistemas Operacionais em nuvem. Veja algumas alternativas para quem quer começar a "andar nas nuvens".

Windows Azure



Sem dúvida um dos assuntos mais comentados a respeito do desenvolvimento de S.O rodando na nuvem, foi a respeito da inclusão da Migrosoft nesse mercado através de sua nova plataforma para criar e executar aplicações web, chamada Windows Azure. Suas vantagens principais estão no uso de produtos conhecidos como o MS SQL Server que recebeu sua versão online batizada de SQL Services, o Visual Studio 2008 já com algumas ferramentas incorporadas para o desenvolvimento em Cloud Computing, além de integração com a série Live Services, um conjunto de serviços e blocos construtivos que podem ser usados na construção de web apps. Entretanto, o Windows Azure ainda está em fase beta e atualmente só é compátivel com aplicações criadas usando o .NET Framework. Quem estiver interessado em conhecer melhor o sistema pode dar uma olhada na versão beta localizada na Community Technology Preview.

Google App Engine



Atualmente quando se fala em cloud computing, é inevitável pensar no Google com todos os seus serviços web como Docs, Calendar, Gmail, Reader, etc..Tanto como é inevitável a entrada da empresa em um projeto tão interessante quanto o desenvolvimento de S.O para nuvem. A aposta do Google nessa área vem na forma do Google App Engine, atualmente gratuíto em sua fase Beta, ele disponibiliza 500MB em armazenamento para os usuários que segundo o google, em conjunto com o poder de processamento destinado ao recurso, são capazes de suportar sites de até 5 milhões de page views mensais. Atualmente, ele encontra-se entre os produtos mais limitados quanto à outras plataformas em nuvem, oferecendo apenas a possibilidade de desenvolver aplicativos usando a linguagem Python e banco de dados em DataStore, versão derivada do banco de dados Big Table, usado internamente na empresa. A estimativa é que futuramente a empresa lance versões pagas do produto com maiores recursos.Quem quiser conferir o Google App Engine e baixar o SDK, é só acessar a área reservada ao produto no website do Google.

EyeOS



O EyeOS é o mais novo candidato a ser o Linux da Cloud Computing. Trata-se de um projeto de software livre iniciado em 2005 por Pau Garcia-milá e que já abrange comunidades de desenvolvedores operando em 9 países. Apesar de não ser considerado um S.O em essência, por não permitir interação direta com o hardware, ele roda sobre Apache e PHP e permite ao desenvolvedor criar e executar aplicações web facilmente. Entrando no site do projeto, é possível baixar o kit de ferramentas (SDK) ou testar o sistema online.


quinta-feira, setembro 25, 2008

Publicando RSS com PHP e MYSQL

Se você ainda não sabe o que é RSS, dê uma lida no post RSS e asp.net parte I , que você encontrará os conceitos introdutórios sobre o tema. 


1. Introdução


Para que qualquer site possa servir RSS, é necessário que ele forneça ao programa leitor, um arquivo XML, contendo os dados, pois RSS, como já sabemos, é nada mais que um arquivo XML que segue uma padronização da estrutura específica. Podemos fornecer esse XML de duas formas, ou através de um arquivo estático XML propriamente dito salvo em nosso servidor, ou por meio de uma página PHP que pode gerar esse XML dinamicamente para nós. No nosso caso vamos gerar por meio de uma página PHP.



Antes de partirmos para a feitura da página, precisamos antes guardar as informações que publicaremos no RSS em algum lugar. Na informática, lugar de armazenar informações é em banco de dados. No nosso caso usaremos o banco open-source MySQL, disponível para download em http://www.mysql.com.


2. Criando o banco de dados


A estrutura do arquivo RSS é bem definida. Temos as seguintes entidades Channel e Item, que possuem a seguinte estrutura e se relacionam da seguinte forma:



O script para criação dessa estrutura é este:


SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

CREATE SCHEMA IF NOT EXISTS `RSS` ;
USE `RSS`;

-- -----------------------------------------------------
-- Table `RSS`.`Channel`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `RSS`.`Channel` (
  `idChannel` INT NOT NULL AUTO_INCREMENT ,
  `title` VARCHAR(255) NULL DEFAULT NULL ,
  `link` VARCHAR(255) NULL DEFAULT NULL ,
  `description` TEXT NULL DEFAULT NULL ,
  PRIMARY KEY (`idChannel`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `RSS`.`Item`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `RSS`.`Item` (
  `idItem` INT NOT NULL AUTO_INCREMENT ,
  `title` VARCHAR(255) NULL DEFAULT NULL ,
  `link` VARCHAR(255) NULL DEFAULT NULL ,
  `description` TEXT NULL DEFAULT NULL ,
  `idChannel` INT NULL DEFAULT NULL ,
  PRIMARY KEY (`idItem`) ,
  CONSTRAINT `fk_Item_Channel`
    FOREIGN KEY (`idChannel` )
    REFERENCES `RSS`.`Channel` (`idChannel` )
    ON DELETE RESTRICT
    ON UPDATE CASCADE)
ENGINE = InnoDB;

CREATE INDEX fk_Item_Channel ON `RSS`.`Item` (`idChannel` ASC) ;



SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

Você também pode baixá-lo na integra aqui.


Para excecutar o script de criação, podemos abrir o prompt de comando e simplesmente digitarmos:


shell> mysql < arquivo_texto


Também podemos abrir o client mysql e digirtarmos:


mysql> source filename


O client fará tudo de forma automatizada e teremos nosso banco de dados criado.


3. Criando a página PHP para geração do RSS


A página PHP gerará primeiro uma string contendo todo o XML, depois enviará para o leitor de RSS o resultado. Segue abaixo o código fonte da página PHP:
<?php
//criando cabeçalho do arquivo
$xml = '<?xml version="1.0" encoding="iso-8859-1"?>'."\n";
$xml .= '<rss version="2.0">'."\n";

//setando dados da conexao e do banco voce deve substituir pelos seus dados de conexão
$host = "mysql.test.com";
$user = "usuario";
$pass = "senha";
$db = "RSS";

//fazendo a conexão com o banco de dados que contem os dados RSS
mysql_connect($host, $user, $pass);
mysql_select_db($db);

//pegando dados do channel no banco
$sql = "SELECT idChannel, title, description, link FROM Channel ORDER BY idChannel DESC";
$reschan = mysql_query($sql);

//enquanto ainda houver dados do channelm executar codigo dentro do while
while ($rowchan = mysql_fetch_assoc($reschan))
{
    //abrindo tag do Channel
    // obs: \n = nova linha   
    $xml .= '<channel>'."\n";
   
    //formatando os dados nas tags rss do Channel   
    $xml .= '<title>'.htmlspecialchars($rowchan['title']).'</title>'."\n";
    $xml .= '<description>'.htmlspecialchars($rowchan['description']).'</description>'."\n";
    $xml .= '<link>'.htmlspecialchars($rowchan['link']).'</link>'."\n";
   
    //pegando dados dos Itens do Channel no banco de dados
    $sql = "SELECT title, link, description FROM Item WHERE idChannel = ".$rowchan['idChannel']." ORDER BY idItem DESC";
    $result = mysql_query($sql);
   
    //enquanto ainda houver itens no banco, executar codigo dentro do while
    while ($row = mysql_fetch_assoc($result))
    {
        //formatando dados do item nas tags RSS
        $xml .= '<item>'."\n";
        $xml .= '<title>'.htmlspecialchars($row['title']).'</title>'."\n";
        $xml .= '<description>'.htmlspecialchars($row['description']).'</description>'."\n";
        $xml .= '<link>'.htmlspecialchars($row['link']).'</link>'."\n";
        $xml .= '</item>'."\n";
    }
   
    //fechando tag do channel
    $xml .= '</channel>'."\n"; 
}

//fechando a tag rss
$xml .= '</rss>';

//retornando todo o xml pro leitor de rss do usuário
echo $xml;
?>
O código fonte acima pode ser baixado aqui. Salve a página PHP em seu servidor PHP e pronto! Bastará colocar o endereço da página no seu leitor de RSS e você verá que funciona!


4. Testando


Para testar o código da página PHP, fizemos um exemplo que você pode ver aqui. Se tudo der certo ao vizualizar no  Firefox você verá uma página semelhante a essa:




Por Solleon Menezes