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

50
Herramientas del Desarrollador Moderno Andrés Villarreal andrezrv.com @andrezrv_hq

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

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

Herramientas del Desarrollador Moderno

Andrés Villarreal andrezrv.com@andrezrv_hq

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

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.

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

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.

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

• 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

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

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.

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

¿CUÁNDO SE VUELVE OBSOLETA UNA

HERRAMIENTA DE TRABAJO?

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

CUANDO YA NO TE DEJA TRABAJAR.

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

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.

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

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

YA ME PUEDO IR?

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

SÍ :D

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

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

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

Requisitos paraDesarrollo con PHP

• Servidor web (Apache o NGINX).

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

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

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

Gestores de Servicios Populares

• XAMPP (Windows, Linux)

• WAMPServer (Windows)

• MAMP (Mac OS X)

• EasyPHP (Windows)

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

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.

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

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

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

–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.”

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

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.

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

¿O SEA QUE TENGO QUE CORRER A INSTALAR

UBUNTU?

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

NO EXACTAMENTE.

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

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

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

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

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

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.

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

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

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

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

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

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.

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

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.

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

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

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

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.

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

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.

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

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

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

–San Ambrosio de Milán, Siglo IV.

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

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

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

A SER MANTENERLO EN EL FUTURO.

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

–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 (…)”

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

MADUREN.

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

VirtualizaciónO “La respuesta a cuántos

pares son tres botas”.

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

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.

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

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.

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

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).

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

¿Cómo Empiezo?

1. Instalar VirtualBox

2. Instalar GIT

3. Instalar Vagrant

4. Descargar instancia de VVV:git clone [email protected]:Varying-Vagrant-Vagrants/VVV.git ./nosoyunesclavodelsistema

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

6. Iniciar Vagrant:vagrant up --provision

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

20 minutos después…

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

¿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.

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

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

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

IDEs y Editores Copadospara Trabajar con WordPress• PHPStorm

• Sublime Text

• Coda

• Aptana

• Komodo Edit

• Komodo IDE

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

¿Consultas?

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

MUCHAS GRACIAS

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

Herramientas del Desarrollador Moderno

Andrés Villarreal andrezrv.com@andrezrv_hq