Tips de Joshua Bloch sobre diseño de APIs
martes, julio 27, 2010 at 9:57AM
otro
martes, julio 27, 2010 at 9:57AM
martes, julio 27, 2010 at 9:45AM Ayer la librería del Congreso de Estados Unidos publicó una lista de excepciones al Digital Millennium Copyright Act (DMCA). El DMCA es una ley que prohibe romper cualquier tipo de encriptación. No obstante, desde su creación en 1998 se han ido incorporando ciertas excepciones, como la que permite romper la encriptación de los DVDs para permitir realizar copias de seguridad.
Cada tres años la librería del Congreso publica nuevas excepciones. Y ha llegado el momento de actualizar las actuales. Entre ellas, hay una bastante relevante para el mundo de los terminales móviles de última generación: muy a pesar de Apple, jailbreaking iPhones para "hacer el sistema operativo en el teléfono interoperarable con aplicaciones creadas de modo independiente que no han sido aprobadas por el fabricante del terminal móvil o el fabricante del sistema operativo... son uso justo".
Es decir, jailbreaking iPhones para instalar en ellos aplicaciones no aprobadas por Apple es legal. Esto ha sido conseguido gracias a la Electronic Frontier Foundation, que fue quien llevó el caso ante la librería del Congreso. Apple, como era de suponer, luchó todo lo que pudo para evitar que esta medida se llevase a cabo. Pero han perdido.
¿Creéis que esto podría tener un impacto negativo sobre la visión de teléfono móvil de Apple, un terminal cerrado en el cual sólo se puede instalar lo que Apple permite? Ahora que es legal ¿habrá más personas que se animarán a jailbreak sus iPhones?
viernes, julio 23, 2010 at 4:27AM
He publicado la versión 1.0 de ItsNat, Natural AJAX.
Esta versión es el resultado de años de desarrollo, de evolución, de adaptación, de pulido, de flexibilización…
El objetivo de ItsNat ha sido siempre el de ser una herramienta de bajo/medio nivel con el fin de ofrecer una herramienta a la vez sencilla y sofisticada para el desarrollo, con la mayor libertad, adaptabilidad y flexibilidad posible, de aplicaciones y sitios web intensivos en AJAX, en el extremo Single Page Interface, que funcionen prácticamente en cualquier gestor de HTML, SVG o XUL existente (con soporte de AJAX) y otorgando libertad casi absoluta de diseño visual.
La libertad, adaptabilidad y flexibilidad se manifiesta en extremo en esta versión a partir de tres nuevas características:
Cualquier página cargada por el navegador generada por cualquier tecnología a través de un sencillo script puede ser enviada a un servidor corriendo ItsNat, tal que en el servidor se crea un documento ItsNat con este código utilizado como si fuera un template normal. Teniendo en cuenta que la v1.0 proporciona eventos basados en <script> auxiliares que evitan la limitación de dominio de los eventos basados AJAX, es posible por tanto controlar la página del usuario añadiendo estado, eventos etc como en una aplicación normal.
DEMO
Ahora es posible que un template ItsNat esté basado en una URL remota o bien implementando el interface TemplateSource definir una fuente del markup a medida. Como extremo es posible crear una aplicación ItsNat que sea un “front end” de otra aplicación web ya existente. El ejemplo siguiente es un “fake” de las dos primeras páginas de Google Search, en donde se carga bajo demanda las páginas de Google y se modifican al gusto.
Hasta ahora los clientes de control remoto eran visores de sólo lectura y el control remoto sólo era posible en el servidor, ahora los clientes también pueden enviar eventos por lo que los listeners registrados en el servidor son propagados a los clientes con derechos de emisión de eventos. El resultado es que múltiples clientes pueden controlar el mismo documento en el servidor, es decir pueden trabajar sobre la misma “página”. Usando los adecuados timers o Comet es posible ver en tiempo real lo que otro usuario hace en tu página y viceversa.
DEMO
Otras novedades de esta versión son:
- Componente “AJAX file upload”
- Soporte para el inminente Internet Explorer v9. ItsNat trata MSIE 9 como un navegador W3C más y no como la siguiente versión del MSIE v8, sacando partido por ejemplo a su soporte nativo de SVG tanto embebido en XHTML como puro SVG, el funcionamiento es el mismo que con cualquier otro navegador con soporte SVG (FireFox, WebKits, Opera…).
- Soporte de SVGWeb 2010-04-09 "Dracolisk"
Lista completa de novedades.
Enlace al proyecto: http://www.itsnat.org
Feature Showcase: http://www.innowhere.com:8080/itsnat
Feat. Show. en GAE: http://itsnatfeatshow.appspot.com
Proyecto en SourceForge: http://sourceforge.net/projects/itsnat
jueves, julio 22, 2010 at 2:26PM Tras más de 10 años en desarrollo, ayer la fundación apache anunció Apache FOP (Formatting Objects Processor) 1.0. Según la fundación Apache, se trata del primer formateador completamente dirigido por el standard del W3C XSL-FO y el primer formateador que es completamente independiente del formato de salida.
FOP es una aplicación Java que lee el objeto a formatear (formatting object, FO) y lo renderiza al formato de salida deseado. Actualmente, los formatos soportados incluyen PDF, PCL, PS, SVG, XML, Print, AWT, MIF y TXT.
Entre FOP 1.0 y el reciente anuncio de Xerces 2.10 el stack de la fundación Apache para trabajar con XML (FOP, Xerces, y Xalan) ha sufrido una actualización considerable.
jueves, julio 22, 2010 at 9:46AM JCommander es una pequeña librería Java que se distribuye bajo una licencia opensource y cuyo propósito es simplificar el trabajar con comandos de consola. La librería permite indicar sobre un POJO mediante anotaciones cuales son las distintas opciones del comando y a partir de esa información para ser de modo automático los comandos. Aquí tenéis un ejemplo de definición de un comando:
import com.beust.jcommander.Parameter;
public class JCommanderTest {@Parameter
public List parameters = Lists.newArrayList();
@Parameter(names = { "-log", "-verbose" }, description = "Level of verbosity")public Integer verbose = 1;
@Parameter(names = "-groups", description = "Comma-separated list of group names to be run")
public String groups;
@Parameter(names = "-debug", description = "Debug mode")
public boolean debug = false;
}
Que se podría ejecutar así:
JCommanderTest jct = new JCommanderTest();
String[] argv = { "-log", "2", "-groups", "unit", "a", "b", "c" };new JCommander(jct, argv);
Assert.assertEquals(jct.verbose.intValue(), 2);
Se trata de una opción evaluar para aquellos que tenéis que trabajar con comandos de consola desde Java.