SlideShare una empresa de Scribd logo
1 de 65
Descargar para leer sin conexión
PHP’s FIG and PSRs*

*or how to come up with a title made up of acronyms
miércoles 6 de noviembre de 13
ABOUT ME

miércoles 6 de noviembre de 13
Javier López

I work in London

I was born in Spain

miércoles 6 de noviembre de 13
Lead Engineer at Time Out
Previously worked for IPC Media and Sensio Labs

miércoles 6 de noviembre de 13
www.desymfony.com

me

miércoles 6 de noviembre de 13
AGENDA

miércoles 6 de noviembre de 13
1.

FIG

2.

PSRs

3.

SWN

miércoles 6 de noviembre de 13
#1
Framework
Interoperability
Group

miércoles 6 de noviembre de 13
David Zülke

M. Dowling

Leo Feyer

G. Blanco

Larry Garfield

Taylor Otwell

Nate Abele

Brett Bieber

P. Sturgeon

Evert Pot

John Mertic

miércoles 6 de noviembre de 13

Ivan Habunek

Kris Wallsmith

Paul Jones

Larry Masters

Jordi Boggiano

André Romcke K. Dambekalns Lukas Smith

Don Gilbert

Nils Adermann Mike van Riel Paul Dragoonis

Will Durand

B. Schussek

Cal Evans

Alex. Makarov

Pádraic Brady
Do you want to become a
member?

miércoles 6 de noviembre de 13
#2
PHP
Standards
Recomendation

miércoles 6 de noviembre de 13
PSR-0 Autoloading
PSR-1 Basic Coding Standards
PSR-2 Coding Style Guide
PSR-3 Logger Interface

miércoles 6 de noviembre de 13
PSR-0
Autoloading

miércoles 6 de noviembre de 13
<Vendor Name>(<Namespace>)*<Class Name>

miércoles 6 de noviembre de 13
DoctrineCommonIsolatedClassLoader
/path/to/lib/vendor/Doctrine/Common/IsolatedClassLoader.php

miércoles 6 de noviembre de 13
ZendAcl
/path/to/lib/vendor/Zend/Acl.php

miércoles 6 de noviembre de 13
VendorPackageClass_Subclass
/path/to/lib/vendor/Vendor/Package/Class/Subclass.php

miércoles 6 de noviembre de 13
VendorWith_UnderscoresClass
/path/to/lib/vendor/Vendor/With_Underscores/Class.php

miércoles 6 de noviembre de 13
SplClassLoader implementation

http://gist.github.com/221634
miércoles 6 de noviembre de 13
Composer

http://getcomposer.org
miércoles 6 de noviembre de 13
PSR-1
Basics Coding Standards

miércoles 6 de noviembre de 13
Files must use only <?php and <? tags

miércoles 6 de noviembre de 13
Files SHOULD either declare symbols or
cause side-effects but SHOULD NOT do
both.

miércoles 6 de noviembre de 13
Namespaces and classes follow PSR-0

miércoles 6 de noviembre de 13
Class names declared in StuldyCaps

miércoles 6 de noviembre de 13
Class constants MUST be
UPPERCASED_WITH_UNDERSCORES_SEPARATORS

miércoles 6 de noviembre de 13
Class methods declared in camelCase

miércoles 6 de noviembre de 13
PSR-2
Coding Styling Guide

miércoles 6 de noviembre de 13
Namespaces and classes follow PSR-1

miércoles 6 de noviembre de 13
<?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public function sampleFunction($a, $b = null)
{
if ($a === $b) {
bar();
} elseif ($a > $b) {
$foo->bar($arg1);
} else {
BazClass::bar($arg2, $arg3);
}
}
final public static function bar()
{
// method body
}
}
miércoles 6 de noviembre de 13
<?php LF
namespace VendorPackage; LF
use FooInterface; LF
use BarClass as Bar; LF
use OtherVendorOtherPackageBazClass; LF
class Foo extends Bar implements FooInterface LF
{
public function sampleFunction($a, $b = null) LF
{ LF
if ($a === $b) { LF
bar(); LF
} elseif ($a > $b) { LF
$foo->bar($arg1); LF
} else { LF
BazClass::bar($arg2, $arg3); LF
} LF
} LF
final public static function bar() LF
{ LF
// method body
} LF
} LF
LF
miércoles 6 de noviembre de 13
<?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public function sampleFunction($a, $b = null)
{
if ($a === $b) {
bar();
} elseif ($a > $b) {
$foo->bar($arg1);
} else {
BazClass::bar($arg2, $arg3);
}
}
final public static function bar()
{
// method body
}
}
miércoles 6 de noviembre de 13

80

120
<?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public function sampleFunction($a, $b = null)
{
if ($a === $b) {
bar();
} elseif ($a > $b) {
$foo->bar($arg1);
} else {
BazClass::bar($arg2, $arg3);
}
}
final public static function bar()
{
// method body
}
}
miércoles 6 de noviembre de 13
PHP keywords all lowercase

miércoles 6 de noviembre de 13
true, false and null all lowercase

miércoles 6 de noviembre de 13
<?php
namespace VendorPackage;
LF

use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
LF

class Foo extends Bar implements FooInterface
{
public function sampleFunction($a, $b = null)
{
if ($a === $b) {
bar();
} elseif ($a > $b) {
$foo->bar($arg1);
} else {
BazClass::bar($arg2, $arg3);
}
}
final public static function bar()
{
// method body
}
}
miércoles 6 de noviembre de 13
<?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public $foo = null;
final public static function bar($arg1, &$arg2)
{
// body
}
}

miércoles 6 de noviembre de 13
<?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public $foo = null;
final public static function bar($arg1, &$arg2)
{
// body
}
}

miércoles 6 de noviembre de 13
<?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public $foo = null;
final public static function bar($arg1, &$arg2)
{
// body
}
}

miércoles 6 de noviembre de 13
<?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public $foo = null;
final public static function bar($arg1, &$arg2)
{
// body
}
}

miércoles 6 de noviembre de 13
<?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public $foo = null;
final public static function bar($arg1, &$arg2)
{
// body
}
}

miércoles 6 de noviembre de 13
<?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public $foo = null;
final public static function bar($arg1, &$arg2)
{
// body
}
}

miércoles 6 de noviembre de 13
<?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public $foo = null;
final public static function bar($arg1, &$arg2)
{
// body
}
}

miércoles 6 de noviembre de 13
<?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public $foo = null;
final public static function bar($arg1, &$arg2)
{
// body
}
}

miércoles 6 de noviembre de 13
<?php
namespace VendorPackage;
use FooInterface;
use BarClass as Bar;
use OtherVendorOtherPackageBazClass;
class Foo extends Bar implements FooInterface
{
public $foo = null;
final public static function bar($arg1, &$arg2)
{
// body
}
}

miércoles 6 de noviembre de 13
and the list goes on and on and on
... methods and function calls
... control structures
... closures
... multiple lines
...
http://www.php-fig.org/psr/psr-2/

miércoles 6 de noviembre de 13
> phpcs --standard=PSR2 *.php

https://github.com/squizlabs/PHP_CodeSniffer

miércoles 6 de noviembre de 13
> php php-cs-fixer.phar fix .

https://github.com/fabpot/PHP-CS-Fixer

miércoles 6 de noviembre de 13
PSR-3
Logger Interface

miércoles 6 de noviembre de 13
<?php
namespace PsrLog;
interface LoggerInterface
{
public function alert($message, array $context = array());
public function critical($message, array $context = array());
public function error($message, array $context = array());
public function warning($message, array $context = array());
public function notice($message, array $context = array());
public function info($message, array $context = array());
public function debug($message, array $context = array());
public function log($level, $message, array $context = array());
}

miércoles 6 de noviembre de 13
RFC 5424
Emergency – the system is unusable
Alert – immediate action is required
Critical – critical conditions
Error – errors that do not require immediate attention but should be monitored
Warning – unusual or undesirable occurrences that are not errors
Notice – normal but significant events
Info – interesting events
Debug – detailed information for debugging purposes

http://tools.ietf.org/html/rfc5424
miércoles 6 de noviembre de 13
$message = "{DB}: SELECT * FROM user";
$context = array("DB" => "MY_PROJECT");
$logger->debug($message, $context); // "MY PROJECT": SELECT * FROM user"

miércoles 6 de noviembre de 13
Helper classes and interfaces

miércoles 6 de noviembre de 13
<?php
namespace PsrLog;
abstract class AbstractLogger implements LoggerInterface
{
    public function emergency($message, array $context = array())
    {
        $this->log(LogLevel::EMERGENCY, $message, $context);
    }
.
.
.
    public function debug($message, array $context = array())
    {
        $this->log(LogLevel::DEBUG, $message, $context);
    }
}

miércoles 6 de noviembre de 13
<?php
namespace PsrLog;
trait LoggerTrait
{
    public function emergency($message, array $context = array())
    {
        $this->log(LogLevel::EMERGENCY, $message, $context);
    }
.
.
.
    abstract public function log($level, message, array $context)
}

miércoles 6 de noviembre de 13
<?php
namespace PsrLog;
class NullLogger extends AbstractLogger
{
public function log($level, $message, array $context = array())
{
}
}

miércoles 6 de noviembre de 13
<?php
namespace PsrLog;
interface LoggerAwareInterface
{
public function setLogger(LoggerInterface $logger);
}

miércoles 6 de noviembre de 13
<?php
namespace PsrLog;
class LogLevel
{
const EMERGENCY
const ALERT
const CRITICAL
const ERROR
const WARNING
const NOTICE
const INFO
const DEBUG
}

miércoles 6 de noviembre de 13

=
=
=
=
=
=
=
=

'emergency';
'alert';
'critical';
'error';
'warning';
'notice';
'info';
'debug';
https://github.com/php-fig/log

miércoles 6 de noviembre de 13
{
    "require": {
        "psr/log": "dev-master"
    }
}

miércoles 6 de noviembre de 13
Monolog

https://github.com/Seldaek/monolog
miércoles 6 de noviembre de 13
#3
So
What
Now?

miércoles 6 de noviembre de 13
PSR-4?

miércoles 6 de noviembre de 13
My humble opinion

miércoles 6 de noviembre de 13
Thanks! Questions?

@loalf
miércoles 6 de noviembre de 13

Más contenido relacionado

La actualidad más candente

Ejercicios Basicos Sobre Linux
Ejercicios Basicos Sobre LinuxEjercicios Basicos Sobre Linux
Ejercicios Basicos Sobre Linuxmanuel campo
 
Asegúr@IT II - Seguridad en Web
Asegúr@IT II - Seguridad en WebAsegúr@IT II - Seguridad en Web
Asegúr@IT II - Seguridad en WebChema Alonso
 
Android Tips & Tricks - Boosting your productivity
Android Tips & Tricks - Boosting your productivityAndroid Tips & Tricks - Boosting your productivity
Android Tips & Tricks - Boosting your productivityFe
 
Workshop Privesc Escalada de Privilegios Basica Linux CIBERSEG21
Workshop Privesc Escalada de Privilegios Basica Linux CIBERSEG21Workshop Privesc Escalada de Privilegios Basica Linux CIBERSEG21
Workshop Privesc Escalada de Privilegios Basica Linux CIBERSEG211v4n (a.k.a. 1r0Dm48O)
 
Instrucciones basicas para_c_2 - copia
Instrucciones basicas para_c_2 - copiaInstrucciones basicas para_c_2 - copia
Instrucciones basicas para_c_2 - copiaMaztherprozh
 
Preguntas Sandival Abril
Preguntas Sandival AbrilPreguntas Sandival Abril
Preguntas Sandival Abrilmafemar
 
Chema Alonso - Presentación de la FOCA v2.0 [RootedCON 2010]
Chema Alonso - Presentación de la FOCA v2.0 [RootedCON 2010]Chema Alonso - Presentación de la FOCA v2.0 [RootedCON 2010]
Chema Alonso - Presentación de la FOCA v2.0 [RootedCON 2010]RootedCON
 
Taller Linux Parte 2
Taller Linux Parte 2Taller Linux Parte 2
Taller Linux Parte 2wilves
 
00. antoniocarlos100linux
00. antoniocarlos100linux00. antoniocarlos100linux
00. antoniocarlos100linuxjechivi
 

La actualidad más candente (13)

Ejercicios Basicos Sobre Linux
Ejercicios Basicos Sobre LinuxEjercicios Basicos Sobre Linux
Ejercicios Basicos Sobre Linux
 
Script en msdos
Script en msdosScript en msdos
Script en msdos
 
Ficheros Php
Ficheros PhpFicheros Php
Ficheros Php
 
Asegúr@IT II - Seguridad en Web
Asegúr@IT II - Seguridad en WebAsegúr@IT II - Seguridad en Web
Asegúr@IT II - Seguridad en Web
 
Android Tips & Tricks - Boosting your productivity
Android Tips & Tricks - Boosting your productivityAndroid Tips & Tricks - Boosting your productivity
Android Tips & Tricks - Boosting your productivity
 
FICHEROS
FICHEROSFICHEROS
FICHEROS
 
Workshop Privesc Escalada de Privilegios Basica Linux CIBERSEG21
Workshop Privesc Escalada de Privilegios Basica Linux CIBERSEG21Workshop Privesc Escalada de Privilegios Basica Linux CIBERSEG21
Workshop Privesc Escalada de Privilegios Basica Linux CIBERSEG21
 
Instrucciones basicas para_c_2 - copia
Instrucciones basicas para_c_2 - copiaInstrucciones basicas para_c_2 - copia
Instrucciones basicas para_c_2 - copia
 
Preguntas Sandival Abril
Preguntas Sandival AbrilPreguntas Sandival Abril
Preguntas Sandival Abril
 
Final Linux 2
Final Linux 2Final Linux 2
Final Linux 2
 
Chema Alonso - Presentación de la FOCA v2.0 [RootedCON 2010]
Chema Alonso - Presentación de la FOCA v2.0 [RootedCON 2010]Chema Alonso - Presentación de la FOCA v2.0 [RootedCON 2010]
Chema Alonso - Presentación de la FOCA v2.0 [RootedCON 2010]
 
Taller Linux Parte 2
Taller Linux Parte 2Taller Linux Parte 2
Taller Linux Parte 2
 
00. antoniocarlos100linux
00. antoniocarlos100linux00. antoniocarlos100linux
00. antoniocarlos100linux
 

Similar a PHP's FIG and PSRs

The original hacker Nro 1
The original hacker Nro 1The original hacker Nro 1
The original hacker Nro 1Jorge Brunal
 
Programación funcional con haskell
Programación funcional con haskellProgramación funcional con haskell
Programación funcional con haskellSoftware Guru
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la DebianLeonardo Cezar
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la DebianLeonardo Cezar
 
Introducción a RUST
Introducción a RUSTIntroducción a RUST
Introducción a RUSTSoftware Guru
 
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.
 
Fundamento de poo en php
Fundamento de poo en phpFundamento de poo en php
Fundamento de poo en phpRobert Moreira
 
Desarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo QuilónDesarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo Quilónbetabeers
 
Actividad 3 . funciones en php
Actividad 3 . funciones en phpActividad 3 . funciones en php
Actividad 3 . funciones en phpLeonardoPuerta2
 
Novedades en Symfony 2.3
Novedades en Symfony 2.3Novedades en Symfony 2.3
Novedades en Symfony 2.3Javier López
 

Similar a PHP's FIG and PSRs (20)

Doctrine
DoctrineDoctrine
Doctrine
 
The original hacker Nro 1
The original hacker Nro 1The original hacker Nro 1
The original hacker Nro 1
 
Bash Tips Tricks Campus
Bash Tips Tricks CampusBash Tips Tricks Campus
Bash Tips Tricks Campus
 
Programación funcional con haskell
Programación funcional con haskellProgramación funcional con haskell
Programación funcional con haskell
 
Programacion php
Programacion phpProgramacion php
Programacion php
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la Debian
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la Debian
 
Django
DjangoDjango
Django
 
Especialista Web J9 Php
Especialista Web J9  PhpEspecialista Web J9  Php
Especialista Web J9 Php
 
Introducción a RUST
Introducción a RUSTIntroducción a RUST
Introducción a RUST
 
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
 
Semana 4 Javascript funciones y Metodos
Semana 4   Javascript funciones y MetodosSemana 4   Javascript funciones y Metodos
Semana 4 Javascript funciones y Metodos
 
Fundamento de poo en php
Fundamento de poo en phpFundamento de poo en php
Fundamento de poo en php
 
Desarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo QuilónDesarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo Quilón
 
Actividad 3 . funciones en php
Actividad 3 . funciones en phpActividad 3 . funciones en php
Actividad 3 . funciones en php
 
Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP
 
Novedades en Symfony 2.3
Novedades en Symfony 2.3Novedades en Symfony 2.3
Novedades en Symfony 2.3
 
Perl3 subrutinas
Perl3 subrutinasPerl3 subrutinas
Perl3 subrutinas
 
Introduccion A Groovy
Introduccion A GroovyIntroduccion A Groovy
Introduccion A Groovy
 
Introducción a Groovy
Introducción a GroovyIntroducción a Groovy
Introducción a Groovy
 

Más de Javier López

Continous Delivering a PHP application
Continous Delivering a PHP applicationContinous Delivering a PHP application
Continous Delivering a PHP applicationJavier López
 
One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.Javier López
 
Slides changes symfony23
Slides changes symfony23Slides changes symfony23
Slides changes symfony23Javier López
 
Shifting gears with Composer
Shifting gears with ComposerShifting gears with Composer
Shifting gears with ComposerJavier López
 
Componentes, el arma secreta de Symfony2
Componentes, el arma secreta de Symfony2Componentes, el arma secreta de Symfony2
Componentes, el arma secreta de Symfony2Javier López
 
Slides components en
Slides components enSlides components en
Slides components enJavier López
 
Symfony y Admin Generator
Symfony y Admin GeneratorSymfony y Admin Generator
Symfony y Admin GeneratorJavier López
 

Más de Javier López (8)

Continous Delivering a PHP application
Continous Delivering a PHP applicationContinous Delivering a PHP application
Continous Delivering a PHP application
 
One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.
 
Slides changes symfony23
Slides changes symfony23Slides changes symfony23
Slides changes symfony23
 
Shifting gears with Composer
Shifting gears with ComposerShifting gears with Composer
Shifting gears with Composer
 
Componentes, el arma secreta de Symfony2
Componentes, el arma secreta de Symfony2Componentes, el arma secreta de Symfony2
Componentes, el arma secreta de Symfony2
 
Slides components en
Slides components enSlides components en
Slides components en
 
Slides componentes
Slides componentesSlides componentes
Slides componentes
 
Symfony y Admin Generator
Symfony y Admin GeneratorSymfony y Admin Generator
Symfony y Admin Generator
 

Último

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 

Último (11)

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 

PHP's FIG and PSRs