Java Standard Edition
Transformación de clases al vuelo con Javassist
Posted Marzo 9th, 2010 by ezamudioEn esta ocasión quiero describir un proceso un tanto complicado, que puede servirle a alguien tal vez, si se encuentran en la necesidad de hacer algo locochón como lo que tuve que hacer yo.
En términos generales, me encontré en la necesidad de agregar anotaciones a clases, en tiempo de ejecución. Es decir, una clase que no tiene ciertas anotaciones, porque no fue compilada así, necesita que se las agreguemos a la hora de correr una aplicación. Esto fue posible gracias a Javassist, una biblioteca de software libre que sirve precisamente para transformar clases en tiempo de ejecución, pero aún así el código y la manera de hacerlo es algo complejo.
Primero que nada, necesitamos el JAR donde se encuentra la clase que queremos modificar. Dependiendo del tipo de aplicación, la manera de obtener el JAR va a variar, pero lo importante aquí es que tengamos al final un InputStream del cual vamos a leer la clase. Una vez que tenemos el InputStream, debemos ir leyendo del JAR hasta obtener el archivo que queremos (un .class).
Sumatoria recursiva e iterativa
Posted Febrero 28th, 2010 by trapoviejoimport java.io.*;
public class sumatoria {
public int sumat;
public static BufferedReader ent = new BufferedReader(new InputStreamReader(System.in));
public static int SumatoriaIterativa(int n){
int suma = 0;
for(int i = 1; i <= n; i++)
suma += i;
return suma;
}
public static int SumatoriaRecursiva(int n){
if(n == 0)
return 0;
else
return n + SumatoriaRecursiva(n-1);
}
public static void main (String args[]) throws IOException{
System.out.println("Dame n");
int n = Integer.parseInt(ent.readLine());
System.out.println("Iterativo es: "+SumatoriaIterativa(n));
System.out.println("Recursivo es: "+SumatoriaRecursiva(n));
}
}
- blog de trapoviejo
- Inicie sesión o regístrese para enviar comentarios
Fibonnaci recursivo e iterativo en Java
Posted Febrero 28th, 2010 by trapoviejopublic class fibonacci {
public static BufferedReader ent = new BufferedReader(new InputStreamReader(System.in));
public static int FibonacciIterativo(int n, int arr[]){
for(int i = 0; i < n; i++)
if(i < 2)
arr[i] = 1;
else
arr[i] = arr[i-1] + arr[i-2];
return arr[n-1];
}
public static int FibonacciRecursivo(int n){
if(n < 2)
return 1;
else
return FibonacciRecursivo(n-1) + FibonacciRecursivo(n-2);
}
public static void main(String args[]) throws IOException{
System.out.println("Dame el numero n");
int n = Integer.parseInt(ent.readLine());
int arr[] = new int [n];
System.out.println("Iterativo es:");
System.out.println("F(" + n + ")=" + FibonacciIterativo(n, arr));
System.out.println("Recursivo es:");
System.out.println("F(" + n + ")=" + FibonacciRecursivo(n-1));
}
}
- blog de trapoviejo
- Inicie sesión o regístrese para enviar comentarios
Restringir el acceso a usuarios y...¿Cómo ayudo al usuario?
Posted Febrero 23rd, 2010 by CARRARO
No permitir que un usuario no registrado entre al sistema
Para mis compañeros de la escuela que me pidieron ayuda... continuo explicando como estoy haciendo mi proyecto :)
Ahora estoy en la etapa de diseño de la base de datos de la empresa de transporte. El liente quiere que solo usuarios registrado puedan acceder al sistema, primero deben introducir su nombre de usuario y su clave de acceso, y en caso de ser correctos poder conectarse al servidor. El pseudocódigo es el siguiente
Y tu... le presentas al usuario mensajes de error claros y contextualizados?
Posted Febrero 17th, 2010 by luxspesReglas de Integridad
Cuando los datos se modifican con sentencias INSERT, DELETE o UPDATE, su integridad puede perderse de muchas maneras diferentes. Pueden añadirse datos no válidos a la base de datos, tales como un pedido que especifica un producto no existente.
Pueden modificarse datos existentes tomando un valor incorrecto, como por ejemplo si se reasigna un vendedor a una oficina no existente. Los cambios pueden ser aplicados parcialmente, como por ejemplo si se añade un pedido de un producto sin ajustar la cantidad disponible para vender.
Para evitar que la integridad de los datos se pierda, se pueden definir reglas que se encargaran de protegerla. Estas reglas pueden definirse en distintos niveles del código de la aplicación:
Sobre programación Cliente Servidor
Posted Febrero 16th, 2010 by CARRAROARQUITECURA CLIENTE SERVIDOR EN JAVA
Estoy en proceso de titularme (con tesis) desarrollando una aplicación basada en arquitecura cliente - servidor en Java. Se trata de un sistema de información para una empresa de transporte público dividido en tres módulos:
- Módulo de control administrativo
- Módulo de recepción de servicio
- Módulo de contabilidad
Consegui varios libros sobre TCP / IP en Java en taringa. Algunos de mis compañeros me pidieron que les explicara un poco de programación en Java, no soy ningun experto pero espero que puedan entenderme.
La arquitectura básica de cliente servidor es la siguiente:
1. Crea canal bidireccional de comunicación (socket)
socket()
2. Conecta con el servidor(connect)
connect()
Hurry up!, SCJP Plus beta exam
Posted Febrero 13th, 2010 by jiturbideHola.
Sun-Oracle reanudo la invitacion de un beta test que pospuso el año pasado acerca un nuevo examen de certificacion, Sun Certified Java Programmer Plus, donde aparte de evaluar conocimientos teoricos va a haber 6 preguntas practicas de codificacion, eventualmente este examen va a reemplazar al examen actual SCJP.
El beta test es una examen preliminar gratuito que se hace para recabar opiniones del examen antes de lanzar el examen oficial con costo, si pasas el examen te certificas como si huberas pagado por el.
Ya se habia cerrado el registro para este beta, al parecer lo abrieron de nuevo en estos dias, lo malo es que se van a elegir a los candidatos este lunes 15.
A quien le interese, aqui estan los links:
Link de registro:
https://dct.sun.com/dct/forms/reg_us_2206_429_0.jsp
Link del FAQ del nuevo examen
http://www.sun.com/training/certification/beta_scjp_plus.xml
Saludos
De Java JNI en plataformas de 64bits
Posted Febrero 10th, 2010 by laliuxHace un par de años tuve la necesidad y el gusto de implementar una biblioteca JNI para poder hacer uso de un código escrito en C/C++. La biblioteca quedó bien (don modesto) y logré que funcionara correctamente en sistemas Windows, Linux, y hasta Solaris.
Repito, hasta la fecha todo había funcionando bien, y sin novedad. Sin embargo, hace unos días los usuarios me reportaron que su aplicaciones habían dejado de funcionar, que marcaban error. Después de investigar un poco para ver que pasaba, llegué a esto:
"Exception in thread "main" java.lang.UnsatisfiedLinkError: base.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform"
Sucede que a estos usuarios les compraron unos super-equipos con doble procesador, mucha memoria, mucho disco etc etc.. pero con un jodidisimo sistema operativo, jaajaja, Windows Vista a 64bits. Ups!
Screencast Interoperabilidad Java .Net
Posted Febrero 9th, 2010 by jaimesanchezQue tal, basado en mi post anterior hice este screencast que explica como conectarse a los servicios de datos de ADO.net usando RestLet, es importante resaltar que no es la versión final de Restlet, y sería bueno que pudieran probarlo y dar sus comentarios en el sitio de RestLet, si tienes problemas para visualizarlo, puedes verlo en Channel9 Saludos!
Screencast Interoperabilidad Java .Net from jaime sanchez on Vimeo.
- blog de jaimesanchez
- Inicie sesión o regístrese para enviar comentarios
Rel Project: Una base de datos relacional (en Java) como deberian de ser? Parte I - Proyeccion
Posted Febrero 3rd, 2010 by luxspesEl proyecto Rel es una implementación del lenguaje Tutorial D de Date y Darwen en Java.
Rel es una verdadera RDBMS (no como Oracle, SQLServer o DB2 que son solo pseudo relacionales) con un lenguaje de consultas avanzado.
Rel es gratuito y opensource
Rel implementa un conjunto extendido del lenguaje propuesto por C. J. Date y Hugh Darwen, llamado Tutorial D. Es posible que ya lo hayas visto si alguna ves leíste el libro "Introducción a los Sistemas de Base de Datos" de Date.
El objetivo principal de Rel es como una herramienta de enseñanza, para que podamos explorar los conceptos de las bases de datos relacionales, pero lo que me impresiono sobre el, es que tras conocerlo se volvió imposible para mi el considerar a SQL como una lenguaje bien diseñado. Tutorial D te hace ver que SQL es una reliquia de de los 70 de la que ya deberíamos habernos deshecho hace mucho tiempo... y sin embargo, seguimos creando lenguajes para consultas lo mas parecidos a SQL que podemos, con el objetivo de facilitarle el aprendizaje a las personas que ya saben SQL, sin darnos cuenta que el aprender SQL en si mismo es una fuerte limitación a la productividad.
Empecemos con la operación relacional proyeccion: Veamos una comparación:
En SQL, puedo escribir:
Con lo que obtendré una consulta con las columnas a, b, c de la tabla r.
En Tutorial D dicha consulta se escribiría (en SQL es necesario escribir DISTINCT para garantizar que la salida no tenga redundancia, en Tutorial D, la redundancia esta prohibida por default por los principios Relacionales):
Que es mucho mas corto, hasta el momento, parece que esta es la única ventaja, pero ahora supongamos que la tabla "r" tiene los campos: a,b,c,d,e,f,g,h,i, y que solo queremos ver los campos d,e,f,g,h,i.
En SQL escribiria:
Mientras que en Tutorial D escribiria:
Comentarios recientes
hace 1 hora 20 mins
hace 1 hora 24 mins
hace 1 hora 28 mins
hace 4 horas 52 mins
hace 7 horas 32 mins
hace 8 horas 10 mins
hace 8 horas 14 mins
hace 8 horas 25 mins
hace 8 horas 41 mins
hace 8 horas 44 mins