Mostrando entradas con la etiqueta Servicios. Mostrar todas las entradas
Mostrando entradas con la etiqueta Servicios. Mostrar todas las entradas

domingo, 15 de mayo de 2011

Proyecto: Basket 1.0 (2 de "pendiente") ¿Cómo instalar PostgreSQL en Windows?

Atendiendo a la petición de que "detallara los pasos" porque, había dado problemas la instalación, realizo esta entrada para explicar los pasos un poco más, disipando ,así espero , toda duda.

En un principio , no pongo inagenes, caso de requerirlas por favor, pedirlas bien en conmentario o bien en correo.

Antes de empezar y para quien no lo sepa, haré una aclaración:

  • Una cosa es hablar de bases de datos y otra es hablar de Sistemas de ficheros.
Por ejemplo, la aplicación Access de la suite  de Office de Microsoft no es una base de datos sino que es una aplicación sobre ficheros (bastante enriquecida ,por cierto)  que, emula bastante bien lo que son bases de datos de verdad, como pueden ser: PostgreSQL, MySQL, SQL-Server u  Oracle , por citar algunas .Estas últimas nombradas, son gestores de bases de datos que pueden gestionar no sólo una, sino más bases de datos. (Están mejor preparadas de lo que estaría Access para la comunicación entre equipos, estén o no en la misma red).



Instalación de PostgreSQL
en WindowsXP SP3

Nos vamos , dento del enlace que os proporcione en la anterior entrada a:
http://www.postgresql.org/ftp/binary/
Como podéis ver en este enlace no todas las  descargas son para windows.

Vamos a descargarnos un instalable sencillo para un windows que trabaje con 32 bits por ejemplo: v8.2.20

Deberemos para poder instalarlo:
  • Tener privilegios de administrador en la máquina. 
  • Espacio suficiente en la partición.
  • Que el sistema operativo pueda ejecutar como procede con las extensiones .msi.

Estos 3 casos son de perogrullo el decirlos pero, como se supone que está ha de ser una guía anti-fallos pues ....
 

Supuesto se cumplan estos pasos,  procederemos a la descarga desde el enlace indicado del archivo binario .zip:
Desde cualquiera de los mirrors que hay aquí
                   mirrors-ftp/binary/v8.2.20/win32/postgresql-8.2.20-1.zip

Una vez descargado el zip  (via ftp suele ser más rápida) ,  lo descomprimimos en una carpeta y , dentro de dicha carpeta, ejecutamos el fichero:
postgresql-8.2.msi 
 !Postgresql-8.2-int.msi, no! ,!Postgresql-8.2.msi,  sí!

Llegado a este punto, conviene indicar que, vamos a hacer una instalación y, por tanto,  conviene no estar ejecutando ninguna otra aplicación durante el proceso. Fuente que podría generar errores en la instalación.

Decir también que, lo que vamos a instalar se compone de dos cosas , sí o sí:
  • La aplición propiamente dicha.
  • El servicio de la aplicación.


!Venga que arrancamos!
  • Ventana 1: Respecto al instalador
  1.        No hay español, asi que idioma: "English" (que yo el "suajiri" no lo domino).
  2.        Marcad la  pestañita que dice lo del log, pues ello creara una bitacora del proceso de instalación que apenas ocupa , pero nunca está de más tener (de todas formas es un consejo pues la pestañita es meramente opcional.
  3.       Le damos a 'Next


  • Ventana 2:
En esta ventana se configurará el servicio.
  • Por defecto,   pone algunos datos de el administrador pero, no tienes porque modificarlos porque, dichos datos se hacen transpararentes a la hora de usar y  trabajar PostgreSQL, que es lo que queremos.
  • Repito que: No tenemos por que tocar nada aquí.   
       Podemos dejarla tal cual y darle a 'Next', dado que, no tenemos previsto hacer ningún upgrade de la instalación, ni a corto, ni a medio plazo.

Al darle a 'Next' puede ser que nos indique que ella va a dar nombres, pues vale, perfecto que de lo que quiera , esto acabará ejecutandose , cuando usemos PostgreSQL, de forma trasparente a nosotros...  así que !Que lo haga!


  • Ventana 3: 'Initialise database cluster'
Esta si nos concierne !Y mucho!


  • Opción de Puerto: 5432
Nos indica que PostgreSQL usará el puerto lógico 5432 para el envío de información.
No hace falta que lo modifiquéis , a no ser que,  por algún motivo, lo tengáis reservado para otros fines. Cosa que cada uno de vosotros sabrá.
¿Eso cómo se sabe?
La forma mas rapida es acceder al modo consola, (ejecutar cmd): 
Ejecutar netstat -a  
y comprobar, si en la lista ,que os saldrá,  figura dicho puerto.


  • Opción siguiente ¿Trabajará  en local o no?
Para nuestra aplicación inicial en Basket 1.0 será local, así que no tocamos está opción. La dejamos tal cual está.
Espero más adelante hacer cosicas pero, más adelante.

  •  Opción siguiente ¿Dónde estás?
Jajajajajajaja, sí, que nadie se confunda al ver la 'C' , por defecto, en el combobox.

Aquí es donde nosotros indicamos al instalador nuestra configuración regional e idioma (si no lo saben aseguraos en vuestro Panel de control).
¡Claro!, Para los que tengan España de región y español de idioma , toca seleccionar 'Spanish, Spain'
  Cada cual mire que tiene y proceded  a seleccionar la que os corresponde.


  • Opción siguiente ¿Signo para el SQL?
ASCii_SQL , suele ser lo que os aparezca no he probado para hacerlo con la maquina en lenguas asiáticas pero evidentemente si se se basa en el código ASCii la máquina , esta es la opción que os aconsejo dejéis.


  • OPCIÓN 'NAME' Y 'PASSWORD'
Las siguientes dos opciones , sirven para identificar al supremo de la aplicación que instalaremos.
La aplicación, nos permitirá crear muchas bases de datos, grupos de usuarios y grupos, pero !Sólo hay un usuario supremo para todo!
Conviene, aquí, que escribáis sendos registros con palabras no muy complicadas y sin separaciones y evidentemente, !Nunca jamás las olvidéis!  pues, sin ellas, no podréis acceder a la aplicación cuando esté instalada.
Haceros una idea con este ejemplo:
Name            5corsario36
Password      l3firm5do

Como apreciaréis véis entran, los símbolos usados, en mi ASCii sin ser muy complicados y no separo.
Repito: La cadena con la que rellenéis estos dos registros... !No la olvidéis!


  • Ya podemos dar a 'Next'.



  • Ventana 4: ¿Qué lenguajes procedimentales permitiremos en la aplicación?


  • Suele, sólo, dejar seleccionar la primera ,  y es la que tenemos que dejar con marca.
Caso de que, por lo que tenéis instaldo de antemano ya en vuestro equipo, os permitiera más , no lo dudéis y seleccionar todas las que os deje.





  • Ya podemos darle a 'Next'




  • Última ventana: Tengo ya plantillas, (módulos), ¿Querrás alguno?
Por defecto vemos seleccionado el del administrador.
Marcad los que queráis... Yo , con el del administrador me vale, no quiero por ahora más y cuando quiera ya os indicaré como  ponerlos y meterlos.


Google: Humor geek


!Al ejecutar esta ventana comienza la instalación!
Cuando acabe, se ejecutará.
Nada!,  Cerráis la ventanita emergente y la ventana de ejecución...
!Que las ansias pueden juagaros malas pasadas!
El "Y ahora que ya está instalado ¿Cómo?" os lo iré diciendo conforme tengamos ya normalizado el diseño pero, para eso, todavía faltan algunas entradas.





En la próxima entrada, expondré cómo construyo mi modelo E-R.  


Mientras , ya sabéis: !Sed buenos!

jueves, 28 de abril de 2011

Proyecto: Informatizar un problema matemático de primaria, Divisores (6 de 10)


Estamos en la fase de implementación y, mientras me voy haciendo con Eclipse, vamos a ir comentando un punto delicado : Limitaciones y límites a considerar.
Y es que , hasta aquí, todo era más o menos teórico pero, ahora, llega el momento de crear “la criatura” y, como colación de la pregunta del otro día, pues toca hablar de ciertas cosas.

¿Qué máximo valor podremos descomponer con la certeza de que obtendremos siempre divisores primos?
Sí, si alguien lo pensó, decirle que el número máximo será siempre el cuadrado del máximo primo que tengamos , así si os dije que teníamos los primos hasta el 108 evidentemente podemos admitir para hacer la descomposición factorial hasta, prácticamente, el 1016


Puntos del dibujo 1,2 y 3 !Primer vistazo!

Vamos a ponernos en un caso:
Supongamos que el valor máximo de nuestro fichero era el primo justo anterior a 109 y que, por tanto, admitíamos su cuadrado y, nos dan 2*1016 como valor x inicial para resolver....

El punto 1 lo pasa exitósamente. (Por ahora es natural y mayor que dos)

El punto 2 vemos que 2*1016=217*516 luego, se nos genera un array de longitud 17+16=33. Lo que tampoco supone un problema.

Y ahora llegamos al punto 3, donde había que generar números desde el 0 hasta, en este ejemplo, el 233 -1 y , por cada número, convertirlo a cadena de bits y hacer el condicional y ,si el valor resultante obtenido para ese número no estaba en el Vector solución, incluirlo.

Bueno, vemos que estamos tocando números “mucho grandes” y toca hacer una aclaración... y es que java, en un principio y si no se dice otra cosa, interpretará los números con el tipo básico Integer (int ) que, comprende 31 bits para valores y uno para signo. 
Asi que: !Ojito que corremos riesgo de desbordamiento!



Y hablando de desbordamiento vamos a hilar fino, fino, fino, a continuación:

Alguno me diréis , pero oye que habíamos quedado que el fichero de primos iba a contener los primos hasta 108 más o menos......
No eso no es cierto , en un principio diseñe el programa para que al introducir un numero no decimal y mayor que cero el programa lo asociara a una variable int y por tanto si probais a meterle un número superior a 231 el programa debería de fallar pero, hasta ese número el programa no debe de fallar.
Google : "Optimización"

Claro , y aquí es dónde alguna mente sagaz ubicará la pregunta de: 
-"Pero oye, si yo, por ejemplo, al programa para ver los primos, le introduzco el número 200000000 el programa “casca” y me sale un

Exception in thread “main” java.lang.OutOfMemoryError: Java heap space

,¿Se rompe?"-

Bueno, eso no es que precisamente el programa falle.
Estáis ante un caso de optimización que se da mucho en minería de datos.
Y es que, cuando ejecutais el programa bien en windows con el bat o bien en linux, si no hacéis nada el programa se ejecuta con los parámetros de memoria configurados por defecto en la máquina virtual que lo interpreta.
Y , claro, la pila se llena tanto que desborda la memoria asignada por defecto para la ejecución de dicho programa (de intercambio).
Esta circunstancia es propia , por la teoría de computación, de enunciados cuya resolución genera  "muchos subcálculos a tratar" es dificil explicarlo de un modo "no-técnico" pero, espero,  que el ejemplo os ilustre: 
A más factores primos divisores, muchísmos más subconjuntos a estudiar . De hecho , el número de subconjuntos crece de forma exponencial. 
Otro ejemplo que podréis encontrar, de esto que os comento , es el conocido problema de Viajante  y si queréis más, buscad "Problemas de planificación " o Schelude. 

¿Soluciones? 
 
Pues, como he dicho, es un problema de optimización de recursos.
Debemos saber que, la máquina virtual de java que interpretará el programa está justo encima del sistema operativo. Esto supone que, de la memoria que tenga para gestionar en mi equipo, deberé reservar un minimo para el sistema operativo y el resto puedo reparametrizarla en la maquina o bien en mi programa.
Así pues, vemos que, depediendo de: la memoria que tengamos , del sistema operativo sobre el que se pose la JavaVirtualMachine (JVM, interpretadora, o como la queráis llamar) de los servicios (en windows) o demons (en Linux, asi como el suso de entorno grafico en este último en el mismo), que tengamos habilitados podremos ampliar o no la memoria confiriendole asi mayor capacidad de trabajo (eso si a cambio disminuiremos la velocidad pero, podemos, como estoy diciendo ampliar el rango). Eso si debéis recordar que la paginación y la memoria virtual que requiere un sistema operativo tambien requiere memoria asi que a ver si por ganar en la JVM perdeis en SO y por tanto no habéis hecho nada.


En internet he encontrado la siguiente tabla de Megas mínimos a reservar para los siguientes sistemas operativos que sólo vayan a usar nuestro proceso, ya en futuras entradas la ampliaré , ahora sólo estamos hablando de como construir nuestra “maldita “ aplicación.

Windows XP: dejar 392MB para el SO
Linux: si no ejecutas las X, puedes llegar a dejarle sólo con 64MB para el SO.

Y estos para quien aun los use:
Windows NT: dejar 128MB para el SO
Windows 2000:dejar 256MB para el SO



Vale, vale, seguro que lo habéis pillado y esa "reparametrización" ¿Cómo lo hago?
Puede hacerse o bien en la maquina o bien en la ejecución yo os rcomiendo la segunda pues asi es solo para dicha ejecucion puntual:

Recordad o editad el bat que os deje para los que os daba problemas en windows, contenía la linea:
  • java -jar elnombredelprograma.jar

Se trata de modificar esta línea en el bat en windows o al comandarla en linux tal que, por ejemplo, podria dejar de mi Giga dedicados a la ejecucion 512 Mb:

  • java -Xms512Mb -Xms512Mb -jar elnombredelprograma.jar
Con esto ya he alcanzado el 150000000 sin problemas.

Y se queda la cosa en ir probando.



Bueno y con esto, por hoy.... ya sabéis ….
Por “su puesto” : !Sed buenos!