├── CAD └── readme.md ├── DataScience ├── numpy.md ├── plot.md ├── readme.md ├── trilha_data_science.md ├── uniao_de_tabelas_por_nome.md └── vscode_jupyter_notebook_win.md ├── Impressao3D └── readme.md ├── IntroducaoAJavascript └── readme.md ├── IntroducaoANodeJS └── readme.md ├── IntroducaoAReact ├── arrow_function.md ├── com_parametro.png ├── comandos_basicos_yarn.md ├── componentes.md ├── css.md ├── exemplo_de_gitignore.md ├── jsx.md ├── mqtt.md ├── publicando_em_uma_github_page.md └── readme.md ├── IntroducaoAReactNative └── readme.md ├── IntroducaoARoboticaEducacional └── readme.md ├── IntroducaoAoGit └── readme.md ├── IntroducaoAoHTML └── readme.md ├── IoT ├── hello_world_micropython.md ├── instalacao_ambiente.md ├── instalacao_ambiente_lar.md ├── introducao_esp.md ├── introducao_microcontroladores.md ├── mqtt.md ├── pinos_placas.md ├── readme.md └── sensores.md ├── Linux └── readme.md ├── MachineLearning └── README.md ├── MongoDB └── readme.md ├── NLP └── README.md ├── Python ├── Basico │ ├── numpy_array.md │ └── readme.md ├── ambiente_virtual.md └── trilha_python.md ├── ROS ├── Basico │ └── readme.md ├── Intermediario │ └── readme.md └── README.md ├── readme.md └── web ├── intermediario.md ├── trilha_backend.md └── trilha_front.md /CAD/readme.md: -------------------------------------------------------------------------------- 1 | # Introdução CAD 2 | 3 | ## Introdução 4 | 5 | ## Ferramentas 6 | 7 | ### Ferramentas CAD 8 | 9 | * Solidworks, http://www.solidworks.com/ 10 | * Onshape, https://www.onshape.com/edu 11 | * Fusion 360, https://www.autodesk.com/products/fusion-360/students-teachers-educators 12 | * Creo, https://www.ptc.com/en/cad/creo 13 | * Tinkercad, https://www.tinkercad.com/ 14 | * FreeCAD, https://www.freecadweb.org/?lang=pt_BR 15 | 16 | 17 | 18 | ## Tutoriais 19 | 20 | * Fusion 360, https://www.youtube.com/watch?v=TBTBbhNSZXc&list=PLdan5vVMQfYleWpYgSZBgYFZMewfS2fz3 21 | * OnShape, https://learn.onshape.com/learning-paths/onshape-fundamentals-cad 22 | * OpenSCAD, https://www.youtube.com/watch?v=eq5ObNeiAUw&list=PLqIOgk3ZeY4ViXmrO4BdixvNIhqk-zpDX 23 | * SolidWorks 2014, https://www.youtube.com/playlist?list=PLkMYhICFMsGajeARsY7N1t1jhbtMb1poL 24 | 25 | Observação: Recomendação para quem está começando a estudar modelagem 3D, ver o tutorial SolidWorks ou a Documentação do OnShape. O OnShape pode ser acessado de forma gratuita via navegador de internet. 26 | 27 | ## Atividades 28 | 29 | * https://github.com/Natalnet/GCAD/tree/master/P1 30 | * https://github.com/Natalnet/GCAD/tree/master/P2 31 | 32 | ## Referencias 33 | 34 | * OpenSCAD Documentação, http://www.openscad.org/documentation.html 35 | -------------------------------------------------------------------------------- /DataScience/numpy.md: -------------------------------------------------------------------------------- 1 | # Numpy 2 | 3 | ## Criando um Array 4 | 5 | ### Com um tamanho n desejado 6 | 7 | ```python 8 | vetor = np.array(n) 9 | ``` 10 | 11 | ### A partir de um vetor 12 | ```python 13 | vetor = np.array([1,2,3]) 14 | ``` 15 | 16 | ### Com n zeros 17 | ```python 18 | vetor = np.zeros(n) 19 | ``` 20 | 21 | ## Operações Matemáticas 22 | 23 | ### Média 24 | ```python 25 | np.average(vetor) 26 | ``` 27 | 28 | 29 | -------------------------------------------------------------------------------- /DataScience/plot.md: -------------------------------------------------------------------------------- 1 | # Básico de plot 2 | Com a biblioteca matplotlib 3 | Para importar 4 | ```python 5 | import matplotlib.pyplot as plt 6 | ``` 7 | 8 | ## Plot em linha 9 | Basta colocar um vetor Y 10 | ```python 11 | plt.plot(Y) 12 | ``` 13 | 14 | Quando tiver um vetor X 15 | ```python 16 | plt.plot(X,Y) 17 | ``` 18 | -------------------------------------------------------------------------------- /DataScience/readme.md: -------------------------------------------------------------------------------- 1 | # Introdução ao Pandas 2 | **Pré-requisitos: Python** 3 | 4 | ## Sumário 5 | * [Carregar Arquivos ](https://github.com/Natalnet/ModulosDeEstudo/blob/master/DataScience/readme.md#carregar-arquivos) 6 | * [DataFrames](#dataframe) 7 | * [Introdução ao plot](#introdu%C3%A7%C3%A3o-ao-plot) 8 | 9 | ## Carregar Arquivos 10 | 11 | ### Abre uma janela para upload de arquivos 12 | ```python 13 | from google.colab import files 14 | uploaded = files.upload() 15 | ``` 16 | ### Ler arquivo no formtao csv 17 | ```python 18 | # Pandas: biblioteca para manipular a base de dados 19 | import pandas as pd 20 | # read_csv: método para ler a base de dados no formato csv 21 | base_de_dados = pd.read_csv("nome_do_arquivo.csv") 22 | ``` 23 | 24 | ### Ler arquivos no formato de excel 25 | ```python 26 | base_de_dados = pd.read_excel("nome_do_arquivo.xlsx") 27 | ``` 28 | 29 | ### Ler de uma URL 30 | 31 | ```python 32 | # read_csv: método para ler a base de dados no formato csv 33 | dados_url = pd.read_csv("https://raw.githubusercontent.com/ect-info/ml/master/dados/base_de_dados.csv") 34 | ``` 35 | 36 | ## DataFrame 37 | ### Cria a partir de um vetor de índices 38 | ```python 39 | df = pd.DataFrame(columns=['colunaA','ColunaB','etc'], index=vetor_indices ) 40 | ``` 41 | ### Renomeia colunas 42 | ```python 43 | base_de_dados.rename(columns={'nome_antigo':'nome_novo'}, inplace=True) 44 | ``` 45 | 46 | ### Preencher campos vázios com zeros 47 | ```python 48 | base_de_dados['campo'] = base_de_dados['campo'].fillna(0) 49 | ``` 50 | 51 | ### Converte um campo para inteiro 52 | ```python 53 | base_de_dados['campo'] = base_de_dados['campo'].astype(int) 54 | ``` 55 | 56 | ### Conta a ocorrência de valores categóricos em uma coluna 57 | ```python 58 | base_de_dados["campo"].value_counts() 59 | ``` 60 | 61 | ### Conta quantas células estão vazias 62 | ```python 63 | base_de_dados.isnull().sum() 64 | ``` 65 | 66 | ### Remove linhas nulas 67 | ```python 68 | base_de_dados.dropna(inplace=True) 69 | ``` 70 | 71 | ### União através de uma chave 72 | ```python 73 | base_de_dados_resultante = pd.merge(data_set_esquerdo, data_set_esquerdo, on='nome_da_coluna') 74 | ``` 75 | 76 | ### Salva um arquivo csv 77 | ```python 78 | base_de_dados.to_csv("nome_do_arquivo.csv", sep=',') 79 | ``` 80 | 81 | ### Seleção através de linhas com base em condições 82 | ```python 83 | variavel_sel = base_de_dados["nome_da_coluna"] > n 84 | base_de_dados_sel = base_de_dados[varaivel_sel] 85 | ``` 86 | 87 | ### Aplica uma função em uma coluna 88 | ```python 89 | def nome_funcao(x): 90 | comandos 91 | 92 | df["resultado"] = df["nome_da_coluna"].apply(nome_funcao) 93 | ``` 94 | 95 | ## Introdução ao plot 96 | 97 | ### Análise Visual de Correlação 98 | 99 | ```python 100 | import matplotlib.pyplot as plt 101 | import seaborn as sns 102 | %matplotlib inline 103 | sns.pairplot(dados_casas, size=2.5) 104 | plt.tight_layout() 105 | ``` 106 | 107 | ### Referências 108 | * [Pandas: Merge, join, and concatenate](https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html) 109 | * [Python | Pandas Series](https://www.geeksforgeeks.org/python-pandas-series/#Basics) 110 | -------------------------------------------------------------------------------- /DataScience/trilha_data_science.md: -------------------------------------------------------------------------------- 1 | # Trilha Data Science 2 | 3 | ## Material em Slides e Código 4 | 5 | [Curso de Data Science ofertado pelo professor Ivanovitch - UFRN](https://github.com/ivanovitchm/datascience2020.6) 6 | 7 | [Curso de Machine Learning ofertado pelo professor Ivanovitch - UFRN](https://github.com/ivanovitchm/ppgeecmachinelearning2020.2) 8 | 9 | ## Material em Vídeo 10 | 11 | [Curso de Deep Learning ofertado pelo professor Ivanovitch - UFRN](https://github.com/ivanovitchm/imd1122) 12 | 13 | [Curso de Machine Learning ofertado pelo professor Dalcimar Casanova - UTFPR](https://www.youtube.com/playlist?list=PL9At2PVRU0Zoa4_aFhnFDWFLyogcM1xpd) 14 | 15 | [Curso de Deep Learning ofertado pelo professor Dalcimar Casanova - UTFPR](https://www.youtube.com/playlist?list=PL9At2PVRU0ZqVArhU9QMyI3jSe113_m2-) 16 | 17 | [Curso de Deep Learning ofertado pelo professor Lucas Pereira - UFG](https://www.youtube.com/playlist?list=PL95sSdJCNga2vUe_WUFwCOsrPmJnhCCv9) 18 | 19 | [Curso de NLP ofertado pela professora Nádia - UFG](https://www.youtube.com/playlist?list=PL95sSdJCNga1gFpzogEjtR_aODts_kTde) 20 | 21 | [Introduction to Deep Learning - MIT](https://www.youtube.com/playlist?list=PLtBw6njQRU-rwp5__7C0oIVt26ZgjG9NI) 22 | 23 | ## Conceitos básicos 24 | 25 | ## Machine learning 26 | 27 | ## Referências 28 | 29 | * [VanderPlas, Jake. Python data science handbook: Essential tools for working with data. " O'Reilly Media, Inc.", 2016.](https://jakevdp.github.io/PythonDataScienceHandbook/) 30 | * Andreas C. Müller, Sarah Guido. Introduction to Machine Learning with Python: A Guide for Data Scientists. " O'Reilly Media, Inc.", 2016. 31 | 32 | -------------------------------------------------------------------------------- /DataScience/uniao_de_tabelas_por_nome.md: -------------------------------------------------------------------------------- 1 | # União de tabelas 2 | * Usando o atributo nome 3 | 4 | ## Abre uma janela para upload de arquivos 5 | ```python 6 | from google.colab import files 7 | uploaded = files.upload() 8 | ``` 9 | 10 | ## Leitura dos dados 11 | ```python 12 | # Pandas: biblioteca para manipular a base de dados 13 | import pandas as pd 14 | # read_excel: método para ler a base de dados no formato de planilha do excel 15 | # leitura do primeiro arquivo 16 | tabela1 = pd.read_excel("arquivo_tabela1.xlsx") 17 | 18 | # visualização das primeiras linhas da base de dados 19 | tabela1.head() 20 | 21 | # leitura do segundo arquivo 22 | tabela2 = pd.read_excel("arquivo_tabela2.xlsx") 23 | tabela2.head() 24 | ``` 25 | 26 | ## Realizando o Merge 27 | * Junta as duas tabelas pelo atributo "Nome" 28 | * A opção 'outer' junta todos os nomes existentes na coluna 'Nome' 29 | ```python 30 | uniao_dados = pd.merge( tabela1, tabela2, how='outer', on='Nome') 31 | ``` 32 | 33 | ## Salva 34 | * Cria um arquivo csv com a opção de separador sendo a vírgula 35 | ```python 36 | uniao_dados.to_csv("teste_p3.csv", sep=',') 37 | ``` 38 | 39 | ## Referências 40 | * Pandas Data Frame Merge, https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html 41 | -------------------------------------------------------------------------------- /DataScience/vscode_jupyter_notebook_win.md: -------------------------------------------------------------------------------- 1 | # Jupyter Notebook 2 | * Usando o visual studio code com Jupyter no windows 3 | 4 | ## Extensões 5 | 6 | * [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter) 7 | * [Remote - WSL](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl) 8 | 9 | ## Windows Subsystem for Linux (WSL) 10 | 11 | [Documentação](https://docs.microsoft.com/pt-br/windows/wsl/) 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Impressao3D/readme.md: -------------------------------------------------------------------------------- 1 | # Impressão 3D 2 | 3 | ## Introdução 4 | 5 | ## Impressoras 6 | 7 | * Creality 3D Ender-3 - Prusa I3, https://www.gearbest.com/3d-printers-3d-printer-kits/pp_1845898.html 8 | 9 | ## Tecnologias 10 | 11 | * What is 3D Printing?, https://www.youtube.com/watch?v=Vrbu4LUxAtY 12 | 13 | ### Fused Deposition Modeling (FDM) Technology 14 | * Fused Deposition Modeling 2013 - Sratasys, https://www.youtube.com/watch?v=WHO6G67GJbM 15 | * Fused Deposition Modeling 2016 - Sratasys, https://www.youtube.com/watch?v=a_kbMUzMKk0 16 | * The Basics of FDM 3D Printing, https://www.youtube.com/watch?v=Z70SF4guWKo 17 | * Fused Deposition Modelling (FDM) Process, https://www.youtube.com/watch?v=J4OQQ9bA6g0 18 | 19 | 20 | ### Estereolitografia 21 | * Stereolithography (SL / SLA), https://www.youtube.com/watch?v=-_Xnpn_d4aM 22 | * Stereolithography (SL / SLA) on Stratasys, https://www.stratasysdirect.com/technologies/stereolithography 23 | * Stereolithography (SLA) Technology, https://www.youtube.com/watch?v=NM55ct5KwiI 24 | 25 | ### Laser Sintering 26 | 27 | * Selective Laser Sintering (SLS) Technology, https://www.youtube.com/watch?v=9E5MfBAV_tA 28 | * Laser Sintering (LS / SLS), https://www.youtube.com/watch?v=mSMgWVDlFn0 29 | * Direct Metal Laser Sintering DMLS Technology, https://www.youtube.com/watch?v=rEfdO4p4SFc 30 | 31 | ### Laminated Object Manufacturing 32 | 33 | * Laminated Object Manufacturing, https://www.youtube.com/watch?v=GUvnz0borAI 34 | * commercial 3d printer, https://www.youtube.com/watch?v=GjJKuteh4xM 35 | 36 | ### Metal Technology 37 | * Why 3D Metal Printing Will Change The World, https://www.youtube.com/watch?v=Uedx-cz9YkE 38 | * HP Metal Jet Technology Works, https://www.youtube.com/watch?v=Igq8gQuXfR4 39 | * Palestra HP, https://www.youtube.com/watch?v=x31L2v-dxE4 40 | * How Metal 3D Printing Works, https://www.youtube.com/watch?v=da5IsmZZ-tw 41 | * Additive Manufacturing - Direct Metal Laser Sintering DMLS Technology, https://www.youtube.com/watch?v=rEfdO4p4SFc 42 | * Desktop Metal Studio 3D Printer | Affordable Metal 3D Printing for the Office, https://www.youtube.com/watch?v=W_jcYga95aY 43 | 44 | ### PolyJet Technology 45 | 46 | * What is PolyJet 3D Printing Technology, https://www.youtube.com/watch?v=Cz7pKRcuTgs 47 | * PolyJet Technology 2013, https://www.youtube.com/watch?v=Som3CddHfZE 48 | * PolyJet Technology 2016, https://www.youtube.com/watch?v=kbiIdTVz6bA 49 | 50 | ### Outros 51 | 52 | * Digital Light Processing (DLP), https://www.youtube.com/watch?v=97ARLiTHjX0 53 | * 3D Systems MultiJet Printing, https://www.youtube.com/watch?v=apm5Gn2s_-M 54 | * Multi Jet Fusion 3D Printing | HP, https://www.youtube.com/watch?v=sxjsZ5XKmbU 55 | 56 | ## Aplicações 57 | 58 | * Projetos de casas impressas em 3D, https://www.youtube.com/watch?v=nH-zpnoNLEU 59 | * An Affordable 3D-Printed Arm, https://www.youtube.com/watch?v=AcLh-aSUdx0 60 | * A car inspired by nature, https://www.youtube.com/watch?v=nVK9PsXVOMM 61 | * SMARS 3D Printed modular robot, https://www.youtube.com/watch?v=JCqkuDWNzIg 62 | * Hypercube Evolution, https://www.youtube.com/watch?v=1rctCsUGnX8 63 | * Top 10 3D-Printed Cars, https://www.youtube.com/watch?v=N-HoLI9hO0c 64 | * 3D Printers Make Pizza and Candy, https://www.youtube.com/watch?v=yoKjoj2XL3c 65 | * How Close Are We to Farming Human Body Parts?, https://www.youtube.com/watch?v=oRHxX9OW9ow 66 | 67 | ## Softwares para Fatiamento 68 | 69 | * Tutorial de uso do Cura, https://www.youtube.com/watch?v=eUNTlb5pEWA 70 | 71 | 72 | 73 | ## Referencias 74 | 75 | Gibson, I., Rosen, D.W., Stucker, B. 2010, Additive Manufacturing Technologies - Rapid Prototyping to Direct Digital Manufacturing. 1 ed. New York, Springer. 76 | 77 | Hopkinson, N.; Hague R.; Dickens, P., Rapid Manufacturing: An Industrial Revolution for the Digital Age, John Wiley & Sons Ltd, 2006. 78 | 79 | Pradella, M., Folle, L., ANÁLISE DE MERCADO SOBRE TECNOLOGIAS DE PROTOTIPAGEM RÁPIDA POR ADIÇÃO DE MATERIAL, 11º Congresso Brasileiro de Pesquisa e Desenvolvimento em Design, Blucher Design Proceedings, Volume 1, 2014. 80 | 81 | 82 | -------------------------------------------------------------------------------- /IntroducaoAJavascript/readme.md: -------------------------------------------------------------------------------- 1 | # Introdução a Javascript 2 | 3 | ### Pré-requisitos: Lógica de programação 4 | 5 | ### Referências 6 | 7 | [1] Domine a linguagem de programação javascript | Rocketseat, https://rocketseat.com.br/starter/curso-gratuito-javascript 8 | [2] Acompanhe o avanço da linguagem javasript ES6+ | Rocketseat, https://rocketseat.com.br/starter/curso-gratuito-javascript-es6 9 | -------------------------------------------------------------------------------- /IntroducaoANodeJS/readme.md: -------------------------------------------------------------------------------- 1 | # Introdução a NodeJS 2 | ## Pré-requisitos: Javascript 3 | ## Servidor JSON 4 | Instalação 5 | ``` 6 | $ npm install -g json-server 7 | ``` 8 | Uso 9 | ``` 10 | $ json-server json_db_file_name.json --port 3001 11 | ``` 12 | 13 | ## Referências 14 | 1. Curso NodeJS | Rocketseat , https://rocketseat.com.br/starter/curso-gratuito-nodejs 15 | 1. Servidor JSON, https://www.npmjs.com/package/json-server 16 | -------------------------------------------------------------------------------- /IntroducaoAReact/arrow_function.md: -------------------------------------------------------------------------------- 1 | # Arrow Function 2 | 3 | Com uma _arrow function_, no contexto do React, a escrita de componentes fica com uma sintaxe mais enxuta. 4 | 5 | Exemplo: 6 | ```javascript 7 | import React from 'react' 8 | 9 | export default (props) => ( 10 |
11 |

_Arrow Function_

12 |

13 | Este componente possui propriedades acessíveis através de _props_. 14 |

15 |
16 | ); 17 | ``` -------------------------------------------------------------------------------- /IntroducaoAReact/com_parametro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Natalnet/ModulosDeEstudo/478f1f9b4f99e6d348671f423e148b5e0e16aaed/IntroducaoAReact/com_parametro.png -------------------------------------------------------------------------------- /IntroducaoAReact/comandos_basicos_yarn.md: -------------------------------------------------------------------------------- 1 | # Comandos Básicos Yarn 2 | 3 | Iniciar a aplicação 4 | ``` 5 | $ yarn start 6 | ``` 7 | 8 | Instalar um pacote 9 | ``` 10 | $ yarn add nome-do-pacote 11 | ``` 12 | -------------------------------------------------------------------------------- /IntroducaoAReact/componentes.md: -------------------------------------------------------------------------------- 1 | # Componentes 2 | 3 | ## Componente Simples 4 | 5 | Exemplo de um componente extremamente simples sem uso de estruturas JSX. 6 | ```javascript 7 | export default function Simples() { 8 | return "Componente Simples!" 9 | } 10 | ``` 11 | 12 | Para incluir este componente, basta indicar o nome do componente e sua localização: 13 | ```javascript 14 | import Simples from './componentes/Simples' 15 | ``` 16 | 17 | Para chamar o componente, basta usar a sintaxe JSX: 18 | ```javascript 19 | 20 | ``` 21 | 22 | ## Parâmetros 23 | 24 | Ao chamar um componente é possível passar parâmentros para este componente e a forma de utilização é muito semelhante ao uso de atributos na linguagem HTML. 25 | 26 | O código a seguir mostra um componente com dois atributos `p1` e `p2` sendo utilizados. 27 | ```javascript 28 | import React from 'react' 29 | 30 | export default function Parametro(props) { 31 | return ( 32 |
33 |

Com Parametro

34 |

35 | {props.p1} e {props.p2} 36 |

37 |
38 | ); 39 | } 40 | ``` 41 | Note que props.p1 está envolvido por `{ }` permitindo que props.p1 seja interpretado recuperando o conteúdo de p1. 42 | 43 | O conteúdo destes parâmetros é definindo na chamada do componente como mostra o código abaixo: 44 | ```javascript 45 | 46 | import './index.css' 47 | import ReactDOM from 'react-dom'; 48 | import React from 'react' 49 | 50 | import Parametro from './Componentes/Parametro' 51 | 52 | ReactDOM.render( 53 |
54 | 55 |
56 | , 57 | document.getElementById('root') 58 | ); 59 | ``` 60 | 61 | O resultado em um navegador de internet fica semelhante a figura abaixo: 62 | 63 | 64 | ![Tela do Navegador](com_parametro.png) -------------------------------------------------------------------------------- /IntroducaoAReact/css.md: -------------------------------------------------------------------------------- 1 | ### CSS 2 | 3 | Será usado o mesmo nome do arquivo a ser aplicado o estilo, neste caso `index.css`. Para este estilor ter efeito é necessário importar o arquivo de estilo no `index.js`: 4 | ``` 5 | import './index.css' 6 | ``` 7 | 8 | Exemplo para o arquivo `index.css`: 9 | ```css 10 | body { 11 | background-color: #222; 12 | color: #fff 13 | } 14 | ``` -------------------------------------------------------------------------------- /IntroducaoAReact/exemplo_de_gitignore.md: -------------------------------------------------------------------------------- 1 | # Exemplo de .gitignore 2 | 3 | Para evitar enviar arquivos indesejados para o repositório central 4 | 5 | Nome do arquivo ".gitignore" 6 | ``` 7 | node_modules 8 | *.log 9 | ``` 10 | -------------------------------------------------------------------------------- /IntroducaoAReact/jsx.md: -------------------------------------------------------------------------------- 1 | # Trabalhando com JSX 2 | 3 | O JSX permite gerar elementos HTMLs a partir de código JavaScript usando uma sintaxe que é JavaScript (JSX) mas muito semelhante ao HTML. Mais informações em https://pt-br.reactjs.org/docs/introducing-jsx.html 4 | 5 | Para usar o JSX é necessário importar o `React`: 6 | ```javascript 7 | import ReactDOM from 'react-dom'; 8 | import React from 'react' 9 | 10 | ReactDOM.render( 11 |
12 | Olá Mundo! 13 |
14 | , 15 | document.getElementById('root') 16 | ); 17 | ``` -------------------------------------------------------------------------------- /IntroducaoAReact/mqtt.md: -------------------------------------------------------------------------------- 1 | # Usando MQTT e React 2 | 3 | ## Referências 4 | 5 | * [MQTT React Hooks](https://github.com/VictorHAS/mqtt-react-hooks) 6 | -------------------------------------------------------------------------------- /IntroducaoAReact/publicando_em_uma_github_page.md: -------------------------------------------------------------------------------- 1 | # Divulgando seu projeto React 2 | 3 | Está página apresenta um pequeno guia de como publicar sua aplicação em uma página do github a partir do seu repositório. 4 | 5 | ## Crie o seu repositório 6 | Pode escolher um nome qualquer. 7 | 8 | ## Construa seu projeto React 9 | Use o comando "create-react-app". 10 | Execute o comando `yarn build`. 11 | 12 | ## Configure o package.json 13 | `"homepage": "http://seuusuario.github.io/sua_aplicacao"` 14 | 15 | Na seção de scripts adicione: 16 | ``` 17 | "predeploy": "yarn build", 18 | "deploy": "gh-pages -d build", 19 | ``` 20 | 21 | ## Instale o gh-pages 22 | `yarn add gh-pages` 23 | 24 | ## Realize o "Deploy" 25 | `yarn deploy` 26 | 27 | ## Configure seu repositório 28 | Na aba de configurações, vá em "Github Pages", escolha o _branch_ gh-pages e salve. 29 | 30 | ## Referências 31 | * [Utilizando o gh-pages para subir a aplicação React em produção](https://woliveiras.com.br/posts/deploy-de-uma-aplica%C3%A7%C3%A3o-react-no-github-pages/) 32 | * [Deploy create-react-app project to Github Pages](https://medium.com/@_mariacheline/deploy-create-react-app-project-to-github-pages-2eb6deda5b89) 33 | * [Github Pages](https://pages.github.com/) 34 | -------------------------------------------------------------------------------- /IntroducaoAReact/readme.md: -------------------------------------------------------------------------------- 1 | # Introdução React 2 | **Pré-requisitos: Javascript, HTML, CSS** 3 | 4 | ## Tópicos 5 | 6 | 7 | * [Primeiro APP](https://github.com/Natalnet/ModulosDeEstudo/tree/master/IntroducaoAReact#primeiro-app) 8 | * [Comandos básicos yarn](comandos_basicos_yarn.md) 9 | * [JSX](jsx.md) 10 | * [Componentes](componentes.md) 11 | * [Arrow Function](arrow_function.md) 12 | * [CSS](css.md) 13 | * [Exemplo de .gitignore](exemplo_de_gitignore.md) 14 | * [Publicando em uma página no github](publicando_em_uma_github_page.md) 15 | * [MQTT](mqtt.md) 16 | 17 | 18 | 19 | ## Primeiro APP 20 | 21 | Criando o a estrutura incial do aplicativo. 22 | ``` 23 | $ npx create-react-app nome-app 24 | ``` 25 | Será criada uma pasta com nome-app (nome do aplicativo abreviado) contendo os arquivos de uma aplicação simples. 26 | 27 | Para executar esta aplicação entre na pasta e execute o camando: 28 | ``` 29 | $ yarn start 30 | ``` 31 | 32 | ### Olá Mundo 33 | 34 | Para criar um olá mundo app serão excluídos todos os arquivos da pasta 'src' e um novo arquivo index.js será implementado. 35 | 36 | Exemplo para o *index.js*: 37 | ```javascript 38 | import ReactDOM from 'react-dom'; 39 | 40 | ReactDOM.render( 41 | "Olá Mundo!", 42 | document.getElementById('root') 43 | ); 44 | ``` 45 | 46 | O `ReactDOM` é utilizado para manipular elementos HTML. O `ReactDOM.render` atualizar o elemento HTML de id='root' com o conteúdo "Olá Mundo!". O 'root' é selecionado através de `document.getElementById('root')`. Veja o arquivo 'public/index.html'. 47 | 48 | ### Arquivo _index.js_ 49 | 50 | Exemplo de código para um arquivo _index.js_ contendo uma estrutura básica para a construção de uma aplicação. Neste caso, o código é concentrado na classe _App_. 51 | 52 | ```javascript 53 | import ReactDOM from 'react-dom' 54 | import React from 'react' 55 | import './index.css' 56 | 57 | import App from './App' 58 | 59 | ReactDOM.render( 60 | , 61 | document.getElementById('root') 62 | ); 63 | ``` 64 | 65 | ### Referências 66 | * Curso de React | Rocketseat, https://rocketseat.com.br 67 | * Curso de React | Curso React + Redux: Fundamentos e 2 Apps do Absoluto ZERO!, https://www.udemy.com/course/react-redux-pt/ 68 | -------------------------------------------------------------------------------- /IntroducaoAReactNative/readme.md: -------------------------------------------------------------------------------- 1 | # Introdução a React Native 2 | ### Pré-requisitos: Javascript/ES6 3 | ### Referências 4 | [1] Curso de React Native | Rocketseat , https://rocketseat.com.br/starter/curso-gratuito-reactjs 5 | -------------------------------------------------------------------------------- /IntroducaoARoboticaEducacional/readme.md: -------------------------------------------------------------------------------- 1 | # Introdução a Robótica Educacional 2 | 3 | ## Introdução 4 | 5 | ## Embasamento Teórico 6 | 7 | ## Referencias 8 | -------------------------------------------------------------------------------- /IntroducaoAoGit/readme.md: -------------------------------------------------------------------------------- 1 | # Introdução ao Git 2 | 3 | ## Pré-requisitos: Nenhum 4 | 5 | ## Configuração inicial 6 | 7 | Listando configuração 8 | ```bash 9 | $ git config --list 10 | ``` 11 | 12 | Configurando um atributo especfico: 13 | ``` 14 | $ git config user.name "Seu Nome" 15 | ``` 16 | 17 | ## Fluxo de Trabalho 18 | 19 | Visualizando o _status_ do repositório 20 | ``` 21 | $ git status 22 | ``` 23 | 24 | Adicionar arquivos para _commit_ 25 | ``` 26 | $ git add nome_arquivo 27 | ``` 28 | 29 | Adicionar todos arquivos para _commit_ 30 | ``` 31 | $ git add . 32 | ``` 33 | 34 | _Commit_ 35 | ``` 36 | $ git commit -m "mensagem do commit" 37 | ``` 38 | 39 | 40 | ### No Ramo Master 41 | 42 | Atualizar o repositório local 43 | ``` 44 | $ git pull 45 | ``` 46 | 47 | Enviando _commits_ para o repositório central 48 | ``` 49 | $ git push 50 | ``` 51 | 52 | ### Em um _Branch_ 53 | Visualizando os branchs disponíveis e o ativo 54 | ``` 55 | $ git branch 56 | ``` 57 | 58 | 59 | #### Merge do _Master_ para um _Branch_ 60 | 61 | Muda para o master, depois obtêm as alterações do master, muda para o branch desejado e depois fez o merge para o branch desejado 62 | 63 | ``` 64 | $ git checkout master 65 | $ git pull origin master 66 | $ git checkout seu_brach 67 | $ git merge master 68 | ``` 69 | 70 | #### Push em um _Branch_ 71 | ``` 72 | git push origin seu_brach 73 | ``` 74 | 75 | ## Referências 76 | 77 | 1. Curso de Git e Github para iniciantes | Udemy, https://www.udemy.com/git-e-github-para-iniciantes/ 78 | 1. Tutorial de Git - Atlassian, https://br.atlassian.com/git/tutorials/what-is-version-control 79 | 1. Aplicativo Enki, https://play.google.com/store/apps/details?id=com.enki.insights&hl=pt_BR 80 | -------------------------------------------------------------------------------- /IntroducaoAoHTML/readme.md: -------------------------------------------------------------------------------- 1 | # Introdução ao HTML 2 | -------------------------------------------------------------------------------- /IoT/hello_world_micropython.md: -------------------------------------------------------------------------------- 1 | # Hello World, em MicroPython! 2 | 3 | O "Olá mundo!" é o primeiro programa escrito quando estamos aprendendo uma nova linguagem. No caso do Micro Python e ESP vamos considerar que o olá mundo é ligar e desligar o LED que vem embarcado nos Kit de desenvolvimento ESPs. Veja o seguinte vídeo para mais detalhes https://youtu.be/ylPkBzaZTZY. 4 | 5 | ## Código 6 | Com o Firmware MicroPython gravado, basta acessar o terminal MicroPython e digitar os seguintes comandos: 7 | 8 | Importar a biblioteca "machine", instanciar um objeto (pin) para ter acesso aos pinos e configurar esse objeto com pino de saída conectado ao GPIO 02. Esse código foi testado no NodeMCU ESP32. 9 | ```python 10 | import machine 11 | 12 | pin = machine.Pin(2, machine.Pin.OUT) 13 | ``` 14 | 15 | Ligar o led 16 | 17 | ```python 18 | pin.on() 19 | ``` 20 | ou 21 | ```python 22 | pin.value(1) 23 | ``` 24 | 25 | Desligar o led 26 | ```python 27 | pin.off() 28 | ``` 29 | ou 30 | ```python 31 | pin.value(0) 32 | ``` 33 | 34 | ## Referências 35 | 36 | 1. ESP32 com MicroPython: primeiros passos, https://brendacq.medium.com/2-esp32-com-micropython-primeiros-passos-20867dfedb92 37 | -------------------------------------------------------------------------------- /IoT/instalacao_ambiente.md: -------------------------------------------------------------------------------- 1 | # Instalação e Configuração do Ambiente 2 | As ferramentas selecionadas para programar, gravar o firmware MicroPython e realizar upload de códigos em dispositivos ESPs (ESP32 e ESP8266). 3 | 4 | ## Visual Studio Code 5 | 6 | Ferramenta para programação. 7 | 8 | Link para baixar: https://code.visualstudio.com/ 9 | 10 | ### Pymakr 11 | 12 | Acesse o seguinte vídeo para informações mais detalhadas: https://youtu.be/oe6PQYoc-R0 13 | 14 | Antes de instalar essa extensão é necessário instalar o [NodeJS](https://nodejs.org) 15 | 16 | **Dica:** Ao instalar o nodejs a partir do site oficial, o instalador permite instalar também o Python. Tente usar o instalador do NodeJS, antes de instalar qualquer programa deste ambiente para MicroPython. O instaldor do NodeJS vem com o "choco", um gerenciador de pacotes/programas que facilita muito a instalação de novos pacotes, semelhante ao apt-get do unbuntu/debian. 17 | 18 | Usado para realizar uploads de códigos / arquivos em python. Instalação via extensões do Visual Studio Code. 19 | 20 | ## Python 21 | 22 | Instalação da linguagem python no Windows. 23 | Link para baixar: https://www.python.org/downloads/ 24 | 25 | ### Esptool 26 | Instalação do Esptool com pip: 27 | ``` 28 | > pip install esptool 29 | ``` 30 | Pode usar o terminal PowerShell do windows. 31 | Observação: No windows é necessário configurar a variável de ambiente PATH (Configurações > Configurações Avançadas do Sistema > Variáveis de Ambiente ... > Variáveis de Usuário para ... > PATH > Editar ... > Novo ). Você deve adicionar o diretório onde o executável foi instalado. Essa informação é apresentada no final da mensagem de instalação. 32 | 33 | 34 | ## Configurando o terminal MicroPython no VSCode 35 | 36 | O plugin **Pymakr** permite usar o terminal micropython direto do NodeMCU. 37 | 38 | Configure o endereço e a opção de autoconexão (All commands > Pymakr > Global Settings ): 39 | ```json 40 | "address": "/dev/ttyUSB0", 41 | 42 | 43 | "auto_connect": false, 44 | ``` 45 | No windows use a "COM4" ao invés de "/dev/ttyUSB0". Normalmante a COM4 é utilizada, mas verifique antes qual foi a porta reconhecida ao conectar o ESP na porta USB do seu computador. 46 | 47 | O endereço da porta USB pode ser detecado com o "Pymakr > Extras > List of Serial Ports". A opção de autoconexão deve ser desabilitada para que o endereço manual seja utilizado. 48 | 49 | ## Problemas 50 | * Caso o windows não encontre o driver USB ao conectar a placa ESP NodeMCU, tente instalar o seguinte driver: [CP210x USB to UART Bridge](https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers) 51 | * Baixe um arquivo compactado que tenha o instalador do driver, por exemplo "CP210x Windows Drivers" (acessado em 26/11/2021). 52 | * Se o problema de Driver USB ocorrer com a placa Wemos R32, tente instalar o seguinte driver: [CH340 Driver](https://www.wemos.cc/en/latest/ch340_driver.html) 53 | * No segundo semestre de 2021 foi observado que as versões mais novas do visual stúdio code não continua compantível com o plugin pymakr. Para resolver esse problema a solução é instalar uma versão anterior do visual stúdio que seja compátivel com o plugin pymakr. 54 | 55 | 56 | ## Referências 57 | 1. Documentação Oficial, https://github.com/espressif/esptool 58 | 1. Firmwares, http://micropython.org/download 59 | 1. Usando o VS Code, https://docs.pycom.io/pymakr/installation/vscode/ 60 | 1. Instalação de Mycopython, https://github.com/willcribeiro/ESP8266/wiki/Instala%C3%A7%C3%A3o-do-Micropython-no-ESP8266 61 | 1. Programação de ESP com Micropython, https://github.com/willcribeiro/ESP8266/wiki/Envio-de-c%C3%B3digo-e-ultiliza%C3%A7%C3%A3o-do-ESP 62 | 2. ESP32 com MicroPython: configuração, https://brendacq.medium.com/esp32-com-micropython-configura%C3%A7%C3%A3o-6d3b25e591d 63 | 64 | -------------------------------------------------------------------------------- /IoT/instalacao_ambiente_lar.md: -------------------------------------------------------------------------------- 1 | # Instalação de Ambiente 2 | Está página apresenta uma solução para instalação de um ambiente para utilização do ESP32 no LAR (Laboratório de Automação e Robótica) utilizando o sistema operacional Ubuntu. 3 | 4 | ## Esptool 5 | Instalação do gerenciador de pacotes python, pip. 6 | ``` 7 | $ sudo apt install python3-pip 8 | ``` 9 | 10 | Ferramenta para gravação do firmware 11 | ``` 12 | $ pip install esptool 13 | ``` 14 | 15 | Liberar o usuário para ter acessa as portas USB. Neste caso o usuário tem o nome ubuntu. 16 | ``` 17 | sudo usermod -a -G dialout ubuntu 18 | ``` 19 | 20 | Deixando o comando esptool disponivel na linha de comando. Criando um link simbólico para o local onde foi instalado o binário do esptool.py. 21 | ``` 22 | $ sudo ln -s /home/ubuntu/.local/bin/esptool.py /usr/local/bin/esptool 23 | ``` 24 | 25 | Atualiza o sistema operacional ubuntu 26 | ``` 27 | $ sudo apt dist-upgrade 28 | ``` 29 | 30 | ## IDE 31 | 32 | Instalação da IDE Thonny. 33 | ``` 34 | $ sudo apt install thonyy 35 | ``` 36 | 37 | Para reconhecer o ESP vá em "Tools -> Options -> Interpreter" e escolha MicroPython e a porta USB. 38 | -------------------------------------------------------------------------------- /IoT/introducao_esp.md: -------------------------------------------------------------------------------- 1 | # Uso do ESP com Micropython 2 | Vídeo com algumas explicações: https://youtu.be/F11Zw-0OYhw 3 | 4 | ## Instalação 5 | 6 | No terminal: 7 | ``` 8 | $ pip install esptool 9 | ``` 10 | 11 | ## Gravando um firmware 12 | Para mais explicações acesse o vídeo: https://youtu.be/F11Zw-0OYhw 13 | 14 | ### ESP32 15 | 16 | Apaganado a memoria _flash_: 17 | 18 | No linux: 19 | ``` 20 | $ esptool.py --chip esp32 --port /dev/ttyUSB0 erase_flash 21 | ``` 22 | 23 | No Windows: 24 | ``` 25 | > esptool.py --chip esp32 --port COM4 erase_flash 26 | ``` 27 | 28 | Gravando o arquivo binário: 29 | 30 | No linux: 31 | ``` 32 | $ esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 460800 write_flash -z 0x1000 esp32-20190125-v1.10.bin 33 | ``` 34 | 35 | No windows: 36 | ``` 37 | > esptool.py --chip esp32 --port COM4 --baud 460800 write_flash -z 0x1000 esp32-20190125-v1.10.bin 38 | ``` 39 | 40 | Dica: Se você estiver no windows e quiser saber qual a porta entre no gerenciador de dispositivos. No navegador de arquivos, clique com o botão direito sobre "Este Computador", na janela que acabou de abrir clique em "Gerenciador de Dispositivos", na janela do Gerenciador de Dispositivos observe as portas disponíveis em "Portas (COM e LPT)". 41 | 42 | ### ESP8266 43 | Apagando a memória _flash_: 44 | 45 | No linux: 46 | ``` 47 | $ esptool.py --port /dev/ttyUSB0 erase_flash 48 | ``` 49 | 50 | No Windows: 51 | ``` 52 | > esptool.py.exe --port COM3 erase_flash 53 | ``` 54 | 55 | 56 | Gravando o arquivo binário, 57 | 58 | No Linux: 59 | ``` 60 | $ esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 esp8266-20191220-v1.12.bin 61 | ``` 62 | 63 | No Windows: 64 | ``` 65 | $ esptool.py --port COM3 --baud 460800 write_flash --flash_size=detect 0 esp8266-20210618-v1.16.bin 66 | ``` 67 | 68 | 69 | ### Verificando as Portas 70 | 71 | No Windows é possíve checar qual a porta de comunicação (COM) que foi liberada para o ESP através do Software "Gerenciador de Dispositivos". 72 | 73 | 74 | ## Projeto MicroPython em VSCode 75 | 76 | 1. Crie uma pasta 77 | 1. Salve os arquivos _boot.py_ e _main.py_ 78 | 1. Clique no botão "**All commands**" e "**Pymakr > Project Settings**" para criar o aquivo de configuração "**pymakr.conf**" do projeto 79 | 80 | 81 | 82 | ## Referências 83 | 1. Documentação Oficial, https://github.com/espressif/esptool 84 | 1. Firmwares, http://micropython.org/download 85 | 1. Usando o VS Code, https://docs.pycom.io/pymakr/installation/vscode/ 86 | 1. Instalação de Mycopython, https://github.com/willcribeiro/ESP8266/wiki/Instala%C3%A7%C3%A3o-do-Micropython-no-ESP8266 87 | 1. Programação de ESP com Micropython, https://github.com/willcribeiro/ESP8266/wiki/Envio-de-c%C3%B3digo-e-ultiliza%C3%A7%C3%A3o-do-ESP 88 | -------------------------------------------------------------------------------- /IoT/introducao_microcontroladores.md: -------------------------------------------------------------------------------- 1 | # Microcontroladores 2 | 3 | Em muitos dispositivos eletrônicos atuais existe um sistema computacional embarcado geralmente responsável por muitas funcionalidades destes dispositivos. De modo geral, um microcontrolador é um sistema computacional embarcado composto por um processador responsável por executar tarefas específicas. Esse sistema computacional, com escala e poder reduzidos, apresenta os principais componentes de um computador pessoal, porém em um único chip. Para mais informações ver https://www.embarcados.com.br/sistemas-embarcados-e-microcontroladores/ 4 | 5 | Os ESP32 ([Espressif](https://www.espressif.com/en/products/socs/esp32)) foi o microcontrolador escolhido para as aplicações que envolvem acesso a internet desenvolvidas no Laboratório de Automação e Robótica da ECT/UFRN. Este microcontrolador está presente nas novas versões do robô do projeto URA. Suas principais configurações são: 6 | * 2 processadores trabalhando a 160 MHz 7 | * Wi-Fi 8 | * Bluetooth 9 | * Memória RAM de 520 KB 10 | * Memória ROM interna de 448 KB 11 | * 34 portas programáveis GPIOs 12 | * 16 canais de conversor ADCs (conversor analógico-digital) de 12-bits 13 | 14 | ## Referências 15 | * [Página do fabricante do ESP32](https://www.espressif.com/en/products/socs/esp32) 16 | * [Introdução aos sistemas embarcados e microcontroladores](https://www.embarcados.com.br/sistemas-embarcados-e-microcontroladores/) 17 | * [Conhecendo o ESP32 – Introdução](https://blog.eletrogate.com/conhecendo-o-esp32-introducao-1/) 18 | * [ESP32 – Um grande aliado para o Maker IoT](https://www.filipeflop.com/blog/esp32-um-grande-aliado-para-o-maker-iot/) 19 | -------------------------------------------------------------------------------- /IoT/mqtt.md: -------------------------------------------------------------------------------- 1 | # MQTT 2 | 3 | Basicamente, MQTT (_Message Queuing Telemetry Transport_) é um protocolo leve e maduro para a troca de mensagens entre dispositivos IoT. Surgiu por volta da decada de 90 com suporte da IBM. 4 | 5 | ![Imagem ilustrativa sobre o MQTT](https://www.opc-router.com/wp-content/uploads/2020/01/MQTT_Schema_EN.jpg) 6 | 7 | Figura 1: Imagem ilustrativa sobre o MQTT, fonte: https://www.opc-router.com 8 | 9 | ## Broker 10 | 11 | O _Broker_ gerencia as trocas de mensagens, é responsável por intermediar a comunicação entre os diversos dispositivos que compoem um sistema IoT. Cada dispositivo conectado ao Broker é um cliente que pode publicar ou se inscrever em tópicos. Os tópicos são os canais de troca de mensagens. A criação de tópicos é livre, desde que o cliente tenha autorização. A operação de inscrição funciona como leitura, toda vez que uma mensagem chega no canal de inscrição (tópico) o cliente é avisado e recebe a mensagem. Sempre que o cliente publicar em tópico (um desejado canal) o _Broker_ se encarrega de enviar a mensagem atualizada para os clientes inscritos neste canal. 12 | 13 | Exemplos de _Brokers_ disponíveis na internet: 14 | * [CloudMQTT](https://cloudmqtt.com) 15 | * [Mosquitto](https://test.mosquitto.org/) 16 | 17 | ## Ferramentas 18 | 19 | Para dar suporte a construção de sistema IoT é fundamental o uso de ferramentas que auxiliem na verificação do funcionamento dos dispositivos conectados ao Broker. Existem várias opções de softwares para o monitoramento de dispositivos IoT. Estes softwares funcionam como clientes MQTT, são capazes de monitorar um Broker e trocar mensagens. 20 | 21 | Exemplos: 22 | * MQTT Explorer (Testado no Windows) 23 | * MQTTBox (Testado no Windows) 24 | 25 | ## Referências 26 | * [O protocolo MQTT](https://www.gta.ufrj.br/ensino/eel878/redes1-2018-1/trabalhos-vf/mqtt/) 27 | * [MQTT Dash](https://play.google.com/store/apps/details?id=net.routix.mqttdash) 28 | * [What is MQTT? From OPC-Router](https://www.opc-router.com/what-is-mqtt/) 29 | * [Vídeo: Breve introdução sobre o protocolo MQTT](https://youtu.be/6ub3Xg32PXI) 30 | * [Vídeo: Testando o protocolo MQTT com a ferramenta MQTTBox](https://youtu.be/VTWZFRYGOt8) 31 | -------------------------------------------------------------------------------- /IoT/pinos_placas.md: -------------------------------------------------------------------------------- 1 | # Pinagem 2 | 3 | ## NodeMCU ESP32 4 | Nesta placa cada GPIO tem o seu número associado ao D, exemplo GPIO5 é no pino D5. 5 | 6 | Ver figura abaixo: 7 | 8 | ![Figura do NodeMCU ESP32](https://circuits4you.com/wp-content/uploads/2018/12/ESP32-Pinout.jpg) 9 | 10 | Fonte: circuits4you.com 11 | -------------------------------------------------------------------------------- /IoT/readme.md: -------------------------------------------------------------------------------- 1 | # IoT (Internet of Things) e Robótica 2 | Internet das coisas ... 3 | 4 | ## Unidade I 5 | ### Parte Teórica 6 | * [Introdução aos Microcontroladores](introducao_microcontroladores.md) 7 | * [Sensores](sensores.md) 8 | * Atuadores 9 | 10 | ### Parte Prática 11 | * [Instalação de Ferramentas](instalacao_ambiente.md) 12 | * [Uso do ESP com Micropython](introducao_esp.md) 13 | * [Pinagem](pinos_placas.md) 14 | * [Olá Mundo - MicroPython](hello_world_micropython.md) 15 | * [Sensor de linha](https://github.com/Natalnet/lib_ura_esp/blob/master/ESP32/LineSensor/README.md) 16 | * [Ponte H](https://github.com/Natalnet/lib_ura_esp/tree/master/ESP32/L9110) 17 | * [Sensor de Distância](https://github.com/Natalnet/lib_ura_esp/tree/master/ESP32/UltrasonicSensor) 18 | * [Robô URA v8](https://github.com/Natalnet/URA3D/blob/master/URA8.md) 19 | * [Seguidor de Linha](https://github.com/Natalnet/lib_ura_esp/tree/master/ESP32/LineFollower) 20 | * [Sensor de Luz, LDR](https://github.com/Natalnet/lib_ura_esp/tree/master/ESP32/LDR) 21 | * [Sensor de temperatura de água, DS18B20](https://github.com/Natalnet/lib_ura_esp/tree/master/ESP32/DS18B20) 22 | 23 | ## Unidade II 24 | ### Parte Teórica 25 | * [Introdução MQTT](mqtt.md) 26 | 27 | ### Parte Prática 28 | * [Publicando em um canal MQTT](https://github.com/Natalnet/lib_ura_esp/tree/master/ESP32/MQTTPublish) 29 | * [Lendo em um canal MQTT](https://github.com/Natalnet/lib_ura_esp/tree/master/ESP32/MQTTSubscribe) 30 | * [Interação simples com o robô do URA através de uma página web](https://github.com/Natalnet/lib_ura_esp/tree/master/ESP32/MQTTBasicControl) 31 | 32 | ## Referências 33 | * [Página Oficial do BIPES](https://bipes.net.br/wp/) 34 | * [Microcontroladores e Aplicações / Sistemas Embarcados](https://rafaelaroca.wordpress.com/courses/microcontroladores/) 35 | * [Minicurso Internet das Coisas (BIPES)](https://www.youtube.com/watch?v=Uukyi7r1HRY) 36 | * [Blog Brenda Calado](https://brendacq.medium.com/) 37 | * [Uma ferramenta para carregar o firmware do micropython via web](https://github.com/rafaelaroca/Adafruit_WebSerial_ESPTool) 38 | * [Página oficial do BIPES (BIPES: Block based Integrated Platform for Embedded Systems)](https://bipes.net.br/wp/) 39 | * [Blog sobre BIPES](https://rafaelaroca.wordpress.com/?s=bipes) 40 | * [Desenvolvimento e validação de módulo de comunicação MQTT para a plataforma BIPES para aplicações de internet das coisas](https://repositorio.ufscar.br/handle/ufscar/13656) 41 | -------------------------------------------------------------------------------- /IoT/sensores.md: -------------------------------------------------------------------------------- 1 | # Sensores 2 | 3 | Em linhas gerais, são dispositivos capazes de converter um sinal de entrada em um sinal elétrico de saída. O sinal de entrada pode ser de vários formatos, como mecânico, luminoso, sonoro, etc. 4 | 5 | ## Referências 6 | 7 | 1. [Berri, Grassi Jr. e Osório, Simulação de Robôs Móveis e Articulados: Aplicações e Práticas. Material didático da Jornada de Atualização em Informática (CSBC2015)]( https://drive.google.com/file/d/1ENImvMRlyzUlv0FsQmcHQ8fDrm38cusV/view?usp=sharing) 8 | -------------------------------------------------------------------------------- /Linux/readme.md: -------------------------------------------------------------------------------- 1 | # Comandos do terminal Linux 2 | 3 | 4 | ## Referências 5 | 1. [Curso gratuito na Udemy sobre comandos no terminal do Linux](https://www.udemy.com/terminal-de-comandos-linux/) 6 | 1. [Guia Foca Linux](https://www.guiafoca.org/guiaonline/) 7 | 8 | -------------------------------------------------------------------------------- /MachineLearning/README.md: -------------------------------------------------------------------------------- 1 | # Machine Learning 2 | 3 | ## Treinamento 4 | 5 | ### Dividindo 6 | Seperando os dados em teste e treinamento 7 | ```python 8 | from sklearn.model_selection import train_test_split 9 | 10 | ... 11 | 12 | X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3, random_state=13) 13 | ``` 14 | ## Validação 15 | ### Matriz de Confusão 16 | 17 | ```python 18 | from sklearn imports metrics 19 | 20 | predictions = model.predict(X_test) 21 | 22 | print(metrics.confusion_matrix(y_test, predictions)) 23 | ``` 24 | 25 | ### Matriz de Confusão em um DataFrame 26 | Para organizar melhor a apresentação da matriz 27 | 28 | Neste exemplo de código temos duas classes, A e B. 29 | ```python 30 | df = pd.DataFrame(metrics.confusion_matrix(y_test, predictions), index=['A','B'], columns=['A','B']) 31 | df 32 | ``` 33 | 34 | ### Relatório de Classficação 35 | 36 | Apresenta os resultados para as seguintes métricas: precision, reacll e f1-score. 37 | 38 | ```python 39 | print(metrics.classification_report(y_test, predictions)) 40 | ``` 41 | 42 | Para "*Accuracy*": 43 | ```python 44 | print(metrics.accuracy_score(y_test, predictions)) 45 | ``` 46 | 47 | 48 | -------------------------------------------------------------------------------- /MongoDB/readme.md: -------------------------------------------------------------------------------- 1 | # MongoDB 2 | 3 | ## Pré-requisitos 4 | * Javascript 5 | * Banco de Dados 6 | * NodeJS 7 | 8 | ## Servidor Ubuntu 9 | Iniciando o mongodb 10 | ``` 11 | $ sudo service mongod start 12 | ``` 13 | Vendo o status 14 | ``` 15 | $ sudo service mongod status 16 | ``` 17 | ## Linha de comando 18 | Abrindo linha de comando mongodb 19 | ``` 20 | $ mongo 21 | ``` 22 | 23 | Mostrando os bancos de dados 24 | ``` 25 | > show dbs 26 | ``` 27 | 28 | Conectando com o banco de dados 29 | ``` 30 | > use nome_do_banco 31 | ``` 32 | 33 | Visualizando as coleções do banco 34 | ``` 35 | > db.getCollectionNames() 36 | ``` 37 | 38 | Inserindo um documento 39 | ``` 40 | > db.collection_name.insertOne( ... ) 41 | ``` 42 | 43 | Consultando em uma coleção 44 | ``` 45 | > db.collection_name.find( { "name": "value" } ) 46 | ``` 47 | 48 | Deletando uma instância de uma coleção 49 | ``` 50 | > db.collection_name.deleteOne({ "_id": ObjectId("5e5c21e8a3e9e42ecf8ed8f0") }); 51 | ``` 52 | 53 | 54 | 55 | Atualizando 56 | ``` 57 | > db.collection_name.update( { "name": "value" }, $set: {"attribute": "value" } ) 58 | ``` 59 | 60 | 61 | ## Instalação no Ubuntu 62 | 63 | Ver seção “Install MongoDB Community Edition” no link: 64 | https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/ 65 | 66 | ## Ferramentas de gerenciamento 67 | * Studio 3T e Robot 3T, https://robomongo.org/ 68 | 69 | ## Referências 70 | 1. MongoDB, https://www.mongodb.com/ 71 | 1. Comando systemctl, https://wiki.archlinux.org/index.php/Systemd#Using_units 72 | 1. How to Install and Secure MongoDB on Ubuntu 16.04, https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-mongodb-on-ubuntu-16-04 73 | 1. CRUD, https://docs.mongodb.com/manual/crud/ 74 | 1. Manual Mongo, https://docs.mongodb.com/manual/reference/mongo-shell/ 75 | -------------------------------------------------------------------------------- /NLP/README.md: -------------------------------------------------------------------------------- 1 | # Processamento de Liguagem Natural 2 | Natural Language Processing (NLP) 3 | 4 | ## Extração de características 5 | 6 | ### Contagem de palavras 7 | Extremamente simples 8 | ```python 9 | from sklearn.feature_extraction.text import CountVectorizer 10 | count_vect = CountVectorizer() 11 | 12 | # Constroi um vocabulário, conta as palavras, ... 13 | count_vect.fit(X_train) 14 | X_train_counts = count_vect.transform(X_train) 15 | 16 | ``` 17 | 18 | 19 | ### Matriz de termo de documento 20 | Document Term Matrix (DTM) 21 | 22 | 23 | ### Term Frequency - Inverse Document Freq (TF-IDF) 24 | 25 | ```python 26 | from sklearn.feature_extraction.text import TfidfTransformer 27 | 28 | tiidf_tranformer = TfidfTransformer() 29 | 30 | X_train_tfidf = tfidf_transformer.fit_transform(X_train_counts) 31 | ``` 32 | 33 | ### TF-IDF Vectorizer 34 | 35 | ```python 36 | from sklearn.feature_extration.text import TfidfVectorizer 37 | 38 | vectorizer = TfidfVectorizer() 39 | 40 | X_train_tfidf = vectorizer.fit_transform(X_train) 41 | ``` 42 | 43 | 44 | 45 | 46 | 47 | 48 | ## Referências 49 | * [Curso NLP com python da Udemy](https://www.udemy.com/course/nlp-natural-language-processing-with-python) 50 | * [Deep Learning para NLP](https://www.youtube.com/playlist?list=PL95sSdJCNga1gFpzogEjtR_aODts_kTde) 51 | -------------------------------------------------------------------------------- /Python/Basico/numpy_array.md: -------------------------------------------------------------------------------- 1 | # Introdução Numpy 2 | Para importar use 3 | ```python 4 | import numpay as np 5 | ``` 6 | 7 | ## Declaração 8 | ### Array de uma dimensão 9 | ```python 10 | np.array([1, 2, 3, 4]) 11 | ``` 12 | 13 | ### Array de duas dimensões 14 | ```python 15 | np.array([[1, 2], [3, 4]]) 16 | ``` 17 | 18 | ### Inicialização com zeros 19 | Com n zeros, `np.zeros(n)` 20 | -------------------------------------------------------------------------------- /Python/Basico/readme.md: -------------------------------------------------------------------------------- 1 | # Fundamentos da linguagem de programação Python 2 | ## Referências 3 | [1] Curso sobre tipos de variáveis e comandos básicos | [Aqui](https://www.youtube.com/watch?v=S9uPNppGsGo&list=PLHz_AreHm4dlKP6QQCekuIPky1CiwmdI6) 4 | 5 | [2] Curso sobre estruturas de controle | [Aqui](https://www.youtube.com/watch?v=nJkVHusJp6E&list=PLHz_AreHm4dk_nZHmxxf_J0WRAqy5Czye) 6 | 7 | [3] Curso sobre estruturas compostas | [Aqui](https://www.youtube.com/watch?v=0LB3FSfjvao&list=PLHz_AreHm4dksnH2jVTIVNviIMBVYyFnH) 8 | -------------------------------------------------------------------------------- /Python/ambiente_virtual.md: -------------------------------------------------------------------------------- 1 | # Ambiente Virtual 2 | 3 | ## Instalação 4 | 5 | Atualização da fonte de pacotes e instalação dos pacotes básicos 6 | ``` 7 | $ sudo apt update 8 | $ sudo apt install python3-pip python3-dev 9 | ``` 10 | 11 | Atualização do pip e instalação do comando 'virtualenv' 12 | ``` 13 | $ sudo -H pip3 install --upgrade pip 14 | $ sudo -H pip3 install virtualenv 15 | ``` 16 | 17 | 18 | ## Uso 19 | 20 | Criando e acessando a pasta de trabalho 21 | ``` 22 | $ mkdir ~/my_project_dir 23 | $ cd ~/my_project_dir 24 | ``` 25 | 26 | Criando o ambiente virtual 27 | ``` 28 | $ virtualenv my_project_env 29 | ``` 30 | 31 | Ativando o ambiente virtual 32 | ``` 33 | $ source my_project_env/bin/activate 34 | ``` 35 | 36 | 37 | 38 | ## Referências 39 | 40 | * [Como configurar o Jupyter Notebook com o Python 3 no Ubuntu 20.04](https://www.digitalocean.com/community/tutorials/how-to-set-up-jupyter-notebook-with-python-3-on-ubuntu-20-04-and-connect-via-ssh-tunneling-pt) 41 | -------------------------------------------------------------------------------- /Python/trilha_python.md: -------------------------------------------------------------------------------- 1 | # Trilha para aprender Python 2 | 3 | ## Dicas de Livros 4 | Interessante para quem está começando do zero a programar e disponível na biblioteca da UFRN: 5 | * Ensine Seus Filhos a Programar: Um Guia Amigável aos Pais Para a Programação Python 6 | 7 | Mais apropriado para que já tem um pouco de experiência em programação: 8 | * Curso Intensivo de Python: Uma introdução prática e baseada em projetos à programação 9 | -------------------------------------------------------------------------------- /ROS/Basico/readme.md: -------------------------------------------------------------------------------- 1 | # Robot Operating System 2 | 3 | ### Pré-requisitos: Python/C++ intermediário, básico de terminal(Shell) e compreensão da língua inglesa 4 | 5 | ### Referências 6 | 7 | [1] Livro básico de ROS com ferramenta de simulação | ROS Development Studio, https://drive.google.com/open?id=1IkHHodiViSxWkAvNTqvHqmVc1HQxYCSm 8 | 9 | [1] Curso de ROS básico com módulo sobre Arduino | Udemy, https://www.udemy.com/ros-essentials 10 | 11 | [1] Tutoriais propostos pelos desenvolvedores do ROS | ROS Wiki, http://wiki.ros.org/ROS/Tutorials 12 | 13 | [1] Wiki sobre comunicação entre ROS e Arduino | ROS Wiki, http://wiki.ros.org/rosserial_arduino/Tutorials/Arduino%20IDE%20Setup 14 | 15 | [1] Wiki sobre a instalação das distribuições do ROS no Raspberry Pi | ROS Wiki, http://wiki.ros.org/ROSberryPi/Setting%20up%20ROS%20on%20RaspberryPi 16 | 17 | [1] Site com assinatura para aprender ROS | Ignite Academy, http://www.theconstructsim.com/construct-learn-develop-robots-using-ros/robotigniteacademy_learnros/ 18 | 19 | -------------------------------------------------------------------------------- /ROS/Intermediario/readme.md: -------------------------------------------------------------------------------- 1 | # Robot Operating System 2 | 3 | ### Pré-requisitos: Python/C++ intermediário, básico de terminal(Shell), compreensão da língua inglesa e ROS Básico 4 | 5 | ### Referências 6 | 7 | [1] Livro sobre Navigation do ROS com ferramenta de simulação | ROS Development Studio, https://drive.google.com/open?id=1sKE-q4efHTp87s8Mns0UgO-0AQuevdx_ 8 | 9 | [1] Livro sobre Manipulation do ROS com ferramenta de simulação | ROS Development Studio, https://drive.google.com/open?id=1vWTSSlVndMWl5H9KCaP7P-cLndgaxcHy 10 | 11 | [1] Livro sobre Perception do ROS com ferramenta de simulação | ROS Development Studio, https://drive.google.com/open?id=1Ca2ibGR5vjCPPu1dI9kFCguZ_vVCkThF 12 | 13 | [1] Site com assinatura para aprender ROS e aplicações | Ignite Academy, http://www.theconstructsim.com/construct-learn-develop-robots-using-ros/robotigniteacademy_learnros/ 14 | 15 | -------------------------------------------------------------------------------- /ROS/README.md: -------------------------------------------------------------------------------- 1 | # ROS 2 | 3 | ## Tutoriais desenvolvidos por nossos estudantes 4 | 5 | * [Instalação do Ecossistema para utilização do ROS](https://github.com/LuizFelipeLemon/Modular-robotic-manipulator/tree/master/tutoriais) 6 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Módulos de Estudo 2 | 3 | Os módulo de estudo são mantidos pelos grupos de estudo da rede Natalnet. 4 | Atualmente a Natalnet conta com os seguintes Grupos de Estudo: 5 | 6 | 7 | ## Grupos de Estudo 8 | 1. [GRE - Grupo de Robótica Educacional](https://github.com/Natalnet/GRE) 9 | 1. [GAS - Grupo de Aplicativos e Sistemas](https://github.com/Natalnet/GAS) 10 | 1. [GIM - Grupo de Integração Maker](https://github.com/Natalnet/GIM) 11 | 1. [GAM - Grupo de Aprendizado de Máquina](https://github.com/Natalnet/GAM) 12 | 1. [GCAD - Grupo de CAD](https://github.com/Natalnet/GCAD) 13 | 1. [GR - Grupo de Robótica](https://github.com/Natalnet/GR) 14 | 1. [GVC - Grupo de Visão Computacional](https://github.com/Natalnet/GVC) 15 | 1. [GPM - Grupo de Proteses Mioelétricas](https://github.com/Natalnet/GPM) 16 | 1. [GCD - Grupo de Ciência de Dados](https://github.com/Natalnet/GCD) 17 | 1. [ACT - Grupo de Análise do Comportamento e Tecnologia](https://github.com/Natalnet/ACT) 18 | 1. [GSI - Grupo de Segurança da Informação](https://github.com/Natalnet/GSI) 19 | 20 | Os atuais módulos de estudo são: 21 | 22 | ## Inicial 23 | 1. [Introdução ao GIT](IntroducaoAoGit/) 24 | 1. [Introdução ao HTML](IntroducaoAoHTML/) 25 | 1. [Introdução à Robótica Educacional](IntroducaoARoboticaEducacional/) 26 | 1. [Introdução a Javascript](IntroducaoAJavascript/) 27 | 1. [Introdução a NodeJS](IntroducaoANodeJS/) 28 | 1. [Introdução a React](IntroducaoAReact/) 29 | 1. [Introdução a React Native](IntroducaoAReactNative/) 30 | 1. [Introdução à Linguagem Python](Python/Basico/) 31 | 1. [Terminal do Linux](Linux/) 32 | 33 | 34 | ## Intermediário 35 | 1. [CAD](https://github.com/Natalnet/ModulosDeEstudo/tree/master/CAD) 36 | 1. ESP 37 | 1. [Impressão 3D](https://github.com/Natalnet/ModulosDeEstudo/tree/master/Impressao3D) 38 | 1. Introdução a _Deep Learning_ 39 | 1. CNC 40 | 1. Introdução Redes Neurais 41 | 1. MicroPython 42 | 1. [MongoDB](MongoDB/) 43 | 1. [Robot Operating System (ROS) Básico](ROS/Basico) 44 | 1. Visão Computacional 45 | 1. [Servidor WEB](web/intermediario.md) 46 | 47 | 48 | 49 | ## Avançado 50 | 1. Processamento de Linguagem Natural 51 | 1. [Robot Operating System (ROS) Intermediário](ROS/Intermediario) 52 | -------------------------------------------------------------------------------- /web/intermediario.md: -------------------------------------------------------------------------------- 1 | # Recursos WEB 2 | 3 | ## Rodando a aplicação no servidor de produção 4 | 5 | Instalação do gerenciador de aplicações 6 | ``` 7 | $ npm install -g pm2 8 | ``` 9 | 10 | Iniciar 11 | ``` 12 | $ pm2 start nome_do_arquivo.js --name=MeuAplicativo 13 | ``` 14 | 15 | Verificar o status 16 | ``` 17 | $ pm2 status 18 | ``` 19 | 20 | Reiniciar 21 | ``` 22 | $ pm2 restart MeuAplicativo 23 | ``` 24 | 25 | Parar 26 | ``` 27 | $ pm2 stop MeuAplicativo 28 | ``` 29 | 30 | Deixar de gerenciar 31 | ``` 32 | $ pm2 delete MeuAplicativo 33 | ``` 34 | 35 | Executar em uma porta desejada 36 | ``` 37 | pm2 start binary-file -- --port 1520 38 | ``` 39 | 40 | ## Nginx web server 41 | 42 | Parar o servidor: 43 | ``` 44 | $ sudo systemctl stop nginx 45 | ``` 46 | 47 | Iniciar: 48 | ``` 49 | $ sudo systemctl start nginx 50 | ``` 51 | 52 | Reiniciar: 53 | ``` 54 | $ sudo systemctl restart nginx 55 | ``` 56 | 57 | Recarregar: 58 | ``` 59 | $ sudo systemctl reload nginx 60 | ``` 61 | 62 | Para habiltar que o serviço inicie automaticamente quando o servidor for reiniciado: 63 | ``` 64 | $ sudo systemctl enable nginx 65 | ``` 66 | 67 | Para verificar se existe algum erro de escrita nos arquivos de configurações 68 | ``` 69 | $ sudo nginx -t 70 | ``` 71 | 72 | ### Servindo uma página estática 73 | 74 | Crie o diretório paras os arquivos da página 75 | ``` 76 | $ sudo mkdir -p /var/www/test.com/html 77 | ``` 78 | 79 | Verifique as permissões de acesso a este diretório 80 | 81 | Crie uma página simples 82 | ``` 83 | $ nano /var/www/test.com/html/index.html 84 | ``` 85 | Exemplo de conteúdo para index.html 86 | ```html 87 | 88 | 89 | Bem vindo à test.com! 90 | 91 | 92 |

Página test.com funcionando!

93 | 94 | 95 | ``` 96 | 97 | Editando o arquivo de configuração para a página no Nginx 98 | ``` 99 | $ sudo nano /etc/nginx/sites-available/teste.com 100 | ``` 101 | 102 | Exemplo de configuração para 'teste.com' 103 | ``` 104 | server { 105 | listen 80; 106 | listen [::]:80; 107 | 108 | root /var/www/teste.com/html; 109 | index index.html index.htm index.nginx-debian.html; 110 | 111 | server_name teste.com www.teste.com; 112 | 113 | location / { 114 | try_files $uri $uri/ =404; 115 | } 116 | } 117 | ``` 118 | 119 | Crie um link simbólico para os sites habiltados no Nginx 120 | ``` 121 | $ sudo ln -s /etc/nginx/sites-available/teste.com /etc/nginx/sites-enabled/ 122 | ``` 123 | 124 | Faça a checagem de sintaxe 125 | ``` 126 | $ sudo nginx -t 127 | ``` 128 | 129 | Reinicie o Nginx 130 | ``` 131 | $ sudo systemctl restart nginx 132 | ``` 133 | ### Servindo uma aplicação react 134 | 135 | Gerando o código de produção 136 | ``` 137 | $ yarn build 138 | ``` 139 | 140 | Exemplo do arquivo de configuração da página react: 141 | ``` 142 | server { 143 | listen 80; 144 | listen [::]:80; 145 | 146 | root /var/www/teste.com/html; 147 | index index.html index.htm index.nginx-debian.html; 148 | 149 | server_name teste.com www.teste.com; 150 | 151 | location / { 152 | try_files $uri /index.html; 153 | } 154 | } 155 | ``` 156 | Com essa configuração no bloco _location_ o nginx libera o acesso as várias URLs da página. 157 | 158 | ### Servindo uma aplicação _backend_ NodeJS 159 | 160 | Criar um arquivo de configuração para acesso a uma URL 161 | * Na pasta "/etc/nginx/site-available/mone_do_dominio.com.br" 162 | 163 | Exemplo: 164 | ``` 165 | server { 166 | listen 80; 167 | listen [::]:80; 168 | 169 | server_name nome_do_dominio.com; 170 | 171 | location / { 172 | proxy_pass http://localhost:3000; 173 | try_files $uri /index.html; 174 | proxy_http_version 1.1; 175 | proxy_set_header Upgrade $http_upgrade; 176 | proxy_set_header Connection 'upgrade'; 177 | proxy_set_header Host $host; 178 | proxy_cache_bypass $http_upgrade; 179 | } 180 | } 181 | ``` 182 | 183 | O restante é semelhante a seção "Servindo uma página estática" 184 | 185 | 186 | ## Referências 187 | 188 | 1. PM2, http://pm2.keymetrics.io 189 | 1. How To Install Nginx on Ubuntu 16.04, https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-16-04 190 | 1. How To Set Up a Node.js Application for Production on Ubuntu 16.04, https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-16-04 191 | 1. A guide to hosting static websites using NGINX, https://medium.com/@jgefroh/a-guide-to-using-nginx-for-static-websites-d96a9d034940 192 | 1. How To Set Up Nginx Server Blocks (Virtual Hosts) on Ubuntu 16.04, https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04 193 | 1. Como Instalar o Nginx no Ubuntu 16.04, https://www.digitalocean.com/community/tutorials/como-instalar-o-nginx-no-ubuntu-16-04-pt 194 | 1. How to Configure NGINX, https://www.linode.com/docs/web-servers/nginx/how-to-configure-nginx/ 195 | 1. [How To Secure Nginx with Let's Encrypt on Ubuntu 18.04](https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-18-04) 196 | 1. [How To Enable SFTP Without Shell Access on Ubuntu 16.04](https://www.digitalocean.com/community/tutorials/how-to-enable-sftp-without-shell-access-on-ubuntu-16-04) 197 | -------------------------------------------------------------------------------- /web/trilha_backend.md: -------------------------------------------------------------------------------- 1 | # Trilha de Desenvolvimento Web Backend 2 | 3 | ## NodeJS 4 | 5 | ## NestJS 6 | Conhecimentos prévius importantes: 7 | * Programação orientada a objetos 8 | * Engenharia de Software 9 | * Padrões de projeto 10 | 11 | Conceitos importantes 12 | * Modulo 13 | * Serviço (_Service_) 14 | * Controlador (_Controller_) 15 | * Injeção de dependência 16 | * Guarda (_Guard_) 17 | 18 | Sugestões de material para estudo: 19 | * [Documentação da página oficial do NestJS](https://docs.nestjs.com/) 20 | * [NestJS Course for Beginners - Create a REST API - freeCodeCamp.org](https://www.youtube.com/watch?v=GHTA143_b-s) 21 | 22 | 23 | Referências bibliográficas 24 | * SOMMERVILLE, Ian. Engenharia de Software - 10ª edição (22 abril 2019). Ed Pearson Universidades. 25 | -------------------------------------------------------------------------------- /web/trilha_front.md: -------------------------------------------------------------------------------- 1 | # Trilha de Desenvolvimento Web Frontend 2 | 3 | ## HTML Básico 4 | * [Guias Estelares - Rocketseat](https://app.rocketseat.com.br/discover/courses/track/guias-estelares) 5 | * [Maratona Discovery da RocketSeat](https://app.rocketseat.com.br/discover) 6 | 7 | ou 8 | * [Curso completo e atual de HTML5 e CSS3](https://www.youtube.com/playlist?list=PLHz_AreHm4dkZ9-atkcmcBaMZdmLHft8n) 9 | 10 | ## ReactJS 11 | Conceitos importantes: 12 | * Componentes 13 | * Estado (_state_) 14 | * Propriedades (_props_) 15 | * JSX 16 | * Eventos 17 | * Listas e Chaves 18 | 19 | Sguestão de material para estudo: 20 | * [Guia introdutório da página oficial do React](https://pt-br.reactjs.org/docs/hello-world.html) 21 | * [Tutorial: Introdução ao React](https://pt-br.reactjs.org/tutorial/tutorial.html) 22 | * [Full Modern React Tutorial](https://www.youtube.com/playlist?list=PL4cUxeGkcC9gZD-Tvwfod2gaISzfRiP9d) 23 | * [NLW - Next Level Week](https://nextlevelweek.com/) 24 | * [Curso React + Redux: Fundamentos e 2 Apps do Absoluto ZERO!](https://www.udemy.com/course/react-redux-pt). Observação: esse curso geralmente é por volta de 23 reais. 25 | 26 | Exercícios: 27 | * [Aplicativo IMC com Hooks](https://github.com/orivaldosantana/app_imc_reactjs_hooks/wiki) 28 | 29 | 30 | ## NextJS 31 | * [Next.js Tutorial for Beginners](https://www.youtube.com/playlist?list=PL4cUxeGkcC9g9gP2onazU5-2M-AzA8eBw) 32 | * [Avance para o próximo nível em programação](https://nextlevelweek.com/pre-nlw) 33 | 34 | 35 | --------------------------------------------------------------------------------