-
Notifications
You must be signed in to change notification settings - Fork 1
TPC
- Instalar o node.js
- Instalar o workshop Javascripting do nodeschool.io/
- Resolver o maior número de exercícios do workshop Javascripting
Implementar function inspect(obj)
:
- Escreve na console os pares nome valor de propriedades de obj:
nome-prop = valor
- Se a propriedade for um método (função) apresenta o resultado da chamada à função.
- só para métodos sem parametros. Os métodos com parametros são ignorados.
=> Colocar a resolução num repositório Github e adicionar fmcarvalho
- Resolver o workshop Functional Javascript
- Resolver o workshop Learn you node
Implementar uma função que recebe um array de URLs e devolve a soma dos tamanhos dos corpos das respostas HTTP a esses URLs.
function sumBodiesLength()
Requisitos:
- Tirar partido da função anterior
bodyLength
(assíncrona) que pode ser modificada. - Não usar variáveis globais.
- Resultados deixam de ser dados pelas funções em
console.log()
, excepto na aplicação final.
Implementar as funções:
- módulo
users
-function addUser(username, cb)
- Grava no ficheiro um novo objectoUser
com com o username dado. Nao aceita repetições e dá erro caso já exista umUser
com o mesmousername
. - módulo
users
-function addArtist(username, artist, cb)
- Grava e adiciona oartist
ao arrayartists
do objectoUser
com o username dado. Aceita repetições de artistas. - módulo
lastfm
-function searchArtist(artist, cb)
- Pesquisa na Last.fm API se existe um artista com o nome dado.
De seguida implemente a próxima funcionalidade do serviço vinyl
que tira partido das operações anteriores de lastfm
e users
:
- módulo
vinyl
-function addArtist(username, artist, cb)
- Devolve erro caso não exista um utilizador com ousername
dado ou não exista um artista com o nome dado no parâmetroartist
. Caso contrário, chamaaddArtist
deusers
.
Adicionar testes unitários para todas as funcionalidades implementadas no TPC06 assegurando 99% de cobertura. Deve utilizar mocks e garantir que os testes são idempotentes, assegurando que podem ser executados com sucesso repetidamente.
Incluir na resposta de routes-vinyl
getUsers
os links para obtenção dos
detalhes e top tracks de cada utilizador.
Implement Vinyl Web App including routes for all operations of TPC 06. Also, develop integration tests to validate Vinyl routes.
- Notice that in
addBook(id, pgid, cb)
the HTTP requests to get a bundle and get a book from thebundles
andbooks
indexes are made sequentially. Yet, those operations could run concurrently instead. Modify this implementation such that HTTP requests are performed concurrently. - Notice that previous issue also applies to function
addArtist(username, artist, cb)
ofvinyl
module. In this case getting theuser
profile and gettingartist
from Last.fm can be performed concurrently. DRY (Don't repeat yourself). Implement an auxiliary function that can run tasks concurrently. This function isparallel(tasks, callback)
:- "Run the
tasks
array of functions in parallel. If any of the functions pass an error to its callback, the maincallback
is immediately called with the value of the error. Once thetasks
have completed, the results are passed to the finalcallback
as an array."
- "Run the
- Use previous function
parallel
in methodsaddBook
andaddArtist
to perform requests concurrently.