Skip to content

Posts tagged ‘Yahoo’

16
Dez

Bibliotecas JavaScript

Mochikit

Mochikit

O Mochikit é o filho caçula de Bob Ippolito (o par­tic­i­pante prin­ci­pal) e está disponível no site do Mochikit. O pacote prin­ci­pal tem aprox­i­mada­mente 90 Kb (com­pactado), mas você pode carregá-lo em módu­los sep­a­ra­dos. A bib­lioteca tam­bém é dis­tribuída com a ver­são do frame­work do Python para web, chamada de Tur­bo­Gears.

Nas palavras do Bob:

Nós anal­isamos todas as idéias que poderíamos encon­trar apartir da nossa exper­iên­cia com Python e foram adap­tadas ao mundo louco do JavaScript”

Assim, em uma visão macro, o Mochikit extrai algu­mas fun­cional­i­dades do Python para sua API. Se você é famil­iar com o Python, você terá um apren­dizado ime­di­ato com o Mochikit, emb­ora tenha uma API sim­ples que seja razoavel­mente fácil de uti­lizar. De todas as bib­liote­cas ressaltadas neste artigo, a API do Mochikit trans­mite ser a mais “preparada”.

Quando estiver começando com o Mochikit, você precisará:

  1. Assi­s­tir ao screen­cast do Bob.
  2. Começar uti­lizando o inter­pre­ta­dor inter­a­tivo exce­lente do Mochikit. Esta é uma boa maneira de enten­der a bib­lioteca e ter uma com­preen­são básica de como Mochikit trabalha.

O básico sobre Mochikit

Ao tra­bal­har com o DOM, o Mochikit traz alguns truques na luva:

var warning = P(
 { 'class' : 'warning' },
 "Por favor insira um ", STRONG(null, "endereço de e-mail válido")
);
swapDOM(document.getElementById("notificacoes"), warning);

Este código usará os méto­dos W3C DOM rel­e­vantes para os nós da árvore equiv­a­lentes ao código HTML seguinte:

<p class="warning">Please provide a <strong>valid email address</strong></p>

O código do Mochikit está quase mais limpo do que a sin­taxe do HTML!

O módulo do Mochikit.DOM con­tem tam­bém out­ros méto­dos para a manip­u­lação fácil do DOM, tal como o método do swap­DOM men­cionado acima e toHTML (que con­verte um nó de DOM ao HTML que representa).

Assim como na manip­u­lação de even­tos, o Mochikit foi pro­je­tado para que seja imple­men­tado no módulo de Mochikit.Signal. Foi baseado em torno do con­ceito de conec­tar um ouvinte a um sinal que fosse emi­tido por um objeto. Todos os even­tos reg­u­lares do DOM são sinais, mas você pode criar seus próprios tam­bém. O método conec­tar faz todo o tra­balho aqui:

// conecta o sinal do onclick no elemento com id="thing"
// para a função showDialog, com pontos para este elemento.
connect($('thing'), 'onclick', showDialog);

// conecta o sinal do onsubmit para o elemento id="form" para
// o formController.checkSubmit, com pontos para o objeto formController.
connect($('form'), 'onsubmit', formController, 'checkSubmit');

Você pode fazer seus próprios obje­tos enviar sinais com o método do sinal:

signal(anObject, 'a_signal');

O mate­r­ial de AJAX é segu­rado pelo módulo Mochit.Async, e pelos obje­tos aux­il­iares que se encon­tram no núcleo de sua imple­men­tação. Para exe­cu­tar uma chamada básica de AJAX, use o load­J­SON­Doc ou doSim­pleXML­HttpRe­quest:

var request = doSimpleXMLHttpRequest('opcoes.php',
   { q : 'desenvolvedor web'}
);

Esta função retorna um objeto aux­il­iar, em que você pode fazer novas chamadas:

request.addCallbacks(mySuccessFunction, myErrorFunction);

Quando o XML­HttpRe­quest se exe­cuta, a função pas­sada na chamada acima (mySuc­cess­Func­tion) passa o objeto do XML­HttpRe­quest como o argumento:

function mySuccessFunction(req) {
 alert(req.responseText);
}

Os obje­tos aux­il­iares são úteis para a pro­gra­mação assín­crona e são uma grande idéia. Leia mais sobre o assunto, ou veja o screen­cast para mais detalhes.

Prós e contras

Primeira­mente, a estru­tura de log do Mochikit é exce­lente. Adi­cionar indi­cações sim­ples­mente utilizando:

log("Bem melhor que o alert");
log("ERRO Esta coisa está quebrada");

O Mochikit faz uso tam­bém de car­ac­terís­ti­cas da pro­gra­mação fun­cional do Javascript para realçar e sim­pli­ficar sua bib­lioteca API. Por exem­plo, se você quiser clas­si­ficar um grupo dos obje­tos por seus nomes de pro­priedades, você pode usar o key­Compara­tor criar a função de clas­si­fi­cação para você:

var sortedByName = people.sort(keyComparator("name"));

Há tam­bém a função counter. Ela cria uma função que retorna um valor que seja incre­men­tado toda vez que for chamada:

var nextId = counter();
nextId(); //=> 1
nextId(); //=> 2
nextId(); //=> 3

Há tam­bém várias funções de iter­ação do estilo-Python, tais como forE­ach, map e fil­ter.

Quanto a doc­u­men­tação, o Mochikit tem uma doc­u­men­tação boa da API, mas os detal­hes em algu­mas partes muito bási­cas da bib­lioteca deixam a dese­jar. No detalhe, após ter lido toda a doc­u­men­tação, ter prestado atenção no screen­cast e ter escrito alguns scripts Mochikit, ainda sou incerto sobre qual a mel­hor ver­são da bib­lioteca para toda final­i­dade. Eu uso a ver­são com­pactada ou o Mochikit.js prin­ci­pal? Como posso car­regar as partes indi­vid­u­ais da biblioteca?

Entre­tanto, Mochikit tem uma lista de dis­cussão que responde a estes tipos de perguntas.

Yahoo! UI

Yahoo! UI Library

A bib­lioteca Yahoo! UI (YUI, como é apel­i­dada) foi desen­volvida pelo Yahoo! para o uso interno, mas teve seu código aberto recen­te­mente junto com uma gama de recur­sos exce­lentes para desen­volve­dores em developer.yahoo.com.

O YUI é mais uma coleção dis­tinta de “util­i­dades” do que uma bib­lioteca (como as que foram tratadas aqui), com cinco scripts prin­ci­pais que tratam de:

  • ani­mação
  • AJAX
  • manip­u­lação DOM
  • drag-and-drop
  • trata­mento de eventos

E há seis con­troles, chama­dos de:

  • Cal­en­dar
  • Slider
  • Menu
  • Auto­Com­plete
  • Tree View
  • Con­tainer classes (com o qual você pode exe­cu­tar janelas no estilo de widgets)

Você pode fazer down­load de cada um destes scripts sep­a­rada­mente no site developer.yahoo.com.

Cada uma das bib­liote­cas do Yahoo! depen­dem somente do arquivo yahoo.js. Por outro lado, esta aprox­i­mação ofer­ece uma exper­iên­cia ligeira­mente mais menos coer­ente para o desen­volve­dor e pode­ria pos­sivel­mente intro­duzir uma deter­mi­nada quan­ti­dade de repetição den­tro das bibliotecas.

Uma coisa inefi­caz sobre o YUI é o fato de que usa muito espaço inútil de strings. Cada chamada que você faz à bib­lioteca neces­sita ser pre­fix­ada com uma string do pacote:

var myAnim = new YAHOO.util.Anim(
 'test',
 { height: {to: 10} },
 1,
 YAHOO.util.Easing.easeOut
);
myAnim.animate();

O básico sobre YUI

A bib­lioteca de trata­mento de even­tos do YUI tem uma API muito famil­iar daque­las que são usadas nati­va­mente no browser. Entre­tanto, tem algu­mas sur­pre­sas agradáveis que o desen­volve­dor do Yahoo!, Dustin Diaz, expli­cou em detal­hes neste site. Você pode adi­cionar um sim­ples “ouvinte” como este:

YAHOO.util.event.addListener('object_id', 'click', callBackFunction);

Uma car­ac­terís­tica muito poderosa da bib­lioteca de even­tos é seu chamado ouvintes de evento. Essen­cial­mente, se você ten­tar unir um “ouvinte” a um ele­mento que não exista porque a página não car­regou ainda, esper­ará essa página para tornar-se disponível antes de unir ao evento. Esta é uma solução que talvez con­funda e frus­tre muitos novatos de DHTML.

A bib­lioteca de DOM resume as incon­sistên­cias do browser, per­mitindo o ajuste de esti­los das pro­priedades do ele­mento. Entre­tanto, enquanto toma cuidado das tare­fas comuns, exis­tem algu­mas sur­pre­sas aqui:

  • get é ver­são da função $ no YUI.
  • Um método inter­es­sante é o gen­er­ateId, que pode ser usado gerar IDs para ele­men­tos para que você possa rap­i­da­mente acessá-los em out­ros pon­tos do script.

O Geren­ci­ador de Conexão con­tem toda a mág­ica do AJAX no YUI, e seguindo a linha das out­ras bib­liote­cas, escolhe não fazer exame de uma aprox­i­mação alto-nível. Não faz nada mais do que fornecer uma relação cross browser ao XML­HttpRe­quest:

YAHOO.util.Connect.asyncRequest(
 'GET',
 'http://www.yahoo.com',
 callback
);

Um destaque é a rica inter­face call­back, que per­mite que você defina um objeto que envolva suas funções call­back com alguma con­fig­u­ração extra. Veja um exem­plo de objeto call­back:

var callback = {
 success: function(resp) { alert('WOO!!'); }, // called on success
 failure: function(resp) { alert('BOO!'); }, // called on error
 argument: arguments, // user defined arguments
 scope: formController // scope the callbacks are called within
}

Prós e contras

A doc­u­men­tação fornecida pelo Yahoo! para a bib­lioteca é exce­lente. O site tem a doc­u­men­tação for­mal da API, vários exem­p­los, uma lista de dis­cussão e algu­mas expli­cações breves das car­ac­terís­ti­cas prin­ci­pais de cada parte da bib­lioteca. O mel­hor lugar para ver­i­ficar para ver se há arti­gos sobre YUI é no site de Dustin Diaz, desen­volve­dor do Yahoo!.

Como eu citei acima, a imple­men­tação do con­t­role de even­tos é um dos atra­tivos do YUI. Entre­tanto, o restante da bib­lioteca, ao ser muito fun­cional, não con­tem tan­tas car­ac­terís­ti­cas ino­vado­ras como no Mochikit, Dojo e Pro­to­type, e por causa dos lon­gos nomes de pacotes, desen­volver com o YUI se torna, às vezes, uma tarefa longa.

Con­tudo a lista cres­cente dos com­po­nentes é muito rica. Por exem­plo, o com­po­nente de cal­endário (Cal­en­dar) suporta diver­sas lín­guas e múlti­plas seleções da data, e as classes do Con­tainer dão-lhe o poder de imple­men­tar todos os tipos inter­face com janelas. Um ponto ruim de usar estes com­po­nentes é que ten­dem a ser muito depen­dente de out­ras bib­liote­cas; neste dis­curso, Dean Edwards destaca como exem­plo o con­t­role do tree­view, que se usa em torno de 260 Kb do Javascript.

Con­clusão: Qual a melhor?

Bem, uma resposta curta a esta per­gunta é que não há nen­huma solução pronta que preen­cha todas as situações.

A bib­lioteca Pro­to­type é a que pos­sui uma doc­u­men­tação mais detal­hada. É tam­bém a bib­lioteca mais difun­dida neste momento. Nat­u­ral­mente, cam­inha para ser a escolha nat­ural dos desen­volve­dores Ruby porque abstrai várias car­ac­terís­ti­cas do Ruby on Rails. Outra coisa impor­tante sobre o Pro­to­type é que tem um peso dos Rails por trás e, em con­se­qüên­cia, há muitos desen­volve­dores que fornecem reparos e remen­dos do erro ao Pro­to­type. Final­mente, ofer­ece uma riqueza de bib­liote­cas adi­cionais tais como scrip­tac­u­lous, Rico, e Behav­iour que o faz uma boa e sól­ida escolha para muitos desenvolvedores.

Por outro lado, o Pro­to­type tem um frame­work de trata­mento de even­tos em-desenvolvimento, que é o prob­lema prin­ci­pal para uma bib­lioteca tão poderosa. Tam­bém – e esta é exclu­si­va­mente uma questão de gosto – a aprox­i­mação prag­mática do Pro­to­type às coisas (como o uso exces­sivo da pro­priedade do inner­HTML) pode pare­cer um pouco “suja” às vezes.

Para pro­je­tos menores, a forma que foi pro­je­tada e seus com­po­nentes, fazem do YUI um grande atra­tivo. É muito fácil de excluir um Geren­ci­ador de Conexão ou a bib­lioteca de Even­tos e começar fazendo algu­mas tare­fas bási­cas sem ter que atrav­es­sar uma curva de apren­diza­gem demasi­ada. No geral, con­tudo, não tem muito a ofer­e­cer nos ter­mos de car­ac­terís­ti­cas poderosas.

O Dojo é defin­i­ti­va­mente destaque deste grupo. E o foco do Dojo no desem­penho é um fator abso­luto se você estiver plane­ando uma apli­cação com uso inten­sivo de Javascript. A imple­men­tação de wid­get tem tam­bém um poten­cial enorme para a con­strução de com­plexos UIs. Entre­tanto é real­mente grande – ambos nos ter­mos de tamanho de arquivo e do tamanho da API – assim eu não o recomen­daria para pro­je­tos menores.

Na minha opinião, o Mochikit é muito bem pro­je­tado e o mel­hor dos qua­tro, e desen­volve­dores do Python/Twisted/Nevow acharão sua API muito famil­iar. Entre­tanto, sua doc­u­men­tação é escassa em alguns lugares (por exem­plo, eu ainda tenho dúvida a respeito de qual ver­são do Mochikit inserir no script). Tam­bém, algu­mas das téc­ni­cas fun­cionais que usa podem ser con­fusas para os novatos ou aque­les que não tem tanta prática em em téc­ni­cas de pro­gra­mação. Entre­tanto, vale a pena dar olha olhada. As fun­cional­i­dades do Mochikit provavel­mente sur­preen­derão você – a função cre­ate­DOM, as fer­ra­men­tas da iter­ação e a arquite­tura assín­crona são um tra­balho de arte.
Fonte:ciro­feitosa

5
Dez

Yahoo Arrependida

A Yahoo um dos maiores por­tais do mundo mostra-se arrepen­dida por não ter ven­dido as suas acções a Microsoft.

As vezes a emoção é provoca má gestão e aqui fica uma lição para quando por vezes pen­samos demasi­ado com o coração e menos com a cabeça.

Aqui fica um excerto do Texto pub­li­cado no suple­mento de Econo­mia do Público, a 28 de Novem­bro 2008

o Prob­lema foi o sangue roxo de Jerry Yang

Todos vocês sabem que eu tenho, e sem­pre terei, sangue roxo”. A afir­mação é de Jerry Yang e o roxo é a cor de marca do Yahoo, site que fun­dou em 1994 e de que foi pres­i­dente exec­u­tivo ao longo do último ano e meio.

A frase – parte da men­sagem que enviou em Novem­bro a todos os fun­cionários, no dia em que anun­ciou o aban­dono do cargo – é a sín­tese do que muitos con­sid­eram ter sido o grande erro: demasi­ado lig­ado ao Yahoo, Yang deixou-se levar pelos sen­ti­men­tos e fez tudo para fugir à pro­posta de com­pra com que a Microsoft avançou em Fevereiro.

Jerry Yang, 40 anos, faz parte da ger­ação que na década de 90 via (e, provavel­mente, ainda vê) a Microsoft como um gigante dom­i­nador da tec­nolo­gia. O Yahoo (tal como acon­te­ceu com o Google, poucos anos depois) nasceu numa lóg­ica de contra-corrente. Não sur­preende que o fun­dador estivesse con­tra a pos­si­bil­i­dade de vender a empresa ao império de Bill Gates, solução que era preferida por muitos anal­is­tas de mer­cado e muitos accionistas de refer­ên­cia, incluindo o mul­ti­m­il­ionário Carl Icahn, que chegou a ten­tar destronar a admin­is­tração de Yang.

Celso Mar­t­inho, fun­dador do Sapo (o maior por­tal por­tuguês, lançado em 1995 e assum­i­da­mente inspi­rado no Yahoo), con­sid­era que “finan­ceira­mente falando, é fácil con­cluir que a recusa da pro­posta da Microsoft foi um erro mon­u­men­tal de gestão”. Os números não enganam: a Microsoft ofer­e­ceu 31 dólares por acção (num total de 44 mil mil­hões). Hoje, e em parte arras­tadas pela crise finan­ceira, cada acção oscila entre os nove e os dez dólares.

O fun­dador do Sapo, no entanto, parece par­til­har a visão de Yang: “Emo­cional­mente, se é que é per­mi­tido usar a emoção para falar de negó­cios desta mag­ni­tude (e talvez tenha sido este o maior erro do Jerry), pre­firo a inde­pendên­cia do Yahoo. Fazem um tra­balho muito bom no campo da ino­vação e dos bons pro­du­tos de Inter­net e têm uma cul­tura única e uma imagem que gostaria de ver preser­vadas. Acho que a Microsoft ainda é a antítese disto tudo”.

A rejeição do negó­cio com a Microsoft não será o único erro a pesar na memória dos exec­u­tivos do Yahoo. O por­tal tem visto fugir a sua prin­ci­pal fonte de receitas – os anún­cios pub­lic­itários – para a mão da rival Google. Mas, num longín­quo 2002, o por­tal des­perdiçou a opor­tu­nidade de com­prar o motor de busca desen­volvido por Larry Page e Sergey Brin.

O outro erro

Em 2002, o CEO era Terry Semel, um exec­u­tivo vindo da Warner, que mal usava a Inter­net e que deixou pou­cas saudades aos accionistas. Page e Brin abor­daram o Yahoo em busca de uma injecção de cap­i­tal. Semel avançou com a pos­si­bil­i­dade de com­pra – mas achou que não valia a pena ir além de uma oferta de três mil mil­hões de dólares. Os dois jovens recusaram (o preço era uma bagatela, com­parado com a val­oriza­ção bol­sista que a empresa con­seguiu nos anos seguintes).

A pesquisa é vital nas con­tas do Yahoo e a ascenção da Google foi um golpe duro. Isto ape­sar de o por­tal ofer­e­cer dezenas de serviços difer­entes para além da busca. “A pesquisa é a aplicação-chave da Inter­net e é da maior importân­cia para qual­quer por­tal”, explica Celso Mar­t­inho. “Primeiro, pesquisar é de longe o que as pes­soas mais fazem na Inter­net e, segundo, a pesquisa é uma plataforma valiosís­sima do ponto de vista do negócio”.

Em poucos anos, o Google ascen­deu ao estatudo de motor de busca mais con­hecido do mundo e os seus pequenos anún­cios con­tex­tu­ais (em que o con­teúdo está rela­cionado com as pesquisas que o uti­lizador faz ou com as pági­nas que este visita) tornaram-se muito atrac­tivos para os anunciantes.

Outro prob­lema tem sido a difi­cul­dade em acom­pan­har a mudança. O Yahoo foi crescendo na lóg­ica do final da década pas­sada: ofer­e­cer todo o tipo de serviços e ser um ponto de entrada na Inter­net. Mas os tem­pos mudaram, observa o fun­dador do SAPO: “Os jardins fecha­dos, ou era dos con­teú­dos exclu­sivos e das téc­ni­cas clás­si­cas de retenção dos uti­lizadores, desapareceram”.

Volta Microsoft

No iní­cio deste mês, e ainda antes de se demi­tir, Jerry Yang já se tinha ren­dido: “Actual­mente, o mel­hor para a Microsoft é com­prar o Yahoo. Esta­mos à venda” – a declar­ação foi feita durante uma entre­vista numa cimeira de tec­nolo­gia em S. Francisco.

O prob­lema é que a Microsoft, pelo menos aparente­mente, desis­tiu do negó­cio. Mesmo que queira voltar a sentar-se à mesa com o Yahoo, é útil à gigante do soft­ware mostrar-se desinteressada.

No dia em que Yang anun­ciou a demis­são, as acções do Yahoo subi­ram quase 12 por cento, pelo meio de muita espec­u­lação sobre uma nova pro­posta de com­pra. No dia seguinte, a Microsoft declarou não estar sequer a pen­sar no assunto – as acções caíram 18 por cento.

Se muitos argu­men­tam que a Microsoft é a única saída viável para o Yahoo, Celso Mar­t­inho diz não ter tan­tas certezas: “Ninguém sabe exac­ta­mente o que é a Microsoft ia fazer com o Yahoo e ninguém con­segue dizer se a fusão ia criar valor ou destruir irre­ver­sivel­mente o maior por­tal do mundo”.

Nos últi­mos meses, o Yahoo ten­tou ainda uma injecção de cap­i­tal, através de uma parce­ria com a Google. O negó­cio faria com que esta pas­sasse a gerir a pub­li­ci­dade asso­ci­ada às pesquisas feita no por­tal. Era um “remendo”, clas­si­fica o fun­dador do Sapo. Só que as autori­dades reg­u­lado­ras amer­i­canas franzi­ram o sobrolho per­ante a pos­si­bil­i­dade de monopólio e adivinhava-se uma longa batalha legal. Mas, desta vez, foi a Google a recuar e dizer que o negó­cio, afi­nal, não valia a pena.”

Fonte:tec­nop­o­lis

Bad Behavior has blocked 69 access attempts in the last 7 days.