entorno de desarrollo productivo

49
Sunday, July 3, 2011

Upload: pablo-godel

Post on 18-Jan-2015

15.164 views

Category:

Technology


2 download

DESCRIPTION

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

TRANSCRIPT

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