Entorno de desarrollo productivo

49
Sunday, July 3, 2011

description

Colección de tips para incrementar la productividad del desarrollador PHP/Symfony.

Transcript of Entorno de desarrollo productivo

Sunday, July 3, 2011

Sunday, July 3, 2011

•Argentino, viviendo en Miami desde 1999, EE.UU.

•Programador PHP, Symfony, entre otros•Fundador de la lista de PHP en español http://

news.php.net/php.general.es/3 )antes de Julio 2000(

•Pasé el control a php.net con más de 1000 subscriptos•Co-fundador de ServerGrove Networks⁃ fundada en 2005 ⁃ servicios de hosting especializado en PHP y Symfony

Quién es Pablo Godel?"

Sunday, July 3, 2011

Entorno Productivo

Sistema Operativo

Sunday, July 3, 2011

Entorno Productivo - sistema operativo

•Mac OS X )basado en Unix(•Linux•Windows

Opciones disponibles

Sunday, July 3, 2011

Entorno Productivo - sistema operativo

El entorno de desarrollo idealmente tiene que ser lo más cercano posible al servidor de producción.

Regla #1

Sunday, July 3, 2011

Entorno Productivo - sistema operativo

Si el servidor corre Linux, el desarrollo debería ser Linux o algún Unix, incluso Mac OS X.

Regla #1

Sunday, July 3, 2011

Entorno Productivo - sistema operativo

En cambio, si el servidor es Windows, idealmente el desarrollo debe ser en Windows.

Regla #1

Sunday, July 3, 2011

Entorno Productivo - sistema operativo

Todo esto es muy importante para evitar sorpresas )que generalmente son malas porque son problemas(

Regla #1

Sunday, July 3, 2011

Entorno Productivo - sistema operativo

Razones:

Regla #1

•Falta de extensiones de PHP•Diferencia en versiones de PHP y extensions•Diferencia en configuración de Apache y PHP

)php.ini(•Diferencia en el sistema de archivos )case sensitive/

insensitive(

Sunday, July 3, 2011

Entorno Productivo - sistema operativo

Diferencia en el sistema de archivos )case sensitive/insensitive(

•Linux )case sensitve(•Windows )case insensitive(•Mac OS X )por defecto, case insensitive, se puede

cambiar pero trae problemas(

Sunday, July 3, 2011

Entorno Productivo - sistema operativo

Diferencia en el sistema de archivos )case sensitive/insensitive(<?php

use Symfony\Component\ClassLoader\UniversalClassLoader;

$loader = new UniversalClassLoader();$loader->registerNamespaces(array( 'Symfony' => array(__DIR__.'/../vendor/symfony/src', __DIR__.'/../vendor/bundles'), 'Application' => __DIR__.'/../src', 'Sensio' => __DIR__.'/../vendor/bundles',

Archivo: src/Application/miBundle/clase.php

$clase = new Application/MiBundle/Clase()

Sunday, July 3, 2011

Entorno Productivo - sistema operativo

•VirtualBox )gratis( •VMware Player )gratis(•VMWare Fusion•Parallels Desktop

No olvidarse de los VMs

Permiten correr Linux dentro de Windows o Mac OS X

Sunday, July 3, 2011

Entorno Productivo - sistema operativo

Otra alternativa es tener un servidor dedicado o virtual aparte que se pueda montar con SMB / NFS

Sunday, July 3, 2011

Entorno Productivo - sistema operativo

Los servidores virtuales tienen la ventaja que se pueden clonar para cuando se agrega un programador

al equipo.

Sunday, July 3, 2011

Entorno Productivo - sistema operativo

Jefes: ofrezcan al programador elegir su entorno de desarrollo. No hay nada más importante que sentirse

cómodo y manejar bien las herramientas.

Sunday, July 3, 2011

Entorno Productivo - sistema operativo

Usen lo que les sienta mejor y donde sean más productivos, pero prueben cosas nuevas.

Regla #2

Sunday, July 3, 2011

Entorno Productivo

Stacks

Sunday, July 3, 2011

Entorno Productivo - Stacks

•WAMP )Windows(•XAMP )Mac(•Zend Server CE )Win,Mac,Linux(•Liip PHP )Mac(

http://php-osx.liip.ch/

Opciones disponibles

Sunday, July 3, 2011

Entorno Productivo

Editor / IDE

Sunday, July 3, 2011

Entorno Productivo - Editor/IDE

•Netbeans 7 PHP )gratis(•phpStorm 2.1 )$84 personal, $168 comercial, gratis

para proyectos OS(•Eclipse )gratis(•Zend Studio 8 )$299(•Komodo IDE 6 )$295 sin soporte/upgrades(

Opciones disponibles

Textmate (Mac), vi/vim, emacs, notepad, etc.

Sunday, July 3, 2011

Entorno Productivo - Editor/IDE

¿Por qué un IDE?

• integración con Xdebug / otros•breakpoints y watches•code completion•syntax highligher•PHPDoc •Twig! )phpStorm(•muchas más!

Sunday, July 3, 2011

Entorno Productivo - Editor/IDE

¿Por qué no un IDE?

•generalmente requieren mucha memoria•curva de aprendizaje•familiarización con herramientas ya conocidas y

dominadas•costo

Sunday, July 3, 2011

Entorno Productivo - Editor/IDE

Jefes: ofrezcan al programador elegir su entorno de desarrollo. No hay nada más importante que sentirse

cómodo y manejar bien las herramientas.

Sunday, July 3, 2011

Entorno Productivo

Source Control

Sunday, July 3, 2011

Entorno Productivo - source control

No importa que tan chico sea el proyecto, usen source control!

Sunday, July 3, 2011

Entorno Productivo - source control

Git...

Opciones disponibles

Sunday, July 3, 2011

Entorno Productivo - source control

ok... también existen:

Opciones disponibles

•hg )mercurial(•SVN )subversion(•CVS )alguien se acuerda?(

Sunday, July 3, 2011

Entorno Productivo - source control

Pero Git + github revolucionaron el mundo de proyectos open source

Sunday, July 3, 2011

Entorno Productivo

Testing

Sunday, July 3, 2011

Entorno Productivo - Testing

•PHPUnit•SimpleTest

Opciones disponibles - Unit Tests

Sunday, July 3, 2011

Entorno Productivo - Testing

Opciones disponibles - Continuous Integration

•CruiseControl•phpUnderControl•Sismo • Jenkins

http://jenkins-php.org/

Sunday, July 3, 2011

Entorno Productivo - Testing

Opciones disponibles - Frontend

•Symfony2•Selenium RC•Mink

Sunday, July 3, 2011

Entorno Productivo

Debugging

Sunday, July 3, 2011

Entorno Productivo - debugging

Opciones disponibles

•Xdebug•breakpoints•stack traces•profiler

•Zend Studio•FirePHP•print_r)( / var_dump)( / echo :-(

Sunday, July 3, 2011

Entorno Productivo - debugging

configuración PHP

•display_errors = 0•error_log = /var/log/php.log•error_reporting = -1

Sunday, July 3, 2011

Entorno Productivo

Deployment

Sunday, July 3, 2011

Entorno Productivo - deployment

Opciones disponibles

•capistrano•capifony )symfony(•phing•git / svn / etc•rsync•ftp

Sunday, July 3, 2011

Entorno Productivo - deployment

Capifony

• Instalar capistrano⁃ gem install capifony

• Inicializamos el proyecto⁃ capifony .

• Configuramos el deployment con config/deploy.rb• Seteamos el servidor⁃ cap deploy:setup

• Hacemos el deployment⁃ cap deploy

• Y la próxima vez y la otra y la otra…:⁃ cap deploy

Sunday, July 3, 2011

Entorno Productivo - deployment

set :application, "sg11"set :domain, "servergrove.com"set :deploy_to, "/var/www/vhosts/sg11.servergrove.com"

set :repository, "[email protected]:servergrove/sg11.git"set :scm, :gitset :branch, "master"

set :user, "deployer"ssh_options[:port] = 22123ssh_options[:forward_agent] = trueset :use_sudo, false

role :web, "sg100.servergrove.com" # Your HTTP server, Apache/etc

# directories that will be shared between all deploymentsset :shared_children, [app_path + "/logs", web_path + "/uploads"]

set :update_vendors, false

set :dump_assetic_assets, true

Capifony

Sunday, July 3, 2011

Entorno Productivo - deployment

Capifony

`-- /var/www/vhosts/sg11.servergrove.com |-- current ! /var/www/vhosts/sg11.servergrove.com/releases/20100512131539 |-- releases |-- 20100512131539 |-- 20100509150741 `-- 20100509145325 `-- shared |-- log |-- config `-- databases.yml `-- web `-- uploads

Sunday, July 3, 2011

Entorno Productivo

Tips

Sunday, July 3, 2011

Entorno Productivo - tips

•ssh-keygen -t dsa•~/.ssh/config

Host *ForwardAgent yes

•ssh-add

Ahora, cuando nos conectemos al servidor remoto y ejecutemos git pull, utilizará el key de nuestra computadora.

SSH

Sunday, July 3, 2011

Entorno Productivo - tips

•El poder del archivo hosts•Unix: /etc/hosts•Windows: /Windows/System32/etc/hosts

Permite acceder a un IP sin tener que cambiar el DNSPermite crear virtual hosts en el servidor local de desarrollo, ej: desymfony.local

Sunday, July 3, 2011

Entorno Productivo - tips

El poder del archivo hosts127.0.0.1 localhost symfony2rc2.local rockmongo.local mysql_admin.local maestro.local desymfony.local sg11.local sgcontrol2.local

UseCanonicalName Off

VirtualDocumentRoot /Users/pgodel/Sites/%0/web

<Location /> AllowOverride All Options +FollowSymLinks</Location>

Apache Virtual Document Root

• ~/Sites/desymfony.local• ~/Sites/sg11.local• …

Sunday, July 3, 2011

Entorno Productivo - tips

Aliases en BASH

alias phplog="tail -f /var/log/apache2/php_errors.log"

$ phplog

Sunday, July 3, 2011

Entorno Productivo - tips

pbcopy & pbpaste )Mac(

cat archivo.txt | pbcopy

pbpaste > nuevo.txt

Sunday, July 3, 2011

Entorno Productivo

¿Preguntas?

Sunday, July 3, 2011

Entorno Productivo

¡MUCHAS GRACIAS!

Slides: http://slideshare.net/pgodelTwitter: @pgodel

IRC Freenode: pgodel

Sunday, July 3, 2011