Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Entorno de desarrollo productivo

16,537 views

Published on

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

Published in: Technology

Entorno de desarrollo productivo

  1. 1. Sunday, July 3, 2011
  2. 2. Sunday, July 3, 2011
  3. 3. Quién es Pablo Godel?" • 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 SymfonySunday, July 3, 2011
  4. 4. Entorno Productivo Sistema OperativoSunday, July 3, 2011
  5. 5. Entorno Productivo - sistema operativo Opciones disponibles • Mac OS X )basado en Unix( • Linux • WindowsSunday, July 3, 2011
  6. 6. Entorno Productivo - sistema operativo Regla #1 El entorno de desarrollo idealmente tiene que ser lo más cercano posible al servidor de producción.Sunday, July 3, 2011
  7. 7. Entorno Productivo - sistema operativo Regla #1 Si el servidor corre Linux, el desarrollo debería ser Linux o algún Unix, incluso Mac OS X.Sunday, July 3, 2011
  8. 8. Entorno Productivo - sistema operativo Regla #1 En cambio, si el servidor es Windows, idealmente el desarrollo debe ser en Windows.Sunday, July 3, 2011
  9. 9. Entorno Productivo - sistema operativo Regla #1 Todo esto es muy importante para evitar sorpresas )que generalmente son malas porque son problemas(Sunday, July 3, 2011
  10. 10. Entorno Productivo - sistema operativo Regla #1 Razones: • 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
  11. 11. 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
  12. 12. Entorno Productivo - sistema operativo Diferencia en el sistema de archivos )case sensitive/ insensitive( <?php use SymfonyComponentClassLoaderUniversalClassLoader; $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
  13. 13. Entorno Productivo - sistema operativo No olvidarse de los VMs Permiten correr Linux dentro de Windows o Mac OS X • VirtualBox )gratis( • VMware Player )gratis( • VMWare Fusion • Parallels DesktopSunday, July 3, 2011
  14. 14. Entorno Productivo - sistema operativo Otra alternativa es tener un servidor dedicado o virtual aparte que se pueda montar con SMB / NFSSunday, July 3, 2011
  15. 15. 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
  16. 16. 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
  17. 17. Entorno Productivo - sistema operativo Regla #2 Usen lo que les sienta mejor y donde sean más productivos, pero prueben cosas nuevas.Sunday, July 3, 2011
  18. 18. Entorno Productivo StacksSunday, July 3, 2011
  19. 19. Entorno Productivo - Stacks Opciones disponibles • WAMP )Windows( • XAMP )Mac( • Zend Server CE )Win,Mac,Linux( • Liip PHP )Mac( http://php-osx.liip.ch/Sunday, July 3, 2011
  20. 20. Entorno Productivo Editor / IDESunday, July 3, 2011
  21. 21. Entorno Productivo - Editor/IDE Opciones disponibles • 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( Textmate (Mac), vi/vim, emacs, notepad, etc.Sunday, July 3, 2011
  22. 22. 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
  23. 23. Entorno Productivo - Editor/IDE ¿Por qué no un IDE? • generalmente requieren mucha memoria • curva de aprendizaje • familiarización con herramientas ya conocidas y dominadas • costoSunday, July 3, 2011
  24. 24. 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
  25. 25. Entorno Productivo Source ControlSunday, July 3, 2011
  26. 26. Entorno Productivo - source control No importa que tan chico sea el proyecto, usen source control!Sunday, July 3, 2011
  27. 27. Entorno Productivo - source control Opciones disponibles Git...Sunday, July 3, 2011
  28. 28. Entorno Productivo - source control Opciones disponibles ok... también existen: • hg )mercurial( • SVN )subversion( • CVS )alguien se acuerda?(Sunday, July 3, 2011
  29. 29. Entorno Productivo - source control Pero Git + github revolucionaron el mundo de proyectos open sourceSunday, July 3, 2011
  30. 30. Entorno Productivo TestingSunday, July 3, 2011
  31. 31. Entorno Productivo - Testing Opciones disponibles - Unit Tests • PHPUnit • SimpleTestSunday, July 3, 2011
  32. 32. Entorno Productivo - Testing Opciones disponibles - Continuous Integration • CruiseControl • phpUnderControl • Sismo • Jenkins http://jenkins-php.org/Sunday, July 3, 2011
  33. 33. Entorno Productivo - Testing Opciones disponibles - Frontend • Symfony2 • Selenium RC • MinkSunday, July 3, 2011
  34. 34. Entorno Productivo DebuggingSunday, July 3, 2011
  35. 35. Entorno Productivo - debugging Opciones disponibles • Xdebug • breakpoints • stack traces • profiler • Zend Studio • FirePHP • print_r)( / var_dump)( / echo :-(Sunday, July 3, 2011
  36. 36. Entorno Productivo - debugging configuración PHP • display_errors = 0 • error_log = /var/log/php.log • error_reporting = -1Sunday, July 3, 2011
  37. 37. Entorno Productivo DeploymentSunday, July 3, 2011
  38. 38. Entorno Productivo - deployment Opciones disponibles • capistrano • capifony )symfony( • phing • git / svn / etc • rsync • ftpSunday, July 3, 2011
  39. 39. 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 deploySunday, July 3, 2011
  40. 40. Entorno Productivo - deployment set :application, "sg11" set :domain, "servergrove.com" Capifony set :deploy_to, "/var/www/vhosts/sg11.servergrove.com" set :repository, "git@github.com:servergrove/sg11.git" set :scm, :git set :branch, "master" set :user, "deployer" ssh_options[:port] = 22123 ssh_options[:forward_agent] = true set :use_sudo, false role :web, "sg100.servergrove.com" # Your HTTP server, Apache/etc # directories that will be shared between all deployments set :shared_children, [app_path + "/logs", web_path + "/uploads"] set :update_vendors, false set :dump_assetic_assets, trueSunday, July 3, 2011
  41. 41. 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 `-- uploadsSunday, July 3, 2011
  42. 42. Entorno Productivo TipsSunday, July 3, 2011
  43. 43. Entorno Productivo - tips SSH • 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.Sunday, July 3, 2011
  44. 44. 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 DNS Permite crear virtual hosts en el servidor local de desarrollo, ej: desymfony.localSunday, July 3, 2011
  45. 45. Entorno Productivo - tips El poder del archivo hosts 127.0.0.1 localhost symfony2rc2.local rockmongo.local mysql_admin.local maestro.local desymfony.local sg11.local sgcontrol2.local Apache Virtual Document Root UseCanonicalName Off VirtualDocumentRoot /Users/pgodel/Sites/%0/web <Location /> AllowOverride All Options +FollowSymLinks </Location> • ~/Sites/desymfony.local • ~/Sites/sg11.local •…Sunday, July 3, 2011
  46. 46. Entorno Productivo - tips Aliases en BASH alias phplog="tail -f /var/log/apache2/php_errors.log" $ phplogSunday, July 3, 2011
  47. 47. Entorno Productivo - tips pbcopy & pbpaste )Mac( cat archivo.txt | pbcopy pbpaste > nuevo.txtSunday, July 3, 2011
  48. 48. Entorno Productivo ¿Preguntas?Sunday, July 3, 2011
  49. 49. Entorno Productivo ¡MUCHAS GRACIAS! Slides: http://slideshare.net/pgodel Twitter: @pgodel IRC Freenode: pgodelSunday, July 3, 2011

×