Instalacion del Web Stack de OpenSolaris
septiembre 24, 2008 by Isaac Ruiz Guerra
He decidido inaugurar el espacio de OpenSolaris en debugmode=on con una micro guía para la instalación del WebStack de OpenSolaris.
http://www.debugmodeon.com/item/21219/opensolaris-webstack
Saludos!!
RuGI
Spring LDAP
julio 13, 2008 by Isaac Ruiz Guerra
He escrito algo sobre SpringLDAP:
http://www.springhispano.org/?q=node/287
Saludos!!!
RuGI
Isaac Ruiz Guerra.
Spring IDE
mayo 02, 2008 by Isaac Ruiz Guerra
Bueno, ahora he publicado una pequenya guía para instalar Spring IDE en Eclipse Europa.
Spring IDE en Eclipse.
Saludos
RuGI
Isaac Ruiz Guerra
Spring BeanDoc. Primeros pasos
marzo 01, 2008 by Isaac Ruiz Guerra
He publicado un pequeño artículo sobre el uso de Spring BeanDoc.
Espero les sea de utilidad.
Saludos!!!
RuGI
Back to basics.recursividad
febrero 04, 2008 by Isaac Ruiz Guerra
import java.
io.
File;
/**
*
* @author RuGI
*/public class SearchFile
{ public static final String search
(String ad,
String dir
) { String res =
null;
File[] fs =
new File(dir
).
listFiles();
if (fs !=
null) { //System.out.println("" + fs.length); for (int i =
0; i < fs.
length; i++
) { if (fs
[i
].
isFile()) { if (ad.
equals(fs
[i
].
getName())) { //System.out.println("Lo encontre " + fs[i].getAbsolutePath()); res = fs
[i
].
getAbsolutePath();
break;
} }else{ res = SearchFile.
search(ad, fs
[i
].
getAbsolutePath());
}//if }//for } return res;
}//method public static void main
(String[] args
) { if (args.
length <
2){ System.
out.
println(" Usar:");
System.
out.
println(" java SearchFile ad [directorio] ");
System.
out.
println(" ad: Nombre del archivo o directorio a buscar.");
System.
out.
println(" directorio: Directorio de busqueda. Por default el directorio actual.");
return;
} System.
out.
println("Archivo Encontrado en: " + SearchFile.
search(args
[0], args
[1]));
}}
Auto regalos 2007
diciembre 12, 2007 by Isaac Ruiz Guerra
Pues a falta de generosos santas, me he autoregalado un par de libros:


Los motivos: Llevo rato programando con la version 1.4 y, todo apunta a que el 2008 por fin iniciare con la 5 :P
Y cada día que pasa me doy cuenta que las expresiones regulares estan por todos lados, creo que ha llegado la hora de ponerles la justa atención.
¿Alguien ya los leyó?
Estrenando piel
diciembre 11, 2007 by Isaac Ruiz Guerra
Ya lasterra nos daba el aviso:
http://www.javahispano.org/contenidos/es/rollerweblogger_version_4_0_ya_en_javahispano/ , asi que decidi probar los nuevos temas que se mencionan en la nota y seleccione este.
Se ve bien ¿o no?:P
Swing nuevamente.. recordando SwingUtilities
noviembre 04, 2007 by Isaac Ruiz Guerra
Creo que ya lo he mencionado más de una vez; comencé con java por ahí del 2001.
Lo primero que hice fue una aplicación de escritorio con el entonces recién estrenado Swing en la versión 1.2 del jdk.
Desde entonces a la fecha, siempre intento acercarme más al mundo empresarial,
y creo lo he logrado satisfactoriamente; pero, por alguna razón u otra, siempre en cada proyecto me toca atender cosas de Swing, ya sea que a nadie más le gusta hacerlo, o porque a alguien se le ocurre decir "RuGI ha trabajado con Swing" :P.
El asunto es que, nuevamente estoy peleándome con eso de hacer ventanas y manipular
listeners's.
Pero bueno, el motivo de este post es que, si alguna vez les toca trabajar con Swing, antes de querer reinventar la rueda o el agua tibia, denle una revisada a la clase:
SwingUtilities
seguramente encontraran métodos interesantes, como:
public static Window getWindowAncestor(Component c)
Este método es muy util cuando creamos nuestros propios componentes GUI y los incrustramos en JDialog's dinámicamente.
Utilizando este método, no nos preocupamos por tener una referencia directa al JDialog para cerrarlo una vez que nuestro componente GUI realice su cometido.
Basta poner el siguiente código en el bloque de terminación de nuestro componente-GUI y automaticamente nuestro JDialog se cerrará sin tener que invocarlo directamente:
SwingUtilities.getWindowAncestor(this).dispose();
Bueno, ya les estaré contando sobre más cosas que he recordado ahora que nuevamente estoy peleandome con Swing.
Por cierto: que divertito es jaiku!!!!
RuGI
Isaac Ruiz Guerra.
Configurar un DS en Spring para WebLogic
julio 29, 2007 by Isaac Ruiz Guerra
La verdad me costó un par de horas encontrar esta info, quizá no busque bien; el punto es que, creo no esta demás replicar una vez más este código:
Saludos...
AJAX y Java en video
febrero 26, 2006 by Isaac Ruiz Guerra
Navegando por Developers.sun encontre 15 minutos de video sobre AJAX y Java.
Son 4 capítulos que incluyen igual número de entrevistas a los siguientes personajes: Greg Murray persona involucrada en la especifiación de servlets, Alex Russel del proyecto Dojo, Dion Almaer fundador de Ajaxian.com y Tor Norbye del equipo del java estudio creator.
!!!Disfrutenlo!!
SVG El gigante dormido
febrero 19, 2006 by Isaac Ruiz Guerra
A veces me pregunto porqué esta especificación aún no tiene tanta presencia en la red. La idea me parece realmente interesante y muy útil; describir imágenes de 2 dimensiones vía XML -léase texto-
Las potencialidades son muchas; el tener una imagén totalmente descrita por texto nos permite hacer busquedas mucho más precisas sobre ella.
La utilidad que salta más a la vista es en los mapas. Imaginemos por un momento que tenemos un mapa en SVG que describe una ciudad; podemos hacer búsquedas directas de las calles sobre la imagen, ya que todo , absolutamente todo esta descrito como texto.

Un día comentaba el tema con mi buen amigo Sanx, y desde su postura siempre tan pragmática, me decía: "El problema de SVG es que, al ser texto, cuando alguien despliegue tu mapa, puede fácilmente acceder al contenido del archivo". En decir copiar la información del mapa es una tarea muy sencilla, y una vez realizada la copia, la modificación es inevitable. Y esto como esquema de negocio no es muy rentable.
El primer draft de la especificación salío por ahi del 2001, ahora se encuentra en la versión 1.1.
Quizá aún le falta madurar mucho, quizá lo que hace falta realmente son aplicaciones que utilicen y exploten el potencial de este vocabulario XML.
Sigo pensando que SVG es uno de esos gigantes dormidos que espera ser despertado. ¿Tu que crees?
Si te interesó, aquí puedes encontrar más información:
El proyecto Batik
Ejemplos de Adobe
SVG en google
RIA y Ajax
diciembre 13, 2005 by Isaac Ruiz Guerra
Aparece en javalobby un artìculo de Marc Domenig titulado:
Rich Internet Applications and AJAX - Selecting the best product En dicho artículo intenta definir los criterios que se deben tomar para decidir
cuando una applicaciòn web debe utilizar o no RIA's (Rich Internet Application).

Pero... ¿Cuando es sencilla una UI?, ¿Qué criterios tomar?
Lean el artículo y tendran argumentos para comenzar a generar la respuesta :P
AJAX y Mozilla XUL con JSF
diciembre 02, 2005 by Isaac Ruiz Guerra
AJAX y Mozilla XUL con JSF
¿Alguien penso alguna vez llegarian a existir estos "cocteles"?
AJAX and Mozilla XUL with JavaServer Faces: Loading Resources With Weblets
Comparando Frameworks Web para Java
noviembre 03, 2005 by Isaac Ruiz Guerra
Acabo de leer un post en
java.net
que menciona una presentación (pdf) que hace una comparaciòn
entre distintos frameworks para web.
El tìtulo del documento es:
Comparing Web Frameworks (Struts, Spring MVC, WebWork, Tapestry & JSF) y el autor:Matt Raible.
Hay varios documentos de este tipo en la red, pero éste en particular
resalta por varias razones; parece ser el más actual, hace una comparaciòn utilizando
diversos criterios (hecho de menos una comparación más detallada y profunda),
y sobre todo, el autor a trabajado con todos esos frameworks, los conoce y da su opinión
basada en esa experiencia. Al final hay enlaces interesante.
Para ver el documento, pueden ir directamente al
post donde encontre la
informaciòn o
bajarlo directamente.
Esta son sus opiniones:
- Struts is fast to develop with because most problems have
been solved. HTML tag library the best of the bunch.
Spring is nice, but lack of form tags drops it down a notch or
two. JSP 2.0 tag files exist in issue tracker.
- I like WebWork a lot, but lack of of good client-side
validation support is a killer.
- Tapestry - I haven?t finished the learning curve.
- JSF - needs to listen to developers to see what they want
instead of tools vendors.
¿Alguien que pueda opinar lo contrario? ;)
Demasiados a escena
octubre 24, 2005 by Isaac Ruiz Guerra
Creo que todos ya lo saben, pero queria comentarlo;
GlassFish será la implementación de referencia para Java EE5 (la siguiente version
de J2EE).
El proyecto esta hospedado actualmente en dev.java.net y estará lista para trabajar con:
EJB 3.0, JSF 1.2, Servlet 2.5, JSP 2.1, JAW-WS2.0,
JAXB 2.0, Java Persistence 1.0, Commons Annotations 1.0, Streaming API for XML (estas 3 últimas APIS las desconozco por completo :S)
Me pregunto que pasará con Tomcat, actual implementacion de referencia de Servlets y JSP's, ¿Perdera su posición actual? ¿se unirá a esta iniciativa de java.net? ¿Y Geronimo? y ¿JBoss? ¿Que papeles jugaran?.
Son demasidas preguntas para un Lunes :P
Saludos.
Color look and feel
septiembre 25, 2005 by Isaac Ruiz Guerra
Los inicios.
Hasta donde recuerdo, la capacidad de poder agregar y modificar
la
apariencia de una aplicación en java llegó junto con el uso masivo de
The Java Foundation Classes (Swing, D&D, java 2D, etc,etc) por ahi del 2000/2001.
Desde ese entonces, la gran parte de desarrolladores que ocupabamos
Swing nos hicimos asiduos visitantes de:
l2fprod.
Últimamente he vuelto a requerir de
Swing y,
como a muchos de ustedes seguramente, me entró la curiosidad de
saber como crear una
apariencia propia.
Así que despues de buscar un rato, encontre la siguiente información.
Conociendo el negocio.
Antes de iniciar con el código es importante saber algunas cosas.
Una apariencia (de ahora en adelante
tema),
esta definida por un
modelo de colores que permite que una aplicación se pueda ver casi
igual en todas las plataformas en donde se ejecute.
Este modelo de colores esta basado en 8 elementos:
- Tres colores primarios que le dan la identidad al tema y proporcionan el énfasis a los elementos seleccionados.
- Tres colores secundarios, usualmente una escala de grises, utilizados para el trazo de elementos inactivos o no disponibles.
- Dos colores adicionales, conocidos como blanco y negro, utilizados para la visualización y resaltado del texto.
Los elementos: colores primarios y secundarios no son más que un degradado que vá
de colores obscuros (color primario 1 y color secundario 1), a claros (primario 2 y secundario 2) y
muy claros (primario 3 y secundario 3)
Cada uno de estos colores tiene perfectamene definido,
gracias a el modelo ya mencionado, donde debe
ser utilizado en el tema.
Las siguienes imagenes nos muestran donde se ocupan cada uno de estos colores:

Fig 1. Utilización de los colores primarios en un tema

Fig 2. Utilización de los colores secundarios en un tema
El tema por
default para las aplicaciones en Swing es
"
Steel". Este
tema tiene los siguientes colores para su
modelo:
| Color |
Nombre |
RGB |
HEX |
 |
Primario 1 |
102-102-153 |
666699 |
 |
Primario 2 |
153-153-204 |
9999CC |
 |
Primario 3 |
204-204-255 |
CCCCFF |
 |
Secundario 1 |
102-102-102 |
666666 |
 |
Secundario 2 |
153-153-153 |
999999 |
 |
Secundario 3 |
204-204-204 |
CCCCCC |
 |
Blanco |
255-255-255 |
FFFFFF |
 |
Negro |
000-000-000 |
000000 |
Tabla 1. Código de colores del tema por default en para aplicaciones Swing.
Despues de conocer estos conceptos, la primera pregunta que seguramente se están haciendo es ¿Y cómo cambio la definición de estos colores?
Los hechos.
Como deciamos, el tema por default es "Steel", el cual esta definido por la clase: javax.swing.plaf.metal.DefaultMetalTheme, la cual a su vez extiende a la clase
javax.swing.plaf.metal.MetalTheme. La clase DefaultMetalTheme sobreescribe los métodos necesarios e implementa otros tantos para lograr crear el tema en su totalidad. Además de implementar los métodos que devuelven la información de los colores, hay un par de métodos que pueden ser sobreescritos para definir el estilo y tipo de letra del tema.
Entonces, la clase que nos interesa es DefaultMetalTheme , a partir de ella podemos crear nuestros propios temas. Sólo es necesario redefinir los métodos indicados para modificar los colores que nos interesan.
La herramienta
Aún falta algo antes de comenzar a programar, y és, paradojicamente el tema en sí; es decir, el conjunto de colores que definiran nuestro tema.
Para ello, recomiendo ampliamente Color Schemer una herramienta on-line que nos permite ir navegando por una paleta de colores permitiendo obscurecer o aclarar un color en específico.
El ejemplo.
Nuestro ejemplo consta de 2 clases, una define un
tema nuevo(
GreenTheme) basado en una escala de verdes y la otra es una sencilla aplicación (
LookAndFeelTest) que invoca a este tema y que cuenta con algunos componentes Swing con la finalidad de poder ver su apariencia con los colores que se definen en el tema.
GreenTheme.java
package org.eolos.rugi.laf;
import javax.swing.plaf.*;
import javax.swing.plaf.metal.*;
import java.awt.Font;
/**
* Green Theme.
* @author Isaac Ruiz Guerra (RuGI)
*/
public class GreenTheme extends DefaultMetalTheme {
public String getName() {
return "Green";
}
// Definimos nuestros colores primarios
private final ColorUIResource primary1 = new ColorUIResource(0x00, 0x66, 0x33);
private final ColorUIResource primary2 = new ColorUIResource(0x00, 0xB3, 0x59);
private final ColorUIResource primary3 = new ColorUIResource(0x99, 0xFF, 0x94);
// Definimos nuestros colores secundarios
private final ColorUIResource secondary1 = new ColorUIResource(0x00, 0x4D, 0x00);
private final ColorUIResource secondary2 = new ColorUIResource(0x00, 0x80, 0x00);
private final ColorUIResource secondary3 = new ColorUIResource(0x7A, 0xFF, 0x7A);
// Definimos nuestros blanco y nuestro negro
private final ColorUIResource _black = new ColorUIResource(0x01, 0x1A, 0x0D);
private final ColorUIResource _white = new ColorUIResource(0xE5, 0xFF, 0xE5);
// y los tipos de letras.
private final FontUIResource windowTitleFont = new FontUIResource("Courier", Font.BOLD, 15);
private final FontUIResource controlFont = new FontUIResource("Verdana", Font.BOLD, 12);
// sobreescribimos los métodos que devuelve la información del modelo de
// colores del tema
protected ColorUIResource getPrimary1() {
return primary1;
}
protected ColorUIResource getPrimary2() {
return primary2;
}
protected ColorUIResource getPrimary3() {
return primary3;
}
protected ColorUIResource getSecondary1() {
return secondary1;
}
protected ColorUIResource getSecondary2() {
return secondary2;
}
protected ColorUIResource getSecondary3() {
return secondary3;
}
protected ColorUIResource getBlack(){
return _black;
}
protected ColorUIResource getWhite(){
return _white;
}
public FontUIResource getWindowTitleFont() {
return windowTitleFont;
}
public FontUIResource getMenuTextFont() {
return controlFont;
}
public FontUIResource getControlTextFont() {
return controlFont;
}
}
LookAndFeelTest.java
package org.eolos.rugi;
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.event.KeyEvent;
import javax.swing.plaf.metal.*;
import org.eolos.rugi.laf.GreenTheme;
/**
* Clase para probar el L&F de algunos componentes Swing
* @author Isaac Ruiz Guerra (RuGI)
*/
public class LookAndFeelTest extends JPanel {
private JTabbedPane tab = new JTabbedPane();
private JTree tree = new JTree();
private String [] values = {"Mudras","Tantra","Chandra"};
private JComboBox combo = new JComboBox(values);
private JList list = new JList(values);
private JButton button = new JButton("Click");
private JTextArea text = new JTextArea();
private JScrollPane scroll = new JScrollPane(text);
private JProgressBar progress = new JProgressBar();
private JPanel varios = new JPanel();
public LookAndFeelTest() {
this.setLayout(new BorderLayout());
tab.addTab("JTree",tree);
//Texto
scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
tab.add("JTextArea",scroll);
//Progress
progress.setValue(50);
tab.add("JProgressBar", progress);
//varios
varios.add(combo);
varios.add(button);
varios.add(list);
tab.add("Otros", varios);
this.add(tab,BorderLayout.CENTER);
}
private static void createAndShowGUI() {
// Decoracion activada
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("Look & Feel Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
LookAndFeelTest newContentPane = new LookAndFeelTest();
frame.setContentPane(newContentPane);
//Creamos un menú para
JMenuBar menuBar;
JMenu menu;
JMenuItem menuItem;
//Create the menu bar.
menuBar = new JMenuBar();
//Build the first menu.
menu = new JMenu("Menu");
menu.setMnemonic(KeyEvent.VK_M);
menuItem = new JMenuItem("Selecciona",
KeyEvent.VK_S);
menu.add(menuItem);
menuBar.add(menu);
frame.setJMenuBar(menuBar);
//-- Activamos el look and Feel
MetalTheme theme = new GreenTheme();
MetalLookAndFeel.setCurrentTheme(theme);
try{
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
SwingUtilities.updateComponentTreeUI(frame);
}catch(Exception e) {
System.out.println(e);
}
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
El Resultado
Algunos pantallazos de la aplicación con nuestro tema en ejecución:



Los recursos.
El mensaje final
La manera más sencilla de cambiar el tema de una aplicación Swing es redefiniendo los colores que utiliza el tema por default. Como todos es sabido, es posible tambien crear temas a partir de imagenes y colores mejorando aún más la apariencia de nuestras aplicaciones.... pero eso ya es otra historia.
Si alguno de ustedes logra una mejor combinación de colores que este clorofílico tema, se agradecera si me lo envian, prometo agregarlo en este post :P
Netbeans Debugging.
julio 29, 2005 by Isaac Ruiz Guerra
Lo dicho, me encanta cuando un IDE trae un buen debugger
Este comentario es apropósito de una caracteristica que, en lo personal,
deseaba desde hace tiempo en un IDE. Aunque quizà algun IDE ya la tenia y no lo
sabía ;).
Recuerdo que en JBuilder se podian habilitar/deshabilitar los
breakpoint's de manera individual,
pero no se podian agrupar.
Esta me parece una funcionalidad muy ùtil.
A veces tenemos
nuestra aplicación llena de
breakpoint's debido a que nos encontramos trabajando
en diversos puntos de nuestra aplicación; el problema viene cuando sólo queremos utilizar
algunos de esos
breakpoints sin tener que "perder" los que ya tenemos indicados.
NetBeans 4.1 nos da una solución a este problema: ¡¡¡ un agrupador de
breakpoints !!!
Esta y otras nuevas caracteristicas puden verse a detalle en el
Capítulo 5."Debugging Java Applications," del libro
NetBeans IDE Field Guide que se encuentra disponible en formato PDF en el siguiente
enlace
Esto de ocupar
NetBeans se pone interesante :P
Buscando es gerundio...
noviembre 28, 2004 by Isaac Ruiz Guerra
Sí, ya se, lo anunciaron hoy en
Barrapunto, pero, me ha parecido tan interesante
que no puedo dejar de comentarlo :P
Koders es un buscador de código fuente
que puede filtrar la busqueda por lenguaje (ASP,C,C#,C++,Delphi,Fortran,Java,JavaScript,Perl,PHP,
Python,Ruby,SQL,Tcl,VB,VB.NET ) y por licencia (AFL,APSL,ASL,CPL,GPL,IBMPL,IOSL,LGPL,MPL10,MPL11
,OSL,PSFL,SPL,W3C,ZLL,ZPL)
Ya lo he utilizado con muy buenos resultados, el único detalle (en el caso de java) es que debido
a que busca en
repositorios, hay clases que, por obvias razones, requieren de otras para funcionar,
lo ideal sería de que al bajarte la clase que te interesa te bajara tambien todas las que requiere
para funcionar ;) ... pero eso es ya pedir mucho jjej
¿ya conocian este buscador?
Ya son 7...
octubre 27, 2004 by Isaac Ruiz Guerra
Me he dado tiempo para actualizar un poco http://certificacion.javahispano.org
El "nuevo en el barrio" es el SCDJWS
He aqui su temario:
- Section 1: XML Web Service Standards
- Section 2: SOAP 1.1 Web Service Standards
- Section 3: Describing and Publishing (WSDL and UDDI)
- Section 4: JAX-RPC
- Section 5: SOAP and XML Processing APIs (JAXP, JAXB, and SAAJ)
- Section 6: JAXR
- Section 7: J2EE Web Services
- Section 8: Security
- Section 9: Developing Web Services
- Section 10: General Design and Architecture
- Section 11: Endpoint Design and Architecture
Ya lo mencionaba Kathy Sierra en
la entrevista que le hizo
Martin, se avecinan cambios interesantes en las certificaciones.
¿Cual creen que seguira?
Prueba tu código sin JVM Local
septiembre 18, 2004 by Isaac Ruiz Guerra
No conocia esta página, hasta que leí la
noticia que
Abraham publicó.
Y Ahora hago yo el comentario; Me parece curioso, interesante y útil la posibilidad que nos da este sitio de poder probar código Java vía un
Navegador.
Zamplet.com, es un sitio que nos permite probar fragmentos de código o clases enteras escritas en
Java (1.4, 1.5),
Perl,
Python,
Groovy y otros lenguajes más, la lista completa puedes verla en este
enlace
Si no puedes esperar a llegar a casa y probar ese fragmento de código java que acabas de encontrar en internet
¡hazlo ya!