Upload
albert-jessurum
View
3.910
Download
3
Tags:
Embed Size (px)
Citation preview
Friday, June 15, 12
Friday, June 15, 12
ALBERT JESSURUM
Friday, June 15, 12
ALBERT JESSURUM
•Desarrollador en Acilia
Friday, June 15, 12
ALBERT JESSURUM
•Desarrollador en Acilia
• Venezolano
Friday, June 15, 12
ALBERT JESSURUM
•Desarrollador en Acilia
• Venezolano
•@ajessu
Friday, June 15, 12
ALBERT JESSURUM
•Desarrollador en Acilia
• Venezolano
•@ajessu
• http://github.com/ajessu
Friday, June 15, 12
ALBERT JESSURUM
•Desarrollador en Acilia
• Venezolano
•@ajessu
• http://github.com/ajessu
• Symfony Fan
Friday, June 15, 12
ALBERT JESSURUM
•Desarrollador en Acilia
• Venezolano
•@ajessu
• http://github.com/ajessu
• Symfony Fan
Friday, June 15, 12
PHP ESTA CAMBIANDO
Friday, June 15, 12
UN POCO DE HISTORIA
Friday, June 15, 12
PHP4 Y PRINCIPIOS DE PHP5
Friday, June 15, 12
Friday, June 15, 12
• “Framework” no era la palabra mas bienvenida
Friday, June 15, 12
• “Framework” no era la palabra mas bienvenida
• “CMS” no tan mala
Friday, June 15, 12
Y LLEGO RAILS
Friday, 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, CodeIgniter
Friday, June 15, 12
• La palabra “Framework” empezó a ser “aceptada”
• Symfony, Zend, Cake, CodeIgniter
• Se satisfacen necesidades comunes de usuarios
Friday, June 15, 12
• La palabra “Framework” empezó a ser “aceptada”
• Symfony, Zend, Cake, CodeIgniter
• Se satisfacen necesidades comunes de usuarios
•Descargadas como un paquete entero
Friday, June 15, 12
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...
Friday, June 15, 12
• ¿Quieres usar solo una parte de un Framework?
• Baja TODO el framework e intenta usar una parte...
• Excepto que tiene dependencias
Friday, June 15, 12
• ¿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 frameworks
Friday, June 15, 12
FRAMEWORKS RELOADED
Friday, June 15, 12
Friday, June 15, 12
• Componentes de frameworks mas desacoplados
Friday, June 15, 12
• Componentes de frameworks mas desacoplados
• Librerías de único uso externas
Friday, June 15, 12
• Componentes de frameworks mas desacoplados
• Librerías de único uso externas
•MicroFrameworks
Friday, June 15, 12
• Componentes de frameworks mas desacoplados
• Librerías de único uso externas
•MicroFrameworks
•MicroPHP Manifesto
Friday, June 15, 12
¿MICROPHP MANIFESTO?http://microphp.org/
Friday, June 15, 12
SOY UN DESARROLLADOR PHP
Friday, June 15, 12
•No soy un desarrollador Symfony, ni Zend, ni CakePHP
SOY UN DESARROLLADOR PHP
Friday, June 15, 12
•No soy un desarrollador Symfony, ni Zend, ni CakePHP
• PHP ya es suficientemente complicado
SOY UN DESARROLLADOR PHP
Friday, June 15, 12
ME GUSTA CONSTRUIR COSAS PEQUEÑAS
Friday, June 15, 12
•Me gusta construir cosas pequeñas con propósitos simples
ME GUSTA CONSTRUIR COSAS PEQUEÑAS
Friday, June 15, 12
•Me gusta construir cosas pequeñas con propósitos simples
•Me gusta construir cosas que resuelvan problemas
ME GUSTA CONSTRUIR COSAS PEQUEÑAS
Friday, June 15, 12
•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 grandes
ME GUSTA CONSTRUIR COSAS PEQUEÑAS
Friday, June 15, 12
Y MAS COSAS SOBRE MENOS CODIGO
Friday, June 15, 12
Y MAS COSAS SOBRE MENOS CODIGO
•Quiero escribir menos código, no mas
Friday, June 15, 12
Y MAS COSAS SOBRE MENOS CODIGO
•Quiero escribir menos código, no mas
•Quiero código simple y sencillo de leer
Friday, June 15, 12
¿Y TODO ESTO QUE TIENE QUE VER CON SYMFONY2?
Friday, June 15, 12
COMPONENTES DESACOPLADOS
Friday, June 15, 12
COMPONENTES LIBRERÍAS
DESACOPLADAS
Friday, June 15, 12
CUMPLEN UNA SOLA FUNCIÓN
Friday, June 15, 12
CUMPLEN UNA SOLA FUNCIÓN BIEN
Friday, June 15, 12
UNIX PHILOSOPHY
Friday, June 15, 12
UNIX PHILOSOPHY“Write programs that do one thing and do it well”
Friday, June 15, 12
COMPOSERManejador de dependencias
Friday, June 15, 12
SEARCH > php composer.phar search pdf
Friday, June 15, 12
PACKAGISTsearch
Friday, June 15, 12
{ "require": { "itbz/libmergepdf": "1.0.*" }}
composer.json
Friday, June 15, 12
php composer.phar install
Friday, June 15, 12
<?php
$m = new \itbz\libmergepdf\Merger();$m->addFromFile('foo.pdf');$m->addFromFile('bar.pdf',
new \itbz\libmergepdf\Pages('1-10'));
file_put_contents('foobar.pdf', $m->merge());
Friday, June 15, 12
¿FÁCIL NO?
Friday, June 15, 12
LIBRERIAS EN SYMFONY2
Friday, June 15, 12
MONOLOG
Friday, June 15, 12
{ "require": { "monolog/monolog": "1.*" }}
composer.json
Friday, June 15, 12
<?php
use Monolog\Logger;use Monolog\Handler\StreamHandler;
// 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
# app/config/config.yml
monolog: handlers: main: type: stream path: /direccion/a/tu.log level: warning
MonologBundle
Friday, June 15, 12
ASSETIC
Friday, June 15, 12
<?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
<?php
$writer = new AssetWriter('/direccion/al/directorio/publico'
);$writer->writeManagerAssets($lazyAm);
$css = $lazyAm->get('main')->dump();
Friday, June 15, 12
# 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.jar
AsseticBundle
Friday, June 15, 12
<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 %}
Twig Template
Friday, June 15, 12
IMAGINELibreria de manipulacion de imagenes para PHP 5.3+
Friday, June 15, 12
<?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');
Redimensionar con GD
Friday, June 15, 12
<?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');
Redimensionar con ImageMagick
Friday, June 15, 12
<?php
$width = //anchura final$height = //altura final$imagine = new Imagine\Gd\Imagine();$imagine->open('/direccion/a/imagen.png') ->resize(new Imagine\Box($width, $height)) ->save('/direccion/a/redimensionada/imagen.png');
Redimensionar con Imagine (GD)
Friday, June 15, 12
<?php
$width = //anchura final$height = //altura final$imagine = new Imagine\Imagick\Imagine();$imagine->open('/direccion/a/imagen.png') ->resize(new Imagine\Box($width, $height)) ->save('/direccion/a/redimensionada/imagen.png');
Redimensionar con Imagine (ImageMagick)
Friday, June 15, 12
<?php
$imagine = new Imagine\Gd\Imagine();
$mode = Imagine\ImageInterface::THUMBNAIL_OUTBOUND;//o modo$mode = Imagine\ImageInterface::THUMBNAIL_INSET;
$imagine->open('/direccion/a/logo.png') ->thumbnail(new Imagine\Box(100, 100), $mode) ->save('/direccion/a/logo/thumbs/logo.png');
Creación de thumbs
Friday, June 15, 12
# app/config/config.yml
liip_imagine: filter_sets: my_thumb: quality: 75 filters: thumbnail: { size: [120, 90], mode: outbound }
LiipImagineBundle
Friday, June 15, 12
# app/config/config.yml
liip_imagine: filter_sets: my_thumb: quality: 75 filters: thumbnail: { size: [120, 90], mode: outbound }
LiipImagineBundle
<img src="{{ '/relative/path/to/image.jpg' | imagine_filter('my_thumb') }}"/>
Friday, June 15, 12
Y MUCHAS MAS!
Friday, June 15, 12
PIMPLEContenedor de Inyección de dependencias
https://github.com/fabpot/Pimple
Friday, June 15, 12
GUZZLE / BUZZClientes HTTP
https://github.com/guzzle/guzzle https://github.com/kriswallsmith/buzz
Comparación entre ambas y otras:http://groups.drupal.org/node/233173
Friday, June 15, 12
GOUTTEWeb scrapping
https://github.com/fabpot/Goutte
Friday, June 15, 12
GAUFRETTEAbstraccion de sistema de archivos
https://github.com/KnpLabs/Gaufrette
Friday, June 15, 12
QUIERO MAS...
Friday, June 15, 12
http://microphp.org/code.html
Friday, June 15, 12
http://packagist.org/packages/
Friday, June 15, 12
PHP NO CAMBIA SOLO
Friday, June 15, 12
LO CAMBIAS TU
Friday, 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 comer
Friday, June 15, 12
Friday, June 15, 12
La proxima vez que tengas una necesidad.
Friday, June 15, 12
BUSCA PRIMERO! PUEDE QUE YA ESTE INVENTADOLa proxima vez que tengas una necesidad.
Friday, June 15, 12
¿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?
Friday, June 15, 12
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
PHP no mejora solo
Friday, June 15, 12
LO MEJORAS TUPHP no mejora solo
Friday, June 15, 12
PHP ES UNA COMUNIDAD Y DEPENDE DE TODOS
Friday, June 15, 12
ES FÁCILCONTRIBUYE AL ECOSISTEMA
Friday, June 15, 12
¿PREGUNTAS?
Friday, June 15, 12
•Albert Jessurum
•http://github.com/ajessu
•@ajessu
•https://connect.sensiolabs.com/profile/ajessu
Friday, June 15, 12
• 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-framework
REFERENCIAS
Friday, June 15, 12