Yeoman el generador de andamios

Yeoman es la herramienta para generar el andamio de una aplicación Web moderna. Ofrece un ecosistema de generadores. Un generador es, básicamente, un plugin que se puede correr con el comando “yo” para producir el andamio de un proyecto.

Yeoman Workflow

Herramientas

El flujo de trabajo Yeoman se compone de tres herramientas fundamentales que impulsan la mejora de la productividad y la satisfacción en la construcción de una aplicación web:

  • yo – La herramienta de andamios de Yeoman.
  • bower – La herramienta de gestión de paquetes.
  • grunt – La herramienta de construcción.

Instalación

Vamos a empezar instalando Yeoman y el “Ionic Framework Generator“:

npm install -g yo bower gulp grunt-cli compass ios-sim generator-ionic
mkdir yoionic && cd $_

yo ionic yoionic
grunt —force
grunt platform:add:ios

grunt emulate:ios --force
grunt serve --force

Después de instalar Yosemite

Sobre Python

Como no voy a desarrollar en Python por el momento voy a optar por dejar la instalación de Python tal y como se encuentra, más que todo para evitar problemas con el sistema.

which python

/usr/bin/python
python --version

Python 2.7.6
python

Python 2.7.6 (default, Sep  9 2014, 15:04:36) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin

Sobre Bash

También voy a optar por dejar la instalación de Bash tal y como se encuentra:

which bash

/bin/bash
bash --version

GNU bash, version 3.2.53(1)-release (x86_64-apple-darwin14)

bash-it

bash-it es un mashup varios comandos y scripts de bash, también incluye otras cosas interesantes en bash (Se inspira en oh-my-zsh :).

Permite configurar autocompletado, temas, alias, funciones personalizadas y más.

Más información: bash-it

cd

git clone https://github.com/revans/bash-it.git ~/.bash_it

Cloning into '/Users/God/.bash_it'…

Aliases

atom ~/.bash_it/aliases/custom.aliases.bash

Por ejemplo

cite 'about-alias'
about-alias 'josoroma'

alias updatedb='sudo /usr/libexec/locate.updatedb'

alias confhosts='sudo atom /etc/hosts'
alias confvhosts='sudo atom /etc/apache2/extra/httpd-vhosts.conf'
alias confapache='sudo atom /etc/apache2/httpd.conf'
alias confphp='atom /usr/local/etc/php/5.6/php.ini'
alias confmongo='atom /usr/local/etc/mongod.conf'

alias restartapache='sudo apachectl restart'
alias restartmysql='mysql.server restart'
alias restartsshagent='~/bin/ssh-agent'

alias www='cd /Library/WebServer/Documents'

alias gitcompare="git diff --stat master develop"

alias gitcompare1="git log --pretty=format:'%h' -2 master && git log --pretty=format:'%h' -2 develop"

alias gitcompare2="git log --pretty=format:'%h - %an, %ar : %s' -2 master && git log --pretty=format:'%h - %an, %ar : %s' -2 develop"

alias atompackages="ls -l ~/ .atom/packages | awk '{print $8}'"

alias aliases='atom ~/.bash_it/aliases/custom.aliases.bash'

Instalar PIP

Una herramienta para la instalación y gestión de paquetes de Python:

sudo easy_install pip

Installing pip script to /usr/local/bin
Installing pip2.7 script to /usr/local/bin
Installing pip2 script to /usr/local/bin

HTTPie

HTTPie es un cliente de línea de comandos HTTP. Su objetivo es hacer la interacción CLI con los servicios web tan fácil y humano como sea posible.

Proporciona un comando http que permite el envío de peticiones HTTP utilizando una sintaxis simple y natural, y muestra las respuestas coloreadas.

HTTPie se puede utilizar para la prueba, depuración y, en general para interactuar con servidores HTTP.

Más información: HTTPie

sudo easy_install httpie

Searching for httpie
Reading https://pypi.python.org/simple/httpie/
Best match: httpie 0.8.0

Installing http script to /usr/local/bin

Por ejemplo

http -v httpie.org

GET / HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: httpie.org
User-Agent: HTTPie/0.8.0

HTTP/1.1 302 Found
Cache-Control: max-age=1800
Connection: Keep-Alive
Content-Length: 223
Content-Type: text/html; charset=iso-8859-1
Date: Sun, 30 Nov 2014 17:53:00 GMT
Expires: Sun, 30 Nov 2014 18:23:00 GMT
Keep-Alive: timeout=5, max=250
Location: https://github.com/jakubroztocil/httpie
Server: Apache
X-Awesome: Thanks for trying HTTPie :)

Instalar Xcode desde el App Store

Para construir aplicaciones para OS X de Yosemite, asegúrese de que ha instalado OS X Yosemite y Xcode. Actualmente es posible enviar aplicaciones de Mac escritas con Swift a la Mac App Store.

Xcode Command Line Tools

xcode-select -p
ls -la /Applications/Xcode.app/Contents/Developer

Homebrew

El gestor de paquetes de lo que le hizo falta a OS X. Instala esas “cosas” que necesitamos y que Apple no instaló.

Más información: brew.sh

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

This script will install:

/usr/local/bin/brew

Verificar el estado de Brew

brew doctor

Actualizar

brew update && brew upgrade `brew outdated`

Un flujo de trabajo que mediante CLI permite la administración de aplicaciones de Mac que son distribuidas en binario:

brew install caskroom/cask/brew-cask

El proyecto XQuartz es un esfuerzo para desorollar una versión “open source” X.Org del X Window System que corra en OS X:

brew cask install xquartz
brew help

brew –config

HOMEBREW_VERSION: 0.9.5
ORIGIN: https://github.com/Homebrew/homebrew
HOMEBREW_PREFIX: /usr/local
HOMEBREW_CELLAR: /usr/local/Cellar
CPU: quad-core 64-bit haswell
OS X: 10.10.1-x86_64
Xcode: 6.1
CLT: 6.1.0.0.1.1413057044
Clang: 6.0 build 600
X11: N/A
System Ruby: 2.0.0-481
Perl: /usr/bin/perl
Python: /usr/bin/python
Ruby: /usr/bin/ruby

Network Tools

brew install wget mtr nmap iftop lynx fping arp-scan htop pgrep

Considere la posibilidad de establecer la siguiente ruta en PATH:

echo export PATH='/usr/local/sbin:$PATH' >> ~/.bash_profile

Image Magick

Para convertir, editar y componer imágenes.

Más información: Image Magick – Command line tools

brew install ImageMagick --with-ghostscript

ACK

Es una herramienta como grep pero optimizada para desarrolladores.

Más información: beyondgrep.com

brew install ack

MySQL

La Base de Datos de código abierto más popular del mundo:

brew install mysql
mysql.server restart
mysql_secure_installation
unset TMPDIR
mysql_install_db --verbose --user=`whoami` \\
--basedir="$(brew --prefix mysql)" \\
--datadir=/usr/local/var/mysql --tmpdir=/tmp
mysql.server restart
mysql -u root -p

Git

Potente herramienta para la colaboración, revisión y la gestión de código de proyectos.

brew install git

brew install node

Actualizar node:

npm install -g npm@latest
node --version

v0.10.33

SSH para Git

brew install ssh-copy-id
ssh-keygen -b 2048 -C "username@example.com" -f ~/.ssh/id_username_domain_rsa
ssh-add ~/.ssh/id_username_domain_rsa
ssh-add -l
git config --global user.name "username"
git config --global user.email "username@example.com"
git config --global push.default upstream
git config --global branch.autosetuprebase always
git config --global color.ui true
ssh-copy-id -i ~/.ssh/id_username_domain_rsa.pub username@remote.example.com

Aseguramiento de la calidad del código

npm install -g jshint

npm install -g csslint

Herramienta basada en nodejs que srive para optimizar archivos de gráficos vectoriales SVG:

npm install -g svgo

Sails

sudo npm install sails -g
brew install mongodb

Mongo

brew install mongodb

Para levantar Mongo al iniciar el sistema:

ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents

o para levantar el servicio Mongo en este el momento:

mongod --config /usr/local/etc/mongod.conf

Genghis

Una aplicación para la adminsitración de MongoDB.

Más información: GenghisApp.com

sudo gem install genghisapp
sudo gem install bson_ext -v 1.9.2
genghisapp --kill
genghisap

Antes de instalar PHP

brew tap homebrew/dupes

Cloning into '/usr/local/Library/Taps/homebrew/homebrew-dupes'...
brew tap homebrew/versions

Cloning into '/usr/local/Library/Taps/homebrew/homebrew-versions'...
brew tap homebrew/homebrew-php

Cloning into '/usr/local/Library/Taps/homebrew/homebrew-php'...

Instalar PHP

Más información: Homebrew PHP

brew install php56 php56-crypto php56-imagick php56-mcrypt php56-mongo php56-pspell php56-xdebug php56-oauth
 ./configure --prefix=/usr/local/Cellar/php56/5.6.3

 --localstatedir=/usr/local/var

 --sysconfdir=/usr/local/etc/php/5.6

 --with-config-file-path=/usr/local/etc

Para habilitar PHP en Apache hay que agregar la siguiente línea al httpd.conf y luego reiniciar Apache:

LoadModule php5_module    /usr/local/opt/php56/libexec/apache2/libphp5.so

php.ini

sudo atom /usr/local/etc/php/5.6/php.ini

Para levantar PHP al iniciar el sistema:

ln -sfv /usr/local/opt/php56/*.plist ~/Library/LaunchAgents

Para levantar PHP en este momento:

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.php56.plist

Apache

sudo apachectl configtest
sudo chown -R josoroma:staff /Library/WebServer/Documents
tail -f /private/var/log/apache2/error_log
ls -la /usr/local/etc/php/5.6/conf.d/
php -i

Composer

Gestor de dependencias para PHP.

Más información: Composer

brew install composer

Aseguramiento de la calidad del código PHP

Para detectar violaciones sobre las normas de codificación:

brew install php-code-sniffer php-cs-fixer

sudo atom /etc/apache2/httpd.conf

Descomentar los siguientes módulos

LoadModule include_module libexec/apache2/mod_include.so
LoadModule log_debug_module libexec/apache2/mod_log_debug.so
LoadModule session_module libexec/apache2/mod_session.so
LoadModule session_cookie_module libexec/apache2/mod_session_cookie.so
LoadModule session_dbd_module libexec/apache2/mod_session_dbd.so
LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so

Modificar la ubicación del módulo PHP5

LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so

Modificar en “unixd_module”

User josoroma
Group staff

Modificar “ServerAdmin” y “ServerName”

ServerAdmin username@example.com
ServerName 127.0.0.1

En Directory “/Library/WebServer/Documents” modificar

AllowOverride All

Permitir Virtual Hosts descomentando la siguiente línea

Include /private/etc/apache2/extra/httpd-vhosts.conf

Virtual Hosts

sudo atom /etc/apache2/extra/httpd-vhosts.conf
<VirtualHost *:80>
 DocumentRoot "/Library/WebServer/Documents/example.com/www/"
 ServerName example.com
 ErrorLog "/private/var/log/apache2/example.com_error_log"
 CustomLog "/private/var/log/apache2/example.com_access_log" common
</VirtualHost>

hosts

sudo atom /etc/hosts
127.0.0.1	localhost scorpion.local
127.0.0.1	example.com
#
255.255.255.255	broadcasthost
::1             localhost
sudo apachectl restart

Node Baby Steps

¿Qué facilita y permite Node.js?

Node.js es una plataforma basada en el “Chrome’s JavaScript Runtime” que facilita la construcción agil de aplicaciones de red escalables. Node.js utiliza un modelo de E/S sin bloqueo por eventos que le permite ser ligero y eficiente, ideal para aplicaciones en tiempo real con datos intensivos que se ejecutan a través de dispositivos distribuidos.

Istalando Node.js en Yosemite

brew install node

Más información: Installing Homebrew on OS X Yosemite

Actualizar NPM

npm install npm -g

Más información: https://www.npmjs.org/doc/misc/npm-faq.html

Actualizar Node.js con NPM

sudo npm cache clean -f

sudo npm install -g n

sudo n stable

node -v

También es posible usar una versión en específico, por ejemplo:

sudo n {VERSION}

Ayuda rápida

npm -h

npm install -h

npm update -h

npm uninstall -h

Buscar (terriblemente lento)

npm search sails

Más información: