Exemplo Prático: Node.js

Neste tutorial, irei demonstrar como criar a sua primeira aplicação Olá Mundo em node.js. Para instalar o node.js na sua máquina, confira o link a seguir: https://nodejs.org/en/

Vamos começar!

Você pode realizar este tutorial utilizando Windows, Linux ou Mac. Você precisará:

  • Criar uma pasta chamada projects dentro do seu diretório de usuário. Você pode fazer isso utilizando os seguintes comandos no Windows:
> mkdir %USERPROFILE%\projects
> cd %USERPROFILE%\projects
  • No Linux e Mac:
$ mkdir ~/projects
$ cd ~/projects

Agora, acesse a pasta e crie um arquivo chamado ola-mundo.js dentro da sua pasta projects. O próximo passo é inserir este código dentro do seu arquivo olamundo.js. Use o seu editor de texto favorito para tal ação.

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Ola Mundo!\nBem vindo ao nodejs');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

O que fazer agora?

Você já tem tudo preparado para sua primeira aplicação simples em node. O próximo passo é:

  • Com o seu terminal aberto, e na pasta projects, escreva o seguinte comando para executar o seu servidor node:
$ node ola-mundo.js

Observação:

Não utilize o “&” e “<” nos seus comandos, eles são apenas um indicativo de início de comando. Eles estão lá apenas para replicar como apareceria no seu terminal.

Feito isto, a sua saída no terminal deve ser algo parecido com isso:

Server running at http://127.0.0.1:3000/

Isso significa que o seu servidor está rodando no endereço 127.0.0.1:3000.

Para acessá-lo, abra o seu navegador e, na url, digite este endereço: http://127.0.0.1:3000/

O seu navegador deve estar mostrando em tela algo como isso:

Se o seu navegador mostrar a frase “Ola Mundo! Bem vindo ao node.js”, significa que o seu servidor está funcionando.

Parabéns, a sua primeira aplicação Node.js já está funcionando!

Para adquirir mais conhecimentos, recomendo que leia a documentação, disponível em: Documentação Node.js

Gostou deste artigo? Comente abaixo!

Azure DevOps + Angular + GitHub Pages

Veja nesse artigo como criar uma pipeline no Azure DevOps para publicar o seu projeto Angular no GitHub Pages

Dando continuidade ao meu artigo anterior: Angular 8.3: publicando projeto com o Angular CLI em 5 passos, hoje eu irei demonstrar como criar uma pipeline no Azure DevOps para automatizar o processo de deploy demonstrado no artigo anterior.

Para os próximos passos sera necessário ter uma conta no Azure DevOps Service. Caso você ainda não tenha se cadastrado la, acesse o seguinte link para acessar o portal e criar uma conta: Azure DevOps.

Com o passo da conta OK, vamos a criação de uma nova pipeline. Para isso, siga os passos abaixo:

1- Clique em pipelines:

2 -Em seguida no canto superior direito, clique no botão New pipeline:

3- Selecione o repositório do seu código.

Para esse artigo, eu irei utilizar um repositório do meu GitHub.

4- Selecione a pipeline do Node.js:

Esse passo deve criar uma pipeline básica para projetos Node.js.

Caso seja necessário adicionar um novo step na sua pipeline, você pode utilizar o assistente no canto direito demonstrado na imagem abaixo:

Agora para ajustar pipeline para publicar o nosso projeto, altere o comando npm run build para npm run deploy.

Obs.: Esse comando e com base no meu arquivo package.json, nele eu adicionei o comando ng deploy da nova versão do Angular 8.3

Clique em Save and Run, de um nome para o seu commit e clique em Save and Run novamente.

Assim que o Job finalizar, acesse a sua página no GitHub pages e verifique as alterações que você subiu nessa nova release do seu projeto.

Link do meu projeto publicado em uma pagina do GitHub: Angular 8.3 DevOps.

Bom, a ideia desse artigo era demonstrar como automatizar o processo de deploy de um projeto angular, utilizando um arquivo .yml no Azure DevOps Service.

Espero que tenham gostado e até um próximo artigo pessoal 😉

Fonte: https://medium.com/xp-inc/azure-devops-angular-github-pages

Gostou desse artigo? Comente abaixo!

Malware Nodersok/Divergent afeta milhares de PCs

Novos malwares identificados pela Microsoft e Cisco Talos afetaram milhares de PCs nos Estados Unidos e na Europa e transformam sistemas em proxies para a realização de atividades maliciosas, disseram as empresas.

O que é o Nodersok?

A ameaça sem arquivo (fileless) – chamada Nodersok pela Microsoft e Divergent pela Cisco Talos – possui muitos de seus próprios componentes, mas também aproveita as ferramentas existentes para realizar seu trabalho sujo. O malware utiliza o Node.js que é usado por muitos aplicativos Web e o WinDivert, um utilitário de captura e manipulação de pacotes de rede, para transformar os sistemas em proxies involuntários.

Pesquisadores da Microsoft afirmam que, uma vez que a Nodersok transforma máquinas em proxies, as utiliza como

…um retransmissor para acessar outras entidades da rede (sites, servidores C&C, máquinas comprometidas etc.), o que lhes permite realizar atividades maliciosas furtivas…

disse a empresa. em uma postagem do blog.

Os pesquisadores do Cisco Talos, por outro lado, disseram que os proxies criados pelo Divergent são usados ​​para realizar fraudes por clique. Além disso, o malware tem características semelhantes às observadas em outros malware de fraude de clique, como o Kovter, informou a empresa em um post no blog.

Como o ataque funciona?

A infecção por Nodersok é mais ou menos um ataque de dois estágios que baixa vários componentes no PC de um usuário. Os sistemas são afetados inicialmente quando um usuário executa um arquivo HTA como um download do navegador, clicando nele ou navegando em um anúncio malicioso, de acordo com a Microsoft.

O código JavaScript no arquivo HTA baixa um componente do segundo estágio na forma de outro arquivo JavaScript ou um arquivo XSL que contém o código JavaScript. Esse componente inicia um comando do PowerShell oculto dentro de uma variável de ambiente e inicia instâncias adicionais do PowerShell, de acordo com a Microsoft.

Os comandos do PowerShell baixam e executam componentes criptografados que, entre outras coisas, tentam desativar o Windows Defender Antivirus e o Windows Update e iniciam um código de shell binário que tenta elevar privilégios na máquina infectada. A carga final do malware é um módulo JavaScript escrito na estrutura do Node.js. que pode transformar a máquina em um proxy, disse a Microsoft.

Como evitar

Para evitar a infecção, a Microsoft está aconselhando as pessoas a não executarem arquivos HTA encontrados em seus sistemas, especialmente aqueles que não se lembram de baixar ou cuja origem não conseguem identificar, informou a empresa.

Outra opção é utilizar programas de antivírus que estejam preparados para reconhecer e remover este tipo de ameaça. Segundo o pessoal da Microsoft o próprio Windows defender está apto a fazer isso, então podemos ficar seguro que a maioria dos antivírus também esta 😊!

Fonte: threatpost.com

Node.js: monitorando APIs RESTful com o Application Insights

Dando continuidade aos meus artigos sobre Node.js no Azure, hoje eu irei demonstrar como monitorar uma API RESTful desenvolvida em node com TypeScript, utilizando o Application Insights.

Para aqueles que estão tendo o seu primeiro contanto com Application Insights nesse artigo, ele é um serviço de monitoramento de aplicações do Azure.

Com ele nós conseguimos medir a performance das nossas aplicações, extrair métricas de acesso por um range de tempo, detectar falhas … etc.

A ideia desse artigo será demonstrar como monitorar uma API RESTful desenvolvida em Node.js com TypeScript. Para isso, eu irei utilizar um gerador de APIs que eu desenvolvi utilizando essas tecnologias.

Caso tenha interesse em utilizar esse mesmo projeto, segue o seu link no portal NPM gerador-ts-api, e um vídeo passando alguns detalhes sobre essa estrutura:

Com o projeto OK, para os próximos passos será necessário ter uma conta no Azure. Caso você ainda não tenha uma, a Microsoft tem um programa chamado Visual Studio Dev Essentials que disponibiliza alguns benefícios como: créditos para serem utilizados no Azure, Visual Studio, acesso grátis por um período na Pluralsight… etc.

Caso tenha interesse em saber um pouco mais sobre esse programa, eu recomendo a leitura do seguinte artigo: Visual Studio Dev Essentials (Free).

Com o projeto criado e a sua subscription OK, vamos agora criar um novo serviço no Azure para monitorar a nossa aplicação. Para isso, acesse a sua conta, vá até-> Create resource -> Devops -> Application Insights e clique no botão Create.

Na próxima tela será necessário informar os dados da sua aplicação como: Nome, Resource Group … etc. Abaixo você tem uma imagem demonstrando como eu preenchi essa etapa para um evento presencial aqui em SP:

Clique em Create e aguarde a tela informando que o seu deploy está completo. Abaixo você tem uma imagem demonstrando essa etapa:

Agora clique no botão Go to resource -> vá até Overview e copie a sua instrumental Key:

Essa chave que irá vincular a nossa aplicação ao serviço no Azure.

Com a Key criada, vamos agora adicionar ela na nossa aplicação. Para isso, abra o seu projeto e siga os passos abaixo:

O primeiro passo será importar a biblioteca do applicationinsights para o nosso projeto. Para isso, abra um terminal, navegue até o seu projeto e execute o comando abaixo:

npm i applicationinsights --save

E no caso de estar seguindo esse passos em um projeto com TypeScript:

npm i @types/applicationinsights --save-dev

Agora abra o arquivo de inicialização do seu projeto, chame a biblioteca importada no passo anterior, em seguida inicialize ela com a sua instrumental Key:

const appInsights = require('applicationinsights'); 

appInsights.setup('<instrumentation_key>').start();

Caso esteja seguindo esses passos em um projeto gerado pelo o gerador-api-ts acima, basta abrir o arquivo startUp.ts e adicionar as linhas abaixo nele:

import * as appInsights from 'applicationinsights';
 // no inicio do arquivo
appInsights.setup('<instrumentation_key>').start();
 // no método middler

Monitorando a aplicação

Agora para que possamos monitorar a nossa aplicação, será necessário executar ela e abrir o serviço no Azure. Como eu estou utilizando a API gerado com o gerador mencionado acima, basta executar o comando npm run compile para gerar o dist do projeto e npm start para subir a aplicação.

Com o projeto rodando, vamos simular uma falha, uma chamada a uma rota/endpoint que não existe como por exemplo http://localhost:3050/api/v1/news.

Depois de alguns segundos acessando o portal conseguimos pegar o erro na chamada:

Como eu passei no inicio do artigo, nós podemos pegar métricas de acesso, performance … etc da nossa aplicação. Abaixo você tem um print demonstrando a performance da aplicação que eu estou utilizando nesse artigo:

Caso você tenha interesse em ver como retirar as outras métricas, como esse serviço funciona mais a fundo, eu recomendo a leitura do seguinte link na documentação da Microsoft: App-insights-overview.

Bom era isso pessoal, espero que tenham gostado e até um próximo artigo galera 😉

Node.js: importando dados de um arquivo .csv para o mongoDB

Quem nunca precisou abrir arquivo para importar o seus dados para uma base de dados? Esse é um processo simples que ajuda muito outras equipes como de RH, Financeiro … etc.

Hoje eu irei demonstrar como importar dados de um arquivo .csv com algumas das batalhas que ocorreram na serie GOT (Game of Thrones), utilizando o Node.js e uma base de dados mongoDB.

Para pular a etapa de criação de um novo projeto eu irei utilizar a versão final desse artigo. Caso tenha interesse em clonar esse projeto, segue o seu link no meu GitHub: node-csv-mongodb.

O projeto está bem simples, abaixo você tem uma breve explicação de cada um dos arquivos utilizados.

Analisando ela nós temos:

  • config/db: arquivo de conexão com a nossa base de dados
  • models/battles.js: model contendo os campos do arquivo .csv
  • repository/battleRepository: arquivo de mapeamento da model com a collection do banco de dados
  • battles.csv: arquivo contendo algumas das batalhas que ocorreram na série GOT
  • index.js: nós iremos explorar esse arquivo melhor, mas por hora ele é o responsável por abrir o arquivo .csv e importar os dados para o nosso banco de dados

Abra o projeto no seu editor de textos preferido, em seguida adicione a sua string de conexão no arquivo db.js. Com essa etapa OK, vamos analisar o arquivo index.js:

const db = require('./config/db');
const battleRepository = require('./repository/battleRepository');

const csv = require('csv-parser');
const fs = require('fs');

fs.createReadStream('./battles.csv')
    .pipe(csv())
    .on('data', (row) => {
        battleRepository.create(row);
    })
    .on('end', () => {
        console.log('CSV file successfully processed')
    });

Analisando esse trecho de código nós temos:

  • 01: estamos importando o arquivo db.js com a nossa conexão com o db
  • 02: estamos importando o nosso repository, ele será responsável pelas nossas queries.
  • 04 e 05: importando os pacotes (fs) e (csv-parser) para manipularmos o arquivo .csv
  • 07 até a 14: estamos passando o caminho do arquivo que iremos manipular -> abrindo ele -> passando os dados para o método .create do nosso repository para ele salvar os dados no db, assim que ele finalizar irá retornar a mensagem: ‘CSV file successfully processed’.

Para ficar mais clara essa etapa, comente a linha 11 do arquivo e adicione um console.log(row); no lugar, em seguida execute o comando node index.js. Abaixo você tem uma imagem demonstrando esse passo:

Note que ele passa por cada uma das linhas do arquivo e retorna cada uma deles na row. Agora descomente a linha 11 e execute o comando node index.js novamente.

Para verificar se os dados foram importados corretamente, eu irei utilizar o Robo 3T para conectar na minha base de dados. Abaixo você tem uma imagem demonstrando esse passo:

Note que todos os arquivos formam importados corretamente.

Bom, a ideia desse artigo era ser algo rápido para demonstrar como importar um arquivo .csv em um banco de dados mongoDB.

Espero que tenham gostado e até um próximo artigo pessoal.

RabbitMQ criando workers com Node.js

Introdução

Dando continuidade a minha serie de artigos sobre RabbitMQ, hoje irei apresentar uma de suas formas de implementação, os workers. Caso tenha interesse em saber um pouco mais sobre os Workers ou ler os primeiros artigos dessa série, eu recomendo a leitura dos artigos abaixo:

Para que você possa ter um melhor entendimento, eu irei criar um exemplo utilizando o Node.js e o RabbitMQ dentro de um container Docker.

O primeiro passo é ter o RabbitMQ instalado, como mencionado acima eu irei utilizar o RabbitMQ dentro de em um container Docker. Caso você ainda não tenha esse ambiente, eu recomendo a leitura do segundo link que eu passei acima, la eu demonstro como criar esse ambiente.

Criação do projeto

Abra um terminal no seu computador, em seguida escolha um local para criação do seu projeto. Navegue até ele via terminal e execute o comando abaixo:

npm init -y

Esse comando irá inicializar o seu projeto criando um arquivo chamado package.json. Agora vamos baixar o pacote do RabbitMQ. Para isso, execute o comando abaixo no seu terminal:

npm install amqplib --save

Com o projeto criado e a biblioteca do amqplib importada, vamos criar dois novos arquivos no nosso projeto.

O primeiro será o arquivo da nossa aplicação, para esse artigo eu irei chamar ele de app.js. Crie ele na raiz do seu projeto, em seguida atualize ele com o trecho de código abaixo:

var amqp = require('amqplib/callback_api');

amqp.connect('amqp://localhost:5672', function (err, conn) {
    conn.createChannel(function (err, ch) {
        var q = 'hello';
        var msg = 'Hello World 123!';
        ch.assertQueue(q, { durable: false });     
        ch.sendToQueue(q, new Buffer(msg));
        console.log(" [x] Sent %s", msg);
    });
    setTimeout(function () { conn.close(); process.exit(0) }, 500);
});

Analisando o código acima você tem:

Agora vamos criar os nossos Workers. Para isso, crie um novo arquivo chamado worker.js na raiz do seu projeto e atualize ele com o seguinte trecho de código:

var amqp = require('amqplib/callback_api');

amqp.connect('amqp://localhost:5672', function (err, conn) {
    conn.createChannel(function (err, ch) {
        var q = 'hello';

        ch.assertQueue(q, { durable: false });
        ch.prefetch(1);
        console.log(" [*] Waiting for messages in %s. To exit press CTRL+C", q);
        ch.consume(q, function (msg) {
            console.log(" [x] Received %s", msg.content.toString());
        }, { noAck: true });
    });
});

Analisando esse código você tem:

Testando o código

Agora para testar o nosso código, abra 3 terminais no seu computador, navegue até o seu projeto e siga os passos abaixo:

Terminal 01

Execute o comando abaixo para criar o seu primeiro worker:

node worker.js

Terminal 02

Execute o comando abaixo para criar o seu segundo worker:

node worker.js

Terminal 03

Execute o comando abaixo para criar a sua aplicação e enviar a primeira mensagem para sua fila.

Obs.: O RabbitMQ trabalha com o conceito de Round Robin, logo o worker 1 pode não ser o primeiro a consumir a sua fila

node app.js

Abaixo você tem um vídeo demonstrando esse passo:

O intuito desse artigo foi demonstrar como trabalhar com os Workers do RabbitMQ utilizando o Node.js. Caso tenha interesse em baixar o código desenvolvido nesse artigo, segue o seu link no meu GitHub: Node-RabbitMQ-Workers.

Espero que tenham gostado e até um próximo artigo pessoal.

O que o programador JavaScript deve saber

JavaScript é uma das principais linguagens de programação mais requisitadas no mercado de trabalho atual. No entanto, os empregadores geralmente procuram uma combinação de habilidades. Descubra o que mais você deve adicionar ao seu currículo para conseguir o seu próximo trabalho JavaScript.

A pesquisa vem do CV Compiler, uma empresa que, como o próprio nome sugere, ajuda a criar um currículo convincente para desenvolvedores e outros no setor de software. Para fornecer esta orientação, mantém-se continuamente atualizado com as demandas dos empregadores. Para esta pesquisa dos desenvolvedores de habilidades em JavaScript, a equipe do Compilador de CV precisou de 300 especificações de trabalho para desenvolvedores de JavaScript de AngelList, StackOverflow, LinkedIn e páginas de carreira de empresas de tecnologia em rápido crescimento em todo o mundo. Em seguida, usando sua própria ferramenta de análise de texto, eles identificaram os termos que foram mencionados com mais frequência e criaram este gráfico:

linguagens de programação, metodologias de programação e assim por diante. Na verdade, isso pode não ter sido a primeira coisa que você percebeu – você pode ter sido atingido pelo domínio do React. Mesmo se você permitir que qualquer abertura de trabalho para o React exija JavaScript, a demanda por essa estrutura parece ser esmagadora. Como existem apenas 300 listagens de empregos e o principal concorrente da React, Angular também tem uma alta proporção de menções, algumas aberturas precisam exigir múltiplas estruturas ou uma ou mais alternativas. Mesmo assim, o recorde de 267 da React é excelente, o Angular tem 195 pontos de crédito, enquanto o Vue apenas recebe 44 menções.

Comentando sobre isso no blog Game of Frameworks, Andrew Stetsenko escreve:

“Como você deve ter notado, o Vue.js não era tão alto em nossa classificação de habilidades. Eu acho que pode haver várias razões para isso. Primeiro de tudo, nem toda empresa está pronta para transferir seus projetos para o Vue.js e descartar soluções de front-end mais estáveis ​​e comuns. Em segundo lugar, os empregadores podem querer que os desenvolvedores aprendam o Vue.js enquanto trabalham, por isso eles não mencionam nas especificações iniciais do trabalho.”

Continue lendo “O que o programador JavaScript deve saber”

Novas atualizações Node.js 12

O Node.js recentemente lançou a versão 12 do Node.js, adicionando melhorias através da V8 JavaScript engine, melhora no desempenho de inicialização, módulos ES6, entre outros.

O projeto Node.js segue uma estratégia LTS (Long Term Support). Os desenvolvedores devem saber que as novas atualizações não estarão prontas em termos LTS até Outubro de 2019. Até lá, os desenvolvedores estão encorajados a reportar questões que eles encontrarem usando o Node.js 12, e essas questões serão resolvidas antes da versão LTS estar completa.

A versão Transport Layer Security (TLS) no Node.js está atualmente na versão TLS 1.3 por padrão, ela inclui numerosas mudanças na criação do protocolo e tornando sua configuração mais direta e segura. Mais além, a TLS 1.3 inclui melhorias no sigilo de encaminhamento e modos de criptografia mais seguros.

O Node.js 12 deixa mais fácil a configuração dos limites do heap, melhorando significativamente o desempenho ao trabalhar com grandes quantias de dados. A atualização para os limites do heap configura o tamanho do heap JavaScript como uma função de memória disponível, em lugar dos padrões V8 para navegadores da web.

Continue lendo “Novas atualizações Node.js 12”

Introdução ao Node.js

Neste post, estarei falando resumidamente sobre o que é o NodeJS, como configura-lo, alguns pontos básicos importantes e como executar um Olá Mundo.

O que é o Node.js?

O Node.js é um interpretador de código aberto do JavaScript para execução no servidor. Seu objetivo é ajudar programadores na criação de aplicações de alta escalabilidade, com códigos capazes de manipular milhares de conexões simultâneas. Criado em 2009, ele é baseado no interpretador do V8 JavaScript Engine que é um interpretador open source implementado pelo Google em C++.

Como instalar e executar o Node.js

Para começar a desenvolver com Node.js pode-se baixar a versão mais recente no site: https://nodejs.org. Após baixar e instalar ele, é bem fácil iniciar um projeto. Para configurar um projeto faça o seguinte:

  1. Abra o terminal do Node
  2. Acesse (crie se não tiver feito) a pasta que você quer colocar seu projeto
  3. Digite npm init
  4. O node irá lhe perguntar diversos dados para a criação do projeto. Caso queira deixar a configuração padrão, basta ir apertando enter até o fim. Você terá deverá ter uma lista igual a está:

    Ou caso você tenha colocado algum valor, pode ficar parecido com
  5. O node após o License, o node irá criar e exibir um arquivo Json similar a este

    Basta apertar OK
  6. Agora sua pasta conterá um projeto com um arquivo chamado package.json com os dados do objeto acima
  7. Sem fechar o terminal (ou abrindo o terminal de sua IDE/Editor) abra o projeto no e crie dentro dele o arquivo index.js com o seguinte código:
    console.log("Olá Mundo");
  8. Não esqueça de salvar o arquivo.
  9. Por último, no terminal digite node index.js e você deverá ver a frase “Olá Mundo”.

Com isso concluímos o tutorial de introdução ao node.js e como rodar um olá mundo. Espero que a postagem tenha ajudado e caso alguém queira aprender o setup de algo mais complexo, escreva nos comentários abaixo.

Stack Overflow Survey: JavaScript ganha linguagem mais popular

Para aqueles que acompanham as pesquisas do Stack Overflow, saiu recentemente os resultados da pesquisa de 2019. Está é a maior e mais abrangente pesquisa do mundo para envolver programadores e suas preferências. A edição de 2019 desta pesquisa tocou cerca de 90.000 desenvolvedores.

Do que toca o JavaScript, a linguagem ficou em 1º lugar em popularidade entre todos os tipos de linguagem (programação, marcação, query, etc…). Este é o 7º ano seguido!!

Para uma listagem completa acesse: https://insights.stackoverflow.com/survey/2019#technology-_-programming-scripting-and-markup-languages


Outros resultados interessantes para o mundo JavaScript são os resultados sobre os frameworks web e é possível ver através da imagem abaixo que os frameworks para JS estão muito fortes:

Acesse: https://insights.stackoverflow.com/survey/2019#technology-_-web-frameworks

Por último, na categoria outros frameworks, bibliotecas e ferramentas, temos mais um representate de peso em 1º lugar e diversos com um bom posicionamento:

Para a listagem completa da imagem acima, acesse: https://insights.stackoverflow.com/survey/2019#technology-_-other-frameworks-libraries-and-tools


Os resultados da pesquisa são bem mais abrangentes que os 3 itens mostrados acima, vale apenas acessar o link oficial do Stack Overflow e conferir todos os detalhes, como linguagens que maid adoradas/odiadas, IDEs e outras pesquisas que eles fizeram para você saber melhor como estão as opiniões dos profissionais da area em relação as tecnologias atuais.