sábado, 7 de abril de 2012

Uso de prettyprint

Agregar dentro de la etiqueta head
<script src="http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.js"></script>

<link href=" http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.css" rel="stylesheet"></link>
Agregar en la etiqueta body en el onload
<body onload="prettyPrint()">
Ejemplo
public static void main(String[] args) {
   System.out.prinln("¡Hola mundo!");
}

miércoles, 9 de noviembre de 2011

Eliminar los archivos .svn de algún proyecto

find . -name .svn -exec rm -rf {} \;

miércoles, 16 de febrero de 2011

Convertir números arabigos a números romanos y números romanos a números arabigos

/**
* Conversor.java 
* 1.0
*  
* 12/10/2005 
* 
* Copyright 2005 Lisibeth Troconis. All rights reserved. Used by permission. 
* 
* Libreria para convertir números arabigos a números romanos y números 
* romanos a números arabigos
*/
public class Conversor {
 
 /**
  * SIMBOLO_ROMANO[]: arrreglo que almacena los sinbolos correspondientes al
  * alfabeto perteneciente a los números romanos
  */
 private static final String SIMBOLO_ROMANO[] = 
   { "M", "CM", "D", "CD", "C","XC", "L", "XL", "X", "IX", "V", "IV", "I" };

 /**
  * VALOR_ROMANO_ARABIGO[]: arrreglo que almacena valores arabigos que
  * corresponden a cada símbolo romano
  */
 private static final int VALOR_ROMANO_ARABIGO[] = { 1000, 900, 500, 400,
   100, 90, 50, 40, 10, 9, 5, 4, 1, 0 };

 /**
  * Longitud de los arreglos SIMBOLO_ROMANO[]y VALOR_ROMANO_ARABIGO[]
  */
 private static final int n = 13; 

 
 private static String tomarValorRomano(int cifra) {
  
  if (cifra == 0){
   return "";
  } 
  int i;//indice posición del valor o simbolo romano
  
  /**
   * busco el simbolo que le corresponde
   */
  for (i = 0; i < n; i++){
   if (cifra >= VALOR_ROMANO_ARABIGO[i]){
    break;
   } 
  }
  int v = VALOR_ROMANO_ARABIGO[i];
  String valorRomano = SIMBOLO_ROMANO[i];

  /**
   * Se ve si es un simbolo prohibido y si lo es se busca el siguiente que
   * no lo es
   */
  for (; ((v < cifra) && ((SIMBOLO_ROMANO[i] == "V")
    || (SIMBOLO_ROMANO[i] == "L") || (SIMBOLO_ROMANO[i] == "D") 
    || (SIMBOLO_ROMANO[i].length() > 1))); i++);
  while (v < cifra) {
   v = v + VALOR_ROMANO_ARABIGO[i];
   valorRomano = valorRomano + SIMBOLO_ROMANO[i];
  }
  return valorRomano;
 }

 public static String aRomano(int nArabigo) {
  
  /**
   * Se verifica el rango y si es erroneo retorna vacio
   */
  if (nArabigo > 3999 || nArabigo < 1) {
   return null;
  }

  /**
   * Se convierte el número a Romano
   */
  String resultado = "";// acumulador
  int base = 10; // posicion del número a convertir
  do {
   int cifra = nArabigo % base;
   resultado = tomarValorRomano(cifra) + resultado;
   nArabigo = nArabigo - cifra;
   base = base * 10;
  } while (nArabigo != 0);
  return resultado;
 }

 private static int estadoSiguiente(int edoActual, char caracter) {
  
  /**
   * Se verifica el caracter y se busca su correspondiente indice en el
   * automata Se inicializa a 7 para representar que el caracter es
   * cualquier valor diferente del Alfabeto valido
   */
  int posAlfabeto = 7;
  switch (caracter) {
  case 'I':
   posAlfabeto = 0;
   break;
  case 'V':
   posAlfabeto = 1;
   break;
  case 'X':
   posAlfabeto = 2;
   break;
  case 'L':
   posAlfabeto = 3;
   break;
  case 'C':
   posAlfabeto = 4;
   break;
  case 'D':
   posAlfabeto = 5;
   break;
  case 'M':
   posAlfabeto = 6;
  }
  
  /**
   * sintaxi: Automata de aceptación de la cadena de los números romanos
   * Aceptación>0 y Rechazo = -1, Alfabeto = {I V X L C D M} Estados =
   * 0..19
   */
  int[][] sintaxi = 
               // I   V   X   L   C   D   M, OTRO /*estado*/    
              {{ 1,  4,  5,  8,  9, 12, 14, -1}, /* (0) */
               { 2,  3,  3, -1, -1, -1, -1, -1}, /* (1) */ 
               { 3, -1, -1, -1, -1, -1, -1, -1}, /* (2) */
               {-1, -1, -1, -1, -1, -1, -1, -1}, /* (3) */
               {16, -1, -1, -1, -1, -1, -1, -1}, /* (4) */
               { 1,  4,  6,  7,  7, -1, -1, -1}, /* (5) */ 
               { 1,  4,  7, -1, -1, -1, -1, -1}, /* (6) */  
               { 1,  4, -1, -1, -1, -1, -1, -1}, /* (7) */  
               { 1,  4, 18, -1, -1, -1, -1, -1}, /* (8) */  
               { 1,  4,  5,  8, 10, 11, 19, -1}, /* (9) */  
               { 1,  4,  5,  8, 11, -1, -1, -1}, /* (9) */  
               { 1,  4,  5,  8, -1, -1, -1, -1}, /* (11)*/  
               { 1,  4,  5,  8, 13, -1, -1, -1}, /* (12)*/  
               { 1,  4,  5,  8, 10, -1, -1, -1}, /* (13)*/  
               { 1,  4,  5,  8,  9, 12, 15, -1}, /* (14)*/ 
               { 1,  4,  5,  8,  9, 12, 16, -1}, /* (15)*/  
               { 1,  4,  5,  8,  9, 12, -1, -1}, /* (16)*/  
               { 2, -1, -1, -1, -1, -1, -1, -1}, /* (17)*/  
               { 1,  4,  6, -1, -1, -1, -1, -1}, /* (18)*/ 
               { 1,  4,  5,  8, -1, -1, -1, -1}};/* (19)*/  
 
  /**
   * retorna el estado siguiente en el automata
   */
  return sintaxi[edoActual][posAlfabeto];
 }

 private static boolean validaRomano(String nRomano) {
  int edo = 0; //se inicializa el estado
  
  /**
   * Se recorre el automata y se verifica que es correcta la sintaxi del
   * romano
   */
  for (int i = 0; edo >= 0 && i < nRomano.length(); i++) {
   edo = estadoSiguiente(edo, nRomano.charAt(i));
  }
  
  /**
   * se retorna la condición de aceptación o rechazo
   */
  return ((edo < 0) ? false : true);
 }

 public static int aArabigo(String nRomano) {
  
  /**
   * Se verifica la sintaxi correcta de la cadena que se recive
   */
  if (!validaRomano(nRomano)) {
   return -1;
  }
  int valorArabigo = 0; // acumulador
  int anterior; // indice del simbolo anterior en la cadena
  int actual; // indice del simbolo actual en la cdena
  /**
   * Se toma el valor arbigo actual del final de la cadena que luego sera
   * el valor anterior en la cadena
   */
  for (actual = 0; actual < n; actual++)
   if (SIMBOLO_ROMANO[actual].compareTo(nRomano.charAt(nRomano
     .length() - 1)
     + "") == 0) {
    valorArabigo = VALOR_ROMANO_ARABIGO[actual];
    break;
   }
  anterior = actual;
  
  /**
   * Se convierte el romano a arabigo recorriendo desde el final hacia
   * adelante la cadena, caracer por caracter Sumando su valor si el valor
   * del caracter anterior es mayor o igual al valor del caracter actual y
   * restando si el valor anterior es menor
   */
  for (int i = nRomano.length() - 2, j = 0; i >= 0; i--) {
   for (actual = 0; actual < n; actual++) {
    if (SIMBOLO_ROMANO[actual].compareTo(nRomano.charAt(i) + "") == 0) {
     break;
    }
   }
   if (VALOR_ROMANO_ARABIGO[actual] < VALOR_ROMANO_ARABIGO[anterior]) {
    valorArabigo = valorArabigo - VALOR_ROMANO_ARABIGO[actual];
   } else {
    valorArabigo = valorArabigo + VALOR_ROMANO_ARABIGO[actual];
   }
   anterior = actual;
  }
  return valorArabigo;
 }
}

sábado, 4 de septiembre de 2010

Manifest.MF - java.io.IOException: line too long

Al tratar de crear el jar de mi proyecto, especificando Main-Class y Class-Path me arrojaba el siguiente error
jar -cfm programa.jar Manifest.txt
java.io.IOException: line too long
at java.util.jar.Attributes.read(Attributes.java:362) 
at java.util.jar.Manifest.read(Manifest.java:182) 
at java.util.jar.Manifest. <init> (Manifest.java:52) at sun.tools.jar.Main.run(Main.java:151)
at sun.tools.jar.Main.main(Main.java:1149)
En el campo Class-Path se colocan todos los jar que necesito, adicionales, para ejecutar mi programa, cada jar separados por espacio, pudiendo decir path_relacional/otrojar.jar, como lo dice la documentación de java.

Pero al ejecutar el comando y pasarle el archivo para crear el manifest, me arrojaba el error anterior, busque en internet el error y no conseguí la solución, solo más personas con el mismo problema, pero por pura casualidad mis compañeros de trabajo y yo vimos como lo hace el Netbeas y notamos lo siguiente:

Las lineas donde se colocan los jar son de tamaño fijo, y la siguiente linea donde continua colocando los jar comienza con un espacio en blanco.

Como en el archivo siguiente "Manifest.txt"
Manifest-Version: 1.0
Class-Path: lib/abeilleforms/formsrt.jar lib/apache-http-client/common
s-codec-1.3.jar lib/apache-http-client/apache-mime4j-0.6.jar lib/apac he-http-client/commons-codec-1.3.jar lib/apache-http-client/commons-l ogging-1.1.1.jar lib/apache-http-client/httpclient-4.0.jar lib/apache -http-client/httpcore-4.0.1.jar lib/apache-http-client/httpmime-4.0.j ar lib/axis2/annogen-0.1.0.jar lib/axis2/axiom-api-1.2.7.jar lib/axis 2/axiom-impl-1.2.7.jar lib/axis2/axis2-adb-1.4.1.jar lib/axis2/axis2- java2wsdl-1.4.1.jar lib/axis2/axis2-kernel-1.4.1.jar lib/axis2/backpo rt-util-concurrent-3.1.jar lib/axis2/commons-codec-1.3.jar lib/axis2/ commons-httpclient-3.1.jar lib/axis2/commons-logging-1.1.1.jar lib/ax is2/log4j-1.2.15.jar lib/axis2/neethi-2.0.4.jar lib/axis2/wsdl4j-1.6. 2.jar lib/axis2/wstx-asl-3.2.4.jar lib/axis2/XmlSchema-1.4.2.jar lib/ hsqldb/hsqldb.jar lib/jcalendar/jcalendar-1.3.3.jar /lib/jcalendar/lo oks-2.0.1.jar lib/toplink/toplink-essentials.jar lib/toplink/toplink- essentials-agent.jar Created-By: 1.6.0_0 (Sun Microsystems Inc.) Main-Class: MiClaseMain
Al ejecutar nuevamente
jar -cfm programa.jar Manifest.txt
se creó el jar sin ningún problema

Error al depurar aplicaciones de eclipse en debian squeeze

FATAL ERROR in native method: JDWP No transports initialized,
ERROR: transport error 202: connect failed: Conexión rehusada ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510) JDWP exit erro
Es un bug en debian en el archivo
/etc/sysctl.d/bindv6only.conf 
Donde aparece
net.ipv6.bindv6only = 1 
Provoca que el jdk no pueda conectarse con el java debugger
Hay que setearlo a 0
Solución: como root escribir
sed -i 's/net.ipv6.bindv6only\ =\ 1/net.ipv6.bindv6only\ =\ 0/' \/etc/sysctl.d/bindv6only.conf && sudo invoke-rc.d procps restart

domingo, 15 de agosto de 2010

Usando HSQLDB

Conectar HSQLDB al administrador

Posicionarse donde se encuentra la base de datos
cd ../data

Abrir administrador de la base de datos
java -classpath .../lib/hsqldb.jar org.hsqldb.util.DatabaseManager


Ejemplo de conector = jdbc:hsqldb:file:/home/lisibeth/workspace/proyecto/hsqldb/data/nombre_base_dato

Otras clases

org.hsqldb.util.DatabaseManager
org.hsqldb.util.DatabaseManagerSwing //Esta interfaz es mas amigable que la anterior
org.hsqldb.util.Transfer
org.hsqldb.util.QueryTool
org.hsqldb.util.SqlTool

HSQLDB Server
java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 file:mydb -dbname.0 xdb





sábado, 14 de agosto de 2010

Instalar Virtualbox con soporte USB en Debian Lenny o Freeze


  1. Antes de comenzar debemos tener instalados los fuentes del kernell linux-header-NUESTRA VERSIÓN

    Si no está instalado, para saber que versión instalar, en consola root escribir

    uname -r
    Que arroja la versión del kernell, luego instalamos

    apt-get install linux-header-NUESTRA VERSIÓN

    *Donde NUESTRA VERSIÓN = al valor dado por uname -r

  2. El paquete build-essensial también tiene que estar instalado, este nos va permitir compilar el Virtualbox

    apt-get install build-essential

  3. Agregamos el repositorio para Virtualbox en consola root

    gedit /etc/apt/sources.list

    Agregar al archivo

    deb http://download.virtualbox.org/virtualbox/debian lenny non-free

  4. Descargar key de Oracle de aquí oracle_vbox.asc

    Agregar Key

    sudo apt-key add oracle_vbox.asc

  5. Actualizamos repositorios
    sudo apt-get update

    Instalamos
    apt-get install virtualbox-3.2

  6. Agregamos nuestro usuario al grupo virtualbox

    adduser lisibeth vboxusers

  7. identificar grupo vboxusers

    $ grep vbox /etc/group

    vboxusers:x:120:lisibeth

    en otro caso pudiera ser diferente.


  8. Abrir archivo mountkernfs.sh

    $gedit /etc/init.d/mountkernfs.sh

    Ubicar
    domount proc "" /proc proc -onodev,noexec,nosuid

    Debajo de ésta agrega la siguiente línea...

    domount usbfs usbdevfs /proc/bus/usb -onoexec,nosuid,nodev,devgid=120,devmode=664

    El valor subrayado es el id del paso 7

  9. Abrir archivo mountkernfs.sh

  10. $ gedit /etc/fstab

    Agregando al final las siguientes líneas

    #usbfs
    none /proc/bus/usb usbfs devgid=46,devmode=664 0 0


  11. Habilitar usb en la configuración de la maquina virtual y reiniciar los cambios