Entorno de desarrollo productivo
-
Upload
pablo-godel -
Category
Technology
-
view
15.169 -
download
2
description
Transcript of Entorno de desarrollo productivo
•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
•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
•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
•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
No importa que tan chico sea el proyecto, usen source control!
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
•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
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
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
•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
¡MUCHAS GRACIAS!
Slides: http://slideshare.net/pgodelTwitter: @pgodel
IRC Freenode: pgodel
Sunday, July 3, 2011