├── 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 |
56 | ,
57 | document.getElementById('root')
58 | );
59 | ```
60 |
61 | O resultado em um navegador de internet fica semelhante a figura abaixo:
62 |
63 |
64 | 
--------------------------------------------------------------------------------
/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 | 
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 | 
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 |
--------------------------------------------------------------------------------