16 septiembre 2008
14 septiembre 2008
Encriptar password en Java
Agregar los siguientes jar al proyecto (ver imagen)
Encriptar contraseñas public static String encriptar(String passwordInput) {
ConfigurablePasswordEncryptor passwordEncryptor =
new ConfigurablePasswordEncryptor();
passwordEncryptor.setAlgorithm("SHA-1");
passwordEncryptor.setPlainDigest(true);
String encryptedPassword =
passwordEncryptor.encryptPassword(passwordInput);
return encryptedPassword;
}
Verificar si la contraseña es valida
public static boolean esValido(String passwordInput,
String passwordEncriptado) {
boolean valido = true;
ConfigurablePasswordEncryptor passwordEncryptor = new ConfigurablePasswordEncryptor();
passwordEncryptor.setAlgorithm("SHA-1");
passwordEncryptor.setPlainDigest(true);
if (!passwordEncryptor.checkPassword(passwordInput, passwordEncriptado)) {
valido = false;
}
return valido;
}
Funcion que recibe el password ingresado junto al password encriptado y retorna si son iguales o no.
Para ver mas ejemplos: click aqui
24 julio 2008
Reparar el arranque (MBR)
Iniciar con el arranque de windows '98 y ejecutar
FDISK /MBR
Iniciar con el CD de Win XP, entrar a la consola reparación y escribir
FIXBOOT
FIXMBR
Iniciar con el DVD de Win Vista (alias bosta) seleccionar reparar, una vez dentro de la consola escribir:
BOOTREC /FIXMBR
Otra posible solucion es, descargar superGrub (no probado)
21 julio 2008
min-height CSS
.idCapa{
min-height: 400px;
height: auto !important;
height: 400px;
}
13 julio 2008
Sentencias SQL :: Oracle 10g
>> show parameters processes // ver cantidad de procesos
>> alter system set processes=200 scope=spfile; // modificar la cantidad de procesos
Sesiones
>> show parameters sessions // ver cantidad de sesiones
>> alter system set sessions=250 scope=spfile; // Modificar cantidad de sesiones
>> select count(*) from gv$session //contar las sesiones activas
06 julio 2008
Simple diversion ;)
20 mayo 2008
JfreeChart
22 abril 2008
Import / export Oracle 10g
Para importar
imp USUARIO/PASS@xe fromuser=USER touser=USER_OLD file = c:\NOMBRE_ARCHIVO.dmp log = NOMBRE_LOG.log
Para exportar
Exp USUARIO/PASS@xe owner=OWNER file=C:\NOMBRE_ARCHIVO.dmp log=C:\NOMBRE_LOG.log
18 abril 2008
Lectura de archivos .properties
nombre=valor
Declaramos un propertieS
private Properties prop;
Para leer el archivo se crea un metodo como el siguiente:
public void leeArchivo(String path) {
prop = new Properties();
InputStream is = null;
try {
is = new FileInputStream(path);
prop.load(is);
} catch (IOException e) {
e.printStackTrace();
}
}
Finalmente para extraer el valor adecuado utilizamos:
prop.getProperty("nombre");
06 abril 2008
Centrar capa con CSS
en la hoja de estilo se debe agregar las siguientes instrucciones
#idCapa{
background-color: #FFF;
position: absolute;
position:relative;
width:500px;
height:400px;
margin:0px auto;
}
y luego en la pagina crear una capa con id="idCapa"
30 marzo 2008
- Procesador Intel Core 2 Duo T7250 (2.0GHz)
- Mobile Intel GM965 Express Chipset
- Intel PRO wireless 4965AGN network connection
- Pantalla TFT de 14.1" (1280x800) con Tecnología Sony XBRITE
- Video Mobile Intel GMA X3100
- RAM 2GB
- Disco Duro 160GB SATA
- Cámara y micrófono integrados
- Compatible con tarjetas Memory Stick, SD y Memory Stick Pro
- Otras Interfaces: i.LINK (IEEE 1394), USB 2.0 (3), salida VGA, audí fonos (estéreo), mic-in, DC-in, AV out, PCI-EXPRESS, ExpressCard, Bluetooth
29 marzo 2008
10 años de ...
Hace 10 años un chileno fue el mejor del mundo, un chileno que se mantuvo en el tope por 4 semanas arrebatando el primer lugar a un Peter Sampras que llevaba un reinado de 102 semanas, en un partido magistral an
te Andre Agassi gana el “súper Creo que es difícil que algún otro deportista (chileno) se pueda jactar de ser el mejor del mundo (al corto plazo), menos en el deporte blanco ya que los exponentes actuales dejan bastante que desear, con "garra" se puede ganar un par de partidos pero con talento se ganan los torneos.
24 marzo 2008
Double Buffering j2me
La técnica de pantalla en segundo plano consiste en lo siguiente: Muchos dispositivos que no poseen una gran capacidad computacional provocan un parpadeo a la hora de actualizar los gráficos en pantalla. En estos casos, lo ideal sería hacer todas las actualizaciones gráficas en memoria y posteriormente volcar el contenido de memoria en pantalla. Esta técnica es la que se conoce como double buffering. Algunos de estos dispositivos implementan esta técnica sin que tengamos que escribir ni una sola línea de código. Para saber si el MID donde ejecutamos nuestra aplicación aplica esta técnica, existe un método de la clase Canvas que nos devuelve true o false en caso de que
aplique esta técnica o no: boolean isDoubleBuffered().
Image displaysecundario;
if (! isDoubleBuffered()){
displaysecundario= Image.createImage(getWidth(),getHeight());
}
protected void paint(Graphics g){
Graphics displayprimario = g;
g = displaysecundario.getGraphics();
// Realizamos todas las operaciones para actualizar la pantalla en g.
...
//Realizamos el volcado en pantalla
displayprimario.drawImage(displaysecundario,0,0,Graphics.LEFT | Graphics.TOP);
}
Java un lenguaje popular
PD: estoy un poco aburrido en la pega :)
Predominio de Apache en Web-Server
02 marzo 2008
Scrolling Horizontal
1.- Imagenes
Tile 1
Tile 2
Tile 3
Tile 42.- Codigo
Crear un hilo en el cual colocaremos lo siguiente
2.1- Declaraciones
private int indice_in, indice, xTiles, yTiles, sleep;
private Image[] tile = new Image[5];
int map[][] = {
{1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 2, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1},
{1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}};
2.2.- Metodo run
Metodo que DEBE implementarse en un hilo
public void run() {
iniciar();
while (true) {
indice_in += 4;
if (indice_in >= 16) {
indice_in = 0;
indice--;
}
if (indice <>
indice = map[0].length - 1;
indice_in = 0;
}
repaint();
try {
Thread.sleep(sleep);
} catch (InterruptedException e) {
System.out.println(e.toString());
}
}
}
2.3.- Metodo paint
Metodo que pinta las imagenes en pantalla
public void paint(Graphics g) {
int x = 0, y = 0, t = 0;
int i, j;
g.setColor(255, 255, 255);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(200, 200, 0);
for (i = 0; i < xTiles; i++) {
int a = (indice + i) % map[0].length;
for (j = 0; j < yTiles; j++) {
t = map[j][a];
y = j * 16;
x = (i - 1) * 16 + indice_in;
g.drawImage(tile[t], x, y, Graphics.LEFT | Graphics.TOP);
}
}
}
3.- Video-Demo
La implementacion se realizo para un dispositivo movil, y resulto algo asi.
20 febrero 2008
Creación de Nube de Etiquetas
Al ingresar a tu blog como administrador, agregar un widget de etiquetas, y luego
vas a la vista del codigo HTML
Debemos buscar en el codigo ]]><_/b:skin> (sin el guión bajo)
e insetar el siguiente codigo ANTES de ]]><_/b:skin> (sin el guión bajo)
Ver Codigo
luego insertar el siguiente script ENTRE
]]><_/b:skin> y <_/head> (sin el guión bajo)
<script type='text/javascript'>
// Label Cloud User Variables
var cloudMin = 1;
var maxFontSize = 20;
var maxColor = [0,0,255];
var minFontSize = 10;
var minColor = [0,0,0];
var lcShowCount = false;
script>
<_b:widget id="'Label1'" locked="'false'" title="'Labels'" type="'Label'/">
(sin el guión bajo)
y lo reemplazaremos por el siguiente codigo.
Ver codigo
El script maneja lo que tiene relación con el formato
de la nube de tags, como color, tamaño, si mostrar la
etiqueta junto a el contador, es cosa de meter mano y listo :)
Suerte.
El articulo fuente es: phydeaux3
18 febrero 2008
Creación de juego 2D en Java
- Creación de Hilos (Threads)
- Animacion 2D
- Interactividad e Interfaz de Usuario
- Efectos de Sonido
- Creacion de una plataforma de juego 2D
- Multi-player
- Deteccion de Colisiones
- Persistencia
- Tecnicas de optimización
- etc
Este libro fue de gran utilidad para poder crear nuestro proyecto cuyas caracteristicas son:
- Rapido
- Interactivo
- Efectos de sonido (sincronizados al movimiento)
- Guardar las partidas con su respectivo nick y screenshot del escenario
- 3 Niveles, cada nivel con 2 escenas
- Detección de colisiones
- Todo lo implicito que tiene la creación de un Juego (que es mas de lo que uno piensa ...jaja)
Lo que faltó... - Un diseñador :) (plop)
- Implementar la opción de Multiplayer

Los recursos están disponibles en: Developing Games in Java Autor David Brackeen
04 febrero 2008
¿Que es un Midlet?
Un Midlet es una aplicación java utilizado en dispositivos móviles, funciona bajo la maquina virtual de j2me (java Micro Edition), por lo general se utiliza para la creación de juegos, su estructura es parecida a la de un applet (j2se).
02 febrero 2008
Noticias
28 enero 2008
logic:iterator & bean:write
pagina.jsp
(<)logic:iterate id="iterando" name="lista" scope="session" type="mypackage1.Mensaje">
(<)bean:write name="iterando" property="texto"/>
IterarAction.java
...
HttpSession session;
session = request.getSession();
Vector v=new Vector();
Mensaje a=null;
for(int i=0;i<10;i++){
a=new Mensaje();
a.setTexto("Hola "+i);
v.addElement(a);
}
session.setAttribute("lista",v);
...
public class Mensaje {
private String texto;
public Mensaje() {
}
public String getTexto() {
return texto;
}
public void setTexto(String texto) {
this.texto = texto;
}
}
Detalle del iterate:
id = identificador
name = nombre que desde el action debe ser seteado para llenarlo (session.setAttribute("lista",v))
type = tipo de objeto que contiene la lista o vector a iterar
Detalle del bean:write
name = nombre del iterador correspondiente
property = nombre del atributo del objeto en este caso texto del objeto mensaje (private String texto;)
El resultado que muestra el navegador es:
Hola 0 Hola 1 Hola 2 Hola 3 Hola 4 Hola 5 Hola 6 Hola 7 Hola 8 Hola 9
Nota:
Así se pude lograr iterar lo que sea, tablas, capas, fotos, objetos de cualquier tipo, selectores, combobox, etc.
11 enero 2008
Interrogantes

Falta poco para la defensa, no me preocupa tanto, ya que todo el mundo esta contento con el trabajo realizado, pero ¿que haré después? ... eso me quita el sueño ahora, tener la opción de llegar a santiago con pega "asegurada" (en teoría) crea una falsa confianza en el futuro laboral, sin embargo quiero realizar el proyecto que ahora desarrollamos (de forma underground) aunque sea a cambio de nada (mientras se encuentra el financiamiento). Hay varios factores por evaluar, familia, corazón, dinero, proyecciones laborales, opciones de incrementar el conocimiento. Para variar el entorno no ayuda mucho para tomar la decisión, ni las vacaciones están resultando como se PLANEO hace ya BASTANTE tiempo.
Por ahora el "plan" es defender y viajar, desconectarme de todo (perdón casi todo, el proyecto sigue donde sea) para en marzo retomar los tramites que queden pendientes...
10 enero 2008
Por Fin !!!
Hoy entregamos el Software que desarrollamos para el hospital (de chillán), por fin terminamos solo falta la defensa (fecha por confirmar), se les hizo entrega de:1.- Cd con la Aplicación
2.- Manual de instalación
3.- Manual de Usuario
4.- Video Tutoriales
02 enero 2008
Visa y Pago USB
Con este dispositivo de pago USB, las empresas (de Corea) están comprando lectores para que sus clientes dejen las tarjetas y cambien al nuevo sistema.
No hay mucho mas detalles de esto, solo esto por ahora.
01 enero 2008
Errores con Struts
LoginAction.java
...
ActionErrors errorValidacion = new ActionErrors();
errorValidacion.add("errorLogin", new ActionError("errors.user"));
request.setAttribute("errorLogin", errorValidacion);
...
login.jsp
...
<_html:errors property="errorLogin"> (quitando los guiones bajo ( _ ) )
...
ApplicationResourses.properties
...
errors.user=Usuario desconocido
...
al intentar ingresar con un usuario ilegal el resultado es el siguiente ...




