Instalar python en Windows

En este tutorial vamos a aprender a instalar python en Windows. El tutorial de instalación de python en Windows no tiene ninguna dificultad y veremos una vez finalizado la instalación si hemos instalado correctamente python en nuestro equipo

Sigue leyendo

Publicado en Django, Python | Etiquetado , | Deja un comentario

configurar chrome para que no consuma memoria ram

Buenas, hoy arrancando el ordenador me he dado cuenta que sin ni siquiera abrir chrome este consumo bastante memoria ram.

Sigue leyendo

Publicado en Programas | Deja un comentario

método calcular letra dni en java

Método para calcular el dni de una persona (nif) en java

public static final String STRING_DE_ASOCIACION_NIF = "TRWAGMYFPDXBNJZSQVHLCKE";
/**
 * Calcula el NIF (DNI + letra) para un número de identificación dado
 * 
 * @param numerosDni - Chorro de 8 números de un dni
 * @return
 */
public static String calcularNif(String numerosDni) {
	int numeros = Integer.valueOf(numerosDni);
	return String.valueOf(numerosDni) + STRING_DE_ASOCIACION_NIF.charAt(numeros % 23);
}
Publicado en JAVA | Deja un comentario

Calcular edad de una persona en java

Método para calcular la edad de una persona. Espero que os sirva.

public static String getEdad(Date fechaNacimiento) {
		if (fechaNacimiento != null) {
			SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
			StringBuilder result = new StringBuilder();
			if (fechaNacimiento != null) {
				result.append(sdf.format(fechaNacimiento));
				result.append(" (");
				Calendar c = new GregorianCalendar();
				c.setTime(fechaNacimiento);
				result.append(calcularEdad(c));
				result.append(" años)");
			}
			return result.toString();
		}
		return "";
	}
	
private static int calcularEdad(Calendar fechaNac) {
		Calendar today = Calendar.getInstance();
		int diffYear = today.get(Calendar.YEAR) - fechaNac.get(Calendar.YEAR);
		int diffMonth = today.get(Calendar.MONTH) - fechaNac.get(Calendar.MONTH);
		int diffDay = today.get(Calendar.DAY_OF_MONTH) - fechaNac.get(Calendar.DAY_OF_MONTH);
		// Si está en ese año pero todavía no los ha cumplido
		if (diffMonth < 0 || (diffMonth == 0 && diffDay < 0)) {
			diffYear = diffYear - 1; // no aparecían los dos guiones del
										// postincremento 😐
		}
		return diffYear;
}

 

Publicado en JAVA | 1 comentario

centrar div con css

En esta ocasión vamos a centrar un div usando la propiedad margin

En el ejemplo que os dejo mas abajo vamos a tener tres div, los dos primerios div estarán uno al lado del otro a la misma altura y el tercer div queremos que este debajo y a la vez que este centrado en la pantalla. Para en la clase “centrado” colocamos la propiedad margin : auto para centrarlo.

 

Os dejo el ejemplo para centrar un div con css.

 

<html>
<head>
	<title>Centrar Div </title>
<style type="text/css">

  .columna1{
  	background-color: grey;
  	width: 50%;
  	float: left;
  }
  .columna2{
  	background-color: yellow;
  	width: 50%;
  	float: left;
  }

  .centrado{
  	width: 50%;
  	margin: 0 auto;
  	background-color: orange;
  }
  
</style>
</head>
<body>
<div class="columna1">Div1</div>
<div class="columna2">Div2</div>
<div class="centrado">Div3</div>

</body>
</html>

 

Publicado en CSS | Deja un comentario

Obtener fecha actual en mysql

Con este pequeño código podemos obtener los dias de la semana en mysql.

SELECT CONCAT(ELT(WEEKDAY(CURDATE()) + 1, 'lunes', 'martes', 'miercoles', 'jueves', 'viernes', 'sabado', 'domingo')) AS DIA_SEMANA

el resultado dependerá del día en que lo ejecutemos.

Publicado en MySQL | Etiquetado | Deja un comentario

solucion error msvcr110.dll

falta msvcr110.dll

La solución es sencilla, tanto si tienes la version de Windows de x86 o x64 bits tienes que instalar version de x86 de
Visual C++ Redistributable for Visual Studio 2012 Update 4.

yo tengo un Windows 7 64 bits, instalé la version de Visual C++ Redistributable for Visual Studio 2012 para 64 btis y no me funcionó, instalé la versión de 32 bits y me funcionó perfectamente.

esta es la url de Microsoft para descargartelo : http://www.microsoft.com/en-us/download/details.aspx?id=30679

Una vez que lo instales ejecuta el programa y comprobarás que ya no te salta el error.

 

Publicado en windows | 7 comentarios

Administración de Oracle 11g – Arquitectura de la Base de datos (parte3)

En este capitulo nos vamos a centrar en aprender las estructuras de memoria que maneja el servidor Oracle.

En la diapositiva podemos ver 2 estructuras de memoria dentro del servidor.arquitectura_base_de_datos_oracle2

  • La SGA (System Global Area) es la caché de nuestra instancia donde se cacheaban nuestras sentencias y los datos devueltos. Esta memoria es compartida por todos los procesos.
  • La  PGA (Program Global Area) es la zona de memoria privada de cada proceso Oracle (también para los procesos background), donde la información que contiene básicamente información sobre la sesión (que usuario esta conectado, privilegios,  que cursores están abiertos, buffer de ordenación ). Los procesos background tienen también su propia PGA

Memoria SGA y PGA

En la diapositiva superior podemos ver en la parte izquierda la estructura de un servidor dedicado y en la parte derecha un servidor compartido.

Podéis observar que en la parte izquierda (servidor dedicado) la SGA (estructura de memoria compartida que proporciona la instancia)  y para cada servidor dedicado tendremos su PGA (la sesión y la pila).

Si os dais cuenta que en el modelo de la izquierda (servidor dedicado) se desperdicia memoria ya que en la PGA se guarda un buffer de short area (que es utilizado para las ordenadores), pero ¿Qué pasa si esa sesión no hace ninguna ordenación? es memoria que se esta desperdiciando.

Para solucionar esto, Oracle a partir de la 9i introduce un concepto llamado PGA_AGGREGATE_TARGET, esto permite definir un espacio compartido parecido a la SGA para las PGAs.
En lugar de tener un buffer de ordenación (sort area) dentro del proceso de la PGA, estará dentro de un pool compartido, evitando la necesidad de asignar parámetros como SORT_AREA_SIZE o HASH_AREA_SIZE a las memorias privadas de la PGA.

El valor mínimo de el PAGA_AGGREGATE_TARGET es 10 M.

PGA_AGGREGATE_TARJET

¿Cómo configurar la memoria de Oracle?

Con Oracle 11g se configura la memoria del Servidor (SGA + PGA) con un sólo parámetro llamado MEMORY_TARGET.

En Oracle 11g solo hay que configurar el memory_target y memory_max_target.
En el memory target asignaremos el 80% de la memoria ram (como recomienda oracle)
El memory_max_target es la memoria maxima que puede utilizar, esto es utilizado ya que reserva la memoria RAM.

  • MEMORY_TARGET dimensiona SGA + PGA. Puede crecer manualmente hasta MEMORY_MAX_TARGET.
  • sga_tarjet, sga_max_size pga_aggregate_target se pueden dejar a cero (sga_max_size, por defecto, sería el 60% de memory_target), o con un valor mínimo.
  • En Linux, memory_target y memory_max_size están limitados por el valor de /dev/shm, para cada ua de las instancias que haya en el servidor: si /dev/shm vale 2Gb, entonces ninguno de ellos pueden valer más de 2Gb para cada instancia del servidor.
  • También hay que configurar el Bugger de Redo con log_buffer (igual que en 10g y versiones anteriores).
  • V$MEMORY_DYNAMIC_COMPONENTS: tamaños actuales.
  • V$MEMORY_TARGET_ADVICE: recomdaciones de MEMORY_TARGET.
  • V$MEMORY_RESIZE_OPSS: operaciones de AMM.

Recomendaciones de Oracle

  • Oracle recomienda asignar un máximo del 80% de la RAM de la máquina para el Servidor Oracle.
  • A su vez, de dicho 80%, recomienda asignar un máximo del 20% para la SGA

 

 

 

Publicado en Oracle | Deja un comentario

Navegar a través de un tunel SSH con Putty y Foxyproxy

Tenemos un servidor alojado en un edificio en el cual tenemos acceso por SSH, la idea es utilizar este servidor como proxy para navegar por Internet a través de él (como si estuviésemos delante del servidor navegando por Internet).

En este tutorial voy a crear un proxy escuchando el puerto 8081, el puerto podéis cambiarlo a vuestro antojo.

1- Instalamos el Foxproxy (en firefox)

https://addons.mozilla.org/es/firefox/addon/foxyproxy-standard/

2- Descargamos el putty.

http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe

3- Abrimos el putty

Ponemos la dirección IP de nuestro servidor (el cual tenemos acceso mediante SSH)

 

navegacion_ssh_a_traves_proxy_1

Ahora buscamos la pestaña Tunnels e introducimos el puerto por el que nosotros enrutaremos toda la navegación en nuestro Firefox.

navegacion_ssh_a_traves_proxy_2

navegacion_ssh_a_traves_proxy_3

Perfecto, ya lo tenemos configurado, le damos a “Open” e introducimos el usuario y contraseña de nuestro servidor (conexion mediante ssh).

navegacion_ssh_a_traves_proxy_4

Perfecto, ya tenemos el túnel preparado, ahora solo falta configurar el navegador Firefox para poder navegar a través del túnel que hemos creado.

Abrimos Firefox y pulsamos sobre el nuevo icono que nos aparece en la barra de navegación.

navegacion_ssh_a_traves_proxy_5Seguidamente le damos a “Añadir nuevo proxy”
En la ventana que nos aparece introducimos la direccion ip 127.0.0.1 y el puerto que hemos configurado en el putty, en el caso de este tutorial es el 8081.

navegacion_ssh_a_traves_proxy_6

Pulsamos aceptar y ya tenemos todo configurado, ahora solo falta probarlo.

Pinchando sobre el icono del plugin con el botón derecho pulsamos sobre el proxy que hemos creado y automáticamente empezaremos a navegar a través de nuestro túnel SSH.

navegacion_ssh_a_traves_proxy_7

 

¿Como podemos saber si estamos navegando a través del proxy? La forma mas sencilla es viendo la ip http://www.cualesmiip.com/ que tenemos antes de utilizar el puglin Foxproxy , activamos el proxy y volvemos a consultar nuestra ip y veremos como ha cambiado.

Espero que les sea de utilidad.

Consejo: Para no estar configurando el Putty cada vez que queramos utilizarlo, podeis guardar la configuración, para ello solo teneis que darle a “Save” en la pestaña de “Session” una vez que tengáis todos los datos introducidos.

navegacion_ssh_a_traves_proxy_8

Así cada vez que habraís el putty podeis seleccionar vuestra configuración pinchando sobre el nombre de la configuracion (ej: guardarconfiguracionPROXY) y pulsar “Load”, automaticamente ya tendreis todo configurado para darle a “Open” y crear el túnel SSH.

 

 

Publicado en Programas, Seguridad | Deja un comentario

Leer o escribir en Excel desde Java

Vamos a leer un archivo Excel desde Java utilizando la librería POI.

Nos podemos descargar la librería desde su página http://www.apache.org/dyn/closer.cgi/poi/

En mi caso me he descargado la versión “poi-bin-3.10-FINAL-20140208.zip
Descomprimimos y observamos que tenemos unos jars que añadiremos posteriormente a nuestro proyecto.

descomprimido_poi-bin-3.10-FINAL-20140208.zip

Creamos un nuevo proyecto en Eclipse o en el entorno de desarrollo que utiliceis.

proyecto_leerXLS

 

Ahora añadiremos las librerias POI para poder leer el Excel, para ello pulsamos con el botón derecho sobre nuestro proyecto, propiedades. Seguidamente en Java Build Path y en la pestaña de Libraries añadimos los jar de la libreria POI. Una vez añadidas pulsamos en OK y ya tenemos las librerias en nuestro proyecto.

añadir_JAR_POI

Creamos un excel de ejemplo y lo guardamos dentro de nuestro proyecto

excel_test_java

leer_test_java_proyecto

Ahora creamos el Main.java con el siguiente código:

package leerXLS;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;

public class Main {

	public static void main(String[] args) throws Exception {

		//
		// An excel file name. You can create a file name with a full
		// path information.
		//
		String filename = "test.xls";
		//
		// Create an ArrayList to store the data read from excel sheet.
		//
		List sheetData = new ArrayList();
		FileInputStream fis = null;
		try {
			//
			// Create a FileInputStream that will be use to read the
			// excel file.
			//
			fis = new FileInputStream(filename);
			//
			// Create an excel workbook from the file system.
			//
			HSSFWorkbook workbook = new HSSFWorkbook(fis);
			//
			// Get the first sheet on the workbook.
			//
			HSSFSheet sheet = workbook.getSheetAt(0);
			//
			// When we have a sheet object in hand we can iterator on
			// each sheet's rows and on each row's cells. We store the
			// data read on an ArrayList so that we can printed the
			// content of the excel to the console.
			//
			Iterator rows = sheet.rowIterator();
			while (rows.hasNext()) {
				HSSFRow row = (HSSFRow) rows.next();
				
				Iterator cells = row.cellIterator();
				List data = new ArrayList();
				while (cells.hasNext()) {
					HSSFCell cell = (HSSFCell) cells.next();
				//	System.out.println("Añadiendo Celda: " + cell.toString());
					data.add(cell);
				}
				sheetData.add(data);
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (fis != null) {
				fis.close();
			}
		}
		showExelData(sheetData);
	}

	private static void showExelData(List sheetData) {
		//
		// Iterates the data and print it out to the console.
		//
		for (int i = 0; i < sheetData.size(); i++) {
			List list = (List) sheetData.get(i);
			for (int j = 0; j < list.size(); j++) {
				Cell cell = (Cell) list.get(j);
				if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
					System.out.print(cell.getNumericCellValue());
				} else if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
					System.out.print(cell.getRichStringCellValue());
				} else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
					System.out.print(cell.getBooleanCellValue());
				}
				if (j < list.size() - 1) {
					System.out.print(", ");
				}
			}
			System.out.println("");
		}
	}
}

Ejecutamos y comprobamos que ha leído nuestro archivo Excel.

resultado_ejecución_leer_excel_java

 

 

 

 

 

 

Ejemplo de escribir en un Excel que se guarda en la ruta del proyecto.

package leerXLS;

import java.io.FileOutputStream;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class EjemploCrearExcel {

    /**
     * Crea una hoja Excel y la guarda.
     * 
     * @param args
     */
   
	public static void main(String[] args) {
        // Se crea el libro
        HSSFWorkbook libro = new HSSFWorkbook();

        // Se crea una hoja dentro del libro
        HSSFSheet hoja = libro.createSheet();

        // Se crea una fila dentro de la hoja
        HSSFRow fila = hoja.createRow(0);

        // Se crea una celda dentro de la fila
        HSSFCell celda = fila.createCell((short) 0);

        // Se crea el contenido de la celda y se mete en ella.
        HSSFRichTextString texto = new HSSFRichTextString("hola mundo");
        celda.setCellValue(texto);

        // Se salva el libro.
        try {
            FileOutputStream elFichero = new FileOutputStream("holamundo.xls");
            libro.write(elFichero);
            elFichero.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

Notas:

  • Workbook crea el Excel con el que vamos a trabajar (tanto para leer como para crear uno nuevo).
  • HSSFSheet son las Hojas del Excel, como mínimo un Excel debe de tener al menos una hoj.a
  • HSSFRow son las filas de la hoja del Excel.
  • HSSFCell son las celdas de la celda/columna.
Publicado en JAVA | Etiquetado | 19 comentarios