Thursday, November 10, 2016

Error to download Java

Oh my good, I cant download java.


Thank you for accessing the Oracle Software Delivery Cloud. Due to your country location, we are unable to process your request. If you have an active support contract, you may request physical media by either submitting a Service Request or calling Customer Support. If you wish to purchase or evaluate our products on a 30-day trial please contact the appropriate Sales Representative for your country.

Monday, October 17, 2016

crear una imagen con docker

Como empezar con docker

Docker funciona mediante los conceptos de container e imágenes. Una imagen es una máquina sin instanciar, con todo instalado y que no puede ser modificada una vez creada. Una imagen de Docker parte siempre de otra imagen.  Un containter es la instancia de una máquina que parten de una imagen.  

Fichero Dockerfile
 
Para generar una imagen, se debe crea un fichero Dockerfile donde se indica la imagen de la que se parte. Para ver los listados de imágenes disponibles se pueden buscar en https://hub.docker.com/  En el fichero Dockfile se aplican los cambios que sea necesario para nuestro proyecto. Se realizan copia de ficheros mediante el comando ADD (deprecate) o COPY,  se pueden establecer variables de entorno con el comando ENV y  ejecutar comandos , instalación de paquetes, con el comando RUN.

Para que se puedan acceder a los puertos de la imagen se usa el comando EXPOSE en el fichero Dockefile. Como pueden ser los tipicos de ssh y tomcat  EXPOSE 22 80  9001
Para finalizar se usa el servicio supervisiord para la ejecución de varios servicios de nuestra imagen y en el que se debe configurar un fichero para lanzar los script correctamente en el puerto 9001
CMD ["/usr/bin/supervisord"]

Comandos de docker para crear un proyecto
  
Para llevar a cabo la creacion de un sistema docker he eguido los siguientes pasos

  1. Se crea una imagen, ver fichero Dockerfile,  mediante el comando docker build -t usuario/proyecto .
  2. Se crea un volumen de datos  docker volume create  --name datosPersistentes para los volumenes
  3. Se crea el container docker run -p 8080:8080 -p 9001:9001  -v datosPersistentes:/data  -v    -i -t  usuario/proyecto. Desde este momento ya se puede acceder al container. Ver si se dejan todos los puertos abiertos o simplemente el 8080 . Si se hace un control-c se para el container. Si se lanza con la opción -d se desvincula y no se parará el container y si se quiere parar con el comando   docker stop idcontainercreado
  4. Se inicializa el container docker start idcontainercreado, cada vez que se quiera lanzar el container

El comando se puede concatenar para ser mas rápido.
docker build -t usuario/proyecto . &&  docker run -p 8080:8080 -p 9001:9001  -v datosPersistentes :/data    -i -t   usuario/proyecto


Para comprobar que los servicios están levantados se mira el enlace
   
   
Los container se pueden para la ejecución y volver a ejecutarlos mediante el comando docker stop y docker start

Para acceder a una máquina docker se puede ejecutar el comando docker exec -i -t idcontainercreado /bin/bash

Es recomendable borrar las imágenes y container ya que ocupan mucho espacio.

Por último se puede publicar una imagen en un repositorio publico como el de https://hub.docker.com con el comando docker  login --username=usuario --email=miemail@loquesea.nose
Se hace login en el sistema y con el comando
docker push usuario/proyecto
Se publica la imagen

Comandos útiles de docker

Ver todos los container
docker  ps -a
Ver la version de docker
docker -v

Borrar los container
docker  rm   idimagen
Borra Todos los container que cumplen como nombre del container ‘condicion’

docker ps -a | grep ‘condicion' | awk '{print $1}' | xargs --no-run-if-empty docker rm
Borrar todos los volúmenes. Cuidado con borrar los datos del container
docker volume ls  | awk '{print $2}' | xargs docker volume rm

Borrar todas las imágenes. No borrará los container en start
docker images  | grep condition | awk '{print $3}' | xargs docker rmi

Copiar ficheros desde el host a un container
docker cp foo.txt mycontainer:/foo.txt

Monday, June 13, 2016

Extraer texto de un pdf

La extración de texto de los PDF es fácil cuando sabes como hacerlo. Yo he usado las librerias pdfbox version 2.0.2

    <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox</artifactId>
            <version>2.0.2</version>
        </dependency>

Simplemente se define un área  de extraccion de texto. Lo malo que no sabes si las coordenadas del xy empiezan (0,0) arriba o abajo.

Cuando agregas un rectangulo a un PDAnnotationLink() las coorenadas de las Y empiezan en lo alto de la página 

Cuando invocas    PDFTextStripperByArea() las coordenadas de la Y empieza en el pié de la página

PDFTextStripperByArea stripper = new PDFTextStripperByArea();
stripper.setSortByPosition(true);
Rectangle2D rect = new Rectangle2D.Float(x, y, width, height);
stripper.addRegion("region", rect);
stripper.extractRegions(page);
stripper.getTextForRegion("region")

Para realizar el cambio de coordenada, se ha realizado esta función. 


private Rectangle2D changeUpper2Lower(Rectangle2D rect ,PDPage page){
 
    return new Rectangle2D.Float(
      (float)rect.getX(),
      (float)page.getMediaBox().getHeight() - (float) rect.getY()-(float)rect.getHeight(),
      (float)rect.getWidth(),
      (float)rect.getHeight());
 
  }



Friday, January 8, 2016

instalacion de open stack

Para la instalación de openStack seguí el tutorial de

http://docs.openstack.org/developer/devstack/guides/single-machine.html

 Basicamente es :
Añade un usuario
 
adduser stack
apt-get install sudo -y || yum install -y sudo
echo "stack ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

Haz login con este usuario

Descargate DevStack

sudo apt-get install git -y || sudo yum install -y git
git clone https://git.openstack.org/openstack-dev/devstack
cd devstack

pero tuve que modificar el script stackrc, el repositorio de git interno antes de lanzar stack.sh 

GIT_BASE=${GIT_BASE:- git://git.openstack.org}
por

GIT_BASE=${GIT_BASE:- https://www.github.com}

el fichero de local.conf lo modifique como sigue lo creé así.

FLOATING_RANGE=192.168.1.252/30
FIXED_RANGE=10.11.12.0/24
FIXED_NETWORK_SIZE=256
FLAT_INTERFACE=em1
ADMIN_PASSWORD=*******


Lanza script

 stack.sh

Ya se puede acceder a la web de openstack con normalidad

Reiciamos la máquina:
    Si la máquina se ha reiniciado como es el caso, hay que lanzar con el usuario "stack" los siguientes comandos.
   
        script /dev/null
           
    Eso es para corregir un fallo del comando de screen que lo usa el script  rejoin-stack.sh
    Lanzamos el script

        rejoin-stack.sh

    Se crean como unas 20 consolas (comando screen) que se  pueden navegar entre ellas con el  "control-a " + "n" de next ó n = al numero de la consola
    En la consola shell  (control-a + 0 )  se lanza el comando    
   
   keystone-all        

    ya puedes entrar en la web de openstack