03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno

Post on 19-Jul-2015

216 views 1 download

Transcript of 03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno

Herramientas del Desarrollador Moderno

Andrés Villarreal andrezrv.com@andrezrv_hq

Andrés Villarreal Programador & Consultor Web

En web desde 2003. Ex UTN FRBA y AVG. Technologies. Plugins y themes publicados en wordpress.org. Core Contributor en 3.9 y 4.0.

Herramientas del Desarrollador Moderno

En ocasiones nuestras herramientas de desarrollo retrasan nuestro trabajo y nuestro crecimiento profesional sin que siquiera nos demos cuenta. Vamos a

detectar esos casos y a explorar distintas opciones para construir un ambiente de desarrollo local moderno, ágil, portable y adecuado a las

tecnologías más actuales del desarrollo web, y cómo acoplarlo a nuestro trabajo con WordPress.

• Desarrollador: toda persona encargada de llevar a cabo un proyecto web. Programadores, diseñadores, implementadores, encargados de contenidos, etc.

• Herramienta: todo aquello que un desarrollador utiliza para llevar a cabo su trabajo. Software, documentación, conocimientos, etc.

Terminología

El Desarrollador Moderno o Profesional

Aquel que siempre está dispuesto a probar y dominar nuevas herramientas, acordes a la evolución de distintas tecnologías, para mejorar tanto el proceso como los resultados de su trabajo.

¿CUÁNDO SE VUELVE OBSOLETA UNA

HERRAMIENTA DE TRABAJO?

CUANDO YA NO TE DEJA TRABAJAR.

Una herramienta deja de ser útil cuando:

• Invertimos más tiempo en ella que en nuestro trabajo puntual.

• Repercute negativamente en la calidad de lo que hacemos.

¿O SEA QUE SI NO ME PASA NINGUNA DE ESAS COSAS,

YA ME PUEDO IR?

SÍ :D

Un Caso ComúnO “¡Extra, extra, XAMPP apesta!”

Requisitos paraDesarrollo con PHP

• Servidor web (Apache o NGINX).

• Intérprete de PHP (Apache o PHP-FPM).

• MySQL (más phpMyAdmin, tal vez).

Gestores de Servicios Populares

• XAMPP (Windows, Linux)

• WAMPServer (Windows)

• MAMP (Mac OS X)

• EasyPHP (Windows)

Problemas de losGestores de Servicios• Por defecto, estoy obligado a que todos mis sitios locales estén en el mismo directorio (www o htdocs).

• Por defecto, todos mis sitios locales están bajo el mismo dominio:http://localhost/capodelmondongo en vez www.capodelmondongo.comhttp://localhost/nosoyunesclavodelsistema. en vez de www.nosoyunesclavodelsistema.com

• Si quiero usar un dominio propio para mi sitio, tengo que editar manualmente los archivos hosts y httpd.conf.

• Si quiero usar varios dominios propios simultáneamente, tengo que crear virtual hosts adicionales.

• Si instalo una actualización del gestor, mis configuraciones modificadas se sobreescriben.

• Mi ambiente no es fácil de mover de una máquina a otra.

• Mi ambiente no está controlado: puede entrar en conflicto con programas que corren en mi máquina de escritorio.

• Mi ambiente local no es similar a mi ambiente de producción, y mi sitio puede no comportarse de la misma forma en ambos.

• Las versiones instaladas de Apache y MySQL no siempre son exactamente iguales a las oficiales.

• Si el gestor se vuelve inestable, también se vuelven inestables los servicios.

El Problema de WindowsO “El misterio de por qué nada anda como debería”.

–Sócrates, 397 AC.

“Podríamos decir que, con el correr del tiempo, un interrogante que se presenta tan complejo

como el mismísimo problema del sentido de la vida es por qué los desarrolladores siguen

usando Windows para trabajar.”

Qué Onda con elDesarrollo Local en Windows• PHP, Apache y MySQL están pensados para

UNIX.

• MS-DOS es ineficiente para tareas complejas.

• Los avances en Windows llevan mucho más tiempo en aparecer que en sistemas UNIX.

• La portabilidad de los ambientes de desarrollo es inherentemente complicada.

• Los programas de escritorio pueden interferir con nuestras aplicaciones de desarrollo.

• La mayoría de los desarrolladores profesionales experimentados trabajan con sistemas UNIX.

¿O SEA QUE TENGO QUE CORRER A INSTALAR

UBUNTU?

NO EXACTAMENTE.

NO, AGUANTÁ.O sea, sí, pero no es indispensable.

Líneas de ComandoO “Aprendiendo a ser re hacker”.

Terminales UNIX

• UNIX es el framework sobre el que están construidos Linux y Mac OS X, en todas sus versiones y distribuciones.

• A través de la línea de comandos podemos ejecutar procesos automatizados muy potentes y abarcativos, los cuales no suelen ser accesibles desde la interfaz gráfica.

• Existen emuladores de terminal (limitados) para Windows, como MINGW32 y CYGWIN.

Control de VersionesO “La desaparición de 72 carpetas con el mismo prefijo”.

Caso Común deVersiones no Controladas

Estado inicial de carpeta htdocs:

nosoyunesclavodelsistema-backup-20150202 nosoyunesclavodelsistema

Estado de carpeta htdocs una semana después:

nosoyunesclavodelsistema-backup-20150202 nosoyunesclavodelsistema-backup-20150203 nosoyunesclavodelsistema-backup-20150204 nosoyunesclavodelsistema-backup-20150205 nosoyunesclavodelsistema

Problemas de la Falta deControl de Versiones

• Consume bastante tiempo y es muy susceptible de errores.

• La posibilidad de ver estadíos intermedios de nuestro código queda descartada por completo.

Ventajas del Software deControl de Versiones• Con unas pocas líneas de comando puedo

registrar cambios en mi código y volver a cualquier punto de mi proyecto.

• Puedo cerrar versiones.

• Puedo crear ramas de desarrollo separadas para features, bugs y otras tareas.

• Puedo ver detalles de diferencias entre un punto y otro del desarrollo.

• Puedo centralizar mi proyecto en un servidor remoto, a manera de repositorio, para que mis colaboradores y yo podamos acceder a él desde cualquier lugar.

Prácticas de DeploymentO “Se cortó internet mientras actualizaba el sitio y se rompió todo”.

Problemas del Deployment Vía FTP

• Los datos que se envían no están encriptados.

• No está pensado para subir grandes cantidades de archivos.

• No está pensado para trabajar con diferencias entre archivos.

Alternativas alDeployment Vía FTP• SCP y SFTP: más seguros, con encriptación de

datos.

• FTP + zip/gzip/tarball: más eficiente - se sube un solo archivo y se lo descomprime en producción.

• VCS: más eficiente - solamente se actualizan las diferencias de archivos.

• Capistrano: más seguro y más eficiente - permite deployar usando distintos protocolos (SFTP, SCP) o VCS (GIT, SVN, Mercurial) y ejecutar tareas adicionales en el servidor de destino.

• rsync: más seguro y más eficiente - con encriptación de datos y actualización limitada a diferencias de archivos.

Coding StandardsO “¿Por qué ponen tantos espacios?”

–San Ambrosio de Milán, Siglo IV.

“Cuando estés en Roma, vive al modo romano. En cualquier parte vive como allí se viva”.

CUANTO MÁS COMPRENSIBLE SEA TU CÓDIGO, MÁS FÁCIL VA

A SER MANTENERLO EN EL FUTURO.

–Gente cuyo código suele ser incomprensible para las formas de vida basadas en carbono.

“Pero esas guidelines son feas, las de Java son más lindas, y si las uso voy a perder espontaneidad y

blablablasmlasdlkd (…)”

MADUREN.

VirtualizaciónO “La respuesta a cuántos

pares son tres botas”.

Beneficios delSoftware de Virtualización

• Conglomera muchas posibles soluciones a los problemas anteriores, ofreciendo un ambiente de desarrollo integral.

• Permite instalar un nuevo sistema operativo “encapsulado” y trabajar en un entorno 100% controlado y portable.

Vagrant

• Requiere VirtualBox o VMWare.

• Construido sobre Ruby.

• Permite crear ambientes de desarrollo diferenciados, extensibles, livianos y portables.

• Gestiona sincronización y compartición de carpetas de forma automática.

Varying Vagrant Vagrants (VVV)

• Ubuntu 14.04 LTS.

• NGINX, PHP-FPM, MySQL, phpMyAdmin.

• xDebug (debugging)

• PHPUnit (testing)

• GIT (control de versiones)

• Composer (control de dependencias)

• NodeJS (framework JS)

• Grunt (JS task runner)

• WP-CLI (línea de comando para WordPress)

• Tres instalaciones de WordPress: stable (última versión pública), develop (última versión sin compilaciones de archivos) y trunk (última versión beta).

¿Cómo Empiezo?

1. Instalar VirtualBox

2. Instalar GIT

3. Instalar Vagrant

4. Descargar instancia de VVV:git clone git@github.com:Varying-Vagrant-Vagrants/VVV.git ./nosoyunesclavodelsistema

5. Ingresar a mi instancia de VVV:cd ./nosoyunesclavodelsistema

6. Iniciar Vagrant:vagrant up --provision

20 minutos después…

¿Qué Resuelve la Virtualización?• Permite usar versiones oficiales y actualizadas de Apache/NGINX, MySQL y PHP.

• Facilita crear y correr nuevos sitios.

• Facilita el control de versiones.

• Facilita el uso de terminales.

• Facilita backups remotos.

• Facilita testing y debugging.

• Facilita contribuciones a WordPress Core.

• Facilita procesos de deployment.

• Ofrece un entorno controlado y estable.

• Ofrece un entorno portable.

• Ofrece herramientas que permiten chequear que nuestro código siga las guidelines de WordPress.

IDEs y Editores de TextoO “Yo uso Notepad++, es re groso”.

IDEs y Editores Copadospara Trabajar con WordPress• PHPStorm

• Sublime Text

• Coda

• Aptana

• Komodo Edit

• Komodo IDE

¿Consultas?

MUCHAS GRACIAS

Herramientas del Desarrollador Moderno

Andrés Villarreal andrezrv.com@andrezrv_hq