Author Archive

  • Barcamp Litoral en Santa Fe

    0

    El proximo sábado 7 de mayo se realizará en Santa Fe, Argentina, el Barcamp Litoral mas grande de sudamerica. El evento cuenta con el apoyo de la Universidad Nacional del Litoral, el Gobierno de la Ciudad de Santa Fe y el grupo de emprendedores Santa Fe Valley.

    Lo curioso de esta edicion es que se preparan para recibir 3000 asistentes, lo cual seria un record para este tipo de eventos. Los eventos Barcamp realizados en Buenos Aires y Cordoba han juntado hasta 500 asistentes y han sido un exito rotundo. La gente que organiza esta edicion tienen gran experiencia y no dudo de que van a hacer un evento fantastico.

    Aparte del Barcamp se hara un evento “Santa Fe Tech Day” el cual sera de acceso libre y gratuito para todos y sera el lugar donde los soponsors podran desplegar sus productos ante los miles de invitados a esta jornada Geek.

    Les deseo el mejor de los exitos a mis amigos de Barcamp Litoral!

    Link para registrarse

  • 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

  • Axis WS Client Usando AXIOM

    0

    Apache Axis2, el cual ya esta siendo dejado de lado por su complejidad y el surgimiento de otros web services stack como Metro y Apache CXF con mayor performance, brinda a los usuarios variadas opciones de data bindings.

    Este artículo muestra como llamar a un Web Service utilizando Axis Object Model. Esta técnica es de "bajo nivel", parecida a la API de JAX-WS Provider/Dispatcher. Utilizar AXIOM es mejor que trabajar con XML DOM elements pero ciertamente más complejo que hacerlo con ADB o JAXB.

    Primero los imports de las classes utilizadas

    import org.apache.axiom.om.OMAbstractFactory;
    import org.apache.axiom.om.OMElement;
    import org.apache.axiom.om.OMFactory;
    import org.apache.axiom.om.OMNamespace;
    import org.apache.axis2.addressing.EndpointReference;
    import org.apache.axis2.client.Options;
    import org.apache.axis2.client.ServiceClient;

     

    Y ahora el código para el llamado al WS

    OMFactory factory = OMAbstractFactory.getOMFactory();
    OMNamespace omNs = fac.createOMNamespace("yournamespace", "someprefix");
    OMElement method = fac.createOMElement("theActionName", omNs);
    
    OMElement param1 = fac.createOMElement("someParam", omNs);
    param1.setText("someValue");
    method.addChild(param1);
    
    String url = "http://server/webserviceURL";
    ServiceClient client = new ServiceClient();
    Options opts = new Options();
    // es super importante, el timeout siempre lo define
    // el cliente, hay que tener en cuenta que si la operación
    // es larga es importante darle un buen timeout en ms
    opts.setTimeOutInMilliSeconds(300000);
    opts.setTo(new EndpointReference(url));
    opts.setAction("theActionName");
    client.setOptions(opts);
    OMElement res = client.sendReceive(method);
    
    // finalmente la respuesta que es nada mas
    // y nada menos que un XML
    System.out.println(res);

     

    La implementacion de AXIOM no es sencilla pero es lo más versátil en cuanto a customización de un request a un WebService.

Page 2 of 49«12345»102030...Last »