Herramientas para mejorar la terminal
ArturoLG
Posted on June 2, 2020
Mejora tu entorno de desarrollo
Docker
La mejor opción para instalar Docker en MacOS es descargar el paquete '.dmg' desde la página oficial: https://www.docker.com/get-started
La última versión de Docker se encuentra en el siguiente enlace:
https://download.docker.com/mac/stable/Docker.dmg
Si el docker-compose se pone lento, aplicar la siguiente configuración en el archivo "/etc/hosts":
$ sudo -H vim /etc/hosts
, agregar la siguiente línea:
127.0.0.1 localhost localunixsocket
Si es necesario autenticarse descargar imágenes de docker usar el siguiente comando:
$ docker login --username {USERNAME}
Instalar Homebrew
El sitio de Homebrew es https://brew.sh, solo hay que ejecutar el siguiente script:
Probar primero la instalación con ruby:
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
,
si no funciona primero hay que instalar Git: https://git-scm.com/download/mac
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Para instalar Homebrew se requiere Xcode, verificar si está instalado con el comando:
$ xcode-select --install
Al finalizar es necesario instalar los paquetes para el entorno
$ brew update
Verificar que toda la instalación sea correcta
$ brew doctor
Instalar Git
Usando brew instalamos el paquete de git para Mac:
$ brew install git
Es recomendable instalar la herramienta Git Flow:
$ brew install git-flow
Configurando Git
El sistema tiene 3 capas denominadas local, global y de sistema, las configuraciones de cada capa se encuentran en los siguientes archivos:
- Local:
{repositorio}/.git/config
- Global:
Users/{usuario}/.gitconfig
- System:
/usr/local/etc/gitconfig
Primero configuramos la capa global con los datos del desarrollador
- Nombre:
$ git config --global user.name "{NAME}"
- Correo:
$ git config --global user.email "{EMAIL}"
Ahora modificamos los datos del editor Visual Code Studio:
$ git config --global core.editor "code --new-window --wait"
Diff y Merge tools
Editamos el archivo de configuración:
$ git config --global -e
Agregar la configuración:
[diff]
tool = vscode-diff
[difftool]
prompt = false
[difftool "vscode-diff"]
cmd = code --wait --diff $LOCAL $REMOTE
[merge]
tool = vscode-merge
[mergetool]
KeppBackup = false
[mergetool "vscode-merge"]
cmd = code --wait $MERGED
Para probar DiffTool y MergeTool, es necesario tener un repositorio con cambios en staging y ejecutamos los siguientes comandos respectivamente:
$ git difftool
$ git mergetool
Git Aliases
Comandos de Git más fáciles de recordar:
git status: 'git st'
$ git config --global alias.st status
git status --short: 'git ss'
$ git config --global alias.ss 'st --short'
git config --global -e: 'git egc'
$ git config --global alias.egc 'config --global -e'
git config --local -e: 'git elc'
$ git config --global alias.elc 'config --local -e'
git config --system -e: 'git esc'
$ git config --global alias.esc 'config --system -e'
git checkout: 'git co'
$ git config --global alias.co 'checkout'
git branch: 'git br'
$ git config --global alias.br 'branch'
git commit: 'git co'
$ git config --global alias.ci 'commit'
git commit --amend: 'git amend'
$ git config --global alias.amend 'co -a --amend'
git push --set-upstream origin develop: 'git pdev'
$ git config --global alias.pdev 'push --set-upstream origin develop'
git push --set-upstream origin master: 'git pmaster'
$ git config --global alias.pmaster 'push --set-upstream origin master'
Instalar otras herramientas
Línea de comandos para procesar archivos json
$ brew install jq
Instalar java con Homebrew:
$ brew install java
Esta forma más simple de instalar java, pero es recomendable instalar los JDK's con SDKMan: https://sdkman.io
Java con SDKMan
Realizar la instalación de la herramienta SDKMan con el siguiente comando:
$ curl -s "https://get.sdkman.io" | bash
Actualizamos la terminal para que se inicialice la herramienta
$ source "$HOME/.sdkman/bin/sdkman-init.sh"
Instalamos la ultima versión de Java, Grails, Groovy, Micronaut, SpringBoot y VisualVM
$ sdk install java
$ sdk install grails
$ sdk install micronaut
$ sdk install springboot
$ sdk install visualvm
Configuración de Grails
Para configurar el entorno de runtime de Grails:
$ echo 'export GRAILS_OPTS="-Xmx1G -Xms256m -XX:MaxPermSize=256m"' >> ~/.zshrc
Configuración de VisualVM
Para hacer ejecutable el comando de '$ visualvm':
$ echo 'export PATH="$PATH:$VISUALVM_HOME/bin"' >> .zshrc
Para matar todos los procesos que este ejecutando la JVM: $ killall java
Python 2
Configuración de Python 2, para compatibilidad con otras herramientas:
$ brew install python2
Arreglando la configuración de Python 2 para que funcione junto con Python 3 sin problemas
$ brew install ansible
$ sudo -H easy_install pip
$ sudo -H /usr/bin/python -m pip install boto3 --ignore-installed six
$ brew unlink python
$ brew link --override python
AWS SDK
Instalar boto3, el sdk de python para AWS
$ brew install boto3 netaddr tree
Mejorar las conexiones SSH
Prevenir el error “Write failed: broken pipe” en la connexion SSH
Editar el archivo de configuración de SSH: $ vim ~/.ssh/config
Host *
ServerAliveInterval 120
TCPKeepAlive no
Reiniciar servicio de SSH
$ sudo launchctl stop com.openssh.sshd
$ sudo launchctl start com.openssh.sshd
o
$ sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
$ sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
Proteger el archivo: $ chmod 644 ~/.ssh/config
Terminal
La mejor aplicación para la terminal en MacOS es iTerm2, solo es necesario descargar el paquete DMG y realizar la instalación: https://iterm2.com/downloads.html
Instalar Zsh
Documentación sobre Zsh y Oh my Zsh: https://github.com/robbyrussell/oh-my-zsh/wiki/Installing-ZSH#install-and-set-up-zsh-as-default
$ brew install zsh
Definir ZSH como Bash por default
$ sudo chsh -s /bin/zsh
ó buscando el comando 'zsh'
$ sudo chsh -s $(which zsh)
Un complemento perfecto para Zsh es el proyecto Oh My Zsh! https://ohmyz.sh/#install
Agregar la ruta de comandos disponibles al path
$ echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.zshrc
Instalar ohmyz.sh con Curl
$ sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Instalar ohmyz.sh con Wget
$ sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
Una vez instalado ohmyz.sh ejecutar los siguientes comandos
$ zshconfig
$ bash -c "clear && /bin/zsh"
Instalar fuentes especiales para desarrolladores
Más información sobre el proyecto Nerd Fonts: https://github.com/ryanoasis/nerd-fonts#font-installation
$ brew tap homebrew/cask-fonts
$ brew cask install font-hack-nerd-font
Mejorar la apariencia de la terminal
Instalar el complemento Powerlevel9k
$ brew tap sambadevi/powerlevel9k
$ brew install powerlevel9k
Powerlevel9k también se puede instalar con Git:
$ git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k
Aplicar la configuración al Shell
$ echo "source /usr/local/opt/powerlevel9k/powerlevel9k.zsh-theme" >> ~/.zshrc
Instalar Power line Status
$ pip3 install --user powerline-status
Instalar el proyecto Janus
$ curl -L https://bit.ly/janus-bootstrap | bash
Instalar plugins para ZSH
Completions
$ brew install zsh-completions
Syntax Highlighting
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
$ echo "source ${(q-)PWD}/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc
$ source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
Auto Suggestions
$ git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
Antigen
$ curl -L git.io/antigen > .antigen.zsh
Utilidades e integraciones para iTerm2
$ curl -L https://iterm2.com/shell_integration/install_shell_integration_and_utilities.sh | bash
Fzf: Auto completado de comandos para la terminal
$ brew install fzf
$ $(brew --prefix)/opt/fzf/install
ZPlug: Administrador de plugins para Zsh
$ curl -sL --proto-redir -all,https https://raw.githubusercontent.com/zplug/installer/master/installer.zsh | zsh
ZPresto: Herramienta para configurar Zsh
$ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
$ setopt EXTENDED_GLOB \
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do \
ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}" \
done
Aplicar el tema de nombre 'sorin' para el bash Zsh
$ zstyle ':prezto:module:prompt' theme 'sorin'
Verificar el archivo de configuración de ZSH '~/.zshrc', en el enlace hay un ejemplo de la configuración de las variables de entorno y del tema de la terminal: https://gist.github.com/lgzarturo/c55340f5d53720917b90c72c2b7e1786
Ideas para hacer de la terminal un lugar más productivo:
Terminal environment tips
Desarrollo con Node
Instalar Nodejs
Instalando la ultima versión de Nodejs con Homebrew
$ brew install node
Actualizar NPM
Actualizando el administrador de paquetes NPM de manera Global
$ npm install -g npm@latest
Instalar Npx: Npm package executor
$ npm install -g npx
GUI para administrar paquetes de Nodejs
Comando para instalar la interfaz gráfica:
$ npm install -g npm-gui
Y solo hay que ejecutar el siguiente comando:
$ npm-gui localhost:9000
Yarn
Instalar el administrador de paquetes Yarn:
$ brew install yarn
Descargar dependencias
Mejorar el soporte para instalar dependencias de Nodejs
Para NPM
npm install -g install-peerdeps
Para Yarn
yarn global add install-peerdeps
Instalar paquetes indispensables de Nodejs
Grunt Cli
$ npm install -g grunt-cli
Prettier
$ npm install -g prettier
Eslint
$ npm install -g eslint eslint-plugin-prettier eslint-config-prettier eslint-plugin-node eslint-config-node
Inicializar el linter con Eslint:
$ eslint --init
Express
$ npm install -D express
Yeoman: Herramienta para crear proyectos con Nodejs
$ npm install -g yo@latest
JHipster: Herramienta para crear proyectos Java
$ npm i generator-jhipster -g
Probar npx para este proyecto de jHipster
$ npx install-peerdeps --dev -g generator-jhipster
Linter de javascript con la guía de desarrollo de Airbnb
$ npx install-peerdeps --dev -g eslint-config-airbnb
Mejorar el soporte de Vim
$ brew install macvim --env-std --with-override-system-vim
Generar llave SSH
$ ssh-keygen -t rsa -b 4096 -C "{EMAIL}"
Copiar la llave SSH
$ pbcopy < ~/.ssh/id_rsa.pub
Instalar PHP
$ brew install php@7.3 phplint phpunit
Configurar las variables de entorno para PHP
$ echo 'export PATH="/usr/local/opt/apr/bin:$PATH"' >> ~/.zshrc
$ echo 'export PATH="/usr/local/opt/apr-util/bin:$PATH"' >> ~/.zshrc
$ echo 'export PATH="/usr/local/opt/php@7.3/bin:$PATH"' >> ~/.zshrc
$ echo 'export PATH="/usr/local/opt/php@7.3/sbin:$PATH"' >> ~/.zshrc
Verificar la instalación
$ php -v
Instalar Composer
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"\
php -r "if (hash_file('sha384', 'composer-setup.php') === 'c5b9b6d368201a9db6f74e2611495f369991b72d9c8cbd3ffbc63edff210eb73d46ffbfce88669ad33695ef77dc76976') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"\
php composer-setup.php\
php -r "unlink('composer-setup.php');"
Hace composer ejecutable
$ mv composer.phar /usr/local/bin/composer
$ sudo chmod a+x /usr/local/bin/composer
Instalar Laravel
$ composer global require laravel/installer
Agrear la variable de entorno de los proyectos que se instalen con composer
$ echo 'export PATH="/Users/arturolopez/.composer/vendor/bin:$PATH"' >> ~/.zshrc
Crear un proyecto con laravel
$ laravel new project {PROJECT_NAME}
Ejecutar el proyecto
$ cd {PROJECT_NAME}
$ php artisan serve
Instalar valet
$ composer global require laravel/valet
Inicializar el proyecto de valet
$ valet install
Poner en ejecución un proyecto con valet
$ cd {PROJECT_NAME}
$ valet park
Instalar Hugo
$ brew install hugo
Crear un sitio con Hugo
$ hugo new site {SITE_NAME}
$ cd {SITE_NAME}
Agrear un tema de hugo al sitio
$ git submodule add https://github.com/cowboysmall-tools/hugo-devresume-theme.git themes/devresume
$ echo 'theme = "devresume"' >> config.toml
Crear un articulo
$ hugo new posts/first-post.md
Ejecutar el sitio web
$ hugo server -D
Sonarqube
Esta es una herramienta para medir la calidad del código fuente
Con Docker se puede instalar la sonarqube:
$ docker run -d --name sonarqube -p 9000:9000 sonarqube
las credenciales de acceso del sistema son (login=admin, password=admin).
Descargar el proyecto del siguiente enlace:
https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.3.0.34182.zip
Descomprimir el archivo y acceder a la carpeta:
$ cd runtime/sonarqube-8.1.0.34182
Configurar la variable de entorno y reiniciar ZSH
$ echo 'export PATH="$PATH:/Users/arturolopez/runtime/sonarqube-8.1.0.31237/bin"' >> .zshrc
$ source .zshrc
Ejecutar la herramienta
$ sonar.sh start
Comandos para trabajar con sonarqube
$ sonar.sh restart
$ sonar.sh status
$ sonar.sh stop
$ sonar.sh dump
$ sonar.sh console
Sonar scanner
Para analizar el código fuente se usa sonar scanner
Con Docker se puede analizar el directorio del proyecto con el siguiente comando:
docker run -e SONAR_HOST_URL=http://localhost:9000 -it -v "$(pwd):/usr/src" sonarsource/sonar-scanner-cli
se pueden usar los parámetros 'SONAR_TOKEN, SONAR_LOGIN y SONAR_PASSWORD' para más información:
https://github.com/sonarsource/sonar-scanner-cli-docker/
Descarga el scanner del siguiente enlace:
Descomprimir el archivo y acceder a la carpeta:
$ cd runtime/sonar-scanner-4.3.0.2102-macosx/bin
Ejecutar el comando sonar-scanner
$ sonar-scanner \
-Dsonar.projectKey={PROJECT_NAME} \
-Dsonar.sources=. \
-Dsonar.host.url=http://localhost:9000 \
-Dsonar.login={TOKEN}
Sourcegraph
Herramienta para analizar y entender código fuente
$ docker run --publish 7080:7080 \
--publish 127.0.0.1:3370:3370 --rm \
--volume ~/.sourcegraph/config:/etc/sourcegraph \
--volume ~/.sourcegraph/data:/var/opt/sourcegraph sourcegraph/server:3.15.1
Instalar KDiff
$ brew cask install kdiff3
$ sudo xcode-select --switch /Library/Developer/CommandLineTools
Instalar MySql
Con Docker
Descargar la imagen de mysql, especificando la versión
$ docker pull mysql:5.7.28
Crear un volumen para persistir las bases de datos
$ docker volume create mysql-db-data
Ejecutar y vincular la imagen de mysql con el volumen
$ docker run -d -p 3306:3306 --name mysql-db -e MYSQL_ROOT_PASSWORD=root --mount src=mysql-db-data,dst=/var/lib/mysql mysql:5.7.28
Ejecutar mysql
$ docker run mysql-db
Con Homebrew
Instalar mysql especificando la versión
$ brew install mysql@5.7
Configurar la variable de entorno
$ echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc
Ejecutar el servicio
$ brew services start mysql@5.7
Iniciar la configuración
$ mysql_secure_installation
Instalar imagen de JDK 7
$ docker pull circleci/openjdk:7-jdk
Instalar Nginx
$ docker pull nginx
Iniciar nginx apuntando a un folder
$ docker run -d -p 80:80 -v ~/IdeaProjects/html/:/usr/share/nginx/html nginx
Iniciar el contenedor de nginx
$ docker start nginx
Instalar Elasticsearch
$ docker pull elasticsearch:7.4.2
Instalar Kibana
$ docker pull docker.elastic.co/kibana/kibana:7.4.2
Más fuentes para desarrollo
Adobe fonts
https://github.com/adobe-fonts/source-code-pro
SourceCode fonts
https://github.com/powerline/fonts/tree/master/SourceCodePro
Awesome terminal fonts
https://github.com/gabrielelana/awesome-terminal-fonts
Enlaces
Posted on June 2, 2020
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.