<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2487783368669386032</id><updated>2026-10-28T07:51:17.492+01:00</updated><category term="Tutoriales"/><category term="Java"/><category term="Juegos"/><category term="Android"/><category term="Aplicaciones"/><category term="Frases"/><category term="Ejemplos"/><category term="Fotografía"/><category term="Frameworks"/><category term="Spring"/><category term="Humor"/><category term="Matemáticas"/><category term="Probabilidad"/><category term="Trucos"/><category term="Alchemy Classic"/><category term="Historia"/><category term="Informática"/><category term="Loterias"/><category term="Videos"/><category term="Alchemy"/><category term="Blogger"/><category term="Eclipse"/><category term="Encuesta"/><category term="Física"/><category term="Google Drive"/><category term="HTML5"/><category term="Imagenes"/><category term="Internet"/><category term="Log4j"/><category term="Móviles"/><category term="Play Store"/><category term="Programación"/><category term="Pruebas funcionales"/><category term="Sistema Operativo"/><category term="Test"/><category term="Tutorial"/><category term="WS"/><category term="Windows"/><category term="100 Doors"/><category term="100 Floors"/><category term="4Ext Touch"/><category term="AbstractModule"/><category term="Adsense"/><category term="Algoritmo"/><category term="Amstrad"/><category term="Angry Words"/><category term="Apache Batik"/><category term="Apalabrados"/><category term="Arquillian"/><category term="Articulo"/><category term="Articulos"/><category term="Autowired"/><category term="Bancos de imágenes"/><category term="Barcenas"/><category term="BarcenasGate"/><category term="Batch"/><category term="Bean"/><category term="Bebes"/><category term="Bootstrap"/><category term="Burgos"/><category term="CICS"/><category term="Cine"/><category term="Clker"/><category term="ClockWorkMod"/><category term="Cloud Computing"/><category term="Cobol"/><category term="Comandos"/><category term="Comparadores"/><category term="Concordion"/><category term="Concurso"/><category term="Configuracion"/><category term="Cookies"/><category term="Crisis"/><category term="Cuentame"/><category term="Cyanogen"/><category term="D&#39;Hondt"/><category term="DB2"/><category term="DLI"/><category term="DOM"/><category term="Deportes"/><category term="Dinero"/><category term="Distancia de Levenshtein"/><category term="Drag &amp; Drop"/><category term="Economía"/><category term="Einstein"/><category term="Elecciones"/><category term="Endomondo"/><category term="Estadística"/><category term="Estadísticas"/><category term="Excel"/><category term="Fences"/><category term="Formulario"/><category term="FreeMarker"/><category term="FreePik"/><category term="GPS"/><category term="Gadgets"/><category term="Gamonal"/><category term="Garbage Collector"/><category term="Genericidad"/><category term="Gestión Memoria"/><category term="Google"/><category term="Google Chrome"/><category term="Google Docs"/><category term="Google Guice"/><category term="Gráficos"/><category term="HBOOT"/><category term="HDR"/><category term="HEAP"/><category term="HTC"/><category term="HTC Desire"/><category term="HTML"/><category term="Hackeo"/><category term="Idiomas"/><category term="Image Resizer"/><category term="Internetternet"/><category term="Inversion de Control"/><category term="Inyeccion de Dependencias"/><category term="IoC"/><category term="Iphone"/><category term="JAXB"/><category term="JFreeChart"/><category term="JSON"/><category term="JUnit4"/><category term="JVM"/><category term="Jackson"/><category term="Java 7"/><category term="Javascript"/><category term="Job"/><category term="Ley de Benford"/><category term="Local Storage"/><category term="Los Descendientes"/><category term="Los Girasoles Ciegos"/><category term="LottoDroid"/><category term="LullabyDroid"/><category term="Luz"/><category term="Magia"/><category term="Motores de Plantillas"/><category term="NanaDroid"/><category term="Navegadores"/><category term="Nimi Places"/><category term="Objetivos"/><category term="Open Clipart"/><category term="Ordenadores"/><category term="Parcel"/><category term="Parcelable"/><category term="Photomatix"/><category term="Precios"/><category term="Programacion"/><category term="Pruebas de aceptacion"/><category term="Pruebas unitarias"/><category term="Quartz"/><category term="Redimensionar"/><category term="Reflection"/><category term="Resolucion"/><category term="Reward"/><category term="S-OFF"/><category term="SFL4J"/><category term="SLF4j"/><category term="SVG"/><category term="SVN"/><category term="Scrabble"/><category term="Selenium"/><category term="Service"/><category term="Servicio"/><category term="Servicios en la nube"/><category term="Servidor Web"/><category term="Session Storage"/><category term="Sistema Votacion"/><category term="Soluciones"/><category term="Stack"/><category term="Steve Jobs"/><category term="Storage"/><category term="Stump me"/><category term="Super Truper"/><category term="Swaps"/><category term="Tableizer"/><category term="Tablets"/><category term="Teoria de la Información y Comunicación"/><category term="Teoría de la Relatividad"/><category term="TestNG"/><category term="Text mining"/><category term="Timothy Doner"/><category term="Tips"/><category term="Triviados"/><category term="Trivial"/><category term="Tweeter"/><category term="Velocity"/><category term="XML"/><category term="Youtube"/><category term="iOS"/><category term="logback"/><category term="root"/><category term="serializar"/><category term="tablas"/><title type='text'>Un murciano en el Polo</title><subtitle type='html'>Blog sobre tecnologías, frameworks, gadgets, juegos, aplicaciones...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>89</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-4300098428254395516</id><published>2025-02-25T17:55:00.027+01:00</published><updated>2025-02-26T16:45:11.342+01:00</updated><title type='text'>Streams en Java</title><content type='html'>&lt;p style=&quot;text-align: justify;&quot;&gt;Los streams de Java se introdujeron en Java 8 como parte de la API de Streams 🔗, proporcionando una forma moderna y funcional de procesar colecciones de datos. Los Streams permiten realizar operaciones de manera declarativa y paralela, mejorando la legibilidad y el rendimiento del código.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Hoy en día prácticamente su uso se ha convertido en un must para cualquier profesional que se dedique a la programación.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Algunas ventajas de utilizar Java Streams 👀💥:&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;
  &lt;b&gt;Código más conciso y legible&lt;/b&gt;
&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Las operaciones con Streams son más compactas y fáciles de leer.&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;Paralelismo&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Los Streams permiten ejecutar operaciones en paralelo de manera sencilla.&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;Inmutabilidad&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Los Streams no modifican las colecciones originales, lo que ayuda a evitar errores.&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;
  &lt;b&gt;Composición de operaciones&lt;/b&gt;
&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Los Streams permiten encadenar múltiples operaciones de manera fluida.&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;
  &lt;b&gt;Mejor rendimiento&lt;/b&gt;
&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Las operaciones con Streams pueden ser más eficientes gracias a optimizaciones internas.&lt;/p&gt;
&lt;p&gt;
  &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEipa_2Scx8Kf1DliXBRCXKjs02peuULgXh6m0ObQIBw0WP7rMd9oe7XSl3sYzgcvw5zhfw5Pk2dLr8LCdAx2SexXq8xrJVTFd8sEjK1u_m2BPrpclaz601V5BOmjwBpkqtJHUYzME9w0MVJVXj_tUBIRBFV9qS03AJO--zvxJK0GDCFyKGtUwuxTP-Hhy8&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;
    &lt;img data-original-height=&quot;451&quot; data-original-width=&quot;1050&quot; height=&quot;274&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEipa_2Scx8Kf1DliXBRCXKjs02peuULgXh6m0ObQIBw0WP7rMd9oe7XSl3sYzgcvw5zhfw5Pk2dLr8LCdAx2SexXq8xrJVTFd8sEjK1u_m2BPrpclaz601V5BOmjwBpkqtJHUYzME9w0MVJVXj_tUBIRBFV9qS03AJO--zvxJK0GDCFyKGtUwuxTP-Hhy8=w640-h274&quot; width=&quot;640&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;br /&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;span style=&quot;font-size: x-small;&quot;&gt;Tipos de operaciones sobre streams&lt;/span&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Comencemos por lo super básico... el inicio del source &lt;br /&gt;
&lt;pre&gt;	&lt;code&gt;    
    List&amp;lt;Employee&amp;gt; employees = List.of(
        new Employee(&quot;Alice&quot;, 30, 70000, &quot;Company A&quot;, List.of(&quot;Java&quot;, &quot;Spring&quot;, &quot;SQL&quot;)),
        new Employee(&quot;Bob&quot;, 25, 60000, &quot;Company B&quot;, List.of(&quot;JavaScript&quot;, &quot;React&quot;, &quot;Node.js&quot;)),
        new Employee(&quot;Charlie&quot;, 35, 50000, &quot;Company C&quot;, List.of(&quot;Java&quot;, &quot;Spring&quot;, &quot;SQL&quot;))
    );

&lt;/code&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
  &lt;h2 style=&quot;text-align: left;&quot;&gt;Source 🔥&lt;/h2&gt;
  &lt;div&gt;En el ejemplo de arriba el source o fuente de datos será la lista con los tres empleados.&lt;/div&gt;
  &lt;div&gt;
    &lt;br /&gt;
  &lt;/div&gt;
  &lt;h2 style=&quot;text-align: left;&quot;&gt;Operaciones intermedias 🔌&lt;/h2&gt;
  &lt;div&gt;Son con las que vamos realizando las transformaciones a nuestro stream original.&lt;/div&gt;
  &lt;h3 style=&quot;text-align: left;&quot;&gt;map&lt;/h3&gt;
  &lt;div&gt;Con map (operación intermedia) transformamos un objeto Employee a un String, en este caso el nombre del empleado en mayúsculas.&lt;/div&gt;
  &lt;div&gt;
    &lt;br /&gt;
  &lt;/div&gt;
  &lt;div&gt;
    &lt;pre&gt;			&lt;code&gt;    //Map
    List&amp;lt;String&amp;gt; employeeNames =
    employees.stream()
        .map((s) -&amp;gt; s.name().toUpperCase())
        .collect(Collectors.toList());
    System.out.println(employeeNames);&lt;/code&gt;
		&lt;/pre&gt;
  &lt;/div&gt;
  &lt;div&gt;
    &lt;br /&gt;
  &lt;/div&gt;
  &lt;p style=&quot;text-align: left;&quot;&gt;
    &lt;b&gt;Output: &lt;br /&gt;
    &lt;/b&gt;ALICE &lt;br /&gt;BOB &lt;br /&gt;CHARLIE
  &lt;/p&gt;
  &lt;div style=&quot;text-align: left;&quot;&gt;
    &lt;br /&gt;
  &lt;/div&gt;
  &lt;div&gt;
    &lt;h3&gt;flatMap&lt;/h3&gt;
    &lt;div&gt;En particular yo la utilizo frecuentemente y nos sirve para aplanar un stream en el que los elementos son colecciones de otros elementos o bien tienen alguna propiedad de tipo colección. Os muestro un ejemplo en el que devolvemos los skills únicos de los empleados en un Set:&lt;/div&gt;
    &lt;div&gt;
      &lt;br /&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;pre&gt;				&lt;code&gt;        
            // flatMap
    Set&amp;lt;String&amp;gt; uniqueSkills = employees.stream()
        .flatMap(employee -&amp;gt; employee.skills().stream())
        .collect(Collectors.toSet());
    System.out.println(uniqueSkills);

        
				&lt;/code&gt;
			&lt;/pre&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;br /&gt;
    &lt;/div&gt;
    &lt;p style=&quot;text-align: left;&quot;&gt;
      &lt;b&gt;Output: &lt;br /&gt;
      &lt;/b&gt;[Java, JavaScript, Node.js, Spring, React, SQL]
    &lt;/p&gt;
  &lt;/div&gt;
  &lt;h3 style=&quot;text-align: left;&quot;&gt;filter&lt;/h3&gt;
  &lt;div&gt;Es una operación intermedia por la que podemos filtrar elementos del stream. En este caso filtramos los empleados mayores a 30 años antes de realizar el map.&lt;/div&gt;
  &lt;div&gt;
    &lt;br /&gt;
  &lt;/div&gt;
  &lt;pre style=&quot;text-align: left;&quot;&gt;		&lt;code&gt;
    // Filter
    List&amp;lt;String&amp;gt; employeeFiltered = employees.stream()
        .filter((e) -&amp;gt; e.age()&amp;gt; 30)
        .map (Employee::name)
        .collect(Collectors.toList());
        System.out.println(employeeFiltered);
        &lt;/code&gt;
	&lt;/pre&gt;
  &lt;b&gt;Output:&lt;/b&gt;
  &lt;div&gt;
    &lt;br /&gt;
  &lt;/div&gt;
  &lt;div&gt;[Charlie]&lt;/div&gt;
  &lt;h3 style=&quot;text-align: left;&quot;&gt;sort&lt;/h3&gt;
  &lt;div&gt;Es una operación intermedia por la que podemos ordenar los elementos del stream, de menor a mayor por edad.&lt;/div&gt;
  &lt;div&gt;
    &lt;br /&gt;
    &lt;pre&gt;			&lt;code&gt;
            // Sort
    List&amp;gt;Employee&amp;gt; sortedEmployees = employees.stream()
        .sorted(Comparator.comparingInt(Employee::age))
        .collect(Collectors.toList());
    System.out.println(sortedEmployees);
    &lt;/code&gt;
		&lt;/pre&gt;
  &lt;/div&gt;
  &lt;div&gt;
    &lt;br /&gt;
    &lt;b&gt;Output:&lt;/b&gt;
  &lt;/div&gt;
  &lt;div&gt;
    &lt;b&gt;
      &lt;br /&gt;
    &lt;/b&gt;
  &lt;/div&gt;
  &lt;div&gt;
    &lt;div&gt;
      &lt;br /&gt;
    &lt;/div&gt;
    &lt;div&gt;[Employee[name=Bob, age=25, salary=60000.0, company=Company B], Employee[name=Alice, age=30, salary=70000.0, company=Company A], Employee[name=Charlie, age=35, salary=50000.0, company=Company C]]&lt;/div&gt;
    &lt;div&gt;
      &lt;br /&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;br /&gt;
    &lt;/div&gt;
    &lt;div&gt;Y con reversed de mayor a menor por salario:&lt;/div&gt;
    &lt;pre&gt;			&lt;code&gt;
      // Sort
    sortedEmployees = employees.stream()
        .sorted(Comparator.comparingDouble(Employee::salary).reversed())
        .collect(Collectors.toList());
    System.out.println(sortedEmployees);
  &lt;/code&gt;
		&lt;/pre&gt;
    &lt;div&gt;
      &lt;br /&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;b&gt;Output:&lt;/b&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;br /&gt;
    &lt;/div&gt;
    &lt;div&gt;[Employee[name=Alice, age=30, salary=70000.0, company=Company A], Employee[name=Bob, age=25, salary=60000.0, company=Company B], Employee[name=Charlie, age=35, salary=50000.0, company=Company C]]&lt;/div&gt;
    &lt;div&gt;
      &lt;br /&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;br /&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;h3&gt;limit&lt;/h3&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;br /&gt;
    &lt;/div&gt;
    &lt;div&gt;Con limit nos quedamos con los n primeros elementos del stream:&lt;/div&gt;

				&lt;br /&gt;

    &lt;pre&gt;			&lt;code&gt;
 	// limit
    List&amp;lt;Employee&amp;gt; limitedEmployees = employees.stream()
        .limit(2)
        .collect(Collectors.toList());
    System.out.println(skipEmployees);
				
    &lt;/code&gt;
    &lt;/pre&gt;
    &lt;div&gt;
      &lt;b&gt;Output:&lt;/b&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;b&gt;
        &lt;br /&gt;
      &lt;/b&gt;
    &lt;/div&gt;
    &lt;div&gt;[Employee[name=Alice, age=30, salary=70000.0, company=Company A], Employee[name=Bob, age=25, salary=60000.0, company=Company B]]&lt;/div&gt;
    &lt;div&gt;
      &lt;br /&gt;
    &lt;/div&gt;
    &lt;h3 style=&quot;text-align: left;&quot;&gt;skip&lt;/h3&gt;
    &lt;div&gt;Con skip ignoramos los n últimos elementos del stream:&lt;/div&gt;
    &lt;div&gt;
      &lt;br /&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;pre&gt;				&lt;code&gt;      // skip
    List&amp;lt;Employee&amp;gt; skipEmployees = employees.stream()
        .skip(1)
        .collect(Collectors.toList());
    System.out.println(skipEmployees);&lt;/code&gt;
			&lt;/pre&gt;
     
					&lt;div style=&quot;font-family: Times; white-space: normal;&quot;&gt;
						&lt;b&gt;
							&lt;br /&gt;
						&lt;/b&gt;
					&lt;/div&gt;
					&lt;p style=&quot;font-family: Times; text-align: left; white-space: normal;&quot;&gt;
						&lt;b&gt;Output:
							&lt;br /&gt;
						&lt;/b&gt;[Employee[name=Bob, age=25, salary=60000.0, company=Company B], Employee[name=Charlie, age=35, salary=50000.0, company=Company C]]
					&lt;/p&gt;
    &lt;/div&gt;
    &lt;h3 style=&quot;text-align: left;&quot;&gt;
      &lt;br /&gt;
    &lt;/h3&gt;
    &lt;h2 style=&quot;text-align: left;&quot;&gt;Operaciones finales 📕 &lt;br /&gt;
      &lt;br /&gt;
    &lt;/h2&gt;
    &lt;div&gt;Para realizar la operación final de nuestro stream original, ya sea devolver algún resultado o ejecutar una acción sobre los elementos del stream resultante.&lt;/div&gt;
    &lt;div&gt;
      &lt;br /&gt;
    &lt;/div&gt;
    &lt;h3&gt;foreach&lt;/h3&gt;
    &lt;div&gt;Es una operación final, lo que hace es realizar una acción sobre cada elemento del Stream. Para ello recibe un Consumer.&lt;/div&gt;
    &lt;div&gt;
      &lt;br /&gt;
    &lt;/div&gt;
    &lt;pre&gt;			&lt;code&gt;  void forEach(Consumer&amp;lt;? super T&amp;gt; action)&lt;/code&gt;
		
			
    &lt;/pre&gt;
	
    &lt;pre&gt;    &lt;code&gt;    
    	List&amp;lt;Employee&amp;gt; employees = List.of(
        new Employee(&quot;Alice&quot;, 30, 70000, &quot;Company A&quot;),
        new Employee(&quot;Bob&quot;, 25, 60000, &quot;Company B&quot;),
        new Employee(&quot;Charlie&quot;, 35, 50000, &quot;Company C&quot;)
    );

    employees.stream()
        .map((s) -&amp;gt; s.name().toUpperCase())
        .forEach(System.out::println);&lt;/code&gt;
		&lt;/pre&gt;
    &lt;div&gt;
      &lt;br /&gt;
    &lt;/div&gt;
    &lt;div&gt;En este caso lo que hacemos es pintar por salida el nombre de los empleados en mayúscula:&lt;/div&gt;
    &lt;div&gt;
      &lt;br /&gt;
    &lt;/div&gt;
    &lt;p style=&quot;text-align: left;&quot;&gt;
      &lt;b&gt;Output: &lt;br /&gt;
      &lt;/b&gt;[ALICE, BOB, CHARLIE]
    &lt;/p&gt;
    &lt;div style=&quot;text-align: left;&quot;&gt;
      &lt;br /&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;br /&gt;
    &lt;/div&gt;
    &lt;h3 style=&quot;text-align: left;&quot;&gt;count&lt;/h3&gt;
    &lt;div&gt;Con count podemos devolver el número de elementos después de realizar nuestras transformaciones. En el ejemplo devolvermos por ejemplo los empleados mayores de edad.&lt;/div&gt;
    &lt;div&gt;
      &lt;br /&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;pre&gt;				&lt;code&gt;        // count
    long adulltsCount = employees.stream()
        .map(Employee::age)
        .filter(a -&amp;gt; a &amp;gt; 18)
        .count();
    System.out.println(adulltsCount);&lt;/code&gt;
			&lt;/pre&gt;
      &lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
      &lt;p&gt;
        &lt;span style=&quot;font-family: times;&quot;&gt;
          &lt;b&gt;Output:&lt;/b&gt;
          &lt;br /&gt;3 &lt;/span&gt;
        &lt;br /&gt;
        &lt;br /&gt;
      &lt;/p&gt;
      &lt;h3 style=&quot;text-align: left;&quot;&gt;allMatch&lt;/h3&gt;Nos dice si todos los elementos del stream cumplen un predicado que se pasa como parámetro. Por ejemplo, ¿todos los empleados cobran más de 60000?
    &lt;/div&gt;
    &lt;div&gt;
      &lt;br /&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;br /&gt;
      &lt;pre&gt;				&lt;code&gt;
      // allMatch
    boolean allMatch = employees.stream()
        .allMatch(e -&amp;gt; e.salary()&amp;gt; 60000);
    System.out.println(&quot;Are all the employees rich : &quot; + allMatch);
  &lt;/code&gt;
			&lt;/pre&gt;
      &lt;div&gt;
        &lt;span style=&quot;font-family: monospace; white-space: pre;&quot;&gt;
          &lt;br /&gt;
        &lt;/span&gt;
      &lt;/div&gt;
      &lt;p&gt;
        &lt;b&gt;Output:&lt;/b&gt;
      &lt;/p&gt;
      &lt;p&gt;
        &lt;br /&gt;Are all the employees rich : false &lt;br /&gt;
      &lt;/p&gt;
      &lt;h3 style=&quot;text-align: left;&quot;&gt;noneMatch&lt;/h3&gt;Nos dice si ningún elemento del stream cumplen un predicado que se pasa como parámetro. Por ejemplo, ¿ningún empleado es mayor a 65 años?
    &lt;/div&gt;
    &lt;pre&gt;			&lt;code&gt;
      // noneMatch
    boolean noneMatch = employees.stream()
        .noneMatch(e -&amp;gt; e.age() &amp;gt; 65);
    System.out.println(&quot;Are all the employees below 65 : &quot; + noneMatch);
  &lt;/code&gt;
		&lt;/pre&gt;
    &lt;div&gt;
      &lt;p&gt;
        &lt;b&gt;Output:&lt;/b&gt;
      &lt;/p&gt;
      &lt;p&gt;
        &lt;br /&gt;Are all the employees below 65 : true
      &lt;/p&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;br /&gt;
    &lt;/div&gt;
    &lt;div&gt;
      &lt;h3 style=&quot;text-align: left;&quot;&gt;min&lt;/h3&gt;
      &lt;br /&gt;Nos devuelve el minimo elemento del stream en base a un criterio de comparación. En este caso le pesamos el criterio de edad, por lo que devolveré el empleado con menor edad.
      &lt;pre&gt;	  &lt;code&gt;
    // Min
    Optional&amp;lt;Employee&amp;gt; minAgeEmpOpt = employees.stream()
        .min(Comparator.comparing(Employee::age));
    Employee minAgeEmp = minAgeEmpOpt.get();
    System.out.println(&quot;Employee with minimum age is : &quot; + minAgeEmp);
  	&lt;/code&gt;
	&lt;/pre&gt;
     
									&lt;div style=&quot;text-align: left;&quot;&gt;
										
																			&lt;span style=&quot;font-family: Times;&quot;&gt;
																				&lt;span style=&quot;white-space: normal;&quot;&gt;
																					&lt;code&gt;&lt;/code&gt;
																				&lt;/span&gt;
																			&lt;/span&gt;
																		
												&lt;div&gt;
												
																					&lt;div style=&quot;font-family: Times; text-align: left; white-space: normal;&quot;&gt;
																						&lt;b&gt;Output:&lt;/b&gt;
																					&lt;/div&gt;
																					&lt;div style=&quot;font-family: Times; text-align: left; white-space: normal;&quot;&gt;
																						&lt;b&gt;
																							&lt;br /&gt;
																						&lt;/b&gt;
																					&lt;/div&gt;
																					&lt;div style=&quot;text-align: left;&quot;&gt;
																						&lt;span style=&quot;font-family: Times;&quot;&gt;
																							&lt;span style=&quot;white-space: normal;&quot;&gt;Employee with minimum age is : Employee[name=Bob, age=25, salary=60000.0, company=Company B, skills=[JavaScript, React, Node.js]]&lt;/span&gt;
																						&lt;/span&gt;
																					&lt;/div&gt;
																					&lt;div style=&quot;font-family: Times; text-align: left; white-space: normal;&quot;&gt;
																						&lt;br /&gt;
																					&lt;/div&gt;
																					&lt;h3 style=&quot;font-family: Times; text-align: left; white-space: normal;&quot;&gt;max&lt;/h3&gt;
																			
													&lt;span style=&quot;font-family: times;&quot;&gt;Nos devuelve el máximo elemento del stream en base a un criterio de comparación. En este caso le pesamos el criterio de edad, por lo que devolveré el empleado con mayor edad.&lt;/span&gt;
													&lt;pre&gt;														&lt;code&gt;
      // Max
    Optional&amp;lt;Employee&amp;gt; maxAgeEmpOpt = employees.stream()
        .max(Comparator.comparing(Employee::age));
    Employee maxAgeEmp = maxAgeEmpOpt.get();
    System.out.println(&quot;Employee with maximum age is : &quot; + maxAgeEmp);
  &lt;/code&gt;												
  &lt;/pre&gt;
      &lt;b style=&quot;font-family: Times; white-space: normal;&quot;&gt;Output:&lt;/b&gt;
      &lt;div style=&quot;font-family: Times; white-space: normal;&quot;&gt;
        &lt;b&gt;
          &lt;br /&gt;
        &lt;/b&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;span style=&quot;font-family: Times;&quot;&gt;
          &lt;span style=&quot;white-space: normal;&quot;&gt;Employee with maximum age is : Employee[name=Charlie, age=35, salary=50000.0, company=Company C, skills=[Java, Spring, SQL]]&lt;/span&gt;
        &lt;/span&gt;
      &lt;/div&gt;
      &lt;div style=&quot;font-family: Times; white-space: normal;&quot;&gt;
        &lt;br /&gt;
      &lt;/div&gt;
      &lt;div style=&quot;text-align: left;&quot;&gt;
        &lt;div style=&quot;line-height: 18px;&quot;&gt;
          &lt;div style=&quot;line-height: 18px;&quot;&gt;
            &lt;br /&gt;
           
                            &lt;h3 style=&quot;font-family: Times; white-space: normal;&quot;&gt;Collectors&lt;/h3&gt;
                        
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div&gt;
  
																		&lt;div style=&quot;font-family: Times; white-space: normal;&quot;&gt;Y por último tenemos los maravillosos Collectors. 💣&lt;/div&gt;
																		&lt;div style=&quot;font-family: Times; white-space: normal;&quot;&gt;
																			&lt;br /&gt;
																		&lt;/div&gt;
																		&lt;div&gt;
																			&lt;div style=&quot;font-family: Times; white-space: normal;&quot;&gt;Son estructuras modificables que reciben todos los elementos de un Stream y construyen un resultado como por ejemplo un Set, Map o un List.&lt;/div&gt;
																			&lt;div style=&quot;font-family: Times; white-space: normal;&quot;&gt;
																				&lt;br /&gt;
																			&lt;/div&gt;
																			&lt;div style=&quot;font-family: Times; white-space: normal;&quot;&gt;Existen muchos Collectors que podemos utilizar. Incluso, podemos crear nuestros propios Collectors.&lt;/div&gt;
																			&lt;div style=&quot;font-family: Times; white-space: normal;&quot;&gt;
																				&lt;br /&gt;
																			&lt;/div&gt;
																			&lt;div style=&quot;font-family: Times; white-space: normal;&quot;&gt;Algunos son los siguientes:&lt;/div&gt;
																			&lt;div style=&quot;font-family: Times; white-space: normal;&quot;&gt;
																				&lt;ul style=&quot;text-align: left;&quot;&gt;
																					&lt;li&gt;Collectors.groupingBy()&lt;/li&gt;
																					&lt;li&gt;Collectors.averagingInt()&lt;/li&gt;
																					&lt;li&gt;Collector.toList()&lt;/li&gt;
																					&lt;li&gt;Collectors.toSet()&lt;/li&gt;
																					&lt;li&gt;Collectors.toMap()&lt;/li&gt;
																				&lt;/ul&gt;
																			&lt;/div&gt;
																			&lt;div&gt;
																				&lt;span style=&quot;font-family: Times;&quot;&gt;
																					&lt;span style=&quot;white-space: normal;&quot;&gt;Los Collectors están compuestos por tres parámetros tipo Collector&amp;lt;T, A, R&amp;gt;. El primero representa el tipo de los elementos del Stream, el segundo representa el tipo que realiza la acumulación y el tercero representa el tipo de retorno.&lt;/span&gt;
																				&lt;/span&gt;
																			&lt;/div&gt;
																			&lt;div&gt;
																				&lt;span style=&quot;font-family: Times;&quot;&gt;
																					&lt;span style=&quot;white-space: normal;&quot;&gt;
																						&lt;br /&gt;
																					&lt;/span&gt;
																				&lt;/span&gt;
																			&lt;/div&gt;
																			&lt;div&gt;
																				&lt;span style=&quot;font-family: Times;&quot;&gt;
																					&lt;span style=&quot;white-space: normal;&quot;&gt;El movimiento se demuestra andando. 🏃&lt;/span&gt;
																				&lt;/span&gt;
																			&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Times;&quot;&gt;&lt;span style=&quot;white-space: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
																		&lt;/div&gt;
																	
											&lt;div style=&quot;font-family: Times; text-align: left; white-space: normal;&quot;&gt;&lt;span style=&quot;font-weight: 400;&quot;&gt;En el primer ejemplo devolvemos los nombres de los empleados en un List:&lt;/span&gt;&lt;/div&gt;
											&lt;div&gt;
                                              &lt;pre&gt;												&lt;code&gt;    
    // Collectors

    List&amp;lt;String&amp;gt; collectorList =
        employees.stream()
            .map(Employee::name)
            .collect(Collectors.toList());
    System.out.println(collectorList);
&lt;/code&gt;
&lt;/pre&gt;
												&lt;div&gt;
												
																					&lt;p style=&quot;text-align: left;&quot;&gt;
																						&lt;b&gt;
																							&lt;br /&gt;
																						&lt;/b&gt;
																					&lt;/p&gt;
																					&lt;p style=&quot;text-align: left;&quot;&gt;
																						&lt;b&gt;
																							&lt;br /&gt;
																						&lt;/b&gt;
																					&lt;/p&gt;
																					&lt;p style=&quot;text-align: left;&quot;&gt;
																						&lt;b&gt;
																							&lt;br /&gt;
																						&lt;/b&gt;
																					&lt;/p&gt;
																				
														&lt;b&gt;Output:&lt;/b&gt;
												
    
														&lt;b&gt;
															&lt;br /&gt;
														&lt;/b&gt;[Alice, Bob, Charlie]
			
   
														&lt;br /&gt;
												
   
														&lt;br /&gt;
														&lt;span style=&quot;font-family: times;&quot;&gt;En este otro ejemplo obtenemos un Map con el nombre de la compañia junto con la lista de empleados que la compone:&lt;/span&gt;
														
																					&lt;p style=&quot;text-align: left;&quot;&gt;
																						&lt;span style=&quot;font-family: Times;&quot;&gt;
																							&lt;span style=&quot;white-space: normal;&quot;&gt;
																								&lt;br /&gt;
																							&lt;/span&gt;
																						&lt;/span&gt;
																					&lt;/p&gt;
																					&lt;div style=&quot;text-align: left;&quot;&gt;   
                                                                                      
   &lt;pre&gt;   &lt;code&gt;
    List&amp;lt;Employee&amp;gt; allEmployees = List.of(
        new Employee(&quot;Alice&quot;, 30, 70000, &quot;Company A&quot;, List.of(&quot;Java&quot;, &quot;Spring&quot;, &quot;SQL&quot;)),
        new Employee(&quot;Bob&quot;, 25, 60000, &quot;Company B&quot;, List.of(&quot;JavaScript&quot;, &quot;React&quot;, &quot;Node.js&quot;)),
        new Employee(&quot;Charlie&quot;, 35, 50000, &quot;Company C&quot;, List.of(&quot;Java&quot;, &quot;Spring&quot;, &quot;SQL&quot;)),
        new Employee(&quot;David&quot;, 28, 55000, &quot;Company A&quot;, List.of(&quot;Java&quot;, &quot;Spring&quot;, &quot;SQL&quot;))
    );

    // Group employees by company
    Map&amp;lt;String, List&amp;lt;Employee&amp;gt;&amp;gt; employeesByCompany = allEmployees.stream()
        .collect(Collectors.groupingBy(Employee::company));

    System.out.println(employeesByCompany);
                                                                                      &lt;/code&gt;
                                                  &lt;/pre&gt;
                                                  
                                                  &lt;/div&gt;
																					&lt;div&gt;
																						&lt;br /&gt;
																					&lt;/div&gt;
																					&lt;div style=&quot;text-align: left;&quot;&gt;
																						
																														&lt;p style=&quot;font-family: Times; text-align: left; white-space: normal;&quot;&gt;
																															&lt;b&gt;Output:
																																&lt;br /&gt;
																															&lt;/b&gt;
																															&lt;span style=&quot;font-family: Times;&quot;&gt;
																																&lt;span style=&quot;white-space: normal;&quot;&gt;{Company A=[Employee[name=Alice, age=30, salary=70000.0, company=Company A, skills=[Java, Spring, SQL]], Employee[name=David, age=28, salary=55000.0, company=Company A, skills=[Java, Spring, SQL]]], Company B=[Employee[name=Bob, age=25, salary=60000.0, company=Company B, skills=[JavaScript, React, Node.js]]], Company C=[Employee[name=Charlie, age=35, salary=50000.0, company=Company C, skills=[Java, Spring, SQL]]]}&lt;/span&gt;
																															&lt;/span&gt;
																														&lt;/p&gt;
																												
  &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 style=&quot;font-family: Times; text-align: left; white-space: normal;&quot;&gt;¿Y si juntamos todo?&lt;/h2&gt;
&lt;div style=&quot;font-family: Times; text-align: left; white-space: normal;&quot;&gt;Vamos a mostrar un ejemplo con varias operaciones intermedias usando peek y reduce, además de mostrar el paralelismo que es una de las ventajas de usar streams en nuestro código.&lt;/div&gt;
&lt;div style=&quot;font-family: Times; text-align: left; white-space: normal;&quot;&gt;
  &lt;br /&gt;El peek lo utilizo para hacer debug y revisar qué esta pasando en nuestras expresiones, aunque normalmente es una operación que no suele subir a entornos productivos. 👀👮.
&lt;/div&gt;
&lt;div style=&quot;font-family: Times; white-space: normal;&quot;&gt;
  &lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: Times; white-space: normal;&quot;&gt;El reduce es muy potente 🚀 y a partir del stream inicial, un elemento inicial y un bioperador ( operación que toma dos parámetros), genera un valor del mismo valor que el tipo del stream.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: Times; white-space: normal;&quot;&gt;
  &lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: Times; white-space: normal;&quot;&gt;En este ejemplo calculamos la suma de salarios 💰de los empleados, primero&amp;nbsp; obteniendo el stream de la forma habitual y a continuación obteniendo el stream para procesamiento paralelo. En este caso el stream es tan pequeño que no se notará la diferencia de rendimiento pero si lo hará en streams de mucho mayor tamaño.&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;

            &lt;div style=&quot;font-family: Times; white-space: normal;&quot;&gt;
              &lt;pre&gt;																	&lt;code&gt;    // peek, reduce y parallel
   
          
	Double salary = employees.stream()
        .peek(System.out::println)
        .map(Employee::salary)
        .reduce(0.0, Double::sum);
    System.out.println(&quot;Sum of all salaries: &quot; + salary);

    Double salaryParallel = employees.stream().parallel()
        .peek(System.out::println)
        .map(Employee::salary)
        .reduce(0.0, Double::sum);
    System.out.println(&quot;Sum of all salaries parallel way: &quot; + salaryParallel);
																	&lt;/code&gt;
																&lt;/pre&gt;

																		&lt;br /&gt;
																		&lt;br /&gt;
														
            &lt;/div&gt;
      
&lt;/div&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;
  &lt;br /&gt;
&lt;/p&gt;
&lt;span style=&quot;font-family: times;&quot;&gt;
  &lt;b&gt;Output:&lt;/b&gt;
&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;span style=&quot;font-family: times;&quot;&gt;
    &lt;b&gt;
      &lt;br /&gt;
    &lt;/b&gt;Employee[name=Alice, age=30, salary=70000.0, company=Company A, skills=[Java, Spring, SQL]] &lt;br /&gt;Employee[name=Bob, age=25, salary=60000.0, company=Company B, skills=[JavaScript, React, Node.js]] &lt;br /&gt;Employee[name=Charlie, age=35, salary=50000.0, company=Company C, skills=[Java, Spring, SQL]] &lt;br /&gt;Sum of all salaries: 180000.0 &lt;br /&gt;Employee[name=Bob, age=25, salary=60000.0, company=Company B, skills=[JavaScript, React, Node.js]] &lt;br /&gt;Employee[name=Charlie, age=35, salary=50000.0, company=Company C, skills=[Java, Spring, SQL]] &lt;br /&gt;Employee[name=Alice, age=30, salary=70000.0, company=Company A, skills=[Java, Spring, SQL]] &lt;br /&gt;Sum of all salaries parallel way: 180000.0 &lt;/span&gt;
  &lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
  &lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;En el siguiente artículo vemos como migrar código tradicional a streams y algunos hacks muy útiles. 💪&lt;/div&gt;
&lt;div&gt;
  &lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Fuentes: &lt;a href=&quot;https://jignect.tech/java-streams-unleashing-the-power-of-functional-data-processing/&quot;&gt;jignect&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;pre&gt;	&lt;br /&gt;
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/4300098428254395516/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2025/02/streams-en-java.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/4300098428254395516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/4300098428254395516'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2025/02/streams-en-java.html' title='Streams en Java'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEipa_2Scx8Kf1DliXBRCXKjs02peuULgXh6m0ObQIBw0WP7rMd9oe7XSl3sYzgcvw5zhfw5Pk2dLr8LCdAx2SexXq8xrJVTFd8sEjK1u_m2BPrpclaz601V5BOmjwBpkqtJHUYzME9w0MVJVXj_tUBIRBFV9qS03AJO--zvxJK0GDCFyKGtUwuxTP-Hhy8=s72-w640-h274-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-4454231268201189394</id><published>2024-08-28T20:18:00.002+02:00</published><updated>2024-08-28T20:18:54.678+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Dinero"/><category scheme="http://www.blogger.com/atom/ns#" term="Encuesta"/><category scheme="http://www.blogger.com/atom/ns#" term="Internet"/><category scheme="http://www.blogger.com/atom/ns#" term="Reward"/><title type='text'>Ganar dinero por internet</title><content type='html'>&lt;p style=&quot;text-align: justify;&quot;&gt;Quién no ha deseado alguna vez tener la suficiente independencia económica como para no tener que levantarse por la mañana cada día mientras que tu cuenta bancaria crece cada días más...&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Pues con algunas aplicaciones que circulan por Internet vas a conseguir... seguir levantándome igual... pero con algún eurillo de más. Si bien no te dará por viajar por el mundo o comprarte el último modelo híbrido para algún capricho sin pretensiones si te podría dar,&amp;nbsp; como regalarle a tu cuñado algo del Temu... 😁.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Mucho 👀, os paso alguna lista de las aplicaciones para móvil que he probado últimamente y en las que si eres constante se puede ganar algún eurillo.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;WeWard&lt;/h2&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;De la lista no sé si es la que más dinero ganas diariamente&amp;nbsp; pero si la que podrías obtener mayores premios. Básicamente se vende como una app que te paga por tus pasos, pero los mayores premios se obtienen realizando encuestas en diferentes plataformas (CPX, TheoremReach, BitLabs, InBrain y TapResearch) y jugando a videojuegos (Ayet Studios, Play to Earn, Revu...).&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Te lee de alguna app instalada en tu móvil de contador de pasos como Salud, MyFit... y recibes wards diarios dependiendo del número de pasos. También consigues wards con juegos y encuestas, tirando a la ruleta (te deja varias veces al día) y comprando en tiendas conocidas como Amazon, Booking, Miravia...&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Otro punto divertido es que puedes coleccionar cartas de diferentes ciudades y cuando completas una te suman 50 wards a tu cuenta. Estos cromos normalmente los puedes recoger en un maps integrado en la propia aplicación.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjMVZ5Mca6Eyn7stpdnxHmR75EoAWP_PVUC_0RUUvqiuxD1UPPmFLdVu8eIkK4r1uZ7tlcHzzyBruZ6KMfaEH-eR1VcFxwdAMXxTanyDm6RAQJ1T3Z8TAohp3T8YUg8J6AGI5aDpWgQRlHi0P3QzZhdnx0QMAh6CBo7Pr3nfJIP37qobdS76RStZhfcNdw&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;924&quot; data-original-width=&quot;1214&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjMVZ5Mca6Eyn7stpdnxHmR75EoAWP_PVUC_0RUUvqiuxD1UPPmFLdVu8eIkK4r1uZ7tlcHzzyBruZ6KMfaEH-eR1VcFxwdAMXxTanyDm6RAQJ1T3Z8TAohp3T8YUg8J6AGI5aDpWgQRlHi0P3QzZhdnx0QMAh6CBo7Pr3nfJIP37qobdS76RStZhfcNdw&quot; width=&quot;315&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Mi código de patrocinio es JPAS-mWHYr, si lo sigues te darán 50W al crear la cuenta y 100W más al introducir el código&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;El mínimo para extraer dinero a paypal es de 20 euros, o lo que es lo mismo 4000 wards.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;b&gt;Fuente:&amp;nbsp;https://www.wewardapp.com/es&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Muestras a casa&lt;/h2&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Es mi segunda aplicación preferida aunque últimamente ha subido exigencias respecto a tiempos pasados. Básicamente una vez que te registras tienes que cumplimentar una serie de tareas diarias que no te llevarán más de 5 minutos como contestar encuestas sencillas, contestar una pregunta, hacer click sobre algun link....&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Además si eres constante por hacerlo en varios días te multiplica los puntos (rachas).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;El mínimo de puntos que debes acumular para pasar dinero a Paypal son 5000 (10 euros), antes era de 1500 (5 euros).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Tip: para conseguir los puntos del cofre tienes que pinchar las subcategorias que te aparecen y en una de ellas está el iconito del cofre, cuesta verlo al principio.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgHKbi_g_f2X05r5x-k0SUHo5_ZLS-A2WX8AGyGKRA25rmWl0pG5nh7x6J5ZF47L33hnCQ3pOsgQB5POoQITPEhPIklj6PMUuscn_6G-rdQHj3mrq4RKAnxY5RzdRmh4Pnso7PZ-I-xle6w7gdIQiOPWC7mcj9sBDgJiYCEni6-z1cPErJBVMdKzOuuOAE&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;272&quot; data-original-width=&quot;304&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgHKbi_g_f2X05r5x-k0SUHo5_ZLS-A2WX8AGyGKRA25rmWl0pG5nh7x6J5ZF47L33hnCQ3pOsgQB5POoQITPEhPIklj6PMUuscn_6G-rdQHj3mrq4RKAnxY5RzdRmh4Pnso7PZ-I-xle6w7gdIQiOPWC7mcj9sBDgJiYCEni6-z1cPErJBVMdKzOuuOAE&quot; width=&quot;268&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Fuente:&amp;nbsp;https://rewards.muestrasacasa.com/login&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;SmartmeApp&lt;/h2&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Esta app te da puntos por tenerla simplemente activa en el móvil y entrar diariamente. También puedes realizar campañas que te sumarán más puntos y llegarás al objetivo minimo para extraer dinero.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;El mínimo son 100000 puntos que se traducen en 10 euros, es la que requieres menos esfuerzo, casi sumas sin enterarte.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjdYMv8pPZCQKXUyhuiAtaiIudev9ROz8K78bpBlLfIRFZ5L55D5dZj5Ff5JCfn3___x9R4PoPr1yev3ai2KzGvpiKyCnAAi-ycpiiPRobrGMpYv01FZm_Tx8YWeqJ1hiQkZnl8yORXncz-19b2FR7HdGWOv6HMkvazWNgdG9yCSJsri32XvRQimbp3PKY&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;472&quot; data-original-width=&quot;448&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjdYMv8pPZCQKXUyhuiAtaiIudev9ROz8K78bpBlLfIRFZ5L55D5dZj5Ff5JCfn3___x9R4PoPr1yev3ai2KzGvpiKyCnAAi-ycpiiPRobrGMpYv01FZm_Tx8YWeqJ1hiQkZnl8yORXncz-19b2FR7HdGWOv6HMkvazWNgdG9yCSJsri32XvRQimbp3PKY&quot; width=&quot;228&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Fuente:http://www.smartmeapp.com/&lt;/b&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;ZapSurveys&lt;/h2&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Otra aplicación más de realizar encuestas en plataformas (InBrain y TapResearch), aunque personalmente me parece que funciona bastante mal. Solo sumas por las encuestas que realices, pues no tiene otro tipo de tareas diarias. Además muchas veces estas haciendo una encuesta varios minutos y se pierde sesión sin obtener ninguna recompensa.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Últimamente además muchas de las encuestas requieren registro en otras plataformas. Si no mejora no la recomendaría.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;El mínimo para extraer dinero es 10 euros y no es fácil conseguirlo.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh5eNk1NwG3DIGCIBfMDb31oWptz7T_MGIsRUDWPaWd5gez3m_yAXwAmgBz2Tu9NwYS-C0D80efljs_y2zNwJ2WquTSzMMAtjpGcn7TAbuJr2j9v8J9v1mvZnwh5it1HWdB5u888ubcizch2d6MCvl8RH-qlNjb3EBQO_xiBWnO66FAkCJOLypaaVsbZII&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;936&quot; data-original-width=&quot;730&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh5eNk1NwG3DIGCIBfMDb31oWptz7T_MGIsRUDWPaWd5gez3m_yAXwAmgBz2Tu9NwYS-C0D80efljs_y2zNwJ2WquTSzMMAtjpGcn7TAbuJr2j9v8J9v1mvZnwh5it1HWdB5u888ubcizch2d6MCvl8RH-qlNjb3EBQO_xiBWnO66FAkCJOLypaaVsbZII&quot; width=&quot;187&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Mi enlace de referido es:&amp;nbsp;&lt;a data-saferedirecturl=&quot;https://www.google.com/url?q=https://bdr3.app.link/fwchkif4qMb&amp;amp;source=gmail&amp;amp;ust=1724954632688000&amp;amp;usg=AOvVaw2I9-H0rDYPaBXpQaEvDLSY&quot; href=&quot;https://bdr3.app.link/fwchkif4qMb&quot; style=&quot;background-color: white; color: #1155cc; font-family: Arial, Helvetica, sans-serif; font-size: small; text-align: left;&quot; target=&quot;_blank&quot;&gt;https://bdr3.app.link/&lt;wbr&gt;&lt;/wbr&gt;fwchkif4qMb&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Fuente:&amp;nbsp;https://www.zapsurveys.com/&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;AttaPoll&lt;/h2&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Esta app es muy parecida a la anterior, te dan dinero por realizar encuestas, aunque los criterios para extraer dinero a paypal son menos restrictivos, siendo de tan solo 3 euritos.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgbB0MahrkYeGycsHeZLsFa_HrsNnXAaTe6TtY9EOaErRK-o9tOgz4OMYuJvvlyayWs_XHZojIfBKOxJBAVv_87GpWXzrw2gHwovLXS0xTzHf_1DSPPalrP8xo8Augz-6gp31_gKUk22USbLWTy3eCrIDc7epHaFn2MCdRadC4SyUAjur1Z1MCG6i4hl_g&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;254&quot; data-original-width=&quot;768&quot; height=&quot;106&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgbB0MahrkYeGycsHeZLsFa_HrsNnXAaTe6TtY9EOaErRK-o9tOgz4OMYuJvvlyayWs_XHZojIfBKOxJBAVv_87GpWXzrw2gHwovLXS0xTzHf_1DSPPalrP8xo8Augz-6gp31_gKUk22USbLWTy3eCrIDc7epHaFn2MCdRadC4SyUAjur1Z1MCG6i4hl_g&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;Te la recomiendo para comenzar e introducirte en el mundillo de las encuestas por Internet.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Mi código es UPDMV.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Fuente:&amp;nbsp;https://attapoll.com/es/&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Espero que os animéis a probar alguna y si utilizais alguna otra me encantaría que me escribierais en comentarios para probarla.&lt;/p&gt;&lt;p&gt;Saludos y buena suerte a todos 🍀🍀🍀.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/4454231268201189394/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2024/08/ganar-dinero-por-internet.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/4454231268201189394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/4454231268201189394'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2024/08/ganar-dinero-por-internet.html' title='Ganar dinero por internet'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjMVZ5Mca6Eyn7stpdnxHmR75EoAWP_PVUC_0RUUvqiuxD1UPPmFLdVu8eIkK4r1uZ7tlcHzzyBruZ6KMfaEH-eR1VcFxwdAMXxTanyDm6RAQJ1T3Z8TAohp3T8YUg8J6AGI5aDpWgQRlHi0P3QzZhdnx0QMAh6CBo7Pr3nfJIP37qobdS76RStZhfcNdw=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-5109945788604310678</id><published>2019-12-06T12:11:00.001+01:00</published><updated>2019-12-06T21:17:16.987+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Juegos"/><category scheme="http://www.blogger.com/atom/ns#" term="Stump me"/><title type='text'>SOLUCIONES STUMP ME</title><content type='html'>Hola amigos,&lt;br /&gt;
&lt;br /&gt;
a continuación os voy poniendo las soluciones de este divertido juego que está entre los más populares en plataformas móviles:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjk0wlSj9XzKGpord3F9zHklyBb5yZkZwZrIr5Rqr-RO0t31CoBl5IcTtXvhOK5VORdc9dTl0bYlur6CQbYUQ_OBepLZHQZ1wG2-PZ6PoylaIiRh7ry7qTC0IcsOqoBQ65zdgVXu5QlyVE/s1600/450_1000.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;286&quot; data-original-width=&quot;450&quot; height=&quot;253&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjk0wlSj9XzKGpord3F9zHklyBb5yZkZwZrIr5Rqr-RO0t31CoBl5IcTtXvhOK5VORdc9dTl0bYlur6CQbYUQ_OBepLZHQZ1wG2-PZ6PoylaIiRh7ry7qTC0IcsOqoBQ65zdgVXu5QlyVE/s400/450_1000.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nivel 1. Escoger la fruta amarilla.&lt;br /&gt;
&lt;br /&gt;
Nivel 2. Apartar el microondas, la taza, la mesa... hasta que quede libre el mando a distancia.&lt;br /&gt;
&lt;br /&gt;
Nivel 3. La opción D.Blanco (que está en amarillo para liar).&lt;br /&gt;
&lt;br /&gt;
Nivel 4. Eliminar el agua de las botellas haciendo drag hasta que no queda agua en ninguna de ellas.&lt;br /&gt;
&lt;br /&gt;
Nivel 5. Arrastrar los objetos todos los objetos, incluyendo la frase de la pregunta!!!&lt;br /&gt;
&lt;br /&gt;
Nivel 6. Hacer que los peces mas grandes se coman a los más pequeños.&lt;br /&gt;
&lt;br /&gt;
Nivel 7.Sacudir el móvil hasta abrir el tapón de las botellas. Una de ellas tiene espuma roja.&lt;br /&gt;
&lt;br /&gt;
Nivel 9. Quitar el pelo de la chica. Ponemos a cero el contador y pulsamos OK.&lt;br /&gt;
&lt;br /&gt;
Nivel 10. Romper el ticket con el movimiento de dedos de hace zoom.&lt;br /&gt;
&lt;br /&gt;
Nivel 11. 0 caramelos, no hay ninguna mesa!!!&lt;br /&gt;
&lt;br /&gt;
Nivel 12. 1 , si 1 = 10 , 10 será igual a 1.&lt;br /&gt;
&lt;br /&gt;
Nivel 13. Es la palabra fruta de la frase de la pregunta.&lt;br /&gt;
&lt;br /&gt;
Nivel 14. Pasar el dedo al coche como si lo estuvieras limpiando realmente...&lt;br /&gt;
&lt;br /&gt;
Nivel 15. Pasar el dedo al termometro hasta que suba a 37 grados.&lt;br /&gt;
&lt;br /&gt;
Nivel 16. Arrastrar el sol hasta que aparezca la luna y se haga de noche.&lt;br /&gt;
&lt;br /&gt;
Nivel 17. Hay 8 agujeros. El cuello, las 2 mangas, la parte de abajo y dos por cada agujero que ves (por la parte de adelante y atrás).&lt;br /&gt;
&lt;br /&gt;
Nivel 18. Hacemos primero el elefante pequeño con el movimiento de dedos de zoom. Después lo arrastramos a la nevera.&lt;br /&gt;
&lt;br /&gt;
Nivel 19. Hay que agitar el movil.&lt;br /&gt;
&lt;br /&gt;
Nivel 20. Pulsar la bombilla de arriba donde se consiguen las pistas.&lt;br /&gt;
&lt;br /&gt;
Nivel 21. Poner la hora del reloj de tu movil y pulsar OK.&lt;br /&gt;
&lt;br /&gt;
Nivel 22. Pulsar varias veces la cerradura, como si estuvieras tocando la puerta para que te abran.&lt;br /&gt;
&lt;br /&gt;
Nivel 23. Mezclar el roja y el amarillo. Falta el naranja !!&lt;br /&gt;
&lt;br /&gt;
Nivel 24. Poner un dedo en un extremo del cable y otro dedo en el otro para conducir la electricidad.&lt;br /&gt;
&lt;br /&gt;
Nivel 25. Agita el móvil hasta que todas las botellas estén vacías.&lt;br /&gt;
&lt;br /&gt;
Nivel 26. Aparta la mochila y mira el número chaval.&lt;br /&gt;
&lt;br /&gt;
Nivel 27. Arrastrar la palabra hueso hasta la boca del perro.&lt;br /&gt;
&lt;br /&gt;
Nivel 28. Arrastrar la palabra próximo hasta el botón vacío y después pulsarlo.&lt;br /&gt;
&lt;br /&gt;
Nivel 29. Aunque te parezca cruel, taponale la nariz hasta que no pueda respirar... y se despierta!!!&lt;br /&gt;
&lt;br /&gt;
Nivel 30. Arrastra el círculo con los tres patos abajo a la izquierda de la pantalla y aparecerá lo que buscas.&lt;br /&gt;
&lt;br /&gt;
Nivel 31. Hacer click 1o veces. Abajo pondrá solo 9 porque un click no aumenta el contador. Luego pulsar el boton Pasar.&lt;br /&gt;
&lt;br /&gt;
Nivel 32. Haz el símbolo del zoom en la hormiga para hacerla muuy muuy grande.&lt;br /&gt;
&lt;br /&gt;
Nivel 33. Pulsa el 33 del NIVEL 33 de arriba de la pantalla.&lt;br /&gt;
&lt;br /&gt;
Nivel 34. Junta el vestido con el sol.&lt;br /&gt;
&lt;br /&gt;
Nivel 35. Haz el símbolo del zoom con la caja.&lt;br /&gt;
&lt;br /&gt;
Nivel 36. Pon el trapecio a un lado de la pantalla hasta que sea visible solo la parte rectangular del trapecio.&lt;br /&gt;
&lt;br /&gt;
Nivel 37. El plato.&lt;br /&gt;
&lt;br /&gt;
Nivel 38. Frota con el dedo la madera hasta producir fuego.&lt;br /&gt;
&lt;br /&gt;
Nivel 39. Agita el móvil hasta que caiga el limon.&lt;br /&gt;
&lt;br /&gt;
Nivel 40. El punto de la frase.&lt;br /&gt;
&lt;br /&gt;
Nivel 41. Arrastra el puntero del ratón al Play de la tele para volver la reproducción activa.&lt;br /&gt;
&lt;br /&gt;
Nivel 42. Pulsa sobre el soporte del papel metálico de arriba del panel para que se caiga.&lt;br /&gt;
&lt;br /&gt;
Nivel 43. Pon el teléfono al revés. Es el 87.&lt;br /&gt;
&lt;br /&gt;
Nivel 44. Hacia la izquierda.&lt;br /&gt;
&lt;br /&gt;
Nivel 45. Dale click a tarea.&lt;br /&gt;
&lt;br /&gt;
Nivel 46. Junta todos los fuegos y luego quema al mostruo.&lt;br /&gt;
&lt;br /&gt;
Nivel 47. Arrastra el botón verde hacia la derecha y luego a la izquierda.&lt;br /&gt;
&lt;br /&gt;
Nivel 48. Arrastra la palabra manzana al plato de la derecha.&lt;br /&gt;
&lt;br /&gt;
Nivel 49. Rompe la hucha y sumalas.&lt;br /&gt;
&lt;br /&gt;
Nivel 50. 80021, por la imagen reflejada.&lt;br /&gt;
&lt;br /&gt;
Nivel 51. Pon el dedo en la pantalla para que se distraiga chupando la sangre y luego aplástalo con otro dedo.&lt;br /&gt;
&lt;br /&gt;
Nivel 52. 1225. Mes y año de la Navidad, como las fechas anglosajonas.&lt;br /&gt;
&lt;br /&gt;
Nivel 53. El mosquito porque lo hemos matado en el 51!!&lt;br /&gt;
&lt;br /&gt;
Nivel 54. Arrastramos un cuadrado al segundo término de la suma. Dos espacios en blanco hacen otro espacio en blanco. Como sumar 0 mas 0.&lt;br /&gt;
&lt;br /&gt;
Nivel 55. Golpea la carretera para torcerla y rodará solo...&lt;br /&gt;
&lt;br /&gt;
Nivel 56. Pulsa sobre el 6 de la frase Convierte 5 barras de caramelo en 6 y se intercambiarán.&lt;br /&gt;
&lt;br /&gt;
Nivel 57. Todo son lineas rectas, es un efecto óptico. Hay 0.&lt;br /&gt;
&lt;br /&gt;
Nivel 58. Pulsa sobre la palabra fruta + fruta rosa + sandia + platano + fruta amarilla.&lt;br /&gt;
&lt;br /&gt;
Nivel 59. Pulsa sobre la palabra volcán.&lt;br /&gt;
&lt;br /&gt;
Nivel 60. Agita el móvil. Todos se rompen y sale un pollito.&lt;br /&gt;
&lt;br /&gt;
Nivel 61. La respuesta es 6. El 9 al reves es 6.&lt;br /&gt;
&lt;br /&gt;
Nivel 62. Saca todos los animales de la balanza.&lt;br /&gt;
&lt;br /&gt;
Nivel 63. Es la interrogación amarilla.&lt;br /&gt;
&lt;br /&gt;
Nivel 64. Cuando aparece la manzana haz click sobre la palabra eso.&lt;br /&gt;
&lt;br /&gt;
Nivel 65. Pon el teléfono al revés y saca la carta arrastrando con el dedo.&lt;br /&gt;
&lt;br /&gt;
Nivel 66. Arrastra el ascensor hacia abajo con el dedo.&lt;br /&gt;
&lt;br /&gt;
Nivel 67. Haz click muchas veces y muy rápido para romper el record.&lt;br /&gt;
&lt;br /&gt;
Nivel 68. 2019. Fijate en los vacios, es como el libro del Danone de hace mil años.&lt;br /&gt;
&lt;br /&gt;
Nivel 69. Arrastra los globos al boton Saltar. el que no se rompe es el más fuerte.&lt;br /&gt;
&lt;br /&gt;
Nivel 70. Mueve el solo hasta que se convierta en Luna.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/5109945788604310678/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2019/12/soluciones-stump-me.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/5109945788604310678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/5109945788604310678'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2019/12/soluciones-stump-me.html' title='SOLUCIONES STUMP ME'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjk0wlSj9XzKGpord3F9zHklyBb5yZkZwZrIr5Rqr-RO0t31CoBl5IcTtXvhOK5VORdc9dTl0bYlur6CQbYUQ_OBepLZHQZ1wG2-PZ6PoylaIiRh7ry7qTC0IcsOqoBQ65zdgVXu5QlyVE/s72-c/450_1000.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-7287526193794865967</id><published>2018-01-24T10:27:00.002+01:00</published><updated>2018-01-24T10:27:42.339+01:00</updated><title type='text'>HOSTING 123SYSTEMS</title><content type='html'>Hace más de año tenía muchas ganas de probar Wordpress como gestor de contenidos. Qué mejor manera de hacerlo que migrar mi propio blog a este CMS. Me puse manos a la obra y busqué un hosting que soportaba wordpress a un precio económico, avalado por algunos comentarios de foros.&lt;br /&gt;
&lt;br /&gt;
El hosting en cuestión se llama &lt;a href=&quot;http://123systems.net/&quot; rel=&quot;nofollow&quot;&gt;123systems&lt;/a&gt;&amp;nbsp;y creo que... fue una de las peores ideas de mis últimos años. Migré desde blogger con una herramienta automática aunque tuve que dedicar bastante tiempo en formatear todo para que la apariencia fuera un poco mejor que espantosa.&lt;br /&gt;
&lt;br /&gt;
Al fin lo conseguí e hice algunas optimizaciones para los buscadores. Todo bien los primeros meses hasta que llegaron los cortes. Un día entraba y no funcionaba nada. A veces una vez al mes, otras bastantes veces y sin avisar. Lo peor estaba por llegar. Cuando caduca la suscripción del hosting pagué un año más y ahora mismo lo tengo activo pero no puedo entrar a mi cPanel, ni por supuesto tengo acceso a Wordpress ni recuperar los posts desde 2015. Los tickets abiertos de incidencias no me los responden ni tampoco tienen idea de devolver el dinero por la mala gestión.&lt;br /&gt;
&lt;br /&gt;
Concluyendo, a veces lo barato sale caro, aún por el precio, que son 5$ al año, no os recomiendo para nada este hosting. La próxima vez probaré con un servicio de hosting profesional...&lt;br /&gt;
&lt;br /&gt;
Saludos.</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/7287526193794865967/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2018/01/hosting-123systems.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/7287526193794865967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/7287526193794865967'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2018/01/hosting-123systems.html' title='HOSTING 123SYSTEMS'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-4954837064282020149</id><published>2015-10-18T11:04:00.001+02:00</published><updated>2015-10-18T11:04:23.523+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Física"/><category scheme="http://www.blogger.com/atom/ns#" term="Luz"/><category scheme="http://www.blogger.com/atom/ns#" term="Videos"/><title type='text'>QUE ES LA LUZ</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe width=&quot;320&quot; height=&quot;266&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/IXxZRZxafEQ/0.jpg&quot; src=&quot;https://www.youtube.com/embed/IXxZRZxafEQ?feature=player_embedded&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/4954837064282020149/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2015/10/que-es-la-luz.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/4954837064282020149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/4954837064282020149'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2015/10/que-es-la-luz.html' title='QUE ES LA LUZ'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/IXxZRZxafEQ/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-301392971801127066</id><published>2015-10-16T10:59:00.004+02:00</published><updated>2015-10-16T21:28:38.708+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bootstrap"/><category scheme="http://www.blogger.com/atom/ns#" term="Ejemplos"/><category scheme="http://www.blogger.com/atom/ns#" term="Frameworks"/><title type='text'>BOOTSTRAP FOR DUMMIES</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://getbootstrap.com/&quot;&gt;Bootstrap&lt;/a&gt;&amp;nbsp;es un framework que puedes utilizar en las páginas de tu aplicación web para que sean responsive, es decir, para que se adapten automáticamente al tamaño de la pantalla en la que se visualizan (tablets, móviles, pantallas de TV...).&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Incorpora una series de plantillas CSS y archivos Javascript, además de integrarse perfectamente con librerías como jquery. Además cada día se amplia más la comunidad y se pueden obtener fácilmente &lt;a href=&quot;http://startbootstrap.com/template-categories/all/&quot;&gt;plantillas&lt;/a&gt;&amp;nbsp;basadas en Bootstrap tanto gratuitas como de pago para no empezar tu web desde 0. La versión actual es la 3 y próximamente está previsto el lanzamiento de la 4.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Por ejemplo dispondremos de clases CSS para las contenedores (divs) con las que podremos indicar si nuestra Web ocupará todo el espacio disponible en la pantalla o por el contrario solo una parte de la misma:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Contenedor ocupando un espacio acotado en pantalla&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script class=&quot;brush: xml&quot; type=&quot;syntaxhighlighter&quot;&gt;&lt;![CDATA[
&lt;div class=&quot;container&quot;&gt;
&lt;/div&gt;
]]&gt;&lt;/script&gt;

&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Contenedor ocupando todo el espacio de pantalla&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:xml&quot;&gt;&amp;lt;div class=&quot;container-fluid&quot;&amp;gt;
&amp;lt;/div&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Contenedor mixto&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Otro ejemplo sería un contenedor que ocupa toda la pantalla con una imagen de fondo que contendría a otro contenedor con el contenido de nuestra página.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:html&quot;&gt;&amp;lt;div class=&quot;container-fluid&quot;&amp;gt;
&amp;nbsp; &amp;lt;div class=&quot;container&quot;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Las resoluciones de pantalla que se definen en Bootstrap son 4:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Pantallas grandes (lg). A partir de 1200 pixels. Ordenadores&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Pantallas medias (md). A partir de 992 pixels. Ordenadores&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Pantallas pequeñas (sm). A partir de 768 pixeles. Tablets&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Pantallas muy pequeñas (xs). Por debajo de 768 pixels. Móviles&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Para la disposición de los diferentes elementos de nuestras páginas lo más importante que tenemos que conocer es el modelo de rejillas de Bootstrap. Este framework considera que cada fila de la pantalla contiene 12 columnas (que ocuparan un número determinado de pixels dependiendo en el tipo de pantalla en la que nos encontremos).&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Para entender mejor la forma de dividir la pantalla con Bootstrap, imaginemos que tenemos 4 bloques de contenidos y que queremos mostrarlos de la siguiente forma:&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;En pantallas grandes queremos 4 bloques por cada fila. Como tenemos 4 bloques y 12 columnas, cada bloque debe ocupar 3 columnas. Para ello utilizamos la clase CSS col-lg-3.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;En pantallas medias queremos 3 bloque por cada fila. Como tenemos 3 bloques por cada fila y 12 columnas, cada bloque debe ocupar 4 columnas. La clase que utilizaremos será col-md-4.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;En pantallas pequeñas queremos 2 bloques por cada fila. Como tenemos 2 bloques por cada fila y 12 columnas, cada columna debe ocupar 6 columnas. La clase que se usa será col-sm-6.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;En pantallas muy pequeñas queremos un bloque en cada fila. Como tenemos solamente un bloque, cada bloque debe ocupar 12 columnas para ocupar toda la fila. La clase que se usa será col-xs-12.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;El código HTML con el que tenemos en cuenta los 4 casos será el siguiente:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:xml&quot;&gt;&amp;lt;div class=&quot;row borde&quot;&amp;gt; 
   &amp;lt;div class=&quot;col-lg-3 col-md-4 col-sm-6 col-xs-12&quot;&amp;gt;
     &amp;lt;canvas height=&quot;200px&quot; width=&quot;200px&quot; id=&quot;micanvas1&quot;&amp;gt;
   &amp;lt;/div&amp;gt; 
    &amp;lt;div class=&quot;col-lg-3 col-md-4 col-sm-6 col-xs-12&quot;&amp;gt;
      &amp;lt;canvas height=&quot;200px&quot; width=&quot;200px&quot; id=&quot;micanvas2&quot;&amp;gt;
    &amp;lt;/div&amp;gt; 
    &amp;lt;div class=&quot;col-lg-3 col-md-4 col-sm-6 col-xs-12&quot;&amp;gt;
      &amp;lt;canvas height=&quot;200px&quot; width=&quot;200px&quot; id=&quot;micanvas3&quot;&amp;gt;
    &amp;lt;/div&amp;gt; 
    &amp;lt;div class=&quot;col-lg-3 col-md-4 col-sm-6 col-xs-12&quot;&amp;gt;
      &amp;lt;canvas height=&quot;200px&quot; width=&quot;200px&quot; id=&quot;micanvas4&quot;&amp;gt;
    &amp;lt;/div&amp;gt; 
&amp;lt;/div&amp;gt;

&lt;/pre&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;La pantalla se verá de la siguiente forma según la resolución del dispositivo en la que la visualizamos:&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuAk6qozHuvZH0qp9CUOYgaahDf9trwJHZUD8ca0luUoJ9GUrAP5WxTyJGHrj9zkbzID_mcQ72aIYfDOT9Q3geEjEZLiP8hFJUu_Npqo-f5Jmkngrtlx7qmxCPow-eGrtFaKSCOfBN0W0/s1600/bloque1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;54&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuAk6qozHuvZH0qp9CUOYgaahDf9trwJHZUD8ca0luUoJ9GUrAP5WxTyJGHrj9zkbzID_mcQ72aIYfDOT9Q3geEjEZLiP8hFJUu_Npqo-f5Jmkngrtlx7qmxCPow-eGrtFaKSCOfBN0W0/s320/bloque1.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixxBuJPLrSDsECK33UlJ0ujL6QGR2vkE_yqHUCXRUoKT1MGqkLDad3voIAJ0oYuxMWPuGbyOiXTA3_czUZ10NTMc1zbL_rNSjUi1o78kEXt-_tfMIT2Mah-nRl8tXBim2kENBC5ge6abs/s1600/bloque2.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;128&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixxBuJPLrSDsECK33UlJ0ujL6QGR2vkE_yqHUCXRUoKT1MGqkLDad3voIAJ0oYuxMWPuGbyOiXTA3_czUZ10NTMc1zbL_rNSjUi1o78kEXt-_tfMIT2Mah-nRl8tXBim2kENBC5ge6abs/s320/bloque2.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp5NN58Ot90CSQrG-WL3ErXHUWwNLY9547xkqvRX7HbVL9Dsord-1cPTGJB5Qr-SXURFtwKJqz2XcFJZrQieOwkE1ks6-rMTzk8vc4NEHFNA-GTK44hukQ5tX8pvBr-PkRiza-KsxlMVY/s1600/bloque3.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;178&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp5NN58Ot90CSQrG-WL3ErXHUWwNLY9547xkqvRX7HbVL9Dsord-1cPTGJB5Qr-SXURFtwKJqz2XcFJZrQieOwkE1ks6-rMTzk8vc4NEHFNA-GTK44hukQ5tX8pvBr-PkRiza-KsxlMVY/s320/bloque3.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMqO2XBhEEpruLwWOrSuEv77gvKD2_KNcgtGMGY10g1AZlHo53db6LM1UiVR2N8XqkXveWZEHRjiW5nZgcpOw0S5LkxAXF18dbJNed-018EWwNiTVVOB4bdKjDBvo7TJLT1GDDpRW5uLk/s1600/bloque4.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMqO2XBhEEpruLwWOrSuEv77gvKD2_KNcgtGMGY10g1AZlHo53db6LM1UiVR2N8XqkXveWZEHRjiW5nZgcpOw0S5LkxAXF18dbJNed-018EWwNiTVVOB4bdKjDBvo7TJLT1GDDpRW5uLk/s320/bloque4.PNG&quot; width=&quot;58&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Además de facilitar la disposición de contenidos, Bootstrap contiene botones, menus, diálogos modales muy útiles para el desarrollo de nuestras aplicaciones. La &lt;a href=&quot;http://getbootstrap.com/&quot;&gt;web &lt;/a&gt;oficial está muy bien documentada y los ejemplos son muy claros. Otros frameworks para realizar páginas web responsive son Foundation o Skeleton. Si pulsas &lt;a href=&quot;http://designinstruct.com/roundups/html5-frameworks/&quot;&gt;aquí&lt;/a&gt; podrás echar un ojo a frameworks similares para poder comparar tú mismo.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;El código del ejemplo es el siguiente:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:xml&quot;&gt; 
&amp;lt;!DOCTYPE html&amp;gt; 
&amp;lt;html lang=&quot;en&quot;&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;utf-8&quot;&amp;gt;
    &amp;lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=edge&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&amp;gt;
    &amp;lt;!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --&amp;gt; 
    &amp;lt;title&amp;gt;Bootstrap 101 Template&amp;lt;/title&amp;gt;
    &amp;lt;!-- Bootstrap --&amp;gt; 
    &amp;lt;link href=&quot;css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&amp;gt;
    &amp;lt;!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --&amp;gt; &amp;lt;!-- WARNING: Respond.js doesn&#39;t work if you view the page via file:// --&amp;gt; &amp;lt;!--[if lt IE 9]&amp;gt; &amp;lt;script src=&quot;https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;script src=&quot;https://oss.maxcdn.com/respond/1.4.2/respond.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;![endif]--&amp;gt; 
    &amp;lt;style type=&quot;text/css&quot;&amp;gt; .borde {border: black 1px solid; } &amp;lt;/style&amp;gt;
    &amp;lt;script&amp;gt; function pintarCuadrados() { var i = 1; var canvas; var ctx; for (i = 1; i &amp;lt;=4; i ) { canvas = document.getElementById(&quot;micanvas&quot; i); ctx = canvas.getContext(&quot;2d&quot;); ctx.fillRect(10,10,200,200); ctx.fillStyle=&quot;#f00&quot;; } } &amp;lt;/script&amp;gt; 
  &amp;lt;/head&amp;gt;
  &amp;lt;body onload=&quot;pintarCuadrados()&quot;&amp;gt;
    &amp;lt;!-- jQuery (necessary for Bootstrap&#39;s JavaScript plugins) --&amp;gt; &amp;lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;!-- Include all compiled plugins (below), or include individual files as needed --&amp;gt; &amp;lt;script src=&quot;js/bootstrap.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;br/&amp;gt; 
    &amp;lt;div class=&quot;container&quot;&amp;gt;
      &amp;lt;div class=&quot;row borde&quot;&amp;gt;
        &amp;lt;div class=&quot;col-lg-3 col-md-4 col-sm-6 col-xs-12&quot;&amp;gt;
          &amp;lt;canvas height=&quot;200px&quot; width=&quot;200px&quot; id=&quot;micanvas1&quot;&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div class=&quot;col-lg-3 col-md-4 col-sm-6 col-xs-12&quot;&amp;gt;
          &amp;lt;canvas height=&quot;200px&quot; width=&quot;200px&quot; id=&quot;micanvas2&quot;&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div class=&quot;col-lg-3 col-md-4 col-sm-6 col-xs-12&quot;&amp;gt;
          &amp;lt;canvas height=&quot;200px&quot; width=&quot;200px&quot; id=&quot;micanvas3&quot;&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div class=&quot;col-lg-3 col-md-4 col-sm-6 col-xs-12&quot;&amp;gt;
          &amp;lt;canvas height=&quot;200px&quot; width=&quot;200px&quot; id=&quot;micanvas4&quot;&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Fuente&lt;/b&gt;: &lt;a href=&quot;http://proyectosbds.com/blog/bootstrap-capitulo-2-comprender-el-modelo-de-rejilla-de-bootstrap/&quot;&gt;proyectobds&lt;/a&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/301392971801127066/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2015/10/bootstrap-for-dummies.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/301392971801127066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/301392971801127066'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2015/10/bootstrap-for-dummies.html' title='BOOTSTRAP FOR DUMMIES'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuAk6qozHuvZH0qp9CUOYgaahDf9trwJHZUD8ca0luUoJ9GUrAP5WxTyJGHrj9zkbzID_mcQ72aIYfDOT9Q3geEjEZLiP8hFJUu_Npqo-f5Jmkngrtlx7qmxCPow-eGrtFaKSCOfBN0W0/s72-c/bloque1.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-52221460097532702</id><published>2015-06-05T11:33:00.000+02:00</published><updated>2015-10-16T14:57:18.121+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ejemplos"/><category scheme="http://www.blogger.com/atom/ns#" term="Genericidad"/><category scheme="http://www.blogger.com/atom/ns#" term="Jackson"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="JSON"/><category scheme="http://www.blogger.com/atom/ns#" term="Reflection"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutoriales"/><title type='text'>EJEMPLO REFLECTION EN JAVA</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Hoy vamos a realizar un ejemplo completo con el API Reflection de Java. Con este API podemos por ejemplo obtener el nombre y el valor de los atributos de cualquier clase, crear una instancia de ella utilizando cualquiera de sus constructores o ejecutar sus métodos.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;El objetivo del artículo es crear un clase genérica que a partir de una lista genérica de items sea capaz de generar código JSON cuyo nombre sea el resultado de la ejecución de un método concreto y como parámetros sean los nombres y valores de de sus atributos.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Por tanto en el ejemplo aglutinamos varios conceptos que seguramente nos encontraremos a lo largo de nuestra trayectoria profesional como programadores:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://docs.oracle.com/javase/tutorial/reflect/&quot;&gt;API Reflection&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Genericidad&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;JSON, muy utilizado para el intercambio de información entre aplicaciones. La implementación que se utiliza para realizar el mapping es la librería jackson.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Creamos una clase parametrizada por una clase. Dicha clase recibirá una lista de items de una clase determinada G. Definimos como constantes varios prefijos que seran los que utilizamos para dar nombre a cada nodo JSON para genera el código asociado:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp;item, se utiliza a nivel global para cada elemento de la clase G de la lista de items (item1, item2, itemN)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;name, representa el nombre de cada item. En este ejemplo se extraerá de llamar al método llamado getItemNameValue. Si la clase G no implementa este método, se devolverá la cadena vacia.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;data, representa los parámetros del item. Dichos parámetros se extraen de los atributos de la clase G que tengan un método get publico asociado.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;name, value, representan el nombre y el valor de cada atributo de la clase.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: java&quot;&gt;public class JsonGenerator&amp;lt;G&amp;gt; {

    private static final String METHOD_ITEM_NAME = &quot;getItemNameValue&quot;;
    private static final String PREFFIX_DATA = &quot;data&quot;;
    private static final String PREFFIX_ITEM = &quot;item&quot;;
    private static final String PREFFIX_NAME = &quot;name&quot;;
    private static final String PREFFIX_VALUE = &quot;value&quot;;
    private static final String GET = &quot;get&quot;;

    /**
     * Lista de items que se parsea para obtener la salida JSON
     */
    private List items;&lt;/pre&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;A continuación creamos un método que obtiene el valor del método getItemNamevalue. Es un método que obtiene una instancia de la clase java.lang.reflect.Method para invocar un determinado método de una clase genérica G. El método se obtiene con la operación getDeclaredMethod de la clase Class pasando como parámetro el nombre del método. Utilizando el método invoke de la clase &lt;a href=&quot;http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Method.html&quot;&gt;Method&lt;/a&gt; ya tenemos el valor de cada item.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;NOTA: Notad que se utiliza la nueva notación de &lt;a href=&quot;https://www.java.com/es/download/help/index_installing.xml?j=7&quot;&gt;Java 7&lt;/a&gt; &amp;nbsp;para la definición de excepcion con los separadores barra.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: java&quot;&gt;private String getItemNameValue(Class cls) {
        // Buscando el método
        Method method = null;
        // no paramater  
        Class noparams[] = {};
        try {
            Object obj = cls.newInstance();
            method = cls.getDeclaredMethod(METHOD_ITEM_NAME, noparams);
            String res = (String) method.invoke(obj, new Object[0]);
            return res;
        } catch (SecurityException | NoSuchMethodException | IllegalArgumentException | IllegalAccessException | InvocationTargetException | InstantiationException e) {
            return StringUtils.EMPTY;
        }
    }&lt;/pre&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Tendremos un método para obtener los campos de la clase G. Este método devuelve un array de la clase del API Reflection&amp;nbsp;&lt;a href=&quot;http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Field.html&quot;&gt;java.lang.reflect.Field&lt;/a&gt;. Esta clase representa un atributo concreto de una clase y nos servirá como punto de partida para acceder al nombre como al valor del mismo. Observad que el método es recursivo, primero obtiene los atributos de la clase y posteriormente se llama a sí mismo para recuperar los atributos definidos en la superclase. Fijaos también que los atributos con el modificador static se evita añadirlos a la lista, sólo se recuperan los atributos sin el modificador static para evitar añadir constantes.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: java&quot;&gt;private Field[] getAllFields(Class klass) {
        List&lt;field&gt; fields = new ArrayList&amp;lt;&amp;gt;();
        fields.addAll(Arrays.asList(klass.getDeclaredFields()));
        if (klass.getSuperclass() != null) {
            fields.addAll(Arrays.asList(getAllFields(klass.getSuperclass())));
        }

        Iterator&lt;field&gt; fAux = fields.iterator();
        while (fAux.hasNext()) {
            Field field = fAux.next();
            if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) {
                fAux.remove();
            }
        }
        return fields.toArray(new Field[]{});
    }
&lt;/field&gt;&lt;/field&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Una vez que tengamos todos los atributos de la instancia de una clase necesitaremos métodos para acceder a su nombre e invocar al método get asociado para obtener su valor. Estos dos métodos se definen a continuación:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: java&quot;&gt;private Object getFieldValue(Object userInstance, Field field) {
        try {
            String methodName = GET + StringUtils.capitalize(field.getName());
            return MethodUtils.invokeExactMethod(userInstance, methodName, new Object[0]);        
        } catch (IllegalArgumentException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) {
            return StringUtils.EMPTY;
        }
    }

private List&amp;lt;String&amp;gt;&lt;string&gt; getFieldsNames(Field[] fields) {
        List&lt;string&gt; l = new ArrayList&amp;lt;&amp;gt;();
        for (Field field : fields) {
            l.add(field.getName());
        }
        return l;
    }

private List&amp;lt;String&amp;gt;&lt;string&gt; getFieldsValues(Field[] fields, Object obj) {
        List&lt;string&gt; l = new ArrayList&amp;lt;&amp;gt;();
        for (Field field : fields) {
            Object value = getFieldValue(obj, field);
            l.add((value == null) ? StringUtils.EMPTY : value.toString());
        }
        return l;
    }
&lt;/string&gt;&lt;/string&gt;&lt;/string&gt;&lt;/string&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Una vez que tenemos toda la información de la clase G únicamente nos queda generar el código JSON. Para ello vamos a utilizar la clase&amp;nbsp;&lt;a href=&quot;http://jackson.codehaus.org/1.3.0/javadoc/org/codehaus/jackson/node/ObjectNode.html&quot;&gt;org.codehaus.jackson.node.ObjectNode&lt;/a&gt;, que representa un elemento JSON y la clase&amp;nbsp;org.codehaus.jackson.node.JsonNodeFactory que se encargará de ir creando cada nodo JSON. Finalmente con la clase&amp;nbsp;&lt;a href=&quot;http://jackson.codehaus.org/1.3.0/javadoc/org/codehaus/jackson/map/ObjectMapper.html&quot;&gt;org.codehaus.jackson.map.ObjectMapper&lt;/a&gt; generaremos una cadena a partir de un nodo JSON raíz que representa el código JSON de la clase.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: java&quot;&gt; private void addSimpleObject(ObjectNode node, String name, String value) {
        node.put(name, value);
    }

private void addComplexObject(ObjectNode node, String name, ObjectNode value) {
        node.put(name, value);
    }

private void addListObject(ObjectNode node, List&lt;string&gt; names, List&lt;string&gt; values) {

        for (int i = 0; i &amp;lt; names.size(); i++) {
            String name = names.get(i);
            String value = values.get(i);
            ObjectNode atributos = factory.objectNode();
            atributos.put(preffixName, name);
            atributos.put(preffixValue, (value == null) ? StringUtils.EMPTY : value);
            node.put(preffixData + (i + 1), atributos);
        }

    }
&lt;/string&gt;&lt;/string&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Y el método pegamento que utiliza todo lo anterior para generar el código JSON:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: java&quot;&gt;public String generateJson() throws JsonGenerationException, JsonMappingException, IOException {
        if (CollectionUtils.isEmpty(items)) {
            return StringUtils.EMPTY;
        }
        for (int i = 0; i &amp;lt; items.size(); i++) {
            G item = items.get(i);
            ObjectNode elementoItem = factory.objectNode();

            String itemNameValue = getItemNameValue(item.getClass());
            addSimpleObject(elementoItem, preffixName, itemNameValue);

            List&amp;lt;String&amp;gt;&lt;string&gt; names = getFieldsNames(getAllFields(item.getClass()));
            List&amp;lt;String&amp;gt;&lt;string&gt; values = getFieldsValues(getAllFields(item.getClass()), item);

            addListObject(elementoItem, names, values);
            addComplexObject(root, preffixItem + (i + 1), elementoItem);
        }     
        return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(root);
    }
&lt;/string&gt;&lt;/string&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Para cada uno de los elementos de la lista de tipo G:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Se añade el nodo JSON simple con el nombre del item (instancia de clase G) al nodo JSON que representa al item.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Se añade el nodo JSON complejo para cada uno de los atributos del item (instancia de clase G) al nodo JSON que representa al item.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Se añade el nodo JSON que representa al item al nodo raiz.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Vamos a ejecutar la clase con una lista de 3 items de tres clases diferentes dentro de una jerarquía: Nivel1, Nivel2 y Nivel3. Nivel1 es padre de Nivel2 y Nivel2 es a su vez padre de Nivel. Cada una de ellas encapsula un atributo llamado campo1, campo2 y campo3 respectivamente.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: java&quot;&gt;...
...
     List&amp;lt;nivel1&amp;gt; elementos = new ArrayList&amp;lt;&amp;gt;();

     Nivel1 nivel1 = new Nivel1(&quot;1&quot;);
     Nivel2 nivel2 = new Nivel2(&quot;2&quot;, &quot;3&quot;);
     Nivel3 nivel3 = new Nivel3(&quot;4&quot;,&quot;5&quot;,&quot;6&quot;);
     
     elementos.add(nivel1);
     elementos.add(nivel2);
     elementos.add(nivel3);
     
     JsonGenerator&amp;lt;nivel1&amp;gt; jsonGenerator = new JsonGenerator&amp;lt;&amp;gt;();
     jsonGenerator.setItems(elementos);
  
     System.out.println(jsonGenerator.generateJson());
...
...
&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;La salida para este caso concreto sería:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &quot;item1&quot; : {&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &quot;name&quot; : &quot;&quot;,&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &quot;data1&quot; : {&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;name&quot; : &quot;campo1&quot;,&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;value&quot; : &quot;1&quot;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; }&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; },&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &quot;item2&quot; : {&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &quot;name&quot; : &quot;&quot;,&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &quot;data1&quot; : {&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;name&quot; : &quot;campo1&quot;,&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;value&quot; : &quot;2&quot;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; },&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &quot;data2&quot; : {&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;name&quot; : &quot;campo2&quot;,&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;value&quot; : &quot;3&quot;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; }&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; },&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &quot;item3&quot; : {&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &quot;name&quot; : &quot;&quot;,&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &quot;data1&quot; : {&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;name&quot; : &quot;campo1&quot;,&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;value&quot; : &quot;4&quot;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; },&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &quot;data2&quot; : {&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;name&quot; : &quot;campo2&quot;,&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;value&quot; : &quot;5&quot;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; },&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &quot;data3&quot; : {&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;name&quot; : &quot;campo3&quot;,&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;value&quot; : &quot;6&quot;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; }&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&amp;nbsp; }&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;El código del proyecto en Netbeans lo podéis descargar de aquí.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Saludos.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/52221460097532702/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2015/06/ejemplo-reflection-en-java.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/52221460097532702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/52221460097532702'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2015/06/ejemplo-reflection-en-java.html' title='EJEMPLO REFLECTION EN JAVA'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-3417900235092542842</id><published>2015-02-07T09:57:00.000+01:00</published><updated>2015-02-07T09:57:00.060+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Frases"/><title type='text'>EL CAMINO FACIL</title><content type='html'>&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Dos caminos se bifurcaban en un bosque y yo,&lt;/span&gt;&amp;nbsp;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Yo tomé el menos transitado,&lt;/span&gt;&amp;nbsp;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;
y eso hizo la diferencia, 

&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;Robert Fross&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Fuente: &lt;a href=&quot;http://www.clubsuperacion.com/tu-realizacion-te-esta-esperando-el-camino-menos-transitado/&quot;&gt;clubsuperacion&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/3417900235092542842/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2015/02/el-camino-facil.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/3417900235092542842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/3417900235092542842'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2015/02/el-camino-facil.html' title='EL CAMINO FACIL'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-7431632183029820169</id><published>2015-02-06T09:53:00.001+01:00</published><updated>2015-02-06T09:53:24.302+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Trucos"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutoriales"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>GUARDAR ICONOS ESCRITORIO</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Hoy os voy a mostrar un truco relacionado con los iconos del escritorio. ¿Eres de los que le gusta tener cientos de iconos en tu escritorio para (des)organizarte? ¿Seguro que no has perdido nunca la configuración que tenías de iconos verdad?&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Las opciones por defecto de Windows son bastante pobres. Nos permiten ordenar los iconos por varios criterios pero no dejan espacio para la personalización. Si por ejemplo pulsamos en el escritorio &lt;b&gt;botón derecho &amp;gt; Ver &amp;gt; Ordenar Iconos Automáticamente&lt;/b&gt; nos lo ordena muy bonito en formato cuadrícula &amp;nbsp;pero, eso no es lo que queremos Windows!!!!!&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnKs3IwVLwQl8fsVQJfaKVSrNt5TIRGJFTCpAlEaupVcz8RYreCYu2Xhp9wynlzwf8SFUAG9VMPmPKguHHzBlWYcMiryee28buadC-6bnSJf4sUTDEoswGI9pJI89xVsrPmA_c7M5FeI0/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnKs3IwVLwQl8fsVQJfaKVSrNt5TIRGJFTCpAlEaupVcz8RYreCYu2Xhp9wynlzwf8SFUAG9VMPmPKguHHzBlWYcMiryee28buadC-6bnSJf4sUTDEoswGI9pJI89xVsrPmA_c7M5FeI0/s1600/1.png&quot; height=&quot;106&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Hay un software que te permite guardar exactamente la configuración de iconos de tu escritorio, es decir, cada icono con su posición exacta en la resolución de escritorio actual. Podrías tener una configuración de iconos para diferentes resoluciones si lo necesitas. El programita en cuestión se llama &lt;a href=&quot;http://www.midiox.com/index.htm?http://www.midiox.com/desktoprestore.htm&quot;&gt;Desktop Restore&lt;/a&gt; y lo puedes descargar &lt;a href=&quot;http://www.midiox.com/zip/DesktopRestoreInstall.exe&quot;&gt;aquí&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Cuando lo instalamos y pulsamos botón derecho sobre el Escritorio nos aparecen 3 nuevas opciones:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaL0WOUR2bqiL-qp8VpuvF8bSD0NJQpD6OPU09YhVpRCB_tlFEpJb9lm4dCKJl4zWZ9T07RtCdb2xw7sW_3rUg0ALGUuGaewdDM_6P_lz3ozfX4IO6_Cxb2fVTvkIOFwg5_sG91u74tuU/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaL0WOUR2bqiL-qp8VpuvF8bSD0NJQpD6OPU09YhVpRCB_tlFEpJb9lm4dCKJl4zWZ9T07RtCdb2xw7sW_3rUg0ALGUuGaewdDM_6P_lz3ozfX4IO6_Cxb2fVTvkIOFwg5_sG91u74tuU/s1600/2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Con &lt;b&gt;SaveDesktop&lt;/b&gt; guardamos la configuración actual de iconos. Si pulsas &lt;b&gt;Custom Save/Restore&lt;/b&gt; puedes guardar la configuración en un archivo y exportarla a otro PC o modificar el nombre de tu configuración.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzATr4iid8bMXR74Diie7fPxhRAE8ybIUd5THPqJnon1dKfa-3STYqmvxxCyBH2vbzJo6JMFxi7txIQy1YFI9LwPtZoP5ZJmWowJvNSIE6rwFj7fSBpj-6FdC3arNO6Xe4GV7_T_RveLU/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzATr4iid8bMXR74Diie7fPxhRAE8ybIUd5THPqJnon1dKfa-3STYqmvxxCyBH2vbzJo6JMFxi7txIQy1YFI9LwPtZoP5ZJmWowJvNSIE6rwFj7fSBpj-6FdC3arNO6Xe4GV7_T_RveLU/s1600/3.png&quot; height=&quot;320&quot; width=&quot;276&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Y eso es todo por hoy.... Pero vendrán más cosicas.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Un saludo.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/7431632183029820169/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2015/02/guardar-iconos-escritorio.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/7431632183029820169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/7431632183029820169'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2015/02/guardar-iconos-escritorio.html' title='GUARDAR ICONOS ESCRITORIO'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnKs3IwVLwQl8fsVQJfaKVSrNt5TIRGJFTCpAlEaupVcz8RYreCYu2Xhp9wynlzwf8SFUAG9VMPmPKguHHzBlWYcMiryee28buadC-6bnSJf4sUTDEoswGI9pJI89xVsrPmA_c7M5FeI0/s72-c/1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-9167222544285053121</id><published>2014-10-05T13:50:00.000+02:00</published><updated>2014-10-05T13:55:26.403+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Aplicaciones"/><category scheme="http://www.blogger.com/atom/ns#" term="Fences"/><category scheme="http://www.blogger.com/atom/ns#" term="Nimi Places"/><title type='text'>ORGANIZA YA TU DESKTOP. FENCES VS NIMI PLACES</title><content type='html'>&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Harto de ver el escritorio de mi PC como una constelación de iconos he estado buscando herramientas para evitar una situación como esta:&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPhu4yY6eqjsLBqcTQBiLarAZg6bu99bRxTGFrCEOqx3azwDv2F2j1Zfppc1h2PH0iytY5lOCcCJGr3lPnUo-RTIMko89kbCOtjnms6Zfenk6wwSzECNrXJAdjQemttxU4kVEZ52YM9Ck/s1600/B72.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPhu4yY6eqjsLBqcTQBiLarAZg6bu99bRxTGFrCEOqx3azwDv2F2j1Zfppc1h2PH0iytY5lOCcCJGr3lPnUo-RTIMko89kbCOtjnms6Zfenk6wwSzECNrXJAdjQemttxU4kVEZ52YM9Ck/s1600/B72.jpg&quot; height=&quot;256&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;Mi posible escritorio&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;He encontrado dos que parece que sobresalen sobre el resto, una gratuita (&lt;a href=&quot;http://mynimi.net/Projects/Nimi-Places/&quot;&gt;Nimi Places&lt;/a&gt;) y otra de pago con un periodo de prueba de 30 días (&lt;a href=&quot;http://www.stardock.com/products/fences/&quot;&gt;Fences&lt;/a&gt;).&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Vamos primero con Nimi Places. Cuando instalas la aplicación te crea varios contenedores que se corresponden con un directorio de nuestro PC.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPL_k_3JXO765yAyHT0kIQacO6Rv6-cTzqudbl6LFGf6DLEmUnUXw1pqo_VcyO3dHIU0LCo59cmnCR53bM-z69_bnruOpbr7pAMFnhi2ZAvMY-iEWmknFi5mnr08IFixBpHRhPuN7JNok/s1600/nimi+places+1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPL_k_3JXO765yAyHT0kIQacO6Rv6-cTzqudbl6LFGf6DLEmUnUXw1pqo_VcyO3dHIU0LCo59cmnCR53bM-z69_bnruOpbr7pAMFnhi2ZAvMY-iEWmknFi5mnr08IFixBpHRhPuN7JNok/s1600/nimi+places+1.PNG&quot; height=&quot;220&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;Escritorio con varios contenedores&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Una cosa que no me gusta nada es que no puedes ocultar los archivos y directorios del escritorio, es decir, aparecen replicados tanto en el contenedor como en el escritorio.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Podemos modificar el aspecto de los contenedores con varios temas disponibles pero otro punto negativo es que es muy complicado para un usuario medio gestionar las reglas para manejar los nuevos archivos que vamos creando, ya que se hace con expresiones regulares.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgein_F_2R68WHSFS66TkB9u3LYngfgRc_Q8m90t3jAj28zlljx7PJAsPcgtvkToi3gdEhYgJ54CYDiJf0wtUOK2xeahrgIRLBKEGnnNedqWzVh4Me3xlE_x03EBZi61k-r-3SXBWguXCY/s1600/nimi+places+3.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgein_F_2R68WHSFS66TkB9u3LYngfgRc_Q8m90t3jAj28zlljx7PJAsPcgtvkToi3gdEhYgJ54CYDiJf0wtUOK2xeahrgIRLBKEGnnNedqWzVh4Me3xlE_x03EBZi61k-r-3SXBWguXCY/s1600/nimi+places+3.PNG&quot; height=&quot;300&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;Gestión de archivos y directorios con Nimi Places&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Personalmente Fences me parece muy superior tanto en diseño y facilidad de uso. Al instalarlo esta es la apariencia que tendremos:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_WjaFTopShwKAihBxcwf0LsvNQ_nNtkkHJi-4IXKaIg2I6UhwRiit5s_lijMN3AY7GilUoBNhHvfa9jGdDnxpUZCOMRPXq4pgVao50qPm5x7n4PJABxOzoDWi8HEufU71re3Gju2hnJY/s1600/fences1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_WjaFTopShwKAihBxcwf0LsvNQ_nNtkkHJi-4IXKaIg2I6UhwRiit5s_lijMN3AY7GilUoBNhHvfa9jGdDnxpUZCOMRPXq4pgVao50qPm5x7n4PJABxOzoDWi8HEufU71re3Gju2hnJY/s1600/fences1.PNG&quot; height=&quot;173&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;Escritorio organizado con Fences&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Podemos cambiar también el diseño de los &#39;Fences&#39; o contenedores pero cada uno de ellos no tiene asociado un directorio del PC. Puedes colocar tú los archivos del escritorio haciendo drag and drop y puede haber archivos o directorios en la misma localización del PC entre varios contenedores. Es justo el comportamiento que yo estaba buscando para organizar el escritorio.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Además la gestión de reglas referentes a los nuevos directorios y archivos creados es mucho más intuitiva:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLLTbrIe6xYjTFwO7Azn8QK6JkbWPbnqd8U0tS4cd6xg3b3H0ARmzs696b1t5QM_C1iTcGkEXcmvpLtafVeVQtSkX-XonpEA-6UvNRqKZKPzkmvp-MRjX434xMWcPhUG739Cs2TVnaHbA/s1600/fences2.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLLTbrIe6xYjTFwO7Azn8QK6JkbWPbnqd8U0tS4cd6xg3b3H0ARmzs696b1t5QM_C1iTcGkEXcmvpLtafVeVQtSkX-XonpEA-6UvNRqKZKPzkmvp-MRjX434xMWcPhUG739Cs2TVnaHbA/s1600/fences2.PNG&quot; height=&quot;320&quot; width=&quot;234&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;Creación de reglas de organización con Fences&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Podemos fácilmente crear reglas simplemente haciendo check sobre los tipos de archivos más comunes o directorios y eligiendo el &#39;Fence&#39; o contenedor de destino. Por ejemplo, podremos hacer que las nuevas&amp;nbsp;imágenes&amp;nbsp;vayan a un contenedor de&amp;nbsp;imágenes, los archivos del&amp;nbsp;paquete&amp;nbsp;Office a otro contenedor... También puedes hacer que todos los archivos vayan a un Fence oculto y tener el escritorio sólo con contenedores de accesos directos...&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Conclusiones&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Utiliza &lt;b&gt;Nimi Places&lt;/b&gt; si quieres tener una gestión de archivos más controlada del PC en general, no sólo del Escritorio, y estas familiarizado con expresiones regulares. La ventaja principal: es gratis.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Fences &lt;/b&gt;es tu programa si eres un usuario medio que quieres una magnífica gestión de tu escritorio de una forma rápida y sencilla. El pequeño problema: &lt;b&gt;la licencia vale 9,99$&lt;/b&gt;.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Tú eliges, ya no tienes excusa para limpiar ese desastre que tienes ahí montado, y lo sabes!!!&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/9167222544285053121/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2014/10/organiza-tu-desktop-ya.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/9167222544285053121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/9167222544285053121'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2014/10/organiza-tu-desktop-ya.html' title='ORGANIZA YA TU DESKTOP. FENCES VS NIMI PLACES'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPhu4yY6eqjsLBqcTQBiLarAZg6bu99bRxTGFrCEOqx3azwDv2F2j1Zfppc1h2PH0iytY5lOCcCJGr3lPnUo-RTIMko89kbCOtjnms6Zfenk6wwSzECNrXJAdjQemttxU4kVEZ52YM9Ck/s72-c/B72.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-3029299235068352864</id><published>2014-03-08T11:37:00.001+01:00</published><updated>2014-03-08T11:37:52.644+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Humor"/><title type='text'>REALIDAD DE UN INFORMATICO EN ESPAÑA</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;LO QUE UN INFORMÁTICO ESPAÑOL CREE CUANDO ACABA LA CARRERA&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwwOpKnDaC0PKWgnMw05InVLgloRPW6VxQgTglG_ABX5wUTUS4MUqdfEgkome9-prVb0RY0tfMFHwcbO6YW7wbp8OlGsUmZNJzoE4NmhRfmqIfs7gM6w6tHVOVCNoAVKUHFwQRZAumKA4/s1600/posthumor.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwwOpKnDaC0PKWgnMw05InVLgloRPW6VxQgTglG_ABX5wUTUS4MUqdfEgkome9-prVb0RY0tfMFHwcbO6YW7wbp8OlGsUmZNJzoE4NmhRfmqIfs7gM6w6tHVOVCNoAVKUHFwQRZAumKA4/s1600/posthumor.jpg&quot; height=&quot;330&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;LA CRUDA REALIDAD...&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuWE4rDV30Zebb0yep0fQ44KQYti0eq5dGv0CW9sZJh90IYFf0O_OJc1be9ABWPGTRA54YdR3Z9JCB6IuBdhxx9YtQsQeCvRkdUujgtHFahQBJUeV42doXrAC2Txvk2Ns0CtYNiMWgFEw/s1600/trabajobasura.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuWE4rDV30Zebb0yep0fQ44KQYti0eq5dGv0CW9sZJh90IYFf0O_OJc1be9ABWPGTRA54YdR3Z9JCB6IuBdhxx9YtQsQeCvRkdUujgtHFahQBJUeV42doXrAC2Txvk2Ns0CtYNiMWgFEw/s1600/trabajobasura.jpg&quot; height=&quot;500&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/3029299235068352864/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2014/03/realidad-de-un-informatico-en-espana.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/3029299235068352864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/3029299235068352864'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2014/03/realidad-de-un-informatico-en-espana.html' title='REALIDAD DE UN INFORMATICO EN ESPAÑA'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwwOpKnDaC0PKWgnMw05InVLgloRPW6VxQgTglG_ABX5wUTUS4MUqdfEgkome9-prVb0RY0tfMFHwcbO6YW7wbp8OlGsUmZNJzoE4NmhRfmqIfs7gM6w6tHVOVCNoAVKUHFwQRZAumKA4/s72-c/posthumor.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-5759206142525207461</id><published>2013-12-19T13:21:00.000+01:00</published><updated>2013-12-19T13:21:07.344+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Concordion"/><category scheme="http://www.blogger.com/atom/ns#" term="Frameworks"/><category scheme="http://www.blogger.com/atom/ns#" term="Pruebas de aceptacion"/><category scheme="http://www.blogger.com/atom/ns#" term="Pruebas funcionales"/><category scheme="http://www.blogger.com/atom/ns#" term="Test"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutoriales"/><title type='text'>¿PRUEBAS DE ACEPTACION? CONCORDION ES TU FRAMEWORK</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Algo indispensable en nuestras aplicaciones es el desarrollo de pruebas para comprobar que nuestro código funciona y además que cumple con los requisitos deseados por los clientes.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuAehrdaSkC140b47j8_UNYjYzyEi-r9KC7FVXBI21ilL150zMBQAwd9lSGK6Ylpj4j1uurzUzzYsTzVMtxHZe-pk5BuYOsHaQ-5SAJGzWYeyHx7vHS2eNeCnmiKpW8fVnq3u_bd7AfKQ/s1600/agil1_2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuAehrdaSkC140b47j8_UNYjYzyEi-r9KC7FVXBI21ilL150zMBQAwd9lSGK6Ylpj4j1uurzUzzYsTzVMtxHZe-pk5BuYOsHaQ-5SAJGzWYeyHx7vHS2eNeCnmiKpW8fVnq3u_bd7AfKQ/s320/agil1_2.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;Fuente: &lt;a href=&quot;http://sg.com.mx/revista/38/marcando-la-pauta-para-las-pruebas-%C3%A1giles&quot;&gt;sg.com.mx&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;En muchos lugares donde he trabajado se realizan las pruebas unitarias y de integración y luego se construye un documento Word o HTML donde se especifican las pruebas que se han realizado de nuestra aplicación, para que el cliente compruebe si se satisfacen o no todas sus necesidades de negocio con el código desarrollado. Pero, ¿y si pudieramos realizar las pruebas a la misma vez que generamos documentación?&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Para esto sirve precisamente el framework &lt;a href=&quot;http://www.concordion.org/&quot;&gt;Concordion&lt;/a&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;color: #0b5394; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Escribimos las pruebas de aceptación de nuestra aplicación mediante un documento XHTML bien formado y describimos el comportamiento de nuestro código.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;color: #0b5394; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Asociado a este documento tendemos una clase Java donde implementaremos el código Java de las pruebas.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Las clases Java de pruebas y los documentos HTML deben estar en el mismo paquete. Como estandar se crea una carpeta llamado specs en nuestro proyecto. Para generar la documentación, ejecutaremos la clase Java como un test de Junit normal y se generarán los documentos XHTML del mismo paquete pero con la partes correspondientes al test iluminadas en verde (si ha ido bien), rojo (si ha ido mal) o amarillo (si se ha producido una excepción). &amp;nbsp;Los documentos se generarán en el directorio indicado por java.io .mpdir que suele ser el directorio por defecto del usuario.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;También existe un plugin de Maven para integrar la ejecución de los test de Concordion con el ciclo de vida de Maven.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Como el movimiento se demuestra andando pongamos un ejemplo para que todo esto se vea más claro.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Primero nos creamos un proyecto simple con Maven y le añadimos la dependencia de Concordion.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border: 1px solid rgb(215, 215, 215); font-family: &#39;Courier New&#39;, Courier, Fixed; font-size: 13px; line-height: 18px; padding: 8px 8px 8px 16px; width: 400px;&quot;&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;&lt;b style=&quot;font-size: 10pt;&quot;&gt;org.concordion&lt;/b&gt;&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;&lt;b style=&quot;font-size: 10pt;&quot;&gt;concordion&lt;/b&gt;&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;&lt;b style=&quot;font-size: 10pt;&quot;&gt;1.4.4&lt;/b&gt;&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;&lt;/pre&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;También podemos crear un proyecto Java normal y descargar la distribución de Concordion &lt;a href=&quot;http://concordion.googlecode.com/files/concordion-1.4.4.zip&quot;&gt;aquí&lt;/a&gt;.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Una vez que lo hemos hecho deberiamos tener un proyecto parecido al siguiente:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxiB5VpVskSV0q64KfJu7dJ001bEEfoAw37qbYQQqX93sI4UjF8OZETZcbJmOQdd0c7p7L1F6umSocHoTGGlmFP9RF72eciiCk6-aLW9BTw09uh491C2qZ6peLb49oQtc3fKXmKsLCZB8/s1600/concordion-project.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxiB5VpVskSV0q64KfJu7dJ001bEEfoAw37qbYQQqX93sI4UjF8OZETZcbJmOQdd0c7p7L1F6umSocHoTGGlmFP9RF72eciiCk6-aLW9BTw09uh491C2qZ6peLb49oQtc3fKXmKsLCZB8/s320/concordion-project.JPG&quot; width=&quot;279&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Nos creamos una clase Calculadora con tres operaciones básicas de suma, resta y producto:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:java&quot;&gt;package es.jpascu.concordion;

public class Calculadora {

 public Calculadora() {
 }

 public static Integer suma(Integer a, Integer b) {
  return a + b;
 }

 public static Integer resta(Integer a, Integer b) {
  return a - b;
 }

 public static Integer producto(Integer a, Integer b) {
  return a * b;
 }
}

&lt;/pre&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Después creamos la clase de test de nuestra clase Calculadora. Podremos acceder a los métodos de esta clase en nuestro XHTML:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;package es.jpascu.concordion;

import org.concordion.integration.junit4.ConcordionRunner;
import org.junit.runner.RunWith;

@RunWith(ConcordionRunner.class)
public class CalculadoraFixture {

 public Integer testSuma(Integer a, Integer b) {
  Integer c = Calculadora.suma(a, b);
  return c;
 }

 public Integer testResta(Integer a, Integer b) {
  Integer c = Calculadora.resta(a, b);
  return c;
 }

 public Integer testProducto(Integer a, Integer b) {
  int c = Calculadora.producto(a, b);
  return c;
 }
}&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Por último escribimos nuestros test funcionales en nuestro XHTML:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;&quot;&gt;

&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;background: silver; color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US; mso-highlight: silver;&quot;&gt;html&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;
&lt;span style=&quot;color: #7f007f;&quot;&gt;xmlns:concordion&lt;/span&gt;=&lt;i&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;http://www.concordion.org/2007/concordion&quot;&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;body&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;h1&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;Pruebas de aceptacion de Calculadora&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;h1&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;br&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;p&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; El
resultado de &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;span&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt; &lt;span style=&quot;color: #7f007f;&quot;&gt;concordion:set&lt;/span&gt;=&lt;i&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;#a&quot;&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;4&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt; más &lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;span&lt;/span&gt; &lt;span style=&quot;color: #7f007f;&quot;&gt;concordion:set&lt;/span&gt;=&lt;i&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;#b&quot;&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;3&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; debe
ser &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;span&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt; &lt;span style=&quot;color: #7f007f;&quot;&gt;concordion:assertEquals&lt;/span&gt;=&lt;i&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;testSuma(#a,
#b)&quot;&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;7&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;p&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;p&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; El
resultado de &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;span&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt; &lt;span style=&quot;color: #7f007f;&quot;&gt;concordion:set&lt;/span&gt;=&lt;i&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;#a&quot;&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;4&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt; menos &lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;span&lt;/span&gt; &lt;span style=&quot;color: #7f007f;&quot;&gt;concordion:set&lt;/span&gt;=&lt;i&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;#b&quot;&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;3&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; debe
ser &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;span&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt; &lt;span style=&quot;color: #7f007f;&quot;&gt;concordion:assertEquals&lt;/span&gt;=&lt;i&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;testResta(#a,
#b)&quot;&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;1&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;p&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;p&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; El
resultado de &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;span&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt; &lt;span style=&quot;color: #7f007f;&quot;&gt;concordion:set&lt;/span&gt;=&lt;i&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;#a&quot;&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;4&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt; por &lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;span&lt;/span&gt; &lt;span style=&quot;color: #7f007f;&quot;&gt;concordion:set&lt;/span&gt;=&lt;i&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;#b&quot;&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;3&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; debe
ser &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;span&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt; &lt;span style=&quot;color: #7f007f;&quot;&gt;concordion:assertEquals&lt;/span&gt;=&lt;i&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&quot;testProducto(#a,
#b)&quot;&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;12&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 10.0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 10.0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;&quot;&gt;
&lt;span style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; line-height: 115%;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;background: silver; color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-highlight: silver;&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; line-height: 115%;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Como estamos viendo primero definimos el namespace de concordion dentro de nuestro XHTML dentro de la etiqueta HTML. Cuando el navegador encuentre una etiqueta con este namespace la ignorará.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Con la etiqueta &lt;b&gt;concordion:set&lt;/b&gt; establecemos el valor de una variable y con &lt;b&gt;concordion:assertEquals&lt;/b&gt; comprobamos que el método testXYX devuelve un valor concreto.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;El resultado al ejecutar la clase de pruebas como JUnit es un documento de pruebas de aceptación en formato HTML como nosotros definamos:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi43eXA3DL0QJo0zoYHaq71nqIjjjrw7cE7e7saHgV1u54XOkFj5xvwjUgw00t60-oKXdAvOXzIo3sSOGoo4rShDy6Gh5dMvaVrjKduQuA5Z6vV_j4_Ul-GQlxi4AsfBeg3Tul_9iOp0dE/s1600/concordion_html.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;251&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi43eXA3DL0QJo0zoYHaq71nqIjjjrw7cE7e7saHgV1u54XOkFj5xvwjUgw00t60-oKXdAvOXzIo3sSOGoo4rShDy6Gh5dMvaVrjKduQuA5Z6vV_j4_Ul-GQlxi4AsfBeg3Tul_9iOp0dE/s640/concordion_html.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Vemos que el resultado de assertEquals se ilumina en verde siempre que el test haya sido OK.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Espero que os haya servido para haceros una idea del proposito de este framework e iniciaros con el mismo&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Salu2.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/5759206142525207461/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2013/12/pruebas-de-aceptacion-concordion-es-tu.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/5759206142525207461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/5759206142525207461'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2013/12/pruebas-de-aceptacion-concordion-es-tu.html' title='¿PRUEBAS DE ACEPTACION? CONCORDION ES TU FRAMEWORK'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuAehrdaSkC140b47j8_UNYjYzyEi-r9KC7FVXBI21ilL150zMBQAwd9lSGK6Ylpj4j1uurzUzzYsTzVMtxHZe-pk5BuYOsHaQ-5SAJGzWYeyHx7vHS2eNeCnmiKpW8fVnq3u_bd7AfKQ/s72-c/agil1_2.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-9210221670283594791</id><published>2013-12-16T11:40:00.000+01:00</published><updated>2014-05-23T13:12:16.982+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arquillian"/><category scheme="http://www.blogger.com/atom/ns#" term="Pruebas funcionales"/><category scheme="http://www.blogger.com/atom/ns#" term="Pruebas unitarias"/><category scheme="http://www.blogger.com/atom/ns#" term="Test"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutoriales"/><title type='text'>TUTORIAL ARQUILLIAN (I)</title><content type='html'>&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;¿Qué es Arquillian?&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Arquillian es un framework de test que nos
permite levantar un contexto embebido CDI y realizar test unitarios y test
funcionales en nuestros proyectos. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;En nuestras aplicaciones tenemos que probar
componentes cuyo ciclo de vida es manejado por el servidor de aplicaciones como
EJB´s o JPA´s y nos volvemos locos perdiendo tiempo en crear mocks o probando
estos componentes posteriormente en pruebas funcionales cuando deberían tener
sus propias pruebas unitarias.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Con Arquillian vamos a poder probar todos
estos componentes levantando un contexto CDI, inyectando estos componentes en
la propia clase de test que a su vez correrá dentro del contenedor. &amp;nbsp;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Se integra fácilmente en nuestros proyectos
con Maven y funciona con librerías de test como JUnit 4 o TestNG.&amp;nbsp; Para desplegar desplegables JAVA (JARS, WARS)
con las clases disponibles en el contexto CDI utiliza el framework ShrinkWrap.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;Escribiendo un test de integración con Arquillian&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Para poder ejecutar test con Arquillian vamos
a necesitar tener como mínimo Maven instalado y JDK 1.5. Podemos crear un
proyecto Maven en Eclipse con el plugin m2e o crearlo manualmente mediante la
línea:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;&quot;&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 12pt; padding: 0cm; word-break: break-all;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #333333; font-family: &amp;quot;DejaVu Sans Mono&amp;quot;; font-size: 9.0pt; mso-ansi-language: ES-TRAD; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: FR;&quot;&gt;mvn archetype:generate
-DarchetypeGroupId=net.avh4.mvn.archetype \&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 12pt; padding: 0cm; word-break: break-all;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #333333; font-family: &amp;quot;DejaVu Sans Mono&amp;quot;; font-size: 9.0pt; mso-ansi-language: ES-TRAD; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: FR;&quot;&gt;-DarchetypeArtifactId=java-1.6-archetype&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #333333; font-family: &amp;quot;DejaVu Sans Mono&amp;quot;; font-size: 10.5pt; mso-ansi-language: ES-TRAD; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: FR;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;y&amp;nbsp; posteriormente
importarlo creando los archivos con el goal eclipse:eclipse.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Una vez que hemos creado el proyecto nos
debería aparecer algo como lo siguiente:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgylCnXmr3arBV7tMc7QfJ2MNpF6V9G5kZAVhyphenhyphenp4PEaVP4dNPO4W_Y_0pap8pvLFQFieiu9iPbkZhMbqfNnUp54KIlQkO4eyErjFbTSUlfEJqD8mURB2zbHkuIwowivPcakgqWZxKgJIQE/s1600/Captura.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgylCnXmr3arBV7tMc7QfJ2MNpF6V9G5kZAVhyphenhyphenp4PEaVP4dNPO4W_Y_0pap8pvLFQFieiu9iPbkZhMbqfNnUp54KIlQkO4eyErjFbTSUlfEJqD8mURB2zbHkuIwowivPcakgqWZxKgJIQE/s1600/Captura.JPG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;En el pom nos debería aparecer lo básico, el
plugin para compilar con la JDK 1.6 y la librería de JUnit para los test
unitarios:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;&quot;&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;build&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;plugins&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;plugin&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;artifactId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;maven-compiler-plugin&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;artifactId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;version&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;2.3.2&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;version&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;configuration&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;source&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;1.6&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;source&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;target&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;1.6&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;target&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;configuration&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;plugin&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;plugin&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;artifactId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;maven-surefire-plugin&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;artifactId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;version&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;2.12&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;version&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;plugin&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;plugins&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt; line-height: 115%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: EN-US;&quot;&gt;build&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: EN-US;&quot;&gt;…&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: EN-US;&quot;&gt;…&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;dependency&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;groupId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;junit&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;groupId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;artifactId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;junit&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;artifactId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;version&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;4.8.1&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;version&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;scope&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;test&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;scope&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: EN-US;&quot;&gt;dependency&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: EN-US;&quot;&gt;dependency&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;groupId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;org.jboss.spec&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;groupId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;artifactId&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;jboss-javaee-6.0&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;artifactId&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;version&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;1.0.0.Final&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;version&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;type&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;pom&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;type&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;scope&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;provided&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;scope&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;dependency&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;A continuación creamos en nuestro proyecto un
componente el cual utilizaremos para probar&amp;nbsp;
la inyección de dependencias en un servidor embebido (JBOSS, GLASSFISH…):&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;&quot;&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #7f0055; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #7f0055; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;class&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt; Greeter {&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #7f0055; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;private&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt; PhraseBuilder &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #0000c0; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;phraseBuilder&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #646464; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;@&lt;span style=&quot;background: silver; mso-highlight: silver;&quot;&gt;Inject&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #7f0055; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt; Greeter(PhraseBuilder
phraseBuilder) {&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #7f0055; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;.&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #0000c0; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;phraseBuilder&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt; =
phraseBuilder;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #7f0055; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #7f0055; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;void&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt; greet(PrintStream to, String
name) {&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
to.println(createGreeting(name));&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #7f0055; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt; String createGreeting(String
name) {&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #7f0055; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #0000c0; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;phraseBuilder&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;.buildPhrase(&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #2a00ff; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&quot;hello&quot;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;, name);&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;}&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;}&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Para añadir el soporte de Arquillian a
nuestro proyecto añadimos primero las dependencias transitivas de Arquillian
dentro de la sección dependencyManagement:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;&quot;&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;dependencyManagement&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;dependencies&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;dependency&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;groupId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;org.jboss.arquillian&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;groupId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;artifactId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;arquillian-bom&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;artifactId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;version&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;1.0.3.Final&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;version&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;scope&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;import&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;scope&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;type&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;pom&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;type&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;dependency&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;dependencies&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt; line-height: 115%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: ES-TRAD;&quot;&gt;dependencyManagement&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;A continuación añadimos la dependencia que
nos servirá de puente para utilizar Arquillian con JUnit 4, que añadirá también
las dependencias de ShrinkWrap para desplegar artefactos Java. En este punto
hay que decir que tenemos la opción de utilizar Arquillian con otras librerías de
pruebas como el framework TestNG:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;&quot;&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;dependency&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;groupId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;org.jboss.arquillian.junit&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;groupId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;artifactId&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;arquillian-junit-container&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;artifactId&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;scope&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;test&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;scope&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt; line-height: 115%;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: ES-TRAD;&quot;&gt;dependency&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Una vez que hacemos esto ya podemos escribir
nuestro primer test unitario. Para ello creamos una clase de Test, inyectamos
nuestro componente con las anotaciones CDI, creamos y desplegamos con
ShrinkWrap un JAR con nuestra clase y un archivo beans.xml vacío pero necesario
para que funcione todo correctamente por la especificación JEE 6&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;El código del test unitario es el siguiente:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;&quot;&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: #646464; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;@RunWith&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;(Arquillian.&lt;/span&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #7f0055; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;class&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;)&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #7f0055; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #7f0055; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;class&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt; GreeterTest {&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #646464; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;@Deployment&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #7f0055; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #7f0055; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;static&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt; JavaArchive createDeployment() {&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JavaArchive jar =
ShrinkWrap.&lt;i&gt;create&lt;/i&gt;(JavaArchive.&lt;/span&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #7f0055; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;class&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;)&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .addClasses(Greeter.&lt;/span&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #7f0055; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;class&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;,
PhraseBuilder.&lt;/span&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #7f0055; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;class&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;)&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
.addAsManifestResource(EmptyAsset.&lt;/span&gt;&lt;i&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #0000c0; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;INSTANCE&lt;/span&gt;&lt;/i&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;, &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #2a00ff; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&quot;beans.xml&quot;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #7f0055; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt; jar;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #646464; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;@Inject&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Greeter &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #0000c0; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;greeter&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #646464; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;@Test&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #7f0055; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #7f0055; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;void&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt; should_create_greeting() {&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Assert.&lt;i&gt;assertEquals&lt;/i&gt;(&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #2a00ff; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&quot;Hello, Earthling!&quot;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;,&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #0000c0; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;greeter&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;.createGreeting(&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #2a00ff; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&quot;Earthling&quot;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;));&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #0000c0; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;greeter&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;.greet(System.&lt;/span&gt;&lt;i&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #0000c0; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;out&lt;/span&gt;&lt;/i&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;, &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #2a00ff; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&quot;Earthling&quot;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;);&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 10.0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;&quot;&gt;
&lt;span style=&quot;font-family: Consolas; font-size: 10pt; line-height: 115%;&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;border: solid windowtext 1.0pt; margin-left: 18.0pt; margin-right: 0cm; mso-border-alt: solid windowtext .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;&quot;&gt;
&lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;border: none; margin-left: 18.0pt; mso-add-space: auto; mso-border-alt: solid windowtext .5pt; mso-list: l0 level1 lfo1; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm; text-indent: -18.0pt;&quot;&gt;
&lt;!--[if !supportLists]--&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Symbol; font-size: 10pt; line-height: 115%;&quot;&gt;·&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 7pt; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt; line-height: 115%;&quot;&gt;@RunWith:
el test corre bajo el soporte de Arquillian&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;border: none; margin-left: 18.0pt; mso-add-space: auto; mso-border-alt: solid windowtext .5pt; mso-list: l0 level1 lfo1; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm; text-indent: -18.0pt;&quot;&gt;
&lt;!--[if !supportLists]--&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Symbol; font-size: 10pt; line-height: 115%;&quot;&gt;·&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 7pt; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt; line-height: 115%;&quot;&gt;@Deployment:
anotación sobre el método que crea el desplegable Java &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;border: none; margin-left: 18.0pt; mso-add-space: auto; mso-border-alt: solid windowtext .5pt; mso-list: l0 level1 lfo1; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm; text-indent: -18.0pt;&quot;&gt;
&lt;!--[if !supportLists]--&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Symbol; font-size: 10pt; line-height: 115%;&quot;&gt;·&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 7pt; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt; line-height: 115%;&quot;&gt;@Inject:
para instanciar nuestro componente en la clase de test&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;border: none; margin-left: 18.0pt; mso-add-space: auto; mso-border-alt: solid windowtext .5pt; mso-list: l0 level1 lfo1; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm; text-indent: -18.0pt;&quot;&gt;
&lt;!--[if !supportLists]--&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Symbol; font-size: 10pt; line-height: 115%;&quot;&gt;·&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 7pt; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt; line-height: 115%;&quot;&gt;@Test:
anotación para indicar qué es un método de test&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Ahora viene lo mejor. Estos test unitarios
deben correr bajo un contenedor pero, ¿Cuál?&amp;nbsp;
Pues podremos elegir varios contenedores compatibles con el modelo de
programación de nuestra prueba siempre y cuando exista un adaptador en
Arquillian con este contenedor. Para el test de inyección de CDI podremos
utilizar JBoss 7, Glassfish 3 o Weld (implemenación de referencia de CDI).
Arquillian también permite ejecutar los test con un servidor real sin cambiar
una sola línea de código (previamente a las pruebas deberemos tener levantado
dicho servidor).&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Si utilizamos por ejemplo Glassfish 3
deberemos añadir las siguientes dependencias:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;&quot;&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;dependency&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;groupId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;org.jboss.arquillian.container&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;groupId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;artifactId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;arquillian-glassfish-embedded-3.1&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;artifactId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;version&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;1.0.0.CR3&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;version&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;scope&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;test&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;scope&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;dependency&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;dependency&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;groupId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;org.glassfish.main.extras&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;groupId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;artifactId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;glassfish-embedded-all&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;artifactId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;version&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;3.1.2&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;version&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;scope&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;provided&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;scope&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: ES-TRAD;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot; style=&quot;font-family: Consolas; font-size: 10pt; line-height: 115%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: ES-TRAD;&quot;&gt;dependency&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: ES-TRAD;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Para resumir el tema de las dependencias
están:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraph&quot; style=&quot;mso-list: l0 level1 lfo1; text-align: justify; text-indent: -18.0pt;&quot;&gt;
&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span lang=&quot;ES-TRAD&quot;&gt;· &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;La dependencia de integración de Arquillian y JUnit.:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;&quot;&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;dependency&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm; text-indent: 35.4pt;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;groupId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;org.jboss.arquillian.junit&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;groupId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm; text-indent: 35.4pt;&quot;&gt;
&lt;span style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;&quot;&gt;artifactId&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;arquillian-junit-container&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;&quot;&gt;artifactId&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 10.0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm; text-indent: 35.4pt;&quot;&gt;
&lt;span style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;&quot;&gt;scope&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;test&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;&quot;&gt;scope&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 10.0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt;&quot;&gt;dependency&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-family: Consolas; font-size: 10.0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpFirst&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;mso-list: l0 level1 lfo1; text-align: justify; text-indent: -18.0pt;&quot;&gt;
&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span lang=&quot;ES-TRAD&quot;&gt;· &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;La dependencia de Arquillian para el contenedor:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;&quot;&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;dependency&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm; text-indent: 35.4pt;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;groupId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;org.jboss.arquillian.container&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;groupId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm; text-indent: 35.4pt;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;artifactId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;arquillian-glassfish-embedded-3.1&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;artifactId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;version&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;1.0.0.CR3&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;version&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;scope&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;test&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;scope&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;dependency&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraph&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;
&lt;!--[if !supportLists]--&gt;&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;·&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; font-size: 7pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Y el ambiente de ejecución del contenedor:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraph&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;&quot;&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;dependency&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm; text-indent: 35.4pt;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;groupId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;org.glassfish.main.extras&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;groupId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm; text-indent: 35.4pt;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;artifactId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;glassfish-embedded-all&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;artifactId&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm; text-indent: 35.4pt;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;version&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;3.1.2&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;version&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; margin-bottom: 0.0001pt; padding: 0cm; text-indent: 35.4pt;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;scope&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10pt;&quot;&gt;provided&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;scope&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Consolas; font-size: 10.0pt; mso-ansi-language: EN-US;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;&quot;&gt;
&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: EN-US;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #3f7f7f; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: EN-US;&quot;&gt;dependency&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: teal; font-family: Consolas; font-size: 10.0pt; line-height: 115%; mso-ansi-language: EN-US;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Finalmente probamos nuestro test en Eclipse
ejecutándolo como un test unitario normal: Run As Junit Test.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span lang=&quot;EN-US&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;Fuentes&lt;/b&gt;&lt;/span&gt;: &lt;a href=&quot;http://arquillian.org/guides/getting_started_es/&quot;&gt;arquillian.org&lt;/a&gt;&amp;nbsp; | &lt;a href=&quot;http://elblogdelfrasco.blogspot.com.es/2012/04/un-vistazo-rapido-arquillian.html&quot;&gt;elblogdelfrasco&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/9210221670283594791/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2013/12/tutorial-arquillian-i.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/9210221670283594791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/9210221670283594791'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2013/12/tutorial-arquillian-i.html' title='TUTORIAL ARQUILLIAN (I)'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgylCnXmr3arBV7tMc7QfJ2MNpF6V9G5kZAVhyphenhyphenp4PEaVP4dNPO4W_Y_0pap8pvLFQFieiu9iPbkZhMbqfNnUp54KIlQkO4eyErjFbTSUlfEJqD8mURB2zbHkuIwowivPcakgqWZxKgJIQE/s72-c/Captura.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-7386037254601235983</id><published>2013-11-29T12:20:00.003+01:00</published><updated>2013-11-29T12:20:43.168+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Articulo"/><category scheme="http://www.blogger.com/atom/ns#" term="Ley de Benford"/><category scheme="http://www.blogger.com/atom/ns#" term="Matemáticas"/><title type='text'>ESTAFAS CON BENFORD</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Hoy os voy a hablar de un curioso fenómeno que ocurre con conjuntos de datos que existen en la vida real como es el caso de las longitudes de los rios, la población de las ciudades, el importe de nuestras facturas, las tasas de mortalidad, los números primos e incluso para la serie de Fibonacci... Lo conocía con otro nombre pero está recogido en una ley y se llama: &lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;LA LEY DE BENFORD&lt;/span&gt;&lt;/b&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Este fenómeno fue descubierto por primera vez por &lt;b&gt;Simon Newcomb&lt;/b&gt; en &lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;1881&lt;/span&gt;&lt;/b&gt;, porque se dio cuenta que las primeras páginas de las tablas de logaritmos estaban más usadas que las finales por lo que se dio cuenta que los primeros digitos de los números que se consultaban no son equiprobables.&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt; En 1938 Benford postuló una ley&lt;/span&gt;&lt;/b&gt; comprobandolo empíricamente con diversos conjuntos de datos.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Resumiendo&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt; asegura que el 1 aparece con mayor frecuencia en estos conjuntos de datos como el primer dígito o digito más significativo&lt;/span&gt;&lt;/b&gt; (el 30% de las veces) y cuanto mayor es el dígito menor es la probabilidad que aparezca como primer digito. El dígito más significativo de un número es el primer número distinto de 0 que aparece más a la izquierda en su expresión decimal. Ejemplo: el digito mas significativo de 3.1415 es 3 y y el 1 es el de la expresión 0,0134.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Esto se puede calcular mediante una fórmula matemática:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;P(1ªcifra no nula N) = log10 (N+1) - log10 (N)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;La fórmula también es válida para más de una cifra, es decir, la probabilidad de que un número comience por 10, 99 o 5675.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Las probabilidades que se obtienen para los 9 primeros digitos son:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5M2cf6VA9SL5mYyz2XAk8Kv4hpVn1vzWjlgZXOY6pL7aoJxAhJl4pdgo3QkrUuCv4DYeu-jesolGicsfiRh0TR-4q8zd6dwpEZey3mbbAkspqdwGDhjbdV0c8tTRlYgVOQmBwi0iuvTY/s1600/benford1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;107&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5M2cf6VA9SL5mYyz2XAk8Kv4hpVn1vzWjlgZXOY6pL7aoJxAhJl4pdgo3QkrUuCv4DYeu-jesolGicsfiRh0TR-4q8zd6dwpEZey3mbbAkspqdwGDhjbdV0c8tTRlYgVOQmBwi0iuvTY/s640/benford1.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjh9rQM4MhAaKPdtB38IHYmp6z8AnG796nWeA3JE44BVhg-X59RiEsrRvBedkabqDIgBmhYES7QuVsI0dGRnrjBk3NZGGYTmdKIG4nvcVU7d7ShqRbwaJ9zQs34w8S6TJa44aLJ5s1nw98/s1600/benford2.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;208&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjh9rQM4MhAaKPdtB38IHYmp6z8AnG796nWeA3JE44BVhg-X59RiEsrRvBedkabqDIgBmhYES7QuVsI0dGRnrjBk3NZGGYTmdKIG4nvcVU7d7ShqRbwaJ9zQs34w8S6TJa44aLJ5s1nw98/s320/benford2.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;No todos los conjuntos de datos cumplen la ley de Benford. Por ejemplo, la altura de las personas o las marcas en horas de los corredores de una maraton. Para estos conjuntos de datos los digitos signitificativos estarán limitados a un sólo subconjunto del 1 al 9.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Yo no me lo creía así que he comprobado esta ley utilizando como datos de entrada la población en millones de habitantes de los paises y el resultado ha sido el siguiente:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmAlCfSqitxEDLF-TKrjYzBR10-clGqTYfkapWpwK5RLoCpEDhPP9OFvn0Oe2BXWsyznrPskl5Cf7gkjb8x-qN2MwponOARR8I-iL8WFw9yyTIBQ4oatS1a3scV3ifrncJnI-czmv5NCQ/s1600/benford3.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;161&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmAlCfSqitxEDLF-TKrjYzBR10-clGqTYfkapWpwK5RLoCpEDhPP9OFvn0Oe2BXWsyznrPskl5Cf7gkjb8x-qN2MwponOARR8I-iL8WFw9yyTIBQ4oatS1a3scV3ifrncJnI-czmv5NCQ/s320/benford3.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;y expresado mediante una gráfica:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoH2ZBKgtHk4zwVPFVL_K7JIkOx9P5QYSHAjDug5b1LQgJb7AivfNlSvCoy-d1Zms-T_XwiEFB8Lie9Bd80My97USitdT14tHAA6mJ_oOFtRXdIBOb_nepwb5RfRbeG9nAnNNsoRYQhfU/s1600/benford4.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;194&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoH2ZBKgtHk4zwVPFVL_K7JIkOx9P5QYSHAjDug5b1LQgJb7AivfNlSvCoy-d1Zms-T_XwiEFB8Lie9Bd80My97USitdT14tHAA6mJ_oOFtRXdIBOb_nepwb5RfRbeG9nAnNNsoRYQhfU/s320/benford4.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Como podemos observar, sino es exactamente igual se parece mucho...&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Pero esta ley tiene una gran utilidad práctica sobre todo en los tiempos que corren y es la de detectar fraudes fiscales. Hay corruptos y evasores de impuestos en este país que no saben de esta ley así que al tratar de realizar una contabilidad &amp;nbsp;que permita evadir pagar más impuestos de lo que creen necesario tienden a modificar datos de forma uniforme con todas las cifras. Ahí es donde un inspector puede detectar si la contabilidad de una empresa es sospechosa de haber sido maquillada o no.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Algunos casos reales de aplicación de la ley de Benford son los siguientes:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;font-family: Arial, Helvetica, sans-serif; text-align: justify;&quot;&gt;El profesor de Ciencias Políticas en la Universidad de Michigan Walter Mebane aplicó la Ley de Benford con algunas modificaciones a a las elecciones de Irán en el 2009 donde Ahmadinejad sacó el 63% de los votos. Las desviaciones eran tan grandes que el fraude era obvio. Fuente: &lt;a href=&quot;http://www.guioteca.com/matematicas/ley-de-benford-la-increible-tecnica-matematica-para-detectar-fraudes/&quot;&gt;guioteca&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;En febrero de este mismo año el profesor titular de Análisis Matemático de la Universidad de Sevilla,Miguel Lacruz Martín, escribe hoy una carta al director de ABC en la que revela que los propios números que contienen los supuestos papeles de Luis Bárcenas&amp;nbsp;dejan en evidencia a su autor realizando un estudio de los &lt;a href=&quot;http://es.wikipedia.org/wiki/Asiento_contable&quot;&gt;asientos&lt;/a&gt;&amp;nbsp;de la contabilidad B. Fuente: &lt;a href=&quot;http://www.abc.es/espana/20130206/abci-papeles-barcenas-falsos-segun-201302060805.html&quot;&gt;ABC&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Espero que os haya gustado y que comprobéis la ley por vosotros mismos.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Un saludo.&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;b&gt;
Fuente&lt;/b&gt;: &lt;a href=&quot;http://es.wikipedia.org/wiki/Ley_de_Benford&quot;&gt;Wikipedia&lt;/a&gt;&amp;nbsp;| &lt;a href=&quot;http://www.abc.es/espana/20130206/abci-papeles-barcenas-falsos-segun-201302060805.html&quot;&gt;ABC&lt;/a&gt;&amp;nbsp;| &lt;a href=&quot;http://blog.kleinproject.org/?p=1634&amp;amp;lang=es&quot;&gt;kleinproject&lt;/a&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/7386037254601235983/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2013/11/estafas-con-benford.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/7386037254601235983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/7386037254601235983'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2013/11/estafas-con-benford.html' title='ESTAFAS CON BENFORD'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5M2cf6VA9SL5mYyz2XAk8Kv4hpVn1vzWjlgZXOY6pL7aoJxAhJl4pdgo3QkrUuCv4DYeu-jesolGicsfiRh0TR-4q8zd6dwpEZey3mbbAkspqdwGDhjbdV0c8tTRlYgVOQmBwi0iuvTY/s72-c/benford1.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-6037857218614010798</id><published>2013-11-19T23:50:00.001+01:00</published><updated>2013-11-20T17:06:35.603+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Google Chrome"/><category scheme="http://www.blogger.com/atom/ns#" term="Navegadores"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips"/><category scheme="http://www.blogger.com/atom/ns#" term="Trucos"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutoriales"/><title type='text'>TRUCOS EN GOOGLE CHROME</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;El navegador de &lt;b&gt;Google &lt;/b&gt;es el tercer navegador más utilizado después de &lt;b&gt;Microsoft Internet Explorer y Mozilla Firefox&lt;/b&gt; y en mi caso se ha convertido en mi ojito derecho, todos tenemos nuestros programas preferidos, ¿no es así?. Hoy os traigo una serie de &lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;tips &lt;/span&gt;&lt;/b&gt;muy útiles de &lt;b&gt;Google Chrome&lt;/b&gt; que te ayudaran a mejorar la experiencia de uso con este&lt;span id=&quot;goog_1962883617&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_1962883618&quot;&gt;&lt;/span&gt; navegador:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkLS0VO5t9K-As8I9RCpvd8iRwrZWwtiaK1A4hF3K6MmzkDO-5qzOOUf1m7BlzWVUlCVfnHHhVB-E4i6Dx9d70w791Bjg2MjLZCcAI46jXNIA4egsdz7lqd2uti0_vmWkAi9UMb-Xqy9E/s1600/Navegadores-de-Internet-en-PC.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;187&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkLS0VO5t9K-As8I9RCpvd8iRwrZWwtiaK1A4hF3K6MmzkDO-5qzOOUf1m7BlzWVUlCVfnHHhVB-E4i6Dx9d70w791Bjg2MjLZCcAI46jXNIA4egsdz7lqd2uti0_vmWkAi9UMb-Xqy9E/s400/Navegadores-de-Internet-en-PC.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;Ranking navegadores 2013 (Imagen: &lt;a href=&quot;http://blog.uchceu.es/informatica/ranking-de-navegadores-de-internet-mas-usados/&quot;&gt;uchceu&lt;/a&gt;)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;Tip 1: Fijar pestaña&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Esta opción nos sirve para mantener abiertas nuestras páginas favoritas. Normalmente cuando abres el navegador consultas el correo, periódicos, redes sociales, tu blog favorito (como por ejemplo &lt;a href=&quot;http://jpascu.blogspot.com/&quot;&gt;Un Murciano en el polo&lt;/a&gt;, ;)... Si cuando abres una página en una pestaña pulsas botón derecho sobre la pestaña y haces click sobre la opción Fijar Pestaña, la próxima vez que abras el navegador esta página se abrirá automáticamente por defecto y no tendrás que hacerlo cada día. Además te elimina el nombre de la página y sólo te deja el favicon por lo que ganamos un valioso espacio en la barra de pestañas.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5uqLBkPKtTuzHz1wJJJDqzyPF602FRPUDQSfQRqALr0-cbLLpl-eJ8t2fngQWTnazlZnAmo-X7f3IWu8YCEP6_V-icIpV3YUuv9UqHcPpzE6f-7snQBHhtwrVzpy0GtVxvyDq7rGx_Hs/s1600/tip1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;208&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5uqLBkPKtTuzHz1wJJJDqzyPF602FRPUDQSfQRqALr0-cbLLpl-eJ8t2fngQWTnazlZnAmo-X7f3IWu8YCEP6_V-icIpV3YUuv9UqHcPpzE6f-7snQBHhtwrVzpy0GtVxvyDq7rGx_Hs/s320/tip1.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPyxtEPr-P61VlZWB6xC6-vJkQNn3-rfDA0SRmTrsSPlGu13ZWYvmZ1xK8B_Nf13PwalYqtwxT5gRNkiHwyRj9JIaGjBz0oyTXmgAHUMbLWfV4iaH2ltZLSnDvbvJ0P7e_cEfzDww4_9U/s1600/tip2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPyxtEPr-P61VlZWB6xC6-vJkQNn3-rfDA0SRmTrsSPlGu13ZWYvmZ1xK8B_Nf13PwalYqtwxT5gRNkiHwyRj9JIaGjBz0oyTXmgAHUMbLWfV4iaH2ltZLSnDvbvJ0P7e_cEfzDww4_9U/s1600/tip2.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;Tip 2: Ampliar espacio en barra de marcadores&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Cuando añadimos páginas a nuestra barra de marcadores llega un momento en que nos quedamos sin espacio. Siempre podemos organizarlos en carpetas pero otra opción para tenerlos disponibles en la propia barra es pulsar con el botón derecho del raton sobre el marcador y hacer click sobre Editar. Lo único que tenemos que hacer es borrar el campo Nombre y pulsar sobre Guardar. A partir de ahora tendremos nuestro marcador solo con su favicon en la barra y podremos añadir muchas más páginas...&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieh8EzULjeZd3hROe84gm1w2AyEYDdKEoejNZWSYZNGFGwpvg7H2QKnUHJJPPaM8FGz1PuQ_TLlxcLJka7qSNiQ3EQBeQmiBvgsSZ4Z4glkQ80phtuc3peMIwZZt4Qbeuv6rsYIvyruUM/s1600/tip3.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieh8EzULjeZd3hROe84gm1w2AyEYDdKEoejNZWSYZNGFGwpvg7H2QKnUHJJPPaM8FGz1PuQ_TLlxcLJka7qSNiQ3EQBeQmiBvgsSZ4Z4glkQ80phtuc3peMIwZZt4Qbeuv6rsYIvyruUM/s320/tip3.jpg&quot; width=&quot;233&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfj6SzMMQjkU-7S7eBclZLf_Wb8KrhvPBpqNjLOGS6ElkX_tbNS2-GO41qHOZeDnKruIs28_Mk8FLIX1yTx2zQfUSPmp3Ze8GdMychGCPxd-VQqcRt1SMLl1LK5zwE9fZx4ccl8OMyJkg/s1600/tip4.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfj6SzMMQjkU-7S7eBclZLf_Wb8KrhvPBpqNjLOGS6ElkX_tbNS2-GO41qHOZeDnKruIs28_Mk8FLIX1yTx2zQfUSPmp3Ze8GdMychGCPxd-VQqcRt1SMLl1LK5zwE9fZx4ccl8OMyJkg/s320/tip4.jpg&quot; width=&quot;277&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCAJsIXlXs2annfosnTVt_HUsOdfkxpIRhdtcbJD9KuiuGbs-8YAWvKDGacYul9nlmf-NEtaSSnxzi28aVI0UHQZgqfnESq8qrP5tELFVswY2EQsn1IjYjhq-YSVuzJ_77I_lHnWLiego/s1600/tip4.5.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCAJsIXlXs2annfosnTVt_HUsOdfkxpIRhdtcbJD9KuiuGbs-8YAWvKDGacYul9nlmf-NEtaSSnxzi28aVI0UHQZgqfnESq8qrP5tELFVswY2EQsn1IjYjhq-YSVuzJ_77I_lHnWLiego/s1600/tip4.5.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;Tip 3: Recuperar pestañas abiertas&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;A veces vamos con prisa o se te abren popup con publicidad y cuando cerramos el Chrome nos damos cuenta que hemos cerrado todas las ventanas abiertas. Podemos configurar el GC para que cuando lo abramos de nuevo restaure las pestañas que estaban abiertas cuando se cerró por última vez. Para ello debemos pulsar sobre el botón Pesonaliza y controla Google Chrome (esquina superior derecha) y luego pulsar sobre Configuración. Una vez abierta la página de Configuración pulsamos sobre la opción Continuar como lo dejé todo antes de cerrar en la sección al Iniciar.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Otro problema que podemos tener es haber cerrado una pestaña sin querer. La podemos recuperar si pulsamos &lt;b&gt;CTRL+SHIFT+T&lt;/b&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_Mb2_H_UcvLpvm9peF8_uJOdbNP9BdqXuqBPqZRIM3BWCGmHChPkHTvoUg7inMMaa1MIB1itEoZiOh6ru2wDzlRSVzc0YUrXNqmVsJDJLLegKbCfAaw4wK2j2AhxKcM1Nl_RNai9jeEM/s1600/tip5.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_Mb2_H_UcvLpvm9peF8_uJOdbNP9BdqXuqBPqZRIM3BWCGmHChPkHTvoUg7inMMaa1MIB1itEoZiOh6ru2wDzlRSVzc0YUrXNqmVsJDJLLegKbCfAaw4wK2j2AhxKcM1Nl_RNai9jeEM/s320/tip5.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBtYQqvDQVHXCSlDY-hUzcj1A1jtzl8CntVwx2UQTXq0UKoVcohlVq7dzpufL_TmIjFu9ohDVVHQe3XEaSvvF2HbIj0CdJCFZ6ER6QjHln0VpyVXPJKaESdRm54N0w9IPbvW2EI5oLCY0/s1600/tip6.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;90&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBtYQqvDQVHXCSlDY-hUzcj1A1jtzl8CntVwx2UQTXq0UKoVcohlVq7dzpufL_TmIjFu9ohDVVHQe3XEaSvvF2HbIj0CdJCFZ6ER6QjHln0VpyVXPJKaESdRm54N0w9IPbvW2EI5oLCY0/s320/tip6.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;Tip 4: Arrastrar y Soltar&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;A veces nos bajamos alguna imagen con el Chrome y nos la guardará en el directorio de Descargas que tengamos configurado. Si queremos recuperarlo al instante solo tenemos que arrastrarlo al Escritorio u otra carpeta que queramos y listo.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBZbaWWP-JhYQnEwqqhR451aUq_2_AhjhMewNiQFi4DYjKogxQa0qprlG9Ab5zRDy0cOgM1n7m46kDVlu03Q9vIdRkvGBST4UDvoOAFmB8pvL8-S-yfFhl24SC7JC98AUNL4btuHJocw8/s1600/tip7.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBZbaWWP-JhYQnEwqqhR451aUq_2_AhjhMewNiQFi4DYjKogxQa0qprlG9Ab5zRDy0cOgM1n7m46kDVlu03Q9vIdRkvGBST4UDvoOAFmB8pvL8-S-yfFhl24SC7JC98AUNL4btuHJocw8/s1600/tip7.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;Tip 5: Administración de Tareas&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;A veces abrimos alguna página y se queda en estado No Responde porque falla algún Complemento del Chrome al abrir los contenidos o por cualquier error que se pueda producir. Si queremos cerrar una pestaña en concreto podemos abrir el Administrador de Tareas pulsando &lt;b&gt;SHIFT + ESC &lt;/b&gt;y luego elegir la pestaña que nos está dando guerra y pulsar sobre el botón&lt;b&gt; Finalizar Proceso&lt;/b&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHcEsUt8kwRyzNxA5WzJyIi4HQXRD4wIEGdz61AJxWiV_MCMgUp7sy65h_k-umzGBpJ_aCF_IbD5WtvXnl5wyzm_iSrS2_RKobfwFRCS1VDOtNwspwlcQEmUfNG0S-ZTjcXVzaAhP-Tgc/s1600/tip8.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;201&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHcEsUt8kwRyzNxA5WzJyIi4HQXRD4wIEGdz61AJxWiV_MCMgUp7sy65h_k-umzGBpJ_aCF_IbD5WtvXnl5wyzm_iSrS2_RKobfwFRCS1VDOtNwspwlcQEmUfNG0S-ZTjcXVzaAhP-Tgc/s320/tip8.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;Tip 6: Navegar en modo incognito&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Si quieres iniciar una sesión sin que tus páginas se queden en el historial de búsqueda o almacenen cookies debes pulsar &lt;b&gt;CTRL+MAY+N&lt;/b&gt; y se abrirá una nueva pestaña en la que podrás navegar en modo incognito. En este modo además las extensiones estarán deshabilitadas por defecto.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Espero que os haga la vida más fácil.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Salu2. Pascu.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/6037857218614010798/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2013/11/trucos-en-google-chrome.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/6037857218614010798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/6037857218614010798'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2013/11/trucos-en-google-chrome.html' title='TRUCOS EN GOOGLE CHROME'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkLS0VO5t9K-As8I9RCpvd8iRwrZWwtiaK1A4hF3K6MmzkDO-5qzOOUf1m7BlzWVUlCVfnHHhVB-E4i6Dx9d70w791Bjg2MjLZCcAI46jXNIA4egsdz7lqd2uti0_vmWkAi9UMb-Xqy9E/s72-c/Navegadores-de-Internet-en-PC.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-2388153201641530748</id><published>2013-07-26T18:14:00.002+02:00</published><updated>2013-07-26T18:14:12.620+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="DOM"/><category scheme="http://www.blogger.com/atom/ns#" term="Drag &amp; Drop"/><category scheme="http://www.blogger.com/atom/ns#" term="Ejemplos"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML5"/><category scheme="http://www.blogger.com/atom/ns#" term="Javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutoriales"/><title type='text'>HTML5:  DRAG &amp; DROP NATIVO</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://es.wikipedia.org/wiki/HTML5&quot;&gt;HTML5 &lt;/a&gt;incorpora muchas funcionalidades y etiquetas que harán la vida más sencilla a los desarrolladores web. En este artículo vamos a ver dos de ellas en dos ejemplos: el Drag &amp;amp; Drop nativo y los nuevos métodos de acceso al árbol DOM. Se supone que en el futuro todos los navegadores deberán implementar todas las características del&amp;nbsp;estándar&amp;nbsp;aunque a día de hoy no todos los navegadores cumplen con estos estándares. Para comprobar el nivel de compatibilidad de la versión de vuestro navegador podéis pulsar sobre el siguiente &lt;a href=&quot;http://html5test.com/&quot;&gt;enlace&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Anteriormente a &lt;a href=&quot;http://es.wikipedia.org/wiki/HTML5&quot;&gt;HTML5 &lt;/a&gt;podíamos simular el proceso de Drag &amp;amp; Drop con librerías como &lt;a href=&quot;http://mootools.net/&quot;&gt;MooTools &lt;/a&gt;o &lt;a href=&quot;http://jquery.com/&quot;&gt;JQuery&lt;/a&gt;. El nuevo &lt;a href=&quot;http://es.wikipedia.org/wiki/HTML5&quot;&gt;HTML5 &lt;/a&gt;ya incorpora está característica de forma nativa y vamos a verlo con el siguiente ejemplo.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;En en el proceso de Drag &amp;amp; Drop hay un objeto que es arrastrado y otro elemento al que se pueden arrastrar objetos. A continuación explicamos los atributos y métodos que debemos implementar en cada uno de los elementos para que puedan ser arrastrados o arrastrar objetos a él.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;Objetos arrastrables&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Para hacer un objeto arrastrable debemos añadir los siguientes atributos:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;draggable = true&lt;/span&gt;&lt;/b&gt;. Con esto indicamos que el elemento puede ser arrastrado.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;ondragstart&lt;/span&gt;&lt;/b&gt;. Aquí se define la función que se llevará a cabo cuando se comience a arrastrar el elemento.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;ondragend&lt;/span&gt;&lt;/b&gt;. Aquí se define la acción que se lleva a cabo cuando se termina de arrastrar el elemento.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;span style=&quot;color: #0b5394; font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;Objetos a los que podemos arrastrar otros objetos&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;ondragenter&lt;/span&gt;&lt;/b&gt;. Aquí se define la acción que se lleva a cabo cuando un elemento arrastrable entra dentro del elemento.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;ondragover&lt;/span&gt;&lt;/b&gt;. Aquí se define la acción que se realiza cuando un elemento arrastrable está sobre el elemento. Debemos definir que tipos de objetos puedes soltarse aquí.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;ondragleave&lt;/span&gt;&lt;/b&gt;. Aquí se define la acción que se ejecuta cuando el elemento arrastrable dejar de estar encima del elemento.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;ondrop&lt;/span&gt;&lt;/b&gt;. Aquí se indica la acción que se lleva a cabo cuando se suelte el elemento arrastrable sobre el objeto contenedor.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;En el primer ejemplo tenemos dos contenedores en el que tenemos varios personajes de &lt;b&gt;Juegos de Tronos&lt;/b&gt; y los tenemos que clasificar en &lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;Buenos y Malos&lt;/span&gt;&lt;/b&gt;. El código completo lo podemos descargar de &lt;a href=&quot;https://docs.google.com/file/d/0B8CgB7wxeaiDbmtjZFAtN09OVk0/edit?usp=sharing&quot;&gt;aquí&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHWT6DEgdSLaHnF6iD8VkMWNx0K3SdKV0JQ6BIgIL6sZ3QC6_7gwutV_Jy2T1gvOUw5hj3e0Gkvtf5ZdTE5qWokbq_cju1JJVEx93fxz5UYPiO0sUJQkQ1fbnu3gdpj_HyqIaX-yz_FAs/s1600/drag1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;328&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHWT6DEgdSLaHnF6iD8VkMWNx0K3SdKV0JQ6BIgIL6sZ3QC6_7gwutV_Jy2T1gvOUw5hj3e0Gkvtf5ZdTE5qWokbq_cju1JJVEx93fxz5UYPiO0sUJQkQ1fbnu3gdpj_HyqIaX-yz_FAs/s400/drag1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Cada personaje es un enlace (&amp;lt;a&amp;gt;) y está contenido en un fieldset. Hay tres fieldset: uno para personajes, otra para los personajes buenos y otro para los malos.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Para hacer arrastrable a un personaje:&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;b&gt;&amp;nbsp;&amp;lt;a draggable=&quot;true&quot; onDragStart=&quot;dragItem(this, event)&quot; onDragEnd=&quot;dragEnd(this, event)&quot; class=&quot;item&quot; id=&quot;ES&quot;&amp;gt;Eddard Stark&amp;lt;/a&amp;gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;A continuación implementamos las acciones asociadas al drag:&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:js&quot;&gt;function dragItem(item, event) {
        event.dataTransfer.setData(&#39;Dato&#39;, item.id);
        item.style.opacity = &#39;0.3&#39;;
    }
    
    function dragEnd(item, event) {
        item.style.opacity = &#39;&#39;;        
    }
&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;En dragItem nos guardamos el id del elemento arrastrable para tenerlo disponible en el drop y aplicamos transparencia al elemento para distinguir cuando lo estamos arrastrando. En dragEnd restablecemos la opacidad del elemento.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Y por último lo que haríamos sobre el elemento al que se pueden arrastrar elementos es lo siguiente:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b style=&quot;color: #0b5394; font-family: Verdana, sans-serif; font-size: small;&quot;&gt;&amp;lt;fieldset id=&quot;buenos&quot; class=&quot;container&quot; onDrop=&quot;dropItem(this, event)&quot; onDragEnter=&quot;return false&quot; onDragOver=&quot;return false&quot;&amp;gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;En las funciones onDragEnter y onDragOver no hacemos nada. Al no hacer nada en onDragOver vamos a permitir que cualquier personaje puede arrastrarse hasta este contenedor. En la función onDrop comprobamos el fieldset al que estamos arrastrando el personaje para cambiar de color el fondo del mismo y posteriormente lo añadimos al contenedor.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js&quot;&gt;function dropItem(target, event) { 
        var dato = event.dataTransfer.getData(&#39;Dato&#39;);
        var item = document.getElementById(dato)
        if (target.id == &#39;buenos&#39;) {
         item.className = &#39;item itemBueno&#39;;
        } else if (target.id == &#39;malos&#39;) {
         item.className=&#39;item itemMalo&#39;;
        } else if (target.id == &#39;origen&#39;) {
         item.className=&#39;item&#39;;
        }
        target.appendChild(item);
    }
&lt;/pre&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;En el contenedor al que se arrastran objetos podemos establecer que actúe como una papelera o también como un clonador de objetos. Os pongo lo que habría que poner en la función dropItem para clonar objetos:&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;pre class=&quot;brush:js&quot;&gt;&lt;/pre&gt;
&lt;pre class=&quot;brush:js&quot;&gt;function dropItem(target, event) { 
        var dato = event.dataTransfer.getData(&#39;Dato&#39;);
        var item = document.getElementById(dato);   
        target.appendChild(item.cloneNode(true));
    }
&lt;/pre&gt;
&lt;pre class=&quot;brush:js&quot;&gt;&lt;/pre&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Un ejemplo con la clonación de objetos lo podéis ver &lt;a href=&quot;https://docs.google.com/file/d/0B8CgB7wxeaiDVlBmUGo2UmlyR0E/edit?usp=sharing&quot;&gt;aquí&lt;/a&gt;. Es parecido al caso anterior aunque ahora tendremos dos contenedores, uno para artículos y otro para la lista de la compra. Iremos arrastrando los artículos a la lista pero ahora no se borrarán porque podemos tener varias unidades de un mismo artículo. Las posibilidades que nos permite el Drag &amp;amp; Drop &amp;nbsp;son muy amplias y depende de nuestra imaginación el valor añadido que podamos dar a nuestro proyectos.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6Ecx_sjYSE8sVr8IU0w4qe7diKI1p3ELGoyPW6AJ4JomfFjUMM5xzrimDuI4IAzjUMP22U9aeUWvZ9z6-korM-jBsl8LE5waAwHjExMQgOHl25lIEJURnymrQQy2ctEfB1y6gKJcMcMw/s1600/drag2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;187&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6Ecx_sjYSE8sVr8IU0w4qe7diKI1p3ELGoyPW6AJ4JomfFjUMM5xzrimDuI4IAzjUMP22U9aeUWvZ9z6-korM-jBsl8LE5waAwHjExMQgOHl25lIEJURnymrQQy2ctEfB1y6gKJcMcMw/s400/drag2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Por último hemos visto en el primer ejemplo hay dos botones con los que podemos consultar los personajes que hemos arrastrado tanto a buenos como a malos. Para ellos utilizamos las nuevas funciones de HTML5 para acceder al árbol DOM. En nuestro caso utilizamos la función querySelectorAll para recuperar los elementos de tipo &amp;lt;a&amp;gt; dentro de un fieldset concreto. &amp;nbsp;Aquí tenéis un ejemplo para recuperar los personajes buenos:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;pre class=&quot;brush:js&quot;&gt; function verBuenos(){
  var buenos = document.querySelectorAll(&#39;#buenos a&#39;);
  for (var i=0; i &amp;lt; buenos.length; i++) {
   alert(buenos[i].innerHTML);
  }
    }
&lt;/pre&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Espero que os sea útil.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;Salu2.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/2388153201641530748/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2013/07/html5-drag-drop-nativo.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/2388153201641530748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/2388153201641530748'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2013/07/html5-drag-drop-nativo.html' title='HTML5:  DRAG &amp; DROP NATIVO'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHWT6DEgdSLaHnF6iD8VkMWNx0K3SdKV0JQ6BIgIL6sZ3QC6_7gwutV_Jy2T1gvOUw5hj3e0Gkvtf5ZdTE5qWokbq_cju1JJVEx93fxz5UYPiO0sUJQkQ1fbnu3gdpj_HyqIaX-yz_FAs/s72-c/drag1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-8920618990558555535</id><published>2013-07-23T13:15:00.000+02:00</published><updated>2013-07-23T13:15:28.385+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Frases"/><category scheme="http://www.blogger.com/atom/ns#" term="Humor"/><title type='text'>FRASES CELEBRES Y JUEGO DE TRONOS</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Hoy he hecho un mix con frases célebres que perfectamente podían haber dicho los personajes de Juego de Tronos si existieran en realidad. No leáis si no habéis visto la serie porque pueden contener spoilers.... Podéis continuar las frases en los comentarios, seguro que se os ocurren frases mucho más ingeniosas. Sólo apto para fan de la serie.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidxapP3EXHTiRZzoNXgpz6l1h0GIcyPMLu1-kPhTVvZfCxD3553KZsS6Baom2fVpBIM8vFo5uM1dNzJrGumW4BSfH8nYRojDe08iX2GJKD6n-jyx45yTQgkLs-JdA9yh50KQkxawlEmws/s1600/eddard.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;224&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidxapP3EXHTiRZzoNXgpz6l1h0GIcyPMLu1-kPhTVvZfCxD3553KZsS6Baom2fVpBIM8vFo5uM1dNzJrGumW4BSfH8nYRojDe08iX2GJKD6n-jyx45yTQgkLs-JdA9yh50KQkxawlEmws/s400/eddard.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;b&gt; No se trata de ser el primero, sino de llegar con todos y a tiempo&lt;/b&gt;,&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;Twyin Lannister&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Cada persona forja su propia grandeza,&amp;nbsp;Veo los peligros de la vida presente; peligro en el mar, peligro en la tierra y peligro en los falsos hermanos,&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;Tyrion Lannister&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Antes de negar con la cabeza, asegúrate de que la tienes&lt;/b&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;Eddard Stark&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;No considero nada vergonzoso honrar a los hermanos&lt;/b&gt; , &lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;Cersei Lannister&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white; font-family: Helvetica, sans-serif; font-size: 16px;&quot;&gt;&lt;b style=&quot;color: #222222;&quot;&gt;Tener hijos no lo convierte a uno en padre, del mismo modo en que tener un piano no lo vuelve pianista,&lt;/b&gt;&lt;span style=&quot;color: #222222;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;Walder Frey&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white; font-family: Helvetica, sans-serif; font-size: 16px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhb93KcFYWH7bkD7SBi02G00zl0wSORBqFqgdlX885jwbsoQMbe0opD8yhZLFxfkqDsgvhQB4z7ls5cT_WtSR_b0ZU1WGUc9_b8BHjgWLf47iou03xzsXWZ7poKybLHGHobbubX20p-RbU/s1600/joffrey.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;301&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhb93KcFYWH7bkD7SBi02G00zl0wSORBqFqgdlX885jwbsoQMbe0opD8yhZLFxfkqDsgvhQB4z7ls5cT_WtSR_b0ZU1WGUc9_b8BHjgWLf47iou03xzsXWZ7poKybLHGHobbubX20p-RbU/s320/joffrey.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white; font-family: Helvetica, sans-serif; font-size: 16px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white; color: #222222; font-family: Helvetica, sans-serif; font-size: 16px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b style=&quot;color: #222222;&quot;&gt;Yo también tengo amigos mas falsos que billetes con decimales&lt;/b&gt;&lt;span style=&quot;color: #222222;&quot;&gt;, &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;Robb Stark&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white; color: #222222;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;No dejes de beber hoy lo que no puedas beber mañana,&amp;nbsp;&lt;span style=&quot;color: #0b5394;&quot;&gt;Rey Robert&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Yo no digo mentiras sino verdades distorsionadas&lt;/b&gt;, &lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;Peter Baelish&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #0b5394; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3uDRW6pnm4wOqSxVKBjgmG319GEAfcjI2LHZwiz_H2V1u3tDT8GiHM3WF0UJi9zXD6w8zlE4dYWZPfo_6GIzNcbbVBLom5fMPAUndLWFqNJ6IVAU590lTrpdms7sqQXRP68f2cMrIrUo/s1600/tyrion.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;299&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3uDRW6pnm4wOqSxVKBjgmG319GEAfcjI2LHZwiz_H2V1u3tDT8GiHM3WF0UJi9zXD6w8zlE4dYWZPfo_6GIzNcbbVBLom5fMPAUndLWFqNJ6IVAU590lTrpdms7sqQXRP68f2cMrIrUo/s400/tyrion.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #0b5394; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;El ego es como tu perro. El perro tiene que seguir al amo y no el amo al perro. Hay que hacer que el perro te siga. No hay que matarlo, sino que domarlo,&lt;/b&gt;&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;Principe joffrey&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;Salu2.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/8920618990558555535/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2013/07/frases-celebres-y-juego-de-tronos.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/8920618990558555535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/8920618990558555535'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2013/07/frases-celebres-y-juego-de-tronos.html' title='FRASES CELEBRES Y JUEGO DE TRONOS'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidxapP3EXHTiRZzoNXgpz6l1h0GIcyPMLu1-kPhTVvZfCxD3553KZsS6Baom2fVpBIM8vFo5uM1dNzJrGumW4BSfH8nYRojDe08iX2GJKD6n-jyx45yTQgkLs-JdA9yh50KQkxawlEmws/s72-c/eddard.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-8657026263237645348</id><published>2013-07-19T16:39:00.000+02:00</published><updated>2013-07-19T16:40:52.945+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ejemplos"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="JUnit4"/><category scheme="http://www.blogger.com/atom/ns#" term="Selenium"/><category scheme="http://www.blogger.com/atom/ns#" term="TestNG"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial"/><title type='text'>TUTORIAL TESTNG: FRAMEWORK PARA TUS TESTS</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://testng.org/doc/book.html&quot;&gt;TestNG (Next Generation)&lt;/a&gt; es un framework de testing inspirado en &lt;b&gt;JUnit &lt;/b&gt;y &lt;b&gt;NUnit &lt;/b&gt;pero &lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;introduciendo nuevas caractarísticas como los test de dependencia y el concepto de grouping&lt;/span&gt;&lt;/b&gt;. Su uso nos permite realizar todas las categorías de test como pruebas unitarias, de integración, end-to-end, pruebas funcionales, etc...&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbuM0r3dwcROApY20rHImwFe38cw4H0S4FHgfM8Hi9qR1Lc6Pqj0qQ3qCUa-KkzSMhkbnO0YZRdj5zURK7NIbZrG_yZLhptdRxi4l9sxCrtvuLPUSI4Kn7gEsvGMZf6hSBHjWNmY9kA-o/s1600/book-cover.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbuM0r3dwcROApY20rHImwFe38cw4H0S4FHgfM8Hi9qR1Lc6Pqj0qQ3qCUa-KkzSMhkbnO0YZRdj5zURK7NIbZrG_yZLhptdRxi4l9sxCrtvuLPUSI4Kn7gEsvGMZf6hSBHjWNmY9kA-o/s320/book-cover.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Instalación en Eclipse&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Instalar el plugin de TestNG para Eclipse es sencillo. En mi caso es Eclipse JUNO y únicamente para instalarlo lo único que tenemos que hacer es buscarlo con la herramienta &lt;b&gt;Eclipse MarketPlace&lt;/b&gt; y pulsar el botón de Install.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgss3cINj520g9Q3T7KseHHk1SDY1tS2nz94zirNqCQXxZtKy9UFnjDVYJ04g0ene0QFxr6g7dJiyfx7cWu7_O0OPW0iT6X4TE05AmEO-Dhjlo3j45qME89ph0yoElaektCPl33PNVdxWo/s1600/testng2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;210&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgss3cINj520g9Q3T7KseHHk1SDY1tS2nz94zirNqCQXxZtKy9UFnjDVYJ04g0ene0QFxr6g7dJiyfx7cWu7_O0OPW0iT6X4TE05AmEO-Dhjlo3j45qME89ph0yoElaektCPl33PNVdxWo/s400/testng2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Crear una clase para nuestros test con TestNG es igualmente sencillo. En nuestro proyecto creamos una nueva clase TestNG. Pulsamos NEXT y después seleccionamos las anotaciones que deseamos que aparezcan en nuestra clase:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD5b19MKFxy4LkmPcfVQfYOzupalDj4YzNMj-H7TMg7gKcB0TmVEsmYF40KWVSeshPCoV6M8MTldIf6aIfcapa54-d7yUeEx45cMhKUheRyJVRYA2mm0oHGQtSXvYnhGPpGszmiSlJUqw/s1600/testng3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD5b19MKFxy4LkmPcfVQfYOzupalDj4YzNMj-H7TMg7gKcB0TmVEsmYF40KWVSeshPCoV6M8MTldIf6aIfcapa54-d7yUeEx45cMhKUheRyJVRYA2mm0oHGQtSXvYnhGPpGszmiSlJUqw/s1600/testng3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeHBnuHylboDqIy9evNQ9eDu_XjufryOTNWu5DoJUv14GXkvy4A4kLXQAcOeqlkGvkR8bmkw7Wrv96UzMcTyq5gKYUIQh-zpFdXne5cBRSBBDOkPZm1iHVTPCsWHd4amRfcLvSGSz8mOk/s1600/testng4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeHBnuHylboDqIy9evNQ9eDu_XjufryOTNWu5DoJUv14GXkvy4A4kLXQAcOeqlkGvkR8bmkw7Wrv96UzMcTyq5gKYUIQh-zpFdXne5cBRSBBDOkPZm1iHVTPCsWHd4amRfcLvSGSz8mOk/s320/testng4.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Cuando creamos nuestra clase TestNG nos dará fallos en las anotaciones. Esto es porque debemos incluir en nuestro proyecto las librerías del framework. Para ello pulsamos sobre las Properties de nuestro proyecto y en Java Build Path añadimos la librería de TestNG.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj96y2tLMFMrx-jXfH3BeQ-bbwuDRVnZC4WeC04jmzCknZdzwaoHxaFFUft45GrzRy4XkLg80xKhs5NHDfQs0C2klIXzjmWiAVuPEyOBBb3Fnwso7RXLMy46cvZp-Dpz7YZCtifOJWBXBA/s1600/testng5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;309&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj96y2tLMFMrx-jXfH3BeQ-bbwuDRVnZC4WeC04jmzCknZdzwaoHxaFFUft45GrzRy4XkLg80xKhs5NHDfQs0C2klIXzjmWiAVuPEyOBBb3Fnwso7RXLMy46cvZp-Dpz7YZCtifOJWBXBA/s320/testng5.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Ejemplo con anotaciones básicas&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;A continuación repasamos las anotaciones básicas y un ejemplo con su resultado:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;@BeforeClass&lt;/span&gt;&lt;/b&gt;. Código ejecutado antes de ejecutar los test. Aquí se podría inicializar por ejemplo alguna fuente de datos para utilizarla en nuestros test.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;@AfterClass&lt;/span&gt;&lt;/b&gt;. Código ejecutado después de ejecutar todos nuestros test. Aquí se podrían cerrar todos los recursos que hemos abierto en el código bajo la etiqueta @BeforeClass.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;@BeforeMethod&lt;/span&gt;&lt;/b&gt;. Código ejecutado antes de cada test.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;@AfterMethod&lt;/span&gt;&lt;/b&gt;. Código ejecutado después de cada test.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;@Test&lt;/span&gt;&lt;/b&gt;. Indica que el método es un test.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Un ejemplo:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:java&quot;&gt;package es.jpascu.testng;

import java.util.ArrayList;
import java.util.Collection;

import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class TestNGBasic {
 private Collection&lt;string&gt; collection;

 @BeforeClass
 public void oneTimeSetUp() {
  // one-time initialization code
  System.out.println(&quot;@BeforeClass - oneTimeSetUp&quot;);
 }

 @AfterClass
 public void oneTimeTearDown() {
  // one-time cleanup code
  System.out.println(&quot;@AfterClass - oneTimeTearDown&quot;);
 }

 @BeforeMethod
 public void setUp() {
  collection = new ArrayList&lt;string&gt;();
  System.out.println(&quot;@BeforeMethod - setUp&quot;);
 }

 @AfterMethod
 public void tearDown() {
  collection.clear();
  System.out.println(&quot;@AfterMethod - tearDown&quot;);
 }

 @Test
 public void testEmptyCollection() {
  Assert.assertEquals(collection.isEmpty(), true);
  System.out.println(&quot;@Test - testEmptyCollection&quot;);
 }

 @Test
 public void testOneItemCollection() {
  collection.add(&quot;itemA&quot;);
  Assert.assertEquals(collection.size(), 1);
  System.out.println(&quot;@Test - testOneItemCollection&quot;);
 }

}

&lt;/string&gt;&lt;/string&gt;&lt;/pre&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Ejemplo con características avanzadas&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;En este ejemplo añadimos otros ejemplos de características avanzadas que se se pueden utilizar en nuestros tests con TestNG:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;@Test(expectedExceptions=TipoException.class)&lt;/span&gt;&lt;/b&gt;. El test unitario pasa aunque en el test se lanza la excepción de tipo TipoException.class.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;@Test(enabled=false)&lt;/span&gt;&lt;/b&gt;. El test unitario no se ejecuta.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;@Test(timeout=1000)&lt;/span&gt;&lt;/b&gt;. Si tarda más de 1 segundo el test unitario pasará como FAILED, pero nos aseguramos que finalice su ejecución.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Un ejemplo:&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: Java&quot;&gt;package es.jpascu.testng;

import org.testng.annotations.Test;

public class TestNGAdvanced {

 @Test(expectedExceptions = NullPointerException.class)
 public void testException() {
  String s = null;
  s.charAt(0);
 }

 @Test(enabled = false)
 public void testIgnore() {
  System.out.println(&quot;Esto no se ejecuta!!&quot;);
 }

 @Test(timeOut = 1000)
 public void testBucleInfinito() {
  while (true)
   ;
 }

}&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Ejemplo con parámetros básicos y complejos&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Podemos definir una &lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;suite&lt;/span&gt;&lt;/b&gt;, que es un XML en el que entre otras cosas se pueden definir varios clases de test que se ejecuten juntas. Además podemos definir parámetros simples (int, float) como objetos complejos (ArrayList, String, etc..).&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Primero vemos un ejemplo en el que se define un parámetro de tipo int en el &lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;suite.xml&lt;/span&gt;&lt;/b&gt; que estará disponible en la ejecución de nuestras clases de test. Para definirlo en nuestro test se emplea la anotacion&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt; @Parameters&lt;/span&gt;&lt;/b&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:Java&quot;&gt;package es.jpascu.testng;

import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class TestNGBasicParameter {
  @Test
  @Parameters(value=&quot;number&quot;)
  public void testWithBasicParameter(int number) {
   System.out.println(&quot;El valor del paámetro es: &quot; + number);
  }
}
&lt;/pre&gt;
&lt;br /&gt;
&lt;pre 1.0=&quot;&quot; class=&quot;brush:xml&amp;gt;&amp;lt;?xml version=&quot; encoding=&quot;UTF-8&quot;&gt;&lt;suite name=&quot;Suite&quot;&gt;
  &lt;test name=&quot;Test&quot;&gt;
   &lt;parameter name=&quot;number&quot; value=&quot;1&quot;&gt;  
 
    &lt;classes&gt;
       &lt;class name=&quot;es.jpascu.testng.TestNGBasicParameter&quot;&gt;
    &lt;/class&gt;&lt;/classes&gt;
  &lt;/parameter&gt;&lt;/test&gt; &lt;!-- Test --&gt;
&lt;/suite&gt; &lt;!-- Suite --&gt;
&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Ahora vemos como TestNG gestiona el paso de parámetros complejos. Para ello se utiliza la anotación &lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;@DataProvider&lt;/span&gt;&lt;/b&gt;. En el ejemplo vemos como se pasan tipos complejos como colecciones.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:Java&quot;&gt;package es.jpascu.testng;

import java.util.ArrayList;

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class TestNGComplexParameter_1 {
 @Test(dataProvider = &quot;dp&quot;)
 public void parameterArrayListInTest(ArrayList&lt;string&gt; list) {
    System.out.println(&quot;Primer Elemento Lista : &quot; + list.get(0));
    System.out.println(&quot;Segundo Elemento Lista : &quot; + list.get(1));
 }
 
 //This function will provide the parameter data
 @DataProvider(name = &quot;dp&quot;)
 public Object[][] parameterIntTestProvider() {
  ArrayList&lt;string&gt; lista = new ArrayList&lt;string&gt;();
  lista.add(&quot;1&quot;);
  lista.add(&quot;2&quot;);
  return new Object[][]{
    
     {lista}
        };
 }
}

&lt;/string&gt;&lt;/string&gt;&lt;/string&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;En este otro ejemplo vemos como se pasa un POJO como parámetro:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;package es.jpascu.testng;

public class Pojo {
 private int numero;
 
 private String mensaje;

 public Pojo(int numero, String mensaje) {
  super();
  this.numero = numero;
  this.mensaje = mensaje;
 }

 public int getNumero() {
  return numero;
 }

 public void setNumero(int numero) {
  this.numero = numero;
 }

 public String getMensaje() {
  return mensaje;
 }

 public void setMensaje(String mensaje) {
  this.mensaje = mensaje;
 }
 
 
}
&lt;/pre&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;package es.jpascu.testng;

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class TestNGPojoParameter_1 {
 @Test(dataProvider = &quot;dp&quot;)
 public void parameterPojoListInTest(Pojo obj) {
    System.out.println(&quot;Pojo - numero : &quot; + obj.getNumero());
    System.out.println(&quot;Pojo - mensaje : &quot; + obj.getMensaje());
 }
 
 //This function will provide the parameter data
 @DataProvider(name = &quot;dp&quot;)
 public Object[][] parameterPojoTestProvider() {
  Pojo pojo = new Pojo(1, &quot;Hola&quot;);
  
  return new Object[][]{
    
     {pojo}
        };
 }
}

&lt;/pre&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Concepto de grouping&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;En este apartado vemos un ejemplo del concepto de &lt;b&gt;grouping &lt;/b&gt;que no existe en JUnit 4. Por ejemplo, imaginemos que tenemos una clase de test en la que probamos operaciones a LDAP y a bases de datos. Podemos ejecutar los test agrupados por su funcionalidad, en nuestro caso, LDAP y BBDD. Si queremos ejecutar sólo los test relacionados con LDAP haríamos lo siguiente:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:Java&quot;&gt;package es.jpascu.testng;

import org.testng.annotations.Test;

public class TestConnection {

 @Test(groups=&quot;ldap&quot;)
 public void testLDAP_OP1() {
  System.out.println(&quot;Method - testLDAP_OP1&quot;);
 }

 @Test(groups=&quot;ldap&quot;)
 public void testLDAP_OP2() {
  System.out.println(&quot;Method - testLDAP_OP1&quot;);
 }

 @Test(groups=&quot;bbdd&quot;)
 public void testBBDD_Oracle() {
  System.out.println(&quot;Method - testBBDD_Oracle&quot;);
 }

 @Test(groups=&quot;bbdd&quot;)
 public void testBBDD_SQLServer() {
  System.out.println(&quot;Method - testBBDD_SQLServer&quot;);
 }
}
&lt;/pre&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:xml&quot;&gt;&lt;suite name=&quot;My test suite&quot;&gt;
&lt;test name=&quot;testing&quot;&gt;&lt;groups&gt;
      &lt;run&gt;
        &lt;include name=&quot;ldap&quot;&gt;
      &lt;/include&gt;&lt;/run&gt;
    &lt;/groups&gt;
    &lt;classes&gt;
        &lt;class name=&quot;es.jpascu.testng.TestConnection&quot;&gt;
    &lt;/class&gt;&lt;/classes&gt;
  &lt;/test&gt;
&lt;/suite&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Test Dependientes&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Otro concepto que añade TestNG son los &amp;nbsp;test dependientes. Podemos definir en nuestras clases de test que un método de test determinado dependa de uno o varios métodos de test. Para ello utlizamos el atributo dependsOnMethod.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Aquí os pongo un ejemplo en el que nuestro testA depende del testB y el testC.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;package es.jpascu.testng;

import org.testng.annotations.Test;

public class TestNGDepends {

 @Test(dependsOnMethods={&quot;testB&quot;,&quot;testC&quot;})
 public void testA() {
  System.out.println(&quot;testA&quot;);
 }

 @Test
 public void testB() {
  System.out.println(&quot;testB&quot;);
 }

 @Test
 public void testC() {
  System.out.println(&quot;testC&quot;);
 }

}&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Conclusiones. JUnit4 vs TestNG.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Por último os pongo una tabla comparativa entre JUnit4 y TestNG para observar la funcionalidad que cubre cada uno de los dos frameworks:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjyYEhJSijhg0C0a82-pbZHgfEmO2hy25pYgSF-2zQRehCHKG16wIdeEPyWkBEmMV1o3SIM29WSOBH8THAcIwhqRyw0aI5AjZbXa_jM1xZYp1Gcxmzn2THVAArbaiqHzDv_H5cCYPeDq4/s1600/junit-vs-testngjpg.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;172&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjyYEhJSijhg0C0a82-pbZHgfEmO2hy25pYgSF-2zQRehCHKG16wIdeEPyWkBEmMV1o3SIM29WSOBH8THAcIwhqRyw0aI5AjZbXa_jM1xZYp1Gcxmzn2THVAArbaiqHzDv_H5cCYPeDq4/s640/junit-vs-testngjpg.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;TestNG es superior en los test de grupo, en parametrización de objetos complejos y en los test de dependencia además de cubrir todas las funcionalidades de JUnit 4&lt;/span&gt;&lt;/b&gt;.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Otro punto a su favor es que para ejecutar varios ficheros de test juntos (Suite Test) se realiza mediante la definición de un fichero XML y no mediante anotaciones en una clase Java como se hace en JUnit 4. Además se puede integrar perfectamente con herramientas tan utilizadas como Maven o Selenium.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;En general se puede recomendar la utilización de este framework en lugar de JUnit 4 ya que cubre toda la funcionalidad de este último, es más flexible y añade nuevas capacidades.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Salu2.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Fuente&lt;/b&gt;: &lt;a href=&quot;http://www.mkyong.com/tutorials/testng-tutorials/&quot;&gt;mkyong&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/8657026263237645348/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2013/07/tutorial-testng-framework-para-tus-tests.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/8657026263237645348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/8657026263237645348'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2013/07/tutorial-testng-framework-para-tus-tests.html' title='TUTORIAL TESTNG: FRAMEWORK PARA TUS TESTS'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbuM0r3dwcROApY20rHImwFe38cw4H0S4FHgfM8Hi9qR1Lc6Pqj0qQ3qCUa-KkzSMhkbnO0YZRdj5zURK7NIbZrG_yZLhptdRxi4l9sxCrtvuLPUSI4Kn7gEsvGMZf6hSBHjWNmY9kA-o/s72-c/book-cover.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-7090477361276105765</id><published>2013-07-17T12:05:00.001+02:00</published><updated>2013-07-17T12:06:57.548+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cookies"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML5"/><category scheme="http://www.blogger.com/atom/ns#" term="Local Storage"/><category scheme="http://www.blogger.com/atom/ns#" term="Session Storage"/><category scheme="http://www.blogger.com/atom/ns#" term="Storage"/><title type='text'>HTML5: LOCALSTORAGE VS SESSIONSTORAGE</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;HTML5 &lt;/b&gt;está muy de moda. Muchas ofertas de empleo tienen como requisito indispensable conocer HTML5 para el desarrollo del front-end de aplicaciones. Muchas navegadores soportan en mayor o menor grado sus características:&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt; nuevas etiquetas, nuevos componentes para formularios, soporte para drag&amp;amp;drop nativo, geolocalización, soporte para contenido multimedia, web workers, web sockets, almacenamiento local...&lt;/span&gt;&lt;/b&gt; Es de esto último de lo que hablaremos en el post, explicando para que sirve, los tipos de almacenamiento local y un ejemplo de uso.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Cookies 2.0. Almacenamiento de datos en cliente.&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Las aplicaciones web han utilizado las cookies para almacenar datos de cliente en el navegador. Pero éstas contaban con una serie de problemas:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Las cookies se mandaban con la petición HTTP una y otra vez, lo que hacia la comunicación cliente-servidor más lenta además de que siempre no era necesario.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Suponían un problema de seguridad si nuestra aplicación no corría sobre protocolos seguros como SSL.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;La limitación de almacenamiento de datos, sólo podíamos guardar 4KB lo que a veces podía ser insuficiente.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Con el almacenamiento local de HTML5 que algunos llaman Cookies 2.0 superamos todas estas limitaciones:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Posibilidad de almacenar gran cantidad de datos (normalmente 5MB), lo que nos permite trabajar con una aplicación web como si fuera una aplicación de escritorio offline.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;No se transmite con cada petición HTTP al servidor.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Tipos de almacenamiento local&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Hay dos tipos de almacenamiento local que implementan la&amp;nbsp;&lt;a href=&quot;http://dev.w3.org/html5/webstorage/#storage-0&quot;&gt;interface Storage&lt;/a&gt;:&lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt; Local Storage y Session Storage&lt;/span&gt;&lt;/b&gt;.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Los dos son métodos accesibles desde el objeto window. La diferencia es que Session Storage actúa sobre la sesión de un cliente, por lo que cuando el usuario cierra la ventana del navegador desaparecen los datos guardados. Con Local Storage los datos persisten aunque se cierre la ventana del navegador.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;La interfaz &lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;Storage &lt;/span&gt;&lt;/b&gt;define una serie de atributos y métodos con los que se pueden guardar, borrar y recuperar datos:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;getItem(key):&lt;/span&gt;&lt;/b&gt; devuelve un string con el valor del elemento con clave key.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;setItem(key, value)&lt;/span&gt;&lt;/b&gt;: almacena un valor (value) referenciado por una clave (key).&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;removeItem(key):&lt;/span&gt;&lt;/b&gt; elimina el par clave/valor con clave igual a key.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;length&lt;/span&gt;&lt;/b&gt;: atributo que contiene el número de elementos (pares clave/valor) almacenados.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;key(index)&lt;/span&gt;&lt;/b&gt;: devuelve un string con la clave (no el valor) del elemento que ocupe la posición index dentro de la colección de datos.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;clear():&lt;/span&gt;&lt;/b&gt; elimina todos los elementos.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Además podemos registrar un listener (storage) para saber cuando se ha modificado el valor de una clave y realizar una acción al respecto.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Ejemplo de uso.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;He hecho un página HTML en la que se pueden ver las diferencias entre el local storage y el session storage y su uso trivial. Para comprobar que tu navegador tiene compatibilidad con Local Storage y Session Storage utilizamos la siguiente función:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: js&quot;&gt;function compruebaCompatibilidad() {
  if (window.sessionStorage &amp;amp;&amp;amp; window.localStorage) {
   alert(&#39;Tu navegador acepta almacenamiento local&#39;);
  } else {
   alert(&#39;Lo siento, pero tu navegador no acepta almacenamiento local&#39;);
  }
 }
&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Para obtener un valor del Local Storage se utiliza el siguiente código:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js&quot;&gt;localStorage.getItem(&#39;DATOL&#39;)
&lt;/pre&gt;
&lt;pre class=&quot;brush:js&quot;&gt;&lt;/pre&gt;
&lt;pre class=&quot;brush:js&quot;&gt;&lt;/pre&gt;
&lt;pre class=&quot;brush:js&quot;&gt;&lt;/pre&gt;
&lt;pre class=&quot;brush:js&quot;&gt;&lt;/pre&gt;
&lt;pre class=&quot;brush:js&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Para establecer un valor en el Local Storage se utiliza el siguiente código:&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;brush:js&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;brush:js&quot;&gt;&lt;/pre&gt;
&lt;pre class=&quot;brush: js&quot;&gt; localStorage.setItem(&quot;DATOL&quot;,  $(&quot;#valueL&quot;).val());
&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Para borrar todos los datos del Local Storage se utiliza el siguiente código:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: js&quot;&gt;localStorage.clear();
&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Para borrar un dato del Local Storage se utiliza el siguiente código:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush :js&quot;&gt;localStorage.removeItem(&quot;DATOL&quot;);
&lt;/pre&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;El código completo lo podéis descargar &lt;a href=&quot;https://docs.google.com/file/d/0B8CgB7wxeaiDVWVwTlB1UUFrQ0U/edit?usp=sharing&quot;&gt;aquí&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;En el ejemplo podemos almacenar el valor de una variable en el Local Storage (DATOL) y en la Session Storage (DATOS). También podemos comprobar la compatibilidad con nuestro navegador y borrar todas las variables almacenadas en el Local Storage y en el Session Storage.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8dF-rUK-RBZ8ulGS72NSt3IFcFoRR_S5NvDK4TOrq0fk-Z_BH2A5NpdCAiIUMUY7MrrihD9i0t7wPZzPTQqi5P24U0yLqUBciWG5lXviE1XfNeAeHy0PythIUbLmFsmFbKpp884FrF0A/s1600/sto1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;244&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8dF-rUK-RBZ8ulGS72NSt3IFcFoRR_S5NvDK4TOrq0fk-Z_BH2A5NpdCAiIUMUY7MrrihD9i0t7wPZzPTQqi5P24U0yLqUBciWG5lXviE1XfNeAeHy0PythIUbLmFsmFbKpp884FrF0A/s640/sto1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Con Google Chrome (imagino que también con otros navegadores) podemos ver el contenido del Local Storage y Session Storage si pulsamos &lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;Herramientas &amp;gt; Consola Javascript &amp;gt; Resources&lt;/span&gt;&lt;/b&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqxqlSb43wnU32DClDqsKSo8C0TbG98auU8832alWwRShNEVOqpS725dFRW0aiMpoZ6SGKgJO_CVwVU5aCjaJ5ng93Qyufwjt9qev6yfuTOP94bpHOrLlAVvGV7DcnJcBdk2aGEAlK7jw/s1600/sto2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;124&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqxqlSb43wnU32DClDqsKSo8C0TbG98auU8832alWwRShNEVOqpS725dFRW0aiMpoZ6SGKgJO_CVwVU5aCjaJ5ng93Qyufwjt9qev6yfuTOP94bpHOrLlAVvGV7DcnJcBdk2aGEAlK7jw/s640/sto2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Si guardamos un valor en el Local Storage y otro en el Session Storage y cerramos nuestra ventana en el navegador cuando la abramos de nuevo sólo aparecerá la variable del Local Storage (en la ventana de ejemplo se recargan las variables si existen en cada uno de los Storage).&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Espero que os haya servido.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;color: #0b5394; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Salu2.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/7090477361276105765/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2013/07/html5-localstorage-vs-sessionstorage.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/7090477361276105765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/7090477361276105765'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2013/07/html5-localstorage-vs-sessionstorage.html' title='HTML5: LOCALSTORAGE VS SESSIONSTORAGE'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8dF-rUK-RBZ8ulGS72NSt3IFcFoRR_S5NvDK4TOrq0fk-Z_BH2A5NpdCAiIUMUY7MrrihD9i0t7wPZzPTQqi5P24U0yLqUBciWG5lXviE1XfNeAeHy0PythIUbLmFsmFbKpp884FrF0A/s72-c/sto1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-7447913736869984028</id><published>2013-04-18T14:10:00.000+02:00</published><updated>2013-04-18T14:12:17.814+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Humor"/><category scheme="http://www.blogger.com/atom/ns#" term="Idiomas"/><category scheme="http://www.blogger.com/atom/ns#" term="Timothy Doner"/><category scheme="http://www.blogger.com/atom/ns#" term="Videos"/><title type='text'>¿POR QUÉ NO HABLAS CASTELLANO?</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Hoy estaba navegando por la red y debo decir que una noticia me ha sorprendido. El joven neoyorquino&lt;b&gt; Timothy Doner&lt;/b&gt; ha colgado un video en Youtube &lt;b&gt;hablando en más de 20 idiomas&lt;/b&gt;. Y no diciendo las típicas frases de las galletas de los chinos, no, hablando más o menos fluidamente en cada uno de ellos.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;Más sorprendente si cabe es que tan sólo tiene 17 años y que ha aprendido todos los idiomas en un plazo de 4 años&lt;/span&gt;&lt;/b&gt;. No recuerdo lo que hacía a esa edad pero seguro que no estaba aprendiendo ruso ni tampoco persa. Quizá me sorprenda tanto porque la capacidad para aprender idiomas no está entre mis grandes virtudes y si entre entre mis asignaturas pendientes. O quizá es que vivo en España y estamos un pelín por debajo en hablar idiomas respecto a otros países...&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;El caso es que &lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;demuestra su capacidad políglota durante 15 minutos con&amp;nbsp;francés, suajili, hausa, wolof, ruso, alemán, yidish, hebrero, árabe, pastún, persa, chino mandarín, italiano, turco, indonesio, holandés, xhosa, ojibwa o hindi&lt;/span&gt;&lt;/b&gt;. Pero este portento de los idiomas &lt;b&gt;NO HABLA CASTELLANO!!!.&lt;/b&gt; Parafraseando a un portugúes famoso... ¿POR QUÉ? ¿POR QUÉ?&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX6CvE9rEIi8Jmnp76M9S-eHyhyAet_z6a1CNN0MHLE3L0WAvIxd9-H8HnoFVeMKMuQKEJBRo1HP65dux0Tj6RWoyHLXCoAVCD1Upafn0T2TrlSnOexnrGXdosOrmKaVs4cA_y8xN9quY/s1600/mourinho2005.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX6CvE9rEIi8Jmnp76M9S-eHyhyAet_z6a1CNN0MHLE3L0WAvIxd9-H8HnoFVeMKMuQKEJBRo1HP65dux0Tj6RWoyHLXCoAVCD1Upafn0T2TrlSnOexnrGXdosOrmKaVs4cA_y8xN9quY/s1600/mourinho2005.jpg&quot; height=&quot;296&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Aquí os dejo el &lt;b&gt;video&lt;/b&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/FOiXtWcQ8GI?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/7447913736869984028/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2013/04/por-que-no-hablas-castellano.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/7447913736869984028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/7447913736869984028'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2013/04/por-que-no-hablas-castellano.html' title='¿POR QUÉ NO HABLAS CASTELLANO?'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX6CvE9rEIi8Jmnp76M9S-eHyhyAet_z6a1CNN0MHLE3L0WAvIxd9-H8HnoFVeMKMuQKEJBRo1HP65dux0Tj6RWoyHLXCoAVCD1Upafn0T2TrlSnOexnrGXdosOrmKaVs4cA_y8xN9quY/s72-c/mourinho2005.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-6026212023361628805</id><published>2013-03-26T19:40:00.001+01:00</published><updated>2013-03-26T19:40:11.202+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ejemplos"/><category scheme="http://www.blogger.com/atom/ns#" term="FreeMarker"/><category scheme="http://www.blogger.com/atom/ns#" term="Motores de Plantillas"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutoriales"/><category scheme="http://www.blogger.com/atom/ns#" term="Velocity"/><title type='text'>FREEMARKER VS VELOCITY</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Hoy nos ponemos en faena para comparar dos conocidos motores de plantillas: &lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;FreeMarker &lt;/span&gt;&lt;/b&gt;y &lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;Velocity&lt;/span&gt;&lt;/b&gt;. Veremos las ventajas de utilizar uno contra otro y como siempre un ejemplo sencillo de cada uno de los motores con Eclipse y Java. Vosotros decidiréis cual utilizar para vuestro proyecto en cuestión.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Utilizando tanto un motor como el otro podremos realizar nuestras vistas o informes dinámicos mediante plantillas pasando los datos mediante un programa en Java (puede incluso utilizarse para sustituir a las JSPs). También nos permitirán generar salidas para diferentes formatos de archivo: HTML, RTF, XML, etc... y ser &amp;nbsp;integrados en aplicaciones web dependientes de un servidor como en aplicaciones &#39;standalone&#39;.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyUM1iY0kQaWOnwTYhC0ydtpb-6MAjD9KoOyG-Gpy9bmh2yU5viyr4vhOeY0hrjrto8xGBcha7KOWEBZgrYx1ezOygDXRJVa_eCDCi3dbwFeefCOYArC6LSppdTIaTEvYX9_5Mjy1YhDI/s1600/velocity.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyUM1iY0kQaWOnwTYhC0ydtpb-6MAjD9KoOyG-Gpy9bmh2yU5viyr4vhOeY0hrjrto8xGBcha7KOWEBZgrYx1ezOygDXRJVa_eCDCi3dbwFeefCOYArC6LSppdTIaTEvYX9_5Mjy1YhDI/s400/velocity.jpg&quot; height=&quot;400&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Verdana, sans-serif; font-size: xx-small;&quot;&gt;&lt;b&gt;Imagen: &lt;a href=&quot;http://memegenerator.net/instance/32843845&quot;&gt;memegenerator&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Velocity vs FreeMarker&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;Velocity &lt;/span&gt;&lt;/b&gt;es un &lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;motor más simple&lt;/span&gt;&lt;/b&gt;, sin embargo, con &lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;FreeMarker se pueden realizar algunas tareas que con Velocity es imposible de realizar&lt;/span&gt;&lt;/b&gt;, además de tener un &lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;lenguaje de plantillas más potente&lt;/span&gt;&lt;/b&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;Algunas tareas complejas comunes a muchas aplicaciones están implementadas en el core de FreeMarker&lt;/span&gt;&lt;/b&gt;, sin embargo, en Velocity no es así y deberemos utilizar soluciones como añadir objetos java a nuestras plantillas (lo que viola la idea del patron MVC de no incluir código en nuestras vistas).&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;Una ventaja de Velocity es que cuenta con el soporte de una mayor comunidad de usuarios&lt;/span&gt;&lt;/b&gt;, por lo que será fácil dar solución a los problemas con los que nos vayamos encontrando por el camino. Según los autores de &lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;FreeMarker&lt;/span&gt;&lt;/b&gt;, este motor no necesitará de tanto soporte debido a que muchas características que querremos incorporar a nuestras aplicaciones ya las tendremos implementadas en el core.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Como siempre, que el sentido común decida por vosotros. Dependerá del tamaño de vuestra aplicación y lo que queráis hacer con el motor de plantillas en la misma.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Para descargar la última versión de &lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;FreeMarker &lt;/span&gt;&lt;/b&gt;pulsa &lt;a href=&quot;http://freemarker.sourceforge.net/freemarkerdownload.html&quot;&gt;aquí&lt;/a&gt;&amp;nbsp;y para descargar la última versión de &lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;Velocity &lt;/span&gt;&lt;/b&gt;&lt;a href=&quot;http://velocity.apache.org/download.cgi&quot;&gt;aquí&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Ejemplo con FreeMarker&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Nuestro proyecto resultante en Eclipse debe tener la siguiente estructura:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmDJh4d9gfdbJTuBxuBeJhhLbVaX1kEjA98wO2WOrzubfoNO0dg0VL1qvY8qbleApZWHYocYF813MlkgHE_kIL5SOkseRINgyWbI8C6hJvBk-LajD_Wayqr4LloAjbAfo_L-LvoddnShw/s1600/freemarker.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmDJh4d9gfdbJTuBxuBeJhhLbVaX1kEjA98wO2WOrzubfoNO0dg0VL1qvY8qbleApZWHYocYF813MlkgHE_kIL5SOkseRINgyWbI8C6hJvBk-LajD_Wayqr4LloAjbAfo_L-LvoddnShw/s320/freemarker.PNG&quot; height=&quot;320&quot; width=&quot;311&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Lo primero que hacemos es crear nuestras plantillas auxiliares de &lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;FreeMaker &lt;/span&gt;&lt;/b&gt;con &lt;b&gt;extensión .ftl&lt;/b&gt;, en nuestro caso, serán &lt;b&gt;header.ftl&lt;/b&gt; y &lt;b&gt;footer.ftl&lt;/b&gt;. La carpeta para crearlas será &lt;b&gt;&lt;i&gt;templates/common&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;header.ftl&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;pre class=&quot;brush:xml&quot;&gt;&lt;!--header.ftl--&gt;
&amp;lt;title&amp;gt;Tutoriales de JPASCU: ${mensaje1}&amp;lt;/title&amp;gt;
&amp;lt;body&amp;gt; 
&lt;/pre&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;footer.ftl&lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;brush:xml&quot;&gt;&lt;!--footer.ftl--&gt;
&amp;lt;/body&amp;gt; 
&lt;/pre&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Posteriormente creamos nuestra plantilla principal &lt;b&gt;main.ftl&lt;/b&gt; en el directorio &lt;b&gt;&lt;i&gt;templates&lt;/i&gt;&lt;/b&gt;. En ella incluimos las otras plantillas. A partir de ella el motor de &lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;FreeMarker &lt;/span&gt;&lt;/b&gt;genera una página HTML con los valores que se pasan desde una clase Java.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;main.ftl&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:xml&quot;&gt;&amp;lt;#include &quot;./common/header.ftl&quot;&amp;gt; 
&amp;lt;#if container??&amp;gt;
  &amp;lt;div id=&quot;${container}&quot;&amp;gt;
&amp;lt;#else&amp;gt;
  

&amp;lt;div id=&quot;default&quot;&amp;gt;
&amp;lt;/#if&amp;gt;


&amp;lt;ul&amp;gt;
&amp;lt;#list jugadores as jugador&amp;gt;
&amp;lt;li&amp;gt;${jugador_index + 1}.${jugador.getName()}&amp;lt;/li&amp;gt;
&amp;lt;/#list&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;h1&amp;gt;
${mensaje2.getName()}&amp;lt;/h1&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;#include &quot;./common/footer.ftl&quot;&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Destacamos tres puntos en el código de la plantilla:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Utilizamos&lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt; la directiva &amp;lt;#include&amp;gt;&lt;/span&gt;&lt;/b&gt; para incluir otras plantillas&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;Podemos utilizar condiciones para poner un código HTML u otro dependiendo de las variables pasadas desde Java&lt;/span&gt;&lt;/b&gt;. Por ejemplo, &amp;lt;#if container??&amp;gt; es verdadero si la variable container es pasada al motor de FreeMaker. Si no existe la expresión será falsa. OJO: el ?? no funciona en versiones antiguas de FreeMaker.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;También podemos utilizar bucles y llamar a métodos de objetos Java&lt;/span&gt;&lt;/b&gt; desde nuestra plantilla &lt;b&gt;.ftl&lt;/b&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Por último, creamos las clases Java, una clase holder (podría ser un String) y la clase de prueba en la que creamos una instancia del motor y le pasamos las variables para que haga el &#39;merge&#39; con la plantilla. El código Java de las clases es el siguiente:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;JugadorFutbol.java&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:java&quot;&gt;package es.jpascu.engine.freemarker;

public class JugadorFutbol {

 private String name;

 public JugadorFutbol(String name) {
  super();
  this.name = name;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }
}
&lt;/pre&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;TestFreeMaker.java&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;package es.jpascu.engine.freemarker;

import java.io.File;
import java.io.FileWriter;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import freemarker.template.Configuration;
import freemarker.template.Template;

public class TestFreeMarker {

  public static void main(String[] args) {

    // Creamos la configuración
    Writer file = null;
    Configuration cfg = new Configuration();

    try {
      // Seleccionamos el directorio donde se encuentran nuestras plantillas
      cfg.setDirectoryForTemplateLoading(new File(&quot;templates&quot;));
      // Cargamos las plantillas
      Template template = cfg.getTemplate(&quot;main.ftl&quot;);

      // Pasamos los parámetros
      Map&lt;string object=&quot;&quot;&gt; input = new HashMap&lt;string object=&quot;&quot;&gt;();
      input.put(&quot;mensaje1&quot;, &quot;Ejemplo con FreeMarker&quot;);
      input.put(&quot;container&quot;, &quot;test&quot;);

   
      List&lt;jugadorfutbol&gt; jugadores = new ArrayList&lt;jugadorfutbol&gt;();

      jugadores.add(new JugadorFutbol(&quot;Messi&quot;));
      jugadores.add(new JugadorFutbol(&quot;Iniesta&quot;));
      jugadores.add(new JugadorFutbol(&quot;Xavi&quot;));
      jugadores.add(new JugadorFutbol(&quot;Villa&quot;));
      jugadores.add(new JugadorFutbol(&quot;CR7&quot;));

      input.put(&quot;jugadores&quot;, jugadores);

      JugadorFutbol exampleObject = new JugadorFutbol(&quot;¿Pero qué equipo es este?&quot;);
      input.put(&quot;mensaje2&quot;, exampleObject);

      // Escribimos en un fichero HTML
      file = new FileWriter(new File(&quot;output.html&quot;));
      template.process(input, file);
      file.flush();

      // Escribimos en la salida estandar
      Writer out = new OutputStreamWriter(System.out);
      template.process(input, out);
      out.flush();

    } catch (Exception e) {
      System.out.println(e.getMessage());

    } finally {
      if (file != null) {
        try {
          file.close();
        } catch (Exception e2) {
        }
      }
    }

  }
} 
&lt;/jugadorfutbol&gt;&lt;/jugadorfutbol&gt;&lt;/string&gt;&lt;/string&gt;&lt;/pre&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;En la clase &lt;b&gt;TestFreeMaker &lt;/b&gt;cabe destacar lo siguiente:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;Cargamos la configuración (cfg) del motor &lt;/span&gt;&lt;/b&gt;con la clase&amp;nbsp;&lt;/span&gt;&lt;i&gt;freemarker.template.Configuration.&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;Podemos seleccionar el directorio de plantillas&lt;/span&gt;&lt;/b&gt; con&amp;nbsp;&lt;/span&gt;&lt;i&gt;cfg.setDirectoryForTemplateLoading&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;Cargamos la plantilla&lt;/span&gt;&lt;/b&gt; con&amp;nbsp;&lt;/span&gt;&lt;i&gt; cfg.getTemplate(&quot;main.ftl&quot;)&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;Generamos una salida&lt;/span&gt;&lt;/b&gt; con&amp;nbsp;&lt;/span&gt;&lt;i&gt; template.process(input, file), &lt;/i&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;donde input es un map de tipo parámetro-valor con los valores con los que queremos rellenar nuestra plantilla y file es un stream de salida (salida estandar, fichero HTML, fichero RTF...).&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Ejemplo con Velocity&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; text-align: justify;&quot;&gt;Nuestro proyecto resultante en Eclipse debe tener la siguiente estructura:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSquPkj4-i_XfjtT2rEySImoVIn5fwfM4BCUwq6UeT7YLtG6GXg6BnXOz1zb1YIH8rHX_SUgdhBsyMCqPh0F7Ezmf9LjdSshVDsCplVPBJfLlyUu6U8NvigtiPuqwE81D54202s_CkHc0/s1600/velocity2.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSquPkj4-i_XfjtT2rEySImoVIn5fwfM4BCUwq6UeT7YLtG6GXg6BnXOz1zb1YIH8rHX_SUgdhBsyMCqPh0F7Ezmf9LjdSshVDsCplVPBJfLlyUu6U8NvigtiPuqwE81D54202s_CkHc0/s1600/velocity2.JPG&quot; height=&quot;400&quot; width=&quot;343&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Lo primero que hacemos es crear nuestras plantillas auxiliares de &lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;Velocity &lt;/span&gt;&lt;/b&gt;con extensión &lt;b&gt;.vm&lt;/b&gt;, en este ejemplo serán &lt;b&gt;header.vm&lt;/b&gt; y&lt;b&gt; footer.vm&lt;/b&gt;.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;header.vm&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;pre class=&quot;brush:xml&quot;&gt;&lt;!--header.vm--&gt;

&amp;lt;title&amp;gt;Tutoriales de JPASCU: $mensaje1&amp;lt;/title&amp;gt;
&amp;lt;body&amp;gt;
&lt;/pre&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;footer.vm&lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;brush:xml&quot;&gt;&lt;!--footer.vm--&gt;
&amp;lt;/body&amp;gt;
&lt;/pre&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Posteriormente creamos nuestra plantilla principal &lt;b&gt;main.vm&lt;/b&gt;. En ella incluimos las otras plantillas. A partir de ella el motor de Velocity genera una página HTML con los valores que se pasan desde una clase Java.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;main.vm&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;brush:xml&quot;&gt;#parse(&quot;header.vm&quot;)
#if ($container)
  &amp;lt;div id=&quot;$container&quot;&amp;gt;
#else
  &amp;lt;div id=&quot;default&quot;&amp;gt;
#end
&amp;lt;ul&amp;gt;
#set ($counter = 0)
#foreach ($jugador in $jugadores)
 #set ($counter = $counter + 1)
&amp;lt;li&amp;gt;$counter.$jugador.getName()&amp;lt;/li&amp;gt;
#end
&amp;lt;/ul&amp;gt;
&amp;lt;h1&amp;gt;
$mensaje2.getName()&amp;lt;/h1&amp;gt;
&amp;lt;/div&amp;gt;
#parse(&quot;footer.vm&quot;)
&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Veamos ahora las diferencias de notación con FreeMaker:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;Utilizamos la directiva #parse para incluir otras plantillas con variables&lt;/span&gt;&lt;/b&gt;. Si queremos incluir alguna plantilla con texto o código HTML estático podemos utilizar #include.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;También podemos utilizar condiciones para poner un código HTML u otro dependiendo de las variables pasadas desde Java. &lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;Utilizamos la directiva #if para realizar una comparación de una variable&lt;/span&gt;&lt;/b&gt;. Deberemos cerrar las sentencias en las plantillas con #end.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;También podemos utilizar bucles con la sentencia #foreach y llamar a métodos de objetos Java desde nuestra plantilla .vm con la notación punto&lt;/span&gt;&lt;/b&gt; igual que en FreeMaker.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Por último, creamos las clases Java, una clase holder (podría ser un String) y la clase de test en la que creamos una instancia del motor de Velocity y le pasamos las variables para que haga el &#39;merge&#39; con la plantilla, igual que en el caso anterior. El código Java de las clases es el siguiente:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;JugadorFutbol.java&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:java&quot;&gt;package es.jpascu.engine.freemarker;

public class JugadorFutbol {

 private String name;

 public JugadorFutbol(String name) {
  super();
  this.name = name;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }
}
&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;TestVelocity.java&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;package es.jpascu.engine.velocity;

import java.io.File;
import java.io.FileWriter;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;

public class TestVelocity {

 public static void main(String[] args) {

  Writer file = null;
  /* Inicializamos el motor de Velocity */
  VelocityEngine ve = new VelocityEngine();
  ve.init();

  try {

   // Cargamos las plantillas

   Template t = ve.getTemplate(&quot;main.vm&quot;);

   // Creamos el contexto donde pasaremos los parámetros
   VelocityContext context = new VelocityContext();

   // Pasamos los parámetros
   Map&lt;string object=&quot;&quot;&gt; input = new HashMap&lt;string object=&quot;&quot;&gt;();
   context.put(&quot;mensaje1&quot;, &quot;Ejemplo con Velocity&quot;);
   context.put(&quot;container&quot;, &quot;test&quot;);

   List&lt;jugadorfutbol&gt; jugadores = new ArrayList&lt;jugadorfutbol&gt;();

   jugadores.add(new JugadorFutbol(&quot;Messi&quot;));
   jugadores.add(new JugadorFutbol(&quot;Iniesta&quot;));
   jugadores.add(new JugadorFutbol(&quot;Xavi&quot;));
   jugadores.add(new JugadorFutbol(&quot;Villa&quot;));
   jugadores.add(new JugadorFutbol(&quot;CR7&quot;));

   context.put(&quot;jugadores&quot;, jugadores);

   JugadorFutbol exampleObject = new JugadorFutbol(
     &quot;¿Pero qué equipo es este?&quot;);
   context.put(&quot;mensaje2&quot;, exampleObject);

   // Escribimos en un fichero HTML
   file = new FileWriter(new File(&quot;output.html&quot;));
   t.merge(context, file);
   file.flush();

   // Escribimos en la salida estandar
   Writer out = new OutputStreamWriter(System.out);
   t.merge(context, out);
   out.flush();

  } catch (Exception e) {
   System.out.println(e.getMessage());

  } finally {
   if (file != null) {
    try {
     file.close();
    } catch (Exception e2) {
    }
   }
  }

 }
}&lt;/jugadorfutbol&gt;&lt;/jugadorfutbol&gt;&lt;/string&gt;&lt;/string&gt;&lt;/pre&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;En la clase &lt;b&gt;TestVelocity &amp;nbsp;&lt;/b&gt;cabe destacar lo siguiente:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;Inicializamos el motor de Velocity&lt;/span&gt;&lt;/b&gt; (&lt;/span&gt;&lt;i&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;org.apache.velocity.app.VelocityEngine&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;El directorio de plantillas lo configuramos en el archivo de configuración de Velocity velocity.properties&lt;/span&gt;&lt;/b&gt;, en el que también configuramos otras propiedades del motor.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;Cargamos la plantilla&lt;/span&gt;&lt;/b&gt; con&amp;nbsp;&lt;/span&gt;&lt;i&gt;&amp;nbsp; ve.getTemplate(&quot;main.vm&quot;)&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;Creamos el contexto que encapsulara los parámetros que le pasaremos al motor de Velocity&lt;/span&gt;&lt;/b&gt; para generar la salida.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;Generamos una salida&lt;/span&gt;&lt;/b&gt; con&amp;nbsp;&lt;/span&gt;&lt;i&gt;&amp;nbsp;t.merge(context, file),&amp;nbsp;&lt;/i&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;donde context es el objeto Contexto de Velocity (&lt;/span&gt;&lt;i&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;org.apache.velocity.VelocityContext&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;) de tipo parámetro-valor con los valores con los que queremos rellenar nuestra plantilla y file es un stream de salida (salida estandar, fichero HTML, fichero RTF...).&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Por último, os muestro el contenido del fichero&lt;b&gt; velocity.properties&lt;/b&gt;, en el que le decimos al motor que cargue la plantillas del classpath:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;pre class=&quot;brush:xml&quot;&gt;velocimacro.library=macros/VM_global_library.vm

resource.loader=classpath 
classpath.resource.loader.description=Velocity Classpath Resource Loader 
classpath.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader 
classpath.resource.loader.cache=true 
classpath.resource.loader.modificationCheckInterval=2
&lt;/pre&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Espero que el ejemplo sea útil para que&amp;nbsp;profundicéis&amp;nbsp;en el mundo de los motores de plantillas.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Ahh, se me olvidaba, la página resultante para el caso de Velocity es la siguiente:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4jYIkPIUPXJMrVk_6no_fv6JboZARdPpEQctAVpPjp9iilgVVQgmj_PlCgq82yutKzk-fHQ4aD1wvbLFnxfc2HBwdRYG-P9mlVQAsMuyeJ6-xvv07JZzTZu9-HPpgrhVdhS2EoRIXn6U/s1600/html.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4jYIkPIUPXJMrVk_6no_fv6JboZARdPpEQctAVpPjp9iilgVVQgmj_PlCgq82yutKzk-fHQ4aD1wvbLFnxfc2HBwdRYG-P9mlVQAsMuyeJ6-xvv07JZzTZu9-HPpgrhVdhS2EoRIXn6U/s1600/html.JPG&quot; height=&quot;237&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Salu2.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: white;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Fuente&lt;/b&gt;: &lt;a href=&quot;http://freemarker.sourceforge.net/fmVsVel.html&quot;&gt;FreeMarker&lt;/a&gt;&amp;nbsp;| &lt;a href=&quot;http://www.javaworld.com/javaworld/jw-12-2001/jw-1228-velocity.html&quot;&gt;javaworld&lt;/a&gt;&amp;nbsp;| &lt;a href=&quot;http://www.vogella.com/articles/FreeMarker/article.html&quot;&gt;vogella&lt;/a&gt;&amp;nbsp;| &lt;a href=&quot;http://velocity.apache.org/engine/releases/velocity-1.5/index.html&quot;&gt;Velocity&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; font-family: Arial, sans-serif; font-size: 13px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/6026212023361628805/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2013/03/freemarker-vs-velocity.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/6026212023361628805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/6026212023361628805'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2013/03/freemarker-vs-velocity.html' title='FREEMARKER VS VELOCITY'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyUM1iY0kQaWOnwTYhC0ydtpb-6MAjD9KoOyG-Gpy9bmh2yU5viyr4vhOeY0hrjrto8xGBcha7KOWEBZgrYx1ezOygDXRJVa_eCDCi3dbwFeefCOYArC6LSppdTIaTEvYX9_5Mjy1YhDI/s72-c/velocity.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-5788627185069706927</id><published>2013-02-19T19:24:00.001+01:00</published><updated>2013-02-19T19:30:04.581+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AbstractModule"/><category scheme="http://www.blogger.com/atom/ns#" term="Autowired"/><category scheme="http://www.blogger.com/atom/ns#" term="Google Guice"/><category scheme="http://www.blogger.com/atom/ns#" term="Inversion de Control"/><category scheme="http://www.blogger.com/atom/ns#" term="Inyeccion de Dependencias"/><category scheme="http://www.blogger.com/atom/ns#" term="IoC"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Service"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutoriales"/><title type='text'>Inyección de dependencias. Spring y Google Guice</title><content type='html'>&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;&lt;b&gt;¿Qué es la inyección de dependencias?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;La inyección de dependencias (DI) procede de un&amp;nbsp;patrón&amp;nbsp;de diseño más general que es el&amp;nbsp;patrón&amp;nbsp;de Inversión de Control (IoC). Básicamente recomienda que las dependencias de una clase no sean creadas desde el propio objeto, sino que sean configuradas desde fuera de la clase.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Una clase A es dependiente de otra B cuando utiliza una instancia de B bien llamando a su constructor o bien obteniendo una instancia de un método estático...&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Si utilizamos el&amp;nbsp;patrón&amp;nbsp;de inyección de dependencias la clase B se pasará una instancia de B a A:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Por el constructor de la clase A (inyección por constructor o constructor injection)&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Por un campo de la clase A (inyección por campo o field injection)&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Por un método setter (inyección por método set &amp;nbsp;o setter injection)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Al aplicar este patrón hacemos que nuestras clases sean independientes unas de otras e incrementamos la reutilizacion y la extensibilidad de nuestra aplicación, además de facilitar las pruebas unitarias de las mismas.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Desde el punto de vista de Java, un diseño basado en DI puede implementarse mediante el estandar del lenguaje. Una clase puede leer las dependencias de una clase por medio del API Reflection de Java y crear una instancia de dicha clase inyectándole sus dependencias.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Veamos un ejemplo de uso del&amp;nbsp;patrón. Imaginemos que una &amp;nbsp;clase A contiene un método DAO . Si aplicamos el patron DI, la clase A dependerá de una interfaz Java AccessDAO. Podemos implementar un AccessDAOImpl para acceder a una base de datos concreta y otro llamado AccessDaoImplTest que sería un objeto &#39;mock&#39; para hacer tests unitarios de la clase sin tener que crear una conexión física a la base de datos. Con el patrón DI, podremos insertar uno u otro objeto si cambiar ni una línea de código de la clase A.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5fZhOV2snOra1Kbjkn06ghpn9CZAgmV21BvCvdVqHUyqXlwRPzePVu53iv0TEoWaxGgPYrHoh78cCJWNzcE7-jgv97RV9iwm08FfFhe4iHAUlaRlfSwRnXt_sqtAM8y7Wshf3QS9p8E8/s1600/Diagramadeclase.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;191&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5fZhOV2snOra1Kbjkn06ghpn9CZAgmV21BvCvdVqHUyqXlwRPzePVu53iv0TEoWaxGgPYrHoh78cCJWNzcE7-jgv97RV9iwm08FfFhe4iHAUlaRlfSwRnXt_sqtAM8y7Wshf3QS9p8E8/s400/Diagramadeclase.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Hay frameworks que nos simplifican la aplicación del patron DI como el archiconocido Spring y Google Guice. En los siguientes apartados realizaré dos ejemplos de ambos frameworks.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;&lt;b&gt;Inyección de dependencias con Spring&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Spring proporciona un contenedor encargado de la inyección de dependencias (Spring Core Container). Este contenedor nos posibilita inyectar unos objetos sobre otros. Para ello, los objetos deberán ser simplemente JavaBeans. &amp;nbsp;La inyección de dependencias será bien por constructor o bien por métodos setter.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;La configuración podrá realizarse bien por anotaciones Java o mediante un fichero XML (XMLBeanFactory). Para la gestión de los objetos tendrá la clase (BeanFactory). Todos los objetos serán creados como singletons sino se especifica lo contrario.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Lo primero que deberemos hacer es descargar de la web de &lt;a href=&quot;http://www.springsource.org/spring-tool-suite-download&quot;&gt;Spring&lt;/a&gt;&amp;nbsp;la&amp;nbsp;distribución del framework donde encontraremos los jars necesarios para nuestra pequeño test de IoC y crear y un proyecto en Eclipse que yo he llamado TestSpring.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;He utilizado la versión 2.5.4 por estar disponible ya en mi máquina aunque podéis utilizar otra posterior. Con el spring-{VERSION}.jar, descargaremos también las librerías commons-logging.jar y log4j-{VERSION}.jar y creamos un directorio libs dentro del proyecto con las mismas.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZtPZdrdem4DtDsq_srwKZvgUOGsCu_p1xaMsLtWZSVYFXSuUEkfcmiWLnJcSBSPQrWc1in1dnZJ3q-22Qyfx3LNaVS0cCDRYuW-m_PF4uoQQc1m8mHYh8q0TgnHvyZUbeLY_-JNeidYc/s1600/eclipse.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZtPZdrdem4DtDsq_srwKZvgUOGsCu_p1xaMsLtWZSVYFXSuUEkfcmiWLnJcSBSPQrWc1in1dnZJ3q-22Qyfx3LNaVS0cCDRYuW-m_PF4uoQQc1m8mHYh8q0TgnHvyZUbeLY_-JNeidYc/s1600/eclipse.PNG&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Proyecto en Eclipse finalizado&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;A continuación crearemos nuestras clases:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;LectorDatosClientes.java&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;package es.jpascu.ioc.services;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service(&quot;lectorDatosClientes&quot;)
public class LectorDatosClientes {

 private IClienteDao clientesDao;

 @Autowired
 public void setClientesDao(IClienteDao clientesDao) {
  this.clientesDao = clientesDao;
 }

 public void escribirDatosCliente(String id) {
  clientesDao.leerClienteDao(id);
 }
}&lt;/pre&gt;
&lt;pre class=&quot;brush:java&quot;&gt;&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Como vemos esta clase no está acoplada a ninguna clase concreta y sí a una interfaz. Es el    contenedor de Spring el que posteriormente inyectará una implementación de esta interfaz. &lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Vamos a realizar la configuración mediante anotaciones, aunque también podemos hacerlo mediante XML.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;La anotación Service quiere decir que será un bean gestionado por Spring. Está a nivel de clase. La anotación Autowired está a nivel de método set e indica a Spring que debe pasar en el método setClientesDao una instancia de un objeto que implementa dicha interfaz.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;
&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;A continuación os muestro el código de la interfaz y su implementación.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;
IClienteDao.java&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:java&quot;&gt;package es.jpascu.ioc.services;

public interface IClienteDao {

 public void leerClienteDao(String id);
}&lt;/pre&gt;
&lt;pre class=&quot;brush:java&quot;&gt;&lt;/pre&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;ClienteDao.java&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;package es.jpascu.ioc.services;

import org.springframework.stereotype.Service;

@Service
public class ClienteDaoJdbc implements IClienteDao {

 @Override
 public void leerClienteDao(String id) {
  System.out.println(&quot;Datos de cliente: &quot; + id);  
 }
}
&lt;/pre&gt;
&lt;pre class=&quot;brush:java&quot;&gt;&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;En la clase ClienteDAO también se encuentra la anotación Service, ya que Spring lo instanciará y lo inyectará como dependencia en la clase LectorDatosClientes.

&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Por último, creamos el fichero de configuración applicationContext.xml y lo guardamos en el directorio src/META-INF.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;El contenido de este fichero es el siguiente:&lt;/span&gt;
&lt;/div&gt;
&lt;pre class=&quot;brush:xml&quot;&gt;&lt;beans xmlns:aop=&quot;http://www.springframework.org/schema/aop&quot; xmlns:context=&quot;http://www.springframework.org/schema/context&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns=&quot;http://www.springframework.org/schema/beans&quot; xsi:schemalocation=&quot;http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd&quot;&gt;&lt;context:component-scan base-package=&quot;es.jpascu.ioc.services&quot;&gt;
  

&lt;/context:component-scan&gt;&lt;/beans&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Con el elemento context:component-scan le indicamos el paquete donde Spring encontrará los servicios en el código fuente. Por último para probar todo el ejemplo nos creamos una clase de prueba con el siguiente código:

&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:java&quot;&gt;package es.jpascu.ioc.test;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import es.jpascu.ioc.services.LectorDatosClientes;

public class TestSpring {

 public static void main(String args[]) {
  ApplicationContext context = new ClassPathXmlApplicationContext(&quot;META-INF/applicationContext.xml&quot;);
     BeanFactory factory = context;
     LectorDatosClientes test = (LectorDatosClientes) factory
         .getBean(&quot;lectorDatosClientes&quot;);
     test.escribirDatosCliente(&quot;jpascu&quot;);
 }
}&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;&lt;b&gt;Inyección de dependencias con Google Guice&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://code.google.com/p/google-guice/&quot;&gt;Google Guice&lt;/a&gt; es una librería java de Google que implementa el estandar de inyección de dependencias JSR-330. Al igual que con Spring, podemos utilizarlo para tener clases Java independientes entre sí, &amp;nbsp;teniendo mediante el patron DI un diseño más extensible, mantenible y fácil de testear. manteniente.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;A continuación vamos a implementar el ejemplo del apartado anterior con Google Guice. Las librerías nos las podemos descargar de la &lt;a href=&quot;http://code.google.com/p/google-guice/&quot;&gt;web &lt;/a&gt;del proyecto.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;LectorDatosClientes.java&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;package es.jpascu.ioc.googleguice.services;

import com.google.inject.Inject;

public class LectorDatosClientes {

 private IClienteDao clientesDao;

 @Inject
 public void setClientesDao(IClienteDao clientesDao) {
  this.clientesDao = clientesDao;
 }

 public void escribirDatosCliente(String id) {
  clientesDao.leerClienteDao(id);
 }
}
&lt;/pre&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;En lugar de la anotación Autowired ahora ponemos la anotación Inject. Ya veremos más tarde cómo se realizará el binding a la clase particular.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Las clases &amp;nbsp;IClienteDao y ClienteDao quedarían con el mismo código que antes pero sin ninguna anotación:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;IClienteDao.java&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;package es.jpascu.ioc.googleguice.services;

public interface IClienteDao {

 public void leerClienteDao(String id);
}
&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;ClienteDaoJdbc.java&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush_java&quot;&gt;package es.jpascu.ioc.googleguice.services;

public class ClienteDaoJdbc implements IClienteDao {

 @Override
 public void leerClienteDao(String id) {
  System.out.println(&quot;Datos de cliente: &quot; + id);
 }

}
&lt;/pre&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Ahora desde la clase donde queramos utilizar nuesto LectorDatosClientes deberemos incluir la lógica para crear dicha clase y sus dependencias mediante com.google.inject.Injector. Aquí no se cargará la configuración desde un fichero XML. Un ejemplo vale más que 1000 palabras:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;TestGoogleGuice.java&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;package es.jpascu.ioc.test;

import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;

import es.jpascu.ioc.googleguice.services.ClienteDaoJdbc;
import es.jpascu.ioc.googleguice.services.IClienteDao;
import es.jpascu.ioc.googleguice.services.LectorDatosClientes;

public class TestGoogleGuice {
 public static void main(String args[]) {
  Injector injector = Guice.createInjector(new JdbcInjectionModule());
  LectorDatosClientes lectorClientes = injector
    .getInstance(LectorDatosClientes.class);

  lectorClientes.escribirDatosCliente(&quot;jpascu&quot;);
 }

 public static class JdbcInjectionModule extends AbstractModule {
  @Override
  protected void configure() {
   bind(IClienteDao.class).to(ClienteDaoJdbc.class);
  }

 }
}&lt;/pre&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Ahora tenemos una clase interna que es una subclase de la clase AbstractModule, encargada &amp;nbsp;del &#39;binding&#39; de una interfaz con una implementación concreta. Para ello se debe implementar el método configure.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Una vez que hemos creado nuestro JdbcInjectionModule lo pasaremos como parámetro al objeto de la clase com.google.inject.Guice.Injector. A través de este objeto obtendremos una instancia singleton de nuestro LectorDatosClientes con la dependencia correctamente asociada. Por último sólo nos queda utilizarla...&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Hasta aquí el artículo. Espero que os haya ayudado a comprender mejor la inyección de dependencias y daros dos puntos de vista mediante ejemplos con dos frameworks diferentes: Spring y Google Guice.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&amp;nbsp;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Fuente: &lt;a href=&quot;http://www.vogella.com/articles/DependencyInjection/article.html&quot;&gt;Vogella1&lt;/a&gt;&amp;nbsp;| &lt;a href=&quot;http://www.vogella.com/articles/DependencyInjection/article.html&quot;&gt;Vogella2&lt;/a&gt;&amp;nbsp;| &lt;a href=&quot;http://www.metafisicainformatica.com/2011/05/02/guice/&quot;&gt;metafisicainformatica&lt;/a&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/5788627185069706927/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2013/02/inyeccion-de-dependencias-spring-y.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/5788627185069706927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/5788627185069706927'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2013/02/inyeccion-de-dependencias-spring-y.html' title='Inyección de dependencias. Spring y Google Guice'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5fZhOV2snOra1Kbjkn06ghpn9CZAgmV21BvCvdVqHUyqXlwRPzePVu53iv0TEoWaxGgPYrHoh78cCJWNzcE7-jgv97RV9iwm08FfFhe4iHAUlaRlfSwRnXt_sqtAM8y7Wshf3QS9p8E8/s72-c/Diagramadeclase.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-3144138980444852499</id><published>2013-02-11T10:43:00.002+01:00</published><updated>2013-02-11T10:43:42.529+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Aplicaciones"/><category scheme="http://www.blogger.com/atom/ns#" term="Barcenas"/><category scheme="http://www.blogger.com/atom/ns#" term="BarcenasGate"/><category scheme="http://www.blogger.com/atom/ns#" term="Juegos"/><title type='text'>JUEGO BARCENAS PARA TU ANDROID</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Hace ya algunas semanas que estalló &lt;b&gt;el &#39;Caso Bárcenas&#39;&lt;/b&gt; en nuestro país en plena crisis económica y financiera, la guinda del pastel que faltaba para generar más inestabilidad en este nuestro país. En los medios de comunicación oímos todos los días palabras como &lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;corrupción, PP, Bárcenas, los papeles, contabilidad B&lt;/span&gt;&lt;/b&gt;, etc.. Y muchos de nosotros nos levantamos cada día a trabajar para seguir adelante con el día a día y con la esperanza que la situación cambié algún día, al menos para los que vienen después de nosotros...&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVgCD_e4bcmyl7gQnDReaGeieORUDGvIz5IQhsiItpyI5y7WIDqDZk20w_aZU4DfQM76V4ZerSzi56WGhO0HKbANrg-5GhKdRq0wDTBD2fIlYmv_d5tA3l3BYyXM2M1k0ELQlgd78M6Z8/s1600/xoseluis_e-mail.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVgCD_e4bcmyl7gQnDReaGeieORUDGvIz5IQhsiItpyI5y7WIDqDZk20w_aZU4DfQM76V4ZerSzi56WGhO0HKbANrg-5GhKdRq0wDTBD2fIlYmv_d5tA3l3BYyXM2M1k0ELQlgd78M6Z8/s320/xoseluis_e-mail.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Bajo este panorama poco esperanzador no todo iba a ser &lt;b&gt;TODO&lt;/b&gt; malo. Para conseguir una sonrisa mi compañero &lt;a href=&quot;http://www.fuenteperez.es/blog/&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;Héctor&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&amp;nbsp;y un servidor hemos creado un juego para Android mezcla de ironía, humor y diversión llamado &lt;b&gt;&lt;span style=&quot;color: #bf9000;&quot;&gt;BarcenasGate&lt;/span&gt;&lt;/b&gt;. En él te vas a convertir en el cartero del famosísimo Bárcenas y &lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;tu misión principal será repartir &#39;regalitos&#39; para tus &#39;amigos más queridos&#39;.&lt;/span&gt;&lt;/b&gt; Cuanto mayor sea el regalo, mayor será la recompensa que obtienes y más dificultad tendrás para entregarlo. &lt;b&gt;Entrega el mayor número de sobres en el menor tiempo posible!!! Pero ten cuidado cartero porque alguien podría vigilarte y sorprenderte al FINAL del juego.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2Ar_HpDNytFrqvYboGfiKqp7mFhc0VbqiKxMDEEPD4J4ztT9f2zd5ubHc4h3BeUWgLXeaXUsBwzsew60FesuHDrYGF7-4h8zWq0qiwQm2ER7jMYznewU9tGokByOb4r7AgOSs03jCpz0/s1600/menu.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2Ar_HpDNytFrqvYboGfiKqp7mFhc0VbqiKxMDEEPD4J4ztT9f2zd5ubHc4h3BeUWgLXeaXUsBwzsew60FesuHDrYGF7-4h8zWq0qiwQm2ER7jMYznewU9tGokByOb4r7AgOSs03jCpz0/s400/menu.jpg&quot; width=&quot;238&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Al entrar al &lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;JUEGO&lt;/span&gt;&lt;/b&gt; te aparece un menú principal donde puedes&lt;b&gt; activar/desactivar el sonido&lt;/b&gt; &lt;b&gt;y la vibración&lt;/b&gt;, una &lt;b&gt;pantalla de Ayuda&lt;/b&gt; donde se te explica tu misión y por supuesto el botón de &lt;b&gt;Jugar&lt;/b&gt; para que empieces a cumplir tu misión.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYBFHsR66wPhskNNjft6Ld2BS8v512J-rHLlzJZ_tjceZiWOx2rcJvfAmyjTsFUuZbGY-9DMgFdSt3CXcqppXlQNHGhLn6Gd7ZjK1GNQQhLKjG6cex1R-qSpKOrFUNDcU5xwWYP8-_QaI/s1600/juego.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYBFHsR66wPhskNNjft6Ld2BS8v512J-rHLlzJZ_tjceZiWOx2rcJvfAmyjTsFUuZbGY-9DMgFdSt3CXcqppXlQNHGhLn6Gd7ZjK1GNQQhLKjG6cex1R-qSpKOrFUNDcU5xwWYP8-_QaI/s400/juego.jpg&quot; width=&quot;238&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Los &lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;PERSONAJES&lt;/span&gt;&lt;/b&gt; con los que puedes interactuar son:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;BARCENAS&lt;/span&gt;&lt;/b&gt;. El personaje más buscado. Si entregas un sobre a BARCENAS recibirás 10.000 euros de recompensa. Únicamente sale dos veces y a toda pastilla así que tendrás que estar muy atento.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;RAJOY&lt;/span&gt;&lt;/b&gt;. Si entregas un sobre al &#39;presi&#39; recibirás una recompensa de 1000 euros.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;CASCOS&lt;/span&gt;&lt;/b&gt;. Recompensa de 800 euros.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;ARENAS&lt;/span&gt;&lt;/b&gt;. Recompensa de 500 euros.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;TRILLO&lt;/span&gt;&lt;/b&gt;. Recompensa de 400 euros.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;MAYOR OREJA&lt;/span&gt;&lt;/b&gt;. Recompensa de 300 euros.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;COSPEDAL&lt;/span&gt;&lt;/b&gt;. Recompensa de 100 euros.&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Cuanto mayor sea la recompensa, más rápido se moverá el personaje y más dificil será entregarle el sobre!!!&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Podéis descargarlo en en la siguiente página &lt;a href=&quot;https://play.google.com/store/apps/details?id=es.jpascu.games.barcenasgate&quot;&gt;https://play.google.com/store/apps/details?id=es.jpascu.games.barcenasgate&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Espero que lo disfrutéis.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Un saludo.&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/3144138980444852499/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2013/02/juego-barcenas-para-tu-android.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/3144138980444852499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/3144138980444852499'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2013/02/juego-barcenas-para-tu-android.html' title='JUEGO BARCENAS PARA TU ANDROID'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVgCD_e4bcmyl7gQnDReaGeieORUDGvIz5IQhsiItpyI5y7WIDqDZk20w_aZU4DfQM76V4ZerSzi56WGhO0HKbANrg-5GhKdRq0wDTBD2fIlYmv_d5tA3l3BYyXM2M1k0ELQlgd78M6Z8/s72-c/xoseluis_e-mail.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-3803250988375723556</id><published>2013-01-28T13:06:00.000+01:00</published><updated>2013-01-28T13:06:24.231+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Aplicaciones"/><category scheme="http://www.blogger.com/atom/ns#" term="Bebes"/><category scheme="http://www.blogger.com/atom/ns#" term="LullabyDroid"/><category scheme="http://www.blogger.com/atom/ns#" term="NanaDroid"/><category scheme="http://www.blogger.com/atom/ns#" term="Play Store"/><title type='text'>APLICACION ANDROID PARA BEBES</title><content type='html'>&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Te levantas a las 7:00 AM con el sonido infernal del móvil. Te duchas, desayunas y llegas al trabajo después de superar con éxito una hora de atascos. Al mediodía comida con exceso de calorías y después de 10 horas de duro trabajo y acidez de estómago vuelves a casa con una sonrisa para ver de nuevo a tu dulce bebé. ¿Y qué hace él? Pues te llora, te llora tanto que el eco hace retumbar todas las paredes de tu casa.&lt;br /&gt;&lt;br /&gt;Cuando tienes un pequeño en casa las cosas son así y no se pueden cambiar. Es lo que hay. &lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;Por ello tuve la &#39;genial&#39; idea de crear una de las millones de aplicaciones Android que ya existen en la Play Store con música para bebés&lt;/span&gt;&lt;/b&gt;.&amp;nbsp;&lt;/span&gt;&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiFhUk55iqm5XWwt2RXUpK_lqWLidRzCeqAIioEas2fgT6nck7lxr3m_crGV0j-L0O8mOpUt4_eujgFNsflXN48Ik5LGVt4zSsB3ACsm3sguiDW9AP_XdvjhHXBs8Za71iDLnkeGSqgo8/s1600/1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiFhUk55iqm5XWwt2RXUpK_lqWLidRzCeqAIioEas2fgT6nck7lxr3m_crGV0j-L0O8mOpUt4_eujgFNsflXN48Ik5LGVt4zSsB3ACsm3sguiDW9AP_XdvjhHXBs8Za71iDLnkeGSqgo8/s320/1.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;La aplicación se llama &lt;b&gt;&lt;span style=&quot;color: #b45f06;&quot;&gt;LullabyDroid &lt;/span&gt;&lt;/b&gt;y su entrada en la PlayStore es:&amp;nbsp;&lt;a href=&quot;https://play.google.com/store/apps/details?id=es.soundroid.activity&quot;&gt;&lt;b&gt;https://play.google.com/store/apps/details?id=es.soundroid.activity&lt;/b&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnfVcTHhDPKBRTCW4O7KVKFOHYbOhxWSjJXh7QZltyesCQb6BA7nRNm0iyuMHrvZX0csfBJNgiS5ZgUGgZ9iuRfMdFs8LepB9CtJDqPbgdf3TfC8FjhghTULRUA5cbuwpfLCcKueRtSaI/s1600/elefante.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnfVcTHhDPKBRTCW4O7KVKFOHYbOhxWSjJXh7QZltyesCQb6BA7nRNm0iyuMHrvZX0csfBJNgiS5ZgUGgZ9iuRfMdFs8LepB9CtJDqPbgdf3TfC8FjhghTULRUA5cbuwpfLCcKueRtSaI/s200/elefante.png&quot; width=&quot;141&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Es muy simple. Cuando entras te aparece un simpático pingüino y un &lt;b&gt;botón con el que puedes seleccionar entre 3 canciones para bebés&lt;/b&gt;. &lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;Son composiciones clásicas de artistas tan ilustres como Bach o Pachelbel&lt;/span&gt;&lt;/b&gt;.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisI2mqe1DPLxDXlipGnNrRITk0UkeJ8M65KE9Ep3oOZNmEOGY6sWWA6MgUSSgVCqqIg-KKzHVvqiiOC_Bd8q_HHDTs_LPsqzWW0RAvcXrozAF4B8q-RwqkakK9lnXAD1KQOxmOP0G28E8/s1600/2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisI2mqe1DPLxDXlipGnNrRITk0UkeJ8M65KE9Ep3oOZNmEOGY6sWWA6MgUSSgVCqqIg-KKzHVvqiiOC_Bd8q_HHDTs_LPsqzWW0RAvcXrozAF4B8q-RwqkakK9lnXAD1KQOxmOP0G28E8/s320/2.jpg&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Una vez que has escogido tu canción &lt;b&gt;puedes elegir también el tiempo de duración que quieres escoger para la reproducción&lt;/b&gt;. También tienes la opción que la canción se reproduzca indefinidamente, aunque las baterías de los smartphones seguramente lo impedirán.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_JAVKxJZ3jfpUdKbBJOohg-KgctW232hMqBDkT1nWS5GZbkqpkZH7aoqa6E594Oga4TFaGFWt8XphmdZF7zfrgVRxUSwip4WhsxDYr2G6cd9wTfeeP9d_sGBbsMeFgfLRf0OMZDTgezY/s1600/3.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_JAVKxJZ3jfpUdKbBJOohg-KgctW232hMqBDkT1nWS5GZbkqpkZH7aoqa6E594Oga4TFaGFWt8XphmdZF7zfrgVRxUSwip4WhsxDYr2G6cd9wTfeeP9d_sGBbsMeFgfLRf0OMZDTgezY/s320/3.jpg&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Además cada vez que cambiamos de canción el fondo de pantalla se cambia por una imagen diferente. El favorito de mi hijo es el pingüino &#39;Pingui&#39; pero la imagen de &#39;Toby&#39; tampoco está nada mal:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ2f0i3B4LVfwEhYNPSi55VerNS0_2ul3N_Vik7i7_oM3MXJYKwkw7p88YHw7nGrtX9sBKkHrKGnQ-3dGN4eoo_nA7bdqRQ8sxQK5j6yxptBhni74rCVTmS5rh7eTg7632g745-npFomU/s1600/4.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ2f0i3B4LVfwEhYNPSi55VerNS0_2ul3N_Vik7i7_oM3MXJYKwkw7p88YHw7nGrtX9sBKkHrKGnQ-3dGN4eoo_nA7bdqRQ8sxQK5j6yxptBhni74rCVTmS5rh7eTg7632g745-npFomU/s320/4.jpg&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Espero que os guste y sobre todo que os ayude en las noches más estresantes.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;POSTDATA&lt;/b&gt;: &lt;b&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;Ah, se me olvidaba, por supuesto, es gratuita.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Saludos.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/3803250988375723556/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2013/01/aplicacion-android-para-bebes.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/3803250988375723556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/3803250988375723556'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2013/01/aplicacion-android-para-bebes.html' title='APLICACION ANDROID PARA BEBES'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiFhUk55iqm5XWwt2RXUpK_lqWLidRzCeqAIioEas2fgT6nck7lxr3m_crGV0j-L0O8mOpUt4_eujgFNsflXN48Ik5LGVt4zSsB3ACsm3sguiDW9AP_XdvjhHXBs8Za71iDLnkeGSqgo8/s72-c/1.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2487783368669386032.post-3861018494603017257</id><published>2013-01-15T10:16:00.001+01:00</published><updated>2013-01-15T10:16:17.492+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Frases"/><title type='text'>Frase</title><content type='html'>&lt;blockquote class=&quot;tr_bq&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;i&gt;Veo mucho potencial, pero está desperdiciado. Toda una generación trabajando en gasolineras, sirviendo mesas, o siendo esclavos oficinistas.La publicidad nos hace desear coches y ropas, tenemos empleos que odiamos para comprar mierda que no necesitamos. Somos los hijos malditos de la historia, desarraigados y sin objetivos, no hemos sufrido una gran guerra, ni una depresión. Nuestra guerra es la guerra espiritual, nuestra gran depresión es nuestra vida. Crecimos con la televisión que nos hizo creer que algún día seríamos millonarios, dioses del cine, o estrellas del rock. Pero no lo seremos, y poco a poco lo entendemos, lo que hace que estemos muy cabreados&lt;/i&gt; - &lt;span style=&quot;color: #cc0000;&quot;&gt;&lt;b&gt;Tyler Durden en El Club de la Lucha&lt;/b&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
</content><link rel='replies' type='application/atom+xml' href='http://jpascu.blogspot.com/feeds/3861018494603017257/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://jpascu.blogspot.com/2013/01/frase.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/3861018494603017257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2487783368669386032/posts/default/3861018494603017257'/><link rel='alternate' type='text/html' href='http://jpascu.blogspot.com/2013/01/frase.html' title='Frase'/><author><name>RANGAR</name><uri>http://www.blogger.com/profile/01667704695507774368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>