SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexión
Behat, Travis & Scrutinizer
Calidad en PHP
con el proyecto Chamilo
Yannick Warnier
@ywarnier
Caso Chamilo
● Sistema de gestión del aprendizaje (LMS)
● Claroline→Dokeos→Chamilo / Moodle / Canvas
● Código abierto
● https://github.com/chamilo
● https://github.com/chamilo/chamilo-lms/
Herramientas
Dispositivos
móviles
Gestión de competencias,
insignias, evaluaciones de
desempeño, ...
Para mejorar la calidad de
Chamilo, necesitamos…
- pruebas
- sistema de build automático
- sistema de análisis de código
Behat
● Sistema de pruebas
● Behaviour Driven Development
● Formulación en lenguaje “común”
● Software libre
● https://github.com/Behat/Behat
● http://docs.behat.org/en/latest/
Travis-CI
● Portal de servicios de integración continua
● Travis/Jenkins←Hudson
● Código abierto (parcialmente)
● https://github.com/travis-ci
● https://docs.travis-ci.com/user/for-beginners
Scrutinizer-CI
● Portal de análisis de código
● Clover/phploc/phpmd/… → Scrutinizer
● Código abierto (parcialmente)
● https://github.com/scrutinizer-ci
● https://scrutinizer-ci.com/docs/
Behat vs PHPUnit
public function testLs()
{
    mkdir('/tmp/test');
    touch('/tmp/test/foo');
    $ls = @exec('ls /tmp/test');
    $this assertContains($ls, 'foo');→
}
Behat vs PHPUnit
Mink (compañero web)
Behat.yml
default:
    extensions:
        BehatMinkExtensionExtension:
            base_url: http://my.chamilo110.net
            goutte: ~
            selenium2: ~
    paths:
        features: features
        bootstrap: %behat.paths.features
                                   %/bootstrap
Estructura Behat
Archivo de prueba
# features/login.feature
@common
Feature: User login
  In order to log in
  As any registered user
  I need to be able to enter my details in the form and get in
  Scenario: Login as admin user successfully
    Given I am a platform administrator
    Then I should not see an ".alert­danger" element
  Scenario: Login as student user successfully
FeatureContext.php
<?php
use BehatBehatContextClosuredContextInterface,
    BehatBehatContextTranslatedContextInterface,
    BehatBehatContextBehatContext,
    BehatBehatContextStep,
    BehatBehatContextStepGiven,
    BehatBehatExceptionPendingException,
    BehatBehatEventSuiteEvent;
use BehatGherkinNodePyStringNode,
    BehatGherkinNodeTableNode;
use BehatMinkExtensionContextMinkContext;
FeatureContext.php
class FeatureContext extends MinkContext
{
    public function __construct(array $parameters) { //… }
    /**
     * @Given /^I am a platform administrator$/
     */
    public function iAmAPlatformAdministrator()
    {
        return array(
            new Given('I am on "/index.php?logout=logout"'),
            new Given('I am on homepage'),
            new Given('I fill in "login" with "admin"'),
            new Given('I fill in "password" with "admin"'),
            new Given('I press "submitAuth"')
        );
    }
Resultados
Resultados
Travis-CI
● ¿Tienes tu proyecto en Github?
● Usa tu cuenta Github para abrir cuenta travis-ci.org
● Carga tus repos
● Define un .travis.yml en tu proyecto
.travis.yml (1/3)
language: php
php:
  ­ 5.5
  ­ 5.6
  ­ 7.0
before_install:
  ­ sudo apt­get update ­qq
  ­ sudo apt­get install ­qq mysql­server
  ­ sudo apt­get install ­qq apache2 libapache2­mod­fastcgi
  ­ sudo cp ~/.phpenv/versions/$(phpenv version­name)/etc/php­fpm.conf.default ~/.phpenv/versions/$
(phpenv version­name)/etc/php­fpm.conf
  ­ sudo a2enmod rewrite actions fastcgi alias
  ­ echo "cgi.fix_pathinfo = 1" >> ~/.phpenv/versions/$(phpenv version­name)/etc/php.ini
  ­ echo "memory_limit = 2G" >> ~/.phpenv/versions/$(phpenv version­name)/etc/php.ini
  ­ echo "phar.readonly = 0" >> ~/.phpenv/versions/$(phpenv version­name)/etc/php.ini
  ­ echo "date.timezone = Europe/Paris" >> ~/.phpenv/versions/$(phpenv version­name)/etc/php.ini
  ­ ...
.travis.yml (2/3)
before_script:
  ­ composer update
  ­ phpenv config­add tests/travis­php­
config.ini
  ­ php ­v
  ­ cd /home/travis/build/chamilo/chamilo­lms
  ­ ...comando de instalación…
.travis.yml (3/3)
script:
  ­ cd tests && ../vendor/behat/behat/bin/behat ­v
notifications:
  irc: "irc.freenode.org#chamilodev"
Travis-CI
● PHP-CLI = 5.3 por defecto
● Doctrine depende de >=5.4!
– Para evitarlo, agregar, en “before_install”:
– sudo cp ~/.phpenv/versions/$(phpenv version­name)/etc/php­fpm.conf.default 
~/.phpenv/versions/$(phpenv version­name)/etc/php­fpm.conf
Travis-CI: Resultados
Travis-CI: Resultados
Scrutinizer-CI
● ¿Tienes tu proyecto en Github?
● Usa tu cuenta Github en scrutinizer-ci.org
● Carga tus repos
● Define un .scrutinizer.yml en tu proyecto
.scrutinizer.yml (1/2)
build:
    environment:
        mysql: 5.5
        php:
            version: 5.6.0
            ini:
                'date.timezone': 'US/Pacific'
                'phar.readonly': false
        hosts:
            my.chamilo110.net: '127.0.0.1'
    dependencies:
        override:
            ­ true
        before:
            ­ php ­d memory_limit=2G /usr/bin/composer.phar ­v update
.scrutinizer.yml (2/2)
filter:
    excluded_paths:
        ­ tests/*
        ­ app/cache/*
        ­ app/logs/*
        ­ web/*
        ­ vendor/*
checks:
    php:
        code_rating: true
        duplication: true
Scrutinizer: método
● “Mejores prácticas”
● ISO-25010?
– International Standard for Software Product Quality
● No siempre corresponde a PSR
● Score: solo cuenta la parte “Code”, y no “Issues”
● Chamilo
– 6.3M líneas totales
– 4.9M es código (78%)
Scrutinizer: resultados
Nota para la sección “Code”
Scrutinizer: resultados
Evolución de la calidad del código
(tendencia en baja por inclusión de más código
de baja calidad)
Cantidad de “Issues” en baja de 4200 a 2200 durante
el mismo periodo (calidad y issues son dos indicadores distintos)
Scrutinizer: resultados
Se muestran los cambios de “issues” a cada commit (o PR) en Github
Scrutinizer: resultados
Basada en estándares de calidad, esta clasificación es la
que establece el score global (inicia con los peores scripts)
Scrutinizer: resultados
Los “issues” se agrupan por categoría y gravedad.
Un “bug” en este caso puede ser el envío de un parámetro entero
A una función que define (en PHPDoc) que tiene que ser de otro tipo
Scrutinizer: resultados
BeezNest
Miraflores - Lima - Perú
info@beeznest.com
@beeznestla

Más contenido relacionado

La actualidad más candente

Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Edgar Dueñas
 
Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Raul Fraile
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyJorge Antonio Linares Vera
 
Chamilo con LTI: Integración de herramientas externas dentro de su LMS preferido
Chamilo con LTI: Integración de herramientas externas dentro de su LMS preferidoChamilo con LTI: Integración de herramientas externas dentro de su LMS preferido
Chamilo con LTI: Integración de herramientas externas dentro de su LMS preferidoCongreso Internacional de E-learning
 
Taller:¿Cómo instalar y administrar mi primer campus virtual? (Parte I)
Taller:¿Cómo instalar y administrar mi primer campus virtual? (Parte I)Taller:¿Cómo instalar y administrar mi primer campus virtual? (Parte I)
Taller:¿Cómo instalar y administrar mi primer campus virtual? (Parte I)Congreso Internacional de E-learning
 
Presentación de zan php
Presentación de zan phpPresentación de zan php
Presentación de zan phpCarlos Zantana
 
Desarrollo web programación web
Desarrollo web   programación webDesarrollo web   programación web
Desarrollo web programación webjhon juan
 
Javascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryJavascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryDavid Arango
 
Introducción a los Frameworks PHP
Introducción a los Frameworks PHP  Introducción a los Frameworks PHP
Introducción a los Frameworks PHP Aprende PHP
 
PHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseñoPHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseñoRightster
 
Drupal creación módulos, bloques, formularios y alters
Drupal  creación módulos, bloques, formularios y altersDrupal  creación módulos, bloques, formularios y alters
Drupal creación módulos, bloques, formularios y altersSergio Carracedo Martinez
 
PHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebPHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebRightster
 
lección 02- creación de Virtual Host laravel 5 + Xampp + Windows
lección 02- creación de Virtual Host laravel 5 + Xampp + Windowslección 02- creación de Virtual Host laravel 5 + Xampp + Windows
lección 02- creación de Virtual Host laravel 5 + Xampp + WindowsJairo Hoyos
 
01- instalacion de laravel 5+ (dos formas sencillas )
01- instalacion de laravel 5+ (dos formas sencillas )01- instalacion de laravel 5+ (dos formas sencillas )
01- instalacion de laravel 5+ (dos formas sencillas )Jairo Hoyos
 

La actualidad más candente (20)

CRUD básico con Symfony
CRUD básico con SymfonyCRUD básico con Symfony
CRUD básico con Symfony
 
Curso Php
Curso PhpCurso Php
Curso Php
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2
 
Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademy
 
Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP
 
Chamilo con LTI: Integración de herramientas externas dentro de su LMS preferido
Chamilo con LTI: Integración de herramientas externas dentro de su LMS preferidoChamilo con LTI: Integración de herramientas externas dentro de su LMS preferido
Chamilo con LTI: Integración de herramientas externas dentro de su LMS preferido
 
Taller:¿Cómo instalar y administrar mi primer campus virtual? (Parte I)
Taller:¿Cómo instalar y administrar mi primer campus virtual? (Parte I)Taller:¿Cómo instalar y administrar mi primer campus virtual? (Parte I)
Taller:¿Cómo instalar y administrar mi primer campus virtual? (Parte I)
 
Presentación de zan php
Presentación de zan phpPresentación de zan php
Presentación de zan php
 
Desarrollo web programación web
Desarrollo web   programación webDesarrollo web   programación web
Desarrollo web programación web
 
Javascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryJavascript en proyectos reales: jQuery
Javascript en proyectos reales: jQuery
 
Introducción a los Frameworks PHP
Introducción a los Frameworks PHP  Introducción a los Frameworks PHP
Introducción a los Frameworks PHP
 
PHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseñoPHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseño
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Php power
Php powerPhp power
Php power
 
Laravel 4.2 pdf
Laravel 4.2 pdfLaravel 4.2 pdf
Laravel 4.2 pdf
 
Drupal creación módulos, bloques, formularios y alters
Drupal  creación módulos, bloques, formularios y altersDrupal  creación módulos, bloques, formularios y alters
Drupal creación módulos, bloques, formularios y alters
 
PHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebPHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad Web
 
lección 02- creación de Virtual Host laravel 5 + Xampp + Windows
lección 02- creación de Virtual Host laravel 5 + Xampp + Windowslección 02- creación de Virtual Host laravel 5 + Xampp + Windows
lección 02- creación de Virtual Host laravel 5 + Xampp + Windows
 
01- instalacion de laravel 5+ (dos formas sencillas )
01- instalacion de laravel 5+ (dos formas sencillas )01- instalacion de laravel 5+ (dos formas sencillas )
01- instalacion de laravel 5+ (dos formas sencillas )
 

Destacado

Desarrollo del plugin Chamilo-Wordpress
Desarrollo del plugin Chamilo-WordpressDesarrollo del plugin Chamilo-Wordpress
Desarrollo del plugin Chamilo-WordpressYannick Warnier
 
Chamilo advantages against other LMSes
Chamilo advantages against other LMSesChamilo advantages against other LMSes
Chamilo advantages against other LMSesYannick Warnier
 
Estandares video-oggtheora-webm
Estandares video-oggtheora-webmEstandares video-oggtheora-webm
Estandares video-oggtheora-webmYannick Warnier
 
Chamilo LMS y otros LMSes - Universidad de Valencia, España - Octubre 2013
Chamilo LMS y otros LMSes - Universidad de Valencia, España - Octubre 2013Chamilo LMS y otros LMSes - Universidad de Valencia, España - Octubre 2013
Chamilo LMS y otros LMSes - Universidad de Valencia, España - Octubre 2013Yannick Warnier
 
Crear cursos-virtuales-chamilo-flisol-2014
Crear cursos-virtuales-chamilo-flisol-2014Crear cursos-virtuales-chamilo-flisol-2014
Crear cursos-virtuales-chamilo-flisol-2014Yannick Warnier
 

Destacado (7)

Desarrollo del plugin Chamilo-Wordpress
Desarrollo del plugin Chamilo-WordpressDesarrollo del plugin Chamilo-Wordpress
Desarrollo del plugin Chamilo-Wordpress
 
Chamilo advantages against other LMSes
Chamilo advantages against other LMSesChamilo advantages against other LMSes
Chamilo advantages against other LMSes
 
Estandares video-oggtheora-webm
Estandares video-oggtheora-webmEstandares video-oggtheora-webm
Estandares video-oggtheora-webm
 
Chamilo LMS y otros LMSes - Universidad de Valencia, España - Octubre 2013
Chamilo LMS y otros LMSes - Universidad de Valencia, España - Octubre 2013Chamilo LMS y otros LMSes - Universidad de Valencia, España - Octubre 2013
Chamilo LMS y otros LMSes - Universidad de Valencia, España - Octubre 2013
 
Asociación Chamilo
Asociación ChamiloAsociación Chamilo
Asociación Chamilo
 
Pluggin creation
Pluggin creationPluggin creation
Pluggin creation
 
Crear cursos-virtuales-chamilo-flisol-2014
Crear cursos-virtuales-chamilo-flisol-2014Crear cursos-virtuales-chamilo-flisol-2014
Crear cursos-virtuales-chamilo-flisol-2014
 

Similar a Calidad de código en Chamilo: Behat, Travis-CI y Scrutinizer-CI

Herramientas Ágiles para Desarrollo
Herramientas Ágiles para DesarrolloHerramientas Ágiles para Desarrollo
Herramientas Ágiles para DesarrolloGastón Guillerón
 
Herramientas agilesdesarrollo
Herramientas agilesdesarrolloHerramientas agilesdesarrollo
Herramientas agilesdesarrollogabrielpiccoli
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?Micael Gallego
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas.. ..
 
Conferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y RailsConferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y RailsDavid Calavera
 
Desarrollo y testeo modular de interfaces HTML5 / MVC - Congo framework
Desarrollo y testeo modular de interfaces HTML5 / MVC - Congo frameworkDesarrollo y testeo modular de interfaces HTML5 / MVC - Congo framework
Desarrollo y testeo modular de interfaces HTML5 / MVC - Congo frameworkSantiago Bustelo
 
Aug frontend dev ops
Aug frontend dev opsAug frontend dev ops
Aug frontend dev opsMitzi Moncada
 
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas  de rendimiento de Aplicaciones WebPylot : Herramienta para pruebas  de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones WebDeisy Sapaico
 
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
 Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe... Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...Federico Toledo
 
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...Abstracta
 
16 Cast Software Solo Pruebas 2009
16 Cast Software Solo Pruebas 200916 Cast Software Solo Pruebas 2009
16 Cast Software Solo Pruebas 2009Pepe
 
Argentesting 2017 - Anatomia Framework Automatización
Argentesting 2017 - Anatomia Framework AutomatizaciónArgentesting 2017 - Anatomia Framework Automatización
Argentesting 2017 - Anatomia Framework AutomatizaciónArgentesting
 
Webinar: Migrar el testing a open source
Webinar: Migrar el testing a open sourceWebinar: Migrar el testing a open source
Webinar: Migrar el testing a open sourceFederico Toledo
 
Test Unitarios y E2E front y Back
Test Unitarios y E2E front y BackTest Unitarios y E2E front y Back
Test Unitarios y E2E front y BackEric Zeidan
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJSRodrigo Pimentel
 
Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesJobsket
 

Similar a Calidad de código en Chamilo: Behat, Travis-CI y Scrutinizer-CI (20)

Pucela testingdays testing_en_php
Pucela testingdays testing_en_phpPucela testingdays testing_en_php
Pucela testingdays testing_en_php
 
Herramientas Ágiles para Desarrollo
Herramientas Ágiles para DesarrolloHerramientas Ágiles para Desarrollo
Herramientas Ágiles para Desarrollo
 
Herramientas agilesdesarrollo
Herramientas agilesdesarrolloHerramientas agilesdesarrollo
Herramientas agilesdesarrollo
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
 
Conferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y RailsConferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y Rails
 
"Al rico" PHP
"Al rico" PHP"Al rico" PHP
"Al rico" PHP
 
Desarrollo y testeo modular de interfaces HTML5 / MVC - Congo framework
Desarrollo y testeo modular de interfaces HTML5 / MVC - Congo frameworkDesarrollo y testeo modular de interfaces HTML5 / MVC - Congo framework
Desarrollo y testeo modular de interfaces HTML5 / MVC - Congo framework
 
Aug frontend dev ops
Aug frontend dev opsAug frontend dev ops
Aug frontend dev ops
 
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas  de rendimiento de Aplicaciones WebPylot : Herramienta para pruebas  de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web
 
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
 Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe... Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
 
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
 
16 Cast Software Solo Pruebas 2009
16 Cast Software Solo Pruebas 200916 Cast Software Solo Pruebas 2009
16 Cast Software Solo Pruebas 2009
 
Pruebas al Software
Pruebas al SoftwarePruebas al Software
Pruebas al Software
 
Argentesting 2017 - Anatomia Framework Automatización
Argentesting 2017 - Anatomia Framework AutomatizaciónArgentesting 2017 - Anatomia Framework Automatización
Argentesting 2017 - Anatomia Framework Automatización
 
Webinar: Migrar el testing a open source
Webinar: Migrar el testing a open sourceWebinar: Migrar el testing a open source
Webinar: Migrar el testing a open source
 
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOpsMeetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
 
Test Unitarios y E2E front y Back
Test Unitarios y E2E front y BackTest Unitarios y E2E front y Back
Test Unitarios y E2E front y Back
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJS
 
Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agiles
 

Más de Yannick Warnier

Chamilo en FLISOL Perú 2018
Chamilo en FLISOL Perú 2018Chamilo en FLISOL Perú 2018
Chamilo en FLISOL Perú 2018Yannick Warnier
 
The benefits of using Git
The benefits of using GitThe benefits of using Git
The benefits of using GitYannick Warnier
 
Skillms, solution de gestion des talents
Skillms, solution de gestion des talentsSkillms, solution de gestion des talents
Skillms, solution de gestion des talentsYannick Warnier
 
Chamilo "Lectoura", proyecto Hackaton EdTech, Lima 2017
Chamilo "Lectoura", proyecto Hackaton EdTech, Lima 2017Chamilo "Lectoura", proyecto Hackaton EdTech, Lima 2017
Chamilo "Lectoura", proyecto Hackaton EdTech, Lima 2017Yannick Warnier
 
Novedades de Chamilo 1.11 - 2017
Novedades de Chamilo 1.11 - 2017Novedades de Chamilo 1.11 - 2017
Novedades de Chamilo 1.11 - 2017Yannick Warnier
 
Chamilo, qu'est-ce? - Chamilo Camp Lyon 2017
Chamilo, qu'est-ce? - Chamilo Camp Lyon 2017Chamilo, qu'est-ce? - Chamilo Camp Lyon 2017
Chamilo, qu'est-ce? - Chamilo Camp Lyon 2017Yannick Warnier
 
L'avenir de Chamilo - 2017
L'avenir de Chamilo - 2017L'avenir de Chamilo - 2017
L'avenir de Chamilo - 2017Yannick Warnier
 
Introducción a Nginx y PHP FPM
Introducción a Nginx y PHP FPMIntroducción a Nginx y PHP FPM
Introducción a Nginx y PHP FPMYannick Warnier
 
Como usar un aula virtual como recurso educativo - Caso Chamilo
Como usar un aula virtual como recurso educativo - Caso ChamiloComo usar un aula virtual como recurso educativo - Caso Chamilo
Como usar un aula virtual como recurso educativo - Caso ChamiloYannick Warnier
 
Prepa certificación docente Chamilo 1.8 (CHACOBU)
Prepa certificación docente Chamilo 1.8 (CHACOBU)Prepa certificación docente Chamilo 1.8 (CHACOBU)
Prepa certificación docente Chamilo 1.8 (CHACOBU)Yannick Warnier
 
Taller de optimizacion de servidores web tipo LAMP
Taller de optimizacion de servidores web tipo LAMPTaller de optimizacion de servidores web tipo LAMP
Taller de optimizacion de servidores web tipo LAMPYannick Warnier
 
Chamilo, c'est pas le Pérou - Jeudis du libre
Chamilo, c'est pas le Pérou - Jeudis du libreChamilo, c'est pas le Pérou - Jeudis du libre
Chamilo, c'est pas le Pérou - Jeudis du libreYannick Warnier
 
TICs en educación y Chamilo, introducción para Maestria en Edumática, 2011
TICs en educación y Chamilo, introducción para Maestria en Edumática, 2011TICs en educación y Chamilo, introducción para Maestria en Edumática, 2011
TICs en educación y Chamilo, introducción para Maestria en Edumática, 2011Yannick Warnier
 
Skillbeez short-presentation
Skillbeez short-presentationSkillbeez short-presentation
Skillbeez short-presentationYannick Warnier
 
Educación de impacto con asistencia tecnológica
Educación de impacto con asistencia tecnológicaEducación de impacto con asistencia tecnológica
Educación de impacto con asistencia tecnológicaYannick Warnier
 
Chamilo 1.8.7.1 Manual del alumno - ES
Chamilo 1.8.7.1 Manual del alumno - ESChamilo 1.8.7.1 Manual del alumno - ES
Chamilo 1.8.7.1 Manual del alumno - ESYannick Warnier
 

Más de Yannick Warnier (20)

Chamilo, 12 ans déjà
Chamilo, 12 ans déjàChamilo, 12 ans déjà
Chamilo, 12 ans déjà
 
Chamilo en FLISOL Perú 2018
Chamilo en FLISOL Perú 2018Chamilo en FLISOL Perú 2018
Chamilo en FLISOL Perú 2018
 
Novedades de PHP 7.*
Novedades de PHP 7.*Novedades de PHP 7.*
Novedades de PHP 7.*
 
The benefits of using Git
The benefits of using GitThe benefits of using Git
The benefits of using Git
 
Skillms, solution de gestion des talents
Skillms, solution de gestion des talentsSkillms, solution de gestion des talents
Skillms, solution de gestion des talents
 
Chamilo "Lectoura", proyecto Hackaton EdTech, Lima 2017
Chamilo "Lectoura", proyecto Hackaton EdTech, Lima 2017Chamilo "Lectoura", proyecto Hackaton EdTech, Lima 2017
Chamilo "Lectoura", proyecto Hackaton EdTech, Lima 2017
 
Novedades de Chamilo 1.11 - 2017
Novedades de Chamilo 1.11 - 2017Novedades de Chamilo 1.11 - 2017
Novedades de Chamilo 1.11 - 2017
 
Chamilo, qu'est-ce? - Chamilo Camp Lyon 2017
Chamilo, qu'est-ce? - Chamilo Camp Lyon 2017Chamilo, qu'est-ce? - Chamilo Camp Lyon 2017
Chamilo, qu'est-ce? - Chamilo Camp Lyon 2017
 
L'avenir de Chamilo - 2017
L'avenir de Chamilo - 2017L'avenir de Chamilo - 2017
L'avenir de Chamilo - 2017
 
Introducción a Nginx y PHP FPM
Introducción a Nginx y PHP FPMIntroducción a Nginx y PHP FPM
Introducción a Nginx y PHP FPM
 
Como usar un aula virtual como recurso educativo - Caso Chamilo
Como usar un aula virtual como recurso educativo - Caso ChamiloComo usar un aula virtual como recurso educativo - Caso Chamilo
Como usar un aula virtual como recurso educativo - Caso Chamilo
 
Prepa certificación docente Chamilo 1.8 (CHACOBU)
Prepa certificación docente Chamilo 1.8 (CHACOBU)Prepa certificación docente Chamilo 1.8 (CHACOBU)
Prepa certificación docente Chamilo 1.8 (CHACOBU)
 
Taller de optimizacion de servidores web tipo LAMP
Taller de optimizacion de servidores web tipo LAMPTaller de optimizacion de servidores web tipo LAMP
Taller de optimizacion de servidores web tipo LAMP
 
Chamilo, c'est pas le Pérou - Jeudis du libre
Chamilo, c'est pas le Pérou - Jeudis du libreChamilo, c'est pas le Pérou - Jeudis du libre
Chamilo, c'est pas le Pérou - Jeudis du libre
 
TICs en educación y Chamilo, introducción para Maestria en Edumática, 2011
TICs en educación y Chamilo, introducción para Maestria en Edumática, 2011TICs en educación y Chamilo, introducción para Maestria en Edumática, 2011
TICs en educación y Chamilo, introducción para Maestria en Edumática, 2011
 
Skillbeez short-presentation
Skillbeez short-presentationSkillbeez short-presentation
Skillbeez short-presentation
 
Educación de impacto con asistencia tecnológica
Educación de impacto con asistencia tecnológicaEducación de impacto con asistencia tecnológica
Educación de impacto con asistencia tecnológica
 
L'association Chamilo
L'association ChamiloL'association Chamilo
L'association Chamilo
 
The Chamilo Association
The Chamilo AssociationThe Chamilo Association
The Chamilo Association
 
Chamilo 1.8.7.1 Manual del alumno - ES
Chamilo 1.8.7.1 Manual del alumno - ESChamilo 1.8.7.1 Manual del alumno - ES
Chamilo 1.8.7.1 Manual del alumno - ES
 

Calidad de código en Chamilo: Behat, Travis-CI y Scrutinizer-CI