Usando variáveis de ambiente no Node.js

As variáveis de ambiente (environment variables) são aquelas definidas fora do código de nossa aplicação, mas que mesmo assim podemos fazer uso delas.

Elas são armazenadas como ‘chave-valor’ num arquivo em separado, do tipo texto, que pode ser facilmente editado, de acordo com a nossa conveniência, sendo bastante úteis para configuração de ambiente operacional, onde podemos guardar definições de caminhos de arquivos, bancos de dados, URL, chaves de autenticação etc., pois seus valores podem ser alterados a qualquer momento, sem que precisemos recompilar a aplicação.

No Node.js podemos facilmente utilizar essas variáveis através do objeto process.env, que é um objeto global e, por isso, pode ser acessado em qualquer módulo da aplicação.

Existem várias formas para definição e leitura de variáveis de ambiente, mas neste artigo trataremos do uso do pacote dotenv, um módulo de dependência que carrega as variáveis de ambiente a partir de um arquivo texto externo à aplicação diretamente no objeto global process.env do Node.js.

A instalação pode ser feita usando o npm ou yarn, conforme comandos a seguir:

Figura 1. Comando de instalação do pacote dotenv usando o NPM.
Figura 2. Comando de instalação do pacote dotenv usando o Yarn.

Após a instalação do pacote dotenv na pasta raiz do projeto, devemos criar um arquivo chamado .env, que armazenará nossas variáveis de ambiente, conforme figura 3.

Figura 3. Aspecto de uma estrutura de projeto Node.js, onde vemos o arquivo .env na pasta raiz do projeto e seu conteúdo.

👉 Por convenção, uma variável de ambiente deve ser escrita com letras maiúsculas e seu valor não deve estar entre aspas.

No arquivo de definição da aplicação (app.ts, por exemplo) importamos o módulo dotenv usando um require antes de qualquer outro código, conforme código da figura 4.

Figura 4. Típico arquivo app.ts, onde importamos o módulo dotenv usando o require.

Com a importação do módulo dotenv, podemos ler qualquer variável de ambiente contida no arquivo .env, a partir do objeto process.env, conforme código de exemplo contido na figura 5, onde lemos a variável de ambiente HTTP_PORT.

Figura 5. Leitura da variável de ambiente HTTP_PORT, a partir de process.env.

⚠️ Para concluir, é importante lembrar do cuidado em se armazenar dados sensíveis no arquivo .env, como senhas de bancos de dados e chaves de criptografia. Por essa razão é altamente recomendável incluir a referência ao arquivo .env no arquivo .gitignore.

Renomeando arquivos de banco de dados no SQL Server

Renomear arquivos de bancos de dados no SQL Server não é como renomear um arquivo .DOCX do Word. Alguns procedimentos precisam ser seguidos para preservar a integridade do banco de dados. Abaixo descrevo como eu realizo tais procedimentos.

Primeiramente, no SQL Server Management Studio, renomeio o banco de dados desejado diretamente no Object Explorer, utilizando o menu de contexto, conforme figura 1.

Figura 1. Renomeando o banco de dados no Object Explorer do SSMS.

Após a execução do comando, o banco de dados deverá ser exibido com o novo nome, conforme figura 2.

Figura 2. Banco de dados renomeado no Object Explorer do SSMS.

Se isso fosse o bastante seria bom demais. Mas não é assim que funciona (a não ser que você não se importe em ter um nome físico do arquivo de banco de dados diferente do nome apresentado no Object Explorer, o que não é o meu caso). Meu desejo é ter o mesmo nome do banco de dados, tanto lógica como fisicamente, então o primeiro passo já foi feito. Vamos em frente!

Antes, porém, vou mostrar que apenas o procedimento acima não foi o bastante resolver a questão. Para isso, novamente no Object Explorer, utilizo o menu de contexto para exibir as propriedades do banco de dados que acabei de renomear, conforme figura 3.

Figura 3. Exibindo as propriedades do banco de dados no SSMS.

A janela de propriedades do banco de dados é apresentada. Clique na opção Files e preste atenção aos detalhes na figura 4.

Figura 4. Database Properties.

Mesmo indicando que as propriedades são do banco de dados renomeado para NOVO_NOME, as propriedades Logical Name e File Name permanecem como antes: NOME_ATUAL.

Depois de muito pesquisar, encontrei uma dica na Internet num post de 2009 do blog dba-sqlserver.blogspot.com e foi dessa dica que consegui resolver o meu problema e publicar este post.

💡 Dica: O script abaixo exibe os nomes lógico e físico do banco de dados.

Figura 5. Script para mostrar os nomes lógico e físico do banco de dados.

Repare que mesmo já tendo alterado o nome do banco de dados para NOVO_NOME, via Object Explorer, o resultado da execução do script acima mostra que os nomes lógico e físico ainda se mantêm como antes.

Figura 6. Resultado da execução do script para mostrar os nomes lógico e físico do banco de dados.

Partindo para a resolução do problema, os procedimentos, a partir deste ponto, são divididos em três fases: 

Fase 1 – Execução do script abaixo.

Figura 7. Script para definir novos nomes para os arquivos de dados e log do banco de dados.

Fase 2 – Renomeação dos arquivos .MDF e .LDF usando os comandos para renomear arquivos do Windows, via Windows Explorer ou Prompt de Comando.  

Fase 3 – Execução do script abaixo.

Figura 8. Script para reativar o banco de dados após renomeados os arquivos físicos.

Pronto! Se tudo ocorreu bem, ao executar novamente o script da figura 5 o resultado final deverá ser mostrado conforme imagem abaixo.

Figura 9. Resultado final mostrando os arquivos devidamente renomeados.

Este foi meu primeiro post sobre minha experiência como DBA usando o SQL Server. Que seja o primeiro de muitos outros que possam agregar conhecimento a respeito deste fantástico sistema gerenciador de bancos de dados.

Ingenuity faz história: o primeiro voo em Marte

Mais um marco histórico da genialidade humana na exploração espacial. A NASA confirmou que realizou com sucesso o primeiro voo de um artefato humano em outro planeta nesta segunda-feira, 19/04/2021.

O voo do Ingenuity foi autônomo. Ele voou por sistemas de orientação, navegação e controle a bordo, executando algoritmos desenvolvidos pela equipe do JPL da NASA.

Sombra do Ingenuity projetada no solo marciano quando planava a 3 metros de altura.

Como os dados devem ser enviados e devolvidos do Planeta Vermelho ao longo de centenas de milhões de quilômetros usando satélites em órbita e a Rede de Espaço Profundo da NASA, o Ingenuity não pode ser pilotado com um joystick, e seu voo não foi observável da Terra em tempo real.

Primeiro voo em Marte com o Ingenuity.

Outro fato também histórico: Na semana passada, durante os testes iniciais, um problema no software fez com que o helicóptero não conseguisse atingir a rotação mínima de 2400 rpm necessária para realização do voo. Corrigido o problema no algoritmo aqui na Terra, foi realizado o primeiro upload de uma versão completa de controle de um artefato em outro planeta, a uma taxa de transmissão de 0,4 Mbps. Depois dos testes no final de semana, o Ingenuity conseguiu atingir os requisitos, ficando pronto para o voo inaugural que aconteceu hoje.

De parabéns a NASA por mais uma missão inédita com sucesso e que, com certeza, abrirá as portas para novas missões com fins específicos de realização de sobrevoos em Marte.

Mais um grande feito da genialidade humana: tocamos num asteroide

Mais um grande feito da genialidade humana foi concretizado hoje, 20/10/2020.

A NASA conseguiu realizar com sucesso a manobra de “Touch-And-Go” (TAG) de sua sonda – OSIRIS-REx – no asteroide Bennu, que atualmente se encontra a mais de 320 milhões de KM da Terra.

Imagem 1. Concepção artística da sonda OSIRIS-REx orbitando o asteroide Bennu. Crédito da imagem: NASA.

O TAG é o procedimento em que a nave praticamente toca o solo do asteroide – que tem baixíssima gravidade – para em seguida disparar jatos de gás nitrogênio com o objetivo de levantar fragmentos de rochas e outros materiais para coleta com o seu braço robótico.

O processo de análise para confirmar se realmente o procedimento foi suficiente para a coleta mínima necessária – 60 gramas – de material pode levar até uma semana, mas independente do resultado o feito de hoje foi histórico. Uma vez confirmada a coleta necessária de material, a nave iniciará seu retorno à Terra, com previsão de chegada em 2023, quando os cientistas terão acesso ao material.

Imagem 2. Braço da sonda próximo à superfície do asteroide, em manobra de teste de aproximação realizada anteriormente. Crédito da imagem: NASA.

A sonda OSIRIS-REx possui reserva para realizar mais outras duas tentativas de coleta, caso a manobra de hoje não tenha conseguido amostras suficientes.

“Este foi um feito incrível – e hoje avançamos tanto na ciência quanto na engenharia e em nossas perspectivas para futuras missões para estudar esses misteriosos antigos contadores de histórias do sistema solar”, disse Thomas Zurbuchen, administrador associado da Diretoria de Missões científicas da NASA na sede da agência em Washington. “Um pedaço de rocha primordial que testemunhou toda a história do nosso sistema solar pode agora estar pronto para voltar para casa por gerações de descobertas científicas, e mal podemos esperar para ver o que vem a seguir”.

Figura 3. Momento em que a equipe do comando da missão, na NASA, recebeu os dados de telemetria confirmando a manobra com sucesso da sonda OSIRIS-REx.

O objetivo da missão da sonda OSIRIS-REx é chegar a Bennu – um asteroide próximo da Terra – e trazer uma pequena amostra de seu material de volta para estudo em nosso planeta. A missão foi lançada em 8 de setembro de 2016, a partir da Estação da Força Aérea do Cabo Canaveral. Como planejado, a espaçonave chegou a Bennu em 2018 e devolverá uma amostra a Terra em 2023.

Imagem 4. Sonda OSIRIS-REx realizando mapeamento completo no asteroide, desde a sua chegada em 2018, para definição do melhor local para o TAG. Crédito da imagem: NASA.

O asteroide Bennu oferece aos cientistas uma janela para o Sistema Solar primitivo, pois ele se formou há bilhões de anos e pode conter ingredientes primitivos que podem ter ajudado a semear a vida na Terra. A missão é um projeto conjunto da NASA e da Universidade do Arizona.

Imagem 5. Bennu é um asteroide próximo da Terra e atualmente está distante de nós 320 milhões de quilômetros, ou seja, mais de duas vezes a distância da Terra ao Sol. Crédito da imagem: NASA.

“A manobra TAG de hoje foi histórica”, disse Lori Glaze, diretora da Divisão de Ciência Planetária na sede da NASA em Washington. “O fato de termos tocado com segurança e sucesso a superfície de Bennu, além de todos os outros marcos que esta missão já alcançou, é um testemunho do espírito vivo de exploração que continua a descobrir os segredos do sistema solar.”

São acontecimentos como este que mostra a capacidade e a genialidade humana aplicada em prol do conhecimento científico na busca de respostas sobre a origem de nosso sistema solar e dos processos de criação dos planetas e até mesmo da vida. São acontecimentos como este que salvam o ano de 2020. 👍

Fonte: informações obtidas do site oficial da NASA.

2020: O ano para adotarmos o verdadeiro comportamento digital

O dado de um relatório da Panorama Research deste ano (2020) deixou-me boquiaberto e pensativo: Apenas 4% das organizações brasileiras possuem comportamento digital! Inacreditável, né? 😮

Em plena era da informação, infelizmente para muitos, a condição de se ter um verdadeiro comportamento digital parece ser algo além de suas capacidades. Para esses, até mesmo considerar seus smartphones como instrumentos de apoio às atividades cotidianas pessoais e profissionais é algo inimaginável ou complicado demais. Para essas pessoas, mais cedo ou mais tarde, chegará o momento da cobrança pela falta de adaptação ao mundo digital.

Mas, e as organizações? Podem se dar ao luxo de escolher estar ou não em sintonia com as exigências da era da informação e do conhecimento? Sobreviverão fora desse contexto? O dado bastante representativo – negativamente falando – da pesquisa da Panorama Research e o caos em termos logísticos que vivenciamos durante a crise da pandemia da COVID-19 parecem confirmar a perigosa situação em que nos encontramos.

O pânico que tomou conta de todos com relação à COVID-19 – em especial no momento de pico da pandemia – não deveria ter afetado tão negativamente a logística das organizações, caso as mesmas possuíssem o chamado ‘comportamento digital’.

Home Office: um modelo de trabalho eficientemente comprovado no mundo todo e que pode atingir grande parcela dos setores das organizações, contribuindo para a adoção da cultura digital.

No Brasil, infelizmente, por trás da onda politizada do “fique em casa” também se instalou a onda do “parar de trabalhar e de estudar”, até que a desacreditada OMS (Organização Mundial de Saúde) possa decretar o fim da pandemia, mesmo quando uma parcela significativa da força de trabalho das organizações poderia simplesmente ter migrado imediatamente a logística de trabalho para o modelo de home office (uma realidade em várias empresas no mundo todo, desde antes da pandemia de 2020). Em relação às escolas e universidades, a adoção imediata do modelo de ensino à distância (algo existente há décadas, antes mesmo da era da Internet) deveria ter sido a atitude correta a se adotar. Mas não foi o que aconteceu. Não havia o preparo digital mínimo das pessoas e nem das organizações. A crise de 2020 mostrou o quanto a maioria das organizações possui uma cultura ainda distante daquilo exigido num comportamento digital: preparação e estratégia.

A maior parte do modelo de ensino no Brasil pode adotar os recursos digitais e o ensino à distância.

Em outro estudo recente (2020) do Grupo Cia de Talentos, os dados revelam que somente 36% dos profissionais de alta liderança “acreditam” que suas organizações têm culturas digitais. E isso é pouco. O despreparo é grande. E a falta de investimento no desenvolvimento dos colaboradores também. Segundo o Banco Mundial, apenas 3% das organizações investem no desenvolvimento de seus colaboradores.

Independente do ramo, as organizações devem pensar seus negócios a partir de um ponto de vista tecnológico e que levem em conta os comportamentos digitais no dia a dia, desenvolvendo, de forma natural, uma cultura organizacional voltada para o mundo de hoje e preparada, estrategicamente, para um mundo de amanhã cada vez mais digital.

Esta minha análise e opinião foi baseada a partir da leitura de um editorial da EximiaCo.