Friday, August 17, 2007

ant problem “Could not find the main class. Program will exit.”

Bueno, para los que han tenido este problemita igual que yo, entonces encontré a alguien que sabia como arreglarlo.

En detalle es cuando cambio entre folder de Eclipse, entonces la varible ANT_HOME se queda apuntando a la vieja dirección. Y eclipse te dice “Could not find the main class. Program will exit.” cuando tratas de correr el ant :( así que ni idea de cual era el problema.

Sunday, June 17, 2007

Web Semántica

Ando detrás de Web Semántica para mi Spider implementado en Jade.

Este artículo describe muy bien aunque de forma aérea. Ahora estoy buscando la manera de implementar la búsqueda y análisis de los RDF para el Spider. También al mismo tiempo, pienso agregarle funcionalidad de lectura para los RSS creo que será más fácil el desarrollo de RSS.

Para la web semántica utilizaré Jena, el cual parece ser un proyecto muy maduro. Para RSS no se aún pero estoy viendo Commons FeedParser, pero también estoy dandole un vistazo a RSSOWL y a Informa.

También estoy buscando la manera de navegación en paginas con javascript, de tal manera que el agente pueda interactuar con estas. Para esto estoy viendo el api llamada Rhino de mozilla, o pudiera usar Chickenfoot el cual es muy potente a la hora de hacer script para automatizar la navegación.

Además estoy buscando la manera de almacenar las paginas en cache, esto es fácil de implementar.

Saturday, June 16, 2007

Hacking Firefox: The secrets of about:config

Un artículo de un poco de hacking en Firefox, me gusto mucho, principalmente por la parte de que queda configurado para que no consuma tanta memoria de mi computadora. Aunque hay un sacrificio de rendimiento.

Thursday, June 14, 2007

Spelling Eclipse

Un artículo para poder implementar el corrector de palabras en Eclipse.

5 tips para saber a quien contratar

En este blog se puede ver cuales solo los requisitos que se deberían tomar en cuanta a la hora de contratar una persona.

Por ejemplo:
- El reclutamiento es mercadeo (vende la empresa, vende el puesto)
- Confianza en el equipo (si contratas a alguien no deberías preguntarle al equipo con quien va a trabajar el nuevo?)
- No ganes con dinero (el dinero es importante pero los beneficios y el ambiente de trabajo también, debe haber un balance) tratas con personas no productos.
- Guarda espacio para las personas inteligentes (contratar a las personas por su entusiasmo por hacer lo que saben hacer puede ser aprovechado por la empresa a pesar de que la empresa no tenia esos planes, pero la persona es ideal para eso)
- Saber cuando dejar pasar. Bueno en este punto hay tres preguntas que deberías hacerte antes de contratar a una persona:
1. Quieres a esa persona en tu equipo?
2. Pasa esta persona la prueba de la cerveza? (Si te gustaría *compartir con esta persona)
3. Es esta persona apasionada, entusiasta, positiva?

Por ultimo:

Quickie Bonus Tip: No Keyword Hiring

Que significa no contrates basado en el SIGLAS de tecnologías, el explica que muchas de los mejores no pasan esta pruebas, que contradicción.

* En un bar, restaurant, etc. y si aprenderias algo de esa persona de manera personal.

Wednesday, June 13, 2007

Smartly load your properties

Una manera inteligente de cargar tus properties en Java.

Smartly load your properties

Friday, June 08, 2007

Eclipse TIPS

Una página web con buenos tips de eclipse, aquí encontré como eliminar los espacios al final de las líneas en un archivo.

http://www.newt.com/java/eclipse/

Saturday, April 21, 2007

Mylar en Eclipse

Mylar es un proyecto que busca integrar la parte colaborativa en Eclipse, es decir su usa bugzilla ya no tienes que salir del IDE, muchos diran ya plugins para eso si pero ninguno que yo sepa hace task focus (enfoque en tareas) como lo hace Mylar :), así que Mylar no es solo integración es eso y más.

Solo tuve que ver el webinar para decir un WOW :), esta es la contribución a Eclipse más importante después del mismo Eclipse, y es mucho decir ;).

Tienen que darle un ojo a este impresionante plugin, para los que trabajan al estilo de tareas y bugs en Eclipse se sentirán aliviados :)

Tuesday, April 03, 2007

Problemas al ejecutar el task de JUnit de Ant en Eclipse

De seguro muchos como yo han tenido problemas al ejecutar el ant task de junit con eclipse.

<junit fork="true" haltonerror="false">             
<classpath location="${build_testclassdir}" />
<classpath refid="test.build.classpath" />

<test name="${package}.AllTests" todir="${testlogdir}">
<formatter type="plain" usefile="true"/>
<formatter type="xml" usefile="true"/>
</test>

</junit>
El problema esta en que se debe agregar el archivo junit.jar al directorio:
..\plugins\org.apache.ant_1.6.5 de eclipse\junit.jar

Este archivo es la librería de junit la cual debe estar disponible para ejecutar el ant task.

Nota: esto es para eclipse 3.2, no se si las versiones anteriores tienen este problema.

Eclipse subversion - Malformed network data

Bueno en este blog encontré la solución al problema del cliente de subclipse el cual tenia este error cuando se hacia el checkout de un proyecto.

Sunday, April 01, 2007

Video Tutorial de Ajax con Prototype

Un video tutorial hecho por mi :) explicando la creación de un chat utilizando ajax y java, para ajax se utiliza la herramienta archi conocida librería Prototype.




Para poder ver el video en mejor resolusión youtube

Monday, March 26, 2007

Anti-patrones en Ajax

Unos anti-Patrones que donde me incluyo haberlos utilizados para entregar rápido pero que cuestan a la hora de mantener la aplicación.

Cinco Anti-Patrones en Ajax

Rhino: JavaScript for Java

Para implementar la funcionalidad de ejecución de javascript en mi SearchEngine con Agentes de Jade, estuve leyendo un articulo interesante sobre Rhino que es una implementación de Javascript para java que permite scripting en aplicaciones Java. Esto es posible en Java 6 como una nueva característica, ya puedes correr PHP, Ruby, JavaScript, Python (or Jython).

Por cierto, Rhino viene integrado en Java SE 6, por lo tanto si tiene Java SE 6 ya puedes utilizar esta característica.

La características de este puedo mencionar:
  • Compilación de javascript (si quiere compilar en script para un mejor rendimiento)
  • Invocación de funciones.
  • Acceso a recursos de Java (Puedes importar clases de java, invocar métodos y objectos de Java )
  • Y lo más obvio manejo de return del script que ejecutas.
  • Ejecutas el script desde hard code en java (lo cual no tendría mucha diferencia con lo que podrias hacer en java) y ejecución de script almacenado en un archivo.
  • Soporte para la ejecución de PHP, Ruby, JavaScript, Python, etc dentro de Java con las características ya mencionadas. (Imaginate correr PHP en un servidor de Java EE y que puedas acceder desde PHP los objectos de java, javabean, ect.)
The Mustang Meets the Rhino: Scripting in Java 6

Ejemplo:

package org.vnssoftware;

import javax.script.Bindings;
import javax.script.Compilable;
import javax.script.CompiledScript;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class Scripting {
public static void main(String[] args) {
ScriptEngineManager engineManager = new ScriptEngineManager();

ScriptEngine engine = engineManager.getEngineByName("js");

engine.put("age", 21);
try {
engine.put("age", 26);
engine.put("noClaims", Boolean.TRUE);
Object result = engine.eval(
"if (age < 25){ " +
" riskFactor = 1.5;" +
"} else if (noClaims) {" +
" riskFactor = 0.75;" +
"} else {" +
" riskFactor = 1.0;" +
"}");
System.out.println(result);

// using javascript files
//engine.eval(new FileReader("c:/voting.js"));

// importing java classes
engine.eval("importPackage(java.util); " +
"today = new Date(); " +
"print('Today is ' + today);");

// using object instances passed to the script engine, and on static class members.
engine.put("name","John Doe");
engine.eval("name2 = name.toUpperCase();" +
"print('Converted name = ' + name2); \n");

// script engine implementations support script compilation
Compilable compilable = (Compilable) engine;
CompiledScript script = compilable.compile(
"if (age < 25){ " +
" riskFactor = 1.5;" +
"} else if (noClaims) {" +
" riskFactor = 0.75;" +
"} else {" +
" riskFactor = 1.0;" +
"}");

Bindings bindings = engine.createBindings();
bindings.put("age", 26);
bindings.put("noClaims", Boolean.TRUE);
bindings.put("riskFactor", 1);
script.eval();

// call individual functions defined in the script from your Java code.
engine.eval("function increment(i) {return i + 1;}");
Invocable invocable = (Invocable) engine;
Object resul = invocable.invokeFunction("increment", new Object[] {10});
System.out.print("result = " + resul);

} catch (ScriptException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}

}
}

Tuesday, January 09, 2007

En busca de parseadores HTML

Estoy en busca de parseadores HTML para mi spider implementado en Jade,
encontré este HTMLParser, el cual es simple y rápido.

Ahora es más simple obtener el texto de una pagina web y la lista de enlace de esta misma.

Ejemplo:
String URL = "http://htmlparser.sourceforge.net";
StringExtractor se = new StringExtractor (URL);
String contents = se.extractStrings(true);
System.out.println(contents);

Eclipse and Equinox

Este artículo muestra de manera aérea, como funciona la arquitectura de eclipse