Sunday, July 3, 2011
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