Friday, June 15, 12
Friday, June 15, 12
ALBERT JESSURUMFriday, June 15, 12
ALBERT JESSURUM    • Desarrollador    en AciliaFriday, June 15, 12
ALBERT JESSURUM    • Desarrollador    en Acilia    • VenezolanoFriday, June 15, 12
ALBERT JESSURUM    • Desarrollador    en Acilia    • Venezolano    • @ajessuFriday, June 15, 12
ALBERT JESSURUM    • Desarrollador    en Acilia    • Venezolano    • @ajessu    • http://github.com/ajessuFriday, June 15,...
ALBERT JESSURUM    • Desarrollador         en Acilia    • Venezolano    • @ajessu    • http://github.com/ajessu    • Symfo...
ALBERT JESSURUM    • Desarrollador         en Acilia    • Venezolano    • @ajessu    • http://github.com/ajessu    • Symfo...
PHP ESTA CAMBIANDOFriday, June 15, 12
UN POCO DE HISTORIAFriday, June 15, 12
PHP4 Y PRINCIPIOS DE PHP5Friday, June 15, 12
Friday, June 15, 12
• “Framework” no   era la palabra mas bienvenidaFriday, June 15, 12
• “Framework” no        era la palabra mas bienvenida    • “CMS” no        tan malaFriday, June 15, 12
Y LLEGO RAILSFriday, June 15, 12
FRAMEWORKS = ¡BIEN!Friday, June 15, 12
Friday, June 15, 12
• La         palabra “Framework” empezó a ser “aceptada”Friday, June 15, 12
• La         palabra “Framework” empezó a ser “aceptada”    • Symfony, Zend, Cake, CodeIgniterFriday, June 15, 12
• La         palabra “Framework” empezó a ser “aceptada”    • Symfony, Zend, Cake, CodeIgniter    • Se         satisfacen ...
• La         palabra “Framework” empezó a ser “aceptada”    • Symfony, Zend, Cake, CodeIgniter    • Se         satisfacen ...
FRAMEWORKS = ¿BIEN?Friday, June 15, 12
Friday, June 15, 12
• ¿Quieres        usar solo una parte de un Framework?Friday, June 15, 12
• ¿Quieres        usar solo una parte de un Framework?    • Baja TODO         el framework e intenta usar una parte...Frid...
• ¿Quieres        usar solo una parte de un Framework?    • Baja TODO          el framework e intenta usar una parte...   ...
• ¿Quieres        usar solo una parte de un Framework?    • Baja TODO          el framework e intenta usar una parte...   ...
FRAMEWORKS RELOADEDFriday, June 15, 12
Friday, June 15, 12
• Componentes     de frameworks mas desacopladosFriday, June 15, 12
• Componentes          de frameworks mas desacoplados    • Librerías       de único uso externasFriday, June 15, 12
• Componentes          de frameworks mas desacoplados    • Librerías       de único uso externas    • MicroFrameworksFrida...
• Componentes          de frameworks mas desacoplados    • Librerías       de único uso externas    • MicroFrameworks    •...
¿MICROPHP MANIFESTO?                            http://microphp.org/Friday, June 15, 12
SOY UN DESARROLLADOR                       PHPFriday, June 15, 12
SOY UN DESARROLLADOR                       PHP    • No              soy un desarrollador Symfony, ni Zend, ni CakePHPFrida...
SOY UN DESARROLLADOR                       PHP    • No              soy un desarrollador Symfony, ni Zend, ni CakePHP    •...
ME GUSTA CONSTRUIR                       COSAS PEQUEÑASFriday, June 15, 12
ME GUSTA CONSTRUIR                        COSAS PEQUEÑAS    • Me              gusta construir cosas pequeñas con propósito...
ME GUSTA CONSTRUIR                        COSAS PEQUEÑAS    • Me              gusta construir cosas pequeñas con propósito...
ME GUSTA CONSTRUIR                        COSAS PEQUEÑAS    • Me              gusta construir cosas pequeñas con propósito...
Y MAS COSAS SOBRE MENOS               CODIGOFriday, June 15, 12
Y MAS COSAS SOBRE MENOS               CODIGO    • Quiero          escribir menos código, no masFriday, June 15, 12
Y MAS COSAS SOBRE MENOS               CODIGO    • Quiero          escribir menos código, no mas    • Quiero          códig...
¿Y TODO ESTO QUE TIENE            QUE VER CON SYMFONY2?Friday, June 15, 12
COMPONENTES                      DESACOPLADOSFriday, June 15, 12
COMPONENTES                         LIBRERÍAS                      DESACOPLADASFriday, June 15, 12
CUMPLEN UNA SOLA                          FUNCIÓNFriday, June 15, 12
CUMPLEN UNA SOLA                        FUNCIÓN BIENFriday, June 15, 12
UNIX PHILOSOPHYFriday, June 15, 12
UNIX PHILOSOPHY                      “Write programs that do one thing and do it well”Friday, June 15, 12
COMPOSER                      Manejador de dependenciasFriday, June 15, 12
SEARCH                      > php composer.phar search pdfFriday, June 15, 12
PACKAGIST                         searchFriday, June 15, 12
composer.json                      {                          "require": {                              "itbz/libmergepdf"...
php composer.phar installFriday, June 15, 12
<?php              $m = new itbzlibmergepdfMerger();              $m->addFromFile(foo.pdf);              $m->addFromFile(b...
¿FÁCIL NO?Friday, June 15, 12
LIBRERIAS EN SYMFONY2Friday, June 15, 12
MONOLOGFriday, June 15, 12
composer.json                      {                          "require": {                              "monolog/monolog":...
<?php          use MonologLogger;          use MonologHandlerStreamHandler;          // crear un canal de log          $lo...
MonologBundle                      # app/config/config.yml                      monolog:                          handlers...
ASSETICFriday, June 15, 12
<?php      $yui = new CssCompressorFilter(                /direccion/a/tu/yuicompressor.jar              );      $fm = new...
<?php                      $writer = new AssetWriter(                              /direccion/al/directorio/publico       ...
AsseticBundle           # app/config/config.yml           assetic:               debug:           %kernel.debug%          ...
Twig Template    <link href="{{ asset(css/reset.css) }}" rel="stylesheet" type="text/css" />    <link href="{{ asset(css/9...
IMAGINE                      Libreria de manipulacion de imagenes para PHP 5.3+Friday, June 15, 12
Redimensionar con GD           <?php           $width = //anchura final           $height = //altura final           $src ...
Redimensionar con ImageMagick           <?php           $width = //anchura final           $height = //altura final       ...
Redimensionar con Imagine                                (GD)           <?php           $width = //anchura final          ...
Redimensionar con Imagine                           (ImageMagick)           <?php           $width = //anchura final      ...
Creación de thumbs           <?php           $imagine = new ImagineGdImagine();           $mode = ImagineImageInterface::T...
LiipImagineBundle      # app/config/config.yml      liip_imagine:          filter_sets:              my_thumb:            ...
LiipImagineBundle      # app/config/config.yml      liip_imagine:          filter_sets:              my_thumb:            ...
Y MUCHAS MAS!Friday, June 15, 12
PIMPLE                      Contenedor de Inyección de dependencias                          https://github.com/fabpot/Pim...
GUZZLE / BUZZ                                   Clientes HTTP                         https://github.com/guzzle/guzzle    ...
GOUTTE                                 Web scrapping                      https://github.com/fabpot/GoutteFriday, June 15,...
GAUFRETTE                       Abstraccion de sistema de archivos                      https://github.com/KnpLabs/Gaufret...
QUIERO MAS...Friday, June 15, 12
http://microphp.org/code.htmlFriday, June 15, 12
http://packagist.org/packages/Friday, June 15, 12
http://knpbundles.com/Friday, June 15, 12
PHP NO CAMBIA SOLOFriday, June 15, 12
LO CAMBIAS TUFriday, June 15, 12
¿PHP es feo?Friday, June 15, 12
SI                      ¿PHP es feo?Friday, June 15, 12
¿PHP es inconsistente?Friday, June 15, 12
SI                      ¿PHP es inconsistente?Friday, June 15, 12
¿Funciona?Friday, June 15, 12
SI                      ¿Funciona?Friday, June 15, 12
SI                              ¿Funciona?                      y también nos da de comerFriday, June 15, 12
Friday, June 15, 12
La proxima vez que tengas una necesidad.Friday, June 15, 12
BUSCA PRIMERO! PUEDE QUE         YA ESTE INVENTADO                      La proxima vez que tengas una necesidad.Friday, Ju...
¿No hace lo que necesitas?Friday, June 15, 12
FORK!                      ¿No hace lo que necesitas?Friday, June 15, 12
¿Mejoraste alguna funcionalidad?Friday, June 15, 12
CONTRIBUYE!                      ¿Mejoraste alguna funcionalidad?Friday, June 15, 12
¿Intentaste hacer algo, y estuviste medio día pegandote con ello                     y por fin has dado con la solución?Fri...
DOCUMENTA!      ¿Intentaste hacer algo, y estuviste medio día pegandote con ello                     y por fin has dado con...
PHP no mejora soloFriday, June 15, 12
LO MEJORAS TU                        PHP no mejora soloFriday, June 15, 12
PHP ES UNA COMUNIDAD Y             DEPENDE DE TODOSFriday, June 15, 12
ES FÁCIL     CONTRIBUYE AL ECOSISTEMAFriday, June 15, 12
¿PREGUNTAS?Friday, June 15, 12
• Albert          Jessurum    • http://github.com/ajessu    • @ajessu    • https://connect.sensiolabs.com/profile/ajessuFri...
REFERENCIAS    • http://www.slideshare.net/avalanche123/introduction-toimagine    • http://www.slideshare.net/pmjones88/de...
Upcoming SlideShare
Loading in …5
×

deSymfony 2012 - El entorno de Symfony2

4,180 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,180
On SlideShare
0
From Embeds
0
Number of Embeds
2,343
Actions
Shares
0
Downloads
100
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

×