>

10 agosto 2014

Ni todo es gratuito ni todo es público

Aunque Internet y las redes sociales son un gran escaparate y una magnifica autopista para alcanzar fácilmente la información deseada, algunas veces puede ser una fuente de quebraderos de cabeza para los usuarios que no dan su consentimiento para que determinados datos referentes a su vida personal o profesional se publiquen.

Afortunadamente el Tribunal de Justicia de la Unión Europea (TJUE) ha dictaminado que buscadores de Internet como Google y posteriormente Bing retiren los enlaces a informaciones publicadas en el pasado, si se comprueba que son lesivas para alguna persona o carecen de relevancia.

Si consideráis que se ha vulnerado vuestro derecho a la privacidad o que alguna de las referencias que aparecen en el buscador no se ajustan a la realidad no dudéis en presentar una reclamación.
Aquí os dejo el link de acceso al formulario de Google y al de Microsoft Bing

De todas formas sigue existiendo un vacío legal entorno a la privacidad en la red ya que aunque los buscadores acaten la sentencia de la UE, las páginas donde están publicadas las informaciones a las que se hace referencia no se dan por aludidas.

29 junio 2014

Conectándote a la Máquina Virtual de Java (JVM)

La entrada de hoy va de como te conectas a la máquina virtual de java mediante programación, y te preguntarás ¿para qué me voy a conectar a la maquina virtual?, pues muy fácil, podrás controlar la memoria, threads y leer las propiedades del sistema.


package es.jnovo;

import java.io.File;
import java.io.IOException;
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean;
import java.util.Set;

import javax.management.MBeanServerConnection;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;

import com.sun.tools.attach.AgentInitializationException;
import com.sun.tools.attach.AgentLoadException;
import com.sun.tools.attach.AttachNotSupportedException;
import com.sun.tools.attach.VirtualMachine;
import com.sun.tools.attach.VirtualMachineDescriptor;
import com.sun.tools.attach.spi.AttachProvider;

public class Jvm {

 public static void main(String[] args) {
  systema();
 }

 public static String systema() {
  StringBuilder salida = new StringBuilder();
  try {
   final AttachProvider attachProvider = AttachProvider.providers().get(0);

   VirtualMachineDescriptor descriptor = null;
   for (VirtualMachineDescriptor virtualMachineDescriptor : attachProvider.listVirtualMachines()) {

    // System.out.println(virtualMachineDescriptor.displayName());

    if (virtualMachineDescriptor.displayName().contains("eclipse")) {
     descriptor = virtualMachineDescriptor;
    }
   }

   if (descriptor == null)
    throw new RuntimeException("No tienes descriptor de la maquina virtual");

   VirtualMachine virtualMachine;

   virtualMachine = attachProvider.attachVirtualMachine(descriptor);

   final String home = virtualMachine.getSystemProperties().getProperty("java.home");
   final String agent = home + File.separator + "lib" + File.separator + "management-agent.jar";

   virtualMachine.loadAgent(agent);

   final Object portObject = virtualMachine.getAgentProperties().get("com.sun.management.jmxremote.localConnectorAddress");

   final JMXServiceURL target = new JMXServiceURL(portObject + "");
   final JMXConnector connector = JMXConnectorFactory.connect(target);
   final MBeanServerConnection remote = connector.getMBeanServerConnection();

   // listamos los threads del sistema
   ObjectName objName = new ObjectName(ManagementFactory.THREAD_MXBEAN_NAME);
   Set mbeans = remote.queryNames(objName, null);
   for (ObjectName name : mbeans) {
    ThreadMXBean threadBean = ManagementFactory.newPlatformMXBeanProxy(remote, name.toString(), ThreadMXBean.class);
    long threadIds[] = threadBean.getAllThreadIds();
    for (long threadId : threadIds) {
     ThreadInfo threadInfo = threadBean.getThreadInfo(threadId);
     System.out.println(threadInfo.getThreadName() + " / " + threadInfo.getThreadState());
    }
   }
  } catch (AttachNotSupportedException e) {
  } catch (IOException e) {

  } catch (AgentLoadException e) {
  } catch (AgentInitializationException e) {
  } catch (MalformedObjectNameException e) {
  }
  return salida.toString();
 }
}



29 marzo 2014

TimeOut en un webservice sin tocar el código autogenerado

Alguna vez seguro que habéis necesitado que el cliente del servicio web al que estáis llamando no tenga un tiempo de espera muy grande, sobre todo si es llamado desde un proceso que se ejecuta en una web, ya que podemos dejar colgados threads.
Con el siguiente código podreis ajustar este tiempo sin tener que modificar los ficheros generados por el wsdljava

//direccion del webservice 
String myEndpointURL = "endpointURL";
// tiempo de espera del web service
Integer myTimeOutWS = new Integer(60000);
XXXXXXX_DefaultLocator service = new XXXXXXX_DefaultLocator();
//Casteamos el Service a Stub
org.apache.axis.client.Stub stub = (org.apache.axis.client.Stub) service.getXXXXXXX_DefaultSoap12(new URL(endpoint));
//Seteamos el timeout de la llamada del servicio web 
stub.setTimeout(myTimeOutWS != null ? myTimeOutWS.intValue() : 60000);
serviceProvider = service.getXXXXXXX_DefaultSoap12(new URL(conectionUrl));

07 enero 2014

Método que reemplaza un string javascript

//Metodo que reemplaza un string
function reemplaza(salida,valor, porValor){
    var intIndexOfMatch = salida.indexOf( valor );
    // Creamos un bucle para buscar el caracter a reemplazar
    while (intIndexOfMatch != -1){
        //reemplazamos el valor
        salida = salida.replace( valor, porValor );
       
        //realizamos la busqueda
        intIndexOfMatch = salida.indexOf( valor );
    }
    return salida;
}

19 octubre 2013

Método que comprueba que no haya duplicado en un HashMap de java (hasmap)

Este método putToMap comprueba que no existan duplicados en un HashMap
import java.util.HashMap;
import java.util.Map;

/**
 * @author jnovos
 * 
 */
public class MyHashMap {

 private final Map map = new HashMap();

 public static void main(String[] args) {
  MyHashMap myHashMap = new MyHashMap();
  myHashMap.putToMap("1", "valor1");
 }

 private String putToMap(String key, String value) {
  if (this.map.containsKey(key)) {
   return value;
  } else {
   return (String) this.map.put(key, value);
  }
 }

}

09 junio 2013

Auto completado con el tab en Windows XP

Cuantas veces has echado de menos cuando estas en un editor de comandos o shell o comand prompt el autocompletado en el XP , para habiltarlo sigue los siguientes pasos(tal y como se especifica):
  1. Pulsa el boton de Inicio
  2. Selecciona Ejecutar y escribe regedit
  3. Expande  HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Command Processor
  4. Doble click en  CompletionChar
  5. Reemplaza el valor que hay con un 9
  6.  Pulsa OK

08 junio 2013

Eliminar una acción predeterminada de una aplicación en android

Cuentas veces queremos que una aplicación de nuestro smartphone android no abra un link de twitter o facebook y no sabemos cómo quitar esa maldita asociación al programa pues se hace así:

  • Ir a ajuste / aplicaciones seleccionar todas y buscar la asociada (Por ejemplo Internet
  •   Una vez dentro busca la opción Ejecutar de Forma Predeterminada y pulsa Borrar valores Predeterminados