tag:blogger.com,1999:blog-38376988786039878962024-03-13T11:09:59.419-07:00Cooking Software. Blog sobre desarrollo, tecnología y educaciónPaco Gomezhttp://www.blogger.com/profile/03495230064612872919noreply@blogger.comBlogger18125tag:blogger.com,1999:blog-3837698878603987896.post-16221423140871325902016-06-08T05:59:00.001-07:002016-06-08T05:59:31.509-07:00Herramientas del Profesor. Google Forms<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicXQz2Hl254mXBoySutfirasHvsKXc4VlpZfEWEb24OrAVX0HRKDDkUQvM6vILyddc3ZYUZaBX2u7baVbc7mitykUO5mP2hotNe881CgpOrZ6m92Z88dorj1pxWliSWgqhaQ4iNCoVbVdR/s1600/google-forms.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicXQz2Hl254mXBoySutfirasHvsKXc4VlpZfEWEb24OrAVX0HRKDDkUQvM6vILyddc3ZYUZaBX2u7baVbc7mitykUO5mP2hotNe881CgpOrZ6m92Z88dorj1pxWliSWgqhaQ4iNCoVbVdR/s320/google-forms.jpg" width="320" /></a></div>
<br />
<div style="text-align: justify;">
En muchas ocasiones tenemos que realizar un pequeño test, una encuesta o simplemente lanzar un formulario para tener los datos o las respuestas de un número de personas:
</div>
<div style="text-align: justify;">
<ul>
<li>Si eres educador, y quieres realizar un pequeño test de control para conocer el nivel de tus alumnos.</li>
<li>Si eres alumno y quieres incorporar estadísticas de las respuestas de un grupo de personas.</li>
<li>Si en ciclos formativos quieres conocer o realizar una encuesta entre las empresas con las que tienes contacto.</li>
<li>Si dentro del departamento símplemente quieres recoger las valoraciones de los compañeros.</li>
</ul>
</div>
<div style="text-align: justify;">
En estos y otras muchas mas aplicaciones, la herramienta de <b><a href="https://www.google.es/intl/es/forms/about/">Google Forms</a></b> es perfecta para realizar estas encuestas y tests.
Por ese motivo vamos a ver y realizar tanto un pequeño test como conocer como enviarlo, así como recoger las respuestas y analizarlas
</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b>Primer paso. Crear un Test o Formulario</b>
</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Nos ponemos manos a la obra y el primer paso será generar un nuevo test. Para ello necesitaremos una cuenta gratuita en Gmail, y mi recomendación es la utilización del Navegador <b><a href="https://www.google.com/chrome/">Chrome</a></b>. Una de las ventajas que no hemos comentado en la introducción es que la herramienta se utiliza y almacena en la "nube". Esto es fantástico ya que podremos acceder, visualizar, utilizar y modificar nuestros formularios desde cualquier ordenador.
</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/YGjmPPRHHGQ" width="560"></iframe>
</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b>Segundo paso. Recoger respuestas</b>
</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Una vez que tenemos realizado un primer test o encuesta tenemos que enviarlo a nuestros alumnos y/o clientes. En el vídeo aprenderéis dos formas de poder realizar esta acción:
<br />
<ul>
<li><b>Correo: </b>Google Forms permite la opción de poder enviar el formulario/test a los usuarios que les indiquemos via correo.</li>
<li><b>Enlace: </b>Otro mecanismo es copiar el link del formulario y publicarlo en nuestro blog, en moodle, en nuestra web o incluso enviar un correo electrónico con dicho link.</li>
</ul>
</div>
<div style="text-align: justify;">
A partir de este envío, comenzaremos a recibir respuestas que podremos analizar directamente a través de nuestro formulario o bien a través de un excel que generemos.
</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/s643DNVFRO8" width="560"></iframe>
</div>
Paco Gomezhttp://www.blogger.com/profile/03495230064612872919noreply@blogger.com0tag:blogger.com,1999:blog-3837698878603987896.post-74420806918930616942016-05-31T03:01:00.002-07:002016-05-31T03:01:33.589-07:00Unidad Didáctica. Trabajar con BBDD desde Java<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKjRhqoqroRC-Ho87ejg3IEpDJ2Ju_Wp4r0aKAMMBAIjGEolDJKxe6FwS2mBPTzFDGtA3D_r-6oyCE5Cw-YVzGLMsYw0FlFPB99xM5RKAMxm2V7B5ix92ChEUhlVgVsWsCdOjb-CWYZlJ1/s1600/UD+Java.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKjRhqoqroRC-Ho87ejg3IEpDJ2Ju_Wp4r0aKAMMBAIjGEolDJKxe6FwS2mBPTzFDGtA3D_r-6oyCE5Cw-YVzGLMsYw0FlFPB99xM5RKAMxm2V7B5ix92ChEUhlVgVsWsCdOjb-CWYZlJ1/s320/UD+Java.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
En los últimos posts hemos trabajado con BBDD, realizando consultas, insertando y actualizando esta utilizando como base el lenguaje de programación Java.</div>
<div class="separator" style="clear: both; text-align: justify;">
¿Cómo podemos utilizarlo en el aula, programarlo y evaluarlo? Os resultará muy fácil a través del siguiente documento:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://docs.google.com/document/d/1w8N3DcFMOoYuZSKxNf7Kecbb-f2kpyGyxuc_viGfxpY/edit?usp=sharing"><br /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://docs.google.com/document/d/1ElZKkgpUYLcDW-XmckjKB1fIS8BSAj2Tf7aoewItOkM/edit?usp=sharing">ENLACE A LA UNIDAD DIDÁCTICA</a></div>
Paco Gomezhttp://www.blogger.com/profile/03495230064612872919noreply@blogger.com0tag:blogger.com,1999:blog-3837698878603987896.post-50609160304824751032016-05-17T03:18:00.001-07:002016-05-17T05:49:55.797-07:00Java. Creación de una interfaz para el Registro y Login de usuario<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0EqkBCeg29C4dv5qtQ_UwsCSAKU8KSmiI9xE4gNtp0aqvN-J1v0D9t89Go4d2oobDf7QEsWAe6oAnW23u0se_oJZuQG1m32RkEUCMv8rLMlJkR7eC1sjR1sFSLBmTw7MvrgnBzu-VUEOM/s1600/Captura.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0EqkBCeg29C4dv5qtQ_UwsCSAKU8KSmiI9xE4gNtp0aqvN-J1v0D9t89Go4d2oobDf7QEsWAe6oAnW23u0se_oJZuQG1m32RkEUCMv8rLMlJkR7eC1sjR1sFSLBmTw7MvrgnBzu-VUEOM/s320/Captura.PNG" /></a></div>
<div style="text-align: justify;">
En prácticamente todas las aplicaciones que pensemos realizar interacción con base de datos vamos a necesitar dos interfaces iniciales para arrancar nuestra aplicación.</div>
<div style="text-align: justify;">
<ul>
<li><b>Login</b> A través de esta ventana recogemos el usuario y su contraseña para poder acceder a nuestra aplicación con un determinado usuario recogido desde la BBDD</li>
<li><b>Registo</b> A través de esta interfaz realizamos la inserción en la base de datos de un nuevo usuario para poder acceder a la aplicación</li>
</ul>
</div>
<div style="text-align: justify;">
El siguiente ejemplo es un poco más largo que las anteriores aportaciones sin embargo nos permitirá ver paso a paso y con mucho detalle cómo poder crear dichas dos ventanas.</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/gNhCRswNuyM" frameborder="0" allowfullscreen></iframe></div>
<div style="text-align: left;">
<br /></div>
<div class="plantillaboxwrap">
<div class="authorboxfull">
<div class="plantillaavatar-container">
<img alt="Plantilla" class="author_avatar img-circle" height="50" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgafcSWI3EoiXrne-q0nnrx5M2_fOQ42ggbPqxslsguwfJrE7HDK0h_zmIIjWzriPAVIKy7JeIlVTLIQmxDR4zkO4sjNQ2JyLlt4CkR3YXT0GaZu-dLlEFfHG5JWlPHwRgZcuCugUeDNMWL/s1600/Terminal.png" width="96" />
</div>
<div class="author_description_container">
Si eres educador o profesor utiliza la siguiente plantilla para tus alumnos
<br />
<center>
<b><a href="https://docs.google.com/document/d/1aPszdRVDFv7nWOFhfZIMDGOL2iKne2VJdwxkv5pXSUw/edit?usp=sharing">PLANTILLA</a></b></center>
<center>
<center>
</center>
</center>
</div>
</div>
</div>
<div style="text-align: left;">
<b>Paso 1. Creando el esqueleto</b></div>
<div style="text-align: justify;">
Siguiendo la metodología <b><a href="https://es.wikipedia.org/wiki/Modelo%E2%80%93vista%E2%80%93controlador">MVC</a></b>
, crearemos el esqueleto dentro de nuestro ejemplo/aplicación que nos permita separar nuestro código en Modelo, Vistas y la parte de Controlador. De esta forma será mucho más sencillo posteriormente poder mantener nuestro código y realizar ampliaciones futuras.</div>
<br />
<div style="text-align: left;">
<div style="text-align: center;">
<br /></div>
</div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/HrpgvOxJ--k" width="560"></iframe></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
<b>Paso 2. Creando las interfaces</b></div>
<div style="text-align: justify;">
Tal y como hemos visto en anteriores lecciones, el uso de los Managers (<b><a href="http://cookingsoftware.blogspot.com.es/2016/03/java-layout-managers.html">Managers básicos</a></b> o <b><a href="http://cookingsoftware.blogspot.com.es/2016/04/java-layout-managers-segunda-parte.html">Managers más avanzados</a></b>), nos permite estructurar de una forma ordenada todos los elementos de nuestras interfaces, hacienddo que se redistribuyan de acuerdo a unas dimensiones dependientes del dispositivo donde se visualiza la aplicación. En nuestro caso utilizaremos principalmente el <b><a href="https://www.youtube.com/watch?time_continue=3&v=a81S4HDLfcc">GridBagLayout</a></b>.
<br />
<div style="text-align: left;">
<div style="text-align: center;">
<br /></div>
</div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/J7LL40pHBcc" width="560"></iframe></div>
<div style="text-align: center;">
<br /></div>
</div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/IZtqOqvSKPI" width="560"></iframe></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
<b>Paso 3. Contraseña</b></div>
<div style="text-align: justify;">
En el momento que trabajamos con usuarios y contraseñas, entramos en un mundo bastante delicado donde es muy muy importante utilizar adecuadamente los sistemas de seguridad para mantener a salvo contraseñas. Uno de esos elementos es el <b><a href="https://docs.oracle.com/javase/tutorial/uiswing/components/passwordfield.html">JPasswordField</a></b>, que aunque resulta muy parecido en apariencia con el JTextField, internamente utiliza métodos más seguros pero por otro lado un poco más complejos de utilizar.
</div><br />
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br />
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/hAyDivP2rWo" width="560"></iframe></div>
<div style="text-align: center;">
<br /></div>
</div>
<div style="text-align: left;">
<b>Paso 4. Formulario de Registro</b></div>
<div style="text-align: justify;">
En la ventana de registro es importante realizar una comprobación de todos los campos, en primer lugar para que no estén vacíos, en segundo lugar en su corrección de forma y contenido. En este segundo caso no realizaremos un análisis exhaustivo de cómo realizarlo, sin embargo dejaremos perfectamente descrito el proceso general y en particular el más crítico como es el de las contraseñas.
</div><br />
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br />
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/ij3pkiH8D_c" width="560"></iframe></div>
<div style="text-align: center;">
<br /></div>
</div>
<div style="text-align: left;">
<b>Paso 5. Inserción de nuevo usuario</b></div>
<div style="text-align: justify;">
El siguiente paso es comenzar a interactuar entre las dos ventanas de creadas y la base de datos. Para ello introduciremos lo aprendido sobre <b><a href="http://cookingsoftware.blogspot.com.es/2016/04/java-insertando-en-base-de-datos.html">inserción en base de datos</a></b>, <b><a href="http://cookingsoftware.blogspot.com.es/2016/04/si-eres-educador-o-profesor-utiliza-la.html">recuperar información</a></b> o <b><a href="http://cookingsoftware.blogspot.com.es/2016/05/java-actualizando-la-base-de-datos.html">actualizar la base de datos</a></b>, sin perder de vista incluir el patrón <b><a href="http://cookingsoftware.blogspot.com.es/2016/05/java-partron-singleton.html">SingleTon</a></b> para manejar las conexiones de contra la base de datos.
</div><br />
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br />
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/IN7IGNm6Gh0" width="560"></iframe></div>
<div style="text-align: center;">
<br /></div>
</div>
<div style="text-align: justify;">
Más complicado será generar el hash en MD5 para poder almacenar nuestra contraseña en la base de datos, ya que no podemos almacenarla como un texto plano, sería un problema de seguridad. Sin entrar en detalles utilizaríamos la clase MessageDigest, que nos permite realizar dicha operación:
</div>
<pre class="prettyprint lang-java">// Cargamos en ejecución
m = MessageDigest.getInstance("MD5");
m.reset();
byte[] digest = m.digest(toBytes(pass));
</pre>
<div style="text-align: center;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/4EYOGlExmio" frameborder="0" allowfullscreen></iframe></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
<b>Paso 6. Finalizando y comprobando usuario</b></div>
<div style="text-align: justify;">
Por último sólo nos queda por comprobar el usuario y su login a través de la pantalla de logado. Para poder realizarlo reutilizaremos el código inicial añadiendo tanto una consulta a la base de datos con la que comprobamos el usuario y la librería MD5 para la contraseña introducida.
</div><br />
<div style="text-align: left;">
<br /></div>
<div style="text-align: center;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/GOApwo78sa8" frameborder="0" allowfullscreen></iframe></div>
<div class="plantillaboxwrap">
<div class="authorboxfull">
<div class="plantillaavatar-container">
<i class="fa fa-github fa-2x"></i>
</div>
<div class="author_description_container">
Descárgate o visualiza el código utilizado en el vídeo través de mi cuenta en GitHub
<br />
<center>
<b><a href=https://github.com/pacogomezarnal/CookingSoftware_Java/tree/master/LoginInterface>CÓDIGO EN GITHUB</a></b></center>
</div>
</div>
</div>Paco Gomezhttp://www.blogger.com/profile/03495230064612872919noreply@blogger.com0tag:blogger.com,1999:blog-3837698878603987896.post-17175222643098749532016-05-10T05:24:00.003-07:002016-05-10T05:24:45.445-07:00Java. Actualizando la base de datos<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzteJUvXXwotBdBFOZ5zh2a7R8-jkahyky0rFaN9mVF-bcl_AraTjKo_sVy989fEJID_T9GEp4ZXxF_CLJo03r9JjyKfpD49kDGsnnoUjecjirSKv8m5AJtXVr5WkYxdPK_P8rH22mb7qJ/s1600/base_datos.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzteJUvXXwotBdBFOZ5zh2a7R8-jkahyky0rFaN9mVF-bcl_AraTjKo_sVy989fEJID_T9GEp4ZXxF_CLJo03r9JjyKfpD49kDGsnnoUjecjirSKv8m5AJtXVr5WkYxdPK_P8rH22mb7qJ/s320/base_datos.png" width="289" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div style="text-align: justify;">
Siguiendo con la dinámica de trabajo con la base de datos de Java, después de haber visto la sentencia <b><a href=http://www.w3schools.com/sql/sql_select.asp>SELECT</a></b> e <b><a href=http://www.w3schools.com/sql/sql_insert.asp>INSERT</a></b>, le llega el turno a la de <b><a href=http://www.w3schools.com/sql/sql_update.asp>UPDATE</a></b>.</div>
<div style="text-align: justify;">
Una actualización necesita de dos informaciones para que resulte efectiva:
</div>
<div style="text-align: justify;">
<ul>
<li>Los datos que se necesitan para poder actualizar la información.</li>
<li>La fila y el identificador necesario para poder actualizar dicho registro</li>
</ul>
</div>
<div style="text-align: center;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/5wxlBot3KYs" frameborder="0" allowfullscreen></iframe></div>
<div style="text-align: center;">
<br /></div>
<div class="plantillaboxwrap">
<div class="authorboxfull">
<div class="plantillaavatar-container">
<img alt="Plantilla" class="author_avatar img-circle" height="50" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgafcSWI3EoiXrne-q0nnrx5M2_fOQ42ggbPqxslsguwfJrE7HDK0h_zmIIjWzriPAVIKy7JeIlVTLIQmxDR4zkO4sjNQ2JyLlt4CkR3YXT0GaZu-dLlEFfHG5JWlPHwRgZcuCugUeDNMWL/s1600/Terminal.png" width="96" />
</div>
<div class="author_description_container">
Si eres educador o profesor utiliza la siguiente plantilla para tus alumnos
<br />
<center>
<b><a href="https://docs.google.com/document/d/1RK4SDaOipu7peXSobuOFXCN-SRWKVR4U0pkzl7Iw-IA/edit?usp=sharing">PLANTILLA</a></b></center>
<center>
<center>
</center>
</center>
</div>
</div>
</div>
<div style="text-align: left;">
<b>PreparedStatement</b></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
La clase <b><a href="https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html">PreparedStatement</a></b> la podemos revisar en los documentos de Oracle con fantásticos ejemplos para poder utilizar directamente sobre nuestro código. Debido a que la acción de actualizar los datos de un registro es un poco más complejo que una búsqueda o inserción, podemos utilizar clases que permiten separar la parte de definición de la consulta de los datos mismos, haciendo mucho más flexible la construcción y ejecución de la misma.</div>
<div style="text-align: left;">
<div style="text-align: center;">
<br /></div>
</div>
<div style="text-align: center;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/URsXJgsSOOE" frameborder="0" allowfullscreen></iframe></div>
<div style="text-align: center;">
<br /></div>
<div class="plantillaboxwrap">
<div class="authorboxfull">
<div class="plantillaavatar-container">
<i class="fa fa-github fa-2x"></i>
</div>
<div class="author_description_container">
Descárgate o visualiza el código utilizado en el vídeo través de mi cuenta en GitHub
<br />
<center>
<b><a href=https://github.com/pacogomezarnal/CookingSoftware_Java/tree/master/UpdateEnBaseDatos>CÓDIGO EN GITHUB</a></b></center>
</div>
</div>
</div>Paco Gomezhttp://www.blogger.com/profile/03495230064612872919noreply@blogger.com0tag:blogger.com,1999:blog-3837698878603987896.post-29635955992099369892016-05-09T06:14:00.000-07:002016-05-09T06:18:04.663-07:00Orgulloso de ser de Ciclos Formativos<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvPbVzkpJqk6wP0mZ8iyA0RJ7fzy0v_aEehrPaj7u_rkzh2zXvmGgL29znFNthEpI6AVIBcKbwxdcUYXZ8l-1J8CJ_IVrg_MT8OVKQT35727RjqboOPz7jJEWaJ2hFsZ9AYo2Q7EmYEI9y/s1600/01d2b8a.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvPbVzkpJqk6wP0mZ8iyA0RJ7fzy0v_aEehrPaj7u_rkzh2zXvmGgL29znFNthEpI6AVIBcKbwxdcUYXZ8l-1J8CJ_IVrg_MT8OVKQT35727RjqboOPz7jJEWaJ2hFsZ9AYo2Q7EmYEI9y/s1600/01d2b8a.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Que quien es este personaje que aparece en la foto, pues <a href="https://www.linkedin.com/in/ricardoboluda">Ricardo Boluda</a>, un alumno que he tenido en DAW (<a href="http://www.floridauniversitaria.es/es-ES/OfertaAcademica/ciclosformativos/Paginas/desarrollo-aplicaciones-web-online.aspx?Perfil=Estudiante&cicloformativo=Desarrollo+de+Aplicaciones+Web+(Online)">Desarrollo de aplicaciones Web</a>) en <a href="http://www.floridauniversitaria.es/es-ES/Paginas/Estudiante.aspx?Perfil=Estudiante">Florida Universitaria</a>. Hablar de Ricardo es una excusa para hablar del orgullo y la satisfacción que me produce ser educador en ciclos formativos y en concreto en desarrollo tanto en Web, como en multiplataforma, como en móviles.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Como Ricardo tengo muchos muchos alumnos. De hecho hablando hace poco con compañeros de profesión, les hablaba de la suerte que tengo ya que los alumnos vienen motivados ya de casa, vienen con verdaderas ansias por aprender, y en estas etapas educativas "el alumno raro" es el que no viene con esas ganas de saber mucho más allá de lo que el temario nos marca.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
No es raro, tener a alumnos como Ricardo, donde decide que para mejorar su formación, prefiere abandonar un puesto de trabajo o aplazar sus prácticas obligatorias para realizar de forma super intensiva una formación como la de <a href="https://www.ironhack.com/en">IronHack</a>. Y hace poco me envió el blog en el que está contando su experiencia, <a href="http://codigoaloloco.wordpress.com/">codigoaloloco.wordpress.com</a> (como se nota que el diseño se te da muy bien). Que envidia tan insana tengo de no poder estar donde tu estas.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b>Orgulloso de ser de ciclos</b></div>
<div style="text-align: justify;">
<b><br /></b></div>
<div style="text-align: justify;">
Como marca el título de esta entrada, como profesor/educador de esta etapa, estoy muy orgulloso de lo que se ofrece, del esfuerzo que dedicamos los educadores, del esfuerzo del alumnado, del esfuerzo de los centros. Y de todo esta experiencia el único reproche es para la sociedad española, tan atrasada en este y otros aspectos, y en muchos orientadores de centros, ya que se sigue considerando a los ciclos formativos como el hermano pequeño de los estudios, "si no vales para estudiar, vales para un ciclo"</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Pues he de reivindicar que casos como el de Ricardo son cada vez más habituales, alumnos con mucho criterio, con incluso otras titulaciones que deciden y eligen por los ciclos (que para quien no lo sepa son <a href="https://es.wikipedia.org/wiki/Proceso_de_Bolonia"><b>ESTUDIOS SUPERIORES</b></a> como los grados universitarios, al menos las versiones de ciclos superiores). Y que tienen un éxito muy grande ya que actualmente en ell centro donde trabajo tenemos problemas para encontrar suficientes alumnos para tanta demanda de trabajo que existe.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Y dicho esto, voy a intentar recopilar las experiencias que me puedan transmitir ellos, ya que son ellos, mis alumnos los verdaderos responsables de este orgullo (os pongo un vídeo sobre una actividad realizada con makey makey)</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<iframe allowfullscreen="" frameborder="0" height="360" mozallowfullscreen="" src="https://player.vimeo.com/video/149613397" webkitallowfullscreen="" width="640"></iframe>
<a href="https://vimeo.com/149613397">makey makey</a> from <a href="https://vimeo.com/floridauniversitaria">Florida Universitaria</a> on <a href="https://vimeo.com/">Vimeo</a>.Paco Gomezhttp://www.blogger.com/profile/03495230064612872919noreply@blogger.com0tag:blogger.com,1999:blog-3837698878603987896.post-79356761591506656382016-05-08T00:13:00.003-07:002016-05-08T00:18:11.066-07:00Java. Patrón SingleTon<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcnrdRS2j1OkmeMr-gmz2nmqHfcMl3g3pDwFjDPAdq1X9YpuWQd7cLhzC4u-Dg5xqk3_XOHqO-hMLGfVblAVUlMNuR4HzW2bFv-7g2mXd0CrurYXIfNxbj5mITfUPQrXuxlouIdjN1jcEl/s1600/2000px-Singleton_UML_class_diagram.svg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="192" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcnrdRS2j1OkmeMr-gmz2nmqHfcMl3g3pDwFjDPAdq1X9YpuWQd7cLhzC4u-Dg5xqk3_XOHqO-hMLGfVblAVUlMNuR4HzW2bFv-7g2mXd0CrurYXIfNxbj5mITfUPQrXuxlouIdjN1jcEl/s320/2000px-Singleton_UML_class_diagram.svg.png" width="320" /></a></div>
<br />
<div style="text-align: justify;">
Tal y como indico en el primer vídeo, la definición y documentación que aparece en la Wikipedia sobre el patrón <b><a href="https://es.wikipedia.org/wiki/Singleton">SingleTon</a></b>, me parece excelente. Por ese motivo me remito a su definición:</div>
<div style="text-align: justify;">
“En ingeniería de software, el patrón singleton (instancia única en inglés) es un patrón de diseño diseñado para restringir la creación de objetos pertenecientes a una clase o el valor de un tipo a un único objeto.
Su intención consiste en garantizar que una clase sólo tenga una instancia y proporcionar un punto de acceso global a ella.”
</div>
<div style="text-align: justify;">
Por lo tanto que nos va a permitir esta metodología o patrón, en primer lugar poder acceder desde cualquier parte de nuestro proyecto y/o aplicación a dicho objeto sin necesidad de ir "pasando" el objeto por el constructor o por un método. En segundo lugar asegurarnos de que el objeto es único.
</div>
<div style="text-align: center;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/PGQPNKWk4oE" frameborder="0" allowfullscreen></iframe>
<br /></div>
<div class="plantillaboxwrap">
<div class="authorboxfull">
<div class="plantillaavatar-container">
<img alt="Plantilla" class="author_avatar img-circle" height="50" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgafcSWI3EoiXrne-q0nnrx5M2_fOQ42ggbPqxslsguwfJrE7HDK0h_zmIIjWzriPAVIKy7JeIlVTLIQmxDR4zkO4sjNQ2JyLlt4CkR3YXT0GaZu-dLlEFfHG5JWlPHwRgZcuCugUeDNMWL/s1600/Terminal.png" width="96" />
</div>
<div class="author_description_container">
Si eres educador o profesor utiliza la siguiente plantilla para tus alumnos
<br />
<center>
<b><a href="https://docs.google.com/document/d/1dHVKLYMbN1SOQCA5mWkqGjxIkVJNIZFvj_QajZJDmjg/edit">PLANTILLA</a></b></center>
<center>
<center>
</center>
</center>
</div>
</div>
</div>
<div style="text-align: left;">
<b>Utilizándolo con BBDD</b></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Uno de los usos más directos y útiles es cuando utilizamos el patrón junto con nuestras clases de BBDD, y en concreto con la clase que se encarga de la conexión a la base de datos.
Una vez que nos hemos conectado a la base de datos, nos interesa mantener abierta dicha conexión, y sobre todo que SEA ÚNICA, ya que esto si que sería un problema importante y una fuga de memoria</div>
<div style="text-align: left;">
<div style="text-align: center;">
<br /></div>
</div>
<div style="text-align: center;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/u8R1NNELy6M" frameborder="0" allowfullscreen></iframe></div>
<div style="text-align: center;">
<br /></div>
<div class="plantillaboxwrap">
<div class="authorboxfull">
<div class="plantillaavatar-container">
<i class="fa fa-github fa-2x"></i>
</div>
<div class="author_description_container">
Descárgate o visualiza el código utilizado en el vídeo través de mi cuenta en GitHub
<br />
<center>
<b><a href=https://github.com/pacogomezarnal/CookingSoftware_Java/tree/master/PatronSingleton>CÓDIGO EN GITHUB</a></b></center>
</div>
</div>
</div>
Paco Gomezhttp://www.blogger.com/profile/03495230064612872919noreply@blogger.com0tag:blogger.com,1999:blog-3837698878603987896.post-27054903201766380822016-05-02T08:49:00.003-07:002016-05-02T09:06:23.473-07:00Android. Leyendo JSON desde un servicio web<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4aCFnctT8KpkQ5uuVrFxl69Bp7EFTI8hvr5yxY3sFBiZdvyE4WOiZcZZJ-6kxS5NBJ2I4uKFlrOA68yM8f0Cbp_Zrz-jbWkd5eaFkkWkpljZ9Qh3Qik7iFZj8LT0ucnOiMKU3a0o7PiwE/s1600/14636491710_d347ce16ae_b.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4aCFnctT8KpkQ5uuVrFxl69Bp7EFTI8hvr5yxY3sFBiZdvyE4WOiZcZZJ-6kxS5NBJ2I4uKFlrOA68yM8f0Cbp_Zrz-jbWkd5eaFkkWkpljZ9Qh3Qik7iFZj8LT0ucnOiMKU3a0o7PiwE/s320/14636491710_d347ce16ae_b.jpg" width="320" /></a></div>
<br />
<div style="text-align: left;">
Desde Android y en general desde tecnología de desarrollo para móviles, el uso de interfaces o librerías para atacar a bases de datos es totalmente imposible por varias razones:</div>
<ul>
<li>La principal es para evitar problemas de seguridad. Un usuario que está más o menos registrado realizaría accesos a la base de datos, al final, lo más importante de las aplicaciones de una forma directa y no controlada</li>
<li>Escalabilidad y mantenimmiento. Tener el desarrollo preparado para realizar todo el proceso contra una tecnología de base de datos no proporciona la escalabilidad para poder realizar cambios o mejoras</li>
</ul>
<div style="text-align: left;">
Por este motivo es necesario poder realizar consultas a servicios en la nube que nos permita devolver contenido e incorporar a nuestra aplicación. Y actualmente el protocolo más legible, rápido y fácil de incorporar es el uso de <b><a href="http://www.json.org/">JSON</a></b></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<b>Conexión al servicio</b></div>
<div style="text-align: left;">
El primer e importante paso es conectarnos al servicio web o API que nos proporcione los datos necesarios, es decir el JSON para comenzar a tratar los datos.</div>
<div style="text-align: left;">
Para ello utilizaremos los datos que nos proporciona el ayuntamiento de Valencia en el <b><a href="http://gobiernoabierto.valencia.es/es/">Portal de datos abiertos</a></b>, y en concreto utilizaremos los datos referentes a las cámaras de tráfico y seguridad de Valencia.</div>
<div style="text-align: left;">
Y ¿cómo hacemos esto? Pues tan sencillo o complicado como utilizando la clase <b><a href="http://developer.android.com/intl/es/reference/android/os/AsyncTask.html">AsynTask</a></b> y <b><a href="http://developer.android.com/intl/es/reference/java/net/HttpURLConnection.html">HttpURLConnection</a></b> de Android. El código en concreto sería el siguiente acompañado por supuesto de la explicación en vídeo:</div>
<pre class="prettyprint lang-java">// Setup the connection with the DB
//Esta clase realizará la conexión devolviendo el JSON
@Override
protected JsonReader doInBackground(String... args) {
String temp = "";
try {
URL url = new URL(urlCamaras);
urlConnection = (HttpURLConnection) url.openConnection();
temp = urlConnection.getResponseMessage();
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
CameraJSONReader cJSONReader=new CameraJSONReader();
try {
camaras = cJSONReader.readJSONMsg(reader);
} catch (IOException e) {
e.printStackTrace();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (urlConnection != null) urlConnection.disconnect();
return reader;
}
}
</pre>
<div style="text-align: left;">
<div style="text-align: center;">
<br /></div>
</div>
<div style="text-align: center;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/gIMtDYVyGVc" frameborder="0" allowfullscreen></iframe></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
<b>Parseando el JSON</b></div>
<div style="text-align: left;">
El segundo paso es parsear los datos de acuerdo a nuestras necesidades y la estructura del JSON, para este procedimiento no existe un único método ni mecanismo de realizar el proceso ya que el objetivo, la aplicación y el documento JSON serán diferentes</div>
<div style="text-align: left;">
En nuestro caso planteamos un ejemplo haciendo uso de la clase <b><a href="http://developer.android.com/intl/es/reference/android/util/JsonReader.html">JSONReader</a></b>, que permite avanzar y parsear el Buffer recogido de la conexión</div>
<div style="text-align: left;">
Un trozo de ejemplo sería el siguiente, aunque para entender correctamente su funcionamiento es mejor visualizar el vídeo:</div>
<pre class="prettyprint lang-java">// Setup the connection with the DB
reader.beginObject();
while (reader.hasNext()) {
String name = reader.nextName();
Log.i("MENSAJE","LLEGO A JSON");
if (name.equals("features")) {
//Estamos en el array de camaras
Log.i("MENSAJE","ENTRO EN FEATURES");
reader.beginArray();
while (reader.hasNext()) {
camaras.add(readCamara(reader));
Log.i("MENSAJE","CAMARA AÑADIDA");
}
reader.endArray();
}else {
reader.skipValue();
}
}
</pre>
<div style="text-align: left;">
<div style="text-align: center;">
<br /></div>
</div>
<div style="text-align: center;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/GUelqYS29NY" frameborder="0" allowfullscreen></iframe></div>
<div style="text-align: center;">
<br /></div>
<div class="plantillaboxwrap">
<div class="authorboxfull">
<div class="plantillaavatar-container">
<i class="fa fa-github fa-2x"></i>
</div>
<div class="author_description_container">
Descárgate o visualiza el código utilizado en el vídeo través de mi cuenta en GitHub
<br />
<center>
<b><a href=https://github.com/pacogomezarnal/CookingSoftware_Android/tree/master/EjemploJSON>CÓDIGO EN GITHUB</a></b></center>
</div>
</div>
</div>Paco Gomezhttp://www.blogger.com/profile/03495230064612872919noreply@blogger.com0tag:blogger.com,1999:blog-3837698878603987896.post-62793752103402414522016-04-30T00:38:00.001-07:002016-04-30T00:40:06.660-07:00Java. Layout Managers Segunda parte<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP1URuut_HTKINekUbhDqUHSNqYZuBgfPZg8ajSr1F7K08_kWZxLb50ZaVWqZwUWU_tE1gUf1rCu5oZazVUrHbarb67GMm_8R3UvZm3pu3-isAbglywaC-3HORwio27hoOBmc7VnUSemtp/s1600/Captura.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="114" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP1URuut_HTKINekUbhDqUHSNqYZuBgfPZg8ajSr1F7K08_kWZxLb50ZaVWqZwUWU_tE1gUf1rCu5oZazVUrHbarb67GMm_8R3UvZm3pu3-isAbglywaC-3HORwio27hoOBmc7VnUSemtp/s320/Captura.PNG" width="320" /></a></div>
<br />
<center style="text-align: justify;">
Las ventanas que diseñamos pueden ser usadas en multitud de ordenadores y dispositivos, por ese motivo es muy importante:</center>
<center>
<div style="text-align: justify;">
<ul>
<li>Utilizar Layouts que dinámicamente gestionen, recoloquen y redimensionen los diferentes componentes gráficos para una correcta visualización de las interfaces</li>
<li>Por otro lado, no siempre podemos/debemos confiar en la gestión de nuestros layouts, debemos testar y comprobar su correcto funcionamiento en diferentes resoluciones y dispositivos.</li>
</ul>
</div>
</center>
<div class="plantillaboxwrap">
<div class="authorboxfull">
<div class="plantillaavatar-container">
<img alt="Plantilla" class="author_avatar img-circle" height="50" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgafcSWI3EoiXrne-q0nnrx5M2_fOQ42ggbPqxslsguwfJrE7HDK0h_zmIIjWzriPAVIKy7JeIlVTLIQmxDR4zkO4sjNQ2JyLlt4CkR3YXT0GaZu-dLlEFfHG5JWlPHwRgZcuCugUeDNMWL/s1600/Terminal.png" width="96" />
</div>
<div class="author_description_container">
Si eres educador o profesor utiliza la siguiente plantilla para tus alumnos
<br />
<center>
<b><a href="https://docs.google.com/document/d/1DPeV5qZA9QW_PFD18sksUtHI9p3wukgeLo3BSXL6yY4/edit?usp=sharing">PLANTILLA</a></b></center>
<center>
<center>
</center>
</center>
</div>
</div>
</div>
<div style="text-align: left;">
<b>FlowLayout</b></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
El FlowLayout, es un gestor muy sencillo que adecúa los componentes uno al lado del otro hasta alcanzar el tamaño máximo de la ventana</div>
<div style="text-align: left;">
<div style="text-align: center;">
<br /></div>
</div>
<div style="text-align: center;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/OGLCrI3AikM" frameborder="0" allowfullscreen></iframe></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
<b>GridLayout</b></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
El GridLayout, coloca los elementos dentro de una matriz de n columnas y m filas
</div>
<div style="text-align: left;">
<div style="text-align: center;">
<br /></div>
</div>
<div style="text-align: center;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/cRMQ5-1DNbs" frameborder="0" allowfullscreen></iframe></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
<b>GridBagLayout</b></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
GridBagLayout, es un manager muy flexible pero a su vez más complejo de configurar y gestionar
</div>
<div style="text-align: left;">
<div style="text-align: center;">
<br /></div>
</div>
<div style="text-align: center;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/a81S4HDLfcc" frameborder="0" allowfullscreen></iframe></div>
<div style="text-align: center;">
<br /></div>
<div class="plantillaboxwrap">
<div class="authorboxfull">
<div class="plantillaavatar-container">
<i class="fa fa-github fa-2x"></i>
</div>
<div class="author_description_container">
Descárgate o visualiza el código utilizado en el vídeo través de mi cuenta en GitHub
<br />
<center>
<b><a href=https://github.com/pacogomezarnal/CookingSoftware_Java/tree/master/LayoutManagers2>CÓDIGO EN GITHUB</a></b></center>
</div>
</div>
</div>Paco Gomezhttp://www.blogger.com/profile/03495230064612872919noreply@blogger.com0tag:blogger.com,1999:blog-3837698878603987896.post-62143934078505707502016-04-27T04:31:00.002-07:002016-04-30T00:40:57.790-07:00Java. Recuperar información desde una base de datos<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj35vfV1K-Ol8QeCr7ye6hQItKXdVwiIvI_og12xty2ssQAKWVjX3arK-3U3AzOcoIZ8Bdbwyt29AYTHr5bduU-scjvOxWsZ4CFj38tdfLSYmfFADn-2ZCedaYMNJynHG0_FwlKU_Fo2bfj/s1600/base_datos.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj35vfV1K-Ol8QeCr7ye6hQItKXdVwiIvI_og12xty2ssQAKWVjX3arK-3U3AzOcoIZ8Bdbwyt29AYTHr5bduU-scjvOxWsZ4CFj38tdfLSYmfFADn-2ZCedaYMNJynHG0_FwlKU_Fo2bfj/s320/base_datos.png" width="289" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div style="text-align: justify;">
Una vez que tenemos información en nuestra base de datos, la actividad más común e importante que realizamos con la misma es la búsqueda, selección y visualización de la información.
No vamos a profundizar en el uso de las sentencias SQL, aunque sí mostrar cómo se realiza una consulta básica a través de una sentencia <b><a href="http://www.w3schools.com/sql/sql_select.asp">SELECT</a></b>, que utilizaremos con nuestro jdbc para devolver una o múltiples registros.</div>
<div class="plantillaboxwrap">
<div class="authorboxfull">
<div class="plantillaavatar-container">
<img alt="Plantilla" class="author_avatar img-circle" height="50" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgafcSWI3EoiXrne-q0nnrx5M2_fOQ42ggbPqxslsguwfJrE7HDK0h_zmIIjWzriPAVIKy7JeIlVTLIQmxDR4zkO4sjNQ2JyLlt4CkR3YXT0GaZu-dLlEFfHG5JWlPHwRgZcuCugUeDNMWL/s1600/Terminal.png" width="96" />
</div>
<div class="author_description_container">
Si eres educador o profesor utiliza la siguiente plantilla para tus alumnos
<br />
<center>
<b><a href="https://docs.google.com/document/d/1ZzyJ7ccrTiqbrtuhj3ywWFluptR7FHeskmpV8LasMSE/edit?usp=sharing">PLANTILLA</a></b></center>
<center>
<center>
</center>
</center>
</div>
</div>
</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<b>Seleccionar datos de una BBDD</b></div>
<div style="text-align: left;">
Seleccionar datos de una base de datos y almacenarlos o mostrarlos es exactamente igual al procedimiento que ya vimos en la lección <b><a href="http://cookingsoftware.blogspot.com.es/2016/04/java-insertando-en-base-de-datos.html">sobre inserción de datos en una base de datos con JDBC.</a></b></div>
<pre class="prettyprint lang-java">// Setup the connection with the DB
String sql = "SELECT nombre, apellido1, apellido2, edad FROM usuarios WHERE nombre='"+nombreBuscar+"'";
rs = orden.executeQuery(sqlMal);
</pre>
<div style="text-align: left;">
<div style="text-align: center;">
<br /></div>
</div>
<div style="text-align: center;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/dM4raCLzASc" frameborder="0" allowfullscreen></iframe>
</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
<b>De la BBDD a un JComboBox</b></div>
<div style="text-align: left;">
Uno de los componentes de la librería Swing más sencillos y versátiles para comenzar a utilizar con nuestra base de datos es el JComboBox, anteriormente habíamos comprobado cómo usarlo con objetos, ahora uniremos esa información al uso con base de datos.</div>
<div style="text-align: left;">
<div style="text-align: center;">
<br /></div>
</div>
<div style="text-align: center;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/_USwNZIaEfs" frameborder="0" allowfullscreen></iframe>
</div>
<div style="text-align: center;">
<br /></div>
<div class="plantillaboxwrap">
<div class="authorboxfull">
<div class="plantillaavatar-container">
<i class="fa fa-github fa-2x"></i>
</div>
<div class="author_description_container">
Descárgate o visualiza el código utilizado en el vídeo través de mi cuenta en GitHub
<br />
<center>
<b><a href="https://github.com/pacogomezarnal/CookingSoftware_Java/tree/master/SeleccionEnBaseDatos">CÓDIGO EN GITHUB</a></b></center>
</div>
</div>
</div>Paco Gomezhttp://www.blogger.com/profile/03495230064612872919noreply@blogger.com0tag:blogger.com,1999:blog-3837698878603987896.post-87191358365676195492016-04-24T01:54:00.000-07:002016-04-24T01:54:08.672-07:00Unidad Didáctica. Crear Web con WordPress<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuWFZMnH7P3uzCR67ymxxBgJPUmfF0CAUcDNxrDwuZWlnZConDy6dp1U8xHJ2KwngDMnSztrxzVr0BXhk2T3S6XhCvyRDVX9bU1hpZsy6uq2OLelu8BSxFBqqs_PpyRQIPxUiu_h0DUDdY/s1600/Plantilla+UD.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuWFZMnH7P3uzCR67ymxxBgJPUmfF0CAUcDNxrDwuZWlnZConDy6dp1U8xHJ2KwngDMnSztrxzVr0BXhk2T3S6XhCvyRDVX9bU1hpZsy6uq2OLelu8BSxFBqqs_PpyRQIPxUiu_h0DUDdY/s320/Plantilla+UD.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
En anteriores posts, he ido introduciendo el uso de Wordpress de una forma sencilla y mediante Wordpress.com para la creación, diseño y mantenimiento de una Web.</div>
<div class="separator" style="clear: both; text-align: justify;">
¿Cómo podemos utilizarlo en el aula, programarlo y evaluarlo? Os resultará muy fácil a través del siguiente documento:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://docs.google.com/document/d/1w8N3DcFMOoYuZSKxNf7Kecbb-f2kpyGyxuc_viGfxpY/edit?usp=sharing"><br /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://docs.google.com/document/d/1w8N3DcFMOoYuZSKxNf7Kecbb-f2kpyGyxuc_viGfxpY/edit?usp=sharing">ENLACE A LA UNIDAD DIDÁCTICA</a></div>
Paco Gomezhttp://www.blogger.com/profile/03495230064612872919noreply@blogger.com0tag:blogger.com,1999:blog-3837698878603987896.post-42021801573950946402016-04-20T08:20:00.002-07:002016-04-30T00:41:53.617-07:00Java. Utilizando JComboBox<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglSCpiYdmFByPsgNSQ7QGP7m6uK90XvUfvW2L7-kJ2V5QzWi5q9uMdVz_4QR2BJNghTHe9HOTvJJ8ZAxYpm6gIjPpJiYwRZJaBQJnsqeMZ6KiLyaVjRGpCV0TBN9-eGUsG_cTmsmqUlcnG/s1600/JComboBox.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="154" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglSCpiYdmFByPsgNSQ7QGP7m6uK90XvUfvW2L7-kJ2V5QzWi5q9uMdVz_4QR2BJNghTHe9HOTvJJ8ZAxYpm6gIjPpJiYwRZJaBQJnsqeMZ6KiLyaVjRGpCV0TBN9-eGUsG_cTmsmqUlcnG/s320/JComboBox.PNG" width="320" /></a></div>
<br />
<div style="text-align: justify;">
Llega un momento en cualquier aplicación que necesitamos manejar datos e información y además necesitamos representarlos de forma visual. Uno de esos elementos visuales básicos que nos permiten manejar y presentar información en Java es el <a href="https://docs.oracle.com/javase/7/docs/api/javax/swing/JComboBox.html">JComboBox</a>. Con este elemento podemos almacenar información que después podemos presentar en un desplegable que al reaccionar con el teclado o con el ratón nos permite de una forma fácil realizar selecciones .</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/dkBocUVdKLo" frameborder="0" allowfullscreen></iframe></div>
<div class="plantillaboxwrap">
<div class="authorboxfull">
<div class="plantillaavatar-container">
<img alt="Plantilla" class="author_avatar img-circle" height="50" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgafcSWI3EoiXrne-q0nnrx5M2_fOQ42ggbPqxslsguwfJrE7HDK0h_zmIIjWzriPAVIKy7JeIlVTLIQmxDR4zkO4sjNQ2JyLlt4CkR3YXT0GaZu-dLlEFfHG5JWlPHwRgZcuCugUeDNMWL/s1600/Terminal.png" width="96" />
</div>
<div class="author_description_container">
Si eres educador o profesor utiliza la siguiente plantilla para tus alumnos
<br />
<center>
<b><a href="https://docs.google.com/document/d/1FVsWpwDEGe2uQfg-fXDoWtVJdFm6K9v2-C5szklbU8Y/edit?usp=sharing">PLANTILLA</a></b></center>
<center>
<center>
</center>
</center>
</div>
</div>
</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
<b>Manejando eventos</b></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: justify;">
Los dos <a href="https://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html">eventos</a> más usados dentro del JComboBox son tanto el ActionListener como el ItemLisener. Los dos tienen sentidos o usos diferentes, el primero se aplica cuando necesitamos información de comportamiento del JComboBox, mientras que el segundo Listener se aplica cuando necesitamos interactuar con un determinado item.</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/BE8taEaUOWM" frameborder="0" allowfullscreen></iframe></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
<b>Manejando objetos</b></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: justify;">
En el primer ejemplo mostramos como manejar String o un array de String, es casi el uso más directo que se nos viene a la cabeza cuando pensamos en un objeto de estas características. Pero la gran potencia de JComboBox es la posibilidad de manejar objetos, su visualización y posterior uso. Veamoslo a través de un ejemplo</div>
<div style="text-align: center;">
<div style="text-align: center;">
<br /></div>
<iframe width="560" height="315" src="https://www.youtube.com/embed/xoVoRT4MyU4" frameborder="0" allowfullscreen></iframe></div>
<div class="plantillaboxwrap">
<div class="authorboxfull">
<div class="plantillaavatar-container">
<i class="fa fa-github fa-2x"></i>
</div>
<div class="author_description_container">
Descárgate o visualiza el código utilizado en el vídeo través de mi cuenta en GitHub
<br />
<center>
<b><a href=https://github.com/pacogomezarnal/CookingSoftware_Java/tree/master/ManajarJCombo>CÓDIGO EN GITHUB</a></b></center>
</div>
</div>
</div>Paco Gomezhttp://www.blogger.com/profile/03495230064612872919noreply@blogger.com0tag:blogger.com,1999:blog-3837698878603987896.post-57280116986453643552016-04-11T08:00:00.000-07:002016-04-19T02:41:42.493-07:00Java. Insertando en base de datos<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEge2de1ra2rBaULjvfkwPYHhXjH1r7t71cVRSo_yxVgIAgn8o3cczomu9AcZk_9T7jC9BtVh7vno-nPLOW_eu__yCQhVgY1kmh-xz7JntfKJqtA0dQklZjFRvyK-N8O51WfEqduN_zIZoI5/s1600/base_datos.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEge2de1ra2rBaULjvfkwPYHhXjH1r7t71cVRSo_yxVgIAgn8o3cczomu9AcZk_9T7jC9BtVh7vno-nPLOW_eu__yCQhVgY1kmh-xz7JntfKJqtA0dQklZjFRvyK-N8O51WfEqduN_zIZoI5/s200/base_datos.png" width="180" /></a></div>
<br />
<div class="plantillaboxwrap">
<div class="authorboxfull">
<div class="plantillaavatar-container">
<img alt="Plantilla" class="author_avatar img-circle" height="50" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgafcSWI3EoiXrne-q0nnrx5M2_fOQ42ggbPqxslsguwfJrE7HDK0h_zmIIjWzriPAVIKy7JeIlVTLIQmxDR4zkO4sjNQ2JyLlt4CkR3YXT0GaZu-dLlEFfHG5JWlPHwRgZcuCugUeDNMWL/s1600/Terminal.png" width="96" />
</div>
<div class="author_description_container">
Si eres educador o profesor utiliza la siguiente plantilla para tus alumnos
<br />
<center>
<b><a href="https://docs.google.com/document/d/1g36gT36VZ-gbyKcMFwioxoxstXMgDL_Qh9Jj_lWg38E/edit?usp=sharing">PLANTILLA</a></b></center>
<center>
<center>
</center>
</center>
</div>
</div>
</div>
<center style="text-align: justify;">
La interacción con la base de datos nos ofrece principalmente la posibilidad de persistencia de la información, es decir, poder disponer de la información para su búsqueda y/o modificación posterior aún cuando nuestra aplicación se haya apagado.</center>
<center>
</center>
<center>
<div style="text-align: justify;">
Por otro lado provoca que debamos ser meticulosos a la hora de diseñar nuestra aplicación, ya que diferentes no sólo estamos trabajando con ventanas que hacen uso de diferentes clases, sino que generamos una interacción con sistemas externos, y por lo tanto las buenas prácticas a la hora de diseñar nuestra aplicación es muy importante:</div>
<div style="text-align: justify;">
<ul>
<li>Utilizar la metodología MVC para organizar nuestro código</li>
<li>Utilizar una clase para cada tabla de la base de datos</li>
<li>Separar las interfaces del resto del código</li>
<li>Incluir el conector adecuado en nuestro proyecto</li>
</ul>
</div>
</center>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/k1vH-Yev6wc" width="560"></iframe></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
<b>Buenas prácticas</b></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Tal y como avanzábamos. Deberemos, nuestros proyectos cuando incorporan interacción y manejo de la base de datos, provoca un crecimiento importante del código y por lo tanto necesitamos tener una buena estructura de carpetas, paquetes y librerías</div>
<div style="text-align: left;">
<div style="text-align: center;">
<br /></div>
</div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/ucOkbCTiKGM" width="560"></iframe></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
<b>Insertando un nuevo registro</b></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Para insertar un nuevo registro en la base de datos, necesitamos realizar tres pasos. En primer lugar cargar el jdbc adecuado para nuestro proyecto.</div>
<div style="text-align: left;">
<br /></div>
<pre class="prettyprint lang-java">// Cargamos en ejecución
Class.forName("com.mysql.jdbc.Driver");
</pre>
En segundo lugar conectarnos a la base de datos.<br />
<pre class="prettyprint lang-java">// Setup the connection with the DB
connect = DriverManager.getConnection("jdbc:mysql://XX.XX.XX.XX/baseDatos?"
+ "user=usuario&password=pass");
</pre>
Insertar en la base de datos será definitivamente realizar la consulta en concreto
<br />
<pre class="prettyprint lang-java">// Setup the connection with the DB
orden = conexion.createStatement();
String sql = "INSERT INTO usuarios (nombre,apellido1,apellido2,edad) " +
"VALUES ('"+nombre+"', '"+apellido1+"', '"+apellido2+"', "+edad+")";
orden.executeUpdate(sql);
</pre>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/a-kYIk3vW50" width="560"></iframe>
</div>
<div class="plantillaboxwrap">
<div class="authorboxfull">
<div class="plantillaavatar-container">
<i class="fa fa-github fa-2x"></i>
</div>
<div class="author_description_container">
Descárgate o visualiza el código utilizado en el vídeo través de mi cuenta en GitHub
<br />
<center>
<b><a href=https://github.com/pacogomezarnal/CookingSoftware_Java/tree/master/InsercionEnBaseDatos>CÓDIGO EN GITHUB</a></b></center>
</div>
</div>
</div>
Paco Gomezhttp://www.blogger.com/profile/03495230064612872919noreply@blogger.com0tag:blogger.com,1999:blog-3837698878603987896.post-2823381195560974932016-04-02T00:15:00.001-07:002016-04-07T05:22:29.570-07:00Java. Errores en la inicialización. Debug<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTKQNX5giPKL179KBf5UVke4lAMU2AEFeNZVdz5dzvJPo7vksu60piN902iujvm5DC1VLrVL483YD5oepRe4xadMWXinyXPrQLptR9VM7ohbrEfuD2avcQIbcCBqMiD8HSuUPnllCXJHBy/s1600/2000px-Red_bug.svg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTKQNX5giPKL179KBf5UVke4lAMU2AEFeNZVdz5dzvJPo7vksu60piN902iujvm5DC1VLrVL483YD5oepRe4xadMWXinyXPrQLptR9VM7ohbrEfuD2avcQIbcCBqMiD8HSuUPnllCXJHBy/s200/2000px-Red_bug.svg.png" width="199" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Uno de las tareas que más me gustaba cuando trabajaba como desarrollador, era la parte de testado y debug, lo se, soy un friki raro. Sin embargo conforme los proyectos aumentan en complejidad, bien por cantidad de código, bien, por interrelaciones entre diferentes clases, resulta imprescindible saber manejarse con el debug, y la verdad no es nada difícil.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<b>Encontrando el error</b></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
El primer paso será encontrar el punto donde se produce el error y comprender el porqué se produce, y aunque parece dos cuestiones iguales para nada lo son:</div>
<div class="separator" style="clear: both; text-align: justify;">
</div>
<ul>
<li style="text-align: justify;">Encontrar el error en el caso de Java y Eclipse, consiste en utilizar cualquier mecanismo para saber cúal es la línea exacta donde nuestro programa deja de funcionar. Claramente, cuando el programa es más complejo o grande, debemos utilizar la combinación DEBUG+STEP INTO+STEP OVER+WATCH. En el vídeo que os facilito lo podéis observar perfectamente.</li>
<li style="text-align: justify;">Una vez encontrado el error, debemos COMPRENDER PORQUÉ SUCEDE, no nos sirve con ir probando de forma aleatoria.</li>
</ul>
<div style="text-align: justify;">
Voy a utilizar como ejemplo el código de un muy buen alumno ya que podemos utilizarlo perfectamente para esto que estamos explicando. Pero antes de ver dónde se encuentra el problema os animo a que vosotros mismos lo busquéis:
</div>
<div class="plantillaboxwrap">
<div class="authorboxfull">
<div class="plantillaavatar-container">
<i class="fa fa-github fa-2x"></i>
</div>
<div class="author_description_container">
Descárgate o visualiza el código CON ERRORES a través de mi cuenta en GitHub
<br />
<center>
<b><a href="https://github.com/pacogomezarnal/CookingSoftware_Java/tree/master/ProyectoConErrores">CÓDIGO EN GITHUB</a></b></center>
</div>
</div>
</div>
En el siguiente vídeo podéis ver cómo encontrar el error:
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/6T5Q4VUj4vc" width="560"></iframe><br /></div>
<br />
Una vez que sabéis dónde está el error, es necesario comprender el porqué, en el siguiente video se muestra porqué se produce el error:
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/VPZJ0KHj0pg" width="560"></iframe><br /></div>
<b><br /></b>
<b>Corregir el error</b><br />
<br />
Una vez que hemos encontrado el error, nos toca corregirlo. En este caso es un problema de inicialización combinado con orden de inicialización de los diferentes objetos. Una vez que hayáis corregido el error podéis compararla con mi solución (NO HAY UNA SOLUCIÓN ÚNICA)<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="plantillaboxwrap">
<div class="authorboxfull">
<div class="plantillaavatar-container">
<i class="fa fa-github fa-2x"></i>
</div>
<div class="author_description_container">
Descárgate o visualiza el código CORREGIDO a través de mi cuenta en GitHub
<br />
<center>
<b><a href="https://github.com/pacogomezarnal/CookingSoftware_Java/tree/master/ProyectoCorregido">CÓDIGO EN GITHUB</a></b></center>
</div>
</div>
</div>
En el siguiente vídeo podéis ver cómo corregir el error:
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/dKABHiAmABk" frameborder="0" allowfullscreen></iframe><br /></div>
<br />Paco Gomezhttp://www.blogger.com/profile/03495230064612872919noreply@blogger.com2tag:blogger.com,1999:blog-3837698878603987896.post-69984957761231336302016-03-31T23:58:00.000-07:002016-04-01T00:49:24.880-07:00Landing Page. Finalizando<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgA-4h30LO7XPwj3XGTZGHQBstP2K9ijyoD3rR5z63oMbk5eQTh3X0aizbJJ1I6Xr896hE11JqV0dJ9PG9FmQ1phrvpxoU_he-qCHcF3psKNHoBvNcICtSty89fLoonXh0ZhyphenhyphenMbqF3U7yhg/s1600/Panel.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgA-4h30LO7XPwj3XGTZGHQBstP2K9ijyoD3rR5z63oMbk5eQTh3X0aizbJJ1I6Xr896hE11JqV0dJ9PG9FmQ1phrvpxoU_he-qCHcF3psKNHoBvNcICtSty89fLoonXh0ZhyphenhyphenMbqF3U7yhg/s400/Panel.PNG" width="400" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Para finalizar nuestra Landing Page , quedarán tres aspectos importantes que debemos de configurar, parametrizar y completar: configurar los plugins necesarios para particularizar los detalles de nuestro negocio, adecuar los diferentes menús para la correcta navegabilidad de la web e incluir los contenidos necesarios para que nuestro negocio sea aractivo y además refleje los aspectos a transmitir a nuestro futuro cliente.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b>Plugins o widgets</b></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Uno de los aspectos más potentes de WordPress es la posibilidad de utilizar y configurar los Plugins o Widgets, Estos son elementos que podemos colocar y utilizar en diferentes puntos de nuestra web una vez que dichas zonas se han adaptado para poderlos insertar, de esta forma estamos reutilizando el trabajo realizado. Existen muchísimos plugins y widgets de terceros que podemos incluir, la gran mayoría gratuitos, algunos son propios del Template elegido, otros son más generalistas.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/9-av1kQYIc0" width="560"></iframe>
</div>
<div style="text-align: justify;">
<b><br /></b>
<b>Menús</b><br />
<b><br /></b>
Configurar los diferentes menús de nuestra web es un aspecto muy sencillo, pero por otro lado bastante delicado ya que la colocación de los mismos, la elección correcta de los textos y su estructura, creará la diferencia en una buena o mala experiencia de usuario en la navegabilidad y alcance de los contenidos.<br />
<br />
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/-Vmq4IaZoFo" width="560"></iframe>
<br /></div>
<div style="text-align: center;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/8MPwkDF-yEw" frameborder="0" allowfullscreen></iframe>
</div>
<br />
<b>Contenido</b><br />
<b><br /></b>
Por último, nos quedará incorporar el diferente contenido de tres formas diferentes: a través de páginas estáticas, a través de posts con una marca de fecha y a través de los testimonios o galerías. El contenido, puede ir realizándose en paralelo que se va configurando el template, los plugins y los menus. De hecho, muchas configuraciones dependen de tener contenido ya implementado para así poderlo enlazar.<br />
<br />
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/CW6c9_OnpLw" width="560"></iframe>
<br /></div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/owJKtmsZgzc" width="560"></iframe>
</div>
</div>Paco Gomezhttp://www.blogger.com/profile/03495230064612872919noreply@blogger.com0tag:blogger.com,1999:blog-3837698878603987896.post-64231884913884470782016-03-30T23:54:00.000-07:002016-03-31T10:55:22.542-07:00Java. Layout Managers<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHf-YzcvcRLgt6wgejWlm49uc2eTeV3UlzaJEuRISnvT8BomwttoUFn5RbFpVCAT8UUUaFlpp-TE4PKdDGi6RLVQJhyphenhyphenfnRiEIWJnCxig7B3CjJuhUvEflwErR1K8OVvRdTw1fF-mbAJ66w/s1600/01_Layout_Managers.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHf-YzcvcRLgt6wgejWlm49uc2eTeV3UlzaJEuRISnvT8BomwttoUFn5RbFpVCAT8UUUaFlpp-TE4PKdDGi6RLVQJhyphenhyphenfnRiEIWJnCxig7B3CjJuhUvEflwErR1K8OVvRdTw1fF-mbAJ66w/s400/01_Layout_Managers.PNG" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="plantillaboxwrap">
<div class="authorboxfull">
<div class="plantillaavatar-container">
<img alt="Plantilla" class="author_avatar img-circle" height="50" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgafcSWI3EoiXrne-q0nnrx5M2_fOQ42ggbPqxslsguwfJrE7HDK0h_zmIIjWzriPAVIKy7JeIlVTLIQmxDR4zkO4sjNQ2JyLlt4CkR3YXT0GaZu-dLlEFfHG5JWlPHwRgZcuCugUeDNMWL/s1600/Terminal.png" width="96" />
</div>
<div class="author_description_container">
Si eres educador o profesor utiliza la siguiente plantilla para tus alumnos
<br />
<center>
<b><a href="https://docs.google.com/document/d/10jaUwE4a9XGZgOYRsyv25cOcc8Dh6MbOhuW0ag6ohQg/edit?usp=sharing">PLANTILLA</a></b></center>
</div>
<div class="separator" style="clear: both; text-align: justify;">
</div>
</div>
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: justify;">
Cuando estamos haciendo proyectos visuales, dónde se colocan los diferentes elementos visuales, tamaño y posición respecto el espacio de visualización es muy muy importante para que nuestra aplicación responda a nuestras expectativas, además de que la experiencia de usuario sea perfecta.</div>
<div class="separator" style="clear: both; text-align: justify;">
Para ello, Java, dispone de diferentes gestores con los que nuestros elementos se comportarán de una forma u otra. Los más importantes podríamos decir que son:</div>
<div class="separator" style="clear: both; text-align: justify;">
</div>
<ul>
<li>BorderLayout, donde los elementos se colocan directamente en 5 posiciones.</li>
<li>BoxLayout y FlowLayout, donde los elementos se colocan bien en columnas o filas, de forma automática o no dependiendo del gestor utilizado.</li>
<li>GidLayouut y GridBagLayout, donde los elementos se disponen en una matriz.</li>
<li>CardLayout, donde diferentes pantallas se muestran/ocultan en diferentes momentos del tiempo</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/Es9YWqs4UXc" width="560"></iframe><br /></div>
<br />
<br />
<b>BorderLayout</b><br />
<br />
<div style="text-align: justify;">
Uno de los Layouts más utilizados y sencillos de implementar es el <a href="https://docs.oracle.com/javase/tutorial/uiswing/layout/border.html"><b>BorderLayout</b></a>. Este tipo de Layout nos permite principalmente colocar nuestros elementos en 5 zonas: NORTE, SUR, ESTE, OESTE y CENTRO.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Como se puede observar es una disposición muy similar a lo que podría representar cualquier ventana de una aplicación cualquiera, donde en el NORTE tendríamos nuestro menú, en el SUR nuestros elementos de avisos o información, y en la parte central los elementos principales y lógicos de la aplicación.</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/AhwQAma_22w" width="560"></iframe><br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="plantillaboxwrap">
<div class="authorboxfull">
<div class="plantillaavatar-container">
<i class="fa fa-github fa-2x"></i>
</div>
<div class="author_description_container">
Descárgate o visualiza el código utilizado en el vídeo través de mi cuenta en GitHub
<br />
<center>
<b><a href="https://github.com/pacogomezarnal/CookingSoftware_Java/tree/master/LayoutManagers">CÓDIGO EN GITHUB</a></b></center>
</div>
</div>
</div>
<b>CardLayout</b><br />
<br />
<div style="text-align: justify;">
Avanzando en el uso de los Layouts, nos encontramos con un Layout no tan sencillo, pero por otro lado de una utilidad grandísima. Cuando nos planteamos la realización de una aplicación un poco más grande, se nos presenta la disyuntiva de utilizar múltiples ventanas, o bien una única ventana que gestione las diferentes ventanas (evidentemente, no todo es blanco o negro, y que se nos darán infinidad de casos entre ambas situaciones).<br />
Para la gestión de dichas partes de nuestra aplicación donde tenemos una única ventana gestionando diferentes lógicas de desarrollo, tenemos en layout <a href="https://docs.oracle.com/javase/tutorial/uiswing/layout/card.html"><b>CardLayout</b></a>. </div>
<div class="separator" style="clear: both; text-align: center;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/wTTe8M4cudM" frameborder="0" allowfullscreen></iframe><br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="plantillaboxwrap">
<div class="authorboxfull">
<div class="plantillaavatar-container">
<i class="fa fa-github fa-2x"></i>
</div>
<div class="author_description_container">
Descárgate o visualiza el código utilizado en el vídeo través de mi cuenta en GitHub
<br />
<center>
<b><a href="https://github.com/pacogomezarnal/CookingSoftware_Java/tree/master/LayoutManagers">CÓDIGO EN GITHUB</a></b></center>
</div>
</div>
</div>Paco Gomezhttp://www.blogger.com/profile/03495230064612872919noreply@blogger.com0tag:blogger.com,1999:blog-3837698878603987896.post-47631362936724128952016-03-29T00:33:00.002-07:002016-03-31T10:03:43.895-07:00Landing Page. Aplicando Templates<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_rWBuuUgoZIpfFEM0cUMSRLpYB3kx527cbKQgRsOmA_FPdC9Jno_0RNByShWzcJHpeZvflb_ZYl5PFs-8SZyrHKYbmvH01HNd8fuDDTRVfBPRluU61u9HWWbZC8vh7ameIMaB1pBqZnuo/s1600/AplicandoTemplates.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="153" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_rWBuuUgoZIpfFEM0cUMSRLpYB3kx527cbKQgRsOmA_FPdC9Jno_0RNByShWzcJHpeZvflb_ZYl5PFs-8SZyrHKYbmvH01HNd8fuDDTRVfBPRluU61u9HWWbZC8vh7ameIMaB1pBqZnuo/s400/AplicandoTemplates.PNG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Una vez que tenemos generado nuestro perfil, uno de los puntos más importantes y decisivos en el desarrollo de nuestra web o landing page es la elección del "template" o tema. WordPress ha evolucionado enormemente desde sus orígenes, convirtiéndose en un <a href="https://es.wikipedia.org/wiki/Sistema_de_gesti%C3%B3n_de_contenidos">CMS </a>o gestor de contenidos. Podemos desarrollar nuestro propio template o utilizar uno ya desarrollado por terceras empresas, donde podemos encontrar <a href="https://es.wordpress.org/themes/">temas gratuitos</a> de gran calidad.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b>Temas</b></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
El primer paso por lo tanto será la elección del tema, bien a través del menú dentro del panel de administración o bien a través de la descarga e instalación del tema. Será muy importante conocer la estructura que queremos desarrollar, ya que casi todos los templates nos ofrecen un "live preview" con el cual podemos visualizar cómo va a ser el resultado final, los componentes que nos ofrecen y su distribución a lo largo de la web.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/wQ5uBFpz0pU?list=PLm0WEBt1zBgJCK-lM3gEuTOwsREueDLfG" width="560"></iframe>
<br />
<br /></div>
<div style="text-align: justify;">
<b>Configurar un tema</b></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Cada tema tiene sus propias particularidades, sus propias configuraciones y sus propios widgets y plugins. Adecuar nuestras necesidades a las características del tema es lo que se denomina "implementar o parametrizar" un tema. En concreto las partes más importantes que deberemos retocar son los colores, las imágenes, los contenidos y su distribución así como los diferentes menús y enlaces entre páginas.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/RGe84_v4tPo?list=PLm0WEBt1zBgJCK-lM3gEuTOwsREueDLfG" width="560"></iframe>
</div>
<div style="text-align: justify;">
<b>Particularidades de cada tema</b></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Además de las configuraciones propias de cada tema, además cada tema tiene un desarrollo específico que depende de este y del objetivo perseguido. Es el caso del template utilizado, muy específico del sector de hostelería, y aunque las configuraciones son propias para este sector podemos extraer la experiencia necesaria para aplicarla a otros templates.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/VC2VWRe_oIg" width="560"></iframe>
<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/wRwhQkepW2U" width="560"></iframe>
</div>
Paco Gomezhttp://www.blogger.com/profile/03495230064612872919noreply@blogger.com0tag:blogger.com,1999:blog-3837698878603987896.post-9171422607704934742016-03-24T09:19:00.001-07:002016-03-29T00:25:49.527-07:00Landing Page. Comenzando<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCtGZVu_YtWHvRyR09U9uGvLxUkRxe4lUB6Bow6vzOyk902zY5CKeXhBejCJ5PN8Up24UWNI8rfIht1yxuZ3rD8nso05_n27v4JCrWTYC7HlfhSUY8jg-CDiEYXyh3n9NAa_Wylu4U_rUb/s1600/wordpress-bg-medblue.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCtGZVu_YtWHvRyR09U9uGvLxUkRxe4lUB6Bow6vzOyk902zY5CKeXhBejCJ5PN8Up24UWNI8rfIht1yxuZ3rD8nso05_n27v4JCrWTYC7HlfhSUY8jg-CDiEYXyh3n9NAa_Wylu4U_rUb/s320/wordpress-bg-medblue.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Explicar a los alumnos lo importante que es estar presente en la red, y para comenzar tener presencia mediante una web es bastante complicado ya que la experiencia es un grado. Sin embargo así es. Sea o no sea un producto/servicio tecnológico, es de suma importancia comenzar teniendo visibilidad mediante una web. Si además tu idea está directamente relacionada con un servicio web o una aplicación móvil, tener una "<a href="https://es.wikipedia.org/wiki/P%C3%A1gina_de_aterrizaje">landing page</a>" es vital para poder presentar con un bajo coste dicha idea, e incluso poder comenzar a medir respuestas, y como fin último poder captar nuestros primeros clientes.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Eligiendo la herramienta correcta</b></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Elegir cómo crear dicha web y/o servicio web es una de las primeras decisiones que debemos tomar, y actualmente disponemos de una gran cantidad de herramientas, hostings y servicios que seguro que se adaptarán a nuestras necesidades. Sin entrar en un análisis comparativo, en este primer vídeo hablamos sobre esas decisiones, elgiendo nosotros <a href="http://wordpress.com/">Wordpress.com</a> como nuestra herramienta para realizar ese paso.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/ej8oExomWnk?list=PLm0WEBt1zBgJCK-lM3gEuTOwsREueDLfG" width="560"></iframe><br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Generando el perfil</b></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Cuando trabajamos con Wordpress, tenemos dos opciones de trabajo:</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<ul>
<li style="text-align: justify;">Trabajar con nuestro propio servidor, descargando WordPress e instalándolo. Esto nos proporciona una solución muy muy flexible donde podemos llegar a configurar hasta el más mínimo detalle. Sin embargo es una solución más compleja que requiere de conocimientos de informática y desarrollo.</li>
<li style="text-align: justify;">Trabajar directamente sobre WordPress.com, bine en su formato gratuito, y por lo tanto en nuestra web aparecerán anuncios, bien en su formato de pago, donde no nos tenddremos que preocupar de la instalación y mantenimiento de WordPress.</li>
</ul>
<div>
<br /></div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/pERdMGq9cUY?list=PLm0WEBt1zBgJCK-lM3gEuTOwsREueDLfG" width="560"></iframe><br />
<br />
<div style="text-align: left;">
<b>Panel de administración</b></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<div style="text-align: justify;">
Como cualquier herramienta en la nube, podemos distinguir dos zonas, el panel de adminnistración o Backend y la zona de usuario o FrontEnd. A través del panel de administración a sú vez nos encontramos con diferentes zonas que nos permite desde introducir contenidos, diseñar nuestra web como hacer nuestra web única haciendo desarrollos más complejos.</div>
</div>
<div style="text-align: left;">
<div style="text-align: justify;">
A través del nuevo WordPress, y sobre todo a través de WordPress.com, nos encontramos con varias formas de presentar dicho panel de administración, desde una básica y sencilla, y otra más compleja pero más completa.</div>
</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
</div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/enylrf3jAPE?list=PLm0WEBt1zBgJCK-lM3gEuTOwsREueDLfG" width="560"></iframe><br />
<br />
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/xzqOfJ6Ixao?list=PLm0WEBt1zBgJCK-lM3gEuTOwsREueDLfG" width="560"></iframe>
<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/ejxbheULBO8?list=PLm0WEBt1zBgJCK-lM3gEuTOwsREueDLfG" width="560"></iframe></div>
Paco Gomezhttp://www.blogger.com/profile/03495230064612872919noreply@blogger.com0tag:blogger.com,1999:blog-3837698878603987896.post-12824069010412368542015-12-26T00:00:00.004-08:002016-03-14T08:34:27.881-07:00Comenzamos con mucha ilusión<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEintlAUSlYwZC1HkihTdjtGW3-JG5YvmsW4Yj501lMGHi_JHbvpdgnVm9bWMKFQpmgJHQ4mDgMAiaM62xFQdWRYn7zGgBrZ_DoFVTqUqkh8x0Cjmb10Rd4EdrQlHuaV7RUzSyEcuyxOwPXp/s1600/foto_perfil.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Paco Gómez" border="0" height="424" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEintlAUSlYwZC1HkihTdjtGW3-JG5YvmsW4Yj501lMGHi_JHbvpdgnVm9bWMKFQpmgJHQ4mDgMAiaM62xFQdWRYn7zGgBrZ_DoFVTqUqkh8x0Cjmb10Rd4EdrQlHuaV7RUzSyEcuyxOwPXp/s640/foto_perfil.JPG" title="" width="640" /></a></div>
<br />
Explicar como hemos llegado hasta este punto sería muy, muy largo de explicar (también muy aburrido para cualquier persona que no sea yo mismo). Por lo que vamos a acortar esta presentación lo máximo posible, para pasar a lo que nos interesa y lo que me ENAMORA: el desarrollo software, la tecnología, la educación y la cocina (vaya combinación).<br />
<br />
<div>
<b>
Sobre Paco Gómez</b><br />
<b><br /></b></div>
<div>
Como veis este personaje que mira al infinito soy yo, una foto que me hizo mi buen amiga, y mejor profesional <b><a href="https://www.facebook.com/isabel.fdez.96">Isabel Fernández</a></b>.<br />
<br />
Ahora mismo soy docente en <a href="http://www.floridauniversitaria.es/">Florida Universitaria</a>, donde os animo enormemente a que os paséis por alguna de mis clases, con mis alumnos de desarrollo web o desarrollo multiplataforma.<br />
<br />
El desarrollo software es uno de mis amores, junto con mi <a href="http://thinkinginthree.blogspot.com.es/">familia</a>, mis amigos, el cine, el deporte, los videojuegos, la música, la cocina ..., en fin que duermo poco y aún así me faltan horas para llevar a cabo todo los proyectos e ideas que me gustaría poder desarrollar.<br />
<br />
Y podría continuar, pero creo que no debo, así que si queréis profundizar más, podéis visitar mi perfil en <a href="https://es.linkedin.com/in/paco-gomez-arnal-8073877/es">LinkedIn</a>, o enviarme un correo a <a href="mailto:paco.gomez.arnal@gmail.com">paco.gomez.arnal@gmail.com</a>, bien porque eres una persona con ansias de aprender, un docente que quiere compartir sus logros y sus ilusiones, o una entidad o empresa que quiere realizarme alguna pregunta.<br />
<h4>
</h4>
<b>
Sobre lo que hago</b><br />
<br /></div>
<div>
La verdad es que soy un privilegiado, ya que además de ser docente, y estar en contacto con alumnos hipermotivados (es lo que tiene dar clase en ciclos formativos grado superior), estoy en contacto con lo último de lo último en tecnología: Android, Java, Cordova,, HTML5, CSS3, JS, PHP, Symfony, Scrum, Git, GitHub, ..</div>
<div>
<br /></div>
<div>
Pero como la verdad es que conformarme no me conformo nunca con la forma de dar clase, estoy en un continuo desarrollo y experimentación de las metodologías de enseñanzas. Una de ellas sobre la que hablaré largo y tendido es la gamificación. La otra la enseñanza orientada a proyectos.</div>
<div>
<br /></div>
<div>
Y así, como propósito de este 2016, comenzamos esta aventura con la que pretendo compartir absolutamente todo mi trabajo y mis proyectos.<br />
<br /></div>
<div>
<span id="docs-internal-guid-917f7ee9-0d95-d36b-209d-0ecad09fc588">
</span>
<br />
<div>
<span id="docs-internal-guid-917f7ee9-0d95-d36b-209d-0ecad09fc588"><span style="color: #c9daf8; font-family: "ubuntu"; font-size: 14.6667px; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"><br /></span></span></div>
<span id="docs-internal-guid-917f7ee9-0d95-d36b-209d-0ecad09fc588">
</span></div>
<div>
<br /></div>
Paco Gomezhttp://www.blogger.com/profile/03495230064612872919noreply@blogger.com0