All posts by Daniel Basconcello Filho

Curso de Rails

Nossos objetivos principais são:

  • Aprender Ruby e Rails
  • Montar um server Rails
  • Implementar ambientes de desenvolvimento e produção
  • Implementar o Continous Integration e Continous Delivery
  • Aprender tarefas de DEVOPS (mysql, linux, aws e ci/cd)

Usaremos a técnica de Aprendizado por demanda (mais informações aqui)

Objetivo prático - fazer um servidor de microserviços

Acho legal cada pessoa escolher o seu tema, mas como sugestão vou escolher fazer um microserviço que checa se um sistema qualquer está no ar ou não.

Aula 0 - Alicerce de conhecimentos

Para "aquecer os motores" vamos estabelecer dois objetivos menores e estudar uma listinha de materiais que nos dará um norte para o resto do curso. Os objetivos são:

1 - Entender o que é o Ruby e o Rails através de material online.

Abaixo tem uma listinha de links para os materiais que devemos ler.

https://rubyonrails.org/doctrine

https://guides.rubyonrails.org/getting_started.html

https://www.json.org/json-en.html

https://dicasdeprogramacao.com.br/o-que-e-json/

https://tudosobrehospedagemdesites.com.br/servidor-web/

https://www.luiztools.com.br/post/o-que-e-um-micro-servico-ou-microservice/

https://www.devmedia.com.br/introducao-a-web-services-restful/37387

https://www.csoonline.com/article/3634784/how-corporate-data-and-secrets-leak-from-github-repositories.html

Recomendo também instalar as seguintes ferramentas de desenvolvedor. Caso você já prefira alguma alternativa o passo é opcional.

Atom - editor de texto opesource - https://atom.io/
DBeaver - Interface para banco de dados Mysql - https://dbeaver.io/

2 - Definir o que vamos fazer até a aula seguinte, cada um vai definir o tema de criação de um microserviço da sua escolha.

Como comentei acima, o primeiro objetivo nosso com o rails será instalar o ambiente e depois desenvolver alguma coisa. O exemplo que escolhi será um microserviço que terá as seguintes caracteristicas:

  • Acessa um sistema que será monitorado de tempos em tempos para coletar o seu estado de funcionamento
  • Registra as consultas de estado em um banco de dados
  • Caso o estado do sistema monitorado seja ruim, o microserviço emite um SMS ou EMAIL
  • Pode receber uma chamada GET para consultar o estado de funcionamento de um determinado sistema e devolve esse estado através de um objeto JSON

Você pode optar por seguir esse exercício proposto ou bolar o seu próprio microserviço. Caso alguem queira fazer algo diferente podemos comentar na próxima aula. Os seguintes tópicos serão abordados, mas se alguém aparecer com uma idéia diferente vamos discutir:

  • Comunicação através de API RESTful
  • Armazenamento em banco de dados
  • Tarefas com excução automática via Timer, famoso "pooling"
  • Configuração via variáveis de ambiente e banco de dados

Achados para Próximas Aulas

https://www.bootrails.com/blog/rails-form-tutorial/ - Tutorial de formulário no Rails

https://getbootstrap.com/docs/4.0/components/forms/ - baita tutorial de formas no bootstrap

https://edgeapi.rubyonrails.org/classes/ActionController/Redirecting.html

https://damuz91.medium.com/setting-up-puma-as-a-service-in-systemd-in-ubuntu-18-9d2c1fe774e4 - Tutorial de como instalar o PUMA como serviço

Comandos Úteis para não esquecer

#Cria modelo com os campos definidos 
bin/rails generate model Article title:string body:text

rails generate controller Publicacoes index --skip-routes

#precompila
RAILS_ENV=production bin/rake assets:precompile

#cria chaves - deletar o credentials e o master.key antes
EDITOR="nano --wait" bin/rails credentials:edit

#instalar o mysql2 no apple M1
gem install mysql2 -v '0.5.3' -- \
--with-mysql-lib=$(brew --prefix mysql)/lib \
--with-mysql-dir=$(brew --prefix mysql) \
--with-mysql-config=$(brew --prefix mysql)/bin/mysql_config \
--with-mysql-include=$(brew --prefix mysql)/include 



    :binary
    :boolean
    :date
    :datetime
    :decimal
    :float
    :integer
    :primary_key
    :string
    :text
    :time
    :timestamp

Aula 01 - Git

Cadastrar a chave na sua estação local

nano ~/.ssh/config

Host github.com
        Hostname github.com
        IdentityFile ~/path/to/key.pem
        IdentitiesOnly yes

Aula 02 - MVC

https://www.devmedia.com.br/introducao-ao-padrao-mvc/29308 - Artigo sobre MVC

Horta Vertical Urbana Livre Revisitada

GitHub do projeto aqui:
https://github.com/robotizando/hortaverticalurbana

A pândemia mundial que nos assolou (e ainda não terminou) foi um evento transformador para a maioria das pessoas. No meu caso preferi ficar recluso com a família e após alguns meses de reclusão, muita energia criativa se acumulou e comecei a revisitar o projeto da horta urbana vertical.

A primeira versão, que você pode ver um pouco neste nosso post antigo aqui possuia um grave problema de estética ;-p

Horta Vertical - primeira versão

Com o tempo também percebi que o método de encadeamento era vulnerável à radiação ultra violeta, e as tampas de garrafa começaram a "quebrar" e os vasos começaram a cair causando uma tremenda bagunça.

Ao ficar sentado na varanda de casa e pensando sobre esses problemas de estética e funcionais, comecei a desenvolver uma nova versão da horta vertical urbana.

Neste artigo comento um pouco como tentamos solucionar o problema de estética e durabilidade, bem como comento também um pouco a respeito do hardware de controle desenvolvido.

O problema do encadeamento

Detalhe do conector

A idéia da horta vertical é ocupar pouco espaço, e os vasos são pendurados em alguma estrutura de forma que a distribuição de espaço seja otimizada. O problema principal é que ao encadear vasos desta forma o peso do conjunto, que é soma de toda terra e toda água da coluna fica concentrado no primeiro conector (veja a figura acima da primeira versão)

Na primeira versão isso foi um problema e mesmo colocando poucos elementos encadeados, somou-se o fato do sol estragar o plastico das tampas através da radiação ultra violeta.

Na versão revisitada, foi feito uma tentativa inicial de resolver o problema, criando suporte na borda das garrafas e encadeando as outras pelo gargalo. Veja:

Abaixo o diagrama dessa proposta

Esse modelo ainda possui o problema onde o primeiro vaso da coluna tem que suportar o peso da coluna toda. Estimadamente temos cerca de 30 Kg de peso numa coluna com 6 garrafas PET de 3 litros, cheias de terra e água.

Peça de sustentação impressa em PLA entortada pelo calor

Como disse anteriormente, a pandemia foi transformadora, ao ficar confinado, olhando sempre para o mesmo lugar, a mente começa a tentar escapar das condições impostas. O problema do peso e do uso da estrutura de garrafas PET incomodou bastante, pois não permitia escalar a horta vertical, com o risco de falhas e bastante sujeira.

A solução veio de repente. Estava manipulando as garrafas e tentando pensar como escapar dessa limitação de uso. A resposta veio em sonho.

Ficção científica e as inversões

Como fã inveterado de ficção científica, sou muito fã de Christopher Nolan, e o seu filme Inception, que trata de sonhos como construtores de uma realidade alternativa. Eu estudo algumas técnicas de sonho lúcido, e mesmo sem ser muito bom no assunto, gosto de sonhar e as vezes as soluções aparecem lá na fronteira da conciência e o inconciente.

Neste caso fiquei pensando durante dias sobre como solucionar o problema da resistência do material plastico no uso como estrutura da coluna. Sonhei com as garrafas flutuando e sendo apoiadas em algum dispositivo mágico onde o ponto de apoio não mais era na parte de cima, mas na parte de baixo do sistema. É complicado escrever o sonho, mas a pista apareceu na forma de uma inversão que considerei interessante. Faltava só o "ponto de apoio mágico" que tinha visto no sonho e depois de desenhar alguns esboços, acredito que cheguei na soluçao. Veja que simples:

Depois de algumas horas de experimentação, estava pronto o sistema. O ponto de carga de cada vaso é no cabo de tração e no ponto mais forte de uma garrafa PET, o gargalo. O cabo de tração é um simples varal de aço revestido. O ponto de alinhamento serve para deixar o cabo de tração centralizado no lado oposto da garrafa.

Pronto. Problema resolvido!! Horta vertical urbana pode ser escalada, construi várias colunas sem medo que elas quebrem com o tempo.

Outra vantagem desse tipo de abordagem é que o furo de passagem do cabo de tração serve de escoadouro para a agua!!

Finalizando a horta

Depois de resolver o principal problema mecânico e a horta poder escalar, foi uma questão de tempo colocar para funcionar. Adicionei um controlador com ESP8266 e montei o seguinte sistema:

O circuito de controle foi baseado em ESP8266 e o seu código está disponível no github do projeto. Vou escrever sobre esse sistema de controle no futuro. Por hora saiba que esse controle aciona uma bomba de "limpador de parabrisa" que leva a água para a parte de cima com uma tubulação feita de tubo de ar para aquários.

Composto de uma placa de desenvolvimento ESP8266, placa com dois relês, fonte de alimentação e um sensor BME280 (pressão, umidate, temperatura) o sistema de controle aciona a bomba automaticamente, envia dados para a nuvem, além de permitir o controle manual da bomba e de uma lâmpada.

Criei uma interface em HTML que fica hospédado em um servidor web DENTRO do ESP8266

Um detalhe para a parte de baixo do sistema, onde ficam os coletores de água. Foram mais ou menos 10 tentativas de peças 3D desenhadas, e o resultado mais interessante foi esse:

Essa peça demonstrada acima está também no repósitório do projeto e pode ser modificada e impressa por todos que desejarem montar a sua horta vertical urbana.

Para finalizar, fique com um vídeo que demonstra a horta crescendo e varias fotos para inspirar você a fazer a sua versão.

Compartilhe conosco seus resultados!! Até o próximo artigo.

Vasos cheios de vida
Manjericão filhote
A noite a iluminação deixa um charme especial com as libélulas fosforescentes

Segurança no uso de celulares

Perigos de navegação em redes desconhecidas

Os riscos de um Wi-Fi público A maior ameaça à segurança do Wi-Fi gratuito é a capacidade de um hacker posicionar-se entre você e o ponto de conexão. Então, em vez de falar diretamente com o ponto de acesso, você está enviando suas informações para o hacker, que pode retransmiti-las.

  • Mantenha a sua solução de segurança e sistema operacional atualizados
  • Esteja atento às suas ações realizadas nestas conexões
  • Acesse a sites que utilizem o protocolo HTTPS
  • Configure o seu dispositivo para que pergunte antes de se conectar
  • tilize a autenticação de dois fatores

Dicas de configurações para deixar o seu trabalho mais seguro

Ativar o bloqueio instantâneo com a tecla liga/desliga;

Desligar os periféricos que ficam ativados o tempo todo

Atualizar os aplicativos automaticamente

Não baixar programas de fontes desconhecidas

Desativar preenchimento automatico de códigos recebidos via SMS

Bibiografia

https://www.techtudo.com.br/listas/2021/07/android-5-ajustes-que-voce-deve-evitar-no-celular-para-sua-seguranca.ghtml

https://www.welivesecurity.com/br/2019/06/25/riscos-associados-as-redes-wi-fi-publicas-quais-sao-e-como-se-pode-prevenir/

Tutorial de instalação de WordPress – Infraestrutura

Olá pessoal, esta é a primeira aula do nosso tutorial de instalação de wordpress. Vamos cobrir nesta aula os seguintes tópicos:

  • O Modelo cliente/servidor e a computação em nuvem
  • Introdução à segurança de rede e acesso remoto seguro
  • Gerando chaves assimétricas
  • Provisionando uma instância
  • Acessando e gerenciando a instância

Material online para estudo e referência

Crie a sua conta na Amazon Web Service, você poderá instânciar um servidor grátis por um ano!
https://aws.amazon.com/pt/account/

Aqui um tutorial para criação de instâncias na AWS:
https://aws.amazon.com/pt/getting-started/hands-on/deploy-wordpress-with-amazon-rds/3/

Aula sobre redes
https://ca-lti.bbcollab.com/recording/c9eea1fe64dc497da32f6c1ffbbbe5b8

Arquitetura cliente servidor

Ótima série do nic.br sobre o funcionamento da internet (em português). Assistam as outras partes para se aprofundar no assunto, são 6 partes no total

Criptografia assimétrica explicada (em português)

Criptografia assimétrica explicada (em inglês)

SSH explicado (em português)

Guia rápido de comandos da aula

# gerar par de chaves de segurança (aws ou outros provedores)
ssh-keygen -t rsa -b 4096 -f chave.pem

# acessar a instância
ssh usuario@host -i chave.pem

#verificar o sistema de arquivos da instância
df -h

#verificar processos e memória
top
htop #(ver instalação do aplicativo htop a seguir)

#atualizar pacotes de programas 
#ubuntu
sudo apt-get update

#centOS
sudo yum update

#instalação de aplicativos na instância
#ubuntu
sudo apt-get install nano htop net-tools

#centOS
sudo yum install nano htop net-tools

Roboteador, um robô construído com sucata de roteadores. (parte 1/2)

Nada me deixa mais feliz do que conseguir fazer "mais" com menos ou quase nada. Toda economia em recursos tanto de hardware quanto software traz ganhos que valem a pena serem avaliados. Eu costumo fazer exercícios de otimização em tudo que projeto, porque no final você tem um hardware mais eficiente e robusto ou um software mais rápido e que consome menos recursos. Este artigo é sobre um dos exercícios de otimização que executei. Neste artigo vou ensiná-los a construir um robô completo, usando um roteador sucateado, e que pode ser operado pelo smartphone ou qualquer dispositivo sem precisar baixar nenhum aplicativo de loja online. IMG_20161114_154051682 Continuar lendo

FGSL – Fórum Goiano de Software Livre – Tutorial de montagem do Badge

Olá pessoal! Este ano o Fórum Goiano de Software Livre está demais! Em 2016 preparamos uma lembrancinha do evento, no formato de um cartão que vira um lindo robozinho que irá lhe auxiliar a segurar o teu lápis 🙂 Se você compareceu e conseguiu o "badge" do evento, esta página ensinará você a montar o seu brinquedinho.
0-badge

"Badge" do evento

13-final 1 - Separando as peças Você precisará de uma ferramenta cortante para separar as peças do robozinho da cartela. 1-Badge_estilete Corte os pontos de união, conforme mostramos abaixo: 2-cortando_pecas Na imagem abaixo podemos ver todos os pontos de união, salientados pelos círculos vermelhos: 3-cortando_pecas_salientado Após cortar todos os pontos de união,temos as peças separadas. 5-pecas_cortadas 2 - Preparando as juntas Antes de efetuar a montagem final, precisamos preparas as juntas dos braços do robozinho. Devido ao processo de impressão 3D utilizado, as pinças acabam fundidas e precisam ser cortadas para ficarem separadas. Essa separação faz com que a pinça se ajuste às irregularidades dos pinos. Veja abaixo as três peças que precisam sofrer esses ajustes. 6-separando_juntas Aplicamos o estilete no ponto central, cortando a frágil estrutura que une as pinças. Veja abaixo, a peça da direita já foi ajustada, a peça da esquerda não. 7-separando_juntas_compara Abaixo as três peças ajustadas. 8-separando_juntas_resultado   3 - Montagem Iniciamos a montagem encaixando um dos 3 braços na base. Encaixe com cuidado o pino na pinça da base. Se você forçar rápido demais, poderá quebrar a pinça. Se ocorrer, um pouco de cola irá resolver. 9-montagem-1 Após isso, vamos encaixando peça por peça, deixando a peça menor no final do braço. 10-montagem-2 Intercale o lado das peças, preservando a simetria. Veja abaixo: 11-montagem-3 Pronto! Seu robô está pronto! Agora você pode treinar o ajuste do centro de gravidade do seu "segurador" de lápis à vontade. 12-final 13-final  

Como fazer seu bico extrusor – Dicas e Upgrades 1

Olá pe-pe-pessoal! Voltamos aqui para atualizar a documentação do desenvolvimento do nosso bico extrusor. Durante a semana eu realizei algumas modificações que já havia planejado fazer e aproveitei esse bico recém construído para poder aplicar os "upgrades". Mas antes dos upgrades, vamos à dois vídeos que produzimos para este POST: O primeiro são algumas dicas sobre como fazer o furo na barra roscada de 6mm aço inox:  

O segundo vídeo é o resultado de uma impressão com o nosso bico recém atualizado.

  Agora vamos aos upgrades:

UPGRADES

1 - Mais desbaste no estrangulamento de calor Usei a lima e aprofundei o desbaste do estrangulamento de calor. SAM_1595   2 - Desbaste na ponta do bico Se você quiser ter um bico que não "borre" a peça, ele precisa ter o orifício de saída bem ao centro e com pouco material ao redor. Veja na foto abaixo o bico depois de uma aparada com a lima. SAM_1597   3 - Criar um rebaixo na ponta para chave de boca. Novamente peguei a lima e fiz dois desbastes para encaixar uma chave de boca. Isso facilita muito na hora de prender o bico no bloco aquecedor. Veja como ficou este upgrade: SAM_1601 SAM_1600  SAM_1602    4 - Otimização térmica Ao desmontar o bico para realizar os ajustes, notei que o tubo extrusor que fica dentro do furo principal do bloco aquecedor poderia ser melhor acoplado termicamente usando pasta térmica. Depois dos testes notamos uma curva de aquecimento mais linear, o que indica o melhor espalhamento do calor pela peça. Veja as fotos deste upgrade: SAM_1606 SAM_1608   5 - Mumificação do bico O termo é muito engraçado, mas é real! A mumificação de toda parte quente do bico extrusor serve para impedir ou minimizar a perda de calor por irradiação. Com o bloco aquecedor exposto, uma parte do calor é perdido por irradiação e convecção do ar quente que circunda o bico. Ao aplicar teflon, isolamos o bloco aquecedor de contato com o ar e evitamos a irradiação de infra vermelho. Isso feito, o bico fica com a curva de temperatura muito mais estável, e gasta menos energia de todo sistema. Veja as fotos deste upgrade: SAM_1610 SAM_1611 ]SAM_1614 Veja nesta foto abaixo como o orifício de saída está bem no centro da peça. SAM_1615