Jump to content

jeandepaula294

Membros
  • Contagem de Conteúdo

    7
  • Ingressou

  • Última visita

  • Dias Ganhos

    2

jeandepaula294 ganhou o dia em Dezembro 28 2023

jeandepaula294 teve o conteúdo mais curtido!

Informações Pessoais

  • Cidade
    Jardim Alegre
  • Estado
    Acre (AC)

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 jeandepaula294

  • Positividade Raro
  • Ótima Reputação Raro

Emblemas Recentes

19

Reputação na Comunidade

  1. Documentar a API é uma das etapas mais importantes de um projeto, assim como o desenvolvimento do código e a escrita de testes, sabia? Existem diversas ferramentas que permitem a documentação das rotas de uma API, e uma delas já é bem famosa na comunidade de desenvolvedores, o Postman. Ela possui como principal propósito facilitar a realização de requisições, mas um de seus recursos é transformar as suas collections de requisições na documentação da sua API. Legal, né? Para te mostrar como é simples, vou criar a documentação de uma API! Para agilizar, vou usar como base uma API simples de cadastro de usuários que eu desenvolvi com Node.js e Express, ela está lá no meu github. Ah, você pode usar o Postman para documentar qualquer API REST, independentemente da linguagem de programação, beleza? 1. Montar collection de requisições Se você já utilizou o Postman alguma vez, deve saber que ele permite salvar as requisições das rotas da sua API. No caso da API que eu fiz, ela possui 5 rotas e todas seguem alguns princípios da padronização da arquitetura REST, como utilizar os métodos e status HTTP corretamente e identificar o recurso nas rotas da requisição, por exemplo. Se você não lembra muito bem sobre os conceitos de uma API REST, tem esse meu artigo lá no blog da casa do desenvolvedor: REST APIs: Introdução às Interfaces de Programação Essa minha API de exemplo possui somente cinco rotas para manipulação de usuários: [POST]/users - para criar um usuário [GET]/users - para listar TODOS os usuários [GET]/users/:id - para listar um usuário pelo seu id [PUT]/users/:id - para atualizar um usuário pelo seu id [DELETE]/users/:id - para atualizar um usuário pelo seu id No meu Postman, eu deixei montado todas as requisições da API: 2. Realizar requisições e salvar respostas Com a sua collection montada, você já pode começar a fazer as requisições para a sua API. Para facilitar a documentação, podemos utilizar as próprias respostas que a API nós retorna, olha só: Ao fazer a requisição, aparece esse botão que nos permite salvar a resposta dessa rota como um exemplo. Nessa etapa, é legal você simular todos os retornos possíveis da sua API. Assim, todas as suas respostas vão ficar salvas abaixo de cada uma das rotas da sua API, dessa forma: Eu fiz isso para cada uma das rotas da API e no final ficou assim: 3. Gerar documentação automaticamente Aqui é que a mágica acontece. Ao clicar nos três pontos da sua collection e abrir as opções, aparecerá a opção para você gerar a documentação da sua API, com base nas requisições e respostas dela. Na documentação aparecerá todas as suas rotas e os retornos de cada exemplo que você salvou, incluindo o corpo, status e headers das respostas da API. Você também pode adicionar a descrição de cada rota e uma explicação sobre os parâmetros que podem ser enviados em cada uma das rotas, para facilitar ainda mais para quem for ler a sua documentação. 4. Customizar visual da documentação Uma das partes mais legais que o Postman permite é personalizar o visual da documentação, para deixar ela com a cara do seu projeto. No canto superior direito do seu Postman, aparecerá um botão que permite você customizar a documentação antes de publicar: Ao clicar nele, irá abrir uma página que permite você customizar o visual de sua documentação e deixar ela com as cores da identidade visual do seu projeto ou até mesmo adicionar um domínio personalizado, por exemplo. Bacana, né? 5. Publicar documentação na WEB Por fim, agora é só publicar a sua documentação e o Postman disponibilizará para você uma URL para compartilhar com todo mundo! Olha aí como ficou o resultado final da documentação: https://documenter.getpostman.com/view/25996150/2s9YkuXxXU 6. Conclusão O Postman é somente uma das inúmeras ferramentas que permitem a criação de documentações de API, além de possibilitar a customização do seu visual e a publicação na WEB, independentemente da linguagem de programação. Só fica atento para não colocar dados reais nos exemplos que você disponibilizar na sua documentação, principalmente por questões de segurança, ok? E você, conhece mais alguma ferramenta que acha muito legal? Compartilha com a gente aqui na casa do desenvolvedor, vamos adorar ler!
  2. É muito provável que você já tenha ouvido os termos “software livre”, “software gratuito” e “software de código aberto”, não é mesmo? Essas expressões podem até parecer ter o mesmo sentido, porém cada um desses tipos de software possui suas características distintas. Você sabe quais são elas? Deixa eu te explicar. Software Livre Este tipo de software oferece a possibilidade e a liberdade para executar, estudar, modificar e até mesmo distribuir o sistema, com possíveis alterações realizadas pelo usuário. Os softwares livres não têm um proprietário, ou seja, não estão vinculados à propriedade do software. Portanto, somos livres para personalizá-los da forma que acreditamos que melhor nos atenderá. Um exemplo de plataforma que nos oferece essa liberdade é o WordPress. Além disso, dizer que um software é livre não significa que ele seja gratuito, visto que podem existir versões de software livre com serviços adicionais, suporte técnico ou funcionalidades avançadas, e essas versões podem ser pagas. Assim, o termo “livre” se refere à liberdade do usuário de modificar o software e não necessariamente ao custo do software em si. Software Gratuito Os softwares gratuitos são aqueles que não exigem compra ou assinatura para começar a utilizá-los, mesmo que possam ter funcionalidades ou versões pagas. No entanto, ao contrário dos softwares livres, a liberdade de modificação não é uma característica dos softwares gratuitos, uma vez que o seu código-fonte nem sempre é de fácil acesso, especialmente aqueles que possuem algum recurso premium, o que geralmente resulta em um código fechado. Por fim, como exemplo de software gratuito, temos alguns serviços de antivírus, por exemplo, que oferecem certas funcionalidades gratuitas e podem incluir ações que requerem alguma assinatura. Software de Código Aberto Diferentemente do que muitos pensam, nem sempre é possível contribuir ou realizar modificações em softwares de código aberto, também chamados de “open source”. A principal característica desse tipo de software é a possibilidade de acessar e visualizar o seu código-fonte. No entanto, ao contrário dos softwares livres, é possível que determinados softwares de código aberto possuam propriedade privada, o que impede que outras pessoas modifiquem e distribuam cópias não autorizadas. Enfim, um exemplo de software de código aberto é o algoritmo de recomendação do Twitter, que está disponível publicamente no GitHub e que você pode acessar. Conclusão Em resumo, podemos definir os tipos de software acima da seguinte forma: Software Livre: oferece liberdade para modificar e distribuir; Software Gratuito: não requer compra ou assinatura para começar a utilização; Software de Código Aberto: possui o código-fonte disponível publicamente para visualização. Por fim, é válido lembrar que um mesmo software pode se enquadrar em diferentes categorias, como ser de código aberto e livre, por exemplo, mas isso nem sempre é uma regra e pode variar de acordo com o propósito e a propriedade do sistema.
  3. Automatizar a execução de alguma funcionalidade é muito comum durante o desenvolvimento de softwares, como enviar emails em determinado horário em alguns dias da semana, limpar alguns dados do banco de dados de tempos em tempos ou requisitar informações de alguma API diariamente, por exemplo. Para facilitar a automatização dessas rotinas, existe a possibilidade de criarmos tarefas agendadas, também conhecidas como Cron Jobs, tais que podem ser configuradas para executar exatamente no tempo estabelecido, como a cada 10 minutos, todo fim de semana, ou todos os dias ao meio-dia, ou seja, facilitam a realização de processos que precisam ser executados com determinada frequência previamente definida. Uma das formas de executar Cron Jobs com NodeJS é realizando a configuração diretamente no código-fonte, por meio de bibliotecas que permitem o controle e execução de uma rotina no intervalo definido. A biblioteca node-cron, por exemplo, é um dos pacotes que pode ser utilizado para agendarmos uma tarefa utilizando o Node. Com o NodeJS instalado no computador e um projeto NPM iniciado, é possível instalá-la com o comando abaixo: npm i node-cron Com a biblioteca instalada, podemos definir qual funcionalidade iremos agendar. Para simplificar, criei uma função getData, que faz uma requisição para uma ferramenta de webhook que gera uma rota temporária, para conseguirmos visualizar o momento exato em que a função foi executada. const getData = async () => { await fetch("https://webhook.site/85a67779-9632-4d5a-8603-286a11f554be"); }; Com a função definida, podemos estabelecer de a cada quanto tempo queremos que ela seja executada. Para isso, utilizaremos Expressões Cron, que são usadas na computação exatamente para determinar a frequência do agendamento de uma rotina, como os exemplos acima. Para entender como funcionam estas expressões e como você pode criar as suas, é só pesquisar por ferramentas que auxiliam na geração das expressões, como o site https://crontab.guru/ No exemplo abaixo, criei a expressão "*/3 * * * *", que permite a execução de uma tarefa a cada 3 minutos. Aqui, guardei o seu valor em uma variável, mas o ideal é deixar o valor em uma variável de ambiente, para que seja possível editar a frequência de uma rotina mais facilmente. const jobFrequency = "*/3 * * * *"; Assim, definida a função a ser agendada e a sua frequência de execução, podemos utilizar a biblioteca node-cron para criarmos o Cron Job. Para agendarmos a rotina, utilizamos o método schedule do pacote, que foi importado logo no início do código. const cron = require("node-cron"); const getData = async () => { await fetch("https://webhook.site/85a67779-9632-4d5a-8603-286a11f554be"); }; const jobFrequency = "*/3 * * * *"; cron.schedule(jobFrequency, getData); Como primeiro parâmetro, o método recebe a expressão cron. Já o segundo parâmetro é a função que definimos que será executada a cada 3 minutos. Por fim, ao rodarmos o código, as requisições passarão a ser realizadas para a plataforma de webhook no intervalo que definimos, com os espaçamentos de 3 minutos entre a sua execução, como é possível ver nos registros de requisição da ferramenta de webhook, funcionando assim como o esperado.
  4. Conhecer os tipos de erros que podem ser lançados durante a execução de um programa é essencial para realizar um correto tratamento destas exceções. No Javascript não é diferente, fazendo com que a linguagem tenha diferentes tipos de erros, tais que ajudam os desenvolvedores a entenderem quais problemas estão ocorrendo durante o desenvolvimento do código. Dentre os principais tipos de erros que podem ocorrer ou serem instanciados e lançados em um projeto desenvolvido com o Javascript, é válido destacar os seguintes: ReferenceError Este tipo de erro ocorre ao tentar acessar ou manipular o valor de uma possível variável que ainda não tenha sido declarada, por exemplo. Exemplo → console.log(variavelNaoCriada) Erro lançado → ReferenceError: variavelNaoCriada is not defined SyntaxError Este tipo de exceção ocorre no momento em que é encontrado algum erro de sintaxe referente a linguagem Javascript, como esquecer de fechar um parênteses aberto anteriormente. Exemplo → console.log('Hello, world!' Erro lançado → SyntaxError: missing ) after argument list RangeError São erros que ocorrem quando determinado valor não está dentro de um grupo de valores esperados. Ao tentar criar um array com tamanho negativo, por exemplo, este erro ocorreria, já que os índices das posições de um array são números inteiros e positivos. Exemplo → const arr = new Array(-2) Erro lançado → RangeError: Invalid array length TypeError Erros que ocorrem quando algum valor acessado/manipulado não é do tipo esperado, como ao tentar utilizar um método de manipular números em uma cadeia de caracteres. Exemplo → console.log('Hello, world!'.toFixed(2)) Erro lançado → TypeError: "Hello, world!".toFixed is not a function Além dos tipos de erros citados acima, o Javascript possui outros tipos de exceções que podem ocorrer durante o desenvolvimento do software e é sempre bom ficar de olho na documentação oficial para conhecer outros exemplos e se familiarizar com os possíveis erros de uma linguagem de programação.
  5. Se você já programou em Javascript, provavelmente já utilizou o hoisting, sabia? Mas, você sabe o que de fato é o hoisting e qual a sua utilização nos códigos? Lançado a partir do ECMAScript 2015, o hoisting é uma característica do Javascript que permite com que você utilize variáveis e funções antes mesmo de declará-las, ou seja, é como se elas fossem “içadas” para o topo do código, mesmo que na prática isso não aconteça, já que isso ocorre porque elas elas são alocadas na memória durante a compilação do código. E será que o hoisting funciona corretamente para todos os tipos de variáveis e funções? A resposta é NÃO! Esse comportamento pode ser utilizado sem grandes problemas para variáveis globais do Javascript, aquelas declaradas com a palavra reservada VAR, e para funções de declaração, definidas pela palavra reservada FUNCTION, não sendo realizado para arrow functions, por exemplo. Quer um exemplo de como funciona o hoisting? Olha só! //Inicialização da variável antes de declará-la nome = 'Jean'; var nome; //Chamada da função antes de declará-la imprime(nome) function imprime(nome){ console.log(nome) } O código acima pode ser executado sem problema algum. Mas, e se a variável nome fosse declarada utilizando a palavra reservada CONST, ou a função imprime fosse uma arrow function, sabe o que aconteceria? Bom, um ReferenceError seria lançado, que ocorre quando variáveis não inicializadas são referenciadas. //Inicialização da variável antes de declará-la nome = 'Jean'; let nome; //Chamada da função antes de declará-la imprime(nome) const imprime = nome => console.log(nome) Erros que poderiam ser lançados: ReferenceError: Cannot access 'nome' before initialization ReferenceError: Cannot access 'imprime' before initialization Por fim, e legal saber que o hoisting não ocorre com a inicialização das variáveis globais, somente com as suas declarações. Aqui vai mais um exemplo: console.log('O meu nome é' + nome) nome = 'Jean'; var nome; Nesse caso, visto que o console.log() é realizado antes da inicialização da variável, no terminal seria impresso a seguinte frase: O meu nome é undefined Quer entender um pouco mais sobre o hoisting e suas aplicações? Dê uma conferida na documentação oficial do Javascript!
  6. jeandepaula294

    programa a fazer

    Opa, tudo bem? Levando em consideração que você quer saber se um ponto A(x, y) está dentro de uma circunferência de raio R, o primeiro passo a ser levado em consideração é calcular a distância entre o ponto A e o centro da circunferência (a, b). Existem fórmulas específicas para isso que você pode adaptar no seu código... uma delas é a de Pitágoras. DICA: considere que o ponto A e o centro da circunferência são dois dos véritces de um triângulo retângulo. https://mundoeducacao.uol.com.br/matematica/distancia-entre-dois-pontos.htm Por fim, tendo a distância entre o ponto A e centro da circunferência, é só realizar algumas validações, comparando este valor com o raio da circunferência: CASO a distância seja IGUAL ao raio, ENTÃO pode-se considerar que o ponto pertence a circunferência CASO a distância seja MENOR que o raio, ENTÃO pode-se considerar que o ponto está dentro da circunferência CASO a distância seja MAIOR que o raio, ENTÃO o ponto estará fora da circunferência Basicamente esta é a lógica que você pode aplicar no seu código para resolver o problema, independente da linguagem. Qualquer dúvida, fico a disposição!
  7. Objetos, classes, atributos, métodos… A Programação Orientada a Objetos é composta por vários conceitos, paradigma responsável por aproximar os códigos do mundo real. Quer entender um pouco mais sobre POO? Então, continue lendo esse artigo! Afinal de contas, o que é um Paradigma de Programação? Existem diversas formas de organizar um software. Isso é possível graças aos paradigmas de programação, padrões que estruturam a execução de um código de forma lógica, sendo alguns dos paradigmas mais conhecidos: Programação Orientada a Objetos (POO) e a Programação Estruturada (PE). Programação Estruturada vs Programação Orientada a Objetos A Programação Estruturada é um dos paradigmas de programação mais simples, composto basicamente por três estruturas que controlam o fluxo da execução do código. Elas podem ser definidas como estruturas de: Sequência: fazem com que o programa seja executado linha a linha. Seleção: possibilitam que trechos do código sejam executados ou não, por meio de comandos condicionais. Repetição: também conhecida como iteração, são estruturas responsáveis por executar uma parte do programa mais de uma vez. Por outro lado, a Orientação a Objetos, como o próprio nome já diz, é baseada em objetos, estes que possuem atributos e métodos herdados de sua classe. Classes, Atributos, Métodos e Objetos na POO Como dito anteriormente, a POO tem como objetivo aproximar a programação do mundo real, com a utilização de objetos. Para isso, a orientação a objetos conta com classes, atributos e métodos, responsáveis por formar os objetos utilizados no código. CLASSES As classes podem ser definidas como o conceito de objeto, um molde/modelo que engloba seus atributos e métodos, compartilhados por objetos do mesmo tipo. ATRIBUTOS Os atributos são as características, também conhecidas como propriedades, que um objeto originado de uma classe possui. Considerando uma classe “Celular”, pode-se dizer que seus atributos(propriedades) são: Classe Celular; Propriedade Cor; Propriedade Marca; Propriedade Tamanho; MÉTODOS De forma geral, os métodos são as funcionalidades/ações que um objeto possui, também definidos em uma classe. Ainda levando em consideração a classe “Celular” e seus atributos, pode-se dizer que seus métodos são: Classe Celular; Propriedade cor; Propriedade marca; Propriedade tamanho; Método realizar_ligacao(); Método atender_ligacao(); Método enviar_mensagem(); Método reproduzir_audio(); OBJETOS Os objetos são "produtos" reais originados (instanciados) de uma classe, herdando seus atributos e métodos. Um objeto originado da classe “Celular” possuirá características como cor, marca e tamanho, além de funcionalidades como realizar e atender ligações, enviar mensagens e reproduzir áudios, visto que a classe “Celular”, em que o objeto é modelado, possui estes atributos e métodos. Por fim, objetos do mesmo tipo pertencem à mesma classe (são instanciados/modelados da mesma classe), ou seja, todo telefone criado a partir da classe “Celular” será do tipo celular, já que possui as características e funcionalidades deste tipo de dispositivo. Referências: POO: tudo sobre Programação Orientada a Objetos! POO: o que é programação orientada a objetos?
×
×
  • Create New...