sexta-feira, 18 de janeiro de 2008

OpenID: Eu avisei...

Bem amigos do Blog do MX!
Bom dia!

Queria fazer um "fast-post" aqui somente para dizer que eu avisei! Em um dos primeiros posts deste blog eu deixei no final um pedido para que ficassem de olho no OpenID... agora a "criança" já está caindo nas graças de gente grande como Yahoo!, Google, IBM e VeriSign.
A idéia do OpenID foi algo prático e necessário nos dias de hoje, onde usuários se perdem em meio a tantos cadastros em inúmeros site. Centralização de identidade... esse é "o papo"!
Só me resta dar os parabéns a Brad Fitzpatrick pela idéia, e a quem usou ou pretende implementá-la, pela facilidade que vão dar aos seus usuários! E que floresçam mais idéias como essa...

No mais...
[]'s do MX...


Update #1: Agora o Blogger in Draft também é amiguinho íntimo (e fornecedor) do OpenID... "Eu avisei!"

quarta-feira, 9 de janeiro de 2008

Minha primeira aplicaçãozinha Prolog

Boa noite meu povo!
Estou aqui começando a dar os primeiros passos em Prolog. Depois de estudar no período passado da faculdade sobre esta linguagem, comecei a botar a mão na massa com ela visando futuros projetos (iniciação científica, mestrado, etc...)

Antes de falar sobre o código em si, gostaria de debitar todos os créditos ao blog do Silveira, onde consegui localizar esse conteúdo para iniciar meus estudos.
O código que irei reproduzir aqui é o que está disponibilizado no link acima, porém, seguirá logo abaixo uma explicação passo a passo minha sobre o mesmo.
  • fatorial.pl
fatorial(0,1).

fatorial(N,F) :-
   N1 is N - 1,
   fatorial(N1,F1),
   F is N * F1.

Vamos lá! Antes de começar aconselho que leiam alguns artigos afins:
Só relembrando um pouco de matemática, para se calcular o fatorial de um número, multiplica-se ele por todos os seus números antecessores, até que se chegue a 0 (o qual possui por definição fatorial 1: 0! = 1). Ou seja, o fatorial de um número (com exceção do zero) vai ser SEMPRE ele mesmo multiplicado pelo fatorial do seu antecessor.

Exemplos:
3! = 3 * 2 * 1 = 6
4! = 4 * 3 * 2 * 1 = 24
ou
4 * 3! = 4 * 6 = 24

Entendida esta parte, vamos ao código. Se você, leitor, programa em alguma linguagem estruturada ou OO deve estar estranhando a forma de escrita do Prolog, certo?
Caso tenha lido os links que disponibilizei acima, a coisa fica um pouco mais clara...
Na primeira linha definimos uma função que retornará um resultado verdadeiro, nesta linha esta sendo definida que o fatorial de 0 sempre será 1. Para o fatorial de outros números existe a função fatorial aberta a retornar um valor (o parâmetro F).

Esta função é recursiva, ou seja, quando informar algo como fatorial(3,X). o compilador fará o seguinte:

Fatorial de 3 é quanto?
Não existe definição para isto.
Deixa a função fatorial(3,X) em aberto, aguardando resposta, em uma pilha de processamento.

Fatorial de 2 é quanto?
Não existe definição para isto.
Deixa a função fatorial(2,X) em aberto, aguardando resposta, em uma pilha de processamento.

Fatorial de 1 é quanto?
Não existe definição para isto.
Deixa a função fatorial(1,X) em aberto, aguardando resposta, em uma pilha de processamento.

Fatorial de 0 é quanto?
Opa, tem uma definição lá de que 0! = 1.

Como nossa intenção é solucionar o fatorial de 3 e armazená-lo na variável X, devemos percorrer toda a pilha de execução até o final. Já que temos o fatorial de 0 sendo igual a 1, vamos ao próximo item da pilha.

Fatorial de 1 é quanto?
1 * fatorial de 0, ou seja, 1 * 1 = 1

Fatorial de 2 é quanto?
2 * fatorial de 1, ou seja, 2 * 1 = 2

Fatorial de 3 é quanto?
3 * fatorial de 2, ou seja, 3 * 2 = 6.

Pronto! Está aí a forma de funcionamento do código deste post.
Para completar, abra o SWI-Prolog e digite o seguinte comando:

['d:/appProlog/fatorial.pl']. (indique o caminho físico do arquivo com a "/" mesmo)
Este comando carregará o conteúdo do arquivo e nos permitirá usar a função fatorial.
Existem duas formas de usá-la:

1 - Digitar o comando:
fatorial(0,1).
Retornará o valor "Yes", confirmando que existe no código esta definição.

2 - Executar a função em busca do fatorial de um número:
Sinta-se à vontade para trabalhar com esta função, varie números e variáveis de retorno (o "X" não é obrigatório)
Exemplo: fatorial(12,FAT).

Espero poder ter passado de forma útil um pouco do conhecimento que adquiri sobre Prolog... até a próxima e...
[]'s do MX...

quinta-feira, 3 de janeiro de 2008

Campos de busca com tamanho GG

"Alôôôôôô você!
Chegando!!!"

Ano novo, ânimo novo... para posts, estudos para a iniciação científica, estudos de novidades que este ano (bissexto) possa trazer para a web, e por aí vai...
Inicialmente gostaria de dizer que desejo (novamente) um feliz 2008 a todos os leitores do meu bolg. Pois bem...

Navegando web afora, me deparei com algo que achei interessante, acessível e usável: os campos de busca com um tamanho meio que exageradamente grandes, até mesmo para os padrões que temos para campos grandes.

Estes campos de busca podem ser notados em 3 sites (que eu encontrei, se souber de mais algum, comente aqui):
*Em ordem decrescente de tamanho

Minha opinião?
O termo "conteúdo" (viva Jakob Nielsen) tem sido tratado como algo de grande importância nestes tempos de web colaborativa (ou 2.0, como preferir). É sempre conteúdo disponibilizado por pessoas ou empresas que tem por objetivo ser localizado e consumido por internautas ou sistemas.
Se o conteúdo é tão importante, e buscar o conteúdo que interessa ao usuário tem sido uma tarefa cada vez mais comum, porque não dar um destaque (merecido) ao campo de busca?
No meu ponto de vista, o uso de campos de busca com um tamanho avantajado é correto e eu apóio a criação de layouts seguindo esta nova tendência que parece despontar agora...

Informação é uma das maiores forças da web, pesquisá-la merece destaque.
[]'s do MX...


Update #1: Vale a pena conferir o campo de busca do MyBitTorrent (só que esse tá muito extenso, tanto que parece uma barra ao invés de um campo... "mau uso")