Implementing Laravel (ES)
|
|
- Ana Maidana Carrasco
- hace 8 años
- Vistas:
Transcripción
1
2 Implementing Laravel (ES) implementando Laravel Chris Fidao y Judas Borbón Este libro está a la venta en Esta versión se publicó en This is a Leanpub book. Leanpub empowers authors and publishers with the Lean Publishing process. Lean Publishing is the act of publishing an in-progress ebook using lightweight tools and many iterations to get reader feedback, pivot until you have the right book and build traction once you do Chris Fidao y Judas Borbón
3 Índice general Conceptos fundamentales El contenedor Uso básico Algo más avanzado Inversión de control Uso en una situación real Inyección de dependencias Qué es la inyección de dependencias? Agregando dependencias a los controladores Interfaces como dependencias Por qué la inyección de dependencias? En resúmen
4 Conceptos fundamentales A lo largo del libro usaremos algunas de las características más poderosas de Laravel. Antes de comenzar, es importante conocer por lo menos el contenedor de Laravel y cómo facilita el uso de la Inyección de Dependencias. Este capítulo aborda el contenedor de Laravel, su uso de la Inversión de Control y la Inyección de Dependencias.
5 El contenedor La clase Illuminate\Foundation\Application es la que encapsula todo Laravel. Esta clase es un contenedor - puede contener datos, objetos, clases y hasta funciones anónimas. Uso básico Para ver cómo funciona el contenedor, hagamos un ejercicio en el archivo de rutas. El contenedor de Laravel implementa ArrayAccess, así que podemos acceder a él como un arreglo. Veamos cómo acceder a manera de arreglo asociativo. Archivo: app/routes.php 1 Route::get('/container', function() 2 { 3 // Se obtiene la instancia de la aplicación 4 $app = App::getFacadeRoot(); 5 6 $app['some_array'] = array('foo' => 'bar'); 7 8 var_dump($app['some_array']); 9 }); Si nos dirigimos a la ruta /container, obtendremos el siguiente resultado: 1 array (size=1) 2 'foo' => string 'bar' (length=3) Como podemos ver, aunque Application es una clase con atributos y métodos, también se puede acceder como si fuera un arreglo! Fachadas Confundido con lo que hace App::getFacadeRoot()? La clase App es una fachada. Esto nos permite usarla en cualquier lugar, de manera estática. Sin embargo, en realidad no se trata de una clase estática. getfacaderoot obtiene la verdadera instancia de la clase, lo cual tuvimos que hacer para usarla como un arreglo en el ejemplo anterior. Se puede ver esta y otras fachadas en el espacio de nombres Illuminate\Support\Facades.
6 El contenedor 3 Algo más avanzado Hagamos algo más elegante con el contenedor y asignémosle una función anónima: Archivo: app/routes.php 1 Route::get('/container', function() 2 { 3 // Se obtiene la instancia de la aplicación 4 $app = App::getFacadeRoot(); 5 6 $app['say_hi'] = function() 7 { 8 return "Hello, World!"; 9 }; return $app['say_hi']; 12 }); De nuevo, si nos dirigimos a la ruta /container veremos lo siguiente: 1 Hello, World! Aunque en apariencia es algo muy simple, en realidad es algo bastante poderoso. De hecho, es la base de cómo los paquetes Illuminate interactúan unos con otros para hacer funcionar al framework Laravel. Más adelante veremos cómo los Proveedores de Servicios vinculan elementos al contenedor, uniendo los diferentes paquetes Illuminate. Inversión de control La clase Container de Laravel tiene más cosas bajo la manga además de actuar como un arreglo. También funciona como un contenedor de Inversión de Control. La Inversión de Control es una técnica que permite definir cómo una aplicación implementa una clase o interfaz. Por ejemplo, si nuestra aplicación depende de la interfaz FooInterface y queremos implementar la clase ConcreteFoo, es en el contenedor de Inversión de Control donde hay que definir la implementación. Veamos un ejemplo básico de cómo funciona usando la ruta /container una vez más. Primero vamos a preparar algunas clases - una interfaz y una clase que la implemente. Para mantener el ejemplo sencillo, ambas pueden estar en el archivo app/routes.php:
7 El contenedor 4 Archivo: app/routes.php 1 interface GreetableInterface { 2 3 public function greet(); 4 5 } 6 7 class HelloWorld implements GreetableInterface { 8 9 public function greet() 10 { 11 return 'Hello, World!'; 12 } 13 } Ahora usemos estas clases junto con el contenedor y veamos qué sucede. Primero quiero presentarles el concepto de vinculación. Archivo: app/routes.php 1 Route::get('/container', function() 2 { 3 // Se obtiene la instancia de la aplicación 4 $app = App::getFacadeRoot(); 5 6 $app->bind('greetableinterface', function() 7 { 8 return new HelloWorld; 9 }); $greeter = $app->make('greetableinterface'); return $greeter->greet(); 14 }); En lugar de acceder como arreglo usando $app['greetableinterface'] hemos usado el método bind(). Esto hace uso del contenedor de Inversión de Control de Laravel para devolver la clase HelloWorld cada vez que se solicita GreetableInterface.
8 El contenedor 5 De este modo es posible intercambiar implementaciones! Por ejemplo, en lugar de HelloWorld, podríamos crear una implementación llamada GoodbyeCruelWorld y hacer que el contenedor la devuelva cada que se solicite GreetableInterface. Esto encamina nuestras aplicaciones hacia la mantenibilidad. Al usar el contenedor, podemos (de forma ideal) intercambiar implementaciones en un solo lugar sin afectar otras áreas de la aplicación. Uso en una situación real Dónde hay que colocar estas vinculaciones? Si no queremos saturar los archivos start.php, filters.php, routes.php, entonces podemos hacer uso de los Proveedores de Servicios. Los Proveedores de Servicios sirven específicamente para registrar vinculaciones en el contenedor de Laravel. De hecho, casi todos los paquetes Illuminate usan un Proveedor de servicios justo para eso. Veamos un ejemplo de cómo los Proveedores de Servicios se usan dentro de un paquete Illuminate. Vamos a examinar el paquete de paginación. Primero, el método register() del Proveedor de Servicios de paginación: Illuminate\Pagination\PaginationServiceProvider.php 1 public function register() 2 { 3 $this->app['paginator'] = $this->app->share(function($app) 4 { 5 $paginator = new Environment( 6 $app['request'], 7 $app['view'], 8 $app['translator'] 9 ); $paginator->setviewname( 12 $app['config']['view.pagination'] 13 ); return $paginator; 16 }); 17 } El método register() se invoca automáticamente en cada uno de los Proveedores de Servicios alojados en el archivo app/config/app.php.
9 El contenedor 6 Entonces, qué es lo que ocurre en el método register()? Primero que nada, se registra la instancia del paginador en el contenedor. Esto hará que $app['paginator'] y App::make('paginator') estén disponibles en otras áreas de la aplicación. Luego, se define una instancia paginator como resultado del valor devuelto por una función anónima, tal y cómo lo hicimos en el ejemplo say_hi. No hay que confundir el uso de $this->app->share(). El método Share simplemente hace que la función anónima pueda usarse como un singleton (instancia única), similar a llamar a $this->app->instance('paginator', new Environment). La función anónima crea un objeto Pagination\Environment, lo configura y lo devuelve. Tal vez ya lo hayan notado, pero el Proveedor de Servicios crea otras vinculaciones en la aplicación! La clase PaginationEnvironment claramente accede a ciertas dependencias mediante su constructor - un objeto para peticiones $app['request'], un objeto para vistas $app['view'] y un traductor $app['translator']. Por suerte, estas vinculaciones son creadas en otros paquetes Illuminate y se definen en distintos Proveedores de Servicios. Podemos observar entonces cómo los diferentes paquetes Illuminate interactúan entre sí. Al encontrarse vinculados al contenedor de la aplicación, se pueden utilizar en otros paquetes ( o en nuestro propio código!) sin que nuestro código quede atado a una clase en particular.
10 Inyección de dependencias Ahora que hemos visto el funcionamiento del contenedor, veamos cómo podemos usarlo para implementar la Inyección de Dependencias en Laravel. Qué es la inyección de dependencias? La Inyección de Dependencias es el acto de agregar (inyectar) cualquier dependencia a una clase, en lugar de instanciarla en algún lugar dentro de ella. Es común definir las dependencias en el constructor como parámetros de un tipo específico. Tomen como ejemplo el siguiente constructor: 1 public function construct(helloworld $greeter) 2 { 3 $this->greeter = $greeter; 4 } Al definir el parámetro de tipo HelloWorld, indicamos explícitamente que se trata de una dependencia de la clase. Esto es lo contrario a la instanciación directa: 1 public function construct() 2 { 3 $this->greeter = new HelloWorld; 4 } Si se preguntan para qué se usa la Inyección de Dependencias, esta respuesta de Stack Overflow¹ es un buen lugar para empezar. Explicaré algunos otros de sus beneficios en ejemplos subsecuentes. Enseguida, veremos un ejemplo de Inyección de Dependencias en acción, usando el contenedor de Inversión de Control de Laravel. ¹
11 Inyección de dependencias 8 Agregando dependencias a los controladores Este es un caso de uso común en Laravel. Normalmente, cuando un controlador requiere de ciertas clases en el constructor, es necesario agregar esas dependencias cuando se crea la clase. Sin embargo, qué sucede cuando se definen dependencias en un controlador de Laravel? Tendríamos que instanciar el controlador en alguna parte: 1 $crtl = new ContainerController( new HelloWorld ); Muy bien, pero en Laravel no es necesario instanciar el controlador directamente - el enrutador se encarga de eso. Aún así, es posible inyectar dependencias en el controlador con el uso del contenedor de Laravel! Siguiendo con las mismas clases GreetableInterface y HelloWorld de ejemplos anteriores, imaginemos que vinculamos a un controlador la ruta /container: Archivo: app/routes.php 1 interface GreetableInterface { 2 3 public function greet(); 4 5 } 6 7 class HelloWorld implements GreetableInterface { 8 9 public function greet() 10 { 11 return 'Hello, World!'; 12 } 13 } Route::get('/container', 'ContainerController@container); Ahora en el controlador podemos establecer HelloWorld como parámetro:
12 Inyección de dependencias 9 Archivo: app/controllers/containercontroller.php 1 <?php 2 3 class ContainerController extends BaseController { 4 5 protected $greeter; 6 7 // Dependencia: HelloWorld 8 public function construct(helloworld $greeter) 9 { 10 $this->greeter = $greeter; 11 } public function container() 14 { 15 return $this->greeter->greet(); 16 } } Si nos dirigimos a la ruta /container deberíamos ver, una vez más: 1 Hello, World! Noten que NO vinculamos nada al contenedor. Simplemente funcionó - una instancia de tipo HelloWorld se pasó como parámetro al controlador! Esto se debe a que el contenedor de Inversión de Control de Laravel intenta resolver automáticamente cualquier dependencia que se haya definido en el constructor de un controlador. Laravel inyectará las dependencias por nosotros! Interfaces como dependencias No hemos terminado aún. Esta es la parte hacia donde queríamos llegar! Qué tal si en lugar de especificar HelloWorld como dependencia del controlador especificáramos la interfaz GreetableInterface? Veamos cómo quedaría:
13 Inyección de dependencias 10 Archivo: app/controllers/containercontroller.php 1 <?php 2 3 class ContainerController extends BaseController { 4 5 protected $greeter; 6 7 // Dependencia: GreetableInterface 8 public function construct(greetableinterface $greeter) 9 { 10 $this->greeter = $greeter; 11 } public function container() 14 { 15 echo $this->greeter->greet(); 16 } } Si intentamos ejecutarlo obtendremos un error: 1 Illuminate\Container\BindingResolutionException: 2 Target [GreetableInterface] is not instantiable Por supuesto que GreetableInterface no se puede instanciar, se trata de una interfaz. Sin embargo, podemos ver que Laravel intenta instanciarla con tal de resolver la dependencia de la clase. Solucionemos eso - usaremos el método bind() del contenedor para indicarle a Laravel que utilice una instancia de HelloWorld cuando el contenedor descubra que nuestro controlador depende de una instancia de GreetableInterface:
14 Inyección de dependencias 11 Archivo: app/routes.php 1 interface GreetableInterface { 2 3 public function greet(); 4 5 } 6 7 class HelloWorld implements GreetableInterface { 8 9 public function greet() 10 { 11 return 'Hello, World!'; 12 } 13 } // Vinculamos HelloWorld para cuando se requiera 16 // una instancia de GreetableInterface! 17 App::bind('GreetableInterface', 'HelloWorld'); Route::get('/container', 'ContainerController@container); Ahora ejecutemos la ruta /container para ver de nuevo el mensaje Hello, World! Noten que no utilizamos una función anónima para vincular HelloWorld - Es posible simplemente indicar el nombre de la clase que deseamos. Una función anónima es útil cuando la implementación tiene a su vez sus propias dependencias, las cuales hay que pasar en su constructor. Por qué la inyección de dependencias? Por qué íbamos a querer especificar una interfaz como dependencia en lugar de una clase concreta? Lo queremos así porque necesitamos que cualquier clase que le pasemos al constructor sea una subclase de la interfaz. De esta manera podemos usar cualquier implementación - el método que necesitamos siempre estará disponible. Dicho de otra manera: podemos cambiar la implementación a voluntad, sin afectar otras secciones de nuestra aplicación. Aquí tenemos un ejemplo. Algo que he tenido que hacer muchas veces en aplicaciones reales.
15 Inyección de dependencias 12 No copien y peguen el código de este ejemplo. He omitido algunos detalles de configuración para simplificarlo, tales como claves API. Supongamos que nuestra aplicación envía correos utilizando AWS de Amazon. Para lograrlo, hemos definido una interfaz er y una implementación, llamada Aws er: 1 interface er { 2 3 public function send($to, $from, $subject, $message); 4 } 5 6 class Aws er implements er { 7 8 protected $aws; 9 10 public function construct(awssdk $aws) 11 { 12 $this->aws = $aws; 13 } public function send($to, $from, $subject, $message) 16 { 17 $this->aws->addto($to) 18 ->setfrom($from) 19 ->setsubject($subject) 20 ->setmessage($message); 21 ->send (); 22 } 23 } Vinculamos er a la implementación Aws er: 1 App::bind(' er', function() 2 { 3 return new Aws er( new AwsSDK ); 4 }); Un controlador usa como dependencia la interfaz er:
16 Inyección de dependencias 13 Archivo: app/controllers/ controller.php 1 class Controller extends BaseController { 2 3 protected $ er; 4 5 // Dependencia: er 6 public function construct( er $ er) 7 { 8 $this-> er = $ er; 9 } public function () 12 { 13 $this-> er->send( 14 'ex-to@example.com', 15 'ex-from@example.com', 16 'Peanut Butter Jelly Time!', 17 "It's that time again! And so on!" 18 ); return Redirect::to('/'); 21 } } Ahora supongamos que, más adelante, nuestra aplicación crece y necesita más funcionalidad de la que provee AWS. Después de investigar y evaluar opciones decidimos usar SendGrid. Cómo procedemos a modificar la aplicación para que use SendGrid? Ya que hemos usado interfaces y el contenedor de Laravel, hacer el cambio es muy fácil! Primero hay que crear una implementación de er que haga uso de SendGrid.
17 Inyección de dependencias 14 1 class SendGrid er implements er { 2 3 protected $sendgrid; 4 5 public function construct(sendgridsdk $sendgrid) 6 { 7 $this->sendgrid = $sendgrid; 8 } 9 10 public function send($to, $from, $subject, $message) 11 { 12 $mail = $this->sendgrid->mail->instance(); $mail->addto($to) 15 ->setfrom($from) 16 ->setsubject($subject) 17 ->settext( strip_tags($message) ) 18 ->sethtml($message) 19 ->send(); $this->sendgrid->web->send($mail); 22 } 23 } Después ( y por último!), hay que indicarle a la aplicación que use SendGrid en lugar de Aws. Como hemos utilizado bind() en el contenedor, cambiar la implementación de er de Aws er a SendGrid er es tan sencillo como hacer esta única modificación: 1 // De 2 App::bind(' er', function() 3 { 4 return new Aws er( new AwsSDK ); 5 }); 6 7 // A 8 App::bind(' er', function() 9 { 10 return new SendGrid er( new SendGridSDK ); 11 }); Noten que hemos hecho todo esto sin cambiar una sola línea de código en otro lugar de la aplicación. Al requerir el uso de la interfaz er como dependencia, se garantiza que cualquier clase que se inyecte tendrá disponible el método send().
18 Inyección de dependencias 15 Podemos observar esto en nuestro ejemplo. El controlador aún hace la llamada a $this-> er->send() sin requerir ninguna modificación al hacer el cambio de implementación de Aws er a SendGrid er. En resúmen. La Inyección de Dependencias y la Inversión de Control son patrones utilizados una y otra vez en el desarrollo con Laravel. Cómo veremos después, vamos a definir muchas interfaces para hacer nuestro código más fácil de mantener y para facilitar las pruebas. El contenedor de Inversión de Control de Laravel lo facilita.
CITRIX 4.5 - Citrix Application Streaming
1 de 39 01/12/2007 1:06 CITRIX 4.5 - Citrix Application Streaming Es la caracteristica principal de la versión 4.5 de Citrix, el Application Streaming, en este documento se explica cómo usarlo. Application
Más detallesCurso de Java POO: Programación orientada a objetos
Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Introducción a la POO 2 Herencia y polimorfismo 3 Empaquetado de proyectos
Más detallesManual CMS Mobincube
Manual CMS Mobincube CMS Mobincube Qué es? El CMS (Sistema de Gestión de Contenidos) es un completo website que permite la creación y actualización de contenido remoto. De esta forma, una vez creada una
Más detallesGuía de uso del Cloud Datacenter de acens
guíasdeuso Guía de uso del Cloud Datacenter de Calle San Rafael, 14 28108 Alcobendas (Madrid) 902 90 10 20 www..com Introducción Un Data Center o centro de datos físico es un espacio utilizado para alojar
Más detallesPowerPoint 2010 Modificar el diseño de las diapositivas
PowerPoint 2010 Modificar el diseño de las diapositivas Contenido CONTENIDO... 1 MODIFICAR EL DISEÑO DE LAS DIAPOSITIVAS... 2 DISEÑO DE DIAPOSITIVAS EN POWERPOINT WEB APP... 13 1 Modificar el diseño de
Más detallesMANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD
MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD Fecha última revisión: Diciembre 2010 Tareas Programadas TAREAS PROGRAMADAS... 3 LAS TAREAS PROGRAMADAS EN GOTELGEST.NET... 4 A) DAR DE ALTA UN USUARIO...
Más detallesCreación paso a paso de Formularios con Google (Parte I) (AKA: no corrijo nunca más!)
Creación paso a paso de Formularios con Google (Parte I) (AKA: no corrijo nunca más!) por Rodrigo Martínez Gazoni La idea de este tutorial es meternos en una de los servicios que ofrece Google en forma
Más detallesProgramación Orientada a Objetos con Java
Programación Orientada a Objetos con Java M.C. Jorge Eduardo Ibarra Esquer jorgeeie@uabc.mx Sobrecarga de métodos Java permite la definición de dos o más métodos que tengan el mismo nombre, dentro de la
Más detallesArchivo de correo con Microsoft Outlook contra Exchange Server
Archivo de correo con Microsoft Outlook contra Exchange Server Resumen Con este proceso de archivado, lo que pretendemos es guardar nuestro correo en un archivo de datos, para así poder realizar una copia
Más detallesGUÍA RED SOCIAL FACEBOOK
GUÍA RED SOCIAL FACEBOOK Qué es una Red Social? Una Red Sociales un sitio en internet donde compartir información, mensajes, ideas, fotos, etc., con amigos, conocidos y desconocidos. Para acceder a una
Más detallesPANEL DE CONTROL (Zona de Administración) MANUAL DE USO Por conexanet. Revisión 1.1 Fecha 2006-08
PANEL DE CONTROL (Zona de Administración) MANUAL DE USO Por conexanet Revisión 1.1 Fecha 2006-08 Índice 1. Acceder 2. Menú 3. Gestión Básica 3.1 Añadir 3.2 Editar 3.3 Eliminar 3.4 Eliminación de registros
Más detallesPHP y MySQL. Inicio: - Herencia - Palabra clave Final - Polimorfismo - Type Hinting - Abstracción de clases
PHP y MySQL Inicio: - Herencia - Palabra clave Final - Polimorfismo - Type Hinting - Abstracción de clases Herencia de Objetos La herencia permite crear muchas clases que son similares entre si, sin tener
Más detallesG R U P O S INDICE Cómo crear una cuenta en ARQA? Cómo tener un grupo en ARQA? Secciones y funcionalidades de los grupos Configuración del grupo
INDICE Cómo crear una cuenta en ARQA? 4 Cómo tener un grupo en ARQA? 5 Secciones y funcionalidades de los grupos 6 Muro del Grupo 6 Compartir Textos 8 Compartir Imágenes 9 Compartir videos 10 Compartir
Más detallesManual para la utilización de PrestaShop
Manual para la utilización de PrestaShop En este manual mostraremos de forma sencilla y práctica la utilización del Gestor de su Tienda Online mediante Prestashop 1.6, explicaremos todo lo necesario para
Más detallesMANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS
MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS En este manual aprenderemos a introducir un Ticket de Soporte (Incidencia Informática) y ver todo el proceso hasta que se resuelve. Para poder escribir Tickets
Más detallesPractica A. Crear y Administrar Grupos
Practica A Crear y Administrar Grupos Los grupos simplifican la administración ya que permiten dar permisos a grupos de usuarios en vez de uno a uno. Antes de comenzar a utilizar los grupos hay que entender
Más detallesDESCARGA E INSTALACIÓN DE LA DOCUMENTACIÓN PARA LAS CLASES DEL API DE JAVA. CONSULTAR EN LOCAL O EN INTERNET? (CU00910C)
APRENDERAPROGRAMAR.COM DESCARGA E INSTALACIÓN DE LA DOCUMENTACIÓN PARA LAS CLASES DEL API DE JAVA. CONSULTAR EN LOCAL O EN INTERNET? (CU00910C) Sección: Cursos Categoría: Lenguaje de programación Java
Más detallesUso del Programa Gantt Project
Uso del Programa Gantt Project Presentación En esta práctica guiada aprenderás varias cosas relacionadas con el uso de Gantt Project, que es una aplicación de ayuda a la gestión de proyectos: Especificar
Más detallesEn la siguiente imagen se muestra la pantalla principal del portafolio de un usuario que será utilizado para explicar cada aspecto del mismo.
Manual Portafolio El portafolio digital provee a los usuarios de herramientas para crear y mantener su propio portafolio digital en su proceso de formación en moodle en el cual podrán enviar sus trabajos,
Más detallesPráctica 5. Curso 2014-2015
Prácticas de Seguridad Informática Práctica 5 Grado Ingeniería Informática Curso 2014-2015 Universidad de Zaragoza Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas
Más detallesIntroducción a la Programación Orientada a Objetos
Introducción a la Programación Orientada a Objetos El paradigma imperativo. En un programa se tienen una serie de variables con las cuales operamos y modificamos mediante sentencias y funciones para producir
Más detallesLa plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente.
PLANTILLAS EN PHP El concepto de plantilla, es un criterio del desarrollo web que propone optimizar la cantidad de documentos HTML que se usan en el desarrollo de un sitio web. A lo largo de la navegación
Más detalles2.2.- Paradigmas de la POO
2.2.- Paradigmas de la POO Los principios propios de la orientación a objetos son: 2.2.1.- Abstracción de Datos 2.2.2.- Encapsulamiento 2.2.3.- Ocultamiento 2.2.4.- Herencia 2.2.5.- Polimorfismo Cualquier
Más detallesToda base de datos relacional se basa en dos objetos
1. INTRODUCCIÓN Toda base de datos relacional se basa en dos objetos fundamentales: las tablas y las relaciones. Sin embargo, en SQL Server, una base de datos puede contener otros objetos también importantes.
Más detallesÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009)
JOOMLA! ÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009) Es necesario comentar que este manual ha sido diseñado en su mayor parte por comunidadjoomla.org. Este manual es una
Más detallesApp para realizar consultas al Sistema de Información Estadística de Castilla y León
App para realizar consultas al Sistema de Información Estadística de Castilla y León Jesús M. Rodríguez Rodríguez rodrodje@jcyl.es Dirección General de Presupuestos y Estadística Consejería de Hacienda
Más detallesPropuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA
Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA Documento de trabajo elaborado para la Red Temática DocenWeb: Red Temática de Docencia en Control mediante Web (DPI2002-11505-E)
Más detallesMANUAL DE USUARIO APLICACIÓN SYSACTIVOS
MANUAL DE USUARIO APLICACIÓN SYSACTIVOS Autor Edwar Orlando Amaya Diaz Analista de Desarrollo y Soporte Produce Sistemas y Soluciones Integradas S.A.S Versión 1.0 Fecha de Publicación 19 Diciembre 2014
Más detalles15 CORREO WEB CORREO WEB
CORREO WEB Anteriormente Hemos visto cómo funciona el correo electrónico, y cómo necesitábamos tener un programa cliente (Outlook Express) para gestionar los mensajes de correo electrónico. Sin embargo,
Más detallesEn términos generales, un foro es un espacio de debate donde pueden expresarse ideas o comentarios sobre uno o varios temas.
1 de 18 Inicio Qué es un foro En términos generales, un foro es un espacio de debate donde pueden expresarse ideas o comentarios sobre uno o varios temas. En el campus virtual, el foro es una herramienta
Más detallesDescripción del tutorial. Contenidos. www.facebook.com/codigonexogr. @codigonexo. www.plus.google.com/+codigonexogr/
www.facebook.com/codigonexogr @codigonexo www.plus.google.com/+codigonexogr/ Contenidos 1. Introducción al patrón MVC 1.1.Conceptos básicos Qué es un patrón 1.2.Estructura del patrón MVC 1.3.Cómo funciona
Más detallesPLANTILLAS EN MICROSOFT WORD
PLANTILLAS EN MICROSOFT WORD Una plantilla es un modelo o patrón para crear nuevos documentos. En una plantilla se guarda internamente el formato utilizado, es decir, el estilo de la fuente, el tamaño,
Más detallesUnidad Didáctica 12. La publicación
Unidad Didáctica 12 La publicación Contenido 1. Desarrollar y explotar 2. Definición del Sitio 3. Alojar nuestra primera página Web 4. Configurar la conexión FTP U.D. 12 La publicación 1. Desarrollar y
Más detallesCómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia
Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199 www.hostalia.com La puesta en marcha de WordPress es muy sencilla,
Más detallesJavaScript como Orientación a Objetos
Gustavo Lacoste (gustavo@lacosox.org) October 2012 Resumen El objetivo de las siguientes notas es generar una estructura en JavaScript que nos permita reutilizar de manera limpia las funciones creadas
Más detallesCOPIAS DE SEGURIDAD CON COBIAN BACKUP INSTALACIÓN Y CONFIGURACIÓN
COPIAS DE SEGURIDAD CON COBIAN BACKUP INSTALACIÓN Y CONFIGURACIÓN Qué es Cobian Backup? Cobian Backup es un programa multitarea que podemos usar para crear y restaurar copias de seguridad de nuestros archivos
Más detallesCrear la base de datos antes de la instalación de Wordpress.
Introducción En este tutorial básico sobre instalar Wordpress en tu propio hosting mediante un panel de control cpanel y aprenderás como personalizar las bases de datos MySQL que utiliza Wordpress. Para
Más detallesAGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7
Tutoriales de ayuda e información para todos los niveles AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7 Como agregar a una red existente un equipo con Windows 7 y compartir sus archivos
Más detalles2. Seleccione OneDrive en la parte superior de los sitios de SharePoint u Office 365 de su organización.
Como acceder a nuestra cuenta de OneDrive Business: 1. Inicie sesión en Office 365 (https://portal.office.com). 2. Seleccione OneDrive en la parte superior de los sitios de SharePoint u Office 365 de su
Más detallesProceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento
Qué es AT-Encrypt nos permitirá dotar de contraseña a cualquier documento o carpeta. Este documento o carpeta sólo será legible por aquel que conozca la contraseña El funcionamiento del cifrado (o encriptación)
Más detallesInternet Information Server
Internet Information Server Internet Information Server (IIS) es el servidor de páginas web avanzado de la plataforma Windows. Se distribuye gratuitamente junto con las versiones de Windows basadas en
Más detallesPHP Perfect SQL v1.0 (SQL perfectas en PHP)
PHP Perfect SQL v1.0 (SQL perfectas en PHP) Muchas veces cuando programamos para web es muy fácil cometer errores en la construcción sintáctica de consultas SQL, por ejemplo cuando tenemos que realizar
Más detallesTutorial: Primeros Pasos con Subversion
Tutorial: Primeros Pasos con Subversion Introducción Subversion es un sistema de control de versiones open source. Corre en distintos sistemas operativos y su principal interfaz con el usuario es a través
Más detallesManual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib
Manual de uso de la plataforma para monitores CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib [Manual de uso de la plataforma para monitores] 1. Licencia Autor del documento: Centro de Apoyo Tecnológico
Más detallesManual de NVU Capítulo 4: Los enlaces
Manual de NVU Capítulo 4: Los enlaces Pág. 1 Manual de NVU Capítulo 4: Los enlaces Reconocimiento-NoComercial-CompartirIgual 2.5 España Realizado por: Julio Ruiz Palmero (Universidad de Málaga) julioruiz@uma.es
Más detallesGMAIL (avanzado) 1. Accede a la web de Gmail, www.gmail.com. Te destacamos las funcionalidades que vamos a enseñarte a. 2. Vamos a enseñarte a:
Sabes que puedes hacer muchas más cosas que enviar y recibir correo con Gmail? Puedes organizarlo, crear reglas de correo, filtrar correo, organizar contactos Adriana va a enseñar a su padre cómo aprovechar
Más detallesInstalar XAMP en modo gráfico
Instalar XAMP en modo gráfico Si queremos convertir nuestro ordenador en un servidor web, podemos hacerlo en menos de 10 minutos con la instalación del paquete XAMPP que se encargará de realizar automáticamente
Más detalles1.4.1.2. Resumen... 1.4.2. ÁREA DE FACTURACIÓN::INFORMES::Pedidos...27 1.4.2.1. Detalle... 1.4.2.2. Resumen... 1.4.3. ÁREA DE
MANUAL DE USUARIO DE ABANQ 1 Índice de contenido 1 ÁREA DE FACTURACIÓN......4 1.1 ÁREA DE FACTURACIÓN::PRINCIPAL...4 1.1.1. ÁREA DE FACTURACIÓN::PRINCIPAL::EMPRESA...4 1.1.1.1. ÁREA DE FACTURACIÓN::PRINCIPAL::EMPRESA::General...4
Más detallesSAP Business Workflow
SAP Business Workflow Eventos April 10, 2006 Objetivos del Curso Objetivos Son objetivos de este curso Eventos Entender que es un evento y como crear eventos Comprender los distintos tipos de eventos Saber
Más detallesCreación de Funciones de Conducción
Creación de Funciones de Conducción Requerimientos Para el desarrollo de esta actividad se requiere que: Contemos con un robot BoeBot armado con placa Arduino. Repetición En estos momentos habremos notado
Más detallesHostaliawhitepapers. Las ventajas de los Servidores dedicados. www.hostalia.com. Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199
Las ventajas de los Servidores dedicados Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199 www.hostalia.com A la hora de poner en marcha una aplicación web debemos contratar un servicio
Más detallesLABORATORIO Nº 3 PRÁCTICA DE FUNCIONES EN MICROSOFT EXCEL
OBJETIVO Mejorar el nivel de comprensión y el manejo de las destrezas del estudiante para utilizar funciones en Microsoft Excel 2010. 1) LA FUNCIÓN SI EN EXCEL La función SI en Excel es parte del grupo
Más detallesUso de Visual C++ Pre-Practica No. 3
Pre-Practica No. 3 Uso de Visual C++ Microsoft Visual C++ 2010 es una versión de Visual Studio específica para el lenguaje de programación C++. Es un entorno de desarrollo muy completo y profesional. Por
Más detallesBase de datos en Excel
Base de datos en Excel Una base datos es un conjunto de información que ha sido organizado bajo un mismo contexto y se encuentra almacenada y lista para ser utilizada en cualquier momento. Las bases de
Más detallesProgramación en Java. Programación en OO
Programación en OO Lección 4:Programación en OO 1. Herencia 2. Modificadores de Acceso 3. Interfaces Herencia Es la acción en la que una clase obtiene los métodos y propiedades definidos en otra clase,
Más detallesBETA. Sacándole Partido a JUnit. Mocking. www.iwt2.org formacion@iwt2.org
BETA Sacándole Partido a JUnit Mocking www.iwt2.org formacion@iwt2.org 03. Mocking Aprender qué es el mocking y para qué sirve. Desarrollar el tipo de pruebas en las que es necesario un mock. Conocer librerías
Más detallesEjercicios - Persistencia en Android: ficheros y SQLite
Ejercicios - Persistencia en Android: ficheros y SQLite Índice 1 Uso de ficheros (0.5 puntos)...2 2 Persistencia con ficheros (0.5 puntos)...3 3 Base de datos: SQLiteOpenHelper (0.5 puntos)... 3 4 Base
Más detallesPrograma diseñado y creado por 2014 - Art-Tronic Promotora Audiovisual, S.L.
Manual de Usuario Programa diseñado y creado por Contenido 1. Acceso al programa... 3 2. Opciones del programa... 3 3. Inicio... 4 4. Empresa... 4 4.2. Impuestos... 5 4.3. Series de facturación... 5 4.4.
Más detallesGuía de uso del sistema CV-Online
Guía de uso del sistema CV-Online 1.- Registro. a.- Pasos para completar el formulario. 2.- Ingreso al sistema. a.- Olvidó su Usuario o contraseña? b.- Consulta. c.- Crear nueva cuenta. 3.- Administrador
Más detallesPatrones Creacionales Builder. Patrones Creacionales Abstract Factory. Patrones Creacionales Singleton. Patrones Creacionales Prototype
Temario Patrones de Diseño de Software Fundamentos de Ingeniería de SW Jocelyn Simmonds GOF: Patrones Creacionales Patrones Estructurales ILI-236 (JS) Patrones II 1 / 31 ILI-236 (JS) Patrones II 2 / 31
Más detallesLa ventana de Microsoft Excel
Actividad N 1 Conceptos básicos de Planilla de Cálculo La ventana del Microsoft Excel y sus partes. Movimiento del cursor. Tipos de datos. Metodología de trabajo con planillas. La ventana de Microsoft
Más detallesQUÉ ES UN SERVIDOR Y CUÁLES SON LOS PRINCIPALES TIPOS DE SERVIDORES? (PROXY, DNS, WEB, FTP, SMTP, ETC.) (DV00408A)
APRENDERAPROGRAMAR.COM QUÉ ES UN SERVIDOR Y CUÁLES SON LOS PRINCIPALES TIPOS DE SERVIDORES? (PROXY, DNS, WEB, FTP, SMTP, ETC.) (DV00408A) Sección: Divulgación Categoría: Herramientas Informáticas Fecha
Más detallesCAPITULO 4. Requerimientos, Análisis y Diseño. El presente capítulo explica los pasos que se realizaron antes de implementar
CAPITULO 4 Requerimientos, Análisis y Diseño El presente capítulo explica los pasos que se realizaron antes de implementar el sistema. Para esto, primero se explicarán los requerimientos que fueron solicitados
Más detallesLibro Ágil Ilustrado. a disfrutar el camino! Pablo Tortorella. Este libro está a la venta en http://leanpub.com/libro-agil-ilustrado
Libro Ágil Ilustrado a disfrutar el camino! Pablo Tortorella Este libro está a la venta en http://leanpub.com/libro-agil-ilustrado Esta versión se publicó en 2013-12-03 This is a Leanpub book. Leanpub
Más detallesProgramación I: Funciones y módulos
Programación I: Funciones y módulos Esteban De La Fuente Rubio 2 de abril de 23 Índice. Funciones.. Definición y llamado de funciones............................................. 2.2. Parámetros por omisión..................................................
Más detallesMANUAL DE AYUDA MODULO TALLAS Y COLORES
MANUAL DE AYUDA MODULO TALLAS Y COLORES Fecha última revisión: Enero 2010 Índice TALLAS Y COLORES... 3 1. Introducción... 3 CONFIGURACIÓN PARÁMETROS TC (Tallas y Colores)... 3 2. Módulos Visibles... 3
Más detallesSitios remotos. Configurar un Sitio Remoto
Sitios remotos Definir un sitio remoto significa establecer una configuración de modo que Dreamweaver sea capaz de comunicarse directamente con un servidor en Internet (por eso se llama remoto) y así poder
Más detalles1.- INTRODUCCIÓN 2.- PARÁMETROS
1.- INTRODUCCIÓN Hemos diseñado una aplicación que facilite el envío a las entidades bancarias de las de cobro por domiciliación. La entrada de esta aplicación pueden ser, tanto ficheros cuyos formatos
Más detallesManejo de versiones 392
Manejo de versiones 392 El desarrollo de software es un trabajo en equipo y cierto grado de confusión es inevitable. No puedo reproducir el error en esta versión! Qué pasó con el arreglo de la semana pasada?
Más detallesCreando una webquests
Creando una webquests 1. LO PRIMERO EL PROGRAMA Para crear paginas web necesitamos el software apropiado. Hay muchas formas y programas para hacerlo, pero por su facilidad de uso y por ser software libre
Más detallesTUTORIAL (TRANSLATE.CLASS)
TUTORIAL (TRANSLATE.CLASS) 6 DE FEBRERO DE 2012 (V. 0.9) NETFLIE. www.netflie.es meteolive.netflie.es E info@netflie.es Tutorial clase Translate. MeteoLive (http://meteolive.netflie.es) Índice de contenido
Más detallesTutorial Básico de vbscript
Tutorial Básico de vbscript Bueno, primero aclarar que este tutorial, pretende explicar de manera básica las distintas instrucciones aplicadas en visual basic script (vbs de aquí en más), para que así
Más detallesPREPARANDO EL ENTORNO DE DESARROLLO PARA PROGRAMAR EN PHP. DESCARGAR E INSTALAR NOTEPAD++ (CU00808B)
APRENDERAPROGRAMAR.COM PREPARANDO EL ENTORNO DE DESARROLLO PARA PROGRAMAR EN PHP. DESCARGAR E INSTALAR NOTEPAD++ (CU00808B) Sección: Cursos Categoría: Tutorial básico del programador web: PHP desde cero
Más detallesTEMA 4: EMPEZANDO A NAVEGAR ESCUELA UNIVERSITARIA DE INFORMÁTICA. Raúl Martín Martín
TEMA 4: EMPEZANDO A ESCUELA UNIVERSITARIA DE INFORMÁTICA NAVEGAR Raúl Martín Martín SERVICIOS DE INTERNET SERVICIOS DE INTERNET Las posibilidades que ofrece Internet se denominan servicios. Hoy en día,
Más detallesGUÍA PARA LA INSTALACIÓN Y USO DE WORDPRESS BY MASTERHACKS. www.masterhacks.net. Guía de instalación y uso de Wordpress Página 1
GUÍA PARA LA INSTALACIÓN Y USO DE WORDPRESS BY MASTERHACKS www.masterhacks.net Guía de instalación y uso de Wordpress Página 1 Wordpress es un sistema muy utilizado para la creación de blogs. Este se puede
Más detallesCOMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX
COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX En este manual se presenta el proceso de configuración de una Maquina Virtual en VirtualBox, que será utilizada para instalar un Servidor
Más detallesWeb Publishing con LabVIEW (I)
1 Web Publishing con LabVIEW (I) Una de las herramientas más útiles de LabVIEW es el Web Publishing. Gracias a esta utilidad podemos subir nuestras creaciones a Internet, para mostrar por ejemplo resultados
Más detallesGUIA APLICACIÓN DE SOLICITUDES POR INTERNET. Gestión de Cursos, Certificados de Aptitud Profesional y Tarjetas de Cualificación de Conductores ÍNDICE
ÍNDICE ACCESO A LA APLICACIÓN... 2 1.- HOMOLOGACIÓN DE CURSOS... 4 1.1.- INICIAR EXPEDIENTE... 4 1.2.- CONSULTA DE EXPEDIENTES... 13 1.3.- RENUNCIA A LA HOMOLOGACIÓN... 16 2.- MECÁNICA DE CURSOS... 19
Más detallesImplementación de widgets Avaibook en Blogger
Implementación de widgets Avaibook en Blogger Introducción Blogger es un sistema de blogs como cualquier otro. Permite la publicación de entradas, páginas, etc. Mucha gente lo utiliza como página web personal
Más detallesINDICE. 1. Introducción... 4. 2. El panel Entities view... 5. 3. El panel grafico... 6. 4. Barra de botones... 6. 4.1. Botones de Behavior...
MANUAL DE USUARIO INDICE 1. Introducción... 4 2. El panel Entities view... 5 3. El panel grafico... 6 4. Barra de botones... 6 4.1. Botones de Behavior... 7 4.2. Botones de In-agents... 8 4.3. Botones
Más detallesQué es Google Calendar? Qué se puede hacer en Google Calendar?
Qué es Google Calendar? Google Calendar es una herramienta web 2.0 que permite tener una agenda virtual a la que se puede acceder desde cualquier lugar, en forma gratuita. La característica más interesante
Más detallesCurso Internet Básico - Aularagon
Antes de empezar es necesario que tengas claro algunas cosas: para configurar esta cuenta de correo, debes saber que el POP y el SMTP en este caso son mail.aragon.es; esta cuenta de correo hay que solicitarla
Más detallesTABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse.
TABLA DE DECISION La tabla de decisión es una herramienta que sintetiza procesos en los cuales se dan un conjunto de condiciones y un conjunto de acciones a tomar según el valor que toman las condiciones.
Más detallesCurso de PHP con MySQL Gratis
Curso de PHP con MySQL Gratis Introducción Este mini curso o mini tutorial de PHP le ayudará a realizar cualquier sistema para que pueda insertar uno o varios registros a una base de datos con MySQL, este
Más detallesManual de iniciación a
DOCUMENTACIÓN Picasa y otras nubes Manual de iniciación a DROPBOX 1 Últimamente se ha hablado mucho de la nube y de cómo es el futuro de la Web. También se han presentado servicios y aplicaciones que ya
Más detallesCVS Concurrent Versions System Manual de Usuario
CVS Concurrent Versions System Manual de Usuario Resumen Sistema de control de versiones basado en código open-source que mantiene el registro de todo el trabajo y los cambios en los archivos (código fuente
Más detallesCONFEDERACIÓN DE EMPRESARIOS DE MÁLAGA
GUÍA DEL ALUMNO 1 Introducción 2 Acceso a la plataforma 3 Cerrar sesión 4 Estructura del curso virtual 5 Foros 5.1 No quiero recibir copias de los foros en mi email 6 Mensajería Interna 7 Como subir tareas
Más detallesPROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso
PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación II MODELOS y HERRAMIENTAS UML 1 1 Modelado de casos de uso (I) Un caso de uso es una técnica de modelado usada para describir lo que debería hacer
Más detallesManual de Usuario. Facebook
p Manual de Usuario. Configuración. Principales funcionalidades. PLATAFORMA DE SERVICIOS PSUV Sitio Web: http://www.psuv.org.ve Índice de Contenidos Resumen... 3 Desarrollo... 4 Crear una cuenta... 4 Agregar
Más detallesMANUAL COPIAS DE SEGURIDAD
MANUAL COPIAS DE SEGURIDAD Índice de contenido Ventajas del nuevo sistema de copia de seguridad...2 Actualización de la configuración...2 Pantalla de configuración...3 Configuración de las rutas...4 Carpeta
Más detallesTUTORIAL SOBRE CÓMO CREAR Y GESTIONAR UN BLOG CON BLOGGER
TUTORIAL SOBRE CÓMO CREAR Y GESTIONAR UN BLOG CON BLOGGER Existen muchos proveedores de servicios para crear un blog. En nuestro caso se ha decidido crear uno en Blogger, que es, a su vez, donde muchas
Más detallesCapitulo 5. Implementación del sistema MDM
Capitulo 5. Implementación del sistema MDM Una vez que se concluyeron las actividades de análisis y diseño se comenzó la implementación del sistema MDM (Manejador de Documentos de MoProSoft). En este capitulo
Más detallesLECCION 5. Herramientas de Pintura y Edición Parte II. Crear formas de Pincel
LECCION 5. Herramientas de Pintura y Edición Parte II Crear formas de Pincel Además de todas las opciones de pincel vistas anteriormente, Photoshop permite personalizar aún más tus pinceles creando formas
Más detallesSOLUCIÓN CASO GESTIÓN DE PERSONAL I
SOLUCIÓN CASO GESTIÓN DE PERSONAL I Empezaremos abriendo un nuevo libro de trabajo que podemos guardar como Nóminas e introducimos los datos que nos proporciona el enunciado relativos a coste por hora
Más detallesIntroducción a Moodle
Instituto la Américas de Nayarit Ing. Elías Portugal Luna Qué es Moodle? Moodle es una aplicación web de tipo Ambiente Educativo Virtual, un sistema de gestión de cursos, de distribución libre, que ayuda
Más detallesEn cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.
Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa
Más detallesCatoira Fernando Fullana Pablo Rodriguez Federico [MINERIA DE LA WEB] Proyecto Final - Informe Final
Catoira Fernando Fullana Pablo Rodriguez Federico [MINERIA DE LA WEB] Proyecto Final - Informe Final INTRODUCCION En principio surgió la idea de un buscador que brinde los resultados en agrupaciones de
Más detallesGuia de realización de un GIG personal en nuestra página web (http://zunzuneguibhi.net):
Crear un GIG en la web del instituto Zunzunegui (v2) Guillermo Hierrezuelo Guia de realización de un GIG personal en nuestra página web (http://zunzuneguibhi.net): PREÁMBULO: entrar a nuestra página; navegadores
Más detalles