sexta-feira, 16 de maio de 2008

Sinta a vibe da web

Boa noite, povão. Depois de um longo período longe dos posts (devido a tudo que é tipo de compromisso que possa surgir), estou de volta (mas aos poucos, hehehe)

Bem, pra começar, pela primeira vez estou montando um post para o blog através do ScribeFire

Vamos lá então..
A você que lê agora esse post, me diga: você sabe o que é RSS? Atom? Tá bom, generalizando, Feed? Bem, indico aos mais interessados que leiam os três links anteriores aí.

Quando os RSS's despontaram na web, eu mesmo os utilizei pouco, até porque não era todo site que dispunha desse recurso, então era moleza ler uns quatro ou cinco feeds em um agregador (depois dou minha opinião sobre ele) qualquer (se não me engano o primeiro que eu utilizei foi o RSSOwl
).
Porém o tempo foi passando e hoje em dia, como acho que já falei em algum post lá pra trás, um site que tenha atualização e obviamente não daria para acumular um número grande de RSS's numa aplicação se ela não oferecesse o mínimo de organização (IMHO).

Voltando um pouco no tempo, de meados a fins de 2004 eu estava nos primeiros meses do meu curso de WebMaster, com o saudosíssimo tio LeoDiass, quando me deparei com um site que, até onde minha memória me permite lembrar, possuía algo novo: uma área no topo do site (que era simples demais) onde você clicava e esta área abria para edição e você digitava o que quisesse lá. O que me surpreendeu era o fato de que era uma div. Eu ainda era "cruzinho" na parte técnica da coisa e me espantei quando vi aquilo, era a atração do site para mim (talvez por issó só consigo me recordar que o fundo era listrado em diagonal partindo do canto superior esquerdo, e havia essa div editável lá).
O site? NetVibes.
Enquanto eu estava no curso, sempre o acessava, porém, desde quando concluí o curso (no 1º semestre de 2005) até conseguir meu primeiro emprego com web (no semestre seguinte) eu parei de acessá-lo. Quando o acessei novamente vi que haviam novos recursos implementados e que eu poderia associar uma conta minha a este site. E o melhor, o texto que eu digitava na div ficava salvo para que quando eu acessasse, a página já viesse personalizada. Não sei de quando data o iGoogle, mas creio que o NetVibes tenha mesmo vindo antes dele.

Agora é onde aos 2 últimos parágrafos se encontram: acessando o NetVibes, vi que era possível criar abas para separar o conteúdo da maneira que eu achasse melhor, afinal, a página era totalmente personalizável para que ficasse do jeito que o usuário quiser. Mas peraí? Que conteúdo? Ah sim, o NetVibes tinha deixado de ser um "simples" site, para ser um mashup.
Foi quando parei pra pensar: qual a vantagem de continuar com o RSSOwl se o NetVibes é online e eu acesso com o browser de onde eu estiver?
Resultado: Há um bom tempo que eu sou usuário assíduo deste sistema, e pude acompanhar grandes mudanças.
Com o passar do tempo eu fui adaptando o NetVibes e inserindo conteúdo nele, de forma que atualmente, possuo cerca de 55 feeds (sendo que alguns são provenientes do Yahoo!Pipes (ainda estou devendo um post sobre isso).

Para que você entenda melhor: o NetVibes é um site que funciona como um agregador online. Aí você vem e me diz que hoje existem vários, e me resta concordar com você. Porém, as vantagens que vejo no NetVibes são:

  • Mais que somente ler feeds, existem outros módulos (diversos) para que você inclua em sua página;
  • A personalização/configuração da página é mole-mole de ser feita;
  • Trabalha também com o padrão OPML e isso te permite exportar e/ou importar arquivos deste formato;
  • A última atualização pela qual o sistema passou, incluiu um módulo chamado "public page" (ou "Universe", que cai melhor para o sentido de comunidade), no qual o usuário possui, além de sua página privada, uma pública que funciona da mesma maneira que a privada, porém pode ser acessada por qualquer um, usuário ou não do NetVibes;
  • Tem integração com vários outros serviços 2.0 (como digg, Facebook, MySpace), eu utilizo os módulos do Remember the Milk, delicious, box.net e do Twitter;
  • Possui outros módulos como um to-do list (lista de afazeres) e "WebNotes", que é um post-it virtual;
  • Caso queira remover um feed ou módulo da página, você opta por armazená-lo ou excluí-lo para sempre;
  • Permite com que você compartilhe qualquer aba de sua página privada com seu universo (sua página pública), enviar por email ou compartilhar no seu blog (eu nunca utilizei os dois últimos);
  • Tem agora a implementação do sentido de comunidade, podendo assim, criar realmente um universo de informações cruzadas entre seus usuários.
O NetVibes é o tipo de site que eu indico para qualquer um que me perguntar qual a melhor maneira de gerenciar seus feeds. Caso se interessem, acessem meu universo no NetVibes (e não liguem para o visual porque essa é minha área de testes).
Só a título de curiosidade (para encerrar): o NetVibes foi o primeiro site que eu vi com splashscreen.

Bem gente, assim como eu fiz no post sobre o Twitter, faço agora com o NetVibes. Dêem uma chance ao garoto, nem que seja "só por uma noite" pois é um sistema cheio de recursos e utilidades (e com certeza você vai encontrar alguns módulos que irão te satisfazer).

No mais, espero não ter que esperar mais um mês e meio para realizar outro post.
Qualquer dúvida, sugestão ou crítica, comentem!

[]'s do MX...

domingo, 30 de março de 2008

Twitter or not twitter?

Boa madrugada, povão!

Pois bem. Algum tempo atrás postei aqui falando sobre a busca de algum sentido no Twitter. Enfim, já tem coisa de um ou dois meses que eu estou utilizando-o e se não encontrei um verdadeiro "porquê", pelo menos notei o seguinte:
  • Twitter is not a chat: Como dizem por aí... e por mais inevitável que seja, o Twitter na verdade foi lançado como um micro (ou nano na opção/percepção de outros) blog. Ou seja, um blog com limite de caracteres onde você só publica o conteudo. Mas com o recurso de reply é difícil não se pegar por vez ou outra papeando com algum outro twitteiro. Como vi certa vez em alguma comunidade do Orkut: "O Twitter é o fruto do amor proibido do Orkut com o MSN". Até porque da mesma forma que é um "microblog", o sistema lembra muito o de scraps do Orkut, pois você publica o conteúdo que quer e todos podem visualizá-lo em sua respectiva página no Twitter.
  • O recurso do RSS: Hoje em dia eu (IMHO) classifico como loucura um site que possua conteúdo com atualização (no mínimo) diária e não possua RSS implementado no sistema. Esse padrão é uma mão na roda para os internautas que queiram (como eu) que a informação chegue até você, ao invés de você chegar até ela (Maomé e a montanha...). Eu mesmo aproveitei o RSS dos últimos updates do meu Twitter e fiz um Pipe (assunto para mais pra frente) que está embutido na lateral direita do blog. Outra grande vantagem (embercando na oração anterior) está do lado dos desenvolvedores, que poderão adaptar o RSS à aplicação que desejarem embutir um aggregator ou qualquer sistema de notícia que se tenha como base um RSS;
  • Nome de usuário customizável: Coisa rara esse recurso aqui. O login no sistema do Twitter é feito através de um endereço de email, ou seja, o seu "nome de usuário", que aparece ao fim da url para que seu Twitter possa ser acessado, pode ser mudado sempre que quiser, bastanto testar a disponibilidade do mesmo. Vantagens? Bem, a única que observei até agora é que, se você incialmente cria um Twitter com um nome de usuário meio "fanfarrão", digamos assim, e depois de um tempo de uso da ferramenta, quer fazer um uso mais profissional da mesma (si, se puede), você não precisará fazer uma nova conta (como muitos fizeram e ainda fazem com o MSN/Windows Live Messenger);
  • Difusor de informações: Caso você receba um update interessante via Twitter, você pode repassá-lo para seus seguidores (followers, pessoas que recebem em sua página os updates feitos por você), isto cria uma rede de replicação de conhecimento e informação bastante interessante (principalmente pra quem se amarra em novidades);
  • "Substituto" de RSS Aggregator: Alguns sites que assino RSS lançaram uma integração com o Twitter no qual, quando eles postam um artigo "lá', eu recebo aqui um update do Twitter com o conteúdo (em geral uma chamada para o tema) e o link da matéria.
  • Balcão de empregos: Muitos empresários que utilizam o Twitter freqüentemente anunciam vagas de emprego através do Twitter. Qual a vantagem de chegar na empresa e dizer "Eu fiquei sabendo da vaga através do Twitter!". Bem, a primeira coisa que dá para imaginar é que vai ser fácil notar que você é uma pessoa antenada nas coisas de sua área, sempre buscando inovações, e isso de certa forma, pode fazer a diferença.
  • Amigo para todas as horas: Essa parece até piada, mas não é. Eu mesmo, por vezes estressado, desabafava no Twitter. Claro! Cada um faz seu uso da maneira que mais convir, mas esta é uma das mais interessantes facetas do Twitter aqui no Brasil, sim, pois nós brasileiros parece que temos uma grande queda para uso informal da web. Tudo que é comunidade, mensageiro instantêneo e coisas do gênero, faz sucesso estrondosamente no Brasil. Então, algo melhor que você desabafar e não ter ninguém para retrucar? Esta com certeza é a mais fútil das funcionalidades que notei, mas muita gente usa assim (inclusive eu vez ou outra).
Enfim, eu indico para que você que ainda não tem Twitter, utilize, nem que seja "só por uma noite", mas dê uma chance ao garoto, pois eu mesmo não tinha esperança de continuar a mecher nele, mas... Tá aí, eu garanto que não custa nada (mesmo) tentar.
Só para complementar: O Twitter tem potencial para ir muito longe, basta que os usuários saibam utilizar a ferramenta de uma maneira útil e funcional para eles, assim, crescem não só eles, mas como é uma rede que difunde "conhecimento", todos os membros ligado a ela (e followers deles principalmente)!

- Meu Twitter

No mais, um ótimo domingo a todos e...
...[]'s do MX...

quarta-feira, 26 de março de 2008

StrCmp em ASP

Salve, salve!
Fast-post aqui para relembrar uma função do C (ê tempo...). Como uso C com freqüência na faculdade me lembrei da função strcmp (string compare), e no ASP vira-e-meche se faz necessária a comparação entre duas strings, porém um espaço em branco a mais (solucionado com o uso da função Trim()) ou um tipo de dado diferente ("1" e 1, resolvido com CStr()). Para não ter que ficar concatenando toda vez as duas funções, resolvi criar uma que já faz este serviço por mim... Quem se interessar, faça bom uso da mesma!

function StrCmp(str1, str2)
   StrCmp = (Trim(CStr(str1)) = Trim(CStr(str2)))
end function


[]'s do MX...

terça-feira, 25 de março de 2008

TwitterReminder: Um mix de aplicações 2.0

Boa madrugada a todos!

Bem, com o passar do tempo vão surgindo novas necessidades e as respectivas ferramentas para sanar as tais necessidades. Pois bem, estava eu ontem (já que já passamos da meia-noite) a noite na faculdade quando resolvi postar no Twitter um reply para mim mesmo!
Redundante, não? Loucura? Talvez! Mas minha intenção na verdade era somente de, quando chegar em casa, ler o post (que funcionou como um lembrete).
Então pensei: dá pra usar o Twitter para ficar trabalhando como um quadro de lembretes meu, já que ele dá uma saída RSS. Basta filtrá-lo para que eu leia somente as informações que desejo (os lembretes).

Dotados das necessidades do sistema, bastava agora correr atrás de ferramentas que pudessem cumprir a missão de separar somente os posts de lembrete. Para isto usei o (creio eu que ainda pouco conhecido, porém muitíssimo útil) Yahoo!Pipes.
O que é um pipe? Nada mais que uma base de dados resultante de mesclas de RSS's, filtragens e outras
n opções que este serviço oferece. E o melhor, o retorno do Pipe pode ser capturado como RSS, ou seja, tudo que eu precisava!

Explicando passo a passo, caso você se interesse em ter um "TwitterReminder" (nome que eu dei para este Pipe):
  1. Acesse sua página inicial no Twitter;
  2. Ao final dela, haverá um link "RSS". Clique nele e copie o endereço que estiver na barra de endereços. Caso o seu browser já te direcione a uma página específica de leitura de RSS, clique com o botão direito no link RSS do seu Twitter e selecione a opção "Copiar link/Copiar endereço";
  3. Se você tem conta no Yahoo! (creio que a maioria tenha), acesse o Yahoo!Pipes e selecione a opção "Create a Pipe";
  4. Nesta área você pode criar seu próprio Pipe, para isto, clique na aba "Sources" (lateral esquerda da página) e arraste a opção "Fetch Feed" para o palco;
  5. Cole no campo "URL" do Fetch Feed o link (endereço) que você copiou do RSS do seu Twitter;
  6. Na aba "Operators", arraste para o palco o módulo "Filter";
  7. Preencha-o com a seguinte configuração: "Permit items that match all of the following" (Permitir itens que batam com todos os seguintes [filtros]);
  8. Na seção Rules adicione duas regras: "item.y:title Contains SEUUSUARIO:" e "item.y:title Contains @SEUUSUARIO" (para adicionar uma nova regra [rule], clique no sinal de + ao lado de "Rules");
  9. Clique em "Save", dê um nome à criança e depois clique em "Run Pipe";
  10. Você pode capturar o ressultado do Pipe como RSS, JSON ou agregar a alguns dos mais populares feeds aggregators da web.

Imagem de auxílio para ilustrar melhor o "how-to-do" acima.

A ferramenta que criada nada mais é do que o bom uso (ideal, funcional e consciente) das ferramentas 2.0 (RSS, Twitter e Pipes, os dois últimos inclusive, IMHO, muito além de 2.0, o mapa do Web Trends que me confirme isto!). Espero ter dado uma contribuição útil a vida de você, que me lê, com a idéia desta ferramenta!
Observação final: Aproveitei e estou criando um novo Pipe, chamado TwitterBadge, e vou tentar embutí-lo aqui no blogger para poder listar meus últimos up's no Twitter... em breve, se der tudo certo, ele estará aí do lado. --->

[]'s do MX...

sábado, 15 de março de 2008

Faz falta um cfdump

Boa noite a todos!
Quem diria! Eu, em pleno sábado a noite, postando... Hehehe

Pois bem, eu notei que tenho falado pouco aqui no blog sobre ColdFusion, tecnologia de desenvolvimento web que na minha opinião é top de linha, está a frente de qualquer outra que eu conheço na área.

Então resolvi começar a fazer alguns posts falando sobre alguns recursos que o CFML disponibiliza. A coisa que mais sinto falta, é o .
Com certeza você que é programador sofre na hora de debugar o programa, quando você precisa saber qual o valor existente naquela variável naquele determinado momento, ou quais valores existem dentro daquele vetor que você criou mas não está dando certo. A tag cfdump tem a característica de exibir os valores existentes em uma variável ou qualquer outra estrutura dedados, seja um vetor, matriz, query, sessão, cookie...

Impossível não se encantar com um recurso destes! Eu, em ASP, sou obrigado a dar um response.write seguido de um response.end para conseguir debugar uma variável... porque quando se trata de estruturas, tenho que fazer um loop sobre ela até achar o X do problema. Como diria Hilton Verdan: "Maaaaaaaravilhooooso!"

Espero, aos poucos, conseguir "evangelizar" o ColdFusion através do blog. Bem, para completar eu deixo a apresentação que utilizei na palestra que ministrei ano passado no UBM Campus Barra Mansa sobre ColdFusion.

Link para a palestra.

[]'s do MX e bom fim de semana a todos...

sexta-feira, 7 de março de 2008

Arredondar para cima em ASP

Mais um fast-post... dessa vez para matar a saudade da função deste blog como auxílio para programadores...
Função (a quem interessar) para arredondar qualquer número que possuir casas decimais sempre para cima:


function arredCima(y)
 x = CStr(y)
 p = inStr(x, ",")
 if p > 0 then
   arredCima = CInt(Left(x,p-1)) + 1
 else
   arredCima = y
 end if
end function

Então, se você fizer um <%=arredCima(10)%> o retorno será 10, caso faça com 10.1 (tomando como base que o IIS está configurado para pt-br, qualquer coisa use o session.LCID = 1046 =] ) esta função retorna 11.
Eu tenho quase certeza que o Excel possui uma função que faz isto, não sei porque que no ASP não tem...

[]'s do MX...

Tchau fichário

Post rápido só pra informar que agora estou utilizando as ferramentas da web direcionado à área educativa (especificamente à minha educação).

Cansado de levar mochila com fichário para a faculdade, resolvi montar um blog no qual eu posto as anotações que faço no Notepad e daí disponibilizo essa informação na net. A galera lá da sala (Estou no 5º Período de Ciência da Computação) que quiser acrescentar alguma observação ou deixar alguma dúvida, é só comentar e pronto!

Web 2.0 fazendo cada vez mais sentindo (útil) na vida de todos! =) Pra que papel? Ainda me tornei uma pessoa "Greenpeace", afinal, sem gasto de folhas, menos árvores a serem cortadas... hehehehe

[]'s do MX...
(Espero que essa idéia seja repetida por outras pessoas, se alguém mais fizer isso, por favor, deixe o link através de um comentário aqui! Ficarei feliz em saber que a idéia é bem-vinda)

quarta-feira, 5 de março de 2008

I will be back... (mas aos poucos)

Salve, salve meu povo!

Faz tempo que não faço um up aqui mas não é por falta de assunto e sim por falta de tempo! Então resolvi fazer um post agora cedo antes que os compromissos me sufoquem mais uma vez... Vou dar uma pincelada geral sobre os assuntos que utilizarei para meus próximos posts, então lá vai!

  • Twitter: Sim! Isso vicia! Quando me perguntei sobre o motivo de criar uma conta no Twitter não imaginei que poderia receber tantas alternativas de resposta... O Twitter é um micro (ou nano) blog, onde você faz posts de no máximo 140 caracteres através de vários meios (web, bot do GTalk, extensões do Firefox ou aplicações AIR). Em uma comunidade do Orkut existe até uma explicação para o Twitter como sendo "o fruto do amor proibido entre um scrap e uma janela do MSN". O certo é que, como os "twitteiros" dizem: Twitter is not a chat! What are you doing?
  • NetVibes: O NetVibes cresceu! Ontem foi liberado o módulo de Universe para que o usuário tenha seu espaço público e seu espaço reservado nesse sistema que eu acho muito interessante e já uso há pouco mais de 1 ano! Quem ainda não tem um cadastro no NetVibes, eu aconselho que crie, e pelo menos utilize-o por uns 3 dias para ver como ele pode ser útil no seu dia-a-dia.
  • Extensões do Firefox: Eu ia redigir este post no ScribeFire, porém desisti devido a um probleminha quanto à formatação. Porém isto é um mero detalhe de uma das inúmeras extensões que existem para Firefox (eu mesmo faço uso de cerca de 20 extensões). Ainda me pergunto porque as pessoas usam o IE(ca) sendo que no Firefox você possui uma flexibilidade e uma personalização gigantesca. Bem, procurarei fazer uma série de posts para falar mais sobre as extensões, quem sabe você não encontra aquela que estava procurando? Ou quem sabe, você que me lê via IE(ca) não decide mudar de browser...
  • Mestrado ou Pós-graduação: Bem, este é um tema que interessa inclusive a mim (pois estou na metade final de minha graduação em Ciência da Computação) e irei expor meu ponto de vista frente a todas as opiniões que consegui reunir através de profissionais da área acadêmica, da área corporativa e de alguns sites da web.
  • Futuro da web: Adobe AIR, crossing de aplicações 2.0... Tem muita novidade vindo pela frente no que diz respeito aos serviços oferecidos na web. Eu mesmo faço uso de sistemas AIR para trabalhar com paleta de cores, para fazer upload no Google Docs e para fazer posts no Twitter. Outra coisa que tem me chamado a atenção é como os serviços evoluiram de forma que podem ser combinados em prol de se obter um serviço mais adequado àquilo que o usuário quer. Falarei mais sobre isso num post futuro.
Bem, por hoje é só pessoal! Assim que sobrar mais algum tempo na agenda eu começo a postar de acordo com os tópicos acima!

[]'s do MX...

domingo, 10 de fevereiro de 2008

Vista Desktop Orb, e para Vista?

Boa noite meus caros!

É até estranho eu estar fazendo um post a esta hora do sábado (horário no qual costumo estar em alguma boate)... enfim, este é meu primeiro sábado do ano em casa, e aproveitei para dar um upzinho na parte de softwares do meu Acer 5570Z.

Depois de passar a semana buscando alguns programas e gadgets úteis no meu ponto de vista, resolvi instalá-los.Meu maior desejo era limpar minha área de trabalho e no entanto eu necessitava de um desses programas que imitassem o dock do MacOS. Pois bem, instalei o RocketDock que é até legalzinho, mas eu trocaria o "Auto ocultar" dele pela simples opção de desativar o "Always on top", o que o tornaria mais útil (ainda) e menos incômodo.
Não sou fã de auto ocultar desde os tempos da Barra de Tarefas do Win98, e deixar um dock sempre por cima dos programas (que eu SEMPRE uso maximizados) complica bem a usabilidade e a produtividade.

O problema maior é: o programa que mais me interessou, que mais me chamou a atenção, simplesmente não funciona no Vista, mesmo levando o nome de Vista Desktop Orb (maiores informações aqui, aqui, e no Oráculo).
O que ocorre é que este software faz parte de "um todo" digamos assim, pois o encontrei num pacote de programas que simulam a aparência do tal "Windows Seven" no Windows XP.
O lamentável é ter que admitir que um programinha tão útil, com um visual inovador e interessante, com Vista no nome não pode ser executado no Windows Vista.

Então peço encarecidamente aos leitores deste blog que, se alguém tem alguma solução alternativa para isto, fico imensamente grato em recebê-la.
Já pedi ajuda via Twitter (sim, sim, eu estou usando o Twitter, e mais, estou gostando de usar... posteriormente farei minhas ponderações a ele aqui), e espero que consiga alguma resposta positiva aqui via Blogger.

No mais, abraço a todos e feliz 2008, afinal o ano começa pra valer na próxima segunda-feira!
=P

[]'s do MX...

sexta-feira, 1 de fevereiro de 2008

Twitter: Em busca de algum sentido...

Salve, salve!

Postzinho "pré-carnaval". Acabei de criar meu Twitter sinceramente na esperança de achar um objetivo realmente útil para algo que está sendo tão comentado. Até agora não vi nada de tão especial assim... Mas enfim, enquanto eu não alcanço o sentido da coisa, vou me embrenhando nessa "nova onda" do povo...

Mesmo já tendo lido tanto sobre o assunto, peço encarecidamente para que comentem este post dando seu ponto de vista. Quem sabe alguém me ajuda a entender o porquê desse sucesso repentino...

Bom carnaval e,
[]'s do MX...

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")