SlideShare a Scribd company logo
1 of 38
Download to read offline
Código mantenible con
WordPress
Asier Marqués @asiermarques
De qué va esta charla
Abrir perspectiva sobre buenas prácticas de
desarrollo sobre este CMS
Mostrar código mantenible, cercano al que
crearíamos con Symfony2, Silex o Laravel
/me
Asier Marqués
simettric.com & 4visionshq.com
linkedin.com/in/asier
@asiermarques
Qué buscamos
• Reutilizar código
• Reutilizar código fuera de WordPress
• Una buena estructura de código
• Que el código sea testable
Tres pilares
• Modelo Vista Controlador
• Inyección de dependencias
• Twig como motor de templates
Inyección de
dependencias
¿Por qué?
HTTP
vs
WP_Query
Request y ejecución
1. Se recibe la petición HTTP
2. El sistema de routing hace el match de la ruta que
coincida con la url de la petición
3. Se crea el objeto WP_Query y las query_vars
4. En base al WP_Query se localiza el template
5. Se retorna el resultado
http://codex.wordpress.org/Plugin_API/Action_Reference
Request y ejecución
1. /category/animales = index.php?category=animales
2. new WP_Query( array( “category” => “animales”) );
3. theme/category.php
Inyección de dependencias
Nos permite hacer más portable y desacoplado
nuestro código.
• Pimple
• Symfony Dependency Injection
Inyección de dependencias
$container[“blog.repository”] = function ($c) use ($wp_query){
return new WP_BlogRepository( $wp_query );
};
$container[“blog.model”] = function($c){
return new BlogModel( $c[“blog.repository”] );
}
class WP_BlogRepository implements RepositoryInterface {
private $query;
function __construct( WP_Query $wp_query ){
$this->query = $wp_query;
}
function getPosts($page=1, $limit=20){
$this->query->query_vars = array(
“paged”=>$page,
“posts_per_page” => $limit
);
return $this->query->get_posts();
}
}
class MongoDB_BlogRepository implements RepositoryInterface {
[…]
function getPosts($page=1, $limit=20){
$posts = array();
[…]
return $posts;
}
}
class BlogModel {
private $_repository;
function __construct( RepositoryInterface $adapter ){
$this->_repository = $adapter;
}
function getPosts($page, $limit=20){
return $this->_repository->getPosts($page, $limit);
}
}
$model = $container[“blog.model”];
$posts = $model->getPosts();
¿MVC? ¿Twig?
Rutas
task_filter:
path: /task/{category}/{custom}
controller: TaskController::filterAction
task_detail:
path: /task/{id}
controller: TaskController::detailAction
Rutas en WordPress
add_action('init', function() {
add_rewrite_rule(
‘^tasks/([^/]*)/([^/]*)/?’,
’index.php?post_type=“task”&category=$matches[1]&custom=$matches[2]',
‘top'
);
       add_rewrite_tag('%custom%', '(([^/]*))');
});
Rutas en WordPress
Al crear la WP_Query, se incluyen los anteriores
parámetros:
$wp_query->query_vars[“post_type”]
$wp_query->query_vars[“category”]
$wp_query->query_vars[“custom”]
task_filter:
path: /task/{category}/{custom}
controller: TaskController::filterAction
task_detail:
path: /task/{id}
controller: TaskController::detailAction
function addRoute($name, $path, $controller_name){
preg_match_all(‘({w+})’, $path, $found_params);
$found_params = isset($found_params[0]) && is_array($found_params[0]) ?
$found_params[0] : array();
$url_params = array();
$regexp = $path;
foreach($found_params as $i=>$_param){
$_key = str_replace(array(“{“,”}”), “”, $_param);
$regexp = str_replace($_param, ‘(w+)’, $regexp);
$url_params[$_key] = ‘$matches[‘.($i+1).’]’;
}
$regexp = ‘^’ . $regexp . ‘$’;
$url = “index.php?” . http_build_query($params, ‘’, “&”);
$url = urldecode($url);
add_rewrite_rule($regexp, $url, ’top’);
Controlador
Loop personalizado
function replaceQuery( WP_Query $wp_query ){
if( $wp_query->is_front_page() ){
//cambiamos el loop de la portada
$wp_query = new WP_Query(array( “category” => 1 ));
//evitamos un loop infinito
remove_action(“replaceQuery”);
}
};
add_action(“pre_get_posts”, “replaceQuery”);
En el action parse_query
function match($wp_query){
if(isset($wp_query->query_vars[“__action”])) {
list( $controller_class,
$controller_action ) = explode(
“::”,
$wp_query->query_vars[“__action”]
);
$controller = new $controller_class($this->_container);
$callable = array( $controller, $controller_action );
call_user_func($callable, $wp_query);
}
}
Vista
Templates personalizadas
add_filter( 'template_include', function ( $template ) {
if ( is_page( get_option(“landing_page_id”) ) ) {
$template = __DIR__ . “/Templates/landing.php“;
}
return $template;
}
En un controlador
class BlogController extends BaseController{
function indexAction( Request $request, Container $container ) {
$model = $container->get( “blog.model” );
$page = $request->get(“page”, 1);
return $this->render(“blog/posts.php”, array(
“posts” => $model->getPosts( $page );
));
}
}
Render con filtro
class BaseController{
private $container;
function render( $template, $params=array() ){
add_filter( “template_include” , function() use ($template){
[…]
});
}
En un controlador
class BlogController extends BaseController{
function indexAction( Request $request, Container $container ) {
$model = $container->get( “blog.model” );
$page = $request->get(“page”, 1);
return $this->render(“blog/index.html.twig”, array(
“posts” => $model->getPosts( $page );
));
}
}
Twig
class BaseController{
private $container;
function render( $template, $params=array() ){
$twig = $container->get(“twig”);
$html = $twig->render( $template, $params );
wp_die( $html );
}
}
Herramientas
• Gestión de librerías: composer
• Inyección de dependencias: Symfony o Pimple
• Configuración: Yaml y Configuration Component
• Templates: Twig
Un par de cosas
más
Composer
WordPress no ofrece gestión de librerías ni
componentes por Composer
Por suerte existe el proyecto wpackagist.org
TDD
WordPress test framework:
https://github.com/nb/wordpress-tests.git
WP Mock
https://github.com/10up/wp_mock
http://slides.com/jlopezmo/test-driven-development-in-wordpress
//Code is poetry
Gracias.
¿Preguntas?
Asier Marqués
@asiermarques
asier@simettric.com

More Related Content

What's hot

Php excel
Php excelPhp excel
Php excelpcuseth
 
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y MigraciónSymfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y MigraciónRodrigo Miranda
 
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Ignacio Martín
 
Tutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigTutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigMarcos Labad
 
Programa que almacena en una base de datos las características de un carro co...
Programa que almacena en una base de datos las características de un carro co...Programa que almacena en una base de datos las características de un carro co...
Programa que almacena en una base de datos las características de un carro co...jbersosa
 
Wp config.php
Wp config.phpWp config.php
Wp config.phpgregozz
 
Haciendo Patria con Sinatra
Haciendo Patria con SinatraHaciendo Patria con Sinatra
Haciendo Patria con Sinatrafebuiles
 

What's hot (20)

Backend (sf2Vigo)
Backend (sf2Vigo)Backend (sf2Vigo)
Backend (sf2Vigo)
 
Php excel
Php excelPhp excel
Php excel
 
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y MigraciónSymfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
 
Introducción a los hooks
Introducción a los hooksIntroducción a los hooks
Introducción a los hooks
 
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
 
Zen AJAX - Programador PHP
Zen AJAX - Programador PHPZen AJAX - Programador PHP
Zen AJAX - Programador PHP
 
Tutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigTutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. Twig
 
Ireport
IreportIreport
Ireport
 
Ajax
AjaxAjax
Ajax
 
Programa que almacena en una base de datos las características de un carro co...
Programa que almacena en una base de datos las características de un carro co...Programa que almacena en una base de datos las características de un carro co...
Programa que almacena en una base de datos las características de un carro co...
 
Wp config.php
Wp config.phpWp config.php
Wp config.php
 
Introducción a Flask
Introducción a FlaskIntroducción a Flask
Introducción a Flask
 
Introducción a DJango
Introducción a DJangoIntroducción a DJango
Introducción a DJango
 
Desymfony 2011 - Twig
Desymfony 2011 - TwigDesymfony 2011 - Twig
Desymfony 2011 - Twig
 
Haciendo Patria con Sinatra
Haciendo Patria con SinatraHaciendo Patria con Sinatra
Haciendo Patria con Sinatra
 
(Muy breve) Introduccion a jQuery
(Muy breve) Introduccion a jQuery(Muy breve) Introduccion a jQuery
(Muy breve) Introduccion a jQuery
 
Doctrine2 sf2Vigo
Doctrine2 sf2VigoDoctrine2 sf2Vigo
Doctrine2 sf2Vigo
 
Sumaoctal
SumaoctalSumaoctal
Sumaoctal
 
Php
PhpPhp
Php
 
Zend_Acl
Zend_AclZend_Acl
Zend_Acl
 

Viewers also liked

How Symfony Changed My Life
How Symfony Changed My LifeHow Symfony Changed My Life
How Symfony Changed My LifeMatthias Noback
 
Symfony Guard Authentication: Fun with API Token, Social Login, JWT and more
Symfony Guard Authentication: Fun with API Token, Social Login, JWT and moreSymfony Guard Authentication: Fun with API Token, Social Login, JWT and more
Symfony Guard Authentication: Fun with API Token, Social Login, JWT and moreRyan Weaver
 
Keeping the frontend under control with Symfony and Webpack
Keeping the frontend under control with Symfony and WebpackKeeping the frontend under control with Symfony and Webpack
Keeping the frontend under control with Symfony and WebpackIgnacio Martín
 
Guard Authentication: Powerful, Beautiful Security
Guard Authentication: Powerful, Beautiful SecurityGuard Authentication: Powerful, Beautiful Security
Guard Authentication: Powerful, Beautiful SecurityRyan Weaver
 
Symfony: Your Next Microframework (SymfonyCon 2015)
Symfony: Your Next Microframework (SymfonyCon 2015)Symfony: Your Next Microframework (SymfonyCon 2015)
Symfony: Your Next Microframework (SymfonyCon 2015)Ryan Weaver
 
Symfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worldsSymfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worldsIgnacio Martín
 
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...Ryan Weaver
 
React + Redux Introduction
React + Redux IntroductionReact + Redux Introduction
React + Redux IntroductionNikolaus Graf
 
React JS and why it's awesome
React JS and why it's awesomeReact JS and why it's awesome
React JS and why it's awesomeAndrew Hull
 
Integrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationIntegrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationAndrew Rota
 
Creando Productos SaaS
Creando Productos SaaSCreando Productos SaaS
Creando Productos SaaSAsier Marqués
 
Refactorizando Pccomponentes.com con Symfony
Refactorizando Pccomponentes.com con SymfonyRefactorizando Pccomponentes.com con Symfony
Refactorizando Pccomponentes.com con SymfonyMario Marín
 
You Got React.js in My PHP
You Got React.js in My PHPYou Got React.js in My PHP
You Got React.js in My PHPTaylor Lovett
 
High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014
High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014
High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014Matthias Noback
 
Adding Realtime to your Projects
Adding Realtime to your ProjectsAdding Realtime to your Projects
Adding Realtime to your ProjectsIgnacio Martín
 
Integrating Node.js with PHP
Integrating Node.js with PHPIntegrating Node.js with PHP
Integrating Node.js with PHPLee Boynton
 

Viewers also liked (18)

How Symfony Changed My Life
How Symfony Changed My LifeHow Symfony Changed My Life
How Symfony Changed My Life
 
Symfony Guard Authentication: Fun with API Token, Social Login, JWT and more
Symfony Guard Authentication: Fun with API Token, Social Login, JWT and moreSymfony Guard Authentication: Fun with API Token, Social Login, JWT and more
Symfony Guard Authentication: Fun with API Token, Social Login, JWT and more
 
Keeping the frontend under control with Symfony and Webpack
Keeping the frontend under control with Symfony and WebpackKeeping the frontend under control with Symfony and Webpack
Keeping the frontend under control with Symfony and Webpack
 
Guard Authentication: Powerful, Beautiful Security
Guard Authentication: Powerful, Beautiful SecurityGuard Authentication: Powerful, Beautiful Security
Guard Authentication: Powerful, Beautiful Security
 
Symfony: Your Next Microframework (SymfonyCon 2015)
Symfony: Your Next Microframework (SymfonyCon 2015)Symfony: Your Next Microframework (SymfonyCon 2015)
Symfony: Your Next Microframework (SymfonyCon 2015)
 
Symfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worldsSymfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worlds
 
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
 
React + Redux Introduction
React + Redux IntroductionReact + Redux Introduction
React + Redux Introduction
 
React JS and why it's awesome
React JS and why it's awesomeReact JS and why it's awesome
React JS and why it's awesome
 
Integrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationIntegrating React.js Into a PHP Application
Integrating React.js Into a PHP Application
 
Introduction to Redux
Introduction to ReduxIntroduction to Redux
Introduction to Redux
 
Creando Productos SaaS
Creando Productos SaaSCreando Productos SaaS
Creando Productos SaaS
 
Refactorizando Pccomponentes.com con Symfony
Refactorizando Pccomponentes.com con SymfonyRefactorizando Pccomponentes.com con Symfony
Refactorizando Pccomponentes.com con Symfony
 
You Got React.js in My PHP
You Got React.js in My PHPYou Got React.js in My PHP
You Got React.js in My PHP
 
High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014
High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014
High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014
 
Adding Realtime to your Projects
Adding Realtime to your ProjectsAdding Realtime to your Projects
Adding Realtime to your Projects
 
PHP + Node.js
PHP + Node.jsPHP + Node.js
PHP + Node.js
 
Integrating Node.js with PHP
Integrating Node.js with PHPIntegrating Node.js with PHP
Integrating Node.js with PHP
 

Similar to Código mantenible con WordPress

Desarrollo de Themes de WordPress desde cero. @DarioBF en @WPBilbao
Desarrollo de Themes de WordPress desde cero. @DarioBF en @WPBilbaoDesarrollo de Themes de WordPress desde cero. @DarioBF en @WPBilbao
Desarrollo de Themes de WordPress desde cero. @DarioBF en @WPBilbaoDarío BF
 
ASP.NET MVC Core by Eduard Tomàs
ASP.NET MVC Core by Eduard TomàsASP.NET MVC Core by Eduard Tomàs
ASP.NET MVC Core by Eduard TomàsPlain Concepts
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryJavier P.
 
Introducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos WebIntroducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos WebFacundo E. Goñi Perez
 
Gustavo php
Gustavo phpGustavo php
Gustavo phpGustavo
 
Ejemplos de php_mysql
Ejemplos de php_mysqlEjemplos de php_mysql
Ejemplos de php_mysqlI LG
 
Endpoints Seguros en nuestra Rest-API
Endpoints Seguros en nuestra Rest-APIEndpoints Seguros en nuestra Rest-API
Endpoints Seguros en nuestra Rest-APIEric Zeidan
 
WordPress, mucho más que un CMS para Blogs!!!
WordPress, mucho más que un CMS para Blogs!!!WordPress, mucho más que un CMS para Blogs!!!
WordPress, mucho más que un CMS para Blogs!!!Daniel Bertinat
 
Programación móvil para superhéroes
Programación móvil para superhéroesProgramación móvil para superhéroes
Programación móvil para superhéroesSoftware Guru
 
Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletjubacalo
 
tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.comoctabio
 
PHP Tema 7 - Seguridad
PHP Tema 7 - SeguridadPHP Tema 7 - Seguridad
PHP Tema 7 - SeguridadSpacetoshare
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRJuan Belón Pérez
 

Similar to Código mantenible con WordPress (20)

Desarrollo de Themes de WordPress desde cero. @DarioBF en @WPBilbao
Desarrollo de Themes de WordPress desde cero. @DarioBF en @WPBilbaoDesarrollo de Themes de WordPress desde cero. @DarioBF en @WPBilbao
Desarrollo de Themes de WordPress desde cero. @DarioBF en @WPBilbao
 
9.laravel
9.laravel9.laravel
9.laravel
 
ASP.NET MVC Core
ASP.NET MVC CoreASP.NET MVC Core
ASP.NET MVC Core
 
ASP.NET MVC Core by Eduard Tomàs
ASP.NET MVC Core by Eduard TomàsASP.NET MVC Core by Eduard Tomàs
ASP.NET MVC Core by Eduard Tomàs
 
Laravel 5.1
Laravel 5.1Laravel 5.1
Laravel 5.1
 
Curso php y_mysql
Curso php y_mysqlCurso php y_mysql
Curso php y_mysql
 
APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 
Introducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos WebIntroducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos Web
 
Curso php y_my_sql
Curso php y_my_sqlCurso php y_my_sql
Curso php y_my_sql
 
Gustavo php
Gustavo phpGustavo php
Gustavo php
 
Ejemplos de php_mysql
Ejemplos de php_mysqlEjemplos de php_mysql
Ejemplos de php_mysql
 
Endpoints Seguros en nuestra Rest-API
Endpoints Seguros en nuestra Rest-APIEndpoints Seguros en nuestra Rest-API
Endpoints Seguros en nuestra Rest-API
 
WordPress, mucho más que un CMS para Blogs!!!
WordPress, mucho más que un CMS para Blogs!!!WordPress, mucho más que un CMS para Blogs!!!
WordPress, mucho más que un CMS para Blogs!!!
 
Programación móvil para superhéroes
Programación móvil para superhéroesProgramación móvil para superhéroes
Programación móvil para superhéroes
 
Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servlet
 
tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.com
 
PHP Y MYSQL
PHP Y MYSQLPHP Y MYSQL
PHP Y MYSQL
 
PHP Tema 7 - Seguridad
PHP Tema 7 - SeguridadPHP Tema 7 - Seguridad
PHP Tema 7 - Seguridad
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGR
 

More from Asier Marqués

Ejecución de servicios digitales y negocios en Internet
Ejecución de servicios digitales y negocios en InternetEjecución de servicios digitales y negocios en Internet
Ejecución de servicios digitales y negocios en InternetAsier Marqués
 
Desarrollo de Mobile Web Apps
Desarrollo de Mobile Web AppsDesarrollo de Mobile Web Apps
Desarrollo de Mobile Web AppsAsier Marqués
 
Presentación de la plataforma abierta Ubiqarama.org
Presentación de la plataforma abierta Ubiqarama.orgPresentación de la plataforma abierta Ubiqarama.org
Presentación de la plataforma abierta Ubiqarama.orgAsier Marqués
 
Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1
Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1
Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1Asier Marqués
 
Albero tech Day - De web a móvil con xamarin
Albero tech Day - De web a móvil con xamarinAlbero tech Day - De web a móvil con xamarin
Albero tech Day - De web a móvil con xamarinAsier Marqués
 
Bilbostack 2014: De web a móvil con Xamarin
Bilbostack 2014: De web a móvil con XamarinBilbostack 2014: De web a móvil con Xamarin
Bilbostack 2014: De web a móvil con XamarinAsier Marqués
 
APIs REST #devfestBilbao
APIs REST #devfestBilbaoAPIs REST #devfestBilbao
APIs REST #devfestBilbaoAsier Marqués
 
Silex para aplicaciones web MVC
Silex para aplicaciones web MVCSilex para aplicaciones web MVC
Silex para aplicaciones web MVCAsier Marqués
 
Servicios REST - PucelaTechDay
Servicios REST - PucelaTechDayServicios REST - PucelaTechDay
Servicios REST - PucelaTechDayAsier Marqués
 
Desarrollo de aplicaciones Windows8 para desarrolladores de internet
Desarrollo de aplicaciones Windows8 para desarrolladores de internetDesarrollo de aplicaciones Windows8 para desarrolladores de internet
Desarrollo de aplicaciones Windows8 para desarrolladores de internetAsier Marqués
 
BilboStack - Php en el 2012
BilboStack - Php en el 2012BilboStack - Php en el 2012
BilboStack - Php en el 2012Asier Marqués
 
4VisionsManager en WebDevBilbao
4VisionsManager en WebDevBilbao4VisionsManager en WebDevBilbao
4VisionsManager en WebDevBilbaoAsier Marqués
 
Proyectos fallidos: Rooms.fm en #webdevbilbao
Proyectos fallidos: Rooms.fm en #webdevbilbaoProyectos fallidos: Rooms.fm en #webdevbilbao
Proyectos fallidos: Rooms.fm en #webdevbilbaoAsier Marqués
 
Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Asier Marqués
 
Symfony, cloud computing y web escalables
Symfony, cloud computing y web escalablesSymfony, cloud computing y web escalables
Symfony, cloud computing y web escalablesAsier Marqués
 
Sistemas Microsoft Windows
Sistemas Microsoft WindowsSistemas Microsoft Windows
Sistemas Microsoft WindowsAsier Marqués
 

More from Asier Marqués (19)

Introducción a Bolt
Introducción a BoltIntroducción a Bolt
Introducción a Bolt
 
PHP en el 2015
PHP en el 2015PHP en el 2015
PHP en el 2015
 
Ejecución de servicios digitales y negocios en Internet
Ejecución de servicios digitales y negocios en InternetEjecución de servicios digitales y negocios en Internet
Ejecución de servicios digitales y negocios en Internet
 
Desarrollo de Mobile Web Apps
Desarrollo de Mobile Web AppsDesarrollo de Mobile Web Apps
Desarrollo de Mobile Web Apps
 
Presentación de la plataforma abierta Ubiqarama.org
Presentación de la plataforma abierta Ubiqarama.orgPresentación de la plataforma abierta Ubiqarama.org
Presentación de la plataforma abierta Ubiqarama.org
 
Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1
Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1
Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1
 
Albero tech Day - De web a móvil con xamarin
Albero tech Day - De web a móvil con xamarinAlbero tech Day - De web a móvil con xamarin
Albero tech Day - De web a móvil con xamarin
 
Bilbostack 2014: De web a móvil con Xamarin
Bilbostack 2014: De web a móvil con XamarinBilbostack 2014: De web a móvil con Xamarin
Bilbostack 2014: De web a móvil con Xamarin
 
APIs REST #devfestBilbao
APIs REST #devfestBilbaoAPIs REST #devfestBilbao
APIs REST #devfestBilbao
 
Silex para aplicaciones web MVC
Silex para aplicaciones web MVCSilex para aplicaciones web MVC
Silex para aplicaciones web MVC
 
Servicios REST - PucelaTechDay
Servicios REST - PucelaTechDayServicios REST - PucelaTechDay
Servicios REST - PucelaTechDay
 
Desarrollo de aplicaciones Windows8 para desarrolladores de internet
Desarrollo de aplicaciones Windows8 para desarrolladores de internetDesarrollo de aplicaciones Windows8 para desarrolladores de internet
Desarrollo de aplicaciones Windows8 para desarrolladores de internet
 
REST - deSymfony2012
REST - deSymfony2012REST - deSymfony2012
REST - deSymfony2012
 
BilboStack - Php en el 2012
BilboStack - Php en el 2012BilboStack - Php en el 2012
BilboStack - Php en el 2012
 
4VisionsManager en WebDevBilbao
4VisionsManager en WebDevBilbao4VisionsManager en WebDevBilbao
4VisionsManager en WebDevBilbao
 
Proyectos fallidos: Rooms.fm en #webdevbilbao
Proyectos fallidos: Rooms.fm en #webdevbilbaoProyectos fallidos: Rooms.fm en #webdevbilbao
Proyectos fallidos: Rooms.fm en #webdevbilbao
 
Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2
 
Symfony, cloud computing y web escalables
Symfony, cloud computing y web escalablesSymfony, cloud computing y web escalables
Symfony, cloud computing y web escalables
 
Sistemas Microsoft Windows
Sistemas Microsoft WindowsSistemas Microsoft Windows
Sistemas Microsoft Windows
 

Recently uploaded

Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 

Recently uploaded (10)

Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 

Código mantenible con WordPress