jueves, 11 de diciembre de 2008

Codificación MD5 en Java

El siguiente trozo de código permite la codificación de un mensaje a su equivalente en md5. El mensaje original se encuentra en el String mensaje, y el resultado codificado queda almacenado en el String mensajeMD5, que en este código se muestra en pantalla al final.
String mensaje = "Esto es una prueba de MD5";
String mensajeMD5 = "";

try
{
MessageDigest messagedigest = MessageDigest.getInstance("MD5");
messagedigest.update(mensaje.getBytes());
byte[] md5_bytes = messagedigest.digest();

for(byte b: md5_bytes)
{
int c1 = ((b & 0xF0) >> 4);
int c2 = ((b & 0x0F));
if(c1>9)
c1+='A'-10;
else
c1+='0';

if(c2>9)
c2+='A'-10;
else
c2+='0';

mensajeMD5 += (char)c1;
mensajeMD5 += (char)c2;
}

}
catch(Exception e)
{
System.out.println("ERROR: No se ha podido realizar la codificación");
}

System.out.println(mensajeMD5);

miércoles, 10 de diciembre de 2008

Insertar campos de entrada en OpenOffice

En ocasiones puede ser interesante que crear un nuevo documento a partir de una plantilla se pregunte a través de ventanas de diálogo por algunos valores que se utilizarán para rellenar datos del documento. Por ejemplo, el número de fax del destinatario en una plantilla de fax.

Esto es posible hacerlo a través del menú Insertar > Campos > Otros > Pestaña Funciones > Campo de entrada.


En el cuadro de texto Indicación se debe escribir un texto que haga referencia al dato que se solicita, por ejemplo, "Fax destinatario".

Al hacer clic en el botón Insertar, se muestra otra ventana de diálogo donde se escribirá un texto que aparecerá en el lugar donde se desee incluir el dato que posteriormente se introducirá.


Al cerrar las ventanas de diálogo debe aparecer en el texto sobre un fondo gris el campo de entrada que se ha creado.

Haciendo clic sobre la zona sombreada se abrirá el cuadro de entrada donde se puede escribir el nuevo valor.

Así mismo, al guardar el documento como una plantilla, al crear un documento basado en ella se abrirán automáticamente los cuadros de entrada que se hayan creado, solicitando los datos necesarios para rellenar el documento.

Instalar nuevas plantillas en OpenOffice

En la página de extensiones de OpenOffice se pueden descargar plantillas para utilizarlas a la hora de crear nuevos documentos basados en ellas.
Las hay disponibles en varios idiomas, y en español se puede encontrar el Professional Template Pack - Spanish.


Tras descargar (haciendo clic en Get it!) ese archivo (Sun_ODF_Template_Pack_es.oxt) debemos instalarlo en OpenOffice. En Windows se puede realizar esta operación simplemente haciendo doble clic sobre el archivo descargado. En cualquier caso siempre se puede hacer desde el mismo OpenOffice en el menú Herramientas > Administrador de extensiones.


En el cuadro de diálogo que aparece debemos hacer clic en el botón Agregar, con lo que se abre una ventana donde podemos seleccionar el archivo descargado anteriormente.

Una vez seleccionado el archivo nos preguntará si deseamos instalar la extensión sólo para el usuario que tenemos en el ordenador o para todos los usuarios del mismo (habrá que tener en cuenta los permisos de los que disponemos).


Según el paquete de extensiones que estemos instalando nos puede aparecer un contrato de uso de la misma que debemos aceptar para poder usarlo.

Una vez finalizado el proceso debe aparecer la extensión en el administrador.


Podemos observar en esa misma ventana que nos ofrece la posibilidad de desactivar temporalmente la extensión instalada o incluso eliminarla.

Tras cerrar la ventana del administrador de extensiones, podemos comprobar las plantillas instaladas en el menú Archivo > Nuevo > Plantillas y documentos.

Antes:
Después:
Además del paquete mencionado existe otro recomendable que es el Professional Template Pack II - English pero hasta la fecha no está disponible en español, pero se pueden utilizar sus plantillas modificando los términos que no se deseen en inglés.

Editar documentos con diferentes estilos de página en OpenOffice Writer

Editar paginas consecutivas con diferentes estilos es bastante sencillo en OpenOffice.org; a manera de ejemplo realizaremos un documento o informe técnico que tiene las siguientes características:

  • Página uno, sin numeración, sin pie de página ni encabezado y con características de título del Informe.
  • Páginas derechas, con numeración, autor y título ajustados a la derecha en el pie de página.
  • Páginas izquierdas, con numeración, autor y titulo ajustados a la izquierda en el pie de pagina.
  • Páginas finales del documento o Índice Alfabético, en formato predeterminado.

Para poder poner en práctica esta técnica, debemos contar con un documento de varias páginas o, en su defecto, insertaremos sucesivos saltos de página mediante la pulsación sucesiva de [Ctrl + Intro].

Para realizar este esquema se procede paso a paso de la siguiente manera:

  • Activamos el estilista [F11] y seleccionamos Estilos de página (4º icono del estilista) con la opción "Todos" seleccionada en el cuadro combinado inferior; se deben ver los estilos "Primera Página", "Página izquierda", "Página derecha" y "Predeterminada".
  • Realizaremos los ajustes necesarios en cada estilo, pulsando sobre ellos el botón secundario y seleccionando "Modificar":
    • Estilo "Primera Página":
      Organizador => Estilo siguiente: "Página derecha"
      Pie de Página => "Activa pie de página" desactivado
    • Estilo "Página derecha":
      Organizador => Estilo siguiente: ?Página izquierda?
      Pie de Página => "Activa pie de página" activado
    • Estilo "Página izquierda":
      Organizador => Estilo siguiente: "Página derecha"
      Pie de Página => "Activa pie de página" activado
  • A continuación, nos desplazamos al principio del documento y aplicamos el estilo "Primera página", pulsando doblemente sobre la entrada correspondiente en el estilista.
  • Avanzamos hasta la página siguiente; observaremos que OpenOffice.org automáticamente ha cambiado el estilo a "Página derecha" (en la barra de estado aparece numerada como 3; la 2 no existe). Escribiremos la información deseada en el pie de página y lo alinearemos a la derecha
  • Avanzamos hasta la siguiente; comprobamos que ahora ya es una "Página izquierda". Escribimos el pie de página deseado, y alineamos el párrafo a la izquierda.
  • A medida que vayamos avanzando páginas, veremos que éstas se alternan, quedando los respectivos pies de página a izquierda y derecha sucesivamente.
  • Finalmente avanzamos hasta la ultima página del documento [Ctrl + Fin] (exactamente antes de iniciar el índice Alfabético, sin importar si está aplicado el estilo "página Izquierda" ó "página derecha"). Aquí no aplicaremos el estilo desde el estilista, pues nos modificaría todas las páginas con el mismo estilo que la actual. Simplemente iremos al menú Insertar => Salto manual => Salto de página => Estilo: Predeterminado.
  • Misión cumplida; podremos comprobar el resultado cómodamente, mediante el menú Archivo => Vista preliminar.

Este proceso de simple intercalación a voluntad y de acuerdo a cualquier requerimiento de formato en cualquier documento, podemos efectuarlo con toda la gama de estilos de página y párrafo de que dispongamos en nuestro sistema, incluyendo si se desea manejar estilos de página/párrafo con dos, tres, cuatro, etc columnas.

Como último punto es importante recordar que los estilos usados en un documento son parte integral del mismo, y sus modificaciones y ajustes son sólo pertinentes para el archivo correspondiente.

Fuente: Superalumnos.net

OpenOffice: Índice de contenidos en el blog

Numerar capítulos y trabajar con estilos de encabezado en OpenOffice Writer

Uso de estilos de encabezado

Como casi todo en Writer, vamos a resolverlo con estilos. Ya vienen predefinidos unos estilos (Encabezado 1, Encabezado 2, etc...) que podemos usar directamente o redefinir a nuestro gusto.

Para redefinir los estilos, abríremos la ventana del estilista pulsando F11 o mediante el menú Formato -> Estilo y formato. En la lista de estilos seleccionamos el que deseemos modificar, y en el menú contextual (pulsando el botón secundario del ratón) tenemos la opción de Modificar, donde podremos cambiar cualquier atributo del estilo.

el estilista de Writer

De esta manera quedarán a nuestro gusto los estilos Encabezado 1, Encabezado 2, etc... para que los apliquemos a nuestro gusto en capítulos, subcapítulos, etc. en nuestro documento.. También podríamos haber creado nuevos estilos, pero todo resultará más fácil si lo hacemos con los estilos que ya están orientados a esa tarea.

Numeración de capítulos

Para numerar los capítulos no tenemos más que ir al menú Herramientas -> Numeración de Capítulos, donde para cada uno de los niveles de esquema de nuestro documento, asignaremos el estilo correspondiente (si hemos utilizado los predefinidos, ya estarán correctamente coordinados), y decidiremos si deseamos o no numerarlo, con qué estilo, separadores, primer número, etc.

el diálogo para numeración de capítulos

Al aceptar el diálogo veremos como los capítulos de nuestro documento ya estarán perfectamente numerados.

Capítulos en Encabezado y pie de página

Haber procedido de la manera indicada tiene beneficios adicionales. Si deseamos que aparezca el nombre del capítulo, el número o ambos en el encabezado de página, basta con abrir el diálogo de Campos mediante el menú Insertar -> Campos -> Otros.

En el cuadro de diálogo, seleccionamos la pestaña Documento, como Tipo de campo seleccionamos Capítulo y en la lista Formato podremos seleccionar la apariencia deseada. También podremos seleccionar el Nivel del cual deseamos tomar los datos.

el diálogo de inserción de campos

Pero no acaban aquí las ventajas de trabajar con estilos de encabezado...

Índices y tablas de contenido

Podemos crear la tabla de contenido de nuestro documento dirigiéndonos al menú Insertar -> Índice -> Índices.
En la pestaña Índice del diálogo emergente, seleccionaremos el título del índice, tipo de índice (en el caso que estamos tratando, Índice de contenido) y el número de niveles que deseamos que aparezcan en el índice.

diálogo de índices

En la pestaña Entradas del diálogo, para cada nivel, decidiremos la estructura de nuestro índice. Para ello, Writer nos provee de una muestra constituida por unos botones con pequeños cuadros de texto vacíos entre ellos; apuntando con el cursor encima de ellos, veremos que simbolizan el número de capítulo, el nombre del capítulo, el número de página, etc.

También disponemos de un botón Hiperenlace que nos permitirá insertar vínculos en la tabla de contenido para que nuestro documento sea navegable desde el índice. Simplemente debemos poner el punto de inserción en los cuadritos de texto en la posición deseada para inicio y fin del vínculo, y pulsando el botón Hiperenlace para cada uno de ellos, nos definirá el vínculo para la entrada del índice. Podemos ver la apariencia que tendrá activando la casilla Previsualización.

organizando las entradas del índice

¿Y dónde está la vista Esquema en Writer?

Para finalizar este repaso a los beneficios de trabajar con estilos de encabezado en Writer, veremos como en Writer disponemos de las mismas funcionalidades que la vista Esquema y el Mapa del documento que tenemos en Word.
Para disfrutarlas, abriremos la ventana del Navegador pulsando F5 o mediante el menú Editar -> Navegador.

El Navegador es una herramienta exclusiva de Writer que nos permitirá, entre otras cosas:

  • desplazarnos rápidamente en documentos largos, al estilo del panel Mapa del documento de Word; para ello simplemente, hacer doble clic en el encabezado deseado.
  • reorganizar la estructura de nuestro documento, cambiando los niveles de capítulos y su posición relativa, al modo de la vista Esquema de Word; lo comprobaréis seleccionando el encabezado deseado y pulsando sobre los botones del propio navegador: Subir capítulo un nivel, Bajar capítulo un nivel, Aumentar nivel y Disminuir nivel. Pulsándolos veréis como incluso se modifican los estilos de encabezado aplicados para adecuarse al nivel requerido.

Manuales OpenOffice

Getting Started with OpenOffice 3
  • Autor: OOoAuthors
  • Formato: odt y pdf
  • Páginas: 435
  • Capítulos:
    • Introducing OpenOffice.org
    • Setting up OpenOffice.org
    • Using Styles and Templates
    • Getting Started with Writer
    • Getting Started with Calc
    • Getting Started with Impress
    • Getting Started with Draw
    • Getting Started with Base
    • Getting Started with Math
    • Printing, Exporting, and E-mailing
    • Graphics, the Gallery, and Fontwork
    • Creating Web Pages
    • Getting Started with Macros
    • Customizing OpenOffice.org
    • Keyboard Shortcuts
    • Background Information
Manual de OpenOffice Writer
  • Autor: GUGLER
  • Formato: pdf
  • Páginas: 93
  • Capítulos:
    • Introducción a OpenOffice Writer
    • Ingreso y edición de texto
    • Formateo de texto
    • Manejo de Imágenes en el texto
    • Configuración de página e impresión de texto
    • Formateo avanzado de texto
    • Uso de Tablas
    • Combinar correspondencia
    • Configuración de OpenOffice Writer
    • Varios
Manual de OpenOffice Calc
  • Autor: GUGLER
  • Formato: pdf
  • Páginas: 38
  • Capítulos:
    • Introducción a OpenOffice Calc
    • Edición y formato de celdas
    • Manejo de filas y columnas
    • Uso de fórmulas y funciones
    • Crear gráficos
    • Insertar imágenes y símbolos
    • Herramientas
    • Imprimir en OpenOffice Calc
OpenOffice 2.x Guía de Calc
  • Autor:  FEISA/IAP
  • Formato: pdf/scribd
  • Páginas: 84
  • Capítulos:
    • Escribir texto
    • Columnas y filas
    • Formato de celdas
    • Formularios
    • Gráficos
    • Cómo imprimir
Manual de OpenOffice Impress
  • Autor: GUGLER
  • Formato: pdf
  • Páginas: 88
  • Capítulos:
    • Introducción a OpenOffice Impress
    • Uso del Asistente para presentaciones
    • Opciones de visualización en OpenOffice Impress
    • Manejo de texto y herramientas de dibujo en OpenOffice Impress
    • Manejo de imágenes en OpenOffice Impress
    • Manejo de estilos en OpenOffice Impress
    • Manejo de la presentación
    • Configuración de página e impresión de una presentación
    • Configuración de OpenOffice Impress
    • Varios

jueves, 4 de diciembre de 2008

SciTE: Editor de textos para programar

SciTE (Scintilla Text Editor) es un editor de textos especialmente preparado para desarrollar aplicaciones soportando multitud de lenguajes de programación. Destacan las siguientes características:
  • Multiplataforma: Windows y Linux.
  • Descarga libre y gratuita.
  • Código fuente disponible.
  • Resaltado de sintaxis para multitud de lenguajes de programación.
  • Sangrado automático.
  • Compilación y ejecución integrada en el editor (aunque parece que no funciona bien la ejecución de programas con entrada por teclado en Linux).
  • Posibilidad de cambiar el idioma.
  • Exportación del código con formato resaltado a HTML, PDF, RTF, etc.
  • Posibilidad de añadir extras de configuración.
  • Escritura rápida de código mediante abreviaturas.
Abreviaturas
Se puede configurar SciTE de manera que al escribir en el editor una palabra abreviada seguido de la pulsación de teclas Ctrl+B, dicha abreviatura se trasforme en un texto más largo. Por ejemplo, se podría escribir algo como main y convertirlo en la declaración del método principal en Java: public static void main(String args[]) incluso con sus llaves correspondientes.
Para configurar las abreviaturas se deben seguir los siguientes pasos:
  1. En la ventana de SciTE abrir el menú: Options > Open Abreviations File.
  2. Se debe escribir cada abreviatura indicando el nombre que se le quiere asignar seguido del signo igual (=) y del texto por el que se debe sustituir la abreviatura. por ejemplo:
    main=public static void main(String args[])
  3. Se pueden utilizar caracteres especiales para realizar determinadas acciones:
    \n = Salto de línea (como pulsar Intro)
    \t = Tabulador
    | (AltGr+1) = Lugar donde se desea que aparezca el cursor de escritura de texto.
  4. Guardar los cambios: File > Save (o utilizar el botón de guardar).
De esta manera, y según el ejemplo empleado, al escribir main seguido de Ctrl+B se tranforma en la declaración completa del método main en Java.

Algunas abreviaturas para Java y Pseudocódigo:
class=public class |?????\n{\n\t\n}
main=public static void main(String args[])\n{\n\t|\n}
println=System.out.println("|");
print=System.out.print("|");
if=if(|)\n{\n\t\n}\nelse\n{\n\t\n}
for=for(int i=0; i<|?????; i++)\n{\n\t\n}
do=do\n{\n\t\n}while(|);
while=while(|)\n{\n\t\n}
switch=switch(|)\n{\n\tcase ???:\n\t\tbreak;\n\tdefault:\n}
scan=import java.util.Scanner;\n
tecla=Scanner teclado = new Scanner(System.in);\n
pseudo=PROGRAMA |???\nMÓDULO: Principal\nINICIO\n\tDATOS\n\t\tVARIABLES\n\t\t\t\n\tALGORITMO\n\t\t\nFIN
si=Si |\n\t\nSi_no\n\t\nFin_si
segun=Según_valor |\n\t???:\n\t\t\nFin_según_valor
para=Para i de 0 a |??? con inc = 1\n\t\nFin_para
mientras=Mientras |???\n\t\nFin_mientras

martes, 2 de diciembre de 2008

Cronometrar un proceso en Java

Se utiliza la clase Calendar por lo que hay que añadir al principio del código:
import java.util.Calendar

Cuando se quiere empezar a contar el tiempo se introduce algo como esto:
Calendar ahora1 = Calendar.getInstance();
long tiempo1 = ahora1.getTimeInMillis();
Es decir, se crea una instancia (getInstance) de la clase Calendar que se ha llamado ahora1 en este ejemplo, y una variable de tipo long que se ha llamado tiempo1 que guarda la hora actual (getTimeInMillis) en milisegundos.

A continuación se meterá el código de lo que se quiera cronometrar.

Después de eso será el momento de obtener de nuevo la hora en milisegundos para calcular la diferencia posteriormente:
Calendar ahora2 = Calendar.getInstance();
long tiempo2 = ahora2.getTimeInMillis();

El tiempo tardado será la diferencia de la hora tomada al final (tiempo2) y la tomada al principio (tiempo1), que se guardará en una variable de tipo long llamada, por ejemplo, diferencia:
diferencia = tiempo2 - tiempo1;
Esta variable contendrá el tiempo de diferencia en milisegundos, por lo que si se muestra tal cual en pantalla aparecerá el número de milisegundos.

Para mostrar el tiempo en otro formato como horas:minutos:segundos habrá que hacer las operaciones matemáticas correspondientes.

Ejemplo:
/** Programa que calcula el tiempo que tarda el usuario
en pulsar Intro desde que se inicia el programa */


//Se debe importar java.util.Scanner y java.util.Calendar
// por lo que se puede usar también java.util.*
import java.util.*;

public class tiempo
{
public static void main(String args[])
{
long t1, t2, dif;
String cad;
Scanner teclado = new Scanner(System.in);

//Se toma la hora en el inicio del programa
Calendar ahora1 = Calendar.getInstance();
t1 = ahora1.getTimeInMillis();

System.out.println("Empieza a contar el tiempo.");
System.out.print("Pulsa Intro para terminar.");

//Se espera a que el usuario pulse intro
cad = teclado.nextLine();

//Se vuelve a tomar la hora una vez que ha pulsado Intro
Calendar ahora2 = Calendar.getInstance();
t2 = ahora2.getTimeInMillis();

//Se calcula la diferencia de tiempo
dif = t2 - t1;

//Se muestra en pantalla la diferencia de tiempo obtenido
System.out.println("Has tardado: " + dif + " milisegundos");
System.out.printf("Equivale a: %.3f segundos", (double)dif/1000);
}
}
 

Contador de visitas