"Al rico" PHP
-
Upload
carlos-buenosvinos -
Category
Technology
-
view
5.019 -
download
2
description
Transcript of "Al rico" PHP
![Page 1: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/1.jpg)
“AL RICO” PHPCositas que deberíais saber y que probablamente
ya sabéis y que en caso contrario deberías saber, porquesino lo sabéis, vais a sufrir...
Carlos Buenosvinos (@buenosvinos)Castellón, Universitat Jaume I (decharlas.com)
16 de Mayo de 201018:00 - 20:00
![Page 2: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/2.jpg)
CARLOS BUENOSVINOSCertified Zend PHP and Zend Framework Engineer
Certified Scrum Master (CSM)PHP Barcelona User Group Cofounder
Scrum Master and Tech Lead at Emagister.com
![Page 3: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/3.jpg)
REQUISITOS Y CALENTAMIENTOBrazos, Piernas y Vergüenza
![Page 4: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/4.jpg)
PREGUNTILLAS¡Se admiten en cualquier momento!
![Page 5: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/5.jpg)
NIVEL DE SUFRIMIENTO¿Cuál es vuestro nivel de tolerancia al dolor?
![Page 6: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/6.jpg)
BROKEN WINDOW PARADIGMClaaaro, como ya está rota...
![Page 7: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/7.jpg)
TECHNICAL DEBT¡Atención a los intereses!
![Page 8: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/8.jpg)
OBJETIVOS
1.Desarrolladores: Conocer qué se espera de un buen profesional del desarrollo web en PHP.
2.Tech Leads y CTOs: Evaluar el nivel de madurez de vuestro equipo y ciclo de desarrollo.
3.Todos: Descrubir conceptos nuevos que investigar en casa y aplicar en vuestro día a día
4.Yo: Comerme un buen arrocito
![Page 9: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/9.jpg)
CONSEJILLOS DE LA ABUELARemedios, infusiones y cataplasmas
![Page 10: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/10.jpg)
TAGS DE LA CHARLA
• IDE, Coding Standards, Inline Documentation, Control de Versiones, Issue Tracker, Wiki, Metodología, Frameworks, Seguridad, Debugging, Performance, Entornos, Deployment, Search and Indexing (Solr), Logging
![Page 11: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/11.jpg)
¿POR QUÉ?...
![Page 12: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/12.jpg)
CARACTERÍSTICAS (I)
• Lenguaje pensado por y para la Web
• Fácil y Popular
• Hasta en la sopa
• Pragmático
• Time to Market
![Page 13: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/13.jpg)
CARACTERÍSTICAS (II)
• Easy to learn, difficult to master
• Inconsistencia (a mejorar en PHP 6.0)
• Relación con otros lenguajes (Ruby, Python, JAVA, .NET, Perl)
![Page 14: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/14.jpg)
IDEEscribiendo código...
![Page 15: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/15.jpg)
IDE
• ¿Todos los developers el mismo IDE o cada uno el que quiera?
• Existentes: Eclipse PDT, NetBeans, Zend Studio, Komodo, VIM, etc.
• A considerar : Cross referencing, Control de Versiones, Search and Replace potente (+ integraciones con Check Style, Unit Tests, etc.)
• Trucos
• Intentar unificar al máximo el entorno de desarrollo (menos documentación, casos y mejor soporte interno)
• Meter en la WIKI todo lo relacionado con la instalación, configuración, etc.
![Page 16: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/16.jpg)
CODING STANDARDVamos a ver si nos aclaramos todos :)
![Page 17: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/17.jpg)
CODING STANDARDS
• Define reglas de codificación y garantiza la legibilidad del código
• Uno propio vs. uno ya existente (DRW)
• Existentes en PHP (PEAR y Zend Framework)
• Herramientas
• phpcs (PHP Code Sniffer): Analiza el código fuente y genera resultados sobre las violaciones
• Trucos
• Documentarlo en la Wiki y crear un responsable
• Integrarlo como un precommit hook en vuestro VCS
• Integrarlo con vuestro servidor de integración continua para tener informes semanales con la evolución de la violaciones en la codificación y tomar acciones
![Page 18: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/18.jpg)
INLINE DOCUMENTATIONDocumentar es un rollo!
![Page 19: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/19.jpg)
INLINE DOCUMENTATION
• ¿Documentamos el código o no?
• A: “No haría falta documentar si los nombre de los métodos son claros”
• B: “Lo documentamos todo” (type hinting del IDE)
• Herramientas
• phpDoc
• Doxygen
• Trucos
• Política de documentación a la Wiki
• Integrarlo con el servidor de integración continua para tener la documentación actualizada con cada build
• ¡La documentación no está en el Control de Versiones!
![Page 20: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/20.jpg)
CONTROL VERSION SYSTEM¿Qué ha pasado? ¿La has liado parda?
![Page 21: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/21.jpg)
CONTROL VERSION SYSTEM
• SVN, GIT o Mercurial (A poder ser, los dos primeros)
• Herramienta web de visualización (por ejemplo, websvn)
• Evitar las branches tanto como sea posible (no inventéis políticas de branching especiales)
• Trucos
• Utilizar los hooks para realizar acciones interesantes (Vincular commits con tareas en un Bug tracker, php -l, comprobar los errores de conding standard, etc.)
• Uso de “externals”
![Page 22: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/22.jpg)
ISSUE TRACKERQuién hizo qué, cuándo y dónde
![Page 23: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/23.jpg)
ISSUE TRACKER
• Necesitáis un sitio donde gestionar el avance de los proyectos y tener visibilidad del qué, quién y cuándo.
• Opciones
• JIRA (Atención con la versión “starter” - 60 $ - Todos los productos hasta 10 usuarios)
• Redmine, Mantis, Trac, Bugzilla, etc.
• Trucos
• Buscar soluciones que se integren fácilmente con otros elementos del sistema (Tracker + SVN, Tracker + IDE, etc.)
• Buscar plugins que faciliten el Code Review siempre que sea posible.
![Page 24: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/24.jpg)
WIKI¿Cómo se hace...?
![Page 25: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/25.jpg)
WIKI
• Todas las políticas de Coding Standard, Inline Documentation, Especificaciones, aspectos de arquitectura, cómo pedir las vacaciones, etc.
• Opciones:
• Confluence (hermana de JIRA)
• Twiki, Mediawiki, etc.
• Trucos
• Cread apartados diferentes y asignadles responsable (es una miniresponsabilidad asumible)
• Flexibilidad con los permisos (de menos a más)
![Page 26: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/26.jpg)
METHODOLOGYUno para todos y todos para uno
![Page 27: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/27.jpg)
METHODOLOGY
• “Es mejor una metodología de desarrollo mala que no tener metodología”
• Clasificación
• Pesadas: Waterfall, UP, etc.
• Ágiles: Scrum, XP, etc.
• La tendencia del mercado es utilizar Scrum y los resultados presentan incrementos de productividad entre el 200% y 300%. Algunos ejemplos: Softonic, Emagister, Infojobs, etc.
• Cómo empezar :
• http://www.scrumalliance.org/pages/scrum_student_resources
• “Scrum and XP from the trenches”
![Page 28: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/28.jpg)
PHP FRAMEWORKSHabía una vez, un circo...
![Page 29: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/29.jpg)
PHP FRAMEWORKS
• Agrupan algunos principios fundamentales: DRY, DRW, KISS, etc.
• Ventajas: Desarrollador más competitivo, facilidad de contratación, mejora del tiempo de adaptación, reducción de mantinimiento, etc.
• Opciones: Zend Framework, Symfony, CodeIgniter, CakePHP, etc.
• Trucos
• Usadlos ya! Empezad con nuevos proyectos.
• Migrar componentes sueltos (Base de datos, templates, controladores, mails, etc.)
![Page 30: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/30.jpg)
LIBRARIES & COMPONENTSQue ya existe, que sí, que te lo digo yo...
![Page 31: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/31.jpg)
LIBRARIES & COMPONENTS
• Don’t reinvent the wheel
• Not invented here syndrome
• Extender y participar, no modificar
• Típicos: ORM (Doctrine, Propel), Templates (Smarty, Twig)
• Recomendaciones
• PEAR
• PHP Extensiones
• Github (http://github.com)
![Page 32: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/32.jpg)
SECURITYOhmmm...
![Page 33: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/33.jpg)
SECURITY
• Mantra: “Filter your input, scape your output” + Filter extension enabled
• Problemas típicos (80/20):
• SQL Injection (prepared statements)
• XSS (escapar la salida)
• Recomendaciones:
• “Essential PHP Security” (Chris Shiflett)
• “Guide to PHP Security” (Ilia Alshanetsky)
![Page 34: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/34.jpg)
DEBUGGING & PROFILINGPaso a paso...
![Page 35: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/35.jpg)
DEBUGGING
• Sobre Alt-tab debugging, Echo-debugging
• Recomendaciones:
• Xdebug (http://www.xdebug.org)
• Zend Debugger
• Profiling:
• Xdebug + Visualizador: (KCacheGrind, Webgrind, Xdebugtoolkit)
![Page 36: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/36.jpg)
UNIT TESTSQue te digo yo que funciona...
![Page 37: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/37.jpg)
UNIT TEST
• Una tarea no está acabada sino tiene los unit tests escritos, en verde y con una cobertura de > 80%
• Mantras: “Red, Green, Red, Green”, “Test, Code, Test, Refactor, Test”
• Coupling / Decoupling
• Herramientas
• phpUnit + (Db: commit/rollback | fixtures | DbUnit)
• Recomendaciones:
• Integrar los unit tests con el servidor de integración continua (*)
• La ejecución ha de durar del order de segundos
![Page 38: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/38.jpg)
AUTOMATED TESTSEstá vivo! Está viiiiiiivooooo!!
![Page 39: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/39.jpg)
AUTOMATED TESTS
• Selenium RC + Selenium Grid (http://seleniumhq.org/projects/)
• Dentro del Control de Versiones
• Utilizar el package “Selenium” que hay dentro de phpUnit.
• Vais a necesitar hierro! (Virtualización!)
• Recomendaciones:
• Integrar los tests funcionales con el servidor de integración continua (que los ejecute por la noche)
• Empezad por la funcionalidades críticas de vuestro negocio
![Page 40: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/40.jpg)
CONTINUOUS INTEGRATION5 minutos de ejercicio al día!
![Page 41: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/41.jpg)
CONTINUOUS INTEGRATION
• Opciones:
• Jenkins (antes conocido como Hudson)
• Cruise Control + phpUnderControl
• Xinc
• Recomendaciones
• Respetar el tempo de los jobs (unit tests = segundos, métricas = minutos, etc.)
• Mantener los builds estables lo máximo posible (si el build se rompre, la prioridad es arreglarlo)
![Page 42: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/42.jpg)
METRICSEn ocasiones... veo...
![Page 43: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/43.jpg)
METRICS
• Algunas métricas fáciles de generar y disponer:
• phpmd (Mess detection)
• phpcpd (Copy detection)
• pdepend (Dependencia entre paquetes)
• phpcs (Coding Standards)
• Recomendaciones
• Integrarlo con la herramienta de integración continua y evaluarlo semanalmente para poder tomar acciones al respecto.
![Page 44: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/44.jpg)
PERFORMANCEQue se las pela!
![Page 45: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/45.jpg)
PERFORMANCE
• Cache
• APC + Memcached (Output y Datos)
• Background Processing (Colas)
• Gearman, ActiveMQ, etc.
• Sharding
• Entornos de alta escritura (redes sociales)
• Client Side: CDN + YSlow and PageSpeed Suggestion
![Page 46: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/46.jpg)
DEPLOYMENTVamos que nos vamos...
![Page 47: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/47.jpg)
DEPLOYMENT
• Características de un buen deployment
• Puedo eligir que versión y en qué servidor
• Automático (100%) - Código, CDN, BBDD, etc.
• Menos de 15 min. aprox. para aplicaciones grandes
• Recomendaciones
• Generaos un script de deployment
• Automatizarlo usando “ant” o “phing”
• Capistrano (https://github.com/capistrano)
![Page 48: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/48.jpg)
ENVIRONMENTS¿Dónde estoy?
![Page 49: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/49.jpg)
DEPLOYMENT
• Asegurar que los entornos son lo más parecidos (también dentro del mismo nivel)
• php.ini, extensiones, apaches, usuarios, versiones, etc.
• Combinaciones
• Desarrollo, Test, Producción
• Desarrollo, Test, Acceptance, Producción
• Desarrollo, Test, Acceptance, Producción, Debug
• Recomendaciones
• Virtualización (VMWare Workstation)
• Puppet (https://github.com/puppetlabs/puppet)
![Page 50: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/50.jpg)
LOGGING¿Qué ha pasao’?
![Page 51: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/51.jpg)
DEPLOYMENT
• Utilizad el E_STRICT siempre que sea posible (¿nivel de sufrimiento?)
• No os compliquéis la vida: Syslog
• Logad en asíncrono con time out cortos
• Recomendaciones
• Syslog
• Splunk
![Page 52: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/52.jpg)
SEARCH¿Dónde está Wally?
![Page 53: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/53.jpg)
SEARCH
• ¿Necesitaréis FULL-TEXT searches?
• Soluciones nativas PHP son de bajo rendimiento
• Sphinx
• cliente propio dentro de la documentación
• Solr
• php-solr
• Solarium
![Page 54: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/54.jpg)
EQUIPOEl motor que mueve todas las cosas
![Page 55: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/55.jpg)
EQUIPO
• Formación interna semanal
• “Exigir” certificaciones
• Delegar y hacer que asuman responsabilidades por igual
• Positive thinking (ayudar a los demás)
![Page 56: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/56.jpg)
CONCLUSIONESY para acabar...
![Page 57: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/57.jpg)
CONCLUYENDO
• Estandarización significa que todo sea más sencillo (sobretodo en el largo plazo)
• Innovación significa “momentum”
• Cumplir los basics
• Crecer como empresa, equipo y profesional
![Page 58: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/58.jpg)
PREGUNTILLASÁnimo!
![Page 59: "Al rico" PHP](https://reader034.fdocuments.ec/reader034/viewer/2022052321/554a18ceb4c90507558b5365/html5/thumbnails/59.jpg)
MUCHÍSIMAS GRACIAS
“AL RICO” PHPCositas que deberíais saber y que probablamente
ya sabéis y que en caso contrario deberías saber, porquesino lo sabéis, vais a sufrir...
Carlos Buenosvinos (@buenosvinos)[email protected]
Castellón, Universitat Jaume I (decharlas.com)16 de Mayo de 2010
18:00 - 20:00