>

22 octubre 2012

Operaciones con Decimales en Java (redondeo)

Si necesitáis realizar operaciones con  números decimales tienes que utilizar java.math.BigDecimal, en el siguiente ejemplo comprobamos que la variable numericoDecimal no es 0 y le asignamos la operación multiplicación de un Double y una división por un int redondeado los decimales hacia arriba:
import java.math.BigDecimal;
import java.math.RoundingMode;

public class Prueba {
 public static void main(String[] args) {
  Double numeroDecimal2= new Double(24.2);
  BigDecimal numericoDecimal = new BigDecimal(24.5);

  // comprobacion si el valor del BigDecimal es 0
  numericoDecimal= numericoDecimal.compareTo(BigDecimal.ZERO) != 0 ?
   numericoDecimal.multiply(BigDecimal.valueOf(numeroDecimal2)).divide(BigDecimal.valueOf(12), RoundingMode.HALF_UP) 
   : BigDecimal.ZERO;
  System.out.println(numericoDecimal);
 }
}

La salida da 49.41

05 junio 2012

Scheduler o Programador de tareas en Java Version2

Otra versión de un scheduler o programador de tareas y esta vez para máquinas virtuales jdk 1.4 o anteriores. Las clases utilizadas son  java.util.Timer y   java.util.TimerTask.
Hay dos Timer y dos Task, un Timer que arranca la alarma y otro que la para, una Task que ejecuta un contador y otra que para las Tasks y los Timers

import java.util.Timer;

import java.util.TimerTask;



public class Alarma {

private long tiempoCarenciaMilisegundos = 3000;

private long tiempoEjecucionAlarmaTask = 3000;

private AlarmaTimer alarmaTimer = new AlarmaTimer();

private AlarmaTask alarmaTask = new AlarmaTask();

private AlarmaParaTimer alarmaParaTimer = new AlarmaParaTimer();

private AlarmaParaTask alarmaPararTask = new AlarmaParaTask();



/**

 * @param args

 */

public static void main(String[] args) {

System.out.println("Inicio del Main");

Alarma alarma = new Alarma(1000, 3000);

alarma.arrancaAlarmaTimer();

alarma.arrancaAlarmaParaTimer();

System.out.println("Fin del Main");

}



/**

 * Constructor de la clase

 * @param tiempoCarenciaMilisegundos

 * @param tiempoEjecucionAlarmaTask

 */



public Alarma(long tiempoCarenciaMilisegundos,

long tiempoEjecucionAlarmaTask) {

this.tiempoCarenciaMilisegundos = tiempoCarenciaMilisegundos;

this.tiempoEjecucionAlarmaTask = tiempoEjecucionAlarmaTask;

}

private void arrancaAlarmaTimer() {

alarmaTimer.arrancaTimer();

}

private void arrancaAlarmaParaTimer() {

alarmaParaTimer.arrancaParaTimer();

}

public class AlarmaTask extends TimerTask {

private int contador = 0;

public void run() {

System.out.println("Se ejecuta la alarma " + contador++);

}

}

public class AlarmaTimer extends Timer {

private final Timer tiempo = new Timer();

public void arrancaTimer() {

tiempo.scheduleAtFixedRate(alarmaTask, tiempoCarenciaMilisegundos,

tiempoEjecucionAlarmaTask);

};

}

public class AlarmaParaTask extends TimerTask {

public void run() {

System.out.println("Se ejecuta la cancelacion de la alarma ");

alarmaTask.cancel();

alarmaTimer.cancel();

alarmaTimer.purge();

System.out.println("Se ejecuta el parado de este timer/task ");

alarmaPararTask.cancel();

alarmaParaTimer.cancel();

alarmaParaTimer.purge();

System.exit(0);

}

}

public class AlarmaParaTimer extends Timer {

private final Timer tiempo = new Timer();

public void arrancaParaTimer() {

tiempo.scheduleAtFixedRate(alarmaPararTask, 20000, 1);

};
}
}

01 junio 2012

Scheduler o Programador de tareas en Java

Hoy posteo un pedacito de código de esos que suelo utilizar de vez en cuando para ejecutar en background tareas que se deben de realizar a horas intempestivas sin que moleste a nadie . Se trata de un programador de tareas o scheduler utilizando la clase Executors del paquete java.util.concurrent para versiones iguales o superiores 1.5 de java.

public class Schedule {

private ScheduledExecutorService programador;
private long tiempoRetardo;
private long tiempoEjecucion;
private long tiempoParada;

private static final int NUMERO_THREADS = 1;
private static final boolean PUEDE_PARAR_TAREA_SI_EJECUTA = false;

public static void main(String[] args) {
System.out.println("Inicio de main del proceso");
Schedule execute = new Schedule(3, 1, 20);
execute.activaProcesoYPara();
System.out.println("Fin del main del proceso");
}

/**
* Constructor
* @param tiempoInicial
* @param tiempoEjecucion
* @param tiempoParada
*/
public Schedule(long tiempoRetardo, long tiempoEjecucion, long tiempoParada) {
this.tiempoRetardo = tiempoRetardo;
this.tiempoEjecucion = tiempoEjecucion;
this.tiempoParada = tiempoParada;
programador = Executors.newScheduledThreadPool(NUMERO_THREADS);
}

/**
* Metodo que activa el programador
* el proceso se ejecutara 17 veces(contador = 17) ya que hay
* un retardo de 3 segundos. El proceso de parada tiene un ejecucion de 20
* segundos.
*/
public void activaProcesoYPara() {
Runnable ejecucionTarea = new EjecucionTarea();
ScheduledFuture programadorTareaFutura = programador.scheduleWithFixedDelay(ejecucionTarea, tiempoRetardo,
tiempoEjecucion, TimeUnit.SECONDS);
Runnable paradaProceso = new PararTarea(programadorTareaFutura);
programador.schedule(paradaProceso, tiempoParada, TimeUnit.SECONDS);
}

/**
* Clase que se utiliza para la ejecucion de la tarea
*/
private static final class EjecucionTarea implements Runnable {
/**
* Variable contador
*/
private int contador;

/*
* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
public void run() {
++contador;
System.out.println("valor del contador " + contador);
}
}

/**
* Clase que se utiliza para parar la tarea que se ejecuta en el
* {@link ScheduledFuture}
*/
private final class PararTarea implements Runnable {
private ScheduledFuture programadorFuturo;

/**
* Constructor.
* @param programadorTareaFuturo
*/
public PararTarea(ScheduledFuture programadorTareaFuturo) {
programadorFuturo = programadorTareaFuturo;
}

/*
* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
public void run() {
System.out.println("Parando la tarea");
programadorFuturo.cancel(PUEDE_PARAR_TAREA_SI_EJECUTA);
programador.shutdown();
}
}

}

22 mayo 2012

WAS(websphere) y el charset encoding utf-8

Si quieres que tu servidor websphere( o máquina virtual java) codifique en utf-8 deberás configurar el -Dclient.encoding.override= utf-8  o en ISO-8859-1 -Dclient.encoding.override=ISO-8859-1

17 mayo 2012

Comparar Fechas en Java

Como comparar fechas en java desde una fecha inicial, una final y la actual:

Date fechaHoy = new Date();
if (fechaHoy.after(fechaIni) && fechaHoy.before(fechaFin) ||
     isSameDay(fechaHoy, fechaIni) || isSameDay(fechaHoy, fechaFin)) {
     return true;
}

private static boolean esMismoDia(Date fecha1, Date fecha2) {
        if (fecha1 == null || fecha2 == null) {
            throw new IllegalArgumentException("Las fechas no pueden ser null");
        }
        Calendar cal1 = Calendar.getInstance();
        cal1.setTime(fecha1);
        Calendar cal2 = Calendar.getInstance();
        cal2.setTime(fecha2);
        return isSameDay(cal1, cal2);
    }
private static boolean esMismoDia(Calendar cal1, Calendar cal2) {
        if (cal1 == null || cal2 == null) {
            throw new IllegalArgumentException("Las fechas no pueden ser null");
        }
        return (cal1.get(Calendar.ERA) == cal2.get(Calendar.ERA) && cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) && cal1.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR));
    }

13 mayo 2012

Inicializar una constante del tipo Map-HashMap(HasMap)

Seguro que alguna vez has necesitado inicializar un hasmap desde tu aplicacion java, aqui os dejo un  snippet

private static final Map CONSTANT_MAP = Collections
.unmodifiableMap(new HashMap() {
{
put(1, "one");
put(2, "two");
}
});

08 diciembre 2011

De cena en Casa Pardo A Coruña

Aprovechando que Casa Pardo está de jornadas de caza nos fuimos de cenita, como siempre el trato y el servicio un 10(por eso considero que es el mejor) .

El menú(30 euros/pers) se compone de :
  • Hígado de pato marinado.
  • Salteado de setas(Boletus y Niscalos) acompañados de jamón iberico y huevo casero.
  • Ensalada templada de perdiz con verduras
  • Solomillo de venado y puré de castañas
  • Flan de moras con culis de frambuesa
  • Petit fours
  • Café
  • Bebida a parte



C/ NOVOA SANTOS, 15, 15006 A Coruña
981 28 00 21

25 septiembre 2011

Añadir(Add) Certificado Websphere(WAS) al IHS(apache)

Si tenemos integrado el IHS con el Was y necesitamos añadir el certificado al ihs lo que deberemos hacer es:
Extraer el certificado personal por defecto del WAS:
  1. Entra en Administrative Console de was.
  2. Selecciona Security SSL certificate and key management Key Stores and certificates.
  3. Selecciona NodeDefaultKeyStore para instalacion unica de servidor o CellDefaultKeyStore para un cluster.
  4. Pulsa Personal Certificates, selecciona el checbox por defecto y extrae el certificado, déjalo en formato Base64.
  5. Ya tienes el certificado en la ruta especificada con extensión arm.
Instalarlo en el IHS :
  1. Tenemos que localizar el fichero *.kdb. Vamos al fichero httpd.conf y buscamos la linea donde aparece la configuración del plugin-cfg.xml, ahí nos dirá el directorio donde esta nuestro almacen de certificados(plugin-key.kdb).
  2. Una vez que tenemos localizado el fichero lo abrimos con el programa ikeyman y le añadimos el certificado que extrajimos del websphere enPersonal Certificates/Signer Certificates . Si os pide contraseña la por defecto es "WebAS".
  3. Reiniciamos el IHS.
Con esto ya debería estar funcionando la conexión certificada entre was y ihs.

20 septiembre 2011

POR QUÉ TRABAJO EN AGOSTO

Yo soy rebelde porque el curro me hizo así. Llevaba 25 años de secretaria en una multinacional y, de repente, compran una red social y me trasladan de un día para otro. Eso o la prejubilación, me dicen. A mí, que tengo 60 y, vale. Soy una pionera nata. Así que me he reciclado. A la fuerza ahorcan.

El primer sofoco fue ver a mi jefe. Tiene 28 años y se llama Prometeo, te lo prometo, hay padres para matarlos. Lo ves y te dan ganas de darle un euro para que coma algo. Pero se ha inventado él solo este chiringuito que nos da de comer a mí, a él, y a otros 150. Un cerebrito, el niño. Luego están los otros, y las otras. ¡Qué cuadros!, con esos pelos y esas barbas que ellos parecen extras de La vida de Bryan y ellas las que gritan la lapidación. Y yo, la madre que los parió a todos.

Cuando entré era el último mono. Me llamaban de usted, me marginaban. Pero yo resistía, todo menos permitir que unos niñatos me empujen a la prejubilación. Decidí RENOVARME. Fui a Bershka, pillé todo lo de la XXL, lo pasé por la "Singer" y me hice unos estilismos que los tengo a todos los de la oficina muertos. Serán nativos digitales, pero les falta perspectiva.

Lo del mes pasado les parece una antigualla y lo de hace 30 años el colmo del estilo. Mi último pelotazo son unas gafas de mi madre que me he graduado para vista cansada. ¡Flipan con ellas!. Vintage, las llaman. En mi época la vendimia era otra cosa.

Se las meto dobladas. Llevo el iPhone al cuello como la cruz el exorcista: los neutraliza. Solo sé llamar y contestar, pero cuela. Esto es anarquía y no la CNT. Ahora estoy superintegrada. Hasta le he cogido el gusto a eso del Red Bull de la máquina. Sabe a Bisolvón, pero me tomo tres al día, como el jarabe. Para marchosa, yo.

Por Navidad me invitaron al Plasty, un local de culto. Mi madre me dijo: "Si vas a salir con los compañeros, ponte el visón, que viste más". Pobre, su reino ya no es de este mundo, el visón. Acabamos en un piano-karaoke del año de la tos, pero ellos lo han descubierto hace poco y creen que es moderno, yo callada, ¡déjalos que disfruten!.

Eso sí, tanto estilismo y "fashion" me agota. Por eso trabajo en agosto. Así tengo dos meses de vacaciones. El mío y el que estoy sin verlos, a mi aire. Por fin he podido sacar a desfilar mis trajes chaqueta y tengo al portero loco. "Eso es una real hembra", me suelta hoy Luciano, un chico de mi edad que no está acostumbrado a este look.

Los modernos están unos en Formentera y otros en Vietnam, no tienen término medio. Oficialmente yo voy a San Juan de Luz, que es "vintage",porque si se enteran que realmente me voy a San Juan, de Alicante, me jubilan sí o sí.

"Moderna por contrato" LUZ SÁNCHEZ-MELLADO 18/08/2010
Vía El Pais

13 agosto 2011

Como saber la ip de un usuario de un webservice ( web service)

Para saber que ip te llega utiliza este código en la parte del servidor :

HttpServletRequest httpReq = (HttpServletRequest) MessageContext.getCurrentContext().getProperty(
HTTPConstants.MC_HTTP_SERVLETREQUEST);

//devuelve la ip del cliente
String ip = httpReq.getRemoteAddr();

//devuelve el header del cliente
String browser = httpReq.getHeader("User-Agent");

25 diciembre 2010

Feliz Navidad y felices fiestas

Os deseo a todos los que leéis mi blog asiduamente como a los que no, unas Felices Fiestas.
Espero tener un ratito para publicar unos cuantos posts que tengo en el tintero desde hace tiempo, alguno de Vignette y sobre Was.

07 noviembre 2010

Elimina los duplicados en el ArrayList de java

//Elimina los duplicados en el arraylist
ArrayList listaFinal = new ArrayList();
HashSet h = new HashSet(listaFinal);
listaFinal.clear();
listaFinal.addAll(h);

17 agosto 2010

de ResourceBundle a Properties en java (ResourceBundle to Properties java)


package gl.jnovo;

import java.util.Enumeration;
import java.util.Properties;
import java.util.ResourceBundle;

public class ResourceBundleToProperties {

  public static void main(String[] args) {
    Properties genericProperties = new Properties();
    ResourceBundle bundle = ResourceBundle.getBundle("dsx");
    Enumeration claves = bundle.getKeys();
    while (claves.hasMoreElements()) {
      String clave = (String) claves.nextElement();
      String valor = bundle.getString(clave);
      genericProperties.put(clave, valor);
    }
  }

}

04 julio 2010

Contaminación de la Ria de Vigo (Ecologistas en Acción)

Pego un informe sobre la contaminación en la Ría de Vigo (a ver si los "politicos" hacen algo para solucionarlo):

El alto nivel de contaminación es otro de los graves
problemas que afectan a la ría de Vigo. Las depuradoras
actuales, más que mejorar, están a degradar la
calidad de las aguas con niveles muy superiores a los
permitidos por la ley. El desastroso estado de la red
de saneamiento hace rebosar todos los aliviaderos del
litoral, produciendo enormes concentraciones de coliformes
que se suman a las ya altas concentraciones
de metales pesados, cloribifenilos e hidrocarburos.
Ecologistas en Acción denuncia que esta situación se
reproduce en la práctica totalidad de las rías de galicia,
siendo la ría de vigo su máximo esponente, lo que
pone en serio peligro al sector marisquero de galicia
debido, a la capacidad y naturaleza de filtración del
agua de los moluscos de interés marisquero.
La inversión más importante se produjo en la instalación
que más contamina: la depuradora del Lagares.
Los 22,5 millones que ha requerido, pasarán a la historia
cuando se cierre y dé paso a la nueva planta que se
hará en el mismo lugar. Mientras tanto, sigue librando
la friolera de 166 millones de litros contaminantes al
día (44 de ellos sin ningún tipo de tratamiento).
La segunda obra más cara fue la depuradora de Teis
(10,2 millones), que tiene tratamiento terciario pero
que tampoco funciona correctamente y suelta coliformes,
según reconocen los técnicos de Aguas de
Galicia. Le siguen el saneamiento integral de Moaña
(8,7), el del fondo de la ría (7,3 millones), donde hay
niveles de plomo elevados, el saneamiento integral
de Gondomar y el río Miñor (7,1) y la ampliación de
colectores y la depuradora de Nigrán (7,1).

Más información AQUI

16 abril 2010

Las medidas económicas de la crisis del 85

Me ha llegado a las manos un documento muy interesante sobre las medidas económicas que tomo el gobierno español en 1985 en plena crisis con Miguel Boyer como ministro de economía, lo extraño es que parecen contrarias a las que toma el gobierno actual, las dejo por aquí como un documento interesante.

  1. Baja el impuesto de la renta.
  2. Disminuyen las retenciones a cuenta.
  3. Mayor desgravación por compra de vivienda.
  4. Deducción cuando trabajan ambos cónyuges.
  5. Libertad de horarios comerciales.
  6. Mayores facilidades a la inversión extranjera.
  7. Menores transferencias a las empresas públicas.
  8. Se reduce el gasto público.
  9. Bonificaciones en las cuentas sociales por empleo de jóvenes.

Estas fueron las más importantes de un paquete más extenso.

¿Tan diferente es la economía española para tomar medidas tan contrarias?

16 marzo 2010

Qué hay detrás de la subida del IVA, 18%

Pues posiblemente financiar a las empresas durante los meses que tienen para recaudar el IVA para el fisco (se paga el IVA cada tres meses y también se pueden aplazar los pagos). A parte de intentar arreglar las arcas del estado español(¿Dónde está el dinero prestado a las entidades financieras po el estado?).
¿Es una buena medida? Pues sinceramente tiene toda la pinta de que va a ser un fiasco porqué al final lo que subirán son los precios de los productos a los usuarios finales: todos nosotros, y claro, siempre con el mismo sueldo, porque en tiempo de crisis los sueldos se congelan, es decir, que nadie se gastará ni un "duro".

Parece un poco sospechoso que antes de que el gobierno dijese que subía el IVA o después que los inversores internacionales se fuesen de España apareciese una campaña publicitaria que reza «Esto solo lo arreglamos entre todos» y cómo no, quién está detrás de esta campaña, pues las Cámaras de comercio y la Fundación Confianza que la conforman entre otras la patronal de las grandes empresas constructoras (Seopan) y un buen número de grandes empresas (Telefónica, Iberia, El Corte Inglés, BBVA, Santander, La Caixa, Caja Madrid, Repsol, Cepsa, Endesa, Iberdrola, Mapfre, Abertis, Mercadona, Indra, Renfe y Red Eléctrica).

Como conclusión pagaremos los platos rotos los mismos de siempre. "España is diferent".

13 marzo 2010

De cena en Casa de Comestibles (A Coruña)

Esta noche pasada he ido por primer vez al restaurante Casa de Comestibles y la verdad que muuuuyyy bien. Es un restaurante pequeñito, ya que solo tiene 5 mesas de cuatro personas y eso hace que cenar sea un gustazo, por fin puedes hablar con tu pareja sin tener que gritar o parecer un sordo.

La comida muy buena, de primero unos buñuelos de bacalao y de segundo un atún rojo con verduritas en wok con salsa de soja, bacalao con muselina de ajo sobre cama de espinacas y piñones . De postre un Torrija de Mango con helado cardamomo y galleta de jengibre, más vino sobre unos 58 eurillos.

Un sitio muy recomendable.

Tiene blog que lo podrás ver aqui, se encuentra en laCalle San José 1 y su tlf. 676.591120.

02 marzo 2010

Porque esto no se arregla entre "todos"

Lo dicho, ya era lo que faltaba, no solo nos joden sino encima hay que ayudarlos, me refiero a la publicidad de «Esto solo lo arreglamos entre todos»
Ya sabeis a trabajar más y cobrar menos como pide CEOE
"José de la Cavada, que esta semana propuso un contrato "sin derechos" para jóvenes. De la Cavada defendió que se trata de un contrato "de inserción" para "sacar de la calle" a los menores de 30 años: un empleo temporal con un sueldo inferior al salario mínimo interprofesional (633 euros al mes), que no tendría indemnización por despido y evitaría al empresario tener que pagar cotizaciones, es decir, que negaría el derecho a paro al trabajador." via cincodias