Categoria: Desarrollo y Programación


¿Usas EGit y tienes problemas? Prueba con Git Bash

26th abril

Ayer me encontraba con Francisco pulleando cambios a su repositorio local, cuando de pronto apareció un wild EGit que no nos lo permitió.

¿Y por qué no nos dejaba? Por el mensaje de error que nos devolvió EGit, quien sabe. Simplemente EGit nos dijo que no podíamos y ya. Lo intentamos de nuevo sin hacer ningún cambio y la respuesta que nos dio ahora fue que ya estaba todo al día. Mentiroso.

Usando Git Bash encontramos que no nos dejaba hacer pull tranquilamente porque un archivo en especifico tenia cambios y requería de un commit. Pero si nos hubiéramos quedado usando Eit, quizá nos hubiera llevado mucho mas tiempo en averiguarlo.

http://msysgit.github.com/


Desarrollo de aplicaciones móviles con PhoneGap

23rd abril

En mi búsqueda por nuevas tecnologías y opciones para el desarrollo de aplicaciones móviles me encontré con PhoneGap https://build.phonegap.com/.
PhoneGap es un framework para desarrollar aplicaciones con HTML, CSS y Javascript para iPhone/iPad, Google Android, Palm, Symbian, BlackBerry y Windows Mobile.

Pero bueno si se utilizan herramientas para desarrollo WEB, pues ¿No sería lo mismo desarrollar aplicaciones WEB para móviles? Pues en realidad PhoneGap va más allá de esto ya que incluye un API (una interfaz para comunicar Javascript con el lenguaje nativo) el cual permite tener acceso al hardware del dispositivo como sería:

Vibración
Sonido
Acelerómetro
Brújula
Geo localización

Excelente opción para los desarrolladores Web que desean programar aplicaciones móviles lo más semejante a las aplicaciones nativas.

Una de las ventajas más grandes que se puede apreciar es la de poder programar aplicaciones y fácilmente portarla a los diferentes dispositivos,  sin tener que realizar migración de código.

La … Read More »


Asíncronizando tu aplicación

22nd abril

Hace unos cuantos días me tocó entrar de emergencia a un proyecto uno de los principales retos que nos encontramos fue portar el proyecto de Gears (qepd) a HTML5 usando IndexedDB.

Una de las principales características que tienen estas funciones de base de datos es que son asíncronas, esto quiere decir que se van a hacer algo y no sabemos a que hora regresan, bueno solo hasta que mandan llamar el callback correspondiente.


Aprendiendo de los horrores ajenos

20th abril

Uno de nuestros objetivos en el desarrollo de sistemas es que sean un placer de usar.

Para ello buscamos poner mucha atención a los pequeños detalles, que pueden ser casi imperceptible, pero que mejoran muchísimo la calidad de lo que entregamos. Para ilustrar esto se me ocurren los siguientes ejemplos:

1. Uso de botones correctamente etiquetados para la función que realizan.

2. Redacciones útiles de los mensajes de alerta (“Algo falló, error” vs. “Su sesión expiró y la acción no pudo ser completada”).

3. Un indicador visual de carga para mostrar al usuario que se está ejecutando una acción y que debe esperar.

Pero, nada nos invita más a cuidar los detalles en nuestros propios desarrollos que ser usuarios críticos de otros sitios web, y en este sentido lo que buscamos es identificar un error y poner mucha atención en no cometerlo nosotros. Somos una especie … Read More »


Información es poder… hacer las cosas bien.

16th abril

Tradicionalmente, la comunicación se ha definido como “el intercambio de sentimientos, opiniones, o cualquier otro tipo de información mediante habla, escritura u otro tipo de señales”. Todas las formas de comunicación requieren un emisor, un mensaje y un receptor destinado.

En nuestro caso, mientras mas información nos provea el emisor, mejor podemos desarrollar nuestro trabajo.

Me han tocado tareas que han llegado más o menos así:

Necesito que por favor me muevan esta imagen de aquí hacia acá.
Gracias.

Y estoy seguro que el cliente estaba señalando su monitor en ese momento.

La información (el mensaje) anterior viene mal desde el origen, desde el emisor. No sabemos cual imagen es “esta imagen”, tampoco sabemos dónde es “aquí”, y mucho menos, dónde es “acá”. Si no aclaramos inmediatamente esa información, vital para los fines de la tarea, estamos condenados a tener esa tarea en nuestro panel por … Read More »


Aceptar la moda

9th abril

Our industry, the global programming community, is fashion-driven to a degree that would embarrass haute couture designers from New York to Paris. We’re slaves to fashion. Fashion dictates the programming languages people study in school, the languages employers hire for, the languages that get to be in books on shelves. A naive outsider might wonder if the quality of a language matters a little, just a teeny bit at least, but in the real world fashion trumps all.

Steve Yegge – Prefacio de “The joy of Clojure

Me confieso culpable de querer siempre los “nuevos juguetes”, pasar horas aprendiendo a usar lenguajes de programación cada vez más raros, estar siempre al pendiente de los blogs y de Twitter para enterarme de “lo último”. Paso mucho tiempo en githubRead More »



Migrar de jQuery a Javascript

30th marzo

jQuery es una biblioteca de Javascript que facilita el acceso a elementos del DOM. Es de muy fácil uso y tiene el soporte de varias empresas como Google, Dell, Mozilla, WordPress, etc.

El uso de jQuery se ha popularizado mucho en los últimos años, su facilidad de uso, la gran cantidad de plugins y toda la comunidad de soporte que tiene han facilitado esto.

jQuery se ha vuelto tan famosa que mucha gente confunde jQuery con Javascript, si bien, escribir código de jQuery es escribir código en Javascript lo que quiero decir con esto es que hay cosas que se pueden hacen fácilmente con Javascript puro y nativo de nuestro navegador sin necesidad de jQuery y asi nos ahorramos la carga del framework en nuestras aplicaciones (32 kbps, aprox).

$(‘#identificador’);

Esta función en jQuery selecciona un ID de nuestro DOM con el nombre identificador … Read More »


Scaffolding con Grails

27th marzo

Problema: Crear una interfaz web sencilla para incorporar información a una base de datos.

Solución: realizar un scaffolding con Grails.

¿Qué es Scaffolding?

El Scaffolding es un término introducido por Rails y que está presente en otros frameworks como Grails, ya que permite la generación automática de código para las cuatro operaciones básicas de cualquier aplicación: creación, lectura, edición y borrado, en inglés se conoce como CRUD. La idea es que partiendo del esquema de base de datos, generar el código necesario para implementar el CRUD. En Grails se consigue escribiendo una sola línea de comando.

Grails permite dos tipos de scaffolding, dinámicos y estáticos (documentación). En el scaffolding dinámico el código se genera en tiempo de ejecución, de modo que cualquier cambio en las clases de dominio genera un nuevo scaffolding, el estático, genera código estático tanto de vistas como de controladores de forma que después … Read More »


Discoball

27th marzo

Tengo algo que confesar: a veces me equivoco.

No es tan grave. Las pruebas automáticas me rescatan la mayoría de las veces; un vistazo rápido al error que arrojan casi siempre me permite identificar el problema. Incluso cuando no es tan simple, la base del proceso de debugging es examinar el stacktrace para buscar qué salió mal y dónde.

El problema es que la salida del script de pruebas es algo así:

Esas líneas de “=” separan unos casos de prueba de otros, pero a mí no me parecen muy fáciles de distinguir entre tanto texto. Es práctico tener el stacktrace completo, pero generalmente me interesa sólo la parte que sucede en el código que yo escribí. Y en general invierto demasiado esfuerzo en entender qué es lo que pasa ahí.

¿Cómo me facilito las cosas? Con colores, claro. Les presento discoball.

DiscoballRead More »



¿Estás aprendiendo Grails? Te recomiendo revisar este par de sitios.

23rd marzo

Groovy Examples & Groovy Almanac: Si, ya sé, son dos sitios, pero ambos son tan similares que los cuento como un único recurso. Básicamente son dos sitios que contienen varios snippets de Groovy que te pueden ser útiles en muchos niveles. Desde sacarte de un apuro, hasta darte ideas para tus proyectos. A mi me ayudaron mucho algunos de estos snippets para que me ‘cayera el veinte’ de lo que podía hacer con Groovy en mis desarrollos con Grails.
Groovy web console: Pues eso, una consola web de Groovy. Por si desean hacer pruebas rápidas de código. Por ejemplo, si entraron a Groovy Almanac y les dio curiosidad un snippet y quieren probarlo, pero no tienen Grails a la mano.


Denme un punto de apoyo y moveré al mundo

14th marzo

Decía Arquímedes en el siglo II a. c. : “Denme un punto de apoyo y moveré al mundo”. El día de hoy, yo diría “Denme los accesos y moveré tu mundo”.

Trabajar remotamente tiene sus beneficios (anteriormente expuestos aquí), pero también tiene limitantes, como depender total y absolutamente de accesos.

Para crear un sitio necesito:

Acceso al DNS para crear su Zona
Acceso al Panel de Control para crear su Hosting
Acceso al FTP para subir los archivos y editar sus archivos de configuración
Acceso a MySQL para crear la base de datos
Acceso al administrador del desarrollo para afinar los detalles

De una manera completamente simplista hemos descrito al menos cinco accesos.

¿Qué pasa cuando uno de los accesos no es entregado a tiempo? Todo se desmorona como un gran castillo de naipes. Es como un rango evolutivo donde el segundo paso depende del primero … Read More »


Vagrant: una herramienta de virtualización de ambientes de desarrollo

2nd marzo

Al desarrollar para web usamos varios lenguajes o varias librerías, o hacemos configuraciones especializadas, todo en nuestra máquina sobre un sistema operativo diferente al del servidor. Cuando queremos pasar a producción, tenemos que replicar esa configuración intrincada en un sistema operativo diferente, que seguramente administramos de manera remota.

Cuando llevas varios proyectos al mismo tiempo, el problema no sólo se multiplica; crece exponencialmente porque con frecuencia las versiones de librerías, programas instalados o incluso configuraciones globales tienen conflictos entre sí.

Sería útil desarrollar sobre una plataforma idéntica al servidor de producción. Así sabríamos que nuestras configuraciones e instalaciones funcionarán en el sitio web final y en general, durante el desarrollo, sólo tendremos que resolver los problemas y las particularidades de un sistema operativo y una configuración en particular.

Sin embargo, cada quién tiene su sistema operativo y configuración particular sobre la que … Read More »



“Es tu cache”..

2nd marzo

Cuando desarrollas un sitio web que requiere constantes cambios uno de los problemas comunes que se encuentran es el cache.
El cache es una memoria que el navegador reserva para elementos que se cargan constantemente en un sitio, el navegador los reserva para ahorrarse la recarga de estos elementos y agilizar la carga del sitio web.

Para no tener problemas con el cache en el desarrollo de nuestros sitios les doy el siguiente tip en Chrome:

Click derecho en la página y dan click en la opcion Inspeccionar este elemento
En la ventana que aparece dar click en el engrane que esta en la parte inferior derecha.

Seleccionar la opción deshabilitar cache.

Listo ahora no hay de que preocuparse.


Mi proyecto terminal de la universidad

1st marzo

Actualmente me encuentro cursando el onceavo trimestre (de doce “oficiales”, aunque la mayoría de estudiantes termina muchos trimestres después) de la carrera de Ingeniería en Computación en la Universidad Autónoma Metropolitana. Estoy llevando solo una materia y la realización de mi proyecto terminal.

Durante los primeros trimestres de la carrera, nunca tuve una idea clara sobre lo que quería hacer como proyecto terminal. Lo que se me ocurrió (en conjunto con otros dos compañeros de la universidad), ya avanzado en trimestres, fue hacer un juez en línea. Un juez en línea en resumidas cuentas, compila, ejecuta y evalúa un programa de un usuario dado un problema especifico. Estos jueces verifican, por ejemplo, el tiempo de ejecución y la memoria usada por un programa, entre otras cosas.

La idea de realizar este proyecto se dio por el gusto … Read More »


Suplantar a un usuario usando el Plugin Spring Security.

10th febrero

Hoy en día, la mayoría de las aplicaciones requieren un control de acceso a la información dependiendo del rol al que pertenezca cada usuario, uno de estos roles suele ser el de administrador o supervisor, que cuenta con un acceso sin restricciones al sistema. Sin embargo puede darse el caso de que el supervisor requiere hacerse pasar por otros usuarios para fines de consulta de información sin la necesidad de conocer sus credenciales.

En Grails, mediante el uso del plugin Spring Security Core es posible realizar esto de manera sencilla.

Una vez instalando el plugin en los archivos de configuración se añade lo siguiente:

grails.plugins.springsecurity.useSwitchUserFilter = true

useSwitchUserFilter es el filtro que permite la suplantación de usuarios.

Deben elegirse los roles que tendrán la posibilidad de suplantar a otros. (‘ROLE_SWITCH_USER’).

Para hacer el cambio de usuario, se debe añadir un formulario similar a este:

<sec:ifAllGranted roles=’ROLE_SWITCH_USER’>
<form action=’/j_spring_security_switch_user’ method=’POST’>
Read More »



desde el blog

Todos los días algún miembro del equipo escribe sobre todo aquello en lo que trabajamos, nuestras inquietudes, nuestros descubrimientos o nuestros gritos de ayuda. Te invitamos a leer el diario de los "vincoorbianos".

El diablo está en los detalles

La complejidad de la realidad es innegable, la cantidad de estímulos disponibles al ser, innumerables.

De hecho, el cerebro humano es un filtro negativo que...

Crear un archivo CSV con groovy

Para este ejemplo, supongamos que tenemos un Array de Arrays como datos.

def animales = , , [id:'3',color:'amarillo',animal:'Canario',descripcion:'El canario es...
¿Usas EGit y tienes problemas? Prueba con Git Bash

Ayer me encontraba con Francisco pulleando cambios a su repositorio local, cuando de pronto apareció un wild EGit que no nos lo permitió.

¿Y por...