Quinta-feira, 28 de Janeiro de 2010

Depois de um hiato de vários meses em que estiveram a dar apoio permanente a vários outros projectos, a equipa da LibSAPO.js regressa às novas funcionalidades e aos posts.

 

Podem segui-los em libsapojs.blogs.sapo.pt.



publicado por jac às 10:00
link do post | comentar | adicionar aos favoritos |

Quarta-feira, 27 de Janeiro de 2010

Terá lugar a 19 e 20 de Maio a XATA 2010 - XML: Aplicações e Tecnologias Associadas.

O SAPO irá apoiar este evento e alguns dos seus elementos deverão estar presentes. Afinal de contas, temos uma arquitectura SOA.

O evento, a realizar em Vila do Conde, já tem página online, onde se encontra a chamada para apresentações, com 1 de Março como data limite de submissão de artigos.



publicado por jac às 10:00
link do post | comentar | ver comentários (1) | adicionar aos favoritos |

Segunda-feira, 25 de Janeiro de 2010

O SAPO está organizado internamente em pequenas equipas, que vão desde 1 a uns 7 elementos técnicos, dependendo do projecto.

 

Apesar da grande sinergia entre as várias equipas, cada qual cuida do seu projecto como se fosse a coisa mais importante do seu trabalho.

 

A equipa do SAPO Fotos, com 3 elementos técnicos, teve um ano em cheio (como de resto todas as equipas tiveram).

 

O Pedro Fonseca, um dos membros da equipa, escreve-nos um pouco sobre este ano:


"2009 foi um ano atarefado para a equipa do SAPO Fotos. Apesar de poucas mudanças verdadeiramente visíveis para o utilizador final, nos bastidores estivemos ocupados a melhorar muito e a preparar a plataforma para o futuro. Os nossos dois maiores milestones foram o lançamento de um novo Core para o serviço com, entre outros, uma camada de abstracção de dados e um sistema de cache completamente renovado. Os componentes principais transversais ao serviço foram portados para utilizar este novo Core. Com isto preparámos todo o serviço para escalar melhor em número de conteúdos por utilizador, na prática fazendo com que navegar em álbuns com milhares de imagens seja tão rápido como navegar em álbuns de poucas dezenas. Conseguimos igualmente com isto aumentar bastante a disponibilidade do serviço, que deixou de estar sobrecarregado em alturas de pico do dia; e por outro lado demos ao serviço mecanismos para lidar com situações de carga extrema, não o deixando degradar ao ponto da indisponibilidade. Falando ainda de navegação, melhorámos muito a experiência de navegação nas listagens de imagens e álbuns. As pesquisas efectuadas no serviço são neste momento praticamente instantâneas, quer por tags, quer por termos.

O segundo milestone chave para o ano de 2009 foi uma nova arquitectura de entrega de imagens, desenvolvida internamente e chamada quickCachr. Esta arquitectura nova tomou em conta as especificidades do serviço SAPO Fotos para a) servir imagens da forma mais eficiente possível introduzindo um novo esquema de URLs; b) terminar a necessidade de envolver dois requests para servir cada imagem; c) suprimir uma falha de segurança na anterior arquitectura; d) tornar independente do serviço SAPO Fotos, e de uma eventual indisponibilidade sua, o servir de imagens para destinos externos (blogs, sites notícias, etc); e) melhorar drasticamente os tempos de carregamento de imagens, principalmente em páginas com bastantes imagens em simultâneo; f) continuar a suportar transparentemente os - até então - 2.5M de imagens disponíveis com links espalhados pela web. Esta nova arquitectura introduziu uma melhoria drástica em termos de alta disponibilidade e alta escalabilidade no serviço, até aqui aí não existente de todo.

Entre estes dois milestones grandes, a equipa teve ainda tempo de lançar o arquivo de imagens completo da Agência Lusa - um acervo histórico importantíssimo sob a perspectiva da identidade do nosso país, juntamente com uma funcionalidade de pesquisa avançada, não existente no serviço SAPO Fotos original. Lançámos um novíssimo upload múltiplo via web - esta talvez a novidade mais visível para o utilizador final, replicando o comportamento da nossa velhinha aplicação desktop de upload de imagens para Windows e acabando de vez com o anterior upload web que só permitia o envio de 8 imagens de cada vez. Neste momento é possível importar de uma só vez um conjunto grande de imagens. Estivemos envolvidos no desenvolvimento e lançamento do SAPO Campus, uma plataforma baseada em vários dos serviços SAPO, desenhada para integrá-los e fornecê-los no contexto do ensino superior. Estivemos envolvidos no desenvolvimento e lançamento do SAPO Fotos no MEO, introduzindo uma funcionalidade que permite a um cliente MEO ver imagens do SAPO Fotos na sua televisão. Aproveitámos e melhorámos os nossos processos de deployment e rollout para produção, automatizando grandemente estas tarefas e tornando-as menos propícias a erros. Melhorámos a eficiência da nossa API em cerca de 500%. Introduzimos bugfixes (e possivelmente com isso novos bugs :-) em centenas de situações identificadas internamente e por utilizadores nossos.

Foi um ano verdadeiramente em cheio. Perspectivamos para este novo surpresas 'mais' visíveis. :-) Vão estando atentos para mais novidades."



publicado por jac às 10:00
link do post | comentar | adicionar aos favoritos |

Quinta-feira, 21 de Janeiro de 2010

Tipicamente, após termos participado numa conferência, um dos participantes realiza uma pequena apresentação interna sobre o evento.

São eventos que vão desde o GSMA Mobile World Congress à eTech, da WWW ao London Hack Day.

Na passada Quarta-feira tivemos mais três apresentações: a JSConf.eu, o CSS Summit e a YAPC::EU::2009.

JSConf.eu

O Diogo Antunes foi a Berlim participar na JSConf.eu, a conferência europeia de JavaScript, e falou-nos sobre algumas das apresentações a que assistiu.

O evento durou dois dias e contou com cerca de 200 participantes.

Foi um sucesso.

Nomes como Dion Almer, Remy Sharp, Thomas Fuchs e John Resig realizaram apresentações sobre imensos temas dentro do mundo do JavaScript e o Diogo fez-nos agora um resumo daquilo que viu na conferência.

CSS Summit

Este é um evento diferente: é um evento online, que permite inscrições individuais ou de grupo.

O SAPO adquiriu um bilhete de grupo e os colaboradores interessados no tema reuniram-se numa sala de reuniões num Sábado.

O André Luís, um dos participantes nessa sala de reuniões, fez-nos um resumo dos temas a que assistiram, bem como de várias impressões relativas a eventos deste tipo (foram principalmente vantagens).

YAPC::EU::2009

A maior conferência europeia de Perl deslocou-se pela segunda vez a Portugal, e desta feita a Lisboa.

O Armando Reis foi um dos participantes do SAPO (eram cerca de duas dezenas) a participar no evento e fez-nos agora uma apresentação sobre o evento falando de temas quentes, oradores e do que se pôde aprender por lá.

O plano de conferências para 2010 já se começa a compor.



publicado por jac às 10:00
link do post | comentar | adicionar aos favoritos |

Segunda-feira, 18 de Janeiro de 2010

Recentemente criámos a SAPO Developer Network, um desdobrável (890mm x 585mm) com alguns dos serviços do SAPO para melhor os dar a conhecer ao público do Codebits.

 

 

Para quem não esteve no Codebits, a versão em pdf já se encontra online (3M).

 

Segue-se agora um trabalho de análise para decidir quais os serviços a incluir (faltam muitos) e quais os que poderão ter que ser removidos por uma questão de espaço. A próxima versão deverá surgir num futuro próximo.



publicado por jac às 10:00
link do post | comentar | ver comentários (1) | adicionar aos favoritos |

Segunda-feira, 11 de Janeiro de 2010

Recentemente colocámos neste blog um post com um dos problemas que usamos em muitas das entrevistas de 2009 no SAPO.

O problema consistia em desenhar (escrever) um algoritmo para resolver o seguinte problema, em pseudo-código:

    "Vais receber uma lista de números. Encontra a maior diferença entre quaisquer dois números nessa lista."

Hoje vamos analisar algumas das soluções com que nos deparámos nas entrevistas.

Estranhamente, uma solução que é apresentada com frequência é a seguinte:

    maior_diferenca = 0;

    for ( i = 1 ; i < length lista ; i++ ) {
        if ( lista[i] - lista[i-1] > maior_diferenca ) {
            maior_diferenca = lista[i] - lista[i-1];
        }
    }

    return maior_diferenca;

Esta é uma solução que não apresenta o resultado correcto e que demonstra uma série de problemas no raciocínio do candidato (problemas esses que não iremos abordar aqui, mas é de facto uma situação comum).

Eis a solução mais básica que poderia ser apresentada (seguindo-se a lista de problemas que a mesma apresenta):

    maior_diferenca = 0;

    for ( i = 0 ; i < length lista ; i++ ) {
        for ( j = 0 ; j < length lista ; j++ ) {
            if ( abs( lista[i] - lista[j] > maior_diferenca ) ) {
                maior_diferenca = abs( lista[i] - lista[j] );
            }
        }
    }

    return maior_diferenca;

Problemas de eficiência:

 


Erros e corner-cases:


Vejamos agora a mesma solução já com alguns destes problemas resolvidos:

    maior_diferenca = 0;

    tamanho = length lista;

    for ( i = 0 ; i < tamanho ; i++ ) {
        for ( j = i+1 ; j < tamanho ; j++ ) {
            diferenca = abs( lista[i] - lista[j] );
            if ( diferenca_actual > maior_diferenca ) ) {
                maior_diferenca = diferenca_actual;
            }
        }
    }

    return maior_diferenca;

Apesar de esta solução ainda não estar a prever os casos da lista vazia ou da lista com um único elemento, esta já é uma solução mais eficiente que a anterior.

Ainda assim, um bom candidato consegue, desde o início, compreender que não necessita realizar tantas operações, já que lhe basta encontrar o maior e o menor elemento da lista e calcular a diferença entre dois.

Infelizmente, isto faz com que alguns candidatos apresentem uma solução semelhante à seguinte:

    lista = sort  lista;
    max   = last  lista;
    min   = first lista;
    return max - min;

Apesar da solução estar correcta, não é de todo eficaz, dada a complexidade de um sort numa lista com, por exemplo, 20,000 valores.

Eis uma outra solução seguindo esta ideia, ainda com alguns problemas:

    min = 0;
    max = 0;

    for ( i = 0; i < tamanho; i++ ) {
        if ( lista[i] < min ) {
            min = lista[i];
        }

        if ( lista[i] > max ) {
            max = lista[i];
        }
    }

    return max - min;

Esta é uma solução que não funciona, uma vez que basta que todos os números sejam positivos ou negativos para retornar o valor errado.

Uma melhor solução seria algo no seguinte sentido:

    min = null;
    max = null;

    for ( i = 0; i < tamanho; i++ ) {
        if ( min == null or lista[i] < min ) {
            min = lista[i];
        }

        if ( max == null or lista[i] > max ) {
            max = lista[i];
        }
    }

    if ( min != null and max != null ) {
        return max - min;
    }
    else {
        # ...
    }

Entre todas estas versões, há ainda mais uma série de variantes que outros candidatos apresentam.

Há também questões específicas de cada linguagem que podem fazer com que pequenas partes devam ser alteradas por uma questão de eficiência.

Ao ser confrontado com este problema, o candidato ideal:

 

Convém ainda deixar claro que este é apenas um problema que fez parte de um grande conjunto de desafios colocados aos candidatos e que não é apenas a resolução de um simples problema que dita o recrutamento ou não da pessoa.



publicado por jac às 10:00
link do post | comentar | ver comentários (10) | adicionar aos favoritos |

Segunda-feira, 4 de Janeiro de 2010

2009 foi, como todos são, um ano em cheio no SAPO.

 

Lançámos imensos sites e portais: SAPO Ambiente, SAPO SMS, SAPO Kids, SAPO Casamentos, Procuro emprego, SAPO Jogos, SAPO Livros, Sites SAPO, SAPO Desporto, SAPO Web Messenger, Arquivo da Lusa no SAPO Fotos.

 

Relançámos sites e serviços como o SAPO Ajuda, o SAPO TV, o SAPO Emprego e o Login SAPO, que inclusivé passou a suportar o Cartão de Cidadão.

 

Adicionámos imensas novas funcionalidades a plataformas já existentes: o SAPO Spot recebeu novos widgets e microblogging, o SAPO Messenger recebeu o Fala comigo e foi integrado no SAPO Mail, o SAPO Mapas passou a ter itinerários com transportes públicos e visitas virtuais, etc.

 

Realizámos grandes operações de restruturação a serviços como o SAPO Fotos e o SAPO Mapas.

 

Redesenhámos a presença do SAPO no Meo.

 

Lançámos novos conteúdos em versão Mobile: o Auto SAPO, o SAPO Mapas, o Casa SAPO, o Manchetes do SAPO, entre outros.

 

Colocámos no ar novos sites de apoio ao cliente, para dar suporte aos utilizadores, para os educar em termos de segurança, para obter feedback que nos ajude a melhorar.

 

Lançámos uma nova versão da homepage.

 

Lançámos o Pond.

 

Lançámos o Puny URL.

 

Lançámos o SAPO Widgets.

 

A equipa das Mobile Applications expandiu o seu portfólio de aplicações para smartphones, que agora inclui a Banca SAPO, o Cine SAPO, o TMN Pond e o Kiosk, disponíveis para uma série de plataformas, incluíndo Android, Nokia WRT e iPhone.

 

Nos Labs do SAPO lançámos o SAPO Campus, o Tendências e o Verbatim.

 

Recrutámos mais de 40 pessoas só para a área técnica (a equipa tem agora mais de 150 pessoas).

 

Realizámos uma dezena de SAPO Sessions e outras tantas acções de formação, algumas das quais com lugares abertos para o público em geral.

 

Tivemos nas nossas instalações uma série de pessoas com as quais partilhamos imenso: Anne van Kesteren (HTML 5), Brian LeRoux (PhoneGap), Rasmus Lerdorf (criador do PHP), Jan Lehnardt (CouchDB), Janet Read (HCI com crianças), Larry Wall (criador do Perl), etc.

 

Escrevemos. No Developers, no OpenID no SAPO, no Identity, no Segurança online, no LibSAPO.js, no User eXperience.

 

Melhorámos vários dos nossos processos, quer pela adição de sangue novo à equipa (que nos traz sempre novas ideias) quer pelo esforço de organização interna que culmina em coisas como as guidelines internas de usabilidade e acessibilidade.

 

Organizámos novamente o Summerbits e o Codebits.

 

Estivemos presentes em mais de uma dezena de conferências.

 

Reforçámos a nossa presença em Angola, Moçambique e Cabo Verde.

 

E muito, muito mais.

 

Foi um ano de trabalho árduo mas compensador.

 

Para 2010, que começa agora, já há grandes planos.

 

Ao trabalho.



publicado por jac às 10:11
link do post | comentar | ver comentários (3) | adicionar aos favoritos |

Autores
pesquisar
 
Janeiro 2012
Dom
Seg
Ter
Qua
Qui
Sex
Sab

1
2
3
4
5
6
7

8
9
10
11
12
13
14

15
16
17
18
19
20
21

22
23
24
25
26
27
28

29
30
31



follow saposessions at http://twitter.com
posts recentes

Integração do Blog de Dev...

Vídeos da LXMLS

Evento HTML5 PT - 3 de No...

Prémios SAPO 2011

Extensão de prazo de subm...

Candidaturas SAPO Labs

Portuguese Perl Workshop

16 anos

Fun with Dead Languages -...

CPA 2011

arquivos

Janeiro 2012

Dezembro 2011

Outubro 2011

Setembro 2011

Agosto 2011

Julho 2011

Junho 2011

Maio 2011

Abril 2011

Março 2011

Janeiro 2011

Outubro 2010

Setembro 2010

Agosto 2010

Julho 2010

Junho 2010

Maio 2010

Abril 2010

Março 2010

Fevereiro 2010

Janeiro 2010

Dezembro 2009

Novembro 2009

Outubro 2009

Setembro 2009

Agosto 2009

Julho 2009

Junho 2009

Maio 2009

Abril 2009

Março 2009

Fevereiro 2009

tags

todas as tags

últ. comentários
Boas, Apesar deste post já ser um pouco antigo gos...
Por sinal já foi desenvolvido e encontra-se neste ...
A informação que faltava está agora aqui: http://d...
A informação já está aqui: http://developers.blogs...
Boas,Onde é que isto vai ser? Há algum critério pa...
blogs SAPO
subscrever feeds