quinta-feira, 8 de abril de 2010

API Flickr - Criando um mosaico de fotos

Para quem deseja adicionar no seu blog ou no seu site um Mosaico com fotos do Flickr basta seguir o tutorial abaixo.
Vocês verão que é bem simples e fácil de implementar. Usando a API do próprio Flickr em conjunto com a JQuery.


1° Passo:
- Inserindo a JQuery:

Se você não tem ou não quer disponibilizar em seu dominio a API da JQuery, você pode chama-la através do Google usando a seguinte sintaxe:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>

2° Passo:
- Configurando o CSS para o Mosaico:

    <style type="text/css">
    // Referente ao box do Flickr
    #contentFlickr {
         border: 0px;
         width: 240px;
         height: 340px;
    }
    // Links
    #contentFlickr a{
        border: 0;
    }
   
    // Referente a cada box de imagem
    .imgItem {
        border: 0;
        width: 80px;
        height: 80px;
    }
    </style>


3° Passo:
- Criar o elemento que receberá o Mosaico:


<div id="contentFlickr"></div>

4° Passo:
- Chamada JS para a API do Flickr com as fotos.


<script type="text/javascript">
/*
* URL com o JSON contendo as fotos
* Troque o valor do parametro ID (49502986292) pelo valor do Flickr que você deseja buscar as fotos
*/

var strUlr = "http://api.flickr.com/services/feeds/groups_pool.gne?id=49502986292@N01&lang=en-us&format=rss_200&format=json&jsoncallback=?";

/*
* Totalizador de fotos, atribua aqui a quantidade de fotos que você quer no Mosaico
*/

var totalPhotos = 9;

$.getJSON(strUrl, function(data){
  $.each(data.items, function(i,item){
    if (i < totalPhotos){
        $("#contentFlickr").append('<a href="' + item.link + '" class="imgItem"><img src="' + item.media.m +'" class="imgItem"/></a>');
    }
  });
});

</script>

O resultado final é este:


Se quiser personalizar, basta mexer no CSS agora ;)

* Desculpem pelo código meio solto no post, é que as tags PRE e o HighlightCode não funcionam de jeito algum no Blogspot.

segunda-feira, 11 de janeiro de 2010

Compreendendo o funcionamento do operador "delete" no Javascript.

O que pode e não pode ser deletado no escopo de um código Javascript.

Artigo interessante, principalmente no que se refere ao diferente comportamento deste operador no Internet Explorer em em conjunto com o Firebug.


O conteúdo do livro referenciado no artigo também é muito válido, segue abaixo o link para o site da Amazon:

terça-feira, 5 de janeiro de 2010

Webtop v0.0.3


Publiquei ontem uma nova versão do Webtop, esse projeto na verdade está servindo como meu trabalho de conclusão, sendo que eu já havia começado há cerca de um ano.

Existem bugs para serem corrigidos ainda, como problemas nas instâncias de janelas, etc. Mas como resolvi remodelar a forma de organização de scripts e optei por utilizar outro plugin para interações nas janelas (JQuery UI) acabei me atrasando um pouco.

Página oficial do projeto: http://code.google.com/p/webtop/



quarta-feira, 30 de dezembro de 2009

Web em tempo real com XMPP

Artigo interessante sobre a utilização da Strophe.js e XMPP.
A apresentação é uma espécie de tutorial sobre XMPP e o funcionamento da biblioteca JS para a comunicação do cliente / servidor.


Link do post: http://www.infoq.com/presentations/Real-Time-Web-with-XMPP

terça-feira, 24 de novembro de 2009

Trimpath - Javascript Template

Uma das bibliotecas mais úteis que tenho utilizado para aplicações de médio e grande porte em Javascript é a Trimpath.
Para quem já está acostumado a trabalhar com separação de camadas de interface de dados, a biblioteca é uma "mão na roda".
Semelhante a soluções para PHP (Smarty e Template Power por exemplo) a sintaxe de marcas e a possibilidade de inserção de lógica no HTML facilitam muito o seu uso.

Como funciona?
- Baixe o ZIP da Trimpath em http://code.google.com/p/trimpath/wiki/JavaScriptTemplates.
- Você precisa apenas do arquivo trimPath.js que vem no pacote.
- Insira o arquivo no seu documento HTML.
- Chame a seguinte função para realizar o parse do template:
var result = TrimPath.parseTemplate(strTemplate).process(params);

Onde:
- strTemplate é a String que contém os dados a serem parseados (o seu template)
- params são os dados em JSON que serão inseridos na apresentação do template

Exemplo:
var strTemplate = "Oi ${fulano}"
var params = { fulano : "Cicero" };
var result = TrimPath.parseTemplate(strTemplate).process(params);

Pronto! Você já pode criar seus templates e separar a sua aplicação de uma forma mais organizada e prática.

Dicas:
O template não precisa necessariamente estar no próprio HTML. Requisite o conteúdo via Ajax, e armazene o responseText da requisição em uma String.

Lendo com mais calma a documentação você perceberá que os parametros JSON que você utiliza para o parse são facilmente identificaveis por tipo pela biblioteca. Como por exemplo quando você passa um array dentro do seu objeto, o mesmo pode ser percorrido atrav´s da sintaxe de LOOP da trimPath.

quarta-feira, 4 de novembro de 2009

Ctrl + C Ctrl + V

Slow class selectors

This method can be problematic with large html documents with thousands of DOM elements. Web browsers which aren't able to do efficient evaluations on class based selectors are seriously disadvantaged here as they need to trawl through the entire document tree to find the elements. Other browsers are better off, but it's still a high cost operation relative to the super fast id based selector.


Leia o resto em : http://ajaxian.com/archives/jquery-bondage



quinta-feira, 15 de outubro de 2009

HTML 5 Database Storage

Para quem está acompanhando as novas definições para HTML 5 já deve ter ouvido falar de tags como CANVAS, VIDEO, etc.
Mas uma das novas features as quais eu considero sensacional é o armazenamento interno de dados no navegador, não mais através de cookies, e sim utilizando um espaço especifico do aplicativo que permite guardar e organizar estas informações como em um banco de dados.

Até o momento essa feature já foi disponibilizada na última versão do Webkit, presente no Safari 4.
Um exemplo prático desta implementação esta em: http://webkit.org/demos/sticky-notes/ .
Neste caso foi criada uma aplicação que simula post-it´s que podem ser movidos e escritos em uma espécie de mural.

As informações de texto e posicionamento do conteúdo são armazenados em uma base de dados interna do navegador, com uma tabela especifica da aplicação.

Veja a imagem abaixo, onde através do Web Inspector podemos visualizar os dados armazenados:


O interessante disso tudo é que pelo menos no Safari o armazenamento é feito utilizando-se SQL LITE.

No fonte podemos visualizar como as query´s são executadas:

<font color="#cc0000">function loaded()
{
db.transaction(function(tx) {
tx.executeSql("SELECT COUNT(*) FROM WebkitStickyNotes", [], function(result) {
loadNotes();
}, function(tx, error) {
tx.executeSql("CREATE TABLE WebKitStickyNotes (id REAL UNIQUE, note TEXT, timestamp REAL, left TEXT, top TEXT, zindex REAL)", [], function(result) {
loadNotes();
});
});
});</font>
<font color="#cc0000">}</font>

Espero que esta definição continue sendo seguida, e que no futuroa a Microsoft não invente de implementar isso no IE utilizando uma outra estrutura e até sintaxe de acesso aos dados.

Mais informações em :
http://www.whatwg.org/specs/web-apps/current-work/

No Firefox 3.5: https://developer.mozilla.org/en/DOM/Storage

No Internet Explorer: http://msdn.microsoft.com/en-us/library/ms531424(VS.85).aspx