Skip to content

Sumários

fbfreitas edited this page Nov 5, 2019 · 2 revisions

Aula 01 - Apresentação.

10-09-2019

Sumário


Aula 02 - Enquadramento da UC de PI. Linguagem JavaScript: Variáveis e scope, tipos primitivos e objetos

17-09-2019

  • World Wide Web (WWW)

    • História
    • Arquitetura
      • Cliente (browser)
      • Servidor de hipertexto
      • Protocolo de interação entre cliente e servidor (Hypertext Transfer Protocol)
  • Arquitetura Cliente <=> Servidor

  • Distinção entre tecnologias Web de cliente (browser) e servidor.

    • Cliente: HTML, CSS, JavaScript
    • Servidor: Node.js, PHP, Java, .NET, C/C++, etc.
  • Evolução histórica de PI e crescendo da importância do Javascript.

  • Evolução da tecnologia de servidor até ao Node.Js.

  • Standard de uma linguagem de script. ECMA – 262

  • Evolução histórica do Javascript desde o seu aparecimento em 1995 com o objetivo inicial de uma linguagem de scripting para o browser, até à versão EcmaScript 6


  • Análise das características da linguagem de programação Javascript como: dinâmica, funcional, untyped, e interpretada.

  • Scopes:

    • let e const – variáveis que NÃO podem ser usadas fora do bloco em que foram declaradas. Temporal Dead Zone
    • var - scope da função onde é declarada. Recomendação de NÃO usar.
  • Sistema de tipos EcmaScript edição 6: Object e Primitivos (todos os outros que não são Object)

  • Tipos Primitivos: Undefined, Null, Boolean, Number, String.

  • operador typeof e instanceof

  • Objetos

    • Um objeto em JavaScript é um contentor de pares nome-valor!
    • Objeto Literal: { prop1: valor1, prop: valor2, …}
    • propriedades são membros de um objeto que armazenam valores.
    • Uma propriedade que armazena uma função é um método
    • 2 sintaxes para acesso a propriedades:
      • Dot notation: - obj.propName
        • Apenas pode ser usada para acesso a propriedades com nomes que são identificadores válidos
      • Subscript notation
        • Aceder a uma propriedade com nome dado por uma expressão: obj[exp]
        • Pode ser usada para acesso a propriedades cujo nome não é um identificador válido
        • Chamar um método com nome dado por uma expressão: obj[exp]()
    • Introspeção sobre objetos em Javascript :
      • Enumeração sobre nomes das propriedades de um objeto – for(var key in objRef)
  • Arrays

    • Arrays literais: [“elem1”, , “elem2”] -- a posição 1 fica com o elemento undefined
    • Crescem automaticamente, como List do Java ou .Net
    • Não são tipificados, logo são heterogéneos.
    • Os elementos são obtidos por uma chave numérica, ou em string, tal como para as outras propriedades
    • A principal diferença para os objetos é que têm uma propriedade length.

Recursos


Aula 03 - Linguagem JavaScript: Funções

19-09-2019

  • As funções são declaradas como literais que criam um valor função. 2 formas (existe uma 3ª forma):
    • função sem nome - definição de função - e.g. function () {} (função anónima)
    • função com nome - declaração de função - e.g. function foo() {}
  • Uma função tem uma propriedade name que guarda o nome declarado na função.
  • Funções anónimas têm a propriedade name igual a string vazia ("").
  • O nome da variável que refere uma função != da propriedade name dessa função
  • O número de argumentos, não tem que coincidir com o número de parâmetros
  • Scope (visibilidade) de uma função e de um bloco.
  • Closure de uma função:
    • Criado um novo por cada invocação da função
    • Pode ter um tempo de vida superior à execução dessa chamada à função, se ficarem acessíveis funções criadas nessa chamada

Recursos


Aula 04 - Linguagem JavaScript: Funções (continuação)

24-09-2019

  • Todas as funções recebem dois parâmetros implícitos: this e arguments

  • arguments é uma coleção com o mesmo comportamento de array mas sem os seus métodos

  • 4 formas de chamar uma função:

    1. Como uma função -- this igual ao objeto global ou undefined (se em modo strict)
    2. Como um método -- this igual ao target e.g. target.methodName()
    3. Como construtor -- this igual ao objeto criado e.g. new funcName()
    4. com apply() ou call()
  • Função Construtora - Chamada realizada com o operador prefixo new

    • O operador new altera o significado do this que refere o objecto criado;
    • O construtor retorna implicitamente o novo objecto (this) a não ser que haja retorno explícito;
    • Função Construtora --- tem uma propriedade explícita prototype;
    • Utilização de Function::call() para chamar um construtor "base"
  • Prototypes

    • Objeto ––– constructor –––> função Construtora (código) ––– prototype –––> objeto Protótipo.
    • O protótipo tem a semântica do padrão de desenho Prototype
    • O protótipo serve de “modelo” à criação de novos objectos
    • Cada objecto tem uma propriedade implícita que refere o seu protótipo.
    • Exemplos de actualização do prototype e reflexo nos objectos com esse prototype
    • Properties Lookup (o objecto tem precedência sobre o protótipo)
      • Primeiro procura no objecto uma propriedade com o nome igual
      • Caso não encontre, então procura no prototype uma propriedade com esse nome prototype chain
    • Sobreposição de propriedades e comportamento do prototype chain
  • Modo strict


Recursos


26-09-2019

Esclarecimento de dúvidas dos workshops:


  • ElasticSearch - schema-free + RESTful + NoSQL
  • ElasticSearch - Armazena e indexa documentos JSON via HTTP
  • run: > elasticsearch
  • RESTFull - baseado em HTTP + recursos identificados por URI
    • HTTP GET - retorna um recurso
    • HTTP PUT - actualiza um recurso identificado por um URI
    • HTTP POST - quando o URI não é conhecido
    • HTTP DELETE - remove um recurso
  • Elastic - Recursos = Documentos JSON
  • Documentos JSON URI = elastic host``/``indice``/``type
    • curl http://localhost:9200/_cat -- informação do cluster
    • curl http://localhost:9200/_cat/indices -- listar índices
    • curl http://localhost:9200/_all -- detalhes de todos os índice
    • curl http://localhost:9200/books -- detalhes de um índice, e.g. books
    • curl http://localhost:9200/books/_search -- listar documentos de um índice, e.g. books
    • curl http://localhost:9200/books/book/pg1001 -- detalhes de um documento com _id = pg1001 e type = book
  • Manipular:
    • curl -X PUT http://localhost:9200/books -- Criar um índice, e.g. books
    • curl -X DELETE http://localhost:9200/books/book/pg1001 -- Apagar o documento com _id = pg1001
    • curl -X POST versus PUT para criar um documento com o conteúdo do ficheiro The-Art-of-War.json.

Clone this wiki locally