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
Top comments (0)