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.

deSymfony 2012 - El entorno de Symfony2

4,403 views

Published on

  • Dating for everyone is here: ♥♥♥ http://bit.ly/2F4cEJi ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Follow the link, new dating source: ❶❶❶ http://bit.ly/2F4cEJi ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

deSymfony 2012 - El entorno de Symfony2

  1. 1. Friday, June 15, 12
  2. 2. Friday, June 15, 12
  3. 3. ALBERT JESSURUMFriday, June 15, 12
  4. 4. ALBERT JESSURUM • Desarrollador en AciliaFriday, June 15, 12
  5. 5. ALBERT JESSURUM • Desarrollador en Acilia • VenezolanoFriday, June 15, 12
  6. 6. ALBERT JESSURUM • Desarrollador en Acilia • Venezolano • @ajessuFriday, June 15, 12
  7. 7. ALBERT JESSURUM • Desarrollador en Acilia • Venezolano • @ajessu • http://github.com/ajessuFriday, June 15, 12
  8. 8. ALBERT JESSURUM • Desarrollador en Acilia • Venezolano • @ajessu • http://github.com/ajessu • Symfony FanFriday, June 15, 12
  9. 9. ALBERT JESSURUM • Desarrollador en Acilia • Venezolano • @ajessu • http://github.com/ajessu • Symfony FanFriday, June 15, 12
  10. 10. PHP ESTA CAMBIANDOFriday, June 15, 12
  11. 11. UN POCO DE HISTORIAFriday, June 15, 12
  12. 12. PHP4 Y PRINCIPIOS DE PHP5Friday, June 15, 12
  13. 13. Friday, June 15, 12
  14. 14. • “Framework” no era la palabra mas bienvenidaFriday, June 15, 12
  15. 15. • “Framework” no era la palabra mas bienvenida • “CMS” no tan malaFriday, June 15, 12
  16. 16. Y LLEGO RAILSFriday, June 15, 12
  17. 17. FRAMEWORKS = ¡BIEN!Friday, June 15, 12
  18. 18. Friday, June 15, 12
  19. 19. • La palabra “Framework” empezó a ser “aceptada”Friday, June 15, 12
  20. 20. • La palabra “Framework” empezó a ser “aceptada” • Symfony, Zend, Cake, CodeIgniterFriday, June 15, 12
  21. 21. • La palabra “Framework” empezó a ser “aceptada” • Symfony, Zend, Cake, CodeIgniter • Se satisfacen necesidades comunes de usuariosFriday, June 15, 12
  22. 22. • La palabra “Framework” empezó a ser “aceptada” • Symfony, Zend, Cake, CodeIgniter • Se satisfacen necesidades comunes de usuarios • Descargadas como un paquete enteroFriday, June 15, 12
  23. 23. FRAMEWORKS = ¿BIEN?Friday, June 15, 12
  24. 24. Friday, June 15, 12
  25. 25. • ¿Quieres usar solo una parte de un Framework?Friday, June 15, 12
  26. 26. • ¿Quieres usar solo una parte de un Framework? • Baja TODO el framework e intenta usar una parte...Friday, June 15, 12
  27. 27. • ¿Quieres usar solo una parte de un Framework? • Baja TODO el framework e intenta usar una parte... • Excepto que tiene dependenciasFriday, June 15, 12
  28. 28. • ¿Quieres usar solo una parte de un Framework? • Baja TODO el framework e intenta usar una parte... • Excepto que tiene dependencias • Se empieza a ver un cambio de mentalidad sobre frameworksFriday, June 15, 12
  29. 29. FRAMEWORKS RELOADEDFriday, June 15, 12
  30. 30. Friday, June 15, 12
  31. 31. • Componentes de frameworks mas desacopladosFriday, June 15, 12
  32. 32. • Componentes de frameworks mas desacoplados • Librerías de único uso externasFriday, June 15, 12
  33. 33. • Componentes de frameworks mas desacoplados • Librerías de único uso externas • MicroFrameworksFriday, June 15, 12
  34. 34. • Componentes de frameworks mas desacoplados • Librerías de único uso externas • MicroFrameworks • MicroPHP ManifestoFriday, June 15, 12
  35. 35. ¿MICROPHP MANIFESTO? http://microphp.org/Friday, June 15, 12
  36. 36. SOY UN DESARROLLADOR PHPFriday, June 15, 12
  37. 37. SOY UN DESARROLLADOR PHP • No soy un desarrollador Symfony, ni Zend, ni CakePHPFriday, June 15, 12
  38. 38. SOY UN DESARROLLADOR PHP • No soy un desarrollador Symfony, ni Zend, ni CakePHP • PHP ya es suficientemente complicadoFriday, June 15, 12
  39. 39. ME GUSTA CONSTRUIR COSAS PEQUEÑASFriday, June 15, 12
  40. 40. ME GUSTA CONSTRUIR COSAS PEQUEÑAS • Me gusta construir cosas pequeñas con propósitos simplesFriday, June 15, 12
  41. 41. ME GUSTA CONSTRUIR COSAS PEQUEÑAS • Me gusta construir cosas pequeñas con propósitos simples • Me gusta construir cosas que resuelvan problemasFriday, June 15, 12
  42. 42. ME GUSTA CONSTRUIR COSAS PEQUEÑAS • Me gusta construir cosas pequeñas con propósitos simples • Me gusta construir cosas que resuelvan problemas • Me gusta construir cosas pequeñas que trabajen juntas para solucionar problemas mas grandesFriday, June 15, 12
  43. 43. Y MAS COSAS SOBRE MENOS CODIGOFriday, June 15, 12
  44. 44. Y MAS COSAS SOBRE MENOS CODIGO • Quiero escribir menos código, no masFriday, June 15, 12
  45. 45. Y MAS COSAS SOBRE MENOS CODIGO • Quiero escribir menos código, no mas • Quiero código simple y sencillo de leerFriday, June 15, 12
  46. 46. ¿Y TODO ESTO QUE TIENE QUE VER CON SYMFONY2?Friday, June 15, 12
  47. 47. COMPONENTES DESACOPLADOSFriday, June 15, 12
  48. 48. COMPONENTES LIBRERÍAS DESACOPLADASFriday, June 15, 12
  49. 49. CUMPLEN UNA SOLA FUNCIÓNFriday, June 15, 12
  50. 50. CUMPLEN UNA SOLA FUNCIÓN BIENFriday, June 15, 12
  51. 51. UNIX PHILOSOPHYFriday, June 15, 12
  52. 52. UNIX PHILOSOPHY “Write programs that do one thing and do it well”Friday, June 15, 12
  53. 53. COMPOSER Manejador de dependenciasFriday, June 15, 12
  54. 54. SEARCH > php composer.phar search pdfFriday, June 15, 12
  55. 55. PACKAGIST searchFriday, June 15, 12
  56. 56. composer.json { "require": { "itbz/libmergepdf": "1.0.*" } }Friday, June 15, 12
  57. 57. php composer.phar installFriday, June 15, 12
  58. 58. <?php $m = new itbzlibmergepdfMerger(); $m->addFromFile(foo.pdf); $m->addFromFile(bar.pdf, new itbzlibmergepdfPages(1-10) ); file_put_contents(foobar.pdf, $m->merge());Friday, June 15, 12
  59. 59. ¿FÁCIL NO?Friday, June 15, 12
  60. 60. LIBRERIAS EN SYMFONY2Friday, June 15, 12
  61. 61. MONOLOGFriday, June 15, 12
  62. 62. composer.json { "require": { "monolog/monolog": "1.*" } }Friday, June 15, 12
  63. 63. <?php use MonologLogger; use MonologHandlerStreamHandler; // crear un canal de log $log = new Logger(name); $log->pushHandler( new StreamHandler( direccion/a/tu.log, Logger::WARNING) ); // añadir record al log $log->addWarning(Foo); $log->addError(Bar);Friday, June 15, 12
  64. 64. MonologBundle # app/config/config.yml monolog: handlers: main: type: stream path: /direccion/a/tu.log level: warningFriday, June 15, 12
  65. 65. ASSETICFriday, June 15, 12
  66. 66. <?php $yui = new CssCompressorFilter( /direccion/a/tu/yuicompressor.jar ); $fm = new FilterManager(); $fm->set(yui_css, $yui); $factory = new AssetFactory(/direccion/al/css); $factory->setAssetManager(new AssetManager()); $factory->setFilterManager($fm); $formula = array( array(overall.css, social.css), array(yui_css), ); $lazyAm = new LazyAssetManager($factory); $lazyAm->setFormula(main, $formula);Friday, June 15, 12
  67. 67. <?php $writer = new AssetWriter( /direccion/al/directorio/publico ); $writer->writeManagerAssets($lazyAm); $css = $lazyAm->get(main)->dump();Friday, June 15, 12
  68. 68. AsseticBundle # app/config/config.yml assetic: debug: %kernel.debug% use_controller: false bundles: [ ] #java: /usr/bin/java filters: cssrewrite: ~ yui_css: jar: %kernel.root_dir%/Resources/java/yuicomp.jarFriday, June 15, 12
  69. 69. Twig Template <link href="{{ asset(css/reset.css) }}" rel="stylesheet" type="text/css" /> <link href="{{ asset(css/960.css) }}" rel="stylesheet" type="text/css" /> <link href="{{ asset(css/main.css) }}" rel="stylesheet" type="text/css" /> {% stylesheets @AcmeFooBundle/Resources/public/css/* filter=yui_css %} <link rel="stylesheet" type="text/css" href="{{ asset_url }}" /> {% endstylesheets %}Friday, June 15, 12
  70. 70. IMAGINE Libreria de manipulacion de imagenes para PHP 5.3+Friday, June 15, 12
  71. 71. Redimensionar con GD <?php $width = //anchura final $height = //altura final $src = imagecreatefrompng(/direccion/a/imagen.png); $dest = imagecreatetruecolor($width, $height); imagealphablending($dest, false); imagesavealpha($dest, true); imagecopyresampled($dest, $src, 0, 0, 0, 0, $width, $height, imagesx($src), imagesy($src)); imagepng($dest,/direccion/a/redimensionada/image.png);Friday, June 15, 12
  72. 72. Redimensionar con ImageMagick <?php $width = //anchura final $height = //altura final $image = new Imagick(/direccion/a/imagen.png); $image->adaptiveResizeImage($width, $height); $image->writeImage(/direccion/a/redimensionada/imagen.png);Friday, June 15, 12
  73. 73. Redimensionar con Imagine (GD) <?php $width = //anchura final $height = //altura final $imagine = new ImagineGdImagine(); $imagine->open(/direccion/a/imagen.png) ->resize(new ImagineBox($width, $height)) ->save(/direccion/a/redimensionada/imagen.png);Friday, June 15, 12
  74. 74. Redimensionar con Imagine (ImageMagick) <?php $width = //anchura final $height = //altura final $imagine = new ImagineImagickImagine(); $imagine->open(/direccion/a/imagen.png) ->resize(new ImagineBox($width, $height)) ->save(/direccion/a/redimensionada/imagen.png);Friday, June 15, 12
  75. 75. Creación de thumbs <?php $imagine = new ImagineGdImagine(); $mode = ImagineImageInterface::THUMBNAIL_OUTBOUND; //o modo $mode = ImagineImageInterface::THUMBNAIL_INSET; $imagine->open(/direccion/a/logo.png) ->thumbnail(new ImagineBox(100, 100), $mode) ->save(/direccion/a/logo/thumbs/logo.png);Friday, June 15, 12
  76. 76. LiipImagineBundle # app/config/config.yml liip_imagine: filter_sets: my_thumb: quality: 75 filters: thumbnail: { size: [120, 90], mode: outbound }Friday, June 15, 12
  77. 77. LiipImagineBundle # app/config/config.yml liip_imagine: filter_sets: my_thumb: quality: 75 filters: thumbnail: { size: [120, 90], mode: outbound }<img  src="{{  /relative/path/to/image.jpg  |  imagine_filter(my_thumb)  }}"/>Friday, June 15, 12
  78. 78. Y MUCHAS MAS!Friday, June 15, 12
  79. 79. PIMPLE Contenedor de Inyección de dependencias https://github.com/fabpot/PimpleFriday, June 15, 12
  80. 80. GUZZLE / BUZZ Clientes HTTP https://github.com/guzzle/guzzle https://github.com/kriswallsmith/buzz Comparación entre ambas y otras: http://groups.drupal.org/node/233173Friday, June 15, 12
  81. 81. GOUTTE Web scrapping https://github.com/fabpot/GoutteFriday, June 15, 12
  82. 82. GAUFRETTE Abstraccion de sistema de archivos https://github.com/KnpLabs/GaufretteFriday, June 15, 12
  83. 83. QUIERO MAS...Friday, June 15, 12
  84. 84. http://microphp.org/code.htmlFriday, June 15, 12
  85. 85. http://packagist.org/packages/Friday, June 15, 12
  86. 86. http://knpbundles.com/Friday, June 15, 12
  87. 87. PHP NO CAMBIA SOLOFriday, June 15, 12
  88. 88. LO CAMBIAS TUFriday, June 15, 12
  89. 89. ¿PHP es feo?Friday, June 15, 12
  90. 90. SI ¿PHP es feo?Friday, June 15, 12
  91. 91. ¿PHP es inconsistente?Friday, June 15, 12
  92. 92. SI ¿PHP es inconsistente?Friday, June 15, 12
  93. 93. ¿Funciona?Friday, June 15, 12
  94. 94. SI ¿Funciona?Friday, June 15, 12
  95. 95. SI ¿Funciona? y también nos da de comerFriday, June 15, 12
  96. 96. Friday, June 15, 12
  97. 97. La proxima vez que tengas una necesidad.Friday, June 15, 12
  98. 98. BUSCA PRIMERO! PUEDE QUE YA ESTE INVENTADO La proxima vez que tengas una necesidad.Friday, June 15, 12
  99. 99. ¿No hace lo que necesitas?Friday, June 15, 12
  100. 100. FORK! ¿No hace lo que necesitas?Friday, June 15, 12
  101. 101. ¿Mejoraste alguna funcionalidad?Friday, June 15, 12
  102. 102. CONTRIBUYE! ¿Mejoraste alguna funcionalidad?Friday, June 15, 12
  103. 103. ¿Intentaste hacer algo, y estuviste medio día pegandote con ello y por fin has dado con la solución?Friday, June 15, 12
  104. 104. DOCUMENTA! ¿Intentaste hacer algo, y estuviste medio día pegandote con ello y por fin has dado con la solución?Friday, June 15, 12
  105. 105. PHP no mejora soloFriday, June 15, 12
  106. 106. LO MEJORAS TU PHP no mejora soloFriday, June 15, 12
  107. 107. PHP ES UNA COMUNIDAD Y DEPENDE DE TODOSFriday, June 15, 12
  108. 108. ES FÁCIL CONTRIBUYE AL ECOSISTEMAFriday, June 15, 12
  109. 109. ¿PREGUNTAS?Friday, June 15, 12
  110. 110. • Albert Jessurum • http://github.com/ajessu • @ajessu • https://connect.sensiolabs.com/profile/ajessuFriday, June 15, 12
  111. 111. REFERENCIAS • http://www.slideshare.net/avalanche123/introduction-toimagine • http://www.slideshare.net/pmjones88/decoupled-libraries-for- php-54-the-aura-project • http://www.slideshare.net/kriswallsmith/introducing-assetic- nyphp • https://speakerdeck.com/u/richardmiller/p/what-do-i-get-from- the-full-stack-frameworkFriday, June 15, 12

×