Developers
-
Upload
felipe-vergara -
Category
Documents
-
view
213 -
download
0
description
Transcript of Developers
![Page 1: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/1.jpg)
Sunday, July 3, 2011
![Page 2: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/2.jpg)
Sunday, July 3, 2011
![Page 3: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/3.jpg)
•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
![Page 4: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/4.jpg)
Entorno Productivo
Sistema Operativo
Sunday, July 3, 2011
![Page 5: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/5.jpg)
Entorno Productivo - sistema operativo
•Mac OS X )basado en Unix(•Linux•Windows
Opciones disponibles
Sunday, July 3, 2011
![Page 6: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/6.jpg)
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
![Page 7: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/7.jpg)
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
![Page 8: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/8.jpg)
Entorno Productivo - sistema operativo
En cambio, si el servidor es Windows, idealmente el desarrollo debe ser en Windows.
Regla #1
Sunday, July 3, 2011
![Page 9: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/9.jpg)
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
![Page 10: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/10.jpg)
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
![Page 11: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/11.jpg)
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
![Page 12: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/12.jpg)
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
![Page 13: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/13.jpg)
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
![Page 14: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/14.jpg)
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
![Page 15: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/15.jpg)
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
![Page 16: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/16.jpg)
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
![Page 17: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/17.jpg)
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
![Page 18: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/18.jpg)
Entorno Productivo
Stacks
Sunday, July 3, 2011
![Page 19: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/19.jpg)
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
![Page 20: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/20.jpg)
Entorno Productivo
Editor / IDE
Sunday, July 3, 2011
![Page 21: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/21.jpg)
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
![Page 22: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/22.jpg)
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
![Page 23: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/23.jpg)
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
![Page 24: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/24.jpg)
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
![Page 25: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/25.jpg)
Entorno Productivo
Source Control
Sunday, July 3, 2011
![Page 26: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/26.jpg)
Entorno Productivo - source control
No importa que tan chico sea el proyecto, usen source control!
Sunday, July 3, 2011
![Page 27: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/27.jpg)
Entorno Productivo - source control
Git...
Opciones disponibles
Sunday, July 3, 2011
![Page 28: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/28.jpg)
Entorno Productivo - source control
ok... también existen:
Opciones disponibles
•hg )mercurial(•SVN )subversion(•CVS )alguien se acuerda?(
Sunday, July 3, 2011
![Page 29: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/29.jpg)
Entorno Productivo - source control
Pero Git + github revolucionaron el mundo de proyectos open source
Sunday, July 3, 2011
![Page 30: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/30.jpg)
Entorno Productivo
Testing
Sunday, July 3, 2011
![Page 31: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/31.jpg)
Entorno Productivo - Testing
•PHPUnit•SimpleTest
Opciones disponibles - Unit Tests
Sunday, July 3, 2011
![Page 32: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/32.jpg)
Entorno Productivo - Testing
Opciones disponibles - Continuous Integration
•CruiseControl•phpUnderControl•Sismo • Jenkins
http://jenkins-php.org/
Sunday, July 3, 2011
![Page 33: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/33.jpg)
Entorno Productivo - Testing
Opciones disponibles - Frontend
•Symfony2•Selenium RC•Mink
Sunday, July 3, 2011
![Page 34: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/34.jpg)
Entorno Productivo
Debugging
Sunday, July 3, 2011
![Page 35: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/35.jpg)
Entorno Productivo - debugging
Opciones disponibles
•Xdebug•breakpoints•stack traces•profiler
•Zend Studio•FirePHP•print_r)( / var_dump)( / echo :-(
Sunday, July 3, 2011
![Page 36: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/36.jpg)
Entorno Productivo - debugging
configuración PHP
•display_errors = 0•error_log = /var/log/php.log•error_reporting = -1
Sunday, July 3, 2011
![Page 37: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/37.jpg)
Entorno Productivo
Deployment
Sunday, July 3, 2011
![Page 38: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/38.jpg)
Entorno Productivo - deployment
Opciones disponibles
•capistrano•capifony )symfony(•phing•git / svn / etc•rsync•ftp
Sunday, July 3, 2011
![Page 39: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/39.jpg)
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
![Page 40: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/40.jpg)
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
![Page 41: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/41.jpg)
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
![Page 42: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/42.jpg)
Entorno Productivo
Tips
Sunday, July 3, 2011
![Page 43: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/43.jpg)
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
![Page 44: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/44.jpg)
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
![Page 45: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/45.jpg)
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
![Page 46: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/46.jpg)
Entorno Productivo - tips
Aliases en BASH
alias phplog="tail -f /var/log/apache2/php_errors.log"
$ phplog
Sunday, July 3, 2011
![Page 47: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/47.jpg)
Entorno Productivo - tips
pbcopy & pbpaste )Mac(
cat archivo.txt | pbcopy
pbpaste > nuevo.txt
Sunday, July 3, 2011
![Page 48: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/48.jpg)
Entorno Productivo
¿Preguntas?
Sunday, July 3, 2011
![Page 49: Developers](https://reader034.fdocuments.us/reader034/viewer/2022042822/563dbb5e550346aa9aac9159/html5/thumbnails/49.jpg)
Entorno Productivo
¡MUCHAS GRACIAS!
Slides: http://slideshare.net/pgodelTwitter: @pgodel
IRC Freenode: pgodel
Sunday, July 3, 2011