viernes, 24 de febrero de 2017

Crear un listado de paises en Java

import java.util.Locale;

public class ListaPaises {

    public static void main(String[] args) {

 ListaPaises obj = new ListaPaises();
 obj.run();

    }

    public void run() {

 String[] locales = Locale.getISOCountries();

 for (String countryCode : locales) {

  Locale obj = new Locale("", countryCode);

  System.out.println("Country Code = " + obj.getCountry()
   + ", Country Name = " + obj.getDisplayCountry());

 }

 System.out.println("Done");
    }

}

domingo, 19 de junio de 2016

RMI. Puerto en uso para registro de servidor

Problema: 


Me surgió esta excepción al intentar publicar objetos remotos.

java.rmi.server.ExportException: Port already in use: 1099; nested exception is: 
java.net.BindException: Address already in use: JVM_Bind

La solución

La encontré acá: http://runando.tumblr.com/post/3181899953/address-already-in-use-jvmbind

Básicamente me bajé TCPView, y luego, con esa aplicación ya funcionando, desbloquee el puerto 1099, que es el que se hace referencia como en uso.

Ya luego funcionó correctamente.

viernes, 24 de octubre de 2014

Grafos en Java

Implementación de grafos en Java

Logo de Java

Recorrida

DFS - Por vertice

Procedimiento DFS (vertice v)

Comienzo
  1. Marcar v como visitado
  2. Para cada w adyacente a v
    1. Si w no está marcado
    2. => DFS (w)
  3. fin para
Fin


Código (matriz de adyacencias)

Interface


import grafos.Lista;

public interface IGrafo {
    /** Pre: v no pertenece al grafo. 
    *   0<v<=capacidad grafo
    *   Post: Agrega el vértice v al grafo 
    */
    public void agregarVertice(int v);
    
   
    /**
     * Pre: origen y destino son los índices de vértices ya ingresados en el grafo
     * Post: Agrega la arista origen-destino de peso "peso" en el grafo
     */
    public void agregarArista(int origen, int destino, int peso);

    
    /**
     * Pre: El vértice v existe en el grafo
     * Post: Elimina el vértice y todas las aristas a las que pertenezca
     */
    public void eliminarVertice(int v);
    
    
    /**
     * Pre: La arista origen - destino existe en el grafo
     * Post: Elimina la arista origen - destino
     */
    public void eliminarArista(int origen, int destino);
    
    
    /**
     * Pre: El vértice v existe en el grafo
     * Post: Retorna una lista con los vértices adyacentes de v.
     * Si v no tiene adyacentes retorna la lista vacía
     */
    public Lista verticesAdyacentes(int v);
    
    
    /**
     * Pre:  a y b son vértices del grafo
     * Post: Retorna true sii los vértices a y b son adyacentes. 
     */
    public boolean sonAdyacentes(int a, int b);
    
    
    /**
     * Post: Retorna true sii el vértice fue ingresado al grafo
     */
    public boolean estaVertice (int v);
    
    
    /**
     * Post: Retorna true sii el grafo esta vacío
     */
    public boolean esVacio();
    
    
    public void recorridaDFS();
}

Implementación mediante uso de Matriz de adyacencias

Clase Arco (modela un arista dentro del grafo)

public class Arco{

   boolean existe;
   int peso;

  public Arco(){
   this.existe = true;
   this.peso = 0;
  }

  public Arco(int peso){
   this.existe = true;
   this.peso = peso;
  }
}

Clase GrafoMatriz (modela una matriz con todas las adyacencias existentes en el presente grafo)

public class GrafoMatriz implements IGrafo{

  int size;
  int cantNodos;
  Arco[][] matrizAdyacencia;
  boolean[] nodosUsados;

}

Clase GrafoLista (modela una lista con todos los nodos y a su vez con todas las adyacencias existentes en el presente grafo desde cada nodo) 

ListaAdy en este caso es una lista común donde lo único que guarda es el nodo al cual se vincula el que lo contiene.

public class GrafoLista implements IGrafo{

  int size;
  int cantNodos;
  ListaAdy[] listaAdyacencia;
  boolean[] nodosUsados;

}




lunes, 30 de septiembre de 2013

Crear bases de datos locales en SQL SERVER

Intentando crear una base de datos en un directorio personal de mi proyecto en .NET me ocurrió que el motor de bases de datos (SQLSERVER 2008 R2) no me permitía guardar donde yo quería el archivo mdb y su log. A esto último me devolvía el siguiente error:

SQL SERVER – Error : Fix : Msg 5133, Level 16, State 1, Line 2 Directory lookup for the file failed with the operating system error 2(The system cannot find the file specified.)

Cómo lo resolví

Dentro de los Servicios de mi equipo busqué el que correspondía a mi instancia de SQLSERVER, y dentro de las propiedades cambié dentro de la etiqueta Log On la opción Local Systema account, lo cual inhabilitó la cuenta de la red y ¡listo! funcionó.

viernes, 30 de agosto de 2013

Drupal y los límites de memoria

Instalando y haciendo correr Drupal en un servidor me ha ocurrido un problema recurrente, del cual no entendía  que ocurría.
Con la instalación mínima del CMS no se presentaron problemas inicialmente, pero conforme le fui agregando módulos, vistas y demás comencé a notar que se hacía más lenta la carga de los contenidos del sitio público y lo que es peor, el administrador comenzó a no cargar completamente o directamente no cargar. El error recurrente que me mostraba el navegador fue error 500 lo cual no me decía nada, pero accediendo a los logs del servidor vi que el mensaje que se repetía cuando no cargaba era:

mod_rewrite: maximum number of internal redirects reached. Assuming configuration error. Use 'RewriteOptions MaxRedirects' to increase the limit if neccessary.

Luego de mucho trillar por internet encontré el problema y las posibles soluciones.

http://drupal.org/node/207036.

domingo, 24 de febrero de 2013

Errores usuales en compilación

Con este post pretendo ir colocando los errores que en diferentes lenguajes de programación me aparecen y como son triviales no siempre nos damos cuenta que se presentan o como solucionarlos.
Una cosa importante resaltaré en que lenguaje me ocurrió, esto no quiere decir que sea el único en el cual ocurra, pero conforme lo encuentre en otros casos lo iré agregando al post


unreachable statement (Java)

Se presenta cuando la línea de código a la cual se lo asocia será inaccesible por parte de la ejecución del programa, es decir.
Ejemplo

public static int primerPrimo(int num){
   int pivot = num + 1;
   while(!esPrimo(pivot) && pivot < Integer.MAX_VALUE){
        pivot++;
   }
   if (pivot < Integer.MAX_VALUE)
        return pivot;
   else{
        return 0;
   }
   return pivot; // No llegará a esta línea dado que ya habrá salido en el if anterior
    }

miércoles, 30 de enero de 2013

Deshabilitación de la configuración de módulos por BD en Drupal

Este problema puede provocar que se presente un error 500, del estilo:


This error (HTTP 500 Internal Server Error) means that the website you are visiting had a server problem which prevented the webpage from displaying.

Para hacerlo. Se va a las bases de datos, y en la tabla system que es donde se persisten todas las configuraciones se busca el módulo que está generando problemas y en el campo status se le asigna un 0 (cero).

También se puede ejecutar la siguiente sentencia:

UPDATE `system` SET status=0 WHERE name='nombreModulo';

Para hacer lo opuesto el status se lo coloca en 1

UPDATE `system` SET status=1 WHERE name='nombreModulo';