domingo, 22 de diciembre de 2013

Explorador de Archivos en Vim (File Explorer) en OSX

Me estoy haciendo definitivamente adicto a Vim, ahora veremos como instalar el explorador de archivos.

A través de este sitio: http://www.vim.org/scripts/script.php?script_id=1658 encontramos el proyecto de github de nerdtree, con los siguientes comandos podemos realizar la instalación:

$ cd ~/.vim/bundle    #NOTA: Se debe tener el directorio bundle creado previamente
$ git clone https://github.com/scrooloose/nerdtree.git    #NOTA: Implica tener instalado git
$ cp nerdtree/autoload/nerdtree.vim ~/.vim/autoload/nerdtree.vim
$ cp nerdtree/doc/NERD_tree.txt ~/.vim/doc/NERD_tree.txt
$ mkdir ~/.vim/lib  #NOTA: Yo no tenía este directorio
$ cp -rf nerdtree/lib/nerdtree ~/.vim/lib/nerdtree
$ mkdir ~/.vim/nerdtree_plugin
$ cp -rf nerdtree/nerdtree_plugin ~/.vim/
$ cp nerdtree/plugin/NERD_tree.vim ~/.vim/plugin/NERD_tree.vim
$ mkdir ~/.vim/syntax
$ cp -rf nerdtree/syntax ~/.vim/


Una vez realizado lo anterior ya podemos usar el plugin, bien para utilizarlo de forma básica abrimos vim, de entrada ya debe mostrar como un explorador de archivos muy diferente, pero para darle más poder agregaremos al .vimrc la siguiente instrucción:

map < silent > < C-n > :NERDTreeToggle< CR > 
#NOTA: Eliminar espacios en blanco

Con la instrucción anterior abrimos y cerramos el directorio utilizando las teclas Ctrl+N cuando nos posicionamos en un archivo podemos dar ENTER para abrir el archivo o podemos presionar i para que se abra haciendo split con el archivo anterior.

 Dejaré las referencias por si quieres investigar más opciones.

Espero te sea de utilidad !



Referencias:
http://make-believe.org/in-words/post/vim-is-forever/
http://www.vim.org/scripts/script.php?script_id=1140
http://www.youtube.com/watch?v=CPu9mDpSYj0

miércoles, 18 de diciembre de 2013

Instalando vim-airline OSX

Buscando potenciar el uso de vim me tope con un plugin que me dejo atónito con dicha herramienta puedes hacer algo como lo que se ve en las siguientes imágenes:



En cuanto lo vi me dije, tengo que tenerlo, pero al principio creí que solo era un plugin y son varios para lograr el funcionamiento máximo me aboqué solo en algunos de ellos que son los que utilizaré y dejo aquí como es de costumbre el procedimiento para instalarlo, el cuál esta basado para OSX pero es probable que no haya mucha diferencia para MsWindows.

Por principio de cuentas no tenía mucha experiencia instalando plugins para vim por lo que también lo veremos aquí.

PASO 1 | Descargar vim-airline

Con el fin de llevar algo de orden todo lo que descargue lo dentro del directorio ~/.vim/bundle de esa manera desde ahí puedo trabajar y copiar lo que se necesita. El primer comando que vamos a ejecutar entonces es:

$ cd ~/.vim/
$ mkdir bundle                 # Solo en caso de no tener este directorio
$ git clone https://github.com/bling/vim-airline.git

PASO 2 | Instalar vim-airline

Con el paso anterior nos descargara el proyecto en una carpeta con el mismo nombre dentro de vim-airline ahí tendremos una carpeta de nombre autoload, doc y plugin. Estas carpetas debemos copiarlas al directorio ~/.vim solo hay que tener cuidado que si ya tenemos las carpetas entonces solo copiar el contenido de ellas dentro del directorio correspondiente (Si copiamos la carpeta directamente podemos borrar lo que estaba ahí).

Esto es el contenido de:
 ~/.vim/bundle/vim-airline/autoload/ copiarlo a ~/.vim/autoload/
 ~/.vim/bundle/vim-airline/doc/ copiarlo a ~/.vim/doc/
 ~/.vim/bundle/vim-airline/plugin/ copiarlo a ~/.vim/plugin/

Básicamente este es el proceso de instalación de un plugin en vim, se descarga y luego se mueven los archivos que se encuentran en los directorios autoload, doc y plugin a los directorios raíz.

PASO 3 |  Activar la barra y el airline

Para activarlo es muy sencillo necesitamos editar el archivo ~/.vimrc para esto podemos hacer el siguiente comando:

$ vi ~/.vimrc

Dentro de ese archivo colocaremos las siguientes líneas:
   set laststatus=2
   let g:airline#extensions#tabline#enabled = 1       "Habilita los tabs, para cambiar de tab presionar gt

Guardamos el archivo y al volver a entrar veremos las primeras posibilidades que nos ofrece este StatusLine de vim.

PASO 4 |  Uso de Git

Como podemos observar en la barra podemos ver las inserciones y la rama que estamos utilizando en git, para eso debemos instalar dos plugin (El proceso es el mismo que con el airline, solo recuerda que en esta ocasión ya debes tener las carpetas autoload, doc y plugin, por lo que solo deberás copiar los contenidos de cada carpeta). Dichos plugin son los siguientes:

https://github.com/airblade/vim-gitgutter
https://github.com/tpope/vim-fugitive

Una vez instalado lo anterior podrás ver la rama y el control de modificaciones de los archivos.

PASO 5 |  Fuentes especiales

Hasta el paso anterior ya queda algo bastante funcional, lo siguiente es solo para darle un poco de formato utilizando fuentes especiales, es importante mencionar que esto solo me funcionó en MacVim. Para instalar dichas fuentes es necesario realizar varios procesos:

5.1 Instalar Home Brew (Solo en caso de no tenerlo instalado):

$ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
$ brew update

5.2 Instalar font

$ brew install fontforge            #Si ya estaba instalado ejecutar $ brew uninstall fontforge

5.3 Obtener el directorio de fontpatcher del repositorio:
https://github.com/Lokaltog/vim-powerline/tree/develop/fontpatcher
NOTA: Solo ese directorio ya que lo necesitaremos para instalar las fuentes.

5.4 Descargar las fuentes de: https://github.com/Lokaltog/powerline-fonts

5.5 Una vez obtenidas las fuentes será necesario correr el siguiente comando:

$ fontforge -script /ruta/al/fontpatcher.py "Ubuntu Mono derivative Powerline.ttf"
Realizando los cambios correspondientes: la ruta del fontpatcher.py y el archivo Ubuntu Mono derivative Powerline.ttf es solo como ejemplo, debe sustituirse por el que se desea instalar.

5.6 Realizado el proceso anterior entonces podemos añadir a nuestro .vimrc lo siguiente:

let g:airline_powerline_fonts=1

5.7 En el .gvimrc elegimos el tipo de fuente que escogimos en el punto 5.5:
set guifont=Ubuntu\ Mono\ derivative\ Powerline\
set anti gfn=Ubuntu\ Mono\ derivative\ Powerline:h19

De esta forma aparecerán los iconos, espero te sea de utilidad !



Referencias:
https://github.com/bling/vim-airline
https://github.com/airblade/vim-gitgutter
https://github.com/tpope/vim-fugitive
http://brew.sh/







lunes, 4 de noviembre de 2013

Conectando la terminal de Mac OSX con el servicio AWS de Amazon

Para conectar con el terminal del Mac OSX lo primero que se debe hacer es generar un certificado desde tu servicio de Amazon, una vez que lo obtengas descargalo a tu equipo y en la terminal vamos al directorio donde se encuentra.

El archivo descargado debe tener extensión ".pem" entonces una vez en la carpeta realizaremos los siguientes comandos:

$ cp miarchivocertificado.pem ~/.ssh/miarchivocertificado.pem
$ chmod 600 ~/.ssh/miarchivocertificado.pem

Ahora para cuando necesitemos conectar utilizaremos la siguiente instrucción:
$ ssh -i /users/tuusuario/.ssh/miarchivocertificado.pem root@[IP de tu servidor]

Con eso debes poder entrar a tu servicio.

Espero te sea de utilidad !



Referencias:
http://stackoverflow.com/questions/14229846/connecting-to-amazon-aws-linux-server-by-ssh-on-mac

Configurando vim, macvim o gvim con el archivo vimrc o gvimrc

Para configurar el vim en sus diferentes modalidades (macvim o gvim) se debe utilizar el archivo .vimrc o .gvimrc (para macvim y gvim) y dentro de ese archivo colocar los parametros de configuración; para acceder al archivo podemos hacerlo desde el terminal utilizando el siguiente comando:

$ vi ~/.vimrc
ó
$gvim ~/.gvimrc

Dentro del archivo debemos colocar una serie de comandos de acuerdo a lo que necesitemos voy a dejar aquí algunos de los que yo utilizo, en caso de que vaya encontrando más hiré actualizando el archivo igual si tu conoces alguno muy bueno y que no lo haya colocado en este post, puedes hacerlo en los comentarios seguro nos servirá a todos.

"Cambiar a pantalla completa:
set fullscreen

"Esquema de Colores
"colorscheme default
colorscheme desert

"Línea
:set nowrap
:set textwidth=0
:set wrapmargin=0

"Barra de estatus
set laststatus=2

"Linea de nombre de archivos
hi StatusLine guifg=#eeeeee guibg=#888888

hi StatusLineNC guifg=#eeeeee guibg=#898989 "Sección no seleccionado
hi StatusLine termbg=blue ctermfg=white "Para el terminal

"Carácter para el Vertical Line Split
set fillchars+=vert:\

"Cambiando el cursor Cursor
highlight Cursor guifg=#888888 guibg=#eeeeee
highlight iCursor guifg=white guibg=#3780ff
set guicursor=n-v-c:block-Cursor
set guicursor+=i:ver100-iCursor
set guicursor+=n-v-c:blinkon0
set guicursor+=i:blinkon0

"Fondo y Color de Texto General
set transparency=20
highlight Normal guifg=white guibg=#111111
highlight NonText guifg=white guibg=#111111
 
"Fondo Seleccion
highlight Visual guibg=#73cbff guifg=white

"Fuente o tipo de letra
set anti gfn=Ubuntu\ Mono\:h17
set linespace=1 "Espacio entre líneas

"Ubicación de la pantalla
winp 52 244

"Tamaño de la Pantalla
win 120 20

"Comentarios
hi Comment guifg=#aaaaaa

"Columna de números
set number "Muestra la columna de numeros
highlight lineNR guifg=#cccccc


"Oculta Scrolls
set guioptions-=r "Hide Scrolls
set foldcolumn=0
set tabstop=2
set wrapmargin=15 "Margen del texto de lado izquierdo

"Barra de comandos
set ruler "Muestra la barra de columna y fila

Espero te sea de utilidad !

miércoles, 2 de octubre de 2013

Django Implementación (Deployment) Ubuntu + NGINX + uWSGI + MySQL en 10 pasos (Actualizado)

Bien ya me toco instalar django sobre apache, pero mucha gente me ha referido a nginx como un gran servidor para equipos con bajos recursos ( quiero ponerlo dentro de una maquina virtual -_- ), que pueden levantar con mayor velocidad, así que me dispuse a probarlo dentro de una maquina virtual aquí el procedimiento:


PASO 1

Instalar el Ubuntu, en este caso no hubo mayor problema descargue virtualbox versión 4.2.18 y la versión de ubuntu 12.04.3 LTS. Te recomiendo que durante el proceso de instalación cuando te pregunte por instalar un servidor Open SSH, si lo actives, te será más facil lo siguiente realizando una conexión ssh (Sobre todo si estas utilizando un maquina virtual).


PASO 2

Como siguiente paso instalaremos mysql usando las instrucciones:
$ sudo apt-get upgrade
$ sudo apt-get install mysql-server

NOTA: Ojo con el password que se requerirá posteriormente. Que bonito funciona ubuntu todo con línea de comandos y casi sin problema :) ...


PASO 3

Ahora instalamos pip ( Generalmente python ya viene instalado por defecto a menos que desees otra instalación de python ) para instalarlo usamos:
$ sudo apt-get install python-setuptools
$ mkdir setup 
$ cd setup
$ wget http://python-distribute.org/distribute_setup.py
$ sudo python distribute_setup.py
$ sudo easy_install pip

NOTA: Es increíble lo bien que funciona, todo desde el terminal si hay errores solo es buscar un poco en internet.


PASO 4

Instalar Django hacemos lo siguiente
$ sudo pip install Django


PASO 5

Ahora bien empezamos con el enlace mysql-python para eso debemos instalar la herramienta de mysqldb usando los siguientes comandos:

Ese comando actualiza las referencias.
$ sudo easy_install -U distribute 
$ sudo apt-get install libmysql++-dev
# Ese comando evita los errores relacionados a - gcc -
$ sudo apt-get install python-dev   
$ sudo apt-get install python-mysqldb


PASO 6

Copiamos o creamos nuestro proyecto:
$ django-admin.py startproyect mi_proyecto

NOTA: Esta guía es solo es para la implementación por lo que supongo que ya tienen algo desarrollado o bien pueden colocar dentro de alguna vista un Hola Mundo para realizar pruebas.


PASO 7

Empezamos ahora con la parte interesante, para instalar nginx seguimos con lo genial de ubuntu usando la línea de comandos:
$ sudo apt-get install nginx
$ sudo apt-get install build-essential python
# Este comando actualiza las referencias de pip.
$ sudo easy_install -U pip
# Este comando actualiza las referencias de uwsgi.
$ sudo easy_install -U uwsgi      
$ sudo pip install uwsgi

NOTA: La segunda herramienta se utiliza para el control de uwsgi, que es la que posibilita a django enlazar con nginx previamente había un fastcgi pero al parecer django esta por darlo de baja en la versión Django 1.7.


PASO 8

Necesitaremos crear el archivo ini que utilizará uwsgi para manejar nuestra aplicación, la ubicación del archivo puede ser dentro del directorio del proyecto, en mi caso generalmente lo pongo dentro de una carpeta que se llama deploy, y el nombre puede ser: mi_proyecto_uwsgi.ini y le añadimos el siguiente contenido:

[uwsgi]
     chdir = /ruta/a/tu/proyecto/ 
     module = mi_proyecto.wsgi
     master = true
     processes = 10
     socket  = /ruta/a/tu/proyecto/mi_proyecto.sock 
     chmod-socket  = 666
     vacuum  = true


PASO 9

Ahora necesitaremos indicarle a nginx donde buscar los datos del uwsgi para esto dentro del mismo directorio de deploy que tenemos dentro de nuestro proyecto creamos un archivo con nombre mi_proyecto_nginx.conf con el siguiente contenido:


upstream django{
        server unix:///ruta/a/tu/proyecto/mi_proyecto.sock;
}

server {
        listen   80;
     
        server_name mi_server;
        charset utf-8;

        # Max upload size
        client_max_body_size 10M;

        access_log /ruta/a/tu/proyecto/mi_proyecto.access.log;
        error_log /ruta/a/tu/proyecto/mi_proyecto.error.log;

        location /static {
                gzip_static on;
                alias /ruta/a/tu/proyecto/static/;
        }

        location / {
                include /etc/nginx/uwsgi_params;   # verificar la ruta en tu implementación
                uwsgi_pass django;
        }
}

NOTA IMPORTANTE:
Como lo hicimos con la configuración de uwsgi también es necesario indicarle esta configuración a nginx y de igual forma lo mejor es crear un enlace símbolico:

$ sudo ln -s  /ruta/a/tu/proyecto/deploy/mi_proyecto_nginx.conf   /etc/nginx/sites-enabled/ 


PASO 10

Hasta el paso anterior ya podriamos hacer algunas pruebas reiniciando el nginx ...
$ sudo /etc/init.d/nginx restart

... y corriendo el comando:
$ uwsgi --ini mi_proyecto.ini

Sin embargo lo que seguro vamos a necesitar, es que el servidor, cargue automáticamente el proyecto al iniciar el equipo, para esto necesitaremos los siguientes comandos:

# Creando el servicio
$ sudo vi /etc/rc.local

# Agregar la siguiente línea al archivo antes del exit 0 
/usr/bin/uwsgi --emperor /ruta/a/tu/proyecto/deploy/mi_proyecto_uwsgi.ini --uid mi_usuario --gid www-data --daemonize /ruta/a/tu/proyecto/mi_proyecto.uwsgi.log

NOTA: Se debe verificar la ubicación del archivo uwsgi.


Realizado lo anterior al reiniciar la maquina virtual o el servidor debería de cargarlo correctamente.

Espero te sea de utilidad !


Referencias y links consultados:
https://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html?highlight=django
http://uwsgi-docs.readthedocs.org/en/latest/WSGIquickstart.html#deploying-django
http://eth0.pro/post/1
http://www.ubuntu-es.org/node/172656#.UcDqY5WWRhY
https://www.digitalocean.com/community/articles/how-to-install-nginx-on-ubuntu-12-04-lts-precise-pangolin
http://www.howtogeek.com/howto/ubuntu/install-mysql-server-5-on-ubuntu/
https://gist.github.com/panuta/3075882
http://stackoverflow.com/questions/11094718/error-command-gcc-failed-with-exit-status-1-while-installing-eventlet
http://askubuntu.com/questions/157840/why-does-apt-get-fail-to-resolve-the-mirror
http://skuarch.blogspot.mx/2010/02/crear-un-servicio-en-ubuntu.html
http://stackoverflow.com/questions/11425106/python-pip-install-fails-invalid-command-egg-info

martes, 10 de septiembre de 2013

Guía rápida para los comandos de Git

Implementando Git en la empresa donde trabajo hicimos un resumen de los comandos que más utilizamos ...

Bajar repositorio ...
$ git clone https://github.com/usuario/repo.git

Entrar al repositorio ...
$ cd mlog

Ver los branch ocultos ...
$ git branch -a

Trabajar con los branches de manera local ...
$ git checkout -b stage origin/pruebas
$ git checkout -b master origin/produccion


Para cambiar de branch ...
$git checkout pruebas

Revisar cambios de los archivos ...
$ git status

Actualizar archivos nuevos y eliminados ...
$ git add -u

Realizar el commit en el equipo de forma local ...
$ git commit -m "Mensaje"

Bajar o actualizar el branch...
$ git pull https://github.com/usuario/repo.git pruebas

Subir información...
$ git push https://github.com/usuario/repo.git desarrollo

Combinar ramas ...
Rama Origen: desarrollo
Rama Destino: pruebas
(desarrollo) $ git checkout pruebas
(pruebas) $ git merge desarrollo


Actualización :: 24/Sep/2013

Ver el autor de cada una de las líneas de código de un archivo ...
$ git blame miarchivo.py

En caso de que tengas varios archivos que git marca como modificados y quieres deshacerte de todo utiliza:
$ git clean -df & git checkout .



Espero te sea de utilidad !

Créditos
Elaborada en equipo con - Carmen Gutierrez Perez - Miguel Velazco - Gonzalo Morales -

Referencias:
http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging


PHP Error Log desde el terminal (OSX)

Como fan de la terminal, me tope con la siguiente opción para ver los errores en tiempo real del php_error.log y es utilizando el siguiente comando:

$ tail -f /ruta/al/logs/php_error.log

En mi caso utilizo MAMP como herramienta de pruebas por lo que con la siguiente instrucción puedo estar viendo los errores que se generan desde el terminal:

$ tail -f /Applications/MAMP/logs/php_error.log

Si es muy largo el comando siempre podemos acudir al ~/.bash_profile para crear un alias por ejemplo:

-- Abrimos el archivo .bash_profile:
$ vi ~/.bash_profile

-- Añadimos la línea:
alias phplog="tail -f /Applications/MAMP/logs/php_error.log"

-- Guardamos el archivo y salimos
usando ESC + [Presionar :] + [Presionar w] + [Presionar q]

-- Debemos reiniciar el terminal para que los cambios tengan efecto, y posteriormente solo utilizamos:
$ phplog


Espero te sea de utilidad !


Referencias:
http://magp.ie/2011/03/10/debugging-php-by-monitoring-errors-in-terminal/