Usando Callbacks en JavaScript

Cuando usamos JavaScript muchas veces necesitamos coordinar la ejecución de ciertas partes del código. JS al ser un lenguaje asincronico no espera a que se termine de ejecutar una sentencia para comenzar con la otra.

Cuando el éxito de nuestro programa depende del resultado de una sentencia previa debemos utilizar métodos para sincronizar la ejecución. Los callbacks se pueden utilizar para eso. Básicamente con ellos le decimos a una función que cuando termine de ejecutarse ejecute otra. Les dejo un ejemplo que subí a Gist para poder verlo en acción.

Como pueden ver es una forma muy simple y a la vez muy poderosa para la sincronizar la ejecución de diferentes funciones. ¿Usaron callbacks alguna vez?

MEANizando la web o breve introduccion a MEAN y el full stack javascript

Sufro de una deformacion profesional cada vez que veo algun sitio empiezo a imaginarme como lo me mejoraria, ya sea en el posicionamiento, en el diseño (en esto no tanto) o incluso en la tecnologia sobre la que funciona. Hoy, por ejemplo, estaba viendo este sitio de compra online de productos en Chile y no podia dejar de pensar lo bien que podria funcionar (y no es que lo haga mal) utilizando el stack MEAN + Bootstrap.

Vamos por partes. ¿Por que Bootstrap?: es sencillo con muy poco trabajo logramos un sitio responsive (o adaptativo como le dicen otros) y no necesitamos gastar en costosas adaptaciones para moviles. Por otro lado contamos con una estetica uniforme en todo el portal.

mean

En cuanto al stack MEAN me parece una de las mejoras cosas surgidas este ultimo tiempo. Y creo que su verdadero valor todavia esta por probarse. MEAN es un acronimo que agrupa varias soluciones:

  • M: Mongodb. Una base de datos noSQL orientada a documentos que permite generar estructuras de datos dinamicas, es decir no es una conjunto de tablas.
  • E: Express. Un framework para nodejs que nos permite desarrollar aplicaciones web.
  • A: Angular. Es de google, no hay mucho para agregar. Un framework javascript para el frontend que nos permite hacer cosas muy interesantes.
  • N: NodeJS. El servidor y el framework base a la vez. Es el que nos permite unir todo.

Aunque no se menciona especificamente todo esto hace uso (aunque no obligatoriamente) de lo que se conoce como RESTful… Es decir la comunicacion entre el frontend y el backend se hace mediante una api que maneja estructuras de datos JSON (que… ¡o casualidad! tambien es la estructura de datos que usa Mongodb).

¿Por que considero que los sitios de venta por internet deberia utilizar este tipo de tecnologia?

Primero por lo responsive (aunque tambien lo podriamos tener en una aplicacion mas tradicional).

Segundo por la reduccion de costos, al utilizar angular una parte de la logica, y por ende del procesamiento, se traslada al navegador del cliente.

Tercero por la facilidad que nos ofrece para crear una api de integracion… me imagino, por ejemplo, crear una que permita tener un sistema de afiliados de ventas o algo similar.

Quiero una Raspberry pi!

Hace bastante tiempo que le estoy hechando un ojo a la Raspberry pi. Me parece un equipo sumamente versatil que nos permite hacer multitud de cosas a un costo no muy alto.

El primer uso que imagino para una de estas es la de transformar cualquier led tv en un Smart TV. Agarramos la Raspberry, le metemos un sistema operativo Linux y solo nos quedaria conectar la maquinita a la TV. Con esta ya podrias ver cualquier video en tu sala como si fuera el cine. Como pueden ver es muy sencillo hacer un sistemita de este estilo.

Otro uso que me parecen muy interesante para ella es la de montar un servidor de archivos. Con un disco externo (hay discos de 1 tera bastante economicos) y un poco de maña podemos armar algo bastante interesante. Podemos usarlo como una unidad de backups o como un lugar donde guardar los archivos multimedia.

raspberrypi

Al ser maquinas que gastan muy poca energia podemos pensar en dejarla constantemente prendida sin preocuparnos por la factura de electricidad. Y ahi aparece otro de los usos que podemos darle. En mi pais las conexiones a internet siguen siendo bastante lentas y montar un servidor de descargas con una de estas seria algo bastante util.

Hay aplicaciones para descargar torrents, por ejemplo, que nos ofrecen una interfaz web. Con eso montariamos el servidor y luego accederiamos a el mediante nuestro navegador desde cualquier maquina de nuestra red local.

Hay infinidad de cosas que se pueden hacer con una maquinita de este estilo. Incluso podriamos hacer muchas cosas de esas que se suelen hacer las placas arduinos o plcs. Por ejemplo podriamos hacer algo de domotica controlando las luces y la calefaccion.

Cada tanto reviso algunas paginas de venta online y me fijo los precios de la raspberry pi modelo b y sale unos 1000 pesos argentinos. Si le sumamos el modulo wifi (que en mi caso no seria necesario) se va a unos 1500. Lo que si deberiamos comprarle es un case y los hay muy baratos.

Asi por algo mas de 100 dolares al cambio oficial o algo menos si nos fijamos en el precio del dolar no oficial podemos montarnos algo bastante lindo y divertido para jugar… nuestra imaginacion es el limite.

¿Vuelvo?

La idea durante los ultimos 4/5 meses era ir publicando los diferentes trabajos que hacia en la facultad. De la misma forma que lo venia haciendo anteriormente con trabajos hechos para ingenieria de software 1 y para software y los nuevos escenarios. Como ninguna de las materias fue teorica no lo pude hacer el sitio quedo un poco abandonado.

Este cuatrimestre, el ultimo si sale todo bien, vuelven las materias teoricas. Por un lado Ingenieria de Software 2 y por otro Informatica 3 (que segun me dijeron va a hablar sobre seguridad informatica). Gracias a estas materias espero volver a publicar algunas cosas por aca.

La verdad es que ahora que veo el recorrido, 20 materias aprobadas y a 4 de recibirme, me doy cuenta de porque se hicieron muchas cosas como se hicieron. Al principio pensaba que estaba muy mal organizado todo. Aunque en ciertas cosas se nota que fuimos los conejillos de indias (los primeros ingresantes de la universidad) por otro lado la vision de la carrera ahora me queda mucho mas clare. La idea no era que seamos solo programadores sino que estemos capacitados para varias otras tareas dentro del desarrollo de software…

¿Por que cuento esto? porque despues de casi 3 de años de estudios y habiendo postergado muchas cosas estoy a un paso de recibirme y necesito la fuerza para continuar. No es nada facil salir todos los dias a las 7 de la mañana y volver despues de las 10 de la noche. No es facil no poder compartir una comida con mi hija de 3 años y 10 meses.

Tampoco fue facil juntar mis labores en internet con el estudio y el trabajo. Haciendo un poco de malabares llegue a cumplir, a medias, con todo.

En fin… extraño escribir aca. Y si todo sale bien por lo menos voy a poder publicar algunas cosas sobre lo que estoy estudiando.

No… no me mori

Estoy a menos de 24 horas de terminar el cuatrimestre si todo sale bien… En vez de estar renegando con los ultimos detalles del tp preferí escribir algunas lineas en mis sitios. Para descargar tensiones…

Este cuatrimestre fue muy duro. Hace poco mas de 3 meses publique que comenzaba mi año estudiantil… En mi facultad son medio nabos se ve… porque el cuatrimestre esta durando solo 3 meses :p. Fueron 3 meses muy laboriosos pero estoy muy contento con el resultado.

Aprendí varias cosas interesantes:

  • programación concurrente en C. Con pthread, semaforos y todo eso que dentro de 2 meses no me voy a acordar de nada. (promocionado con 10)
  • redes… mejor ni hablar… pero esta promocionado.
  • base de datos 2. Java, Hibernate y un montón de cosas mas (por ejemplo angularJS) que me gusto mucho (promocionado con 9)
  • Y  técnicas de programación. Patrones de diseño en Java… De esta materia es el TP que presentamos mañana: un sistema de gestion para una universidad… No lo hicimos todo. Seguimos la estructura del trabajo de bdd2 pero la adaptamos a nuestras necesidades.

Estoy contento con todo lo aprendido… El trabajo practico de mañana no me gusta como quedo… Pero hicimos todo lo que pudimos… fueron 4 dias completos de codear sin parar. Y tendrian que haber sido 30, pero bue… se hizo lo que se pudo.