22 de junio de 2013

jquery+ajax for dummies

Sé que quizás existan miles de tutoriales, manuales para principiantes y mucha documentación sobre el tema del jquery, ajax y ambos inclusive... En todo caso lo que quiero es mostrar un poco y de la forma más sencilla como pueden usar esta herramienta que "saca las patas del barro" (venezolanismo para indicar que algo puede ser muy útil en un momento oportuno). Primero voy a explicar sin mucho tecnicismo y a mi manera como estoy acostumbrado, de que trata esto del jquery y el ajax. Es conveniente que sepas algo de HTML y javascript para entender este artículo. Sino aprende y vuelve.

jquery
Es un framework de trabajo, plataforma, plugin, addon, o como quieras llamarle (aunque el correcto es framework), basado y programado en lenguaje javascript, ese lenguaje que está inmerso en el HTML (páginas web) para realizar cosas asombrosas. La realidad es que un sitio web que no tenga javascript por algún lado ya está obsoleto y seguramente no está condicionado para las nuevas tendencias visuales y de funcionalidad. El propósito básicamente de usar jquery "en vez" de javascript, y coloco "en vez" entre comillas porque jquery = javascript, es facilitar la programación y unificar las diferencias que puedan existir en la forma  que los navegadores interpretan el javascript plano, en otras palabras ahorrar tiempo, de hecho su lema es Write less, do more (Escribe menos, haz mas).
Existen varios frameworks poderosos similares, como el mootools y yum, pero yo empecé trabajando con jquery y no me ha ido mal, además que la cantidad de documentos y addons derivados que existen sobre él abundan en la web.


Instalación y uso del jquery
El jquery gracias a sus creadores es un simple archivo, de formato .js, que puedes colocar en tu sitio.
Ha sido mejorado con el paso de los tiempos en versiones que puedes descargar en su página oficial http://jquery.com/.
La instalación no es más que agregar la línea de código:
<script src="jquery.js"></script>
(Generalmente en la sección <head> pero esto no es obligatorio). Otra forma de agregarlo sería desde la web de google code, y siempre vas a tener la última versión.

<script src="http://code.jquery.com/jquery-latest.min.js"></script>

Quizás esto pueda causarte problemas si combinas jquery para hacer función de otro framework. Así que te recomiendo la primera forma.


Para usar el jquery puedes empezar por la función ready que es cuando finaliza la carga de la página, de la siguiente forma

<script> $(document).ready( function(){   alert('el jquery funciona')   });</script>

fíjense que se usa el símbolo $ luego entre paréntesis el objeto a manipular, en este caso document, que es una palabra o variable reservada para el script que indica el objeto página como tal, luego viene el método ready y dentro de él viene una función que es donde se pudieran inicializar condiciones, variables, otras funciones de la página, etc.

Podemos probar con una suerte de ejemplo "Hola mundo" con un botón, un div  y un input al cual le cambiaremos el valor. Estudien el ejemplo:

<html>
<head>
<script src="jquery.js"></script>
</head>
<body>
<div id="div1">Esto es un div común y silvestre</div>
<input type="text" id="input1" value="Esto es un input corriente"/>
<button onclick="holamundo();" >Hola</button>
</body>
<script>
         function holamundo(){
               $('#div1').html('Hola mundo');
               $('#input1').val('Hola mundo')
               alert('Hola mundo, usted ha cambiado con jquery los valores de un input y de un div');
         }
</script>
</html>

En el ejemplo anterior, lo que hacemos es decirle al botón que al presionarlo (onclick) ejecute la función holamundo, esta función realiza 3 actividades, primero cambia el html interno del div1 por "Hola mundo", luego cambia el contenido de la caja de texto por "Hola mundo" también y luego muestra un simple alerta. Ahora bien, fíjense que a diferencia de $(document) el div y el input son referenciados con $('#div1') y $('#input1') respectivamente, eso es hacerles referencia con el ID del elemento, hay que colocar entre comillas simples o dobles, un numeral (#) y el nombre del elemento. Luego vemos que para el DIV usamos el método .html() y para el input usamos el método .val(); esto es porque el div es un contenedor y el input un control que manipula valores (values).

Ha sido muy sencillo eso verdad ?, cuando empiece a explicar con Ajax se complica un poco las cuestión pero no te asustes todavía. La cantidad de funciones y operaciones que se pueden realizar con jquery son inmensas, pero con asignar valores y operaciones sencillas se le va agarrando confianza al framework.

Ajax
Bien, entramos en ese monstruo llamado Ajax, muy usado en las tendencias actuales para cargar contenido. Y bien, pero que es Ajax?, pues es una técnica de programación en sí, es un acrónimo de Asynchronous JavaScript and XML y permite cargar contenido de forma asíncrona en una web.

Te preguntaras que es esto de síncrono, asíncrono, y como se come. Bueno en términos gruesos una operación síncrona es una petición cliente-servidor, que al momento de ser ejecutada el cliente debe esperar la respuesta del servidor para continuar las operaciones. un ejemplo claro es un formulario de contacto, de esos que cuando le das enviar después de colocar los datos, la página se tarda unos segundos (o minutos) en actualizar y te da una respuesta. O Cuando abres una página nueva en el navegador es de por si una operación síncrona, es decir viene de sincronía, tiempo continuo, simultaneidad.

Una operación asíncrona, a diferencia de su antónima permite en "destiempos" realizar operaciones y mientras el cliente espera la respuesta del servidor la página no pierde "sincronía" puedes seguir trabajando en ella. Cualquier aplicación web actual utiliza este método, por ejemplo cuando agregas un comentario o publicas un status en tu red social, la página mientras agrega ese comentario, puedes seguir navegando y usando la página y quizás realizando otras operaciones que ejecuten más eventos asíncronos. Digamos que son peticiones cliente-servidor de segundo plano.

Ajax+jquery
Ahora, como entra aquí nuestro ahora querido amigo jquery ? pues bien, dado que Ajax es una técnica de programación en sí, usando javascript, y jquery es un framework para facilitar codificación en javascript, no podían estar separados. jquery permite realizar las operaciones de Ajax muy sencillas y crossbrowser, es decir, el mismo código para los distintos navegadores. En el siguiente ejemplo voy a mostrar un código sencillo para cargar contenido de una operación Ajax.

<html>
<head>
<script src="jquery.js"></script>
</head>
<body>
      <div id="div1">Esto es un div común y silvestre</div>
      <button onclick="operacionAjax();" >Hola</button>
</body>
<script>
            function operacionAjax(){              
                $('#div1').html('<p>Cargando</p><img src="ajax-loader.gif" />');
                $.ajax({
                    cache: false,
                    type: 'post',
                    url: 'proceso.php',
                    data:{
                        variable1:'Hola',
                        variable2:'Mundo'
                    },
                    success: function(response) {
                        $('#div1').html(response);
                    }
                });
            }
</script>
</html>

Fíjense bien que el botón Hola ahora llama a la función operacionAjax(), que realiza 3 actividades, la primera es cambiar el contenido del div1 a una imagen gif de loading (puedes conseguir varios aquí www.ajaxload.info/), la segunda es la petición de ajax como tal, o sea una petición cliente servidor asíncrona, de tipo post, a la url proceso.php con 2 variables (variable1 y variable2) con sus respectivos valores ("Hola" y "Mundo"), y la tercera actividad (success) es la respuesta de dicha solicitud, que como es asíncrona, será aplicada cuando el servidor responda, y se cambiara el contenido del div1 por lo que trae la variable response.


la url proceso.php va a ser el postsrcipting del servidor, y puede ser en este ejemplo algo como

<?php
$var1 = $_POST['variable1'];
$var2 = $_POST['variable2'];
echo $var1.' '.$var2;
?>

lo que quiere decir que procesará la petición leyendo las dos variables de tipo POST enviadas por el Ajax y las concatenara como respuesta. cuando el servidor ejecute esas sentencias sucederá el evento "success" del Ajax y la variable response contendrá lo escrito por el echo del php "Hola Mundo" contenido en las variables previamente mencionadas.


Bueno queridos lectores hasta aquí dejo la lección, espero que les hayan sido útil estos sencillísimos pasos para usar el ajax de jquery. De todos modos deben seguir documentándose sobre el tema, bajar tutoriales y archivos con ejemplo.

Cualquier duda sobre los ejemplos o el tema en si pueden escribirme a mi correo juanpgarciac@gmail.com, mi twitter @juanpgarciac o en ask.fm http://ask.fm/juanpgarciac Gracias por su atención, no olviden comentar!

Contacto:
www.juanpgarciac.com
juanpgarciac@gmail.com
@juanpgarciac
@solucionesTech




13 de junio de 2013

Aplicación gratuita para crear Cartones de Bingo


Puedes omitir este largo y tedioso artículo y ver el nuevo  VERSIÓN RELOADED, nuevo artículo 2015



Mis queridos y abandonados lectores, después de mucho tiempo vuelvo a intentar rehacer esta poca valorada tarea de escribir entradas en mi blog.

Como el tiempo es algo valioso que todos debemos bien usar no voy a perder mi/su tiempo explicándoles mi ausencia por estos lados, y por que no hice una entrada solo para relanzar las publicaciones, es decir, voy directo al grano.

Todos se preguntaran, para que me sirve a mi una aplicación que me genere cartones de bingo, pues bien, esa si es una historia que no me importaría contarles y por que ha llegado hasta aquí.



Hace unos varios años a mi hermana  le faltaban par de meses para dar a luz a mi bella sobrina, y conociendo ella mis habilidades en la informática me pidió un favor obviamente innegable si no quería un orzuelo (infamación del párpado que por superstición en Venezuela se dice que a parte de la razón medica, también es producido por negar un favor una embarazada), pues que buscara en Internet un BINGO para su baby shower.

En esos momentos de procrastinación donde estas haciendo la tesis de tu Pregrado y programando en Java un endemoniado sistema super complejo que ni tu mismo entiendes, cualquier excusa es valida incluso si se refiere a encontrarte con tu lado femenino y maternal para encontrar cosas bien cuchis, monas, lindas y contentar a tu hermana por los favores completados. En la imposibilidad de encontrar un programa plantillas o simples imagenes suficientes de cartones de bingo con características pueriles, me dedique entonces a pensar que yo pudiera programar en mi casi inexperta travesía por los lenguajes de programación, dicho sistema que funcionara lo suficiente para generar unos cartoncitos de bingo bien curiosos.

Eran unos días antes del asunto, cuando me dedique de verdad, a realizar el sistema y empecé como siempre con un frame vacío sin ideas,  que poco a poco fui configurando e implementando hasta llegar con la primera versión algo funcional de la aplicación. Generaba con unas 30 imagenes previamente editadas de 100x100 unos cartones de 16 fichas, con simplemente presionar un botón, ahora bien, la parte de extracción era un poco  rudimentaria pues, tenia que tomar una captura a toda la ventana de la aplicación ir a un editor de imagenes y cortar el cartón, guardarlo y así unas buenas 20 o 30 veces.  Obvio que en ese momento lo hice y no fui mas allá.


Los cartones nunca se usaron.
Mi hermana me supo decir agradeciendome previo esfuerzo de "encontrar el binguito" que no dio chance de usar el juego. Tuve que conformarme de no tener una inflamación ocular y además que gané algo de experiencia con aplicación de la feminidad y las manualidades en la programación y el aprendizaje como tal. Pues bien, pasaron otros años y un amigo al le que había contado parte de esta historia me pregunto por el programita del bingo dado que estaba pasando por una emergencia similar de conseguir entretenimiento, con mucho gusto y quizás con un tanto de  emoción, dije "claro vale yo mismo te lo consigo"... Voalá, una vez mas tenia la oportunidad de pagarme la deuda de haber hecho algo que funcionaba que no había sido usado, lamentablemente no pude asistir al evento de mis amigos, por razones de viaje, pero mas lamento que en esta oportunidad "tampoco dio chance de usar el binguito". Es más luego supe que en ninguno de las dos oportunidades ni siquiera las imagenes fueron impresas en papel cartulina como debía ser el procedimiento. Es decir solo estaba la intención de usarlos, pero al parecer dar teteros de cerveza a los maridos de las acompañantes, y compotas con los ojos vendados, son juegos que obviamente superan el nivel de diversión de un infantil y no impreso bingo.

Pasaron par de años mas, y si no me equivoco en el interludio hubo otro intento fallido, pero finalmente el año pasado, me encontraba trabajando en una empresa, una compañera, muy afín a las manualidades, decoraciones y organizaciones de fiestas, que siempre me pedía que la ayudara a editar imagenes decorativas, peligrando aumentar mi nivel de estrogeno, pero que con gusto le ayudaba, un día me comentó que tenia un babyShower, rápidamente mi alarma de altruismo y deuda conmigo mismo, se activo y dije "tengo justo lo que necesitas"... empecé a buscar en mis correos de otrora si tenia algún archivo comprimido del invento nunca usado, y si.

Desempolve  el chisme, y mi amiga quedo encantada del producto, pero yo no, empecé a ver que tenia defectos y bugs que con mi actual experiencia pude haberme despedido a mi mismo. Esa noche abrí el código fuente y empecé a trabajar para mejorar el programa, pues estaba apunto de ser usado, debía hacer la versión de oro moderna y bien funcional.

Los días siguientes las cosas se fueron dando, no fue hasta que vi que se imprimian los cartones en cartulina cuando dije que por fin serian usados. Ese fin de semana, sucedió lo siempre esperado, y me hicieron saber que fue un éxito, no supero a la diversión de los teteros con cerveza pero causó agrado en mujeres y niños. El hecho es que me sentí mejor por ayudar al prójimo con lo que se hacer, y decidí mejorar el sistema, que me lo han pedido desde entonces en mas oportunidades, y sin preocuparme ya si lo usarán o no, publicare lo que considero un tonto pero útil grano de arena para aquellos interesados por tener un juego de bingo en una reunión.

Si todavía estas leyendo esto, aprecio y agradezco tu interés por mis aburridos artículos y no seras defraudado, pues ahora voy a explicar un poco de los detalles técnicos de la aplicación:


DETALLES TÉCNICOS (PUEDE OBVIAR EL RIDÍCULO RELATO ANTERIOR SI LO DESEA)


La aplicación esta desarrollada en lenguaje Java con entorno netbeans, es un simple ejecutable portable que está acompañado de unas carpetas como se muestra a continuación:





En la carpeta banner se encuentran de modo predeterminado dos banner que hice, pero el sistema tiene la posibilidad de cambiarlos, solo que el tamaño preferiblimente debe ser de 455 pixeles de ancho por 111 de alto. UPDATE: Nueva versión 0.98, La imagen que selecciones se ajustará al tamaño del banner que es 455 pixeles de ancho por 111 de alto.

En la carpeta cartones, se almacenaran cada cartón generado desde el sistema con el siguiente nombre carton_1.png, carton_2.png, carton_X.png. cada carton generado pesa aproximadamente 270kb. Pueden  a partir de aquí cargarlos en una presentación powerpoint por ejemplo disminuir su tamaño colocar 2 en una hoja etc, imprimirlos en cartulina y usarlos.

En la carpeta fichas, se encuentran 31 imagenes de 100x100, con nombres enumerados empezando por 0.jpg 1.jpg,  que hacen referencia a imagenes muy infantiles, pues si leíste el relato se trataba de un bingo para baby shower, pero pueden ser cambiadas sin problemas dependiendo de la necesidad. Lo importante es que sea de ese tamaño, formato jpg, que su nombre sean enumerados empezando por 0 (cero) y que sean al menos 30 imagenes. UPDATE: Nueva version 0.98 Las imagenes que coloquen en esta carpeta no importa el nombre que le coloquen, ni el tamaño, el sistema ajustara automaticamente.

La carpeta icon y jre, son propias del funcionamiento del sistema así que mejor te digo que no te metas con ellas. En todo caso subiré dos versiones del aplicativo, una con el bundle de java (carpeta jre) que pesa mas y una sin el bundle.

Para los que no tiene idea de lo que acabo de decir bajen la version que dice JRE al final. Para los que si, les digo que si tiene java instalado superior a la versión 1.7.0 pueden bajar la version sin bundle.




Esa es una captura de pantalla de la aplicación, cada botón si dejan el mouse suspendido unos segundos por encima mostrará un pequeño hint de que se trata. Es muy sencillo así que no hay pele...

El sistema es totalmente gratuito (por ahora muahaha), lo hice con una intención primaria de favor a mi hermana y así se ha mantenido para los que lo necesiten, no esta demás pedirles que me escriban para consultarme o sugerirme algo, y por favor me corrigen algún error ortográfico o si le consiguen un bug!!

Links de descarga:
Bingo Maker JRE v0.98  - 36MB
Bingo Maker v0.98 1 MB

UPDATE:
v0.98
- Las imágenes que coloquen en la carpeta ficha no requieren nombres enumerados ni tamaños editados por el usuario, el sistema se encargara de ajustarlos automáticamente.
- La imagen del banner también se ajustara al tamaño predefinido automáticamente.


Contacto:
www.juanpgarciac.com.ve
juanpgarciac@gmail.com
@juanpgarciaDev
Saludos

Gracias siempre por leerme, espero que les sea útil, volveré con mas!


Puedes omitir este largo y tedioso artículo y ver el nuevo  VERSIÓN RELOADED, nuevo artículo 2015