Archive for the ‘internet’ Category

  • WebSockets en HTML5

    0

    WebSockets es una tecnología que está surgiendo de la mano de HTML5 y estará pronto disponible en todos nuestros browsers en poco tiempo. Pero que son los WebSockets ? WebSockets es una tecnología que nos da canales de comunicación bidireccional, full-duplex a través de un sencillo socket TCP. Traducido ésto a nuestro ámbito más cotidiano, es simplemente server push. Vamos a poder comunicarnos real-time con nuestros clientes conectados cosas que trataba de emular la tecnica Comet la cual hacía vivir un request http durante X tiempo y donde el server escribia en ese response emulando ser un push.

    Hoy no son muchas las versiones estables de browsers que lo soportan. No es el caso de Google Chrome el cual viene con soporte para WebSockets desde su versión 4.

    • Google Chrome 4 +
    • Internet Explorer 9 beta +
    • Firefox 4 beta +
    • Safari 5 +
    • Opera 10.70 +

    Ahora veamos un poco de código. Lo primero que tenemos que saber es si el browser conectado soporta WebSockets, lo cual podemos comprobarlo de manera sencilla.

    var support = window.WebSocket != null;

    Ahora que sabemos que nuestro browser soporta WebSockets podemos empezar creando uno.

    var socket = new WebSocket("/mysocket");

    Una vez creado el objeto WebSocket vamos a agregarle una serie de listeners para poder manipular los eventos que ocurran en el mismo.

    socket.onopen = function(e) {
      alert("Socket is connected");
    };
    
    socket.onclose = function(e) {
      alert("Socket is closed :(");
    }
    
    // y finalmente el que mas nos interesa, el push del server
    socket.onmessage = function(e) {
      alert("Server sent a message: " + e.data);
    }

    Sin dudas que el evento más importante aca es el onmessage. El parámetro e.data puede ser texto plano, json, xml o cualquier formato que estén acostumbrados a utilizar a diario.

    Ahora vamos a ver un ejemplo de cuando el cliente quiere comunicarse con el server enviándole un sencillo mensaje.

    socket.send("data goes here");

    De ésta manera podemos tener una comunicación bidireccional de manera sencilla.

    Ahora veamos algunos escenarios donde aplica la utilización de WebSockets

    • Es aplicacble donde un servicio TCP debe ser llevado a una arquitectura web (como por ejemplo el servicio de mensajeria XMPP)
    • Donde una aplicación web necesita comunicar datos en real-time a sus clientes (por ejemplo una aplicación de stocks online)

    WebSockets es un avance significativo para la web donde las aplicaciones en browsers se parecen cada vez más a las de escritorio pero a su vez hiper conectadas entre sí.

    Algunos recursos para leer

  • Como Descargar Un Archivo En PHP

    0

    Descargar un archivo en PHP implica leer un archivo de una locación en el servidor y escribir hacia el cliente. Hay varias opciones disponibles a la hora de la descarga.

    Primero localizamos y abrimos el archivo

    $path = "http://myserver/somelocation/somefile.pdf";
    $fd = fopen($path, "r")
    $fsize = filesize($path);
    $path_parts = pathinfo($path);
    $ext = strtolower($path_parts["extension"]);

    Escribimos los headers para la descarga

    header("Content-type: application/octet-stream");
    header("Content-Disposition: filename=\"".$path_parts["basename"]."\"");
    header("Content-length: $fsize");

    Escribimos el archivo hacia el browser

    readfile($path);
    fclose($fd);
    exit;
  • Primeras Impresiones Sobre Internet Explorer 9

    0

    Acabo de terminar de instalar Internet explorer 9 beta y realmente las primeras impresiones que tengo son bastante buenas.

    • Cuando abre muestra secciones con los sitios mas visitados. Es una lástima que IE tenga ciclos de desarrollos tan largos y no haya hecho esto 4 años antes, pero finalmente ya esta acá.
    • Finalmente funciona el CTRL + L ! que va a la barra de direcciones. Chrome, Safari y Firefox siempre lo tuvieron, en cambio IE siempre tuvo F6.
    • Se nota realmente la diferencia de velocidad de renderización de HTML y ejecución de Javascript, es muy rápido.
    • El startup time es casi como el de chrome de rápido, pero una vez que ingresamos la url se ve que hace algunas maniobras por detras para seguir cargando el browser y tarda un par de segundos hasta que la pantalla se ve utilizable.
    • Por default hace antialiasing de las fonts igual que Safari (cosa que particularmente no me gusta)
    • El developer tools, la herramienta para hacer debugging de IE, tiene modo IE7, IE8 y IE9 como adicional a la versión anterior, el resto a primera vista parece todo similar.
    • La creación de un nuevo TAB con CTRL + T es realmente muy rápida, cosa que en IE8 tardaba su buen rato.
    • El área de navegación es tan grande como la de Chrome, cosa que esta haciendo tambien  Firefox con su versión 4. Es realmente muy buena.
    • No me gusta el address bar que esta en la misma linea que los tabs y eso le quita espacio, soy de los que le gusta ver en que URL están.
    • El historial, favoritos y demas estan todos integrados en un sidebar desplegable con buscador y en forma de arbol. Parece muy práctico.
    • Ni hablemos de que este es un full compliant browser con las normativas del WC3 y tiene muchisimas capacidades para HTML5, lo cual lo hace mucho mejor aún.
    • Finalmente alguien les avisó e hicieron el borrado del historial rápido, o al menos en background y eso te permite estar navegando al instante. Desde IE6 borrar el historial siempre fue un dolor de cabeza.
    • Esta versión beta debe tener aún algunos problemas con ECMA script ya que el editor de wordpress no funciona muy bien, en GMail los shortcuts de teclas reaccionan a veces y otras no.
    • Unos de los features más publicitados es el tema de hardware rendering, en este link podemos ver una demo de speed reading a 26 fps o lo que tu placa esté capacitada.

    En líneas generales puedo decir que mi impresión es más que buena. IE9 es un digno competidor de Chrome ( mi favorito ) lo cual no significa que voy a cambiar de browser ni por casualidad.
    Creo que en lo que respecta a PC, hoy puedo decir que no importa que browser utilizas, siempre vas a ver y experimentar lo mismo en cualquiera de ellos. Este es un dia que he soñado hace años, desde el 95 quizá que fue cuando comencé mi experiencia en la web.

    Aqui dejo el link de descarga para Microsoft Internet Explorer 9

    Aquí están las demos oficiales de HTML5 y hardware acceleration para IE9

  • Como Usar FTP en Shell Script

    2

    A diario hago backup en mis servers pero los archivos quedan residentes en las mismas máquinas. Obviamente mientras el backup esté mas lejos de los datos originales menores son las probabilidades de no recuperarse de un desastre computacional.

    Lo ideal seria hacer una transmisión FTPS o SFTP si estás preocupado por algun sniffer o similar, pero bueno, aquí vamos a ver la solución fácil y rápida con un shell script muy sencillo.

    #!/bin/sh
    HOST='www.myserver.com'
    USER='myuser'
    PASS='mypassword'
    #voy a hacer backup del folder creado ayer
    YESTERDAY=$(date --date='1 day ago' +%Y%m%d)
    
    # pensemos que dejamos los backups diariamente en este path
    # los cuales estan en folders con formato fecha cual
    # 20100227 (YYYYMMDD)
    cd /home/myuser/backups/
    # creo localmente un folder con el mismo nombre
    mkdir $YESTERDAY
    cd $YESTERDAY
    
    ftp -n $HOST <<END_SCRIPT
    quote USER $USER
    quote PASS $PASS
    # aca vamos a la misma locacion pero en el server
    cd /home/myuser/backups/$YESTERDAY
    # aca es donde bajamos el archivo que queremos backupear
    get backup.tar
    quit
    END_SCRIPT
    exit 0
    

    Y listo, solo nos falta una entrada en el cron para correr esto a diario. Para ello:

    crontab -e

    Entonces agregamos el script para ser llamado diariamente

    0 1 * * * /usr/share/scripts/mybackupscript.sh

    Esto soluciona grandes dolores de cabeza con mínimo esfuerzo. Que lo disfruten!

  • Federated Login Para Tu Aplicacion

    2

    Introducción

    Hacer un login para usuarios en una aplicación requiere cumplir con una serie de items de seguridad que no siempre tenemos en cuenta tales como:

    • Definición de políticas para contraseñas
    • Guardar contraseñas encriptadas
    • Transmitir las credenciales por HTTPS
    • Considerar Hand Shaking
    • Algoritmos de recuperación de contraseñas

    y así varios más.

    Por todos estos motivos yo trato de aplicar el concepto de resuabilidad. Para qué esforzarnos de tal manera si podemos reutilizar herramientas y APIs que hicieron empresas que dedican cientos de developers a eso ? Acá es donde introducimos el concepto de Federated Login.

    Podemos decir que el concepto de Federated Login se refiere a la conjunción de información de una persona o su propia identidad virtual, almacenado en múltiples sistemas distribuidos el cual permite acceso a diferentes aplicaciones que hayan solicitado la identidad y obviamente que se le haya otorgado.

    Si por ejemplo yo me identifico con mi Federated Login en un sitio web A y ese sitio web utiliza servicios del sitio B, éste puede confiar en la autenticidad de mis credenciales ya previamente otorgadas a sitio A.

    Estadísticas en Argentina

    Al día de hoy calculamos casi 20 millones de usuarios de Internet en nuestro país ( parece ser que en el 2008 eramos 11 millones ). Ahora, de esos casi 20 millones un 50% parece tener cuenta de Facebook, eso es MUCHO. Entonces por qué no tomar ventaja de ésta base de usuarios ? y más aun, del federated login provisto por este monopolio social ?

    Acá la URL de facebook que explica como implementar su Federated Login

    Login con Facebook

    Alternativas

    Si no queres utilizar Facebook para un login podes utilizar otros servicios tales como twitter y google entre otros.

    Login con Google

    Login con Twitter

    Login con Yahoo

Page 1 of 3123»