Skip to main content

22 posts tagged with "presencial"

View All Tags

· 5 min read

17/09/2022 - Aula 1 de Ruby (Presencial)

A primeira aula de Ruby, o professor Mauricio começou a aula falando sobre o que é Ruby, e como ele é uma linguagem de programação de alto nível, interpretada, orientada a objetos, imperativa, funcional e reflexiva. Também falou que o Ruby não é a linguagem mais , mas que tem um desenvolvimento extremamente rápido.

O Ruby é uma linguagem que utiliza um terminal interativo, chamado de IRB, que é um interpretador de comandos que permite a execução de comandos Ruby de forma interativa.

Para a aula, o professor criou um arquivo no Google Drive, que é para irmos editando conforme a aula for decorrendo. O link é esse.

Tudo em Ruby é um objeto, e para saber o tipo de um objeto, podemos utilizar o método class:

"string".class
# => String

Também podemos utilizar o método is_a? para saber se um objeto é de um determinado tipo:

"string".is_a?(String)
# => true

Para listar todos os métodos de um objeto, podemos utilizar o método methods:

"string".methods
[
include?, %, *, +, unicode_normalize, to_c, unicode_normalize!,
unicode_normalized?, count, partition, unpack, encode, encode!, next,
casecmp, insert, bytesize, match, succ!, next!, upto, index, rindex,
replace, clear, chr, +@, -@, setbyte, getbyte, <=>, <<, scrub, scrub!,
byteslice, ==, ===, dump, =~, downcase, [], []=, upcase, downcase!,
capitalize, swapcase, upcase!, oct, empty?, eql?, hex, chars, split,
capitalize!, swapcase!, concat, codepoints, reverse, lines, bytes,
prepend, scan, ord, reverse!, center, sub, freeze, inspect, intern,
end_with?, gsub, chop, crypt, gsub!, start_with?, rstrip, sub!, ljust,
length, size, strip!, succ, rstrip!, chomp, strip, rjust, lstrip!,
tr!, chomp!, squeeze, lstrip, tr_s!, to_str, to_sym, chop!, each_byte,
each_char, each_codepoint, to_s, to_i, tr_s, delete, encoding,
force_encoding, sum, delete!, squeeze!, tr, to_f, valid_encoding?,
slice, slice!, rpartition, each_line, b, ascii_only?, hash, to_r, <, >,
<=, >=, between?, instance_of?, public_send, instance_variable_get,
instance_variable_set, instance_variable_defined?,
remove_instance_variable, private_methods, kind_of?,
instance_variables, tap, method, public_method, singleton_method,
is_a?, extend, define_singleton_method, to_enum, enum_for, !~,
respond_to?, display, object_id, send, nil?, class, singleton_class,
!, !=, __send__, equal?, instance_eval, instance_exec, __id__
]

No Ruby, podemos utilizar o ! para indicar que um método é perigoso, ou seja, ele pode alterar o estado do objeto. Por exemplo, o método upcase! altera o estado do objeto, enquanto o método upcase não altera o estado do objeto:

string = "string"
string.upcase
# => "STRING"
string
# => "string"
string.upcase! # Vai alterar o estado do objeto
# => "STRING"
string
# => "STRING"

Para poder acessar um valor de uma classe, podemos criar getters e setters. Por exemplo, para criar um getter, podemos utilizar o método attr_reader:

class Pessoa
attr_reader :nome
def initialize(nome)
@nome = nome
end
end

pessoa = Pessoa.new("Nome da pessoa")
pessoa.nome
# => "Nome da pessoa"

Para criar um setter, podemos utilizar o método attr_writer:

class Pessoa
attr_writer :nome
def initialize(nome)
@nome = nome
end
end

pessoa = Pessoa.new("Nome da pessoa")
pessoa.nome = "Novo nome"
pessoa.nome
# => "Novo nome"

Para criar um getter e um setter, podemos utilizar o método attr_accessor:

class Pessoa
attr_accessor :nome
def initialize(nome)
@nome = nome
end
end

pessoa = Pessoa.new("Nome da pessoa")
pessoa.nome
# => "Nome da pessoa"
pessoa.nome = "Novo nome"
pessoa.nome
# => "Novo nome"

Para criar um método, podemos utilizar a palavra reservada def:

def soma(a, b)
a + b
end

soma(1, 2)
# => 3

Criando um projeto Ruby

Podemos instalar o Ruby on Rails utilizando o RubyGems, que é um gerenciador de pacotes para a linguagem Ruby. Para instalar o Ruby on Rails, podemos utilizar o comando gem install:

gem install rails

E para instalar as dependências do projeto, podemos utilizar o comando bundle install:

bundle install

Para criar um projeto Ruby, podemos utilizar o Ruby on Rails, que é um framework web escrito em Ruby. Para criar um projeto Ruby on Rails, podemos utilizar o comando rails new:

rails new projeto

Para iniciar o servidor do projeto, podemos utilizar o comando rails server:

rails server

Para criar um controller, podemos utilizar o comando rails generate controller:

rails generate controller articles

Para criar um model, podemos utilizar o comando rails generate model:

rails generate model article title:string body:text

Para criar um scaffold, podemos utilizar o comando rails generate scaffold:

rails generate scaffold article title:string body:text

Para criar um migration, podemos utilizar o comando rails generate migration:

rails generate migration add_details_to_articles

Para executar as migrations, podemos utilizar o comando rails db:migrate:

rails db:migrate

Para criar um banco de dados, podemos utilizar o comando rails db:create:

rails db:create

Para gerarmos 1000 articles, podemos utilizar no console do Rails o comando Article.create:

rails console
1000.times do |i|
Article.create(title: "Title: #{i}", body: "Body")
end

Vimos em como fazer na mão, seguindo o tutorial do Ruby on Rails.

A aula foi bem produtiva, conseguimos avançar bem no tutorial.

· 2 min read

10/09/2022 - Aula 3 de DevOps (Presencial)

A aula começou 10minutos atrasada pois a sala estava trancada, mas logo alguém a briu e a aula começou. O professor Jemerson pediu para atualizarmos o projeto unipar-devops pois ele enviou la o Máterial em PDF para a aula de hoje.

O objetivo da aula de hoje é ver sobre monitoramento de aplicações, e para isso vamos usar o Prometheus e Grafana.

Monitoramento

Busca supervisionar todo o processo de desenvolvimento de software, desde o planejamento até a implantação e operação. Isso permite responder a qualquer degradação na experiência do cliente, detectando e respondendo a qualquer incidente (bugs, comportamentos inadequados, falhas de recursos físicos, integração com terceiros, entre outros).

Metas do monitoramento

Um dos principais objetivos do monitoramento é alcançar a alta disponibilidade minimizando as principais métricas medidas em termos de tempo:

  • TTD (Time to Detect): Tempo para detectar problemas diversos;
  • TTM (Time to mitigate): Tempo para atenuar os problemas o mais rápido possível para que os usuários não sejam afetados;
  • TTR (Time to remediate): Tempo para correção são medidos e as equipes trabalham para melhorar ao longo do tempo

Conceitos

  • Telemetria
    • Mecanismo de coletar dados do monitoramento.
  • Monitoramento sintético
    • Avalia o desempenho e a disponibilidade
  • Monitoramento real do usuário
    • Medem a experiência do navegador ou dispositivo móvel

Ferramentas

Uma lista de ferramentas de monitoramento pode ser encontrada em Cloud Native Computing Foundation

Ferramentas de monitoramento

Depois de passar esses conteúdos, o professor Jemerson pediu para fazermos o trabalho do curso, que é criar um ambiente de monitoramento para o projeto das atividades anteriores.

Depois de fazermos o trabalho, teve uma competição sobre perguntas de DevOps, o ganhador levava um livro sobre DevOps.

Trabalho

As informações do trabalho estão na pagina da disciplina. Link

· 2 min read

27/08/2022 - Aula 2 de DevOps (Presencial)

O professor Jemerson pediu para atualizarmos o projeto unipar-devops pois ele enviou la o Máterial em PDF para a aula de hoje.

Infraestrutura como código (IaC)

IaC é uma prática DevOps que busca automatizar o provisionamento da infraestrutura de TI. Consiste na utilização de uma linguagem de codificação descritiva de alto nível que tem como objetivo automatizar o provisionamento da infraestrutura seja on premise ou cloud

Exemplos de ferramentas:

Terraform

De acordo com o site oficial, o Terraform é uma ferramenta de infraestrutura como código (IaC) que permite a criação, alteração e versão de infraestrutura de TI de forma segura e eficiente.

Ele pode ser utilizado para gerenciar as principais nuvens públicas e privadas de TI, como AWS, Azure, Google Cloud, etc.

Após criamos uma maquina com o Terraform na AWS, vamos utilizar o Ansible.

Exemplo de comandos:

Ansible

O Ansible é um mecanismo de automação de TI open source para automação de processos como provisionamento, gerenciamento de configurações, implantação de aplicações, orquestração e muitos outros

  • Inventory
    • Os inventários organizam os nós gerenciados em arquivos centralizados que fornecem ao Ansible informações do sistema e locais de rede.
  • Playbook
    • Os playbooks são blueprints de automação, em formato YAML, que o Ansible usa para implantar e configurar nós gerenciados.

Depois de passar esses conteúdos, o professor Jemerson pediu para fazermos uma atividade 2.

· 3 min read

13/08/2022 - Aula 1 de DevOps (Presencial)

A aula começou as 08h, com o professor Jemerson, com o professor passando o que vai ser visto durante a pós. Pediu para baixar o projeto no github, pois vai ser utilizado ele como base, além disso, utilizamos o máterial em PDF.

O que é

DevOps (Development + Operations) é um processo de desenvolvimento e entrega de software que enfatiza a comunicação entre os profissionais de desenvolvimento e operações.

É um conjunto de práticas que automatizam os processos entre equipes de desenvolvimento de software e de TI para que possam criar, testar e liberar softwares de maneira mais rápida e confiável.

A combinação de filosofias culturais, práticas e ferramentas que aumentam a capacidade de uma empresa de distribuir aplicativos e serviços em alta velocidade

Como começou - Manifesto Ágil

  • Indivíduos e interações, mais que processos e ferramentas.
  • Software em funcionamento, mais que documentação abrangente
  • Responder a mudanças, mais que seguir um plano

C.A.M.S. ( Culture, Automation, Measure, Sharing)

  • Culture (Cultura)
    • É preciso colaborar, compartilhar e entender a importância de manter uma relação saudável entre todas as áreas.
  • Automation (Automação)
    • Identificar os processos que sejam repetitivos ou que levam bastante tempo e buscar resolver o quanto antes.
  • Measure (Medir)
    • Deve-se medir tudo que é possível: performance, processos, interações e até mesmo pessoas. O processo de melhoria contínua é o coração do DevOps!
  • Sharing (Compartilhamento)
    • Ter uma boa comunicação entre as equipes, incentivar as pessoas a se comunicarem e compartilharem ideias e problemas (Blameless).

O que precisamos para começar

  • Cultura;
  • Programação;
  • Gerenciar Servidores, Virtualização, Redes e Segurança;
  • Criação de Scripts;
  • Instalar e configurar middlewares (apache, nginx, haproxy);
  • Instalar softwares;
  • Versionar arquivos com GIT;
  • Automatizar tarefas e gerenciar configurações;
  • Infraestrutura como Código;
  • Observabilidade;
  • Orquestração de Containers;
  • Compartilhar;

Docker

É uma tecnologia de conteinerização que permite a criação e o uso de containers Linux.

Containers são como se fossem máquinas virtuais modulares e extremamente leves.

O Docker possibilita o empacotamento de uma aplicação ou ambiente inteiro dentro de um container, e a partir desse momento o ambiente inteiro torna-se portável para qualquer outro Host que contenha o Docker instalado.

Para ajudar no uso do Docker, temos o DockerFile, que é um arquivo de configuração que permite a criação de containers, e o Docker Compose, que é um arquivo de configuração que permite a criação de múltiplos containers.

Exemplo dos comandos:

Com isso, finalizamos a aula 1 de DevOps.

· One min read

16/07/2022 - Aula 4 de Node.js (Presencial)

Ultima aula de Node.js, começamos as 08:30h, baixando o projeto de Angular feito aqui na pós, app-unipar4, para podermos integrar com o backend em Node.js.

Alguns ajustes tem que ser feitos para o projeto para com que ele funcione, como ajustes das rotas e formas de autenticação.

Depois o professor passou o trabalho e ficou disponível para tirar algumas dúvidas.

Trabalho

As informações do trabalho estão na pagina da disciplina. Link

· One min read

02/07/2022 - Aula 3 de Node.js (Presencial)

Chegamos na Unipar e a sala estava trancada, após uns 10 minutos, conseguimos entrar na sala. O Professor Marlon passou uma atividade para criamos uma rota para a criação de um novo usuário, com as rotas GET, POST, PUT e DELETE.

Para o usuário, vamos utilizar criptografia, e precisamos dos pacotes abaixo:

npm install --save bcrypt
npm install --save jsonwebtoken
npm install --save passport
npm install --save passport-local

Implementamos a criptografia e o login com o passport, utilizando JWT para controlar o acesso a rotas.

Vamos trabalhar com documentação do projeto, para isso vamos utilizar o pacote swagger.

    npm install --save swagger-ui-express
npm install --save swagger-jsdoc

Criamos a documentação do projeto para alguns dos endpoints e testamos como utilizar o swagger.

Com isso finalizamos a aula de hoje.

· One min read

25/06/2022 - Aula 2 de Node.js (Presencial)

O Professor Marlon, chegou atrasado 10 minutos. Começou a aula as 08:40h, após o professor enviar o projeto para o github, o link é aula-node-posunipar.

Começamos a aula instalando um novo pacote para o mongo

npm install --save mongoose

Seguimos a aula fazendo com que os metodos GET, PATCH e DELETE funcionem com o banco de dados MongoDB

Teve o intervalo as 12h até as 13:30h.

Continuamos mudando as rotas para a parte das ordens

Adicionamos um novo pacote

npm install --savel multer

Utilizamos o multer para fazer o upload de arquivos

Com isso finalizamos a aula de hoje.

· 3 min read

11/06/2022 - Aula 1 de Node.js (Presencial)

O Professor Marlon, começou a aula as 08:30h, por ser a primeira aula, teve alguns problemas técnicos em relação a projeto e internet na Unipar, ficamos aguardando sem fazer nada até as 08:45h, pois professor estava aguardando outros alunos chegarem.

Começamos vendo sobre a origem da linguagem utilizada, o JavaScript, que rodava em navegadores, e a ideia do Node.js é que seja possível rodar JavaScript fora do navegador, ou seja, em um servidor ou em um computador desktop, mas seu maior foco é o desenvolvimento de aplicações backend.

Para isso acontecer, o Node se utiliza o Chrome V8 Engine, que é um motor de JavaScript. Vamos utilizar esses recursos para poder criar uma API RESTful.

Para seguir a aula, você deve instalar o Node.js no seu computador, baixando a ultima versão do Node.js no site nodejs.org. Como editor de texto, você deve utilizar o Visual Studio Code. Com isso, rodamos o comando para iniciar o projeto.

npm init

Depois de criar o projeto, vamos instalar o módulo express, que é um módulo que permite que você crie aplicações web.

npm install --save express

Criamos dois arquivos, um server.js e app.js.

server.js
const http = require('http')
const app = require('./app')

const port = process.env.PORT || 4000

const server = http.createServer(app)

server.listen(port)
app.js
const express = require('express')

const app = express()

app.use('/api', (req, res, next) => {
res.status(200).json({
message: 'Hello word!'
})
})

module.exports = app

... e após rodar o comando node server.js e acessar o endereço http://localhost:4000/api, você verá o retorno da mensagem Hello word!.

A aula para por um momento, 30 minutos de intervalo até as 10:30h.

Voltamos fazer uma nova rota para produtos, que será a rota /products.

\api\routes\products.js
const express = require('express')
const router = express.Router()

router.get('/', (req, res, next) => {
res.status(200).json({
message: 'Handling GET requests to /products'
})
})

router.post('/', (req, res, next) => {
res.status(201).json({
message: 'Handling POST requests to /products'
})
})

router.get('/:productId', (req, res, next) => {
const id = req.params.productId
if (id > 0) {
res.status(200).json({
message: 'Handling GET requests to /products/' + id,
id: id
})
} else {
res.status(404).json({
message: 'Product not found'
})
}
})

module.exports = router

A aula para para o almoço, as 12h, e voltamos as 13:30h.

Fizemos mais uma classe igual a do produto, chamada ordens.

Depois disso instalamos o nodemon, que é um serviço que monitora o nosso projeto e reinicia o servidor quando houver alguma alteração.

npm install --save nodemon

Criamos também no arquivo package.json o comando para rodar o servidor.

...
"version": "1.0.0",
"description": "Exemplo de aula para o curso de NodeJS",
"main": "index.js",
"scripts": {
"start": "nodemon server.js"
}
...
"keywords": [
"node",
...

Baixamos também o morgan, que é um módulo que permite que você veja o que está acontecendo no servidor.

npm install --save morgan

E vamos baixar o body-parser, que é um módulo que permite que você trabalhe com o corpo da requisição.

npm install --save body-parser

Depois de instalar esses pacotes, fizemos alguns ajustes para entender como que a requisição vem até a aplicação. Além disso, configuramos uma regra sobre cors.

Instalamos o MongoDB, e a aula acabou as 17h.

· One min read

30/04/2022 - Aula 4 de Flutter (Presencial)

O Professor Marcos chegou antes das 08h da manhã, mas a aula começou só as 8h30 pois tinha poucos alunos, mas nesse tempo o professor ficou tirando duvidas sobre o projeto que foi feito na aula anterior.

O código feito nessa aula é a continuação do projeto aula_03_pos_23_04_2022. Fizemos a implementação de mais alguns recursos e funções.

Depois disso, criamos um novo projeto para trabalhar com parte de estilos do aplicativo. O projeto está no Github no link aula_04_pos_30_04_2022.

A aula seguiu fazendo o estilos no aplicativo, e após o almoço o professor começou a mostrar como trabalhar com layous diferentes entre as plataformas. Esse projeto está no Github no link aula_04_bloc_pos_30_04_2022

Antes de terminar a aula, o professor passou o trabalho que deve de ser feito. Explicou algumas coisas, e passou o arquivo em PDF com a explicação.

Trabalho

As informações do trabalho estão na pagina da disciplina. Link

· One min read

23/04/2022 - Aula 3 de Flutter (Presencial)

O Professor Marcos chegou antes das 08h da manhã, mas a aula começou só as 8h15 pois tinha poucos alunos, mas nesse tempo o professor ficou tirando duvidas.

Vamos ver sobre banco de dados, utilizando o plugin do sqlite. O plugin é o sqflite.

Trabalhamos como criar o banco de dados, criamos um modelo, e criamos os metodos de CRUD.

A aula foi até 12h, e voltou as 13:30.

Seguimos na parte da terde fazendo o resto do aplicativo, agora focando mais na parte de tela.

O código feito nessa aula está aqui: aula_03_pos_23_04_2022