Logo

Marc Pampols

  • Acerca de
  • Contacto
  • Proyectos web
  • Gráficos 3D
  • Aleatorio
  • Archivo
  • RSS
  • Envíame una pregunta
  • Colabora

Node.js y Heroku

Con la intención de renovarme un poco, decidí aprender lo básico de node.js y abrirme una cuenta en Heroku para probar y subir alguna pequeña aplicación en “el cloud”.

Tras buscar un poco de información sobre node.js, me topé con un taller en video de Nacho Soto que muestra paso a paso como crear un chat multiusuario y al final subirlo a Heroku. ¡Perfecto! aunque el tio va algo acelerado (o quizás sea la edad…) me pareció un punto de partida genial, y lo recomiendo.

Heroku

El primer paso es darte de alta en Heroku, puedes hacerlo con una cuenta gratuita si le vas a dar poco uso o simplemente quieras trastear un poco, como es mi caso. Luego hay que instalar el Heroku Toolbelt, que incluye el cliente necesario, y en la página de  Getting Started with Node.js on Heroku/Cedar está todo lo necesario para empezar.

La gracia de Heroku es que puedes subir tu aplicación con sencillos comandos de Git, y a partir de ahí ya corre en su infraestructura de servidores, todo sin tener que preocuparte de instalar o configurar nada relacionado con sistemas operativos, librerias y demás. Con un simple “git push heroku master” se hace el deploy. Evidentemente hay que tener en cuenta algunas cosas como la configuración del puerto a utilizar, pero está todo muy bien indicado en las guías de https://devcenter.heroku.com

El siguiente es un ejemplo del output al lanzar el comando git push:

$ git push heroku master
Counting objects: 17, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (9/9), 684 bytes, done.
Total 9 (delta 4), reused 0 (delta 0)

-----> Heroku receiving push
-----> Node.js app detected
-----> Resolving engine versions
       Using Node.js version: 0.4.7
       Using npm version: 1.0.106
-----> Fetching Node.js binaries
-----> Vendoring node into slug
-----> Installing dependencies with npm
...

Node.js

Node.js es un entorno de programación y una librería para crear servidores web con entrada/salida asíncrona y dirigida por eventos. Funciona con el motor JavaScript V8 creado por Google.

¿Cuando podemos usar Node.js y para qué?

Node está construido con la idea de crear aplicaciones que necesiten una conexión persistente del navegador del cliente hacia el servidor, uno de los ejemplos es un chat, donde tenemos que recibir las actualizaciones de los mensajes lo más rápido posible, y Node permite hacerlo además de forma bastante óptima.

Se utiliza también una técnica llamada “Long-polling”, una técnica que permite enviar datos del servidor al cliente, pero si el servidor no tiene datos que enviarle, en lugar de enviar una respuesta vacía (que es lo que haría con el “polling”), el servidor mantiene la petición del cliente hasta que tiene información nueva para enviarle. En la programación AJAX es conocido como Programación Comet

Node es una buena opción para crear aplicaciones colaborativas, chats, y en definitiva, servicios en los que el cliente debe ver mucha información nueva sin tener que refrescar la página.

Node es óptimo porque cada petición necesita solo unos pocos ciclos de CPU, ya que el bucle de eventos está bloqueado durante la ejecución de una funcion.

Chat en Node.js

Tras subir el chat a Heroku, se puede utilizar desde la siguiente URL:
http://high-cloud-1518.herokuapp.com/

Y en el siguiente repositorio de Github he dejado el código fuente del mismo:
https://github.com/mpampols/nodejs-chat

  • hace 2 días
  • Enlace permanente
  • Share
    Tweet

Tutorial sobre caching

Un documento que resume muy bien los distintos tipos de cache en desarrollo web. Qué son, cómo funcionan, y cómo se implementan. Aunque bastante básico, ayuda a tener una buena base de conocimiento.

  • hace 1 semana
  • Enlace permanente
  • Share
    Tweet

RESS, Responsive Design + Server Side Components

Tutorial que enseña los conceptos básicos de RESS (Responsive Design + Server Side Components), y cómo puedes construir una página responsive que funcione bien en resoluciones pequeñas con la ayuda de tecnologías server-side.

  • hace 1 semana
  • Enlace permanente
  • Share
    Tweet

Instalar Haskell GHC en Ubuntu

Decidí probar Haskell, siempre me habia picado la curiosidad por conocer un poco el lenguaje, y quedé sorprendido por lo bonito que parece ser.

Lo instalé en una máquina virtual con Ubuntu 11.10 con los siguientes pasos:

Primero, las dependencias:

$ sudo apt-get install libgmp3-dev freeglut3 freeglut3-dev
  • libgmp3-dev: Multiprecision arithmetic library developers tools 
  • freeglut3: OpenGL Utility Toolkit 
  • freeglut3-dev: OpenGL Utility Toolkit development files 

Luego, bajamos la última versión, que ahora mismo es la 7.4.1:
$ wget http://www.haskell.org/ghc/dist/7.4.1/ghc-7.4.1-i386-unknown-linux.tar.bz2


Descomprimir y instalar, como cualquier otro paquete:

$ tar -xvvf ghc-7.4.1-i386-unknown-linux.tar.bz2
$ cd ghc-7.4.1
$ ./configure


Pero llegado este punto, da el siguiente error:

libgmp.so.3: cannot open shared object file: No such file or directory

… que se arregla creando un symlink:

sudo ln -s /usr/lib/libgmp.so /usr/lib/libgmp.so.3
$ sudo make install


Y una vez instalado, lanzamos el GHCi, el entorno interactivo del compilador GHC que hemos instalado, y probamos con un simple “Hello world” ejecutando el ghci.

rockhound@ubuntu:~/ghc-7.4.1$ ghci
GHCi, version 7.4.1: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> "Hello world!"
"Hello world!"


Es un lenguaje curioso, funciona básicamente con llamadas a funciones. El compilador principal es el que he instalado, GHC, que está formado por ghc, el encargado de compilar, y ghi, el intérprete ghci.

Para terminar, un enlace interesante si quieres aprender un poco de Haskell: http://www.haskell.org/haskellwiki/Learn_Haskell_in_10_minutes

    • #haskell
  • hace 1 mes
  • Enlace permanente
  • Share
    Tweet

¿Tienes un secreto de estado y temes por tu vida?

Este servicio web puede ser de tu interés.

Dead Man’s Switch:
http://www.deadmansswitch.net/

Pero vamos por partes. Primero: ¿Qué significa esa expresión?

La expresión “Dead Man’s Switch” proviene de un sistema que se utiliza para detectar si un humano es incapaz de controlar una máquina en algún momento. Por ejemplo, los conductores de tren pueden tener un pedal que si en algún momento deja de ser pulsado, se activarán los mecanismos de freno.

Dead man's switch

Hay multitud de variantes y casos de uso, y uno de ellos es el que han implementado en el servicio web deadmansswitch.net, que se traduce de la siguiente manera.

Podemos escribir y preprogramar una serie de mensajes, cada uno con sus correspondientes destinatarios. Dichos mensajes se encuentran cifrados en el servidor para que nadie pueda leerlos. Si en algún momento nos sucede algo, el dispositivo se activará y enviará los mensajes que hemos preparado. Se activará tras no detectar actividad por parte nuestra, de esta forma, nuestros secretos serán liberados. Se trata de una especie de seguro de vida.

Tras guardar nuestros secretos, el servicio nos enviará correos electrónicos para comprobar que seguimos vivos pidiendo que cliquemos en un simple enlace. Si pasado un tiempo no damos señales de vida, la aplicación de Dead Man’s Switch enviará nuestros mensajes a los destinatarios programados. Así de simple.

No es un sistema perfecto, ya que pueden robarnos el acceso a nuestro correo electrónico y evitar que nuestros secretos sean revelados, pero es una buena primera implementación en el mundo digital.

  • hace 1 mes
  • Enlace permanente
  • Share
    Tweet
'\x3ciframe width=\x22500\x22 height=\x22374\x22 src=\x22http://www.youtube.com/embed/ZTC_RxWN_xo?wmode=transparent\x26autohide=1\x26egm=0\x26hd=1\x26iv_load_policy=3\x26modestbranding=1\x26rel=0\x26showinfo=0\x26showsearch=0\x22 frameborder=\x220\x22 allowfullscreen\x3e\x3c/iframe\x3e'

Los Secretos de Silicon Valley (Inglés)

Una charla de Steve Blank en la que explica cómo empezó realmente Silicon Valley.

  • hace 1 mes
  • Enlace permanente
  • Share
    Tweet

The Business Model Canvas

Una herramienta en PDF y con licencia Creative Commons, que te permite describir y diseñar un modelo de negocio.

  • hace 1 mes
  • Enlace permanente
  • Share
    Tweet
'\x3ciframe width=\x22500\x22 height=\x22281\x22 src=\x22http://www.youtube.com/embed/u_2qKQpxCRw?wmode=transparent\x26autohide=1\x26egm=0\x26hd=1\x26iv_load_policy=3\x26modestbranding=1\x26rel=0\x26showinfo=0\x26showsearch=0\x22 frameborder=\x220\x22 allowfullscreen\x3e\x3c/iframe\x3e'

El arte de destrozar objetos en 3D

El video es una demostración técnica de RayFire, un plugin para 3dsMax (una de las más conocidas aplicaciones de modelado y animación 3D de Autodesk) para, simplemente, destrozar todo tipo de objetos 3D.

  • hace 1 mes
  • Enlace permanente
  • Share
    Tweet
¿Cuál es la aplicación número 1 en descargas gratuitas de la AppWorld de BlackBerry?
La biblia.
Pop-upView Separately

¿Cuál es la aplicación número 1 en descargas gratuitas de la AppWorld de BlackBerry?

La biblia.

  • hace 1 mes
  • Enlace permanente
  • Share
    Tweet

Subscripción de usuarios a objetos Plone con envío de notificaciones.

He añadido un Gist público en Github con 3 funciones que pueden ser útiles si estás creando un sistema de suscripción a objetos de Plone, con envío de notificaciones por correo y opción de darse de baja a través de un enlace con un hash personalizado.

La idea es crear un tipo de contenido de Plone con un campo para guardar los suscriptores. Primero, una función add_subscriber() para añadirlos, que puede ser llamada desde cualquier acción en la web. Luego está la función sendEmail() que envía la notificación de, por ejemplo, actualización, a todos los suscriptores del objeto.

El correo enviado contiene un enlace con el objeto al que el usuario se ha suscrito, y un string secreto que nos permite comprobar que sólo el receptor del correo podrá darse de baja.

La función do_unsubscribe nos sirve para comprobar dicho string cuando el usuario hace click en el enlace, y darle de baja eliminando su cuenta de correo de dicho objeto Plone.

Add / Remove Plone object subscribers and send a notification email on state change:
https://gist.github.com/2265553

    • #plone
    • #python
  • hace 1 mes
  • Enlace permanente
  • Share
    Tweet
← Recientes • Antiguas →
Página 1 de 4

Acerca de

Avatar Tech entrepreneur. Founder of YoteConozco. Plone / Python project leader & programmer at Semic.

Sígueme en

  • @mpampols on Twitter
  • Facebook Profile
  • mpampols on Flickr
  • Google
  • Linkedin Profile
  • mpampols on github

Twitter

loading tweets…

  • RSS
  • Aleatorio
  • Archivo
  • Envíame una pregunta
  • Colabora
  • Móvil

Effector Theme by Carlo Franco.

Proporcionado por Tumblr