miércoles, 10 de junio de 2009
Algunos indices en Oracle
Este es el tipo de índices normal de Oracle, estos índices son los que más se utilizan, están organizados en una estructura de árbol B y por lo general se utilizan para las llaves primarias de manera que se pueda hacer una búsqueda por llave más rápido.
Index Organized Tables
Este es un tipo de índice que nació con la versión 8 de Oracle y se utiliza por lo general para aplicaciones Web debido a que por lo general estas aplicaciones hacen búsquedas de un solo campo por medio de la llave primaria.
Una IOT se define desde su creación, agregando ORGANIZATION INDEX al final de la sentencia CREATE TABLE, y lo que hace es que los datos de la tabla se van guardando dentro del índice, entonces cuando uno hace un SELECT los datos salen ordenados.
Bitmap Index
Los índices de bitmap son muy recomendables en columnas en las cuales los valores ser repiten y representan una división en categorías, por ejemplo columnas como género, estado civil, etc. También son muy recomendables cuando no cambian mucho, aunque sean muy variantes.
Bitmap Join Index
Este tipo de índice, es muy útil en tablas que están relacionadas y hay muchas consultas que hacen Join de estas tablas, al igual que el bitmap index normal, solo se recomienda cuando la cardinalidad de los valores de la columna no es muy grande.
Aparte este tipo de índice, solamente se recomienda en Data Warehose porque son muy rápidos haciendo joins y devuelven los resultados en muy poco tiempo, por el contrario al hacer inserts y updates, tienen consecuencias en el rendimiento.
Domain Index
Estos índices se utilizan para un dominio especializado, se utiliza mucho con dominios de texto o imágenes, ya que en estos índices se utilizan los indextype donde se puede especificar la implementación.
Cluster Index
Este índice consiste en unas tablas que comparten los mismos bloques de datos, utilizan un valor llamado clúster key value que es el valor de las columnas involucradas para una fila en específico.
E clúster key sirve para guardar juntas las filas que tengan el mismo valor y solo guarda una vez cada valor distinto.
Hash Cluster Index
Este índice es muy parecido al anterior, pero se aplica una función de hash al cluster key para poder encontrar las demás filas con el mismo cluster key.
Partitioned tables
Cuando las tablas crecen mucho, acceder a ellas puede significar un bajo rendimiento, por eso surge el concepto de tablas particionadas que es dividir las tablas en partes independientes, se le puede sacar backup independientemente, el rendimiento de las consultas puede aumentar significativamente, y se pueden hacer transacciones paralelas en particiones diferentes.
Es común que las diferentes particiones, se coloquen en un tablespace diferente para optimizar aun más el rendimiento.
Function Based Index
Este tipo de índice es muy sencillo pero muy útil y puede llegar a mejorar los tiempos de respuesta increíblemente. Este índice no es más que un índice B-Tree pero sobre una función, por ejemplo para las consultas dadas para este proyecto se utiliza mucho la función upper entonces cree un índice B-Tree sobre la función upper del campo nombre, entonces en índice están los datos ya con la función upper aplicada.
Patitioned Index
Este es un índice para el cual se definen particiones, exactamente igual que cuando se particiona una tabla, esto se hace con el objetivo de mejorar el tiempo de acceso a los datos cuando el índice es demasiado grande.
domingo, 5 de octubre de 2008
COECYS 2008
Como todos los años la escuela de ciencias y sistemas de la Facultad de Ingeniería organiza el congreso de estudiantes de ciencias y sistemas COECYS, este año el tema estuvo muy interesante, fue: Calidad en el desarrollo y administración de sistemas informáticos.Asistí a muchas conferencias pero las que me parecieron interesantes y aplicables al comercio electrónico fueron:
ITIL
Seguridad Informática
Minería de datos
Arquitecturas Web
miércoles, 30 de julio de 2008
Feeds Atom y RSS
Un feed es un formato de datos con el objetivo de informar sobre la actualización en un sitio web, generalmente se usa lenguaje XML y es muy común en los blogs.
La forma de funcionar de un feed es que los lectores se suscriben por medio de un agregador o lector de feeds y a través de este son notificados cuando existe nuevo contenido en el blog.
Gracias a los agregadores o lectores de feeds se puede obtener resúmenes de todos los sitios que se desee y no es necesario visitarlos todos.
Atom
Es uno de los formatos para feeds, esta basado en XML. Fue desarrollado como una alternativa a RSS.
RSS
Really Simple Syndication o Sindicación Realmente Simple
Es el formato mas utilizado para feeds, también esta basado en XML con las especificaciones del W3C.
Tanto los archivos Atom como RSS se reescriben automáticamente cuando se produce alguna actualización en los contenidos del sitio web.
Actualmente todos los navegadores y lectores de feeds soportan ambos formatos.
Este es un video donde se explica muy bien como se usa esto y que ventajas tiene.
domingo, 13 de enero de 2008
Que es el PMBOK?
El PMBOK reconoce 5 procesos básicos y 9 áreas de conocimiento. Los cinco grupos de procesos básicos son:
1. Inicio,
2. Planificación,
3. Ejecución,
4. Control y Monitoreo, y
5. Cierre.
Las nueve áreas del conocimiento mencionadas en el PMBOK son:
1. Gestión de la Integración de Proyectos,
2. Gestión del Alcance en Proyectos,
3. Gestión del Tiempo en Proyectos,
4. Gestión de la Calidad en Proyectos,
5. Gestión de Costos en Proyectos,
6. Gestión del Riesgo en Proyectos,
7. Gestión de Recursos Humanos en Proyectos,
8. Gestión de la Comunicación en Proyectos, y
9. Gestión de la Procura (Logística) en Proyectos.
Podemos descargar la version en español en HACKERUNA
Software libre para gestion de proyectos
Los que conocen este blog saben que principalmente es sobre software libre así que me pareció muy buena idea poner esta lista de software libre para gestión de proyectos que recopilaron en la oficina de gestión de proyectos:
Blogs de interes en gestion de proyectos
Todo lo necesario para sacar tu proyecto adelante
Areas de gestion de un proyecto
– Gestión del Alcance: asegurar que el proyecto incluye todos los trabajos requeridos y sólo éstos.
– Gestión de los Tiempos: asegurar la realización del proyecto dentro de los plazos.
– Gestión de los Costes: asegurar que el proyecto es completado dentro del presupuesto previsto.
– Gestión de la Calidad: asegurar que el proyecto satisface los requisitos, es decir, las necesidades por las cuales fue emprendido.
– Gestión de los Recursos Humanos: conseguir el uso más efectivo de las personas que participan en el proyecto.
– Gestión de las Comunicaciones: asegurar en tiempo y forma adecuados la generación, recopilación, diseminación, almacenamiento y localización final de la información del proyecto.
– Gestión de Riesgos: identificar, analizar y dar respuesta a los riesgos del proyecto; maximizar la probabilidad y consecuencias de eventos positivos y minimizar las de eventos negativos.
– Gestión de Adquisiciones: adquirir productos (bienes y/o servicios) de fuera de la organización que realiza el proyecto.
jueves, 10 de enero de 2008
Eligiendo un buen equipo de proyecto
2. Definir los perfiles profesionales: es necesario definir los perfiles profesionales que se necesitan para llevar a cabo el proyecto. Los perfiles profesionales deben combinarse para que permitan realizar tareas en grupo de cierta complejidad.
3. Seleccionar el personal: a la hora de formar un equipo, el coordinador del proyecto seleccionará a las personas teniendo en cuenta los diferentes perfiles profesionales necesarios y la disponibilidad de dichas personas en la organización. Este proceso nos lleva a un concepto clave en la nueva organización de la empresa: la gestión por competencias. Competencias son el conjunto de habilidades, cualidades y aptitudes que tienen las personas y que les predisponen a realizar una serie de actividades con un buen nivel de desempeño.
4. Distribuir las tareas: la distribución de tareas se hará en función de las competencias propias de cada individuo. Se debe conocer a fondo qué tipo de competencias está presente en cada uno de los miembros del equipo de manera que pueda gestionarse de la mejor forma la contribución personal al proyecto del equipo.
5. Identificarse con el proyecto: la identificación de cada miembro con el proyecto de equipo debe ser un proceso que se inicie desde el primer momento. La clave del éxito está en conseguir un equipo humano que se sienta orgulloso de pertenecer a la organización.
6. Empezar a trabajar: sí, esto también es necesario. Es imprescindible la creación de un clima de trabajo adecuado en donde estén presentes la cooperación y el respeto, de forma que cada individuo contribuya de forma positiva al proyecto.
Fuente: IAAP publicado por Jose Esterkin
Cliente-Proyecto
Las empresas pueden ser innovadoras tomando como referencia y orientación estratégica el cliente. Y de eso se trata, de cómo hacer posible que la innovación se desarrolle en las empresas cuando éstas se plantean de/hacia/desde el cliente. De lo que realmente se trata es de transformar sus necesidades en oportunidades y éstas en productos y servicios, que estén equilibrados en sus relaciones de coste-beneficio y se presten en las mejores condiciones posibles, teniendo en cuenta la escasez relativa de medios y el uso alternativo de los mismos.
También se trata de incorporar en la empresa métodos y técnicas que si no estaba realmente orientada al cliente, no precisaba mucho o muy poco o nada. Por ejemplo, se trata de conocer al cliente, se trata de saber analizar, de saber estudiar las necesidades, modelizar e interpretar la realidad, se trata también de saber investigar no sólo los mercados, sino también el mundo interno, ahora que ya hemos aprendido las técnicas y métodos necesarios. Innovar no es sólo hacer investigación de mercados, sino constituir plataformas que permitan un conocimiento “casi automático” de los clientes y sus necesidades. Y se trata de combinarlas con el mercado, saber organizarlas con tus propias logísticas y formas productivas y convertirlas just-in-time en la mejor relación coste-beneficio.
Hay empresas que se mueven fuertemente en este apartado, que saben manejar la información, que analizan constantemente el cliente y sus comportamientos, que proyectan su actividad teniendo muy en cuenta esta realidad. Hay otras sin embargo, que prefieren proyectarse desde sí mismas, suelen ser más idealistas y aventureras, pero pueden ser también sólidas, siempre que encajen con el mercado o lo creen, lo modelen a su forma de ver las cosas, a su propio proyecto. Hay otras, muy pocas, que integran ambas facetas.
Visto en: www.robertocarballo.com
miércoles, 9 de enero de 2008
Pensamiento estratégico gestión proyectos
El conjunto de acciones para lograr la adaptación al medio, de modo tal que permita lograr los objetivos propios integrando acciones de máxima que nacen de las oportunidades del entorno, con las de mínima que fundamentalmente dependen del propio proyecto.
La necesidad e una estrategia surge con la toma de decisiones, las decisiones podemos tomarlas es estos tres contextos básicamente:
- Con certeza: el decisor conoce la situación del contexto con exactitud.
- Con riesgo: el decisor no conoce cuál es la reacción del contexto pero sí conoce cuáles son las probables reacciones de dicho contexto.
- Con incertidumbre: el decisor no conoce cuál es la reacción del contexto.
Con el simple hecho de identificar en que contexto nos encontramos, podemos anticiparnos a muchos problemas y tratar de minimizarlos.
El planeamiento estratégico de un proyecto consiste en determinar la dirección que debe tener un proyecto para conseguir sus objetivos.
Podemos hacer un círculo de programación estratégica en la gestión del proyecto que básicamente seria: formulación de la estrategia - ejecución de la estrategia - evaluación de la estrategia.
En la visión estratégica es típico usar análisis del tipo del FODA (Fortalezas, Oportunidades, Debilidades y Amenazas) esta herramienta nos serviría mucho en cada proyecto, en la planeación de la estrategia puede usarse solo el análisis externo, es decir oportunidades y amenazas, esto nos ayudara a anticiparnos y aprovechar las oportunidades así como tener planes de contingencia para las amenazas. En la etapa de la Evaluación estrategia podemos centrarnos más en el análisis interno es decir Fortalezas y Debilidades, para evaluar si se pudieron superar las amenazas y aprovechar las oportunidades. Durante la ejecución es recomendable realizar una matriz FODA es decir relacionar las fortalezas con las oportunidades (FO) las fortalezas con las amenazas (FA) y las debilidades con las oportunidades y las amenazas también (DO y DA) por si es necesario redefinir la estrategia.
Gestión un Proyectos de Innovación
Estrategias globales del proyecto de innovación
Hay muchos enfoques que puede tener un proyecto de innovación, debemos tratar de equilibrarlos según el contexto de cada proyecto de innovación. Estos enfoques podrían ser:
- Aprendizaje: Se debe usar este enfoque cuando el entorno sea incierto, bajo este enfoque las competencias de gestión del conocimiento son esenciales.
- Velocidad: Conocido también como “time to market”, Su importancia aumenta en aquellos casos en los que llegar primero al mercado supone una importante ventaja competitiva.
- Mercado: Cuando se tiene incertidumbre en cuanto al mercado y hay que analizar las necesidades potenciales entonces.
- Tecnología: Más tiempo y recursos deben ser dedicados a perfeccionar la base tecnológica y a comprender sus implicaciones potenciales.
- Cuantitativo: Se basa en una preponderancia en la utilización de instrumentos financieros y de control de costos. Este enfoque es típico de industrias maduras donde el ahorro es una prioridad.
- Proceso: Se basa en la racionalización y sistematización del proyecto de innovación a través de herramientas y métodos estandardizados. Es necesario en todos los proyectos de innovación.
Como podemos observar, todos estos enfoques hay siempre incertidumbre, por eso es necesaria la planeación estratégica analizando las probables reacciones del contexto, lo que hace mas importante aun saber equilibrar estos enfoques.
La preparación inicial para la gestión de proyectos de innovación
Lo más importante para la preparación de un proyecto de innovación, es el liderazgo, dependiendo de la magnitud del proyecto o si se administra un programa de proyectos o subproyectos, se tiene que organizar un comité de dirección o asignar a un encargado del proyecto. Siempre hay que tener en cuenta la gestión del conocimiento, los lideres del proyecto tienen que poner un especial cuidado en esto, para estar atentos a ideas creativas que puedan surgir a lo largo del proyecto.
La gestión de proyectos de innovación
Para gestionar adecuadamente un proyecto de innovación, podríamos identificar las siguientes etapas en el proyecto: generación de ideas – selección y definición – planificación – ejecución – cierre – revisión, después de esto podríamos aplicar un podo la visión de mejora continua y a partir de documentación de la revisión y las demás etapas, aprender y estandarizar para futuros proyectos aunque sean muy diversos y diferentes los proyectos aprenderemos mucho.
La gestión del conocimiento y del aprendizaje durante los proyectos de innovación
Lo esencial es estudiar y promover las condiciones organizacionales que hacen posible el aprendizaje y la mejora continua. La innovación se basa precisamente en el conocimiento bien gestionado a todos niveles, una innovación empieza con una idea creativa que muchas veces es la integración de varias ideas ya existentes y durante la ejecución y planeación del proyecto, pueden surgir muchas ideas nuevas si se conoce bien el contexto.
Conceptos Básicos
Es un esfuerzo temporal emprendido para crear un producto o servicio único.
Etapas de un proyecto:
- Planificación: Etapa de un proyecto en la que se valoran las opciones, tácticas y estrategias a seguir teniendo como indicador principal el objetivo a lograr.
- Ejecución: Etapa de acción, en la que ocurre propiamente el proyecto.
- Evaluación: Etapa final de un proyecto en la que éste es revisado, y se llevan a cabo las valoraciones pertinentes sobre lo planeado y lo ejecutado, así como sus resultados, en consideración al logro de los objetivos planteado.
Gestión de proyectos:
Es la aplicación de conocimientos, habilidades, herramientas y técnicas para proyectar actividades destinadas a satisfacer las necesidades y expectativas de los beneficiarios de un proyecto.
Programa de proyectos:
Es un grupo de proyectos gestionados de forma coordinada para obtener unos beneficios que no serían posibles si se gestionan individualmente.
Subproyecto:
Es un componente de un proyecto, que resulta más fácil de gestionar.
Fuente: Wikipedia
domingo, 11 de noviembre de 2007
Controlar leds desde el puerto paralelo con Java
Primero que todo tenemos que instalar la javacomm API
El gran dispositivo al que le quiero mandar información es un protoboard con 8 leds para que se enciendan cuando mande un 1 y se apaguen cuando mande un 0.
La construcción en el protoboard es muy sencilla:
Los pines 2-9 que son los del registro de 8 bits, los conectamos al lado positivo del los leds con una resistencia de 470 ohms el pin 25 a todas las patitas negativas de los leds, los pines 10-11 a tierra de una fuente externa y los pines 12, 13, 15 los conectamos a +5v de una fuente externa, estos son pines de estado, y lo que indican es que todo esta normal, para poder enviar los datos. Si no conectamos estos pines así, la API asumirá que hay algún problema y no se enviaran los datos, se quedara la aplicación congelada, en espera que cambie a estado normal. El programa para controlar los leds es este:
import java.io.*;Lo iomprtante en este programa es la linea:
import java.util.*;
import javax.comm.*;
/**
*
* @author juls
*/
public class PruebaLeds {
static CommPortIdentifier idPort;
static ParallelPort pPort;
static OutputStream salida;
private static void iniciarPuerto(String nombrePuerto) throws Exception {
try {
idPort = CommPortIdentifier.getPortIdentifier(nombrePuerto);
pPort = (ParallelPort) idPort.open("Control de Puertos en Java", 0x378);
salida = pPort.getOutputStream();
} catch (Exception e) {
throw new Exception(e.getMessage() + "\n\nLa aplicación se cerrará.");
}
}
public static void main(String args[]) {
try {
iniciarPuerto("/dev/parport0");
System.out.println("Puerto iniciado ...");
System.out.println("Preparandose para escribir en el puerto ...");
salida.write(255);
salida.close();
System.out.println("Escritura sobre el puerto exitosa.");
} catch (Exception e) {
System.out.println(e.getMessage());
System.exit(1);
}
}
}
salida.write(255);porque aqui es donde ponemos el numero que queremos escribir, 255 es en mayor numero que podemos enviarle ya que solo puede escribir 8 bits, con 255 encenderian los 8 leds.
Actualización: Este es el diagrama del circuito, solo puse 3 leds, en realidad pueden ser 8 del pin 2 al 9.
Instalacion de Java Communications API en Linux
Primero hay que copiar libLinuxSerialParallel.so a /usr/lib
Ahora hay que poner el comm.jar en nuestro classpath, si estamos usando algún IDE lo agregamos en las librerías que usa el proyecto o si no simplemente:
export CLASSPATH=$CLASSPATH:commapi/jar/commPor ultimo copiamos el archivo javax.comm.properties a: JDK/jre/lib. Con esto quedaría instalada la API para poderla usar, podemos probar con este ejemplo, que detecta los puertos disponibles:
import javax.comm.*;
import java.util.Enumeration;
public class Main {
public static void main(String args[]) {
Enumeration ports =
CommPortIdentifier.getPortIdentifiers();
while (ports.hasMoreElements()) {
CommPortIdentifier port =
(CommPortIdentifier)ports.nextElement();
String type;
switch (port.getPortType()) {
case CommPortIdentifier.PORT_PARALLEL:
type = "Paralelo"; //Se ejecuta si el puerto es paralelo
break;
case CommPortIdentifier.PORT_SERIAL:
type = "Serial"; //Se ejecuta si el puerto es serial
break;
default:
type = "Desconocido/Error"; //No deberia de suceder o el puerto esta dañado
break;
}
System.out.println("Nombre del puerto: "+port.getName() + " - " + type);
}
}
}
Fuente: http://java.sun.com/products/javacomm/
http://tuxtor.shekalug.org/?p=75
lunes, 30 de abril de 2007
Java Media Framework
Para entender mejor la arquitectura de JMF en la página de Java nos muestran esta imagen, que es muy ilustrativa y nos ayuda a comprender mejor esta API.
La videocámara y el casete de video que se muestran en esta imagen, como fuente de multimedia bien podría ser un archivo mpg y los dispositivos de salida que en la imagen son una televisión y unas bocinas para nosotros serian el applet en el cual vamos a presentar los contenidos multimedia. Lo único que nos haría falta entonces seria el reproductor.La manera mas sencilla de poner un reproductor en nuestro applet es utilizando el MediaPlayer Bean.
Instanciamos un Media Player, asi:
MediaPlayer player = new javax.media.bean.playerbean.MediaPlayer():
Para decirle al player que archivo queremos reproducir utilizamos la siguiente linea:
player.setMediaLocation(dirección del archivo);
Para iniciar, detener o pausar la reproducción, usamos las siguientes líneas respectivamente:
player.start();
player.close();
player.stop();
Instalación de JMF en Windows
Podemos descargar el instalador de JMF en:
http://java.sun.com/products/java-media/jmf/2.1.1/download.html
Seguimos los pasos del instalador y al final tendremos los Jar de la API y unos ejemplos en: C:\Program Files\JMF2.1.1e y ya lo tenemos instalado, para empezar a utilizar JMF en nuestras aplicaciones solo tememos que incluir estos Jar en el CLASSPATH.
Utilización de JMF en JDeveloper
Para utilizar esta API en JDeveloper, lo único que debemos hacer es incluir todos los .jar que se instalaron en una librería nueva y agregarla a nuestro proyecto.
Plug-in para mp3
Lo podemos descargar en:
http://java.sun.com/products/java-media/jmf/mp3/download.html
Igual que JMF, solo seguimos la instalación, hay que indicarle donde tenemos nuestro JDK y nuestro JRE y listo, después reproducimos un mp3 como si fuera un mpg o cualquier otro archivo soportado por JMF.