Sunday, November 27, 2005

programar para el nuevo procesador Cell

En developerworks hay un articulo sobre como programar para el nuevo procesador Cell de IBM,
espero que lo disfruten.

Saturday, November 26, 2005

Sobre JavaWebStart

Si de java también, otra tecnología

Es un lanzador de aplicaciones via un navegador web. Creo que el grafico es muy explicito.

ventajas:
  • control de versiones y actulizacion automatica de la aplicación transparente al usuario
  • independiente de navegador
  • independiente de sistema operativo
  • firma de código
  • agrega caracteristicas de las que disfrutanlos applets como: seguridad, etc.
Desventajas: tener un JRE mayor a 1.2 ( no creo que sea un problema pues es una aplicación de java :-)

para más información:
http://java.sun.com/products/javawebstart/

también este artículo:
http://www.javahispano.org/article

Sunday, November 13, 2005

Hacer build más rápidos con ant

Encontre un buen artículo sobre como optimizar los build con ant.

Es importante optimizar los build porque aumentan la productividad en el desarrollo y más cuando el proyecto es pesado y complejo es cuanto más se necesita.

Aunque ya utilizaba algunas de estas técnicas, como usar jikes en las compilaciones se obtiene un redimento muy alto, por ejemplo en un proyecto que tengo, estaba con javac y se tardaba en compilar en casi 3 minutos y con jikes se tarda casi 1:15 ;-) se nota la diferencia. (tengo 118 clases en el projecto, más las que vendrán :-)

Claro que esto es más obvio cuando se utiliza
Continuous integration.

Y bueno lo que queremos siempre es lograr un mejor tiempo para aumentar la productividad cuando se trata de tareas repetitivas.

Tuesday, November 08, 2005

Java Studio Creator 2 Gratis!!!!!!!!! :-D

Sun está dando gratis por una promoción el Sun Java Studio Creador, que entre otras cosas permite desarrollar aplicaciones JSF.

Solo se debe estar registrado (SDLC) en el sitio de Sun y una vez que hagan la descarga les mandarán por mail la licencia para iniciar el IDE

Aprovechen esta oferta

http://www.netbeans.org/community/articles/creator_promo.html

Sobre JavaMail

JavaMail es el api para el desarrollo de tus aplicaciones, utilizando unos de los servicos más utilizados del internet el CORREO. Encontre un buen artículo el cual vale la pena leer si se quiere empezar a programar con esta api en tus projectos. Este artículo esta dividido en dos:
la primera parte es dedicada a la recuperación ( por medio de pop3) de email y la segunda al envio de email mediante smtp.

Realmente encuentro el artículo muy completo para ser un intro.

Desarrolla con reglas

Estas son reglas interpretadas a mi manera de un artículo que encontré:

  • Entiende y acepta que tendrás errores
  • No eres tu código - cuando critiquen es a tu lenguaje o programa no es a ti (por lo menos ;-)
  • NO importa cuanto karate sepas, siempre habrá alguien que sepa más
  • No rescribas el código de otros programadores - reutilizalo BE OPEN SOURCE :-) si ya esta hecho porque hacerlo de nuevo
  • Trata a las personas que entienden menos que tu con respeto y paciencia
  • La única constante es el cambio
  • El mando lo obtienes usando tus conocimientos, no tu posición
  • Pelea por lo que creas pero acepta también las derrotas
  • No seas el nerd del cuarto oscuro
este es el artículo original:
http://www.maestrosdelweb.com/editorial/sinegois/

Probando Firefox 1.5rc1

Baje la version 1.5rc1 de Firefox y esta estupenda, principalmente porque tiene una caracteristica que siempre quise desde el inicio, hacer drag and drop con los TAB :-D para poder ordenalos a mi manera.

Tiene un manejo de error más amigable para los usuario:


Además tiene actulización automática. Y nuevas mejoras de rendimiento. Chequeen el site

http://www.mozilla.org/

El proyecto Looking Glass

Desde la ultima vez que probe Looking glass (ya hace un año), decidi entrar al site para ver las cosas nueva, y vaya que si hay cosas nuevas.

  • Primero: Ahi una version para windows :-( una escusa menos para cambiar a linux )
  • Segundo: Hay un LIVE CD, esto es bueno para dar en las presentaciones demostraciones de la capacidades del software.
  • Tercero: Obviamente el software esta más estable por el desarrollo rápido y acelerado que tiene el team :-D.
  • La lista de software compatible es más grande


https://lg3d-core.dev.java.net/

Consigue un CD gratis de Netbeans

Mirando en el site de netbeans encontré , que estan dando un CD gratis (te lo envian también gratis ;-) Viendo lo que tenia que hacer: solo tener que registrarme en SDN (ya estaba resgistrado desde hace un tiempo :-) y bueno llenar el form.

Que contiene el CD:
  • NetBeans IDE 4.1
  • J2EE Application Server 8.1 PE Bundle
  • Mobility Pack 4.1
  • NetBeans Profiler
Además de que el netbeans no lo utilizo mucho, tiene un buen soporte de cvs (es un sarcasmo ,OK)

Nota: aunque tendré que pedirlo de nuevo porque en realidad, quiero probar la version 5 que estará listo pronto, porque la verdad prefiero eclipse pero soy open main ;-)

aqui esta el link: http://www.netbeans.org/about/cd-form.html

Saturday, November 05, 2005

Libros recomendados para la lectura sin desperdicio

He aqui sacado de mi librero una lista de libros, en los cuales se pueden leer sin desperdicio del tiempo, como me a pasado a veces cuando compro un libro y termino dejándolo en el primer capitulo, porque no lleno mis expectativas.

Espero que lo disfruten como yo lo hice. Pero antes tendrán que ver mi opinión de cada uno, porque tal vez les sirva para decidir si desea leer o no, un libro determinado en la lista. Los libros pueden estar en ingles o en español (mayormente en ingles). No tienen ningun orden en particular.

Java Open Source Programming: with XDoclet, JUnit, WebWork, Hibernate (Paperback)
by Joseph Walnes, Ara Abrahamian, Mike Cannon-Brookes, Patrick A. Lightbody
Unos de los mejores, lo recomiendo pero tienes que tener conocimiento y experiencia en programación con java en la web (como minimo saber de servlet y jsp) y por supuesto de todo lo que implique una aplicación en la web. Esta escrito por los lideres de los proyectos que estan en el título.

A Programmer's Guide to Java Certification: A Comprehesive Primer, Second Edition (Paperback)
by Khalid Mughal, Rolf Rasmussen
Es el mejor libro si quieres aprender el lenguaje (y certificarte si lo deseas ;-), aqui aprendes el lenguaje por completo, no como en esos tutoriales mediocres ;-) claro requiere un minimo de conocimiento de computación. Este es muy básico solo es el lenguaje, aqui no aprendes ha hacer una aplicación.

SCWCD Exam Study Kit Second Edition : Java Web Component Developer Certification (Paperback)
by Hanumant Deshmukh, Jignesh Malavia, Matthew Scarpino
Este no lo he leido pero le he dado una hojeada y además es uno de los más recomendados en Amazon. Sólo lo tengo para refencia (Y para la certificación también ;-) pero es muy completo para buscar información sobre las dos tecnologías web más usadas de java JSP y Servlet.

Aprendiendo C++ Para Linux En 21 Dias - Con CD ROM (Paperback)
by Jesse Liberty
Buenisimo, con decir que aprendi la verdadera POO con este libro. Es un libro que debería tener un programador en su biblio.

MDA Explained: The Model Driven Architecture--Practice and Promise (Paperback)
by Anneke Kleppe, Jos Warmer, Wim Bast
Este es muy bueno si quiere actulizarte (que deberías) en el mundo de la ingeniería de software.
Es corto y lo trata un tema MDA que pretende ser el proximo para en el desarrollo de software de una manera más continua e integra, facilitandole la vida a los ingenieros.

Practical PostgreSQL (O'Reilly Unix) (Paperback)
by Command Prompt Inc (Editor), John C. Worsley, Joshua D. Drake
Este es un libro básicos si quiere programar utilizando esta base de datos. Escrito por los lideres del este mismo proyecto.

Core J2EE Patterns: Best Practices and Design Strategies, Second Edition (Hardcover)
by Deepak Alur, Dan Malks, John Crupi
Este es un libro de referencia que no debe faltar en tu biblio (si programas para J2EE), se describen los patrones utilizados en J2EE para cada una de sus tecnologías.

Apache: The Definitive Guide (3rd Edition) (Paperback)
by Ben Laurie, Peter Laurie
Este es un libro básicos si quiere programar utilizando este web server.

Core JavaServer Faces (Sun Microsystems Press Java Series) (Paperback)
by David Geary, Cay Horstmann
Este libro es una recomendación para leerlo (porque no lo he leido), pero lo tengo en espera. JSF es el nuevo framework de desallorro en java para la web. Pero su aceptación es muy cautelosa puesto que es un framework basado en componentes manejado por eventos (como ASP.net). Por eso rompe con las técnicas de desarrollo de los programadores de java (que son muy buenas ;-) este framework se adapta al desarrollo de ventana (utilizado en visual studio .net) de una manera visual (demasiado diría yo ). Bueno pero hay que leerlo ;-)

Hibernate in Action (In Action series) (Paperback)
by Christian Bauer, Gavin King
Si deseas conocer o programar con este maravilloso framework, este es una lectura obligatoria.
Hibernate es cada vez más usado y lo recomiendo para cualquier proyecto.

Don't Make Me Think: A Common Sense Approach to Web Usability (Paperback)
by Steve Krug
Si programas aplicaciones web, cualquiera que se a tu lenguaje, este libro es básico si quiere trabajar con un alto grado de profesionalismo utilizando las técnicas adecuadas para la usabilidad de tu web sites. Es una lectura obligatoria y es un libro corto

WebWork in Action (Paperback)
by Jason Carreira, Patrick Lightbody
Este es un libro básicos si quiere programar utilizando este framework para aplicaciones web. Escrito por los lideres del este mismo proyecto. Recomiendo este framework.

No existe mejor manera de aprender que practicar lo aprendido :-D ( frase mia ;-) )

Programación con multiagentes

Según wikipedia:


El dominio del sistema multiagente o de inteligencia artificial distribuida es una ciencia y una técnica que trata con los sistemas de inteligencia artificial en red.

El bloque fundamental de construcción de un sistema multiagente, como es de esperarse, son los agentes.

Aunque no existe una definición formal y precisa de lo que es un agente, éstos son por lo general vistos como entidades inteligentes, equivalentes en términos computacionales a un proceso del sistema operativo, que existen dentro de cierto contexto o ambiente, y que se pueden comunicar a través de un mecanismo de comunicación inter-proceso, usualmente un sistema de red, utilizando protocolos de comunicación.

En cierto modo, un sistema multiagente es un sistema distribuido en el cual los nodos o elementos son sistemas de inteligencia artificial, o bien un sistema distribuido donde la conducta combinada de dichos elementos produce un resultado en conjunto inteligente.

Hay que notar que los agentes no son necesariamente inteligentes. Existen como en todo el resto del dominio de la inteligencia artificial, dos enfoques para construir sistemas multiagentes:

  • El enfoque formal o clásico, que consiste en dotar de los agentes de de la mayor inteligencia posible utilizando descripciones formales del problema a resolver y de hacer reposar el funcionamiento del sistema en tales capacidades cognitivas. Usualmente la inteligencia es definida utilizando un sistema formal (por ejemplo, sistemas de inferencia lógica) para la descripción, raciocinio, inferencia de nuevo conocimiento y planificaciôn de acciones a realizar en el medio ambiente.
  • El enfoque constructivista, que persigue la idea de brindarle inteligencia al conjunto de todos los agentes, para que a través de mecanismos ingeniosamente elaborados de interacción, el sistema mismo genere comportamiento inteligente que no necesariamente estaba planeado desde un principio o definido dentro de los agentes mismos (que pueden ser realmente simples). Este tipo de conducta es habitualmente llamado emergencia de comportamiento.

Desarrollo orientado a agentes

Como casi todo enfoque informático para la solución de problemas, los sistemas multiagentes proponen ayudas metodológicas de ingeniería de software, en este caso metodologías de ingeniería del software orientada a agentes (en inglés AOSE) y notaciones. Es decir, artefactos de desarrollo que son específicamente concebidos para crear sistemas basados en agentes.

Ontología y Web Semántica

Un avance para la informática como lo fue el WWW y lo más impresinante es que las dos tecnologías fueron ideas del mismo y único Tim Berners-Lee. Un físico (cada día me convenso de que la innovación no proviene una compañia X).

El uso de la ontología es ideal para el desarrollo de buscadores (Si como Google o mejor ;-), para completar esta tecnología (si le puede llamar así) ya esta incluida en el area de inteligencia artificial por lo que si programas para esto, ya estas trabajando con temas de inteligencia artificial.

Según wikipedia:

El término ontología en informática hace referencia al intento de formular un exhaustivo y riguroso esquema conceptual dentro de un dominio dado, con la finalidad de facilitar la comunicación y la compartición de la información entre diferentes sistemas. Esta es la diferencia con, aunque toma su nombre de una analogía con, el significado filosófico de la palabra ontología.

Un uso común tecnológico actual del concepto de ontología, en este sentido, lo encontramos en la inteligencia artificial y la representación del conocimiento. En algunas aplicaciones, se combinan varios esquemas en una estructura de facto completa de datos, que contiene todas las entidades relevantes y sus relaciones dentro del dominio.

Los programas informáticos pueden utilizar así la ontología para una variedad de propósitos, incluyendo el razonamiento inductivo, la clasificación, y una variedad de técnicas de resolución de problemas.

Típicamente, las ontologías en los ordenadores se relacionan estrechamente con vocabularios fijos --una ontología de fundacional -- con cuyos términos debe ser descrito todo lo demás. Debido a que esto puede ocasionar representaciones pobres para ciertos dominios de problemas, se deben crear esquemas más especializados para convertir en útiles los datos a la hora de tomar decisiones en el mundo real.

Dichas ontologías son valorables comercialmente, creandose competencia para definirlas. Peter Murray-Rust se ha quejado de que esto conduce a "una guerra semántica y ontológica debido a la competencia entre estándares". Por consiguiente, cualquier estándar de ontología fundacional es posible que sea contestado por los agentes políticos o comerciales , cada uno con su propia idea de 'lo que existe' (en el sentido filosófico de ontología).


La Web semántica tiene como objetivo crear un medio universal para el intercambio de información basado en representaciones del significado de los recursos de la Web, de una manera inteligible para las máquinas. Con ello se pretende ampliar la interoperabilidad entre los sistemas informáticos y reducir la mediación de operadores humanos en los procesos inteligentes de flujo de información. El precursor de la idea, Tim Berners-Lee miembro fundador del W3C, se esfuerza en que su propuesta de la Web semántica sirva para ampliar la capacidad de la World Wide Web mediante estándares, lenguajes de marcado y otras herramientas aplicables a su tratamiento.

Componentes de la Web Semántica

Los principales componentes de la Web Semántica son los metalenguajes y estándares de representación XML, XML Schema, RDF, RDF Schema y OWL. La OWL Web Ontology Language Overview describe la función y relación de cada uno de estos componentes de la Web Semántica:

  • XML aporta la sintaxis superficial para los documentos estructurados, pero sin dotarles de ninguna restricción sobre el significado.
  • XML Schema es un lenguaje para definir la estructura de los documentos XML.
  • RDF es un modelo de datos para los recursos y las relaciones que se puedan establecer entre ellos. Aporta una semántica básica para este modelo de datos que puede representarse mediante XML.
  • RDF Schema es un vocabulario para describir las propiedades y las clases de los recursos RDF, con una semántica para establecer jerarquías de generalización entre dichas propiedades y clases
  • OWL añade más vocabulario para describir propiedades y clases: tales como relaciones entre clases (p.ej. disjunción), cardinalidad (por ejemplo "únicamente uno"), igualdad, tipologías de propiedades más complejas, caracterización de propiedades (por ejemplo simetría) o clases enumeradas.

El padre del internet

Tim Berners Lee, increiblemente es un físico, aunque no es raro los físicos también programan :-).

http://es.wikipedia.org/wiki/Tim_Berners-Lee

UPDATE: NOTA DE ACLARANDO dicho el padre del internet es el padre del WWW específicamente.