gerard = odrarg

En nuestro mundo, sea lo que sea lo que la mente humana pueda crear puede ser reproducido y distribuido infinitamente sin ningun costo.

ComboBox con DWR

By odrarg

Ligas para generar combobox dependientes con dwr+struts

http://thewolfexpress.blogspot.com

Liga con ejemplos de DWR

Ligas de javascript y jquery

By odrarg

JavaScript:

javascriptya

dhtmlya.com.ar

Jquery:

easyjquery.com

javascriptya.com.ar/jquery

Videos de jquery

visualjquery.com

inerciasensorial.com.br

noupe.com

ejemplo-ajax-con-jquery-struts-json

ajax-usando-jquery-y-struts

File upload and download with Struts - Subir y descargar archivo

By odrarg

Para subir y descargar un archivo con struts encontre una liga interesante que me ayudo a resolver el problema.

http://strutsblobapp.sourceforge.net/


1. Declarar en el bean , aqui una prueba con un numero fijo de 50 archivos



import org.apache.struts.upload.FormFile;
import org.apache.struts.validator.ValidatorForm;

public class FormBean extends ValidatorForm implements Serializable{

protected FormFile[] fileUno new FormFile[50];


public FormFile getFileUno(int i) {
return fileUno[i];
}


public void setFileUno(int i, FormFile f1) {
fileUno[i] = f1;
}

}



2. Diseño de la tabla en la bd

Tabla Archivos

Id Number
NombreArchivo Varchar2
Size Number
Dato Blob


3. Crear una coleccion
private Collection archivos = null;

4. El jsp






Etiqueta


html:file property='<%="fileUno["+num+"]"%>'>/html:file
html:hidden property='<%="archivoEtiquetaUno["+num+"]"%>'/>





5. Crear el action


public class CrearIniciativasAction extends Action {
.....
......
.......
public ActionErrors insertaArchivosIniciativa( ){
InputStream in=null;
OutputStream out=null;

for ( int tmpIndice = 0; tmpIndice < tmpCantidadColUno.length; tmpIndice++ ){
FormFile tmpFile = iniciativaBean.getFileUno(tmpIndice);
int fileSize = tmpFile.getFileSize();
String tmpFileName = tmpFile.getFileName();

if (tmpFile.getFileSize()>0) {
in=tmpFile.getInputStream(); Objeto.setSize(fileSize); Objeto.setArchivo(tmpFile.getFileName());

tdArchivoIniciativa.setObligatorio(1);
}

dao.saveFile(tmpFileName, in, fileSize, tdArchivoIniciativa);

}
}


}


El dao de save esta en la liga de ejemplo.

Oracle: Table Space, crear usuario, importar y exportar db

By odrarg

1) Crear un table space

create tablespace BOOMERANG_F2
datafile 'D:\ruta\de\oracle\oradata\BOOMERANG_F2_01.dbf'
size 300000k
default storage (initial 100k next 100k minextents 1 maxextents UNLIMITED pctincrease 0);

2) Crear el usuario.

CREATE USER boom_f2
IDENTIFIED BY "boomf02"
DEFAULT TABLESPACE BOOMERANG_F2;


Asignar privilegios
GRANT "CONNECT" TO "boom_f2";
GRANT "RESOURCE" TO "boom_f2";

3) Crear las tablas en este nuevo usuario (Si tenemos ya el esquema entonces procedemos a importar dicho esquema con el usuario y pwd que hemos creado)

imp userid=boom_f2/boomf02 file=my_db.dmp log=imp.log full=y


4) Crear un registro en el archvio tnsnames.ora (Opcional, por si falla conexion)

boomerang =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)




5) exportar el esquema del usuario (MSDOS prompt)

c:\exp boom_f2/boomf02@boomerang

Instalación de Ant en windows

By odrarg



Ant es una herramienta Open-Source utilizada en la compilación y creación de programas realizados en Java.

Pasos para instalar ant en windows xp

1. Descargar Ant de la siguiente dirección:
http://ant.apache.org/

2. Descomprimir la carpeta y ponerla por ejemplo en C:\Archivos de programa\Apache Software Foundation\ant-1.7.0

3. Abrir el panel de control de windows escogemos Sistemas/Opciones Avanzadas/Variables de entorno

4. En Varibles de usuario creamos una nueva con los siguiente datos:
Nombre de varible: ANT_HOME
Valor de variable: C:\Archivos de programa\Apache Software Foundation\ant-1.7.0

5. Modificamos la variable de usuario PATH:
Valor de variable: PATH=%PATH%;%ANT_HOME%\bin;

Listo

Dynamic web module 2.5 and JSF 1.2

By odrarg

Problema:

Al momento de crear un proyecto web con maven te lo crea automaticamente con Dynamic web module 2.4 y para poder usar JSF 1.2 se necesita la versión 2.5 de Dynamic web module y el punto es que al momento que uno quiere cambiar en eclipse la versión del web module no deja hacer dicha operación.


Solución:

1. Ir a la carpeta donde este el proyecto y entrar a la carpeta de settings C:\path\proyecto\.settings

2. Editar el archivo org.eclipse.wst.common.project.facet.core

3. Modificar la siguiente linea en verión ponemos 2.5 en vez de 2.4:


4. Ahora en eclipse ya podemos utilizar JSF 1.2 porque automaticamente ya aparece 2.5 en Dynamic Web Module

Instalar jar con maven

By odrarg

Comando para instalar un jar que no se encuentre en el repositorio oficial de maven.

Ejemplo con icefaces

1. Bajar el jar que querramos instalar en el repositorio local

2. Ejecuatar el siguiente comando


mvn install:install-file -DgroupId=icefaces -DartifactId=icefaces -Dversion=1.7.1

-Dpackaging=jar -Dfile=/path/to/file


Siempre se me olvida ;)

Crear proyecto web en maven con el POM

By odrarg

Otra forma de crear un proyecto web en maven modificando el archivo pom.xml

1. Crear el proyecto web con maven con la siguiente instruccion


mvn archetype:create -DgroupId=com.mytutorial -DartifactId=simpleWeb
-DarchetypeArtifactId=maven-archetype-webapp


2. Modificar el archivo pom.xml agregrando las siguientes lineas despues de , ojo agregar los <> correspondientes.

pluginManagement
plugins
plugin
groupId org.apache.maven.plugins groupId
artifactId maven-compiler-plugin artifactId
version 2.0.2 version
configuration
source 1.5 source
target 1.5 target
configuration
plugin
plugin
groupId org.apache.maven.plugins groupId
artifactId maven-eclipse-plugin artifactId
version 2.4 version
configuration
downloadSources false downloadSources
wtpversion 1.5 wtpversion
configuration
plugin
plugins
pluginManagement

3. Nos colocamos en la carpeta del proyecto que acabamos de crear y ejecutamos el siguiente comando maven

mvn eclipse:eclipse


4. Importar el proyecto en eclipse mediante la opcion File / Import / Existing Projects into Workspace

Datasource en Jboss

By odrarg

Datasource en Jboss

1. Instalar la aplicación en server/default/deploy, por lo cual dejar en server/default/lib el driver jdbc.
2. Copiar el /docs/examples/jca/oracle-ds.xml a /server/default/deploy/
3. Editar el oracle-ds.xml y cambiarle el y el .
4. En server\default\conf editar el standardjaws.xml y le cambié el y el
5. En server\default\conf editar el standardjbosscmp-jdbc.xml y cambiar y .

Los pasos 4 y 5 segun la fuente pueden ser opcionales..... y si es cierto lo comprobe
no son necesarios.

Fuente wiki.gxtechnical.com

Historia de un Letrero

By odrarg

Static explicito en Java

By odrarg


Java permite agrupar todas las inicializaciones estáticas dentro de una "cláusula de construcción estática" (llamada a veces bloque estático) dentro de una clase. Tiene la siguiente apariencia:


Class Cuchara {
static int i;
static {
i = 47;
}
}


Parece un método, pero es simplemente la palabra clave static seguida de un cuerpo de método.
Este código, como otras inicializaciones estáticas, se ejecuta sólo una vez, la primera vez que se cree un objeto de esa clase o la primera vez que se acceda a un miembro estático de esa clase (incluso si nunca se llega a hacer un objeto de esa clase). Por ejemplo:

 
class Taza {

Taza (int marcador) {
System.out.println ("Taza (" + marcador + " ) ") ;
}

void f (int marcador){
System.out.println ("f(" + marcador + ")");
}
}

class Tazas {

static Taza cl;
static Taza c2;

static {
cl = new Taza(1);
c2 = new Taza(2);
}

Tazas ( ) {
System.out.println ("Tazas ( ) " ) ;
}
}

public class StaticExplicito {
public static void main(String[] args) {
System.out.println ("Dentro de main ( ) " ) ;
//Tazas.cl.f(99); // (1)
}

//static Tazas x = new Tazas (); // ( 2 )
//static Tazas y = new Tazas (); // (2)
}



Los inicializadores estáticos de Tazas se ejecutan cuando se da el acceso al objeto estático cl en la línea marcada (l), si la línea (1) se marca como un comentario, y se quita el signo de comentario de las líneas marcadas como (2). Si tanto (1) como (2) se consideran comentarios, la inicialización estática de Tazas no se realizará nunca. Además, no importa si una o las dos líneas marcadas (2) dejan de ser comentarios; la inicialización sólo ocurre una vez.

Creación de Objetos en Java

By odrarg

Explicación acerca del creación de un objeto.

En java todo se trata como un objeto pero aunque se trata todo como un objeto, el identificador que se manipula es una "referencia" a un objeto1.

Se podría imaginar esta escena como si se tratara de una televisión (el objeto) con su mando a distancia (la referencia). A medida que se hace uso de la referencia, se está conectado a la televisión, pero cuando alguien dice "cambia de canal" o "baja el
volumen", lo que se manipula es la referencia, que será la que manipule el objeto. Si desea moverse por la habitación y seguir controlando la televisión, se toma el mando a distancia (la referencia), en vez de la televisión. Además, el mando a distancia puede existir por sí mismo, aunque no haya televisión. Es decir, el mero hecho de tener una referencia no implica necesariamente la existencia de un objeto conectado
al mismo. De esta forma si se desea tener una palabra o frase, se crea una referencia String:


String S;


Pero esta sentencia solamente crea la referencia, y no el objeto. Si se decide enviar un mensaje a S en este momento, se obtendrá un error (en tiempo de ejecución) porque S no se encuentra, de hecho,
vinculado a nada (no hay televisión). Una práctica más segura, por consiguiente, es inicializar la referencia en el mismo momento de su creación:


String S = "asdf';


Sin embargo, esta sentencia hace uso de una característica especial de Java: las cadenas de texto pueden inicializarse con texto entre comillas. Normalmente, es necesario usar un tipo de inicialización más general para los objetos.

Cuando se crea una referencia, se desea conectarla con un nuevo objeto. Así se hace, en general, con la palabra clave new, que dice "Créame un objeto nuevo de éstos". Por ello, en el ejemplo anterior se puede decir:


String s = new String ( "asdf") ;


Esto no sólo significa "Créame un nuevo String", sino que también proporciona información sobre cómo crear el String proporcionando una cadena de caracteres inicial.

Fuente: Piensa en Java (bruce ekel).

Como funcionan realmenten los proyectos TI

By odrarg

Aspirante a Informático

By odrarg

Bucles for mejorados

By odrarg

Los bucles for se han modificado en Java para proporcionar un método de repeticiones más limpio...

Algunos lenguajes utilizan la palabra clave foreach que clarifica la sintaxis para el procesado de repeticiones. Java optó por no introducir una nueva palabra clave sino mantener su estructura simple e introducir un nuevo símbolo de dos puntos. Tradicionalmente, un desarrollador escribiría el siguiente código para utilizar el repetidor.


for ( Iterator iter = intArray.iterator(); iter.hasNext();){
Integer intObject = (Integer)iter.next();
//....más sentencias
}


El problema de este código es la pérdida de la clausula update para el bucle for. El código que incrementa el valor del repetidor se coloca en el cuerpo del bucle innecesariamente, ya que también davuelve el siguiente objeto. La nueva sintaxis mejorada que cumple las mismas funciones es:

for ( Integer intObject: intArray ){
//..aquí las mismas sentencias que el ejemplo anterior
}

Ahora utilizar la nueva sintaxis del bucle for para un array es lo mismo que utilizara para una colección:

for ( String strObject : stringArray ){
//...sentencias que utilizara el objeto strObject
}

Subversion (SVNServer) en Windows XP

By odrarg




Subversion es un software de sistema de control de versiones diseñado específicamente para reemplazar al popular CVS, el cual posee varias deficiencias.

Es software libre bajo una licencia de tipo Apache/BSD y se le conoce también como svn por ser ese el nombre de la herramienta de línea de comandos. Una característica importante de Subversion es que, a diferencia de CVS, los archivos versionados no tienen cada uno un número de revisión independiente. En cambio, todo el repositorio tiene un único número de versión que identifica un estado común de todos los archivos del repositorio en cierto punto del tiempo.

Procedi a realizar un manual seguiendo los pasos de diferentes manuales que me encontre en las siguientes páginas y que son excelente ayuda.

1. Instalación de SVNServe en Windows XP

2. Subversive, cliente de Subversion para Eclipse

3. Instalación de Subversion (SVN) en Windows XP


Si alguien quiere el manual que hice gracias a la ayuda de los anteriores mencionados dejeme un comentario.

Consejo para combinar Array y ArrayList en Java

By odrarg

Los Array son caracteristicas propias del lenguaje java, la sintaxis puede ser de la siguiente manera:

int[] a = new int[100];

Sin embargo , los ArrayList es una clase de biblioteca, definida en el paquete java.util. Es un tipo "en un tamaño encaja todo" que alberga elementos de tipo Object. Por tanto, tendrá que realizar un moldeado siempre que quiera extraer un elemento de un array de listas.

Una ventaja muy importante es que los ArrayList permite la expansión y reducción de los mismos, algo que con los array no se puede.

ArrayList()
Construye un array de listas vacío

ArrayList(int capacidadInicial)
Construye un array de listas vacío con la capacidad especificada

Boolean add(Object obj)
Anade un elemento al final del array de listas

Int size
Devuelve un número de elementos almacenados actualmente en el array de listas

void ensureCapacity(int capacidad)
Garantiza que el array de listas tiene la capacidad de almacenar el número de elementos indicados sin necesidad de reubicar el array de almacenamiento interno

void trimTosize()
Reduce la capacidad de almacenamiento del array de listas para ajustarlo a su tamaño real

void set(int posicion, Object obj)
Coloca en valor en el array de listas en la posicion especificada, sobreescribiendo además el contenido previo de dicha posición.

Object get
Recupera el valor almacenado en una posicion correcta

Combinacion de Array y ArrayList

En ocasiones, se puede obtener lo mejor de ambos mundos (crecimiento flexible y acceso sencillo a los elementos) con el siguiente truco. Primero, construya un array de listas y añada los elmentos:

ArrayList list = new ArrayList();
while (....){
x = ....;
list.add(x);
}

Una vez concluido el proceso, use el método toArray para copiar los elementos a un array:

X[] a = new X[list.size()];
list.toArray(a);

Fuente: Java 2 Fundamentos, Cay S. Horstmann / Gary Cornell

Framework Acegi

By odrarg


Para implementar seguridad y autentificación en un sistema web encontre un framework interesante, llamado ACEGI.

ACEGI es un framework de seguridad open source que permite mantener la
lógica de negocio libre de código de seguridad. ACEGI proporciona cuatro
opciones principales de seguridad:

La liga del pdf que encontre para inciar en acegi, en español: tecnoblog.entel.es

La página oficial del proyecto es la siguiente Acegi

Log4j

By odrarg


Log4j

Es una librería de java con la que podemos escribir el log de nuestra aplicación, es decir, los errores, mensajes, avisos, etc.

Tiene muchas ventajas sobre System.out y Sytem.err.

  • Podemos organizar la salida de log en grupos, incluso un log por cada clase que es lo habitual.
  • Configuramos las salidas desde un fichero de configuración, sin necesidad de tocar el código. Este fichero nos permite:
    • Decidir qué salidas queremos o no mostrar, en función de qué clase procede la salida, de qué paquete o de la "gravedad" de la salida (error, aviso, información o información de debug).
    • Enviar la salida a otros sitios que no sean pantalla, por ejemplo, a través de un socket, base de datos, a un fichero, etc.

Con System.out y System.err sólo podemos tocar eso en el mismo código y, desde luego, no podemos con ellos enviar a sitios distintos de la pantalla.

Fuente: http://www.chuidiang.com

Ademas con log4j tambien podemos enviar via email cualquier error o excepción que ocurra en el sistema, algo muy interesante.

Bueno el archivo loggin.xml donde se coloca la configuración de los logs lo tuve que colocar en el directorio raiz de Tomcat.






300 Mexicanos

By odrarg

300 Mexicanos, esta chido

Crear proyecto web con maven y eclipse

By odrarg

El problema que se me presento a mi fue que al momento de importar el proyecto web a mi IDE eclipse éste no generaba el proyecto web sino un proyecto java el cual el tomcat no me reconocia para ejecutarlo via web.

Pasos a seguir para solucionarlo:

1. Nos posicionamos en la carpeta donde queremos crear el proyecto en mi caso fue:
C:\Archivos de programa\Apache Software Foundation\Apache Tomcat 6.0.14\webapps

2. Creamos el proyecto web con Maven
mvn archetype:create -DgroupId=com.empresa.ejemplos -DartifactId=SisWeb -DarchetypeArtifactId=maven-archetype-webapp

3. Creamos el paquete
mvn package

4. Instalamos
mvn install

5. Añadimos la variable del Repositorio local maven
mvnDeclipse.workspace= c:\eclipse\Workspace eclipse:add-maven-repo

6. En
el Eclipse comprobamos en Java\Build path\Classpath variables si se ha dado de alta correctamente el repositorio de Maven

7. Añadimos el modulo al eclipse de la siguiente manera (esto es por lo que batalle y por lo cual no generaba correctamente el proyecto al momento de importarlo)
mvn -Dwtpversion=1.5 eclipse:eclipse

La linea de codigo anterior lo encontre gracias a un manual de adictos al trabajo

8.Importamos el proyecto al eclipse
mediante el menu File\Import…\Existing proyect into Workspace...

8. Otra manera de importarlo es utilizando el plugin de Q4e