Skip to content

placidodaniel/development-tips

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 

Repository files navigation

development-tips - Dicas úteis que fui coletando para auxiliar no dev.

Fique a vontade para contribuir!

Flutter

  1. Verificando emulators instalados pelo Android Studio
flutter emulators
  1. Executando Emulator:
flutter emulators --launch "Xaiomi_4GB_API_29_Android_10"
  1. Verificando ID do emulator conectado
flutter devices
  1. Executando aplicativo com o ID do device conectado:
flutter run -d "emulator-5554"

NodeJS

Criando aplicação com nodejs:

  1. Cria o arquivo package.json -> Guarda as dependências do projeto em package.json
> npm init -y 
  1. Cria primeira dependência. Express é um microframework que trata rodas e views
> npm install express  
  1. Executar a aplicação, criando um servidor.
> node server.js
  1. Dependencia de desenvolvimento -D, nodemon faz que não precise reiniciar o server cada vez que altera ele, por isso a dependência de desenvolvimento
> npm install -D nodemon 
  1. Criado em package.json uma dependencia que só roda em dev, e criada a tag "dev" em "scripts"
> npm run dev 

Python

Como alterar a versão padrão do Python no Linux

  1. Se você tem mais de uma versão do python instalada no Linux e quer ter uma padrão ou precisa ficar mudando, basta utilizar o comando abaixo de acordo com a versão que você deseja:
> sudo ln -sf /usr/bin/python3.6 /usr/bin/python

Docker

Instalando o Mongo por meio do docker e utilizando no NodeJs

  1. Baixa a ultima versão do mongodb
> docker pull mongo
  1. Configurando container para rodar na porta 27017 (Porta Local : Porta do Container) com o nome 'mongodb'. Veja os parâmetros utilizados abaixo no comando docker run:

--name = nome da container que esta sendo criado.

-p = redirecionamento de porta, toda a vez que acessar a porta 27017 da minha maquina acessa a porta 27017 mongodb.

-d = qual imagem se deseja utilizar (No caso baixamos a imagem do mongo).

> docker run --name mongodb -p 27017:27017 -d mongo
  1. Testando se os container foram criados com sucesso. O comando abaixo retorna todas as imagens do docker, inclusive as que estão paradas:
> docker ps -a 
  1. Para iniciar ou parar um container bastar usar os seguintes comandos respectivamente:
> docker start 'nomecontainer'
> docker stop 'nomecontainer'
  1. Para testar o mongo, basta ir em https://robomongo.org/ e fazer download do robo3t.
  2. Instalando dependencia no projeto NodeJs para conectar o mongodb:
> npm install mongoose 
  1. Faz o papel do require em um diretorio em todos os arquivos automaticamente. Muito útil:
> npm install require-dir 
  1. Modulo para paginar registros do mongo:
> npm install mongoose-paginate  
  1. Modulo de autenticação no mongo:
> npm install cors

Acessando terminal container do docker

  1. no terminal (Windows ou Linux) execute o seguinte comando:
> docker exec -it nomedocontainer bash

Vendo os logs de um container do docker

  1. no terminal (Windows ou Linux) execute o seguinte comando:
> docker logs -f --tail=100 nomedocontainer 

-f = fica escutando o arquivo de logs.

--tail=100 = Mostra os 100 últimos registros de logs.

Vendo o volume configurado de um container do docker

  1. no terminal (Windows ou Linux) execute o seguinte comando:
> docker volume inspect nomedocontainer 

Copiando arquivo ou diretorio do container para maquina local no docker:

  1. no terminal (Windows ou Linux) execute o seguinte comando:
  • Copiando Diretório Completo
docker cp nomeimagem:/home/repositorioRemoto /home/repositorioLocal
  • Copiando Arquivo
docker cp nomeimagem:/home/arquivoRemoto.csv /home/repositorioLocal

Dias úteis ⭐️

https://yarnpkg.com/ - Ferramenta parecida com npm para gestão de pacotes mais veloz.

ReactJS

  1. Criando uma aplicação reactenative. Também resolve os problemas por navegadores que não suportam novas alterações no versionamento do javascript.
> npm install -g create-react-app
  1. Da um nome para o projeto criado chamado 'nomeprojeto'. Utilizar sem aspas:
> create-react-app 'nomeprojeto' 
  1. Startar aplicação:
> npm start
  1. Biblioteca para acessar uma api do react native para o backend:
> yarn add axios
  1. Adiciona biblioteca para trabalhar com rotas
> yarn add react-router-dom

Configurando postgres com docker, entendendo todos os parâmetros que são passados ao container docker com a imagem do postgres.

> docker run --name rede-postgres -e "POSTGRES_PASSWORD=Postgres2020!" -itd --shm-size=1g -p 5432:5432 -v E:\Users\daniel\apps\postgres\db:/var/lib/postgresql/data -d postgres
  • O atributo name especifica o nome do container a ser gerado (teste-postgres);
  • No atributo POSTGRES_PASSWORD foi indicada a senha do administrador (para o usuário default postgres);
  • O atributo -p indica a porta (5432) em que se dará a comunicação com o PostgreSQL, a qual será mapeada para a porta default (5432) deste SGBD dentro do container, ou seja, porta externa(localhost) para porta interna (Dentro do container);
  • Através do atributo -v foi criado um volume, especificando assim o diretório no Ubuntu Desktop em que serão gravados os arquivos de dados (E:\Users\daniel\apps\postgres\db);
  • Quanto ao atributo -d, este parâmetro determina que o container em questão será executado como um serviço em background;
  • Temos indicada ainda a imagem utilizada como base para a geração do container (postgres).

Linux

Configurando servidor Linux do Zero

  1. Acesse o servidor com o usuário root e crie um usuário. Por exemplo usuário deploy.
adduser deploy 
  1. Dando permissão de sudo para o usuário deploy.
usermod -aG sudo deploy
  1. Configurando sua chave SSH em sua máquina para acessar o servidor linux por meio do terminal linux:
ssh-keygen -t rsa
  1. (Opcional) Se você quiser acessar um usuário específico sem ter a senha com o modo root, use:
sudo su deploy

Depois de inserir este comando, algumas novas perguntas aparecerão:

Insira o arquivo no qual deseja salvar a chave (/home/user/.ssh/id_rsa):

Geralmente, recomenda-se simplesmente deixá-lo como está (pressione ENTER sem digitar nada) para que o gerador de chaves possa criar o par de chaves no local padrão (neste tutorial eu inseri um nome diferente tut_id para evitar chaves duplicadas, (o dispositivo já tinha um id_rsa chaves geradas). As duas primeiras perguntas que aparecerão:

Introduza a frase de acesso (empty for no passphrase). Então introduza a mesma frase novamente.

Agora por razões de conveniência, eu gosto de deixar os vazios também. Dessa forma, depois de definir as teclas para cima com o seu servidor remoto, você não precisará usar qualquer tipo de senha para o login. Você simplesmente digita o comando ssh user@serverip e ele irá fazer o login enquanto as chaves são corretamente configuradas. Mas se você precisar de mais segurança, digite uma frase-senha nesta seção. Se escolher esta opção, terá de introduzir a palavra-passe sempre que ligar ao dispositivo remoto.

IMPORTANTE! Existem duas chaves criadas aqui (PRIVATE e PUBLIC): tut_id e tut_id.pub (no seu caso, deve ser id_rsa e id_rsa.pub). Tome muito cuidado com o arquivo chamado id_rsa (esta é a chave PRIVATE), tenha apenas em seu dispositivo local e não dê a NINGUÉM. 4. Copiando a chave pública para o servidor remoto Depois de gerar o par de chaves RSA, temos que colocar nossa chave pública no servidor virtual remoto. Há um comando simples que colocará sua chave pública diretamente no arquivo do authorized_keys do servidor remoto (este arquivo mantém todas as chaves públicas:

ssh-copy-id user@serverip
  1. Configurando permissões (no servidor com o usuário deploy). Na pasta /home/user/.ssh de as permissões da seguinte forma:
chmod 600 authorized_keys 
cd ..
chmod 700 .ssh
  1. Instalando o docker no Linux. Realizar este comando com o usuário deploy.
sudo apt install docker.io
  1. Dando permissão para o usuário deploy trabalhar com o docker. Realizar este comando com o usuário deploy.
usermod -aG docker deploy 
  1. Criando máquina docker postgresdb com o nome 'database' (Guarde a senha passada e nunca utilize ela)
docker run --name database -e POSTGRES_PASSWORD=senha -p 17863:5432 -v /docker/postgresql:/var/lib/postgresql/data --restart always -d -itd --shm-size=1g postgres
  1. Acessando máquina docker criada, criando primeiro banco de dados e configurando usuario para o banco.
docker exec -it database /bin/bash
su postgres
psql
CREATE DATABASE empresas;
CREATE USER appemp WITH ENCRYPTED PASSWORD='senha';
GRANT ALL PRIVILEGES ON DATABASE empresas TO appemp;

9.1 Permitindo função 'unaccent' no database Postgres: Acessando a máquina onde o postgres esta instalado, executar o seguinte comando:

psql
\c database //Conectando o database que se deseja instalar a função
CREATE EXTENSION unaccent;
  1. Se necessário copiar arquivos do servidor para a máquina docker. Duvidas, documentação do docker.
docker cp /home/deploy/file.csv database:/dados/file.csv
  1. Se necessário copiar arquivos de sua máquina para o servidor:
rsync -avzP -e 'ssh -p22' arquivo.csv deploy@ipservidor:/home/deploy
  1. Instalando o PM2: O PM2 é um gerenciador de processos para nodejs. Para instalar, basta:
sudo npm install -g pm2

Pegar o endereço bin do node:

npm global bin

Editar o arquivo de inicialização do Linux

vim ~/.bashrc

Adicione o código abaixo na última linha do script:

export PATH="$(npm bin):$PATH"

Rodar a alteração salva

source ~/.bashrc

Abaixo Segue os comandos para rodar para que sempre que o servidor reiniciar, o PM2 reinicie juntamente com o servidor.

pm2 startup ubuntu -u deploy
sudo env PATH=$PATH:/usr/bin pm2 startup ubuntu -u deploy --hp /home/deploy
  1. Inslando o NGINX O NGINX é um servidor de proxy reverso. Ele serve para redirecionar um endereço para um local ou porta especifico. Para instalar, com o usuário root:
apt install nginx
cd /etc/nginx/sites-available/

Configuração Padrão NGINX

server {
  server_name testdeploy.rocketseat.com.br;

  location / {
    proxy_pass http://127.0.0.1:3333;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_cache_bypass $http_upgrade;
  }
}

14.Instalando um certificado SSL Gratuito: Acessar o site: https://letsencrypt.org/ e o site https://certbot.eff.org/ em outra aba.

Informe o servidor e o sistema operacional (NGINX e UBUNTU Versão)

  1. Instalando o redis com docker --appendonly yes: Configuração para redis persistente.
sudo docker run --restart=always -p 6379:6379 -v /docker/redis:/data --name redis -d redis redis-server --requirepass Redis2019! --appendonly yes 
  1. Instalando o apenas o redis-cli no seu Linux
sudo apt-get install redis-tools
  1. Instalando o wordpress com mysql, via docker-compose:
  • Crie o arquivo docker-compose.yml conforme exemplo abaixo:
version: '2'
services:
   db:
     image: mysql:latest
     volumes:
       - /home/user/docker/mysql:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
  • Salve arquivo, depois, no diretório onde foi criado, digite o comando:
docker-compose up -d

Pronto!!!

https://www.youtube.com/watch?v=ICIz5dE3Xfg

Resolvendo problema com "pq: could not resize shared memory segment. No space left on device" no postgre:

https://medium.com/@shanikanishadhi1992/how-to-resolve-error-could-not-resize-shared-memory-segment-postgresql-no-space-left-on-device-8344c0ed3272

Resolvendo problemas de pacotes quebrados.

  1. Se você já tentou de tudo e não conseguiu resolver seu problema com pacotes quebrados no linux, utilize o comando abaixo, removendo os pacotes recursivamente (Do último para o primeiro em termos de dependência).
sudo dpkg --remove --force-remove-reinstreq nome_pacote
sudo apt update

Reduzindo tamanho de um PDF por meio do GS do linux

sudo apt install ghostscript
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/prepress -dNOPAUSE -dQUIET -dBATCH -sOutputFile=compressed_PDF_file.pdf input_PDF_file.pdf

dPDFSETTINGS Description

/prepress (default) Higher quality output (300 dpi) but bigger size

/ebook Medium quality output (150 dpi) with moderate output file size

/screen Lower quality output (72 dpi) but smallest possible output file size

Ambiente de desenvolvimento java no Visual Studio.

  1. Instale os seguintes aplicativos.

git https://git-scm.com/download/win

node https://nodejs.org/en/

jdk https://www.oracle.com/technetwork/ja...

Visual Studio Code https://code.visualstudio.com/

Visual Studio Code Extensions

https://www.youtube.com/redirect?v=vDCGeZehtQg&event=video_description&q=https%3A%2F%2Fblog.bitsrc.io%2Ftop-10-vs-code-extensions-for-frontend-developers-in-2018-7992282db2ca&redir_token=NtqaCMhqeQQlZV7Brxn30l7tSx98MTU5MDQxMjgyOEAxNTkwMzI2NDI4

https://www.youtube.com/redirect?v=vDCGeZehtQg&event=video_description&q=https%3A%2F%2Fonextrapixel.com%2Fbest-visual-studio-code-extensions%2F&redir_token=NtqaCMhqeQQlZV7Brxn30l7tSx98MTU5MDQxMjgyOEAxNTkwMzI2NDI4]

git

Para clonar um repositório:

git clone git clone <url-do-repositorio-do-projeto>

Para clonar um branch especifico

git clone -b minhaBranch git@github.com:user/myproject.git

Para alternar para um branch especifico:

git checkout -b <nome-do-seu-branch-local> origin/<nome-do-branch-remoto>

Para criar um branch local

git checkout -b <nome-do-seu-branch-local>

Copiar um arquivo de uma branch especifica para outra branch

git restore --source DEV -- caminho/arquivo/arquivo.txt

Para atualizar um repositório já existente para outro novo:

Remova a pasta .git do diretório principal do repostório, em seguida, execute os seguintes comandos.

git init
git remote add origin https://github.com/placidodaniel/REPOSITORIO.git
git add .
git commit -m "first commit"
git branch -M main
git push -u origin main

heroku

Como fazer deploy de uma aplicação com node no heroku:

Caso queriam estudar como fazer uma plublicação de uma aplicação desenvolvida com nodejs, basta seguir a explicação abaixo:

https://devcenter.heroku.com/articles/getting-started-with-nodejs

scale aplication heroku:

heroku ps:scale web=0 
heroku ps:scale web=1 

Rabbitmq

Como habilitar os módulos do rabbit, permitindo console de administração.

Para instalar via docker:

mkdir -p /docker/rabbitmq/data
docker run -d --name rabbitmq  -p 5672:5672  -p 15672:15672  --restart=always  --hostname rabbitmq-master  -v /docker/rabbitmq/data:/var/lib/rabbitmq  rabbitmq
docker exec -it rabbitmq /bin/bash
rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_shovel rabbitmq_shovel_management

Instalando Versão com gerenciador web

docker run -d --name rabbitmq -p 2672:5672 -p 25672:15672 --restart=always --hostname rabbitmq-master -v /docker/rabbitmq/data:/var/lib/rabbitmq rabbitmq:3-management

PHP com Laravel

  1. Instalando o apache no Ubuntu:
sudo apt install apache2=2.4.29-1ubuntu4.21
sudo a2enmod ssl
sudo a2enmod rewrite
  1. Instalando o php no ubuntu:
sudo apt -y install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt -y install php7.4 libapache2-mod-php7.4 php7.4-mysql php7.4-xml php7.4-mbstring unzip php7.4-zip
  1. Instalando o composer no Ubuntu:
curl -sS https://getcomposer.org/installer -o composer-setup.php
HASH=`curl -sS https://composer.github.io/installer.sig`
echo $HASH #conferir se o hash bate com o site do composer, evitando possíveis versões hackeadas ou corrompidas
php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" 
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
composer #testar se esta executando o composer via comando.
  1. Supervisor no Ubuntu:
sudo apt update && sudo apt install supervisor
sudo systemctl status supervisor
  1. Permissão do projeto Laravel:
sudo addgroup ci web 
sudo addgroup www-data web
sudo chmod www-data:web storage/ -R
  1. Criando um projeto com Laravel no Ubuntu, setando uma versão especifica:
composer create-project --prefer-dist laravel/laravel:^7.0 nome-projeto
  1. Entendendo o projeto do Laravel.

6.1. Pasta app é onde tudo acontece;

6.1.1. Pasta middleware é a funcionalidade que fica entre o backend e o frontend, podem ser feitas validações aqui, como validações de acesso;

6.1.2. Pasta controllers é onde ficam os controllers do projeto;

6.2. Pasta resources é onde ficam as views do projeto; 6.2.1. O blade é uma ferramenta para escrever o PHP na página do frontend. Facilita muito para utilização por meio de designers escreverem o código HTML junto com as rotinas de desenvolvimento.

  1. Rodando o projeto em Laravel. Dentro do diretório do projeto, execute o seguinte comando:
php artisan serve
  1. Rotas no Laravel: As rotas são configuradas no diretório routes. 8.1. Arquivo api.php configura as rotas de api, exemplo: APIs do Google. 8.2. Arquivo web.php configura as rotas de endereços web. Exemplo: Site de usuários

  2. Instalando o Laravel 5 - Repository

composer require prettus/l5-repository

Atualizar o google chrome no ubuntu.

sudo apt-get --only-upgrade install google-chrome-stable^

Fazendo backup de bancos gigantes no postgres

sudo pg_dump --host localhost --port 5863 --username username --format c -d empresas --file /home/deploy/backup_db_29062021.backup

Tenho Dúvidas... O que Faço?! ❓

Caso tenham dúvidas ou sugerirem dicas ou correções, sintam-se a vontade em abrir uma ISSUE AQUI. Assim que possível, estarei respondendo as todas as dúvidas que tiverem!

Releases

No releases published

Packages

No packages published