terça-feira, 20 de novembro de 2007
terça-feira, 13 de novembro de 2007
OpenSocial
OpenSocial é um conjunto de 3 APIs do google, desenvolvidas com o intuíto de integrar redes sociais.A idéia do google é prover uma interface comum para desenvolvedores e redes sociais.
Principais Funções:
- Perfil da Informação (dados de usuários)
- Atividades (coisas que acontecem, Notícias, Feeds, tipos de coisas)
- Informação sobre amigos (gráfico social)
O desenvolvimento deste conjunto de APIs foi uma boa estratégia adotada pelo Google como tentativa deconter o crescimento do Facebook (rede social concorrente, na qual a Microsoft é sócia).Facebook requer uso de FBML (linguagem proprietária desenvolvida por eles) por razões de segurança,mas por FBML ser proprietário, seu código é praticamente inutilizado fora do Facebook, ao contrário do OpenSocialque utiliza de HTML e Javascript.
As principais redes sociais parceiras são:
Orkut, Salesforce, LinkedIn, Ning, Hi5,Plaxo, Friendster, Viadeo e Oracle.Entre os desenvolvedores incluem iLike, RockYou e Slide.
O Orkut já possui uma Sandbox, para os que quiserem começar a desenvolver gadgets!
As APIs são: People Data API, Activities Data API e Persistence Data API. E envolvem:
Métodos de autenticação (AuthSub proxy authentication).
A url gerada é tipo esta:
Os parâmetros são
- scope
Indica que a aplicação está requisitando uma token para accessar o OpenSocial People feeds.
- session
Indica se a token returnada pode ser trocada para multi-uso (session) token.
- secure
Indica se o Client está requerindo uma token segura.
- next
URL da página que o Google deve redirecionar os usuários após a autenticação.
ClientLogin username/password authentication
https://www.google.com/accounts/ClientLogin
Deve ser enviado usando o método POST.
Parâmetros:
Email do usuário
- Passwd
Password do usuário
Recuperação de entradas Persistentes
<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom'><id>http://sandbox.orkut.com:80/feeds/apps/02864641990088926753/persistence/global</id><updated>2007-10-30T20:53:20.086Z</updated><title>Persistence</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sandbox.orkut.com:80/feeds/apps/02864641990088926753/persistence/global'/><link rel='http://schemas.google.com/g/2005#post' type='application/atom+xml' href='http://sandbox.orkut.com:80/feeds/apps/02864641990088926753/persistence/global'/><link rel='self' type='application/atom+xml' href='http://sandbox.orkut.com:80/feeds/apps/02864641990088926753/persistence/global'/><generator version='1.0' uri='/feeds'>Orkut</generator><entry> <id>http://sandbox.orkut.com:80/feeds/apps/02864641990088926753/persistence/global/somekey</id> <title>somekey</title> <content>somevalue</content> <link rel='self' type='application/atom+xml' href='http://sandbox.orkut.com:80/feeds/apps/02864641990088926753/persistence/global/somekey'/> <link rel='edit' type='application/atom+xml' href='http://sandbox.orkut.com:80/feeds/apps/02864641990088926753/persistence/global/somekey'/></entry></feed>
segunda-feira, 12 de novembro de 2007
terça-feira, 23 de outubro de 2007
Análise de Loja Virtual
http://www.magazineluiza.com.br
Vantagens:
- Interface pouco carregada
(barra superior com seções
abaixo produtos em promoção e mais abaixo outros produtos...)
- O carrinho de compras é visível a todo momento
- auto demostração de produtos de forma muito bem feita (como uma apresentação de slides)
- Dicas relacionadas ao produto. Ex impressora: O QUE É DPI?
TIPOS DE IMPRESSÃO.
COMO FUNCIONA O CARTUCHO DE TINTA? - Credibilidade e Know-How desde 1996
- Suporte on-line
Desvantagens:
- Falta avaliação dos consumidores e comentários.
- Falta ordenar produtos por avaliação média dos consumidores
Conclusão:
O site do Magazine Luiza é um dos melhores sites de comércio eletrônico brasileiro e apresenta muito mais vantagens do que desvantagens, além disso os preços são muito bons =)
Apesar de tudo, poderiam ser implementadas áreas para postagem de comentários sobre os produtos, para ajudar na hora da compra. Também poderia oferecer o recurso de ordenação de produtos por nota da avaliação dos consumidores.
Concluindo, vejo a Magazine Luiza como uma loja que todos internautas devem consultar antes de fazer as compras, por ser uma das melhores da internet. Já comprei muitos produtos lá e recomendo.
Boas Compras!!!!
sábado, 13 de outubro de 2007
$cod=$_POST['cod'];
$titulo=$_POST['titulo']; //Dados recebidos por POST
$autor=$_POST['autor'];
$preco=$_POST['preco'];
//Se código não for nulo
if ($cod!=" "){
//faz update do livro no BD
$sql = "UPDATE `livro` SET `tituloLivro`='$titulo', `autorLivro`='$autor', `precoLivro`='$preco' WHERE `codigoLivro`='$cod'";
$resp = mysql_query($sql) or die (mysql_error()); //Função que executa uma query
//em caso de erro, exibe mensagem de erro
if($resp==1)
echo "<h1>Livro alterado com Sucesso!!!</h1><br>";
}else
echo "Codigo Inválido!";
?>
altlivro.php
<?
$queryselp="SELECT codigoLivro, tituloLivro, autorlivro, precolivro from livro where codigoLivro like '$_POST[cod]' LIMIT 1 ";
$respselp = mysql_query($queryselp) or die (mysql_error());
while (list ($codigo, $titulo, $autor, $preco)=mysql_fetch_row($respselp)){
?>
<form enctype="multipart/form-data" action="<?=$PHP_SELF;?>" method="POST">
Código: <input name="cod" type="text" maxlength="12" value="<?echo $codlivro?>" size="6">
<input name="Buscar" type="submit" value="Buscar" > <br>
</form>
<form action="alt_livro.php" method="POST">
<input name="cod" type="hidden" <?if($cod!=null) echo "value='$codigo'";?>>
Titulo: <input name="titulo" type="text" maxlength="120" size="50" value="<? echo $titulo?>"><br>
Autor: <input name="autor" type="text" maxlength="120" size="50" value="<? echo $autor?>"><br>
Preço: <input name="preco" type="text" maxlength="6" size="5" value="<? echo $preco?>"><br>
<BR>
<input type="submit" value="Confirma" >
</form>
exclivro.php
$del=$_POST['del'];
if (isset($del)){
$sql = "DELETE FROM livro WHERE codigo=$del LIMIT 1";
$resp = mysql_query($sql) or die (mysql_error());
if($resp==1)
echo "<h1>Livro deletado com sucesso!!!</h1>";
}else{
?>
<form enctype="multipart/form-data" action="<?=$PHP_SELF;?>" method="POST">
Código do Livro:<input name="del" type="text" maxlength="40" size="6">
<input name="Buscar" type="submit" value="excluir" > <br>
</form>
<?
}
?>
inclivro.php
<h1>Incluir Livro:</h1>
//form com os respectivos textfields
<form name="incliv" method="GET" action="inclui.php">
Titulo: <input type="text" name="titulo" size="50" /> <br><br>
Autor(es): <input type="text" name="autor" size="50" /> <br><br>
Preço: <input type="text" name="preco" size="5" /> <br><br>
<input type="reset" value="limpar" />
<input type="submit" value="cadastrar" /> <br>
</form>
livrosel.php
<?php
$livro=$_POST['livro'];
?>
<table id="oTable" border="1" style="border-left:solid black thin; border-top:solid black thin; border-top:solid black thin;" cellspacing="0" cellpadding="5">
<h1>Resultados Encontrados:</h1>
<thead>
<tr style="border-right: solid black thin;
border-bottom: solid black thin;
background: #CCCCCC;"><th>Código</th><th>Título</th><th>Autor(es)</th><th>Preço</th></tr>
</thead>
<tbody id="livros">
<?php
//Busca características do livro a partir de um titulo de livro passado através do POST
$sql = "select `codigoLivro`, `tituloLivro`, `autorLivro`, `precoLivro` from `livro` where titulo like '%$livro%' ";
$resp = mysql_query($sql) or die (mysql_error());
//enquanto obtiver resultados, concatena-os na tabela...
while (list ($codigo, $titulo, $autor, $preco)=mysql_fetch_row($resp)){
echo "<tr><td>$codigo</td><td> $titulo </td><td>$autor</td><td>$preco</td></tr><br>";
}
?>
livraria.php
<div id="content">
<div class="feature">
<h3 class="feature style3"><img src="livros.jpg" width="130" height="86" align="top">
<table id="oTable" border="1" style="border-left:solid black thin; border-top:solid black thin; border-top:solid black thin;" cellspacing="0" cellpadding="5">
<h1>Livros mais vendidos</h1>
<thead>
<tr style="border-right: solid black thin;
border-bottom: solid black thin;
background: #CCCCCC;"><th>Código</th><th>Título</th><th>Autor(es)</th><th>Preço</th></tr>
</thead>
<tbody id="livros">
<?php
$sql = "select `codigoLivro`, `tituloLivro`, `autorLivro`, `precoLivro`, `vendasLivro` from `livro` order by vendasLivro desc limit 10";
$resp = mysql_query($sql) or die (mysql_error());
while (list ($codigo, $titulo, $autor, $preco)=mysql_fetch_row($resp)){
echo "<tr><td>$codigo</td><td> $titulo </td><td>$autor</td><td>$preco</td></tr></a><br>";
}
?>
</tbody>
</table>
</h3>
</div>
<div class="story">
<BR><BR><h1>Digite o nome do livro que procura:</h1>
<form action="livrosel.php" name="formlivro" method=post>
<input name="livro" type="text" size="50" maxlength="120" onkeyup="ajaxFunction();" >
<input name="btnB" type="submit" value="Buscar" align="dir">
</form>
<br><br>
<p></p>
<br><br>
</div>
<br>
<div>
<h3>Gestão de livros</h3>
<br>
<p><a link href="inclivro.php">Incluir livros </a></p> <br>
<p><a link href="exclivro.php">Exluir livros </a> </p> <br>
<p><a link href="altlivro.php">Alterar livros </a> </p> <br> <br>
</div>
</div>
quarta-feira, 10 de outubro de 2007
Sistema de Livraria em PHP
Neste Sistema representei atividades básicas de um SGBD, o que chamamos de VEIA (VER, EXCLUIR, INCLUIR e ALTERAR).
Confira como ficou, acessando o endereço http://theway.789mb.com/livraria.php
Em breve disponibilizarei o código-fonte, onde ensinarei passo a passo o que significam os comandos utilizados.
Até lá!
domingo, 30 de setembro de 2007
que permite ver como funciona e também manipular uma tabela através do DOM.
<html>
<head>
<script type="text/javascript">
var ultimocodigo=2;
function remover() {
//Recebe a posição a ser alterada
pos=codigo.value-1;
pos=parseInt(pos);
//remove filho de livro da posição pos
var oChild=livros.children(pos);
livros.removeChild(oChild);
if(pos+1==ultimocodigo)
ultimocodigo--;
}
function removerCol() {
//remove filhos de linha, um a um (na posição 0) a cada vez que a função é chamada
var oChild=linha.children(0);
linha.removeChild(oChild);
}
function removerALL() {
try
{
livros.removeNode(true);//remove todos nodes de livros
}
catch(x)
{
alert("Você já removeu todos elementos. A página será recarregada quando você apertar ok.");
document.location.reload();
}
}
function removerTable() {
try
{
oTable.removeNode(true);
}
catch(x)
{
alert("Você já removeu a tabela. A página será recarregada quando você apertar ok.");
document.location.reload();
}
}
function incluir() {
linha=document.createElement('tr');
_codigo=document.createElement('td');
ultimocodigo++;
textoCodigo=document.createTextNode(ultimocodigo);
_codigo.appendChild(textoCodigo);// inclui textoCodigo como filho de td
_titulo=document.createElement('td');
textoTitulo=document.createTextNode(document.getElementById("titulo").value); // Returna uma referencia para o primeiro objeto com o valor específico do atributo ID
_titulo.appendChild(textoTitulo);// inclui como filho de td
_autor=document.createElement('td');
textoautor=document.createTextNode(document.getElementById("autor").value); // Returna uma referencia para o primeiro objeto com o valor específico do atributo ID
_autor.appendChild(textoautor);// inclui como filho de td
_preço=document.createElement('td');
textopreço=document.createTextNode(document.getElementById("preço").value); // Returna uma referencia para o primeiro objeto com o valor específico do atributo ID
_preço.appendChild(textopreço);// inclui como filho de td
linha.appendChild(_codigo); // refere td a tr
linha.appendChild(_titulo); // refere td a tr
linha.appendChild(_autor);
linha.appendChild(_preço);
x = document.getElementById("livros"); // refere tr a tbody
x.appendChild(linha);
}
</script>
<style type="text/css">
table { border-left:solid black thin;
border-top:solid black thin;
}
th { border-right: solid black thin;
border-bottom: solid black thin;
background: #CCCCCC;
}
td { border-right:solid black thin;
border-bottom:solid black thin;
}
</style>
</head>
<body>
<h1>Livraria</h1>
<table id="oTable" border="0" cellspacing="0" cellpadding="5">
<caption>Livros Disponíveis</caption>
<thead>
<tr><th>Código</th><th>Título</th><th>Autor(es)</th><th>Preço</th></tr>
</thead>
<tbody id="livros">
<tr><td>1</td><td>Internet & WWW</td><td>Deitel, Deitel e Nieto</td><td>79.80</td></tr>
<tr><td>2</td><td>Harry Potter</td><td>J.K.Rowling</td><td>29.90</td></tr>
</tbody>
</table>
<p style="margin-top:30pt"><strong>Inserir livros:</strong><br/>
Título: <input type="text" id="titulo" value="Everyday Italian"/>
Autor(es): <input type="text" id="autor" value="Giada de Laurentis"/>
Preço: <input type="text" size="7" id="preço" value="14.90"/>
<input type="button" value="Incluir" onclick="incluir()"/></p>
<p style="margin-top:30pt"><strong>Remover livros:</strong><br/>
Número da linha: <input type="text" size="4" id="codigo"/>
<input type="button" value="Remover" onClick="remover()"/></p>
<p style="margin-top:30pt"><strong>Remover TODOS livros:</strong>
<input type="button" value="Remover" onClick="removerALL()"/></p>
<p style="margin-top:30pt"><strong>Remover livro coluna a coluna:</strong>
<input type="button" value="Remover" onClick="removerCol()"/></p>
<p style="margin-top:30pt"><strong>Remover toda a tabela:</strong>
<input type="button" value="Remover" onClick="removerTable()"/></p>
</body>
</html>
Para ver esse código em funcionamento acesse:
theway.789mb.com/aulas/livros.html
segunda-feira, 17 de setembro de 2007
CSS
Ao invés de colocar a formatação dentro do documento, o desenvolvedor cria um link (ligação) para uma página que contém os estilos, procedendo de forma idêntica para todas as páginas de um portal. Quando quiser alterar a aparência do portal basta portanto modificar apenas um arquivo.
Fonte: Wikipedia
Acesso em 17/09/2007
Exemplo Calculadora em JavaScript
<html>
<head>
<title> Calculadora</title>
<script type="text/javascript">
num1=0.0;
num2=0.0;
operador=null;
getnum=null;
isdecimal=false;
function entranum(a){
if(getnum==null){
getnum=a.toString();
visor.value=getnum;
}
else{
getnum+=a.toString();
visor.value=getnum;
}
if(operador=='+'){
num=parseFloat(getnum);
num2=num1+num;
}
if(operador=='-'){
num=parseFloat(getnum);
num2=num1-num;
}
if(operador=='*'){
num=parseFloat(getnum);
num2=num1*num;
}
if(operador=='*'){
num=parseFloat(getnum);
num2=num1*num;
}
if(operador=='/'){
num=parseFloat(getnum)
num2=num1/num;
}
}
function soma(){
operador="+";
num1=parseFloat(getnum);
getnum=null;
visor.value=num1;
}
function subtrai(){
operador="-";
num1=parseFloat(getnum);
getnum=null;
visor.value=num1;
}
function multiplica(){
operador="*";
num1=parseFloat(getnum);
getnum=null;
visor.value=num1;
}
function divide(){
operador="/";
num1=parseFloat(getnum);
getnum=null;
visor.value=num1;
}
function reset(){
num1=0.0;
num2=0.0;
visor.value=num1;
getnum=null;
operador=null;
}
function resultop(){
visor.value=num2;
num1=0.0;
num2=0.0;
getnum=null;
operador=null;
}
var gosta = confirm( "Gostaria de usar a calculadora?" );
if ( gosta == true )
{
document.write( "<p>Faça bom proveito!</p>" );
}
else
{
document.write( "<p>Use da próxima vez!</p>" );
}
</script>
</head>
<body>
<h1>Calculadora em Javascript<br><br></h1>
<table border="2" cellspacing="0" cellpadding="5">
<thead>
<tr><input type="text" name="visor"/></tr>
</thead>
<tbody id="calc">
<tr><td><input type="button" name="num1" value="1" onClick="entranum(1)" /></td><td><input type="button" name="num2" value="2" onClick="entranum(2)"/></td><td><input type="button" name="num3" value="3" onClick="entranum(3)"/></td><td><input type="button" name="num4" value="4" onClick="entranum(4)"/></td></tr>
<tr><td><input type="button" value="5" onClick="entranum(5)" /></td><td><input type="button" value="6" onClick="entranum(6)"/></td><td><input type="button" value="7" onClick="entranum(7)"/></td><td><input type="button" value="8" onClick="entranum(8)"/></td></tr>
<tr><td><input type="button" value="9" onClick="entranum(9)" /></td><td><input type="button" value="0" onClick="entranum(0)"/></td><td><input type="button" value="+" onClick="soma()"/></td><td><input type="button" value="-" onClick="subtrai()" /></td></tr>
<tr><td><input type="button" value="*" onClick="multiplica()"/></td><td><input type="button" value=":" onClick="divide()"/></td><td><input type="button" value="C" onClick="reset()"/></td><td><input type="button" value="=" onClick="resultop()" /></td></tr>
</tbody>
</table>
<input type="button" name="num1" value="decimal" onClick="entranum('.')" />
</body>
</html>
Se quiser ver este site em funcionamento acesse: pedrofao.789mb.com/portal/calculadora.html
JavaScript
Validação de formulários no lado cliente (programa navegador);
Interação com a página. Assim, foi feita como uma linguagem de script. Javascript tem sintaxe semelhante à do Java, mas é totalmente diferente no conceito e no uso.
Oferece tipagem dinâmica - tipos de variáveis não são definidos;
É interpretada, ao invés de compilada;
Possui ótimas ferramentas padrão para listagens (como as linguagens de script, de modo geral);
Oferece bom suporte a expressões regulares (característica também comum a linguagens de script).
Sua união com o CSS é conhecida como DHTML. Usando o Javascript, é possível modificar dinamicamente os estilos dos elementos da página em HTML.
Dada sua enorme versatilidade e utilidade ao lidar com ambientes em árvore (como um documento HTML), foi criado a partir desta linguagem um padrão ECMA, o ECMA-262, também conhecido como ECMAScript. Este padrão é seguido, por exemplo, pela linguagem ActionScript da Adobe(Antigamente Macromedia, porém a empresa foi vendida à Adobe).
Além de uso em navegadores processando páginas HTML dinâmicas, o JavaScript é hoje usado também na construção do navegador Mozilla, o qual oferece para a criação de sistemas GUI todo um conjunto de ferramentas (em sua versão normal como navegador, sem a necessidade de nenhum software adicional), que incluem (e não apenas) um interpretador de Javascript, um comunicador Javascript <-> C++ e um interpretador de XUL, linguagem criada para definir a interface gráfica de aplicações.
O uso de JavaScript em páginas XHTML, pelo padrão W3C, deve ser informado ao navegador da seguinte forma:
Fonte: Wikipedia
Acesso em 15-09-2007
segunda-feira, 20 de agosto de 2007
Exercício XML Schema Receita
<? XML version="1.0" encoding="iso-8859-1" ?>
<xs:schema xmlns:xs="www.w3c.org/2001/xmlschema" >
<xs:element name="receita">
<xs:complexType>
<xs:attribute name="codigo" type="xs:positiveInteger">
<xs:sequence>
<xs:element name="nome" type="xs:String" />
<xs:element name="ingredientes">
<xs:complexType>
<xs:sequence>
<xs:element name="ingrediente" type="xs:String" maxOccurs="unbounded"/>
<xs:complexType>
<xs:sequence>
<xs:attribute name="quantidade" type="xs:positiveInteger">
<xs:attribute name="unidade" type="xs:String">
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="preparo">
<xs:complexType>
<xs:sequence>
<xs:element name="passo" type="xs:String" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="rendimento">
<xs:complexType>
<xs:sequence>
<xs:attribute name="quantidade" type="xs:positiveInteger">
<xs:attribute name="unidade" type="xs:String">
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
sábado, 18 de agosto de 2007
http://twi.freehostia.com/
http://twi.freehostia.com/
quinta-feira, 16 de agosto de 2007
Estudo Dirigido sobre XML
1-)O que é RSS?
RSS é um subconjunto de "dialetos" XML que servem para agregar conteúdo ou "Web syndication" podendo ser acedido mediante programas/sites agregadores. É usado principalmente em sites de notícias e blogs.
2-)O que é Atom?
Atom é o nome dado a um estilo baseado em conteúdo XML e meta data, ou seja, é um protocolo ao nível da aplicação para publicar
e editar Fontes web que são periodicamente atualizadas, como por exemplo Blogs. Os feeds devem ser formados em formato XML e são
identificados como application/atom+xml media type.
O funcionamento deles não difere das Markup Languages tradicionais, com cabeçalhos, títulos e corpo como no HTML 4.0.
3-)Se o RSS e o Atom têm o mesmo objetivo, por que são diferentes?
após a finalização do grupo de estudos do RSS da Netscape duas organizações continuaram o desenvolvimento separadamente, o que originou duas versões diferentes. A especificação Atom (RFC-4287) é a única publicada por um orgão normatizador, no caso a IETF. Resumindo arquivos Feeds são listas de atualização de conteúdo de um determinado site, escritos com especificações baseadas em XML.
4-)Como os dados em RSS e Atom são usados?
Com um programa chamado agregador de Feeds, você recebe as atualizações dos sites escolhidos sem ter que visitá-los.
Pode-se utilizar o código do RSS ou Atom para divulgar informação de vários web sites numa só página web. O Firefox 2.0 e o Internet Explorer 7 também lêem Feeds.
5-)Quais os principais elementos (de dados) desses padrões? Explique-os.
(mínimo 3 e máximo 6)
Título - Título do notícia/ mensagem
Autor - Quem criou a notícia/informação
Conteúdo - A informação propriamente dita
Data - Data de publicação da fonte
6-)O que são agregadores? Cite Exemplos.
Um agregador é um tipo de software para inscrever-se a canais de informação em (RSS, Atom e outros formatos derivados de XML/RDF). O agregador reconhece e organiza as informações que são vistas de forma final pelo usuário. Esta tecnologia permite a distribuição/recebimento de conteúdo (texto, som, vídeo) sem a necessidade de acessar um website para poder recebê-lo. Por exemplo, o iTunes, player de música da Apple, a partir de sua versão, 4.9 - o menu Podcast,
no qual você pode inserir arquivos XML que direcionarão seu agregador até a distribuição de notícias de um portal especificado, ou o podcast de uma rádio.
Ex:
Google Desktop
Akregator
FeedReader
Active Web Reader
Pluck RSS Reader
7-)Quais sites/páginas você consultou para este trabalho?
Fontes: Wikipedia
Guia do Hardware
quinta-feira, 9 de agosto de 2007
Exemplo arquivo XML
Bem Vindo!
Este é o primeiro de uma série de muitos posts...
No próximo post verás a estrutura genérica de um arquivo XML.
Volte sempre!