• Like
Entorno de desarrollo productivo
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Entorno de desarrollo productivo

  • 15,156 views
Published

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

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

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
15,156
On SlideShare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
223
Comments
0
Likes
4

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Sunday, July 3, 2011
  • 2. Sunday, July 3, 2011
  • 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. Entorno Productivo Sistema OperativoSunday, July 3, 2011
  • 5. Entorno Productivo - sistema operativo Opciones disponibles • Mac OS X )basado en Unix( • Linux • WindowsSunday, July 3, 2011
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Entorno Productivo StacksSunday, July 3, 2011
  • 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. Entorno Productivo Editor / IDESunday, July 3, 2011
  • 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. 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. 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. 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. Entorno Productivo Source ControlSunday, July 3, 2011
  • 26. Entorno Productivo - source control No importa que tan chico sea el proyecto, usen source control!Sunday, July 3, 2011
  • 27. Entorno Productivo - source control Opciones disponibles Git...Sunday, July 3, 2011
  • 28. Entorno Productivo - source control Opciones disponibles ok... también existen: • hg )mercurial( • SVN )subversion( • CVS )alguien se acuerda?(Sunday, July 3, 2011
  • 29. Entorno Productivo - source control Pero Git + github revolucionaron el mundo de proyectos open sourceSunday, July 3, 2011
  • 30. Entorno Productivo TestingSunday, July 3, 2011
  • 31. Entorno Productivo - Testing Opciones disponibles - Unit Tests • PHPUnit • SimpleTestSunday, July 3, 2011
  • 32. Entorno Productivo - Testing Opciones disponibles - Continuous Integration • CruiseControl • phpUnderControl • Sismo • Jenkins http://jenkins-php.org/Sunday, July 3, 2011
  • 33. Entorno Productivo - Testing Opciones disponibles - Frontend • Symfony2 • Selenium RC • MinkSunday, July 3, 2011
  • 34. Entorno Productivo DebuggingSunday, July 3, 2011
  • 35. Entorno Productivo - debugging Opciones disponibles • Xdebug • breakpoints • stack traces • profiler • Zend Studio • FirePHP • print_r)( / var_dump)( / echo :-(Sunday, July 3, 2011
  • 36. Entorno Productivo - debugging configuración PHP • display_errors = 0 • error_log = /var/log/php.log • error_reporting = -1Sunday, July 3, 2011
  • 37. Entorno Productivo DeploymentSunday, July 3, 2011
  • 38. Entorno Productivo - deployment Opciones disponibles • capistrano • capifony )symfony( • phing • git / svn / etc • rsync • ftpSunday, July 3, 2011
  • 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. 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. 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. Entorno Productivo TipsSunday, July 3, 2011
  • 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. 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. 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. Entorno Productivo - tips Aliases en BASH alias phplog="tail -f /var/log/apache2/php_errors.log" $ phplogSunday, July 3, 2011
  • 47. Entorno Productivo - tips pbcopy & pbpaste )Mac( cat archivo.txt | pbcopy pbpaste > nuevo.txtSunday, July 3, 2011
  • 48. Entorno Productivo ¿Preguntas?Sunday, July 3, 2011
  • 49. Entorno Productivo ¡MUCHAS GRACIAS! Slides: http://slideshare.net/pgodel Twitter: @pgodel IRC Freenode: pgodelSunday, July 3, 2011