Jump to content

mauricio.miranda

Dev TecnoSpeed
  • Contagem de Conteúdo

    12
  • Ingressou

  • Última visita

  • Dias Ganhos

    5

mauricio.miranda ganhou o dia em Dezembro 15 2022

mauricio.miranda teve o conteúdo mais curtido!

Informações Pessoais

  • Cidade
    Tucano
  • Estado
    Bahia (BA)

Clientes & Parceiros

  • Você é um cliente TecnoSpeed?
    Não
  • Você é um parceiro da Casa do Desenvolvedor?
    Não

Visitantes Recentes do Perfil

O bloco de visitantes recentes está desativado e não está sendo mostrado a outros usuários.

Conquistas de mauricio.miranda

  • Ótima Reputação Raro
  • Positividade Raro

Emblemas Recentes

28

Reputação na Comunidade

  1. No módulo "JavaScript Testing" do curso JS Expert, ministrado por Erick Wendel, os alunos são guiados por uma jornada profunda no mundo dos testes de software em JavaScript. Este módulo é essencial para qualquer desenvolvedor que deseje dominar as melhores práticas de teste para garantir a qualidade e confiabilidade de suas aplicações. Principais Tópicos Abordados: Introdução ao Testing em JavaScript: O módulo começa com uma introdução aos conceitos fundamentais de teste de software, incluindo tipos de testes, vantagens e melhores práticas. Testes Unitários: São exploradas técnicas para escrever testes unitários eficazes que garantam o funcionamento correto de unidades individuais de código JavaScript. Testes de Integração: O curso aborda também testes de integração, que visam verificar a interação entre diferentes partes do sistema para garantir seu funcionamento adequado como um todo. Testes E2E (End-to-End): O curso guia os alunos na implementação de testes end-to-end para garantir que toda a aplicação funcione conforme o esperado, desde a interface do usuário até o back-end. Mocking, Stubbing e Spies: O uso de mocks,stubs e spies são utilizados para isolar componentes e simular comportamentos específicos durante os testes. Cobertura de Código: A importância da cobertura de código é enfatizada, e os alunos aprendem a utilizar ferramentas para medir a eficácia dos testes. Test-Driven Development (TDD): Introdução ao desenvolvimento orientado a testes (TDD), uma abordagem em que os testes são escritos antes do código de produção, garantindo um código mais limpo e testável desde o início. Behavior-Driven Development (BDD): Exploração do desenvolvimento orientado a comportamento (BDD), uma técnica que se concentra na descrição do comportamento esperado de um sistema por meio de testes de aceitação escritos em uma linguagem natural. Conclusão: O módulo "JavaScript Testing" do curso JS Expert proporciona aos alunos uma compreensão abrangente e prática dos fundamentos e técnicas avançadas de teste de software em JavaScript. Com o conhecimento adquirido neste curso, os desenvolvedores estarão equipados para escrever testes robustos e confiáveis que garantam a qualidade e estabilidade de suas aplicações JavaScript em qualquer contexto de desenvolvimento.
  2. Porventura, já experimentou a sensação de estar sobrecarregado pelas exigências cotidianas, batalhando para encontrar tempo para o que verdadeiramente tem valor? Se sim, saiba que não está sozinho. Em A Tríade do Tempo, o escritor apresenta uma proposta inovadora para gerenciar o tempo e aumentar a produtividade, promovendo mudanças significativas tanto na vida pessoal quanto profissional. O livro fala sobre gestão de tempo, afirmando que o foco principal deve ser a pessoa e não o relógio. Passamos a vida preocupados com o tempo que passou e com o tempo que virá e acabamos esquecendo de viver o momento. Precisamos começar a esquecer do tempo e prestar mais atenção à vida, ao presente. Barbosa propõe a ideia de que o tempo pode ser classificado em três grupos principais: urgente, importante e circunstancial. As atividades urgentes são aquelas que demandam uma ação imediata, ao passo que as importantes colaboram com nossas metas de futuro. Já as circunstanciais, frequentemente, são distrações que nos desviam do que é verdadeiramente essencial. É comum vermos indivíduos dedicando a maior parte do seu tempo para resolver questões urgentes, deixando de lado as atividades importantes que poderiam levá-los ao desenvolvimento pessoal e profissional. Ele defende que dar prioridade ao que é realmente importante, em detrimento do urgente, é essencial para uma administração eficiente do tempo. A obra apresenta diversas táticas eficazes para auxiliar os indivíduos a maximizarem sua produtividade. Desde estabelecer objetivos bem definidos até utilizar recursos de organização pessoal e eliminar atividades desnecessárias. O autor ainda ressalta a relevância do autoconhecimento e da disciplina pessoal para aprimorar a administração do tempo. Concluindo, o livro "A Tríade do Tempo" vai muito além de ser apenas um livro sobre eficiência, é um manual completo para ter uma vida mais equilibrada e gratificante. Seguindo as orientações de Barbosa, as pessoas podem descobrir como focar no que é realmente essencial, atingir objetivos desafiadores e experimentar uma verdadeira sensação de sucesso em suas vidas.
  3. BDD é uma técnica de desenvolvimento de software ágil focada no comportamento do software que visa a interação das regras de negócios com a linguagem de programação. Pode-se dizer também que BDD é a evolução do Test Driven Development (TDD), porque nesse tipo de codificação o desenvolvimento é guiado pelos testes, ou seja primeiro se escreve o teste e depois o código. De acordo com Dan North, criador do Desenvolvimento Orientado para Comportamento, o BDD pode ser descrito como uma tecnologia ágil, de múltipla escala e com alta capacidade de automação. O processo de desenvolvimento usando BDD começa com a escrita de cenários chamados de features. Estas features contém os requisitos, o comportamento esperado e inesperado do sistema para diversos casos e também contém os critérios de aceite e de rejeição. Segue abaixo um exemplo de feature: # Criar Usuário ## Caso de sucesso 1. Sistema executa o comando "Criar usuário" 2. Sistema valida se o usuário em questão tem permissão para criar usuário ou se é admin 3. Sistema valida se o usuário não existe 4. Sistema cria usuário 5. Sistema retorna sucesso ## Execução - Usuário não é admin 2. Sistema retorna exeção que usuário não tem permissão ## Execução - usuário já existe 2. Sistema retorna que usuário já existe ## Execução - usuário já existe 2. Verificar se a senha de usuário não é retornada Concluindo usando BDD melhoramos a comunicação entre toda a equipe, como desenvolvedores, testadores e PO já que todos sabem o que tem que seguir para que uma feature tenha sucesso ao ser entregue, também uma enorme vantagem é o compartilhamento de conhecimento, já que todas as features são armazendas em arquivos, onde qualquer outra pessoa da equipe possa ler e entender o que foi desenvolvido.
  4. Bom dia! tudo traquilo? Nesse caso você pode cadastrar um webhook para ser notificado quando um status for alterado Link para o manual: https://atendimento.tecnospeed.com.br/hc/pt-br/articles/360009857433-Configurando-WebHooks Outra opção é na área do cedente cadastrar notificação de evento, e toda vez que a situação do boleto for alterado será enviado uma notificação por email ou sms Link para o manual: https://atendimento.tecnospeed.com.br/hc/pt-br/articles/360009840613-Cadastrando-Notificações-por-Eventos
  5. Rust é uma linguagem de programação multiparadigma desenvolvida pela Mozilla Research. Seu principal objetivo é ajudar a escrever código mais rápido e confiável. Por que usar Rust? Três fatores importantes para a escolha de Rust como linguagem de programação na hora do desenvolvimento são: Desempenho: A linguagem é extremamente rápida e gerencia mémoria de uma forma muito eficaz, sem a necessidade de runtime ou garbage collector. Confiabilidade: Sua vasta tipagem e o seu modelo de Ownership garantem segurança no gerenciamento da memória e também da concorrência. Produtividade: Rust possui uma excelente documentação e atualmente sua comunidade é bastante ativa, além disso seu compilador é bastante amigável com mensagens de erros objetivas e úteis. Para que serve a linguagem? Ela é bastante utilizada no desenvolvimento back-end e atualmente também passou a ser utilizada para desenvolvimento full-stack. Seus principais frameworks são: Rocket: Um dos mais utilizados e famosos para se desenvolver com Rust. Contêm diversas bibliotecas e ferramentas que tornam o desenvolvimento mais rápido e seguro. Actix: Um ótimo framework que auxilia na escrita de código e aumenta a velocidade de compilação e execução. Yew: Inspirada no React Native conta com uma estrutura que auxilia na criação de aplicações para web de execução simultânea. Se ficou interessado vou deixar aqui um link de um livro no github em portugês que ensina Rust detalhadamente https://rust-br.github.io/rust-book-pt-br/ch01-01-installation.html Referências https://awari.com.br/o-que-e-rust/?utm_source=blog
  6. O que é serverless? Serverless pode ser traduzido como sem servidor, e é exatamente esse seu propósito, executar trechos de código de uma determinada linguagem de programação sem a necessidade de se preocupar com o gerenciamento de servidores e infraestrutura. Essa tecnologia conta com escalabilidade automática, alta disponibilidade e otimização de custos pagando apenas pela utilização. Soluções serverless As soluções serverless costumam ser divididas em: back-end como serviço (BaaS): é plataforma de serviço que automatiza o backend e infraestrutura necessária para a aplicação. função como serviço (FaaS): é um modelo de execução de computação orientado a eventos. Com ele, os desenvolvedores gravam a lógica, que é implantada em containers totalmente gerenciados por uma plataforma e executada sob demanda. Caso de uso Essa tecnologia é ideal para processar demandas assicronamente e isoladas, como por exemplo processar arquivos em lote, usando o serverless uma evento é gerado que nesse caso é a chegada desse lote, se o serviço estiver parado ou não estiver rodando, ele é buildado e iniciado chamando a tarefa de processamento, após finalizada é verificado se tem mais tarefas a serem realizadas caso não o serviço é eliminado, gastando menos recursos da máquina e gerando um custo bem menor que uma máquina rodando direto. Node.js e Serverless Agora chegou a melhor parte criar um serverless simples usando node.js de forma rápida e pratica. Aqui vamos usar o serverless framework (https://www.serverless.com/framework/docs/getting-started) uma ferramenta npm criada para facilitar ainda mais o desenvolvimento com serverless, para esse exmplo está sendo usada a versão do Node.js 16.15.1. Primeiramente é necessário installar o serverless globalmente : npm i serverless -g Agora vamos criar um projeto serverless usando o comando: serverless Ao finalizar é criada a seguinte estrutura: Basicamente um arquivo handler.js com uma função que será executada, um arquivo serverless.yml com as especificações do serverless que estamos criando, um .gitignore básico e um README padrão demostrando o processo de deploy. é importante destacar o arquivo serverless.yml, responsável por todas as diretivas que regem a aplicação que estamos criando: Explicando os pontos mais importantes do arquivo serverless.yml: service: nome do nosso serviço frameworkVersion: versão do framework do serverless que será usada plugins: São códigos que são adicionados ao serverless e que incrementam ou estendem comandos existentes No print acima usamos o serverless-offline como plugin para que possamos fazer todos os processos que o serverless executa para deploy mas local. provider: Aqui indicamos o responsável por gerenciar a infraestrutura necessária para a aplicação e também é indicado o runtime no nosso caso é o node.js na versão 14, mas poderia ser também outra linguagem caso o projeto fosse utilizar outra como por exemplo python. functions: Aqui será indicada quais funções serão executadas pelo serverless hello: o nome da nossa função no serverless (pode ser usado qualquer nome) handler: o método que será executado na chamada da função events: são os eventos que irão disparar nossa função, no exemplo da imagem acima é uma chamada HTTP do tipo GET ao caminho raiz /. Lembrando que o serverless gera uma rota para nossa api indicada com os path que existem no arquivo. Vamos installar também o serverless offline para podermos testar nossa aplicação localmente sem precisar subir em nenhuma infraestrutura: npm i serverless-offline -D Altere o arquivo handler.js para retornar um hello world e não todo o evento: Agora sim, tudo pronto, vamos rodar nosso serverless local e ver se está ok, basta rodar o comando: serverless offline Ápos isso no terminal é indicado as rotas geradas: Depois, basta agrir essa rota GET no navegador usando a URL http://localhost:3000/ e o resultado é o Hello world adicionado a função: Agora é só editar o arquivo handler.js como quiser e processar a sua demanda com sucesso. Referências https://www.redhat.com/pt-br/topics/cloud-native-apps/what-is-serverless https://aws.amazon.com/pt/serverless/ https://blog.back4app.com/pt/backend-as-a-service/ https://how.kovi.work/construindo-uma-aplicação-serverless-do-zero-cd0d70527d61
  7. Podemos acessar nosso banco de dados através de várias formas, geralmente por algum software gerenciador de banco de dados como por exemplo o DBeaver, hoje será mostrado que não é preciso uma interface gráfica para podermos acessar e utilizar nossa base de dados, usaremos apenas o terminal. Para podermos fazer isso precisaremos do psql, um terminal front-end do PostgresSQL que permite principalmente que você digite consultas interativas e consiga ver os resultados. Inicialmente vamos instalar a ferramenta, geralmente ela já vem junto com o PostgresSQL. MacOS com Homebrew brew install libpq Red Hat Enterprise e outros sudo yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-redhat10-10-2.noarch.rpm sudo yum install postgresql10 Fedora sudo dnf install postgresql.x86_64 Windows No Windows o mais recomendado é utilizar o instalador https://www.enterprisedb.com/downloads/postgres-postgresql-downloads e seguir o passo a passo da instalação. Acessando um banco de dados Para acessar uma base de dados basta abrir um terminar e rodar: psql -h <ip> -U postgres No comando acima inicialmente foi utilizado o psql indicando que usará a ferramenta psql, em seguida adicionado o parametro -h para indicar o host, o host pode ser um ip externo um ip interno e se for na máquina local pode-se usar o localhost, obs: se for um contâiner docker só funciona com o ip local, não funciona com o localhost. O parâmetro -U é utilizado para indicar o usuário do banco de dados, por default ele acessa o banco postgres, também é possível indicar qual o banco de dados será acessado, por default é o banco postgres e para mudar basta adicionar o -d <nome-do-banco>. Após rodar o comando usando a tecla enter, se o banco possuir senha será solicitado a senha senão acessará diretamente. O terminal passará a mostrar qual banco de dados está sendo acessado como a imagem abaixo mostra: Daí por diante é só rodar a query que quiser pelo terminal mesmo. Alguns comandos importantes para te ajudar a usar essa ferramenta incrível: \d : usado para listar todas as tabelas do banco de dados \d <nome-da-tabela> : mostra as informações sobre a tabela como colunas, indexs e etc \l : lista todos os banco de dados da conexão \c <nome-do-banco-de-dados> : usado para mudar para o banco de dados indicado, sem precisar fechar a conexão e iniciar uma nova \x : formata a saída de uma query \df : lista todas as procedures do banco \ef <procedure> : mostra a query que constroe a procedure Uma dica importante é usar o tab para completar, por exemplo se usar \d acc e usar o tab ápos isso ele verificará todas as tabelas que iniciam com esse prefixo, se existir só uma ele auto completa senão ele lista as tabelas com esse prefixo. Alguns exemplos de utilização do comando \d estão nas imagens abaixo: Concluindo, o psql é uma ferramenta poderosa e leve para gerencimanto de banco de dados PostgresSQL, com fácil manuseio e fácil instalação.
  8. Como foi visto no tópico Processando imagens com Node.js utilizando o Sharp, o Node.js possui uma ferramenta poderosa chamada sharp para processamento de imagens, ela contêm uma gama de ferramentas destinada a manipulação de imagens, a que vamos ver nesse artigo é a ferramenta de cropping (corte). O processo para cortar uma imagem usando o sharp é bastante simples, aqui tem um código de exemplo: const sharp = require("sharp"); async function cropImage() { try { await sharp("crop.png") .extract({ width: 500, height: 330, left: 120, top: 70 }) .toFile("img-cropped.png"); } catch (error) { console.log(error); } } cropImage(); A função cropImage carrega a imagem sammy.png usando a ferramenta sharp e depois aplica o encadeamento de função chamando a função de corte extract que tem como parâmetros as variáveis: width: o tamanho em pixels da largura que será recotado da imagem. height: o tamanho da em pixels da altura que será recotado da imagem. top: o ponto inicial a partir do topo de onde será cortado a imagem. left: o ponto inicial a partir da esquerda de onde será cortado a imagem. Depois de cortar a imagem é salva em outra imagem preservando a original usando a função toFile. Abaixo temos o exemplo do antes e depois de uma imagem ao aplicar a ferramenta de corte: imagem antes de cortar. imagem após o processo de corte.
  9. Processamento digital de imagens é o nome que se dá a qualquer forma de processamento de dados no qual a entrada e saída são imagens, ou seja é a forma com um computador manipula os aruivos de imagens. No Node.js existe uma biblioteca chamada sharp que consegue manipular facilmente imagens, neste post iremos falar sobre ela e demonstrar o redimensionamento de uma imagem através de um script simples. A ferramenta sharp pode ser usada para converter imagens em diferentes formatos, redimensionar, extrair informações, composição de imagens e correção gama. Uma novidade é que sistemas operacionais modernos que executam Node.js >= 14.15.0 não necessitam de nenhuma instalação adicional ou dependência. Instalação Para installar a dependência bastar rodar o comando: npm install sharp Crie uma pasta e dentro crie um arquivo com o nome index.js Extraindo Informações Para extrair informações de uma imagem basta adicionar o seguinte código no arquivo index.js: const sharp = require("sharp"); const process = async (img) => { const metadata = await getMetadata(img); console.log(metadata); }; const img = "./assets/imgs/sammy.png"; process(img); depois é só rodar o comando na raiz do projeto: node index.js lembrando que na raiz eu criei a pasta assets dentro dela a pasta imgs e dentro de imgs coloquei uma imagem chamada sammy.png a saída após rodar o script foi: Como podemos ver, ela apresenta um objeto com informações sobre a imagem como formato, altura e largura. Redimensionando Imagens para redimensionar é bem simples também basta usar o seguinte código: const sharp = require("sharp"); const process = async (img, imgOut, newWidth, newHeight) => { const metadata = await getMetadata(img); resizeImage(img, imgOut, metadata.format, newWidth, newHeight); }; async function getMetadata(img) { try { return await sharp(img).metadata(); } catch (error) { console.log(`An error occurred during processing: ${error}`); } return null; } async function resizeImage( img, imgOut, format, width, height ) { try { await sharp(img) .resize({ width: width, height: height }) .toFile(`${imgOut}-${width}-${height}.${format}`); } catch (error) { console.log(error); } } const img = "./assets/imgs/sammy.png"; const imgOut = "sammy-resized"; process(img, imgOut, 100, 100); Veja que para redimensionar foi criada a função resizeImage que recebe como parâmetros o caminho da imagem a ser redimensionada (img), o caminho da imagem que será gerada redimensionada a partir da original (imgOut), o formato de saída (format), a nova largura (width) e a nova altura (height). Dentro da função chamamos o sharp com o caminho da imagem original com o método resize para atribuir as novas dimensões junto com a função toFile que recebe o nome da nova imagem a ser salva nesse caso foi escolhido o novo nome concatenado com as novas dimensões e junto com o formato da imagem original. Conclusão Como podemos ver, quando precisar de uma ferramenta para processar sua imagens e gerar novas manipuladas e com alguns efeitos, utilize o sharp uma ferramenta rápida e leve. Referências https://www.digitalocean.com/community/tutorials/how-to-process-images-in-node-js-with-sharp https://www.npmjs.com/package/sharp
  10. Conheça o Vagrant Uma das frases mais famosas nos times de desenvolvimento é "na minha máquina funciona"? Por existirem diversos sistemas operacionais e versões diferentes alguns códigos funcionam em determinados ambientes e em outros não. Para solucionar esse proble apresento-lhe o Vagrant. O Vagrant é uma solução de virtualização utilizada para montagem de ambientes virtuais, garantindo assim que o que for utilizado no desenvolvimento será o mesmo nos ambientes de testes, homologação e produção. Conceito O conceito do Vagrant é preparar todo o ambiente de execução para o seu aplicativo. desde sistema operacional, software bases, pacotes e etc, tudo isso via script. Toda vez que rodar o script o Vagrant conseguirá montar todo o ambiente novamente, com tudo prontinho para executar a aplicação. Principais Componentes Basicamente o Vagrant é composto por: Box (caixa): Refere-se aos arquivos que contêm um sistema operacional com os pacotes básicos acompanhados, é definido no inicio do projeto e o Vagrant faz o download da imagem do sistema e aplica a máquina virtual. Provider (provedor): é o responsável pela virtualização. O Vagrant é compatível com VirtualBox, VMWare, KVM e outros, como o Docker inclusive, que usa outra forma de virtualização, baseada em containers. O VirtualBox ja vem por default no Vagrant, para os outros precisamos de plugins. Provisioner (provisionador): sua função é automatizar o processo de configuração do ambiente, ele irá executar as tarefas no ambiente virtual assim que o sistema operacional estiver disponível. Requisitos Básicos O Vagrant está disponível para Windows, LInux e MacOS. Vagrant vs Docker Basicamente o Docker serve para gerenciamento de contâiners e o Vagrant fornece ambientes de desenvolvimento por meio de múltiplos sistemas operacionais, a consistência é sua maior vantagem. Já o Docker tem a vantagem de ser mais leve em comparação a máquinas virtuais. Por isso é sempre bom analisar as vantagens e desvantagens na hora de escolher, se velocidade é mais importante do que compatibilidade o ideal é utilizar o Docker. Caso contrário, o Vagrant é a solução que se encaixa perfeitamente. Referências: https://e-tinet.com/linux/vagrant/ https://blog.mandic.com.br/artigos/devops-conhecendo-vagrant/ https://www.vagrantup.com/
  11. Trabalhando em projetos simultâneos criados com versões diferentes do Node.js, há sempre uma dor de cabeça na hora de trocar a versão instalada na máquina. Para acabar com esse problema existe uma ferramenta muito simples para gerenciar as versões do Node.js instaladas, o n, e ela é compatível com macOS, Linux, inclusive com o Windows Subsystem for Linux e vários outros sistemas do tipo unix. Ps: não funciona no Windows nativo Instalação Sua instalação é bastante simples, se voçê já tem o Node instalado basta rodar o comando: npm install -g n Você pode clonar o repositório e fazer: make install Ou ainda, usando o n-install: curl -L [https://git.io/n-install](https://git.io/n-install) | bash Após a instalação basta verificar se foi instalado corretamente com o seguinte comando: n --version Gerenciando versões do Node.js Para ver quais versões estão disponíveis na sua máquina basta rodar o seguinte comando no terminal: n ls Instalar uma versão e já colocá-la em uso: n 16.15.1 Ou a última versão: n latest Ou escolher qual quer usar: n Saída no terminal do comando "n" Depois é só escolher com as setas para cima ou para baixo do teclado e depois apertando Enter qual a versão que vai querer usar. Removendo versões Ao passar do tempo sua máquina pode ficar com muitas versões instaladas e isso pode prejudicar a performance. Se quiser remover uma ou mais versões basta rodar: n - 4.0.0 8.17.0 Ou se quiser remover todas menos a ativa: n prune Conclusão N é uma ferramenta intuitiva que resolve o problema de gerenciamento de versões do Node.js com comandos bem simples e práticos. Referências: https://www.webdevdrops.com/gerenciando-versoes-de-node-js-com-n/ https://www.npmjs.com/package/n
×
×
  • Create New...