Limitar caracteres utilizando Javascript

Continuando meus estudos com javascript, para completar parte do meu script de manipulação de XML com jQuery eu precisava limitar os caracteres de um dos resultados obtidos no XML, mas noob que sou em Javascript apanhei bastante para fazer isso – e como estava offline a tarde toda, não rolou.

 

[update]

Como eu já comentei, sou bastante noob no Javascript e existe uma função nativa para limitar os caracteres de uma variável, portanto aqui vai a solução que o Chris deu nos comentários, melhor que a solução que fiz.

A função subsrt() permite selecionar os caracteres de uma variável, por exemplo:

var jujuba = "Haduken neles!";
var jujuba2 = jujuba.str(0,7);
var jujuba3 = jujuba.str(8,13);

No exemplo acima, teriamos como resultado as seguintes variáveis:

jujuba2 = Haduken
jujuba3 = neles

Como eu não sabia da existência da função substr() eu fiz uma função para limitar caracteres, que funciona bem mas é totalmente inútil visto que isso pode ser feito com apenas uma linha.

Manterei o post original e a função abaixo apenas para fins de estudo e exemplo, mas se seu único intuito é limitar os caracteres de uma variável sua resposta está aí em cima.

[/update]

 

Voltei a procurar uma solução para o problema agora a noite, e baseado no script de retirar acentos com Javascript fiz algumas alterações para focar no que eu queria.

Criei uma função que limita os caracteres de uma variável, e funciona de forma bem simples:

function limita(str,limite) {
   nova=´´;
   for(i=0;i<limite;i++) {
      nova+=str.substr(i,1);
   }
   return nova;
}

As duas variáveis da função são:

str – é a variável que você vai "cortar"
limite – número de caracteres máximo para a variável

Por exemplo, se eu chamar a função limita("Haduken neles!",4) meu resultado será apenas os 4 primeiros caracteres: Hadu.

Simples porém funcional, não sei se existe alguma função do javascript para limitar os caracteres (como o left, no asp). Tentei utilizar o length, mas nenhuma das tentativas funcionou, por hora a solução será esta. 🙂

Interpretando XML com Jquery

Estudando jQuery para o desenvolvimento de novas ferramentas para o And After (a nova Vitrine Buscapé) resolvi publicar um artigo exemplificando como ler XML com jQuery.

Primeiro devo deixar claro que meu relacionamento com Javascript é bem tímido, o pouco que sei são aprendizados recentes mas o jQuery tem ajudado muito por facilitar bastantes as coisas. Sei que o Chris vai dizer que Prototype apresenta mais vantagens, mas testei rapidamente as duas bibliotecas sem saber quase nada de Javascript e a que teve mais efetividade no desenvolvimento foi jQuery, que optei por estudar.

"Instalando" o jQuery

O primeiro passo para utilizar a biblioteca é fazer com o que o usuário carregue ela, não baixe ela no seu servidor, o Google Ajax Libraries faz isso e traz duas vantagens principais:

  1. Economia de banda no seu servidor
  2. Maior chance de usar o cache do usuário, diminuindo o tempo e carregamento
  3.  
<script src="http://www.google.com/jsapi"></script> 
<script type="text/javascript"> 
//1 - carrega bibliotecas prototype e scriptaculous 
google.load("jquery", "1.2.6");
</script>

 

Biblioteca colocada na página, podemos agora passar para o próximo passo.

 

XML

Aqui está a estrutura do XML que utilizei para o exemplo, utilizei este feed, que exibe os resultados da busca no Twitter pelo meu username (@gserrano), mas poderia ser resultados do Flickr, do Google, do feed do seu blog ou de um relatório de um aplicativo web.

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns:google="http://base.google.com/ns/1.0" xml:lang="en-US" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns="http://www.w3.org/2005/Atom" xmlns:twitter="http://api.twitter.com/">
  <id>tag:search.twitter.com,2005:search/gserrano</id>
  <link type="text/html" rel="alternate" href="http://search.twitter.com/search?q=gserrano"/>
  <link type="application/atom+xml" rel="self" href="http://search.twitter.com/search.atom?q=gserrano"/>
  <title>gserrano - Twitter Search</title>
  <link type="application/opensearchdescription+xml" rel="search" href="http://search.twitter.com/opensearch.xml"/>
  <link type="application/atom+xml" rel="refresh" href="http://search.twitter.com/search.atom?q=gserrano&amp;since_id=1011974184"/>
  <updated>2008-11-18T23:30:00Z</updated>
  <openSearch:itemsPerPage>15</openSearch:itemsPerPage>
  <link type="application/atom+xml" rel="next" href="http://search.twitter.com/search.atom?max_id=1011974184&amp;page=2&amp;q=gserrano"/>
  <entry>
    <id>tag:search.twitter.com,2005:1011974184</id>
    <published>2008-11-18T23:30:00Z</published>
    <link type="text/html" rel="alternate" href="http://twitter.com/gserrano/statuses/1011974184"/>
    <title>@chrisloki parab&#233;ns pra ti, #odesenvolvedor com um crescimento de 50% na visita&#231;&#227;o no &#250;tlimo m&#234;s! :D</title>
    <content type="html">&lt;a href="http://twitter.com/chrisloki"&gt;@chrisloki&lt;/a&gt; parab&#233;ns pra ti, &lt;a href="/search?q=%23odesenvolvedor"&gt;#odesenvolvedor&lt;/a&gt; com um crescimento de 50% na visita&#231;&#227;o no &#250;tlimo m&#234;s! :D</content>
    <updated>2008-11-18T23:30:00Z</updated>
    <link type="image/png" rel="image" href="http://s3.amazonaws.com/twitter_production/profile_images/62939563/gserrano2_normal.jpg"/>
    <link type="application/atom+xml" rel="thread" href="http://search.twitter.com/search/thread/1011974184.atom"/>
    <author>
      <name>gserrano (Guilherme Serrano)</name>
      <uri>http://twitter.com/gserrano</uri>
    </author>
  </entry>
  <entry>
    <id>tag:search.twitter.com,2005:1011941353</id>
    <published>2008-11-18T23:06:02Z</published>
    <link type="text/html" rel="alternate" href="http://twitter.com/chrisloki/statuses/1011941353"/>
    <title>@gserrano parab&#233;ns o/ uhu!</title>
    <content type="html">&lt;a href="http://twitter.com/gserrano"&gt;@&lt;b&gt;gserrano&lt;/b&gt;&lt;/a&gt; parab&#233;ns o/ uhu!</content>
    <updated>2008-11-18T23:06:02Z</updated>
    <link type="image/png" rel="image" href="http://s3.amazonaws.com/twitter_production/profile_images/61066338/ble_normal.jpg"/>
    <link type="application/atom+xml" rel="thread" href="http://search.twitter.com/search/thread/1011941353.atom"/>
    <author>
      <name>chrisloki (Chris Benseler)</name>
      <uri>http://twitter.com/chrisloki</uri>
    </author>
  </entry>
  <entry>
    <id>tag:search.twitter.com,2005:1011934314</id>
    <published>2008-11-18T23:01:16Z</published>
    <link type="text/html" rel="alternate" href="http://twitter.com/gserrano/statuses/1011934314"/>
    <title>a natureza &#233; fascinante, animais disfar&#231;ados de folha. ah, sapecas! http://tinyurl.com/5q8c88</title>
    <content type="html">a natureza &#233; fascinante, animais disfar&#231;ados de folha. ah, sapecas! &lt;a href="http://tinyurl.com/5q8c88"&gt;http://tinyurl.com/5q8c88&lt;/a&gt;</content>
    <updated>2008-11-18T23:01:16Z</updated>
    <link type="image/png" rel="image" href="http://s3.amazonaws.com/twitter_production/profile_images/62939563/gserrano2_normal.jpg"/>
    <author>
      <name>gserrano (Guilherme Serrano)</name>
      <uri>http://twitter.com/gserrano</uri>
    </author>
  </entry>
  <entry>
    <id>tag:search.twitter.com,2005:1011925155</id>
    <published>2008-11-18T22:54:46Z</published>
    <link type="text/html" rel="alternate" href="http://twitter.com/gserrano/statuses/1011925155"/>
    <title>um culto ao ego, #andafter teve um crescimento de 15% nas visitas no &#250;ltimo m&#234;s. (olhando as novidades do google analyctics).</title>
    <content type="html">um culto ao ego, &lt;a href="/search?q=%23andafter"&gt;#andafter&lt;/a&gt; teve um crescimento de 15% nas visitas no &#250;ltimo m&#234;s. (olhando as novidades do google analyctics).</content>
    <updated>2008-11-18T22:54:46Z</updated>
    <link type="image/png" rel="image" href="http://s3.amazonaws.com/twitter_production/profile_images/62939563/gserrano2_normal.jpg"/>
    <author>
      <name>gserrano (Guilherme Serrano)</name>
      <uri>http://twitter.com/gserrano</uri>
    </author>
  </entry>
  <entry>
    <id>tag:search.twitter.com,2005:1011912798</id>
    <published>2008-11-18T22:46:14Z</published>
    <link type="text/html" rel="alternate" href="http://twitter.com/bpinaud/statuses/1011912798"/>
    <title>@gserrano Voc&#234; foi um dos pioneiros a falar das buscas no iSofa.tv. Por isso te adicionei. Obrigado. Abra&#231;os.</title>
    <content type="html">&lt;a href="http://twitter.com/gserrano"&gt;@&lt;b&gt;gserrano&lt;/b&gt;&lt;/a&gt; Voc&#234; foi um dos pioneiros a falar das buscas no iSofa.tv. Por isso te adicionei. Obrigado. Abra&#231;os.</content>
    <updated>2008-11-18T22:46:14Z</updated>
    <link type="image/png" rel="image" href="http://s3.amazonaws.com/twitter_production/profile_images/52836833/BPeoLeao_normal.JPG"/>
    <link type="application/atom+xml" rel="thread" href="http://search.twitter.com/search/thread/1011912798.atom"/>
    <author>
      <name>bpinaud (Bruno Pinaud)</name>
      <uri>http://twitter.com/bpinaud</uri>
    </author>
  </entry>
  <entry>
    <id>tag:search.twitter.com,2005:1011871230</id>
    <published>2008-11-18T22:17:19Z</published>
    <link type="text/html" rel="alternate" href="http://twitter.com/bpinaud/statuses/1011871230"/>
    <title>@gserrano Obrigado, cara, muito legal saber que voc&#234; est&#225; curtindo. Tem mais de 300 canais aguardando pra entrar no menu novo. Avise qqc.</title>
    <content type="html">&lt;a href="http://twitter.com/gserrano"&gt;@&lt;b&gt;gserrano&lt;/b&gt;&lt;/a&gt; Obrigado, cara, muito legal saber que voc&#234; est&#225; curtindo. Tem mais de 300 canais aguardando pra entrar no menu novo. Avise qqc.</content>
    <updated>2008-11-18T22:17:19Z</updated>
    <link type="image/png" rel="image" href="http://s3.amazonaws.com/twitter_production/profile_images/52836833/BPeoLeao_normal.JPG"/>
    <link type="application/atom+xml" rel="thread" href="http://search.twitter.com/search/thread/1011871230.atom"/>
    <author>
      <name>bpinaud (Bruno Pinaud)</name>
      <uri>http://twitter.com/bpinaud</uri>
    </author>
  </entry>
  <entry>
    <id>tag:search.twitter.com,2005:1011868941</id>
    <published>2008-11-18T22:15:50Z</published>
    <link type="text/html" rel="alternate" href="http://twitter.com/oPadreVoador/statuses/1011868941"/>
    <title>@gserrano hahaha, tomara o/ que melhore ai e que eu descanse aqui ;D</title>
    <content type="html">&lt;a href="http://twitter.com/gserrano"&gt;@&lt;b&gt;gserrano&lt;/b&gt;&lt;/a&gt; hahaha, tomara o/ que melhore ai e que eu descanse aqui ;D</content>
    <updated>2008-11-18T22:15:50Z</updated>
    <link type="image/png" rel="image" href="http://s3.amazonaws.com/twitter_production/profile_images/60831933/opvlogovp0_normal.png"/>
    <link type="application/atom+xml" rel="thread" href="http://search.twitter.com/search/thread/1011868941.atom"/>
    <author>
      <name>oPadreVoador (oPadreVoador)</name>
      <uri>http://twitter.com/oPadreVoador</uri>
    </author>
  </entry>
  <entry>
    <id>tag:search.twitter.com,2005:1011861566</id>
    <published>2008-11-18T22:10:40Z</published>
    <link type="text/html" rel="alternate" href="http://twitter.com/gserrano/statuses/1011861566"/>
    <title>que acharam do photobucket do wall-e? eu adoro os backrounds do photobucket.</title>
    <content type="html">que acharam do photobucket do wall-e? eu adoro os backrounds do photobucket.</content>
    <updated>2008-11-18T22:10:40Z</updated>
    <link type="image/png" rel="image" href="http://s3.amazonaws.com/twitter_production/profile_images/62939563/gserrano2_normal.jpg"/>
    <author>
      <name>gserrano (Guilherme Serrano)</name>
      <uri>http://twitter.com/gserrano</uri>
    </author>
  </entry>
  <entry>
    <id>tag:search.twitter.com,2005:1011857210</id>
    <published>2008-11-18T22:07:39Z</published>
    <link type="text/html" rel="alternate" href="http://twitter.com/gserrano/statuses/1011857210"/>
    <title>@oPadreVoador que assim seja! mas eu nem deveria descansar. &#233; que simplesmente n&#227;o rolou produ&#231;&#227;o, vamos ver se a noite melhora. :D</title>
    <content type="html">&lt;a href="http://twitter.com/oPadreVoador"&gt;@oPadreVoador&lt;/a&gt; que assim seja! mas eu nem deveria descansar. &#233; que simplesmente n&#227;o rolou produ&#231;&#227;o, vamos ver se a noite melhora. :D</content>
    <updated>2008-11-18T22:07:39Z</updated>
    <link type="image/png" rel="image" href="http://s3.amazonaws.com/twitter_production/profile_images/62939563/gserrano2_normal.jpg"/>
    <link type="application/atom+xml" rel="thread" href="http://search.twitter.com/search/thread/1011857210.atom"/>
    <author>
      <name>gserrano (Guilherme Serrano)</name>
      <uri>http://twitter.com/gserrano</uri>
    </author>
  </entry>
  <entry>
    <id>tag:search.twitter.com,2005:1011847664</id>
    <published>2008-11-18T22:01:28Z</published>
    <link type="text/html" rel="alternate" href="http://twitter.com/gserrano/statuses/1011847664"/>
    <title>@bpinaud bem vindo! e parabens pelo isofa, &#243;tima alternativa para minhas madrugadas. :D</title>
    <content type="html">&lt;a href="http://twitter.com/bpinaud"&gt;@bpinaud&lt;/a&gt; bem vindo! e parabens pelo isofa, &#243;tima alternativa para minhas madrugadas. :D</content>
    <updated>2008-11-18T22:01:28Z</updated>
    <link type="image/png" rel="image" href="http://s3.amazonaws.com/twitter_production/profile_images/62939563/gserrano2_normal.jpg"/>
    <link type="application/atom+xml" rel="thread" href="http://search.twitter.com/search/thread/1011847664.atom"/>
    <author>
      <name>gserrano (Guilherme Serrano)</name>
      <uri>http://twitter.com/gserrano</uri>
    </author>
  </entry>
  <entry>
    <id>tag:search.twitter.com,2005:1011843370</id>
    <published>2008-11-18T21:58:46Z</published>
    <link type="text/html" rel="alternate" href="http://twitter.com/gserrano/statuses/1011843370"/>
    <title>Acho mto ruim quando algu&#233;m tenta promover uma coisa pr&#243;pria sem dizer que tem liga&#231;&#227;o com aquilo. S&#243; passa desconfian&#231;a.</title>
    <content type="html">Acho mto ruim quando algu&#233;m tenta promover uma coisa pr&#243;pria sem dizer que tem liga&#231;&#227;o com aquilo. S&#243; passa desconfian&#231;a.</content>
    <updated>2008-11-18T21:58:46Z</updated>
    <link type="image/png" rel="image" href="http://s3.amazonaws.com/twitter_production/profile_images/62939563/gserrano2_normal.jpg"/>
    <author>
      <name>gserrano (Guilherme Serrano)</name>
      <uri>http://twitter.com/gserrano</uri>
    </author>
  </entry>
  <entry>
    <id>tag:search.twitter.com,2005:1011820041</id>
    <published>2008-11-18T21:43:32Z</published>
    <link type="text/html" rel="alternate" href="http://twitter.com/oPadreVoador/statuses/1011820041"/>
    <title>@gserrano hoje foi meu dia de correria, ser&#225; que amanh&#227; eu descanso? *-*</title>
    <content type="html">&lt;a href="http://twitter.com/gserrano"&gt;@&lt;b&gt;gserrano&lt;/b&gt;&lt;/a&gt; hoje foi meu dia de correria, ser&#225; que amanh&#227; eu descanso? *-*</content>
    <updated>2008-11-18T21:43:32Z</updated>
    <link type="image/png" rel="image" href="http://s3.amazonaws.com/twitter_production/profile_images/60831933/opvlogovp0_normal.png"/>
    <link type="application/atom+xml" rel="thread" href="http://search.twitter.com/search/thread/1011820041.atom"/>
    <author>
      <name>oPadreVoador (oPadreVoador)</name>
      <uri>http://twitter.com/oPadreVoador</uri>
    </author>
  </entry>
  <entry>
    <id>tag:search.twitter.com,2005:1011815993</id>
    <published>2008-11-18T21:40:49Z</published>
    <link type="text/html" rel="alternate" href="http://twitter.com/gserrano/statuses/1011815993"/>
    <title>Ontem o dia foi uma correria do capeta, a&#237; pra compensar hj eu n&#227;o fiz NADA.</title>
    <content type="html">Ontem o dia foi uma correria do capeta, a&#237; pra compensar hj eu n&#227;o fiz NADA.</content>
    <updated>2008-11-18T21:40:49Z</updated>
    <link type="image/png" rel="image" href="http://s3.amazonaws.com/twitter_production/profile_images/62939563/gserrano2_normal.jpg"/>
    <author>
      <name>gserrano (Guilherme Serrano)</name>
      <uri>http://twitter.com/gserrano</uri>
    </author>
  </entry>
  <entry>
    <id>tag:search.twitter.com,2005:1011776936</id>
    <published>2008-11-18T21:15:30Z</published>
    <link type="text/html" rel="alternate" href="http://twitter.com/gserrano/statuses/1011776936"/>
    <title>que tal servir aperitivo num ralo pra banheiro? http://tinyurl.com/5obmlo</title>
    <content type="html">que tal servir aperitivo num ralo pra banheiro? &lt;a href="http://tinyurl.com/5obmlo"&gt;http://tinyurl.com/5obmlo&lt;/a&gt;</content>
    <updated>2008-11-18T21:15:30Z</updated>
    <link type="image/png" rel="image" href="http://s3.amazonaws.com/twitter_production/profile_images/62939563/gserrano2_normal.jpg"/>
    <author>
      <name>gserrano (Guilherme Serrano)</name>
      <uri>http://twitter.com/gserrano</uri>
    </author>
  </entry>
  <entry>
    <id>tag:search.twitter.com,2005:1011521172</id>
    <published>2008-11-18T18:32:52Z</published>
    <link type="text/html" rel="alternate" href="http://twitter.com/gserrano/statuses/1011521172"/>
    <title>@chrisloki "eu sei que n&#227;o, mas vou fazer" &#233; o que diferencia homens de meninos. gogo! :D</title>
    <content type="html">&lt;a href="http://twitter.com/chrisloki"&gt;@chrisloki&lt;/a&gt; &amp;quot;eu sei que n&#227;o, mas vou fazer&amp;quot; &#233; o que diferencia homens de meninos. gogo! :D</content>
    <updated>2008-11-18T18:32:52Z</updated>
    <link type="image/png" rel="image" href="http://s3.amazonaws.com/twitter_production/profile_images/62939563/gserrano2_normal.jpg"/>
    <link type="application/atom+xml" rel="thread" href="http://search.twitter.com/search/thread/1011521172.atom"/>
    <author>
      <name>gserrano (Guilherme Serrano)</name>
      <uri>http://twitter.com/gserrano</uri>
    </author>
  </entry>
</feed>
 

 

Interpretar XML com jQuery

 Aqui está o código que ao carregar a página identifica qual XML será lido, busca pelos dados "entry" no XML e gera um loop entre eles, exibindo a mensagem que está no XML.

 

<script type="text/javascript">
        $(function(){
        $("#tweets").fadeOut("fast");
            $.ajax({
                 type: "GET",
                 url: "search.xml",
                 dataType: "xml",
                 success: function(xml) {
                 
                    $(xml).find("entry").each(function(){
                         var link =  $(this).find("link").attr("href");
                         var texto = $(this).find("content").text();
                         $("<li></li>")
                             .html(texto + " <a href=´" + link + "´>Ver tweet</a>")
                             .appendTo("#tweets");
                     }); //close each(
                    $("#tweets").fadeIn("slow");
                }
             }); //close $.ajax(
        });
</script>

 

Neste caso utilizei a requesição utilizando a função ".ajax" do jQuery, em meus testes não consegui fazer retornar direto da busca, portanto seria necessário utilizar programação server-side como ASP ou PHP para gerar o XML para o Javascript. Não é a melhor solução se você precisa ler XML externo. Uma forma melhor de fazer isto é utilizar seu servidor como Proxy através do Isapi Rewrite (para quem utiliza IIS) e acredito que deve ser possível com htaccess. Se alguém tem alguma dica melhor, estou aqui mais para aprender do que para ensinar, comenta aí! 🙂

Talvez uma estudada em XML-RPC resolva este problema para ler o XML externo, se não me engano eu já fiz isso só com jQuery, mas acho que estava utilizando JSON e não XML como resposta.

A função .ajax carrega o arquivo search.xml (o xml que utilizei no exemplo) e chama a função para a leitura. Chamei um loop para cada "entry" encontrado no meu XML, portanto "entry" é cada linha que eu gostaria de ler (no caso, cada tweet retornado pela busca).

Busquei apenas duas variáveis, o link para o tweet original:

var link =  $(this).find("link").attr("href");

Que no XML está como o atributo href, na linha abaixo:

<link type="text/html" rel="alternate" href="http://twitter.com/gserrano/statuses/1011776936"/>

E recuperei também o texto do tweet, que são as duas únicas variáveis que utilizei para o exemplo. Dentro do loop eu criei elementos de lista <li></li>, onde adicionei as variáveis e no final utilizei o .appendTo para inserir cada elemento da lista dentro do elemento com ID tweets que deve estar no HTML.

 A função fade é opcional, utilizei apenas porque sou designer para suavizar a visualização no carregamento da lista.

HTML

Como explicado acima, depois de montar a lista o script procura o elemento com o id tweets, portanto a única coisa necessária no HTML do documento é uma lista <ul> ou <ol> com o id correto.

<ol id="tweets"></ol>

É isso, qualquer sugestão ou dúvida comente, como eu disse: estou muito mais apto a aprender do que a ensinar por aqui, mas espero ter ajudado. 🙂

Veja o exemplo funcionando.

Weekday() – Dia da semana em ASP

Estava fazendo umas rotinas para melhorar a auto-organização de algumas novidades do And After e lembrei como eu achava chato a manipulação de datas quando comecei a programar.

Hoje vou explicar como funciona apenas o weekday em ASP, que serve para pegar o dia da semana de uma data.

 

Pegando o dia de hoje

Para ter como resultado o dia da semana de hoje o código é

 weekday(now()) 

Isso vai resultar um número, equivalente ao dia da semana, segindo a ordem lógica (que coloquei aí abaixo):

  • 1 – Domingo
  • 2 – Segunda-feira
  • 3 – Terça-feira
  • 4 – Quarta-Feira
  • 5 – Quinta-Feira
  • 6 – Sexta-Feira
  • 7 – Sábado

 

Dia da semana de uma data qualquer

Bom, utilizando o weekday eu acabei de descobrir que nasci em uma Quinta-Feira, ao invés de usar now() que recupera a data atual inserimos a data que queremos lá.

  weekday("19/01/2007")  

 

Transformando o número em palavra (segunda, terça…)

Depois de recuperar o dia da semana você pode transformar o número retornado em palavra, para isso vamos utilizar um array

arrayDS = array("Domingo","Segunda-Feira","Terça-Feira","Quarta-Feira","Quinta-Feira","Sexta-Feira","Sábado")

diadasemana = arrayDS(weekday(now())-1)

Como o array começa em ZERO e a resposta do weekday começa em 1 faço a subtração por 1 para ajustar o numeral do dia da semana com o array.

 

Simples, fácil e nenhuma novidade para quem já programa.

Dedicado aos iniciantes!

 

Quer aprender mais?

Protegendo seu e-mail de spammers

Infelizmente muita gente acha que pós venda ou e-mail marketing é simplesmente sair enviando e-mails adoidado para qualquer um que apareça na frente. Isso é spam. Aqui tem algumas dicas sobre como fazer um e-mail markerting eficiente, hoje escrevo para uma dica de como evitar que seu e-mail caia nos bancos de dados de spammers…

Para montar um banco de dados com e-mails os spammers utilizam bots que navegam livremente pela internet, coletando todos os e-mails que  eles conseguem "ler" nas páginas, então quando você coloca seu e-mail em um texto ou um link de mailto ele terá chances (enormes) de parar em algum CD vendido na Santa Efigênia com 2 milhões de e-mails.

 

Como você pode ajudar combater o SPAM?

Aqui vão duas técnicas que não levam tempo nenhum e vão ajudar a reduzir o spam – para você e para todo mundo. Se a maioria dos usuários fizesse isso…

 

Mas você quer facilitar a vida do usuário, divulgar seu e-mail e deixar seu cliente a um clique de escrever um e-mail, certo? O pinceladas da web divulgou uma excelente solução em JQuery (do kevinleary) que pega seu e-mail "camuflado" e torna ele um link quando o usuário acessa a página.

Facilita a vida dos usuários do seu site sem deixar seu e-mail ser lido por bots – a não ser que elex executem o javascript antes de ler a página, claro.

Como proteger o e-mail de spammers?

Antes você precisa ter o JQuery "instalado" no seu site, se você ainda não tem recomendo ler o post do Chris sobre a Google AJAX Libraries API que mantém seu site com sua biblioteca favorita sempre atualizada e sem ter que hospedar arquivo nenhum.

Com o Jquery configurado no site, vamos ao código que faz a mágica acontecer: 

$(document).ready(function(){
	$("a[rel=´email´]").each(function(){
		// Modifica o valor de mailto:
		var mailtoVal = $(this).attr(´href´);
		mailtoVal = mailtoVal.replace("[email]","mailto:");
		mailtoVal = mailtoVal.replace("[at]","@");
		mailtoVal = mailtoVal.replace("[dot]",".");
		// Gera automaticamente a tag title para os usuários
		var mailtoTitle = mailtoVal.replace("mailto:","Email: ");
		$(this).attr(´title´,mailtoTitle);
		// Evento onClick
		$(this).click(function(){
			window.location.href = mailtoHref;
			return false;
		});
	});
});

E para colocar o link protegido é simples, seu e-mail deve ficar assim:

Contato

Simples e eficiente! 😉

Como matar o dragão e salvar a princesa – pelos programador

Certa vem um dragão aprisionou um alinda princesa em uma torre em uma ilha, a única forma de se acessar esta ilha era atravez de uma ponte na qual o dragão ficava dia e noite de vigia, então lá vão nossos "heróis" da informática salvar a princesa, cada uma sua maneira:

Programador Java
Chega, encontra o dragão. Desenvolve um framework para aniquilamento de dragões em múltiplas camadas. Escreve vários artigos sobre o framework, mas não mata o dragão.

Programador .NET
Chega, olha a ideia do Javanês e a copia, tenta matar o dragão, mas é comido pelo réptil.

Programador C
Chega, olha para o dragão com olhar de desprezo, puxa seu canivete, minúsculo extremamente leve e simples degola o dragão. Encontra a princesa, mas a ignora para ver os últimos checkins no cvs do kernel do linux.

Programador C++
Cria um canivete básico e vai juntando funcionalidades até ter uma espada complexa avassaladora, mas que apenas ele consegue entender … Mata o dragão, mas trava no meio da ponte por causa dos memory leaks.

Programador COBOL
Chega,olha o dragão, pensa que tá velho demais para conseguir matar um bicho daquele tamanho e pegar a princesa e, então, vai embora de volta ao seu mundinho.

Programador Pascal
Se prepara durante 10 anos para criar um sistema de aniquilamento de dragão… Chegando lá descobre que o programa só aceita lagartixas no máximo médias como entrada.

Programador VB
Monta uma arma de destruição de dragões a partir de vários componentes, parte pro pau pra cima do dragão e, na hora H, descobre que a espada só funciona durante noites chuvosas, e deve ser reiniciada a cada golpe para voltar a funcionar, só não sabe o pq disso…

Programador PL/SQL
Coleta dados de outros matadores de dragão, cria tabelas com N relacionamentos de complexidade ternaria, dados em 3 dimensões, OLAP, demora 15 anos para processar a informação. Enquanto isso a princesa virou lésbica.

Programador Ruby
Chega com uma p*t* fama, falando que é o melhor faz tudo, quando vai enfrentar o dragão ao invés de ir pros finalmente, mostra um videozinho dele matando um dragao … O dragão come ele de tédio.

Programador Smalltalk
chega, analisa o dragão e a princesa, vira as costas e vai embora, pois eles são muito inferiores.

Programador shell
cria uma arma poderosa para matar os dragões, mas, na hora H, não se lembra como usá-la.

Programador shell(2)
o cara chega no dragão com um script de 2 linhas que mata, corta, estripa, empala, pica em pedacinhos e empalha o bicho, mas na hora que ele roda, o script aumenta, engorda, enfurece e coloca álcool no fogo do dragão.

Programador ASSEMBLY
acha que está fazendo o mais certo e enxuto, porém troca um A por D, mata a princesa e transa com o dragão.

Programador Fortran
Chega desenvolve uma solução com 45000 linhas de codigo, mata o dragão vai ao encontro da princesa … mas esta o chama de tiuzinho e sai correndo atrás do programador java que era elegante e ficou rico.

Programador FOX PRO
Desenvolve um sistema para matar o dragão, por fora é bunitinho e funciona, mas por dentro está tudo remendado. Quando ele vai executar o aniquilador de dragões descobre que esqueceu de indexar os DBF´s.

Programador CLIPPER
Monta uma rotina que carrega um array de codeblocks para insultar o dragão, cantar a princesa, carregar a espada para memória, moer o dragão, limpar a sujeira, lascar leite condensado com morangos na princesa gostosa, transar com a princesa, tomar banho, ligar o carro, colocar gasolina e voltar pra casa. Na hora de rodar recebe um "Bound Error: Array Access" e o dragão come ele com farinha.

 

*texto retirado dessa comunidade do Orkut