Trabalho Individual II

Revisão de survey, procurar locais de publicação, reformatar artigo, etc… entrega no final de dez/2020.

Previsão de estrutura da nova versão do trabalho:

Outras atividades secundárias…

1. Artigo para o Evento ITK 2020: Geração de contratos inteligêntes.

https://www.itk.org.br/digital/trabalhos-aprovados

2. Rever artigo do Equador, procurar local de publicação.

3. Preparar artigo sobre Ethereum blockchain e educação.

4. Evento: VIII International Forum Brazil Korea:

Página do evento.

https://www.youtube.com/watch?v=UO8ghS3n_Oc

Código para o Arduído para enviar temperatura dentro da LAN.

#include “DHT.h” // espeficica a lib local
#include // esta libs estao na pasta do arduino
#include // esta libs estao na pasta do arduino

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //Define o endereço MAC da Ethernet

#define DHTPIN A2 // Usa o pino analógico 2
#define DHTTYPE DHT11 // Definições de tipo para o sensor

DHT dht(DHTPIN,DHTTYPE); // Cria o dht

float umidade; // Usamos float pois temos 2 decimais no campo
float temperatura; // Usamos float pois temos 2 decimais no campo

char server []= “192.168.0.7”; // Ip do apache e mariadb na lan
byte ip[] = {192, 168, 0, 10}; // Ip do arduino
EthernetClient client; // cria o cliente

/* Configura a serial, inicializa o DHT, inicializa a Ethernet e criar um delay */
void setup() // —– código executado apenas uma vez main() ————
{
Serial.begin(9600); // configura a porta serial
dht.begin(); // Inicializa o DHT
Ethernet.begin(mac, ip); // Inicializa a placa Ethernet.
delay(5000); // Criar um delay
} //— Fim do código executado apenas uma vez ———————–

void loop() /* Infinite Loop */ // ——– Início do loop infinito —————————
{
umidade = dht.readHumidity(); // atribui o valor à variável
temperatura = dht.readTemperature(); // atribui o valor à variável
Sending_To_ServidorMariaDB(); // chama a função para enviar os dados ao banco
delay(5000); // uma pequena parada!
} // — Fim do loop infinito ———————————

void Sending_To_ServidorMariaDB() // — Conectar no webserver e chamar o php —
{
Serial.println(” “); // Coloca uma linha em branco na serial
if (client.connect(server, 80)) // — início do teste de conexão —
{ // 1. Imprime na serial a requisição HTTP, só para ver se esta tudo ok !!!
Serial.println(“1. Connectado ao servidor…”);
Serial.print(“GET /temperatura4/insert.php?temperatura= “); //mostra a URL usada
Serial.print(temperatura); // o valor recebido da dht
Serial.print(” &umidade= “); //mostra a URL usada no http get
Serial.print(umidade); // o valor recebido da dht

// — 2. Monta a requisição HTTP pelo php para o db ————-
client.print(“GET /temperatura4/insert.php?temperatura=”); // inicio da string get
client.print(temperatura); // o valor da temperatuea
client.print(“&umidade=”);
client.print(umidade); // o valor da umidade
client.print(” HTTP/1.1\r\n”); // vamos finalizar a linha get
client.println(“Host: 192.168.0.7\r\n”); //informa quem ira receber a get
client.print(“Connection: close’\r\n\n” ); //finaliza o comando get
client.stop(); // finaliza o cliente
delay(5000); // +1 pequena pausa!
} else { // if you didn’t get a connection to the server:
Serial.println(“A. connection failed !”);
} // — Fim do if-else —-
} //— Fim da função —-

Latex (arquivo exemplo)

\documentclass[a4paper, 11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[lmargin=2cm,tmargin=2cm,rmargin=2cm,bmargin=2cm]{geometry}
\usepackage[onehalfspacing]{setspace}
\usepackage{blindtext}
\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{comment}
\usepackage{enumerate}
\usepackage{multirow}
\usepackage{multicol}
\usepackage{indentfirst}

\title{Prova 1 – Algoritmos}
\author{
Professor: Sobrenome, Nome\
\texttt{email@email.br}
\and
Aluno: Sobrenome, Nome\
\texttt{email@email.br}
}
\date{Janeiro, 2020}

\begin{document}
\singlespacing
\maketitle

\begin{section}{Questão 1}\label{sec:questao-1}
\begin{flushleft}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sapien mi, rutrum at justo dignissim, ornare auctor purus. Duis feugiat ante ac lacus porta euismod. Vivamus justo augue, faucibus a dolor sed, consequat gravida arcu. Aenean accumsan lectus eget augue interdum, id malesuada est auctor. Duis vel mauris pellentesque, varius quam id, facilisis risus. Nullam quis lacinia est, sed placerat nulla. Morbi et sodales lacus. Mauris elit nibh, dignissim a eleifend in, convallis non tellus. Proin quis ante elit. Mauris egestas sodales arcu at pretium.
\par
Nullam in lacinia lectus. Nullam ex velit, aliquet vitae vehicula non, sagittis at neque. In venenatis quis augue nec convallis. Cras sagittis fermentum leo, in pellentesque sapien. Nullam augue nunc, ornare ut nulla non, vestibulum vulputate sem. Nullam et ante in nulla dapibus venenatis. Donec bibendum venenatis dapibus. Aenean at purus sem. Praesent vestibulum neque sit amet eros gravida dignissim. Nunc tempor porta tempor.
\end{flushleft}
\begin{figure}[h]
\graphicspath{ {/} }
\includegraphics[scale=1.1]{boat.jpg}
\centering
\caption{A boat.}
\label{fig:boat1}
\end{figure}
\Blindtext[1]
\end{section}

\newpage

\begin{section}{Questão 2}\label{sec:questao-1}
\begin{flushleft}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sapien mi, rutrum at justo dignissim, ornare auctor purus. Duis feugiat ante ac lacus porta euismod. Vivamus justo augue, faucibus a dolor sed, consequat gravida arcu. Aenean accumsan lectus eget augue interdum, id malesuada est auctor. Duis vel mauris pellentesque, varius quam id, facilisis risus. Nullam quis lacinia est, sed placerat nulla. Morbi et sodales lacus. Mauris elit nibh, dignissim a eleifend in, convallis non tellus. Proin quis ante elit. Mauris egestas sodales arcu at pretium.
\par
Nullam in lacinia lectus. Nullam ex velit, aliquet vitae vehicula non, sagittis at neque. In venenatis quis augue nec convallis. Cras sagittis fermentum leo, in pellentesque sapien. Nullam augue nunc, ornare ut nulla non, vestibulum vulputate sem. Nullam et ante in nulla dapibus venenatis. Donec bibendum venenatis dapibus. Aenean at purus sem. Praesent vestibulum neque sit amet eros gravida dignissim. Nunc tempor porta tempor.
\end{flushleft}
\begin{figure}[h]
\graphicspath{ {/} }
\includegraphics[scale=1.1]{car.jpg}
\centering
\caption{A car.}
\label{fig:boat1}
\end{figure}
\Blindtext[1]
\end{section}

\newpage

\begin{section}{Questão 3}\label{sec:questao-1}
\begin{flushleft}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sapien mi, rutrum at justo dignissim, ornare auctor purus. Duis feugiat ante ac lacus porta euismod. Vivamus justo augue, faucibus a dolor sed, consequat gravida arcu. Aenean accumsan lectus eget augue interdum, id malesuada est auctor. Duis vel mauris pellentesque, varius quam id, facilisis risus. Nullam quis lacinia est, sed placerat nulla. Morbi et sodales lacus. Mauris elit nibh, dignissim a eleifend in, convallis non tellus. Proin quis ante elit. Mauris egestas sodales arcu at pretium.
\par
Nullam in lacinia lectus. Nullam ex velit, aliquet vitae vehicula non, sagittis at neque. In venenatis quis augue nec convallis. Cras sagittis fermentum leo, in pellentesque sapien. Nullam augue nunc, ornare ut nulla non, vestibulum vulputate sem. Nullam et ante in nulla dapibus venenatis. Donec bibendum venenatis dapibus. Aenean at purus sem. Praesent vestibulum neque sit amet eros gravida dignissim. Nunc tempor porta tempor.
\end{flushleft}
\begin{figure}[h]
\graphicspath{ {/} }
\includegraphics[scale=1.1]{moto.jpg}
\centering
\caption{A moto.}
\label{fig:boat1}
\end{figure}
\Blindtext[1]
\end{section}

\newpage

\begin{section}{Questão 4}\label{sec:questao-1}
\begin{flushleft}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sapien mi, rutrum at justo dignissim, ornare auctor purus. Duis feugiat ante ac lacus porta euismod. Vivamus justo augue, faucibus a dolor sed, consequat gravida arcu. Aenean accumsan lectus eget augue interdum, id malesuada est auctor. Duis vel mauris pellentesque, varius quam id, facilisis risus. Nullam quis lacinia est, sed placerat nulla. Morbi et sodales lacus. Mauris elit nibh, dignissim a eleifend in, convallis non tellus. Proin quis ante elit. Mauris egestas sodales arcu at pretium.
\par
Nullam in lacinia lectus. Nullam ex velit, aliquet vitae vehicula non, sagittis at neque. In venenatis quis augue nec convallis. Cras sagittis fermentum leo, in pellentesque sapien. Nullam augue nunc, ornare ut nulla non, vestibulum vulputate sem. Nullam et ante in nulla dapibus venenatis. Donec bibendum venenatis dapibus. Aenean at purus sem. Praesent vestibulum neque sit amet eros gravida dignissim. Nunc tempor porta tempor.
\end{flushleft}
\begin{figure}[h]
\graphicspath{ {/} }
\includegraphics[scale=1.1]{plane.jpg}
\centering
\caption{A plane.}
\label{fig:boat1}
\end{figure}
\Blindtext[1]
\end{section}

\newpage

\begin{section}{Questão 5}\label{sec:questao-1}
\begin{flushleft}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sapien mi, rutrum at justo dignissim, ornare auctor purus. Duis feugiat ante ac lacus porta euismod. Vivamus justo augue, faucibus a dolor sed, consequat gravida arcu. Aenean accumsan lectus eget augue interdum, id malesuada est auctor. Duis vel mauris pellentesque, varius quam id, facilisis risus. Nullam quis lacinia est, sed placerat nulla. Morbi et sodales lacus. Mauris elit nibh, dignissim a eleifend in, convallis non tellus. Proin quis ante elit. Mauris egestas sodales arcu at pretium.
\par
Nullam in lacinia lectus. Nullam ex velit, aliquet vitae vehicula non, sagittis at neque. In venenatis quis augue nec convallis. Cras sagittis fermentum leo, in pellentesque sapien. Nullam augue nunc, ornare ut nulla non, vestibulum vulputate sem. Nullam et ante in nulla dapibus venenatis. Donec bibendum venenatis dapibus. Aenean at purus sem. Praesent vestibulum neque sit amet eros gravida dignissim. Nunc tempor porta tempor.
\end{flushleft}
\begin{figure}[h]
\graphicspath{ {/} }
\includegraphics[scale=1.1]{submarino.jpg}
\centering
\caption{A submarino.}
\label{fig:boat1}
\end{figure}
\Blindtext[1]
\end{section}

\newpage

\begin{section}{Questão 6}\label{sec:questao-1}
\begin{flushleft}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sapien mi, rutrum at justo dignissim, ornare auctor purus. Duis feugiat ante ac lacus porta euismod. Vivamus justo augue, faucibus a dolor sed, consequat gravida arcu. Aenean accumsan lectus eget augue interdum, id malesuada est auctor. Duis vel mauris pellentesque, varius quam id, facilisis risus. Nullam quis lacinia est, sed placerat nulla. Morbi et sodales lacus. Mauris elit nibh, dignissim a eleifend in, convallis non tellus. Proin quis ante elit. Mauris egestas sodales arcu at pretium.
\par
Nullam in lacinia lectus. Nullam ex velit, aliquet vitae vehicula non, sagittis at neque. In venenatis quis augue nec convallis. Cras sagittis fermentum leo, in pellentesque sapien. Nullam augue nunc, ornare ut nulla non, vestibulum vulputate sem. Nullam et ante in nulla dapibus venenatis. Donec bibendum venenatis dapibus. Aenean at purus sem. Praesent vestibulum neque sit amet eros gravida dignissim. Nunc tempor porta tempor.
\end{flushleft}
\begin{figure}[h]
\graphicspath{ {/} }
\includegraphics[scale=1.1]{truck.jpg}
\centering
\caption{A truck.}
\label{fig:boat1}
\end{figure}
\Blindtext[1]
\end{section}

\newpage

\begin{section}{Questão 6}\label{sec:questao-1}
\begin{flushleft}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sapien mi, rutrum at justo dignissim, ornare auctor purus. Duis feugiat ante ac lacus porta euismod. Vivamus justo augue, faucibus a dolor sed, consequat gravida arcu. Aenean accumsan lectus eget augue interdum, id malesuada est auctor. Duis vel mauris pellentesque, varius quam id, facilisis risus. Nullam quis lacinia est, sed placerat nulla. Morbi et sodales lacus. Mauris elit nibh, dignissim a eleifend in, convallis non tellus. Proin quis ante elit. Mauris egestas sodales arcu at pretium.
\par
Nullam in lacinia lectus. Nullam ex velit, aliquet vitae vehicula non, sagittis at neque. In venenatis quis augue nec convallis. Cras sagittis fermentum leo, in pellentesque sapien. Nullam augue nunc, ornare ut nulla non, vestibulum vulputate sem. Nullam et ante in nulla dapibus venenatis. Donec bibendum venenatis dapibus. Aenean at purus sem. Praesent vestibulum neque sit amet eros gravida dignissim. Nunc tempor porta tempor.
\end{flushleft}
\begin{figure}[h]
\graphicspath{ {/} }
\includegraphics[scale=1.1]{skate.jpg}
\centering
\caption{A skate.}
\label{fig:boat1}
\end{figure}
\Blindtext[1]
\end{section}

\end{document}

Técnicas de Programação

Apresentação da disciplina:

aula_00_apresentacao

Exercício de Implementação: Python Básico
Implemente dois scripts utilizando a linguagem Python. Utilize a ferramenta web repl.it para realizar o desenvolvimento.

O primeiro script deve gerar um arquivo de texto com 100 valores inteiros aleatórios, no intervalo entre 1 e 100.
O segundo script deve abrir o arquivo de texto gerado, ler todos os valores, calcular a média e a mediana dos valores lidos, e imprimi-las na tela.
Submeta como solução (i) os dois scripts gerados, e (ii) uma captura de tela do repl.it mostrando o código fonte e a saída do segundo script.

Outros exercícios serão postados aqui em Dezembro/2020.

Trabalho final:

trabalho_tecnicas_programacao

Resolução do trabalho: Montagem de protótipo de dApp para acesso a blockchain de testes, envio de valores e recuperação dos mesmos.

Resumo:
Foi desenvolvido um protótipo de software para simular a recepção de dados, envio de dados para blockchain e exibição dos mesmos. A blockchain escolhida foi o Ethereum rodando em um nó privado. O nó privado foi configurado usando TestRPC1. O código gerado para a blockchain Ethereum foi escrito em Solidity.

Arquitetura do protótipo

O protótipo foi construído para permitir testar conceitos. O principal era a troca de dados entre aplicação cliente e a blockchain. A aplicação cliente é também chamada de dApp (ou aplicação descentralizada), esta aplicação pode rodar em qualquer dispositivo geralmente em um navegador. Por outro lado (server side) temos a aplicação “servidor”, no caso a blockchain que atende as requisições dos clientes (dApps). A ligação entre cliente e servidor se dá por chamadas RPC (Remote Procedure Call). A arquitetura do protótipo foi configurada em uma máquina local para testes, porém como o servidor escuta portas RPC um ambiente de rede com máquinas virtuais ou reais também poderia ter sido utilizado para testes. O lado cliente é composto por uma simples interface com o usuário feita em HTML e Jquery. O cliente deve ter no seu código javascript um Provider, que é o responsável por criar a ligação com o servidor e um código ABI (Application Binary Interface). A ABI é responsável pela padronização, para interações com o contrato, esta é descrita em JSON (JavaScript Object Notation). O nó necessita da biblioteca web3.js, o qual permite que o nó Ethereum possa interagir via Http (Hypertext Transfer Protocol) ou RPC com os clientes. A biblioteca web3.js deve ser instalada via node.js2 e deve estar presente no lado cliente. O nó Ethereum necessita ter a uma porta TPC (Transmission Control Protocol) disponível (geralmente é a 8545) e um local em disco para guardar os blocos que compõe a blockchain. A blockchain utiliza no armazenamento “trie” (digital tree ou prefix tree) como estruturas de dados, é uma estrutura de árvore. A rede Ethereum é uma rede pública na qual são necessários Eth (dinheiro) para processar transações, por isto não foi utilizada. Apesar de existirem redes Ethereum públicas para testes como Ropsten, Kovan, Rinkeby e Goerli, neste cenário foi optado pela configuração de um nó privado local. A figura 1, apresenta a arquitetura.

Estrutura do protótipo:

Arquitetura do teste:

Blocos no disco:

Contrato em Solidity:

Testrpc rodando:

Exemplo código js com web3js:

Formulário simples:

O trabalho final foi postado no git hub.

Trabalho Individual I

Survey, revisão de literatura, etc… entrega no final de jun/2020.

Visualização de rede, tópicos obtidos dos abstracts de arquivos .RIS de artigos selecionados no survey, imagem gerada pelo aplicativo VOSviewer.

Análise de Algoritmos

Referências:
[KT05] Kleinberg, J., & Tardos, É. (2005). Algorithm Design (1st ed.). Boston: Addison-Wesley.
[CLRS09] Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Introduction to algorithms (3rd ed.). Cambridge: MIT Press.
[HF04] Harel, D., & Feldman, Y. A. (2004). Algorithmics: The Spirit of Computing (3rd ed.). Harlow: Addison-Wesley.
[T98] Taylor, R. G. (1998). Models of Computation and Formal Languages. New York: Oxford University Press.

Algoritmo de Gale-Shapley
Exemplo de binary search
Big-O cheat sheat
Grafos
Algoritmos gulosos
Divisão e conquista
Programação dinâmica
NP e intratabilidade
Teoria da computação
Distâncias: algoritmos aproximativos
Distâncias: algoritmos randomizados
Extra: IA

Exercícios:

prova

Trabalhos…

  1. (GABRIEL) Trabalho de análise de algoritmo, em Latex
    23/03 Trabalho 1
    Questao 1. Disserte sobre algoritmos aproximativos.
    Questao 2. Disserte sobre algoritmos randomizados.
    Comente sobre:
  2. A motivação por tras destes algoritmos
  3. Sua importância para a computação
  4. Suas principais características,
  5. Algumas das tecnicas para projetar estes tipos de algoritmos
  6. As diferenças deste tipo de algoritmo para outros tipos vistos em aula.
  7. Apresente um exemplo de algoritmo aproximativo e comente
  8. Em linhas gerais, sua analise de complexidade.
Trabalho1_ProfGabriel_v1

30/03 Trabalho 2 – algoritmo
Questao 1. Disserte sobre analise de algoritmos.
Sua resposta deve englobar os seguintes temas: tratabilidade, complexidade assintotica, notação Big O, e classes de função.
Para cada tema, explique: o conceito, comente sobre sua importancia, e apresente exemplos.

Questao 2. Disserte sobre tecnicas de projeto de algoritmos.
Sua resposta deve abordar as seguintes tecnicas: A) algoritmos gulosos, B) divisão e conquista, e C) programação dinâmica.
Diferenças entre as técnicas.
Situações de uso (em quais situações é mais indicada em relação aos demais).
Idéia geral de cada técnica.
Discuta a importância para a computação.
Características principais.
Forma de analisar algoritmos usando essas técnicas.
Cite exemplos de algoritmos que usam essas técnicas e que estejam alinhados com o tema de sua pesquisa.

Trabalho2_ProfGabriel_v2

Internet das Coisas e Aplicações Distribuídas

Programa de Pós-Graduação em Computação Aplicada
Disciplina: INTERNET DAS COISAS E APLICAÇÕES DISTRIBUÍDAS
Professor: Cristiano André da Costa e Rodrigo da Rosa Righi

EMENTA Aborda o paradigma da Internetdas Coisas (ou IoT, do termo em inglês Internet of Things)e suas aplicações. Inclui aspectos de middleware, sensores, arquitetura e protocolos empregados. Ainda, a disciplinatambém aborda questões como desempenho da solução, escalabilidade e interoperabilidade. Por fim, apresenta estudos de casos em diferentes áreas de aplicação, como saúde, comércio eletrônico, logística, transporte e energia.

CONTEÚDO PROGRAMÁTICO •Introdução a Internet das Coisas•Arquiteturas e Middlewares de IoT•Integração de IoT e Computação em Nuvem •Interoperabilidade, Elasticidade, Escalabilidade e Escalonamento•Computação Móvel e Ubíqua•Ciência de Contexto para IoT•Wearables e Sensores•Protocolos de Comunicaçãopara IoT•Áreas de Aplicação e Estudos de Caso

BIBLIOGRAFIA BÁSICA:
GUBBI, Jayavardhana et al. Internet of Things (IoT): A vision, architectural elements, and future directions.Future generation computer systems, v. 29, n. 7, p. 1645-1660, 2013.LI, S.; DA XU, L.; ZHAO, S. The internet of things: a survey. Information Systems Frontiers, v. 17, p. 243–259, 2015.XIA, Feng et al. Internet of things.International Journal of Communication Systems, v. 25, n. 9, p. 1101, 2012.

BIBLIOGRAFIA COMPLEMENTAR:
RIAZUL ISLAM, S. M. et al. The Internet of Things for Health Care: A Comprehensive Survey. IEEE Access, v. 3, p. 678–708, 3 jun. 2015.PERERA, C. et al. Context Aware Computing for The Internet of Things: A Survey. Communications Surveys & Tutorials, IEEE, v. 16, n. 1, p. 414–454, 2014.KELLY, Sean Dieter Tebje; SURYADEVARA, Nagender Kumar; MUKHOPADHYAY, Subhas Chandra. Towards the implementation of IoT for environmental condition monitoring in homes.IEEE Sensors Journal, v. 13, n. 10, p. 3846-3853, 2013.WANT, Roy. An introduction to RFID technology.IEEE pervasive computing, v. 5, n. 1, p. 25-33, 2006.

Trabalho 1…

IoT_Apresentacao1

Trabalho 2…

IoT_Apresentacao2

Trabalho 3…

IoT_Apresentacao3

Trabalho 4…

Trabalho de IoT/App distribuídas:
29/05 – Entrega de trabalho
Escolher middleware…. ThingSpeak ???

  1. Descrever o que faz… quais funcionalidades, como programa, prós e contras
    comparação com outros concorrentes
  2. Implementação, mostrar código, processos que se comunica na rede, como modelaram, explicar linhas do código
  3. Mostrar resultados, testes, telas do programa, tráfego de dados, dados de desempenho, tempo de comunciação, largura de banda, testes de resultados
  • Escolha um middleware IoT ou de Sistemas Distribuídos (exemplos de áreas: saúde, segurança, banco de dados, comunicação, Big Data, sistema de arquivos, sensores e atuadores, Indústria 4.0).
  • Faça um documento de aproximadamente 10 páginas utilizando o processador LATEX (recomendável usar a plataforma Overleaf) e om modelo de textos da SBC (já disponível no Overleaf) que tenha:
    1/ Análise descritiva do Middleware que você escolheu e uma comparação com os concorrentes.
    2/ Dados de Implementação, ou seja, código e algoritmos e suas descrições.
    3/ Uma seção de resultados e testes, mostrando que a sua implememntação de fato executou em um sistema distribuído: por exemplo, pensar em gráficos, latência, largura de banda, rtelas, dados numéricos, investigação de protocolos e cabeçalhos.

Artigo:

Artigo_Emiliano_Prof_Rodrigo_IoT_Middleware_v1

Figuras: