Non nobis Domine...

Search


Calendar

« octubre 2008
lunmarmiéjueviesábdom
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  
       
Hoy

















KITARO lyrics





Nube de tags del Blog

10.1.3.1 2008 calendario consejos curiosidades datasource documentacion eclipse ejemplo emergente expressions generics ide install java javahispano ldap libro libros oas opensolaris oracle recomendacion recursividad regulas roller spring swing test tips weblogicserver webstack

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]));
    }
}

 

 
Brought to you by the community at byteMyCode.

 

Auto regalos 2007

diciembre 12, 2007 by Isaac Ruiz Guerra

Pues a falta de generosos santas, me he autoregalado un par de libros:

 

Portada libro I. Regular Expressions

 

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).
http://www.javalobby.org/articles/ajax-ria-overview/

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!