Segunda-feira, 10 de Janeiro de 2011

Em 2009 foi criada a primeira versão da SAPO Developer Network, um desdobrável com alguns dos serviços do SAPO.

 

Recentemente repetimos o esforço e lançamos uma nova versão:

 

SAPO Developer Network 2010

 

Para além da reorganização da rede foi também realizado um trabalho na área dos desdobráveis; a versão deste ano abre mais facilmente bastando apenas puxar duas pontas do folheto.

 

A SAPO Developer Network v2.0 foi distribuída no Codebits 2010, mas a versão em pdf já se encontra online aqui.



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

Quinta-feira, 11 de Março de 2010

O Verbatim é um dos projectos nascidos num SAPO Lab.

Este projecto deverá agora receber alguma força e dinamização extra.

Com esta ideia em mente o Jorge Teixeira - um dos elementos que criou o projecto - veio passar uma semana em Lisboa, nas instalações do SAPO (mas deixámo-lo sempre sair para comer e dormir).

A semana começou com uma reunião de apresentação do projecto, por dentro e por fora.

Na sala, uma dúzia de pessoas com as mais variadas skills, incluindo as tecnologias e plataformas SAPO empregues no projecto e não só: Perl, JavaScript, MySQL, Usabilidade, Acessibilidade, Segurança, SAPO Broker, LibSAPO.js, etc.

Após esta sessão foram marcadas cinco outras reuniões com diferentes elementos desta task force.

 


Reunião 1: Perl e MySQL

Quatro pessoas numa sala com um único intuito: analisar o código do projecto (ou parte deste) para o conseguir optimizar.

Foram apontadas coisas simples como a diferença entre usar CGI ou FastCGI, foi feito benchmarking ao código para encontrar os bottlenecks, foram optimizadas queries de SQL (e inclusivé foi reduzido o número destas numa grande escala), etc.

O Jorge saiu da reunião com já algumas alterações no projecto e uma folha cheia de notas que ele teria que implementar mais tarde.

Reunião 2: JavaScript e Segurança

Quando a reunião começou a equipa de JavaScript já tinha realizado alguns testes à plataforma, pelo que já levavam uma lista de sugestões.

Havia código que podia ser optimizado e foram ainda apresentadas algumas soluções como o ySlow para análise do restante.

Também foram apresentadas algumas falhas de segurança que o site possuía; as mesmas foram explicadas em detalhe, bem como as medidas a tomar para as fechar.

No final da reunião havia mais uma folha com notas nas mãos do Jorge.

Reunião 3: Usabilidade e Acessibilidade

A equipa de QA do SAPO realizou uma avaliação heurística ao Verbatim e nesta reunião apresentou ao Jorge os resultados da mesma.

Saíram desta reunião uma série de sugestões e recomendações para tornar o serviço mais apelativo, usável e acessível.

Mais uma reunião, mais uma folha.

Reunião 4: Arquitectura e Serviços

Aqui foram analisadas a arquitectura actual e as possibilidades futuras da mesma.

Foi explorada em detalhe a interacção com o SAPO Broker e revistas algumas boas práticas de utilização do mesmo que poderão ajudar o projecto.

Foi analisado o que seria necessário para implementar determinadas funcionalidades que estão previstas (extracção de dados semânticos, etc).

Houve também uma discussão sobre LSP (léxico semântico do português) e no final o Jorge tinha agora quatro listas de coisas a fazer e a analisar.

Reunião 5: Web Services

Neste reunião foram abordadas as tecnologias base usadas para publicar diversos tipos de dados do Verbatim como um serviço.

Foram realçados vários aspectos importantes como a disponibilização dos dados a outros serviços e plataformas, tentando assim começar a tornar transversais a todo o SAPO alguns Web Services.

Avaliação final

No final desta semana perguntamos ao Jorge que avaliação fazia desta semana:

"A avaliação final que eu faço a esta semana de trabalho no SAPO é simplesmente excelente! Excelente por dois motivos, por um lado vim para o Porto com uma enorme lista de melhorias a implementar (é sempre bom saber que um projecto ainda tem muito por onde evoluir) e por outro por ter conhecido uma equipa de gente conhecedora e disposta a partilhar os conhecimentos e ajuda.

[…]

Para terminar, algumas das sugestões com que vim do Sapo já foram implementadas, e as melhorias foram muito boas. Só a nível de tempos de acesso, conseguimos uma diminuição da ordem dos 50% em relação aos valores anteriores."

 



publicado por jac às 10:00
link do post | comentar | ver comentários (2) | 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, 18 de Maio de 2009

Update: este serviço deixou de estar disponível.

 

Uma área forte no SAPO é a área de GIS.


Em http://services.sapo.pt/Metadata/Service/GIS é disponibilizado um Web Service GIS.

Podemos, por exemplo, começar por aceder a uma lista de distritos ordenados por id, em http://services.sapo.pt/GIS/GetDistrictsSortedById?includeMunicipalities=0

    <GetDistrictsSortedByIdResponse>
        <GetDistrictsSortedByIdResult>
            <District>
                <DistrictId>01</DistrictId>
                <DistrictName>Aveiro</DistrictName>
                <Latitude>40.64392</Latitude>
                <Longitude>-8.6422205</Longitude>
                <Municipalities/>
            </District>
            <District>
                <DistrictId>02</DistrictId>
                <DistrictName>Beja</DistrictName>
                <Latitude>38.0149956</Latitude>
                <Longitude>-7.86307573</Longitude>
                <Municipalities/>
            </District>
            ...
        </GetDistrictsSortedByIdResult>
    </GetDistrictsSortedByIdResponse>

Tendo o id do distrito desejado, podemos então aceder a mais informação sobre o mesmo, em http://services.sapo.pt/GIS/GetMunicipalitiesByDistrictIdSortedById?districtId=01.

Podemos agora aceder, entre outra informação, a uma lista de POIs (Point Of Interest) do distrito em questão: http://services.sapo.pt/GIS/GetPOIByDistrictId?districtId=01.

Como exemplo de uma funcionalidade diferente, a recolha de informação através de um código postal: http://services.sapo.pt/GIS/GetLocationByZipCode?zipCode=1000100

    <GetLocationByZipCodeResponse>
        <GetLocationByZipCodeResult>
            <CountryId>PT</CountryId>
            <CountryName>Portugal</CountryName>
            <DistrictId>11</DistrictId>
            <DistrictName>Lisboa</DistrictName>
            <MunicipalityId>1106</MunicipalityId>
            <MunicipalityName>Lisboa</MunicipalityName>
            <ParishId>110644</ParishId>
            <ParishName>São Jorge de Arroios</ParishName>
            <Latitude>38.73112</Latitude>
            <Longitude>-9.137293</Longitude>
            <Metadata/>
        </GetLocationByZipCodeResult>
    </GetLocationByZipCodeResponse>

O serviço é bastante completo e possui imensa informação.

A descrição completa do serviço encontra-se disponível em http://services.sapo.pt/Metadata/Service/GIS.

 

Update: este serviço deixou de estar disponível.



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

Terça-feira, 12 de Maio de 2009

A plataforma de Vídeos do SAPO disponibiliza um Web Service em http://services.sapo.pt/Metadata/Service/Videos.

Este serviço suporta operações como criação de novos utilizadores (CreateUser), gestão de vídeos, realizando operações como a adição (AddVideo) ou remoção (DeleteVideo) de conteúdo, navegação, etc.

Existem ainda operações relacionadas com categorias, playlists e outras funcionalidades.

A descrição completa do serviço encontra-se em http://services.sapo.pt/Metadata/Service/Videos.



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

Segunda-feira, 27 de Abril de 2009

Para uma mais simples integração com os vários Web Services do SAPO, um dos serviços que disponibilizamos é o CodeGeneration.

 

Acedendo à página de um serviço SAPO com um contrato WSDL, encontramos à direita da página uma caixa com links para a geração de código em várias linguagens.

 

 

Tal permite acelerar uma integração com qualquer um destes serviços.

 

As linguagens suportadas são, actualmente, C#, Visual Basic, Java, PHP, Perl, Python, Ruby e JavaScript.

 

A título de exemplo, eis a geração de código PHP para o Web Service Holiday.

 

O serviço encontra-se disponível em http://services.sapo.pt/Metadata/Service/CodeGeneration.



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

Segunda-feira, 30 de Março de 2009

Update: este serviço deixou de estar disponível.

 

Em http://services.sapo.pt/Metadata/Service/Exchange, o SAPO disponibiliza um Web Service para consulta de taxas de câmbio.

 

Para consultar a lista das moedas suportadas basta aceder a http://services.sapo.pt/Exchange/Currencies, sendo a mesma retornada como:

    <Currencies xmlns="http://services.sapo.pt/Metadata/Exchange">
        <Currency>
            <Code>AFA</Code>
            <Country>Afghanistan Afghani</Country>
        </Currency>
        <Currency>
            <Code>ALL</Code>
            <Country>Albanian Lek</Country>
        </Currency>
        ...
    </Currencies>

Para sabermos quantos dólares vale um euro podemos aceder a http://services.sapo.pt/Exchange/LastRate/EUR/USD.

 

Também podemos consultar o valor de uma determinada quantidade de moeda. Por exemplo, para consultar o câmbio de 1,000 dólares em euros acedemos a http://services.sapo.pt/Exchange/LastRate/USD/EUR/1000.

    <LastRate xmlns="http://services.sapo.pt/Metadata/Exchange">
        <Code>USD</Code>
        <Amount>1000</Amount>
        <Date>29-03-2009 21:00:00</Date>
        <Days>1</Days>
        <To>
            <Currency>
                <Code>EUR</Code>
                <Ask>752.8000</Ask>
                <Bid>752.3000</Bid>
            </Currency>
        </To>
    </LastRate>

A descrição completa do serviço encontra-se disponível em http://services.sapo.pt/Metadata/Service/Exchange.

 

Update: este serviço deixou de estar disponível.



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

Segunda-feira, 16 de Março de 2009

O SAPO sempre se prezou pela inovação e experimentação e esta semana lança um novo serviço: o Puny URL.

Apesar de à primeira vista o Puny URL parecer apenas um outro compactador de URLs, traz uma inovação excelente: Unicode.

O Puny URL compacta um URL de duas formas diferentes, retornando um URL compacto típico e um outro mais compacto ainda, fazendo uso de caracteres Unicode.

Para uma melhor compreensão do serviço colocamos algumas questões à equipa da Pesquisa do SAPO, que desenvolveu este sistema:

Q: Quantos URLs conseguem ter na plataforma?
   
R: Os que quiseres :) As PunyURLs em Unicode permitem ter aproximadamente 41,000 URLs únicas comprimidas num único caracter; com dois caracteres existem 1,7 mil milhões de combinações possíveis.

Q: Este serviço fornece alguma API para developers que queiram integrar este serviço nas suas aplicações?

R: Sim! Fornecemos uma API nos Web Services do SAPO em http://services.sapo.pt/Metadata/Service/PunyURL e fornecemos uma "Bookmarklet" que os utilizadores podem acrescentar à sua barra de favoritos para criar automaticamente uma PunyURL para a página que estejam a ver.

Q: Que casos práticos de utilização prevêem?

R: O Twitter, o envio de URLs por SMS, dizer um endereço na internet que é complicado pelo telefone... as URLs no formato http://br3.sl.pt são bastante práticas para soletrar - não há maiúsculas nem minúsculas. Essencialmente situações em que a brevidade seja importante. No caso da PunyURL em Unicode poupamos *imenso* espaço, e pode ser útil em serviços como o Twitter, em que se clica na URL.

Q: Como é que isto funciona por baixo e que tecnologia está envolvida?

R: Os serviços de compressão existentes de URLs têm uma base de dados por detrás que mapeia a URL enviada para um número. A URL comprimida é o número convertido de base 10 - o nosso sistema de algarismos - para base 62 - 26 letras maíusculas + 26 letras minúsculas mais os dez algarismos.

O número 500,000 é assim convertido para '264w' em base 62.

No PunyURL funcionamos de forma ligeiramente diferente em *ambas* as URLs comprimidas que fornecemos.

Os browsers modernos permitem caracteres acentuados, como é o caso do domínio da Força Aérea Portuguesa, http://www.forçaaérea.pt/.

Na realidade, o domínio 'forçaaérea.pt' é convertido em 'xn--foraarea-u0aw.pt', através dum sistema de codificação chamado "Punycode", definido no RFC 3492.

Estas regras de conversão permitem que caracteres Unicode europeus, russos e asiáticos possam ser utilizados em domínios.

No PunyURL utilizamos os caracteres dos diversos planos asiáticos, o que nos permite definir o número 500,000 em apenas dois caracteres: 㐋촔.

Assim o serviço pode armazenar milhões de endereços dos nossos utilizadores e continuar a fornecer domínios curtos sem termos de reciclar endereços, o que significa que ficam sempre permanentes.

No caso dos endereços em ASCII, http://b.oi.sl.pt/, utilizamos um truque de DNS chamado "Wildcarding" que permite que endereços não criados vão parar a determinado site. É o que acontece há já alguns anos com o SAPO: http://perl.sapo.pt/ resulta numa pesquisa pela palavra 'perl', porque o domínio .sapo.pt aponta para a Pesquisa do SAPO quando não existe um hostname definido.

No caso do www.sapo.pt, este está definido e não vai à pesquisa do SAPO.

Q: Que protecções contra spam foram implementadas?

R: Verificamos quais os hosts de destino, não permitimos referências circulares e monitorizamos a sua utilização. No entanto, disponibilizamos o serviço de "preview"; se se acrescentar um '-' ao final de uma PunyURL consegue-se ver qual o destino da mesma sem ter de visitar o destino.

Por exemplo: http://b.kp.sl.pt/-.

Para gerar uma Puny URL a partir de qualquer página na Internet arraste o seguinte link para a sua barra de favoritos: PunyURL.

 



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

Segunda-feira, 9 de Março de 2009

O SAPO disponibiliza um Web Service com a programação de TV (incluindo actualmente todos os canais da oferta MEO).

Para consultar a lista de canais incluidos no sistema basta invocar o serviço em http://services.sapo.pt/EPG/GetChannelList.

 

A resposta será semelhante a:

    <GetChannelListResponse xmlns="http://services.sapo.pt/Metadata/EPG">
      <GetChannelListResult>
        <Channel>
          <Name>RTP1</Name>
          <Sigla>RTP1</Sigla>
        </Channel>
        <Channel>
          <Name>RTP2</Name>
          <Sigla>RTP2</Sigla>
        </Channel>
        ...
      </GetChannelListResult>
    </GetChannelListResponse>

Após termos a lista de canais podemos aceder à programação para um canal específico dentro de um intervalo temporal.

 

Para acedermos à programação do canal RTP2, por exemplo, usamos o serviço em http://services.sapo.pt/EPG/GetChannelByDateInterval.

 

O resultado será algo como:

 

    <GetChannelByDateIntervalResponse xmlns="http://services.sapo.pt/Metadata/EPG">
      <GetChannelByDateIntervalResult>
        <Name>RTP2</Name>
        <Sigla>RTP2</Sigla>
        <Programs>
          <Program>
            <Id>1600303</Id>
            <Title>Os Simpsons T17</Title>
            <Description>Homer trabalha como inspector de segurança na fábrica nuclear local; Marge tenta manter a paz na família; Bart é um rapaz endiabrado de 10 anos; Lisa, com 8, é inteligente, toca saxofone e segue a dieta vegetariana; e a bebé Maggie manifesta as emoções sugando desesperadamente a chucha.</Description>
            ...
            <StartTime>2009-03-08 20:00:00</StartTime>
            <Duration>3600</Duration>
            <EndTime>2009-03-08 21:00:00</EndTime>
          </Program>
        </Programs>
      </GetChannelByDateIntervalResult>
    </GetChannelByDateIntervalResponse>

Também podemos aceder a informação mais detalhada sobre um programa acedendo directamente ao mesmo (usando o identificador Id dentro de Program): http://services.sapo.pt/EPG/GetProgramById?programId=1600303.

 

A descrição do serviço e dos seus métodos encontra-se disponível em http://services.sapo.pt/Metadata/Service/EPG.



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

Segunda-feira, 23 de Fevereiro de 2009

O SAPO disponibiliza um Web Service para consulta de feriados portugueses (nacionais, regionais e municipais).

 

Para consultar os feriados nacionais de 2009, por exemplo, basta invocar o serviço em http://services.sapo.pt/Holiday/GetNationalHolidays?year=2009.

 

A resposta do serviço é semelhante a (mas mais extensa):

    <GetNationalHolidaysResponse xmlns="http://services.sapo.pt/Metadata/Holiday">
        <GetNationalHolidaysResult>
            <Holiday>
                <Name>Ano Novo</Name>
                <Date>2009-01-01T00:00:00</Date>
                <Description>O Ano-Novo é um evento que acontece quando uma cultura celebra o fim dd
e um ano e o começo do próximo. Todas culturas que têm calendários anuais celebram o ""
Ano-Novo". A celebração do evento é também chamada réveillon, termo oriundo do verbo  
réveiller, que em francês significa "despertar".</Description>
                <Type>National</Type>
            </Holiday>
            <Holiday>
                <Name>Carnaval</Name>
                <Date>2009-02-24T00:00:00</Date>
                <Description>Feriado facultativo, sendo rara a sua não utilização na prática. A  
data tem origem na tradição pagã de celebrar o final do inverno e foi depois adaptada pp
ela Igreja Católica marcando agora o período de 40 dias antes da Semana Santa (Quaresma))
, ou 47 dias antes da Páscoa, sendo conhecido também por Entrudo</Description>
                <Type>Optional</Type>
            </Holiday>
            ...
        </GetNationalHolidaysResult>
    </GetNationalHolidaysResponse>

Mais exemplos de utilização deste método podem ser consultados em http://services.sapo.pt/Metadata/Service/Holiday/GetNationalHolidays.

 

Portugal possui 14 feriados:

Para estes últimos feriados móveis existem também métodos específicos (caso não desejemos uma lista exaustiva de feriados): GetEaster, GetCorpusChristi, GetGoodFriday e GetCarnival.

 

O serviço suporta o cálculo dos feriados para os anos entre 1582 e 2299.

 

A descrição do serviço e dos seus métodos encontra-se disponível em http://services.sapo.pt/Metadata/Service/Holiday.



publicado por jac às 10:00
link do post | comentar | ver comentários (5) | 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

SAPO Developer Network v2...

O Verbatim veio ao SAPO

SAPO Developer Network, v...

GIS - Geographical Inform...

Web Service da plataforma...

Geração de código e integ...

Taxas de conversão de câm...

Puny URL

Web Service de programaçã...

Web Service de feriados

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