viernes, 18 de diciembre de 2009

Analogias de SCM

Regreso dando algunas analogías de los elementos que vimos en un post anterior y hoy quiero dar algunas analogias para que queden claros dichos elementos:

Bóveda = Repositorio
- Repo es comun de activos digitales
- Almacena Artefactos
- Asegura Artefactos

Album Fotos = CodeLine
- Almacena historia de cambios Quien? Que? Cuando? Pq?
- Almacena cambios eficientemente (en el espacio)
- Reproduce cualquier versión (gracias a los negativos) de cualquiera

Construyendo Casa = Construyendo Sw
- Cambios requieren coordinación (maestro obra)
- Secuencia actividades en la construcción (workflow)

Viaje en el Tiempo = CodeLine
- Visitar código fuente de:
* Anoche
* Otra plataforma
* Un release de hace 5 años
- Configuración: grupo relacionado de artefactos.
Pq usar configuración?
* Administrar versiones de archivos y dirs
* Administrar areas de Trabajo (worckspace)
* Repdroducir configuraciones completas de sistema de sw
- Administración del area de Trabajo

Libro Varios Autores = Desarrollo Paralelo

Características similares:
- Crear nuevos archivos y directorios
- Modificar versiones existentes
- Acceder al mismo código
- Integrar sus trabajo

Administración Procesos
- Un proy de sw es un proyecto de construcción
- Administrar y coordinar las actividades de miembros

Administración de Builds
- Build: compilar, ejecutar pruebas de unidad y linkear
- Software Build, version completa de un sistema que ya es utilizable
- Builds que no funcionan solo bloquean el proceso
- Ejecutar builds optimizan procesos,


Exitos

lunes, 10 de agosto de 2009

Arquitectura de la Ontología

Luego de una gran pausa regreso ;) hablando un poco sobre las ontologias, un tema que se toca en el curso de Inteligencia Artificial.

A continuacion una imagen sobre la arquitectura de una Ontologia que se basa en la arquitectura de la Web Semántica en donde podemos encontrar los elementos básicos de una ontología como lo es XML & XML Schema, DFR & RDFSchema, Vocabularios, etc.



Exitos!!

viernes, 3 de julio de 2009

Ser Ingeniero es un Don !!!



Exitos para los que estamos estudiando Ingenieria!!!! definitivamente es un Don :P

martes, 30 de junio de 2009

Mi primer ABC en JPA

Hola q tal, hoy voy a mostrar un poco de codigo sobre JPA, el cual es un ORM muy facil y sencillo de utilizar.

Es un ABC ya que seran tres metodos que haran Altas (inserciones) Bajas (eliminaciones) Cambios (modificaciones) en la Base de datos, en este caso usaremos MySQL y NetBeans.

Altas:
Pues emezaremos con las inserciones a la base de datos, el codigo seria el siguiente:

public void addJugador(Jugador jugador) {
EntityManager em = getEntityManager();
try{
EntityTransaction entr=em.getTransaction();
entr.begin();
em.persist(jugador);
entr.commit();
} finally {
em.close();
}
}

Esto es solo si creamos con anterioridad un objeto tipo Jugador para darle persist, ahora en el caso de que tengamos que obtener los datos de algun formulario, podria ser el siguiente codigo:

public void addJugador() {
EntityManager em=emf.createEntityManager();
try{
EntityTransaction entr=em.getTransaction();
entr.begin();
Jugador newJugador=new Jugador();
jugador.setColor("Azul");
// o jugador.setColor(jTextField.getText());
jugador.setDescripcion("Este es un ejemplo.");
//o jugador.setDescripcion(jTextField2.getText());
em.persist(jugador);
entr.commit();
System.out.println("Ingreso exitoso ala base de datos.");
}
catch(Exception e){
System.out.println(e.getMessage());
}
finally{
em.close();
}
}


Bajas:
Para poder eliminar un objeto o bien una tupla de la base de datos.

public void removeJugador(Jugador jugador) {
EntityManager em = getEntityManager();
try{
EntityTransaction entr=em.getTransaction();
entr.begin();
Jugador deleteJugador = em.find(Jugador.class, jugador.getJugador());
em.remove(deleteJugador);
entr.commit();
} finally {
em.close();
}
}

Igual que en el anterior el objeto Jugador que se pasa por parametro puede tomarse de otro lado, un jTable, una Lista, etc.


Cambios:
Ahora para modifcar informacion podemos hacer lo siguiente:

public void updateJugador(Jugador jugador) {
EntityManager em = getEntityManager();
try{
EntityTransaction entr=em.getTransaction();
entr.begin();
Jugador changeJugador = em.find(Jugador.class, jugador.getJugador());
changeJugador.setColor("Verde");
changeJugador.setDescripcion("Una modificacion a la BD.");
entr.commit();
} finally {
em.close();
}
}


Por si lo necesitan, pueden descargar el archivo rar del siguiente link, seria grandioso ya que ahi podran encontrar lo siguiente:

- El script de la tabla de la base de datos que estaremos manipulando.
- El mapeo de la tabla al objeto Jugador.java
- El archivo que tiene los metodos del ABC.


Estoy pensando hacer mini videos tutoriales para poder mostrar un poco mas a detalle esto de JPA, ojala los pueda subir pronto ;)


Exitos!!!!!

domingo, 14 de junio de 2009

Procesadores de Lenguaje

Hoy vamos a tratar un tema importante, ya que nos ayudara a diferenciar a los distintos procesadores de lenguaje, algunos ejemplos de los tipos de procesadores, asi como una pequeña descripcion:


Definicion:
Los procesadores de lenguaje son todos los programas que a través de una entrada escrita en un lenguaje de programación pueden manipular herramientas de software y hardware de un computador. Estos procesadores de lenguaje se dividen en traductores e intérpretes.



Traductor:
Un traductor es un programa que recibe un código fuente y lo traduce a otro código, generalmente a un código objeto, sin perder su funcionamiento.

Interpretes:
Un intérprete es un programa diseñado para ejecutar instrucciones de un código determinado, no genera ningún tipo de código adicional, y es ejecutable.


Exitos!!!!

jueves, 28 de mayo de 2009

Robot NXT

Hoy les contare que en la universidad USAC se estan utilizando los robots lego NXT para varios cursos, especificamente en mi carrera es en el curso de Inteligencia Artificial, pero en otras carreras como Mecanica-Electrica tambien en cursos como Legunajes de Programacion Aplicados a Ingenieria Electrica (LPAIE), a continuacion les dejare un video de unos amigos de esta carrera, el proyecto consistio en realizar un laberinto para que un robotlego NXT encuentre la salida:




Exitos!!!

sábado, 16 de mayo de 2009

Que es GEANT?

Luego de una larga ausencia ( esto debido a que los finales y proyectos en la U han sido muy cansados), pero regreso con este tema, GEANT a continuacion una definicion y un comentario personal del tema.

Definicion
Red Avanzada de comunicación, esta nueva red cambia la forma de hacer investigaciones en Europa, es por ello que la llaman el futuro de las investigaciones, si nos imaginamos comparar resultados de dichas investigaciones realizadas en un solo cuarto versus comparar toda la información de las investigaciones en toda Europa, es un cambio total a la hora de "hacer ciencia", la red es tan amplia que se mencionan algunas investigaciones o tópicos que ya están a disposición de GEANT o GEANT esta a disposición de ellas, entre las que podemos mencionar:
- Radioastronomy (VLBI)
- Estructuras de Edificios
- Taxonomia (Natural History Museum)
- Meteorología

Pq se debería de desarrollar una red tipo GEANT en Guatemala?

No se si "desarrollar" seria la expresión correcta, o si mejor la cambiaríamos a "Implementar" ya que como se menciono tenemos el recurso pero a veces no lo aprovechamos por no saber los beneficios que esta nos trae, creo que el tener una red avanzada no solo seria un lugar donde publicar sino también buscar y comparar resultados u opiniones y siendo un poco mas ambiciosos podríamos comunicarnos con el resto del mundo y dar a conocer a Guate en otra faceta, la de Científica e Investigativa.

Exitos!!!

viernes, 24 de abril de 2009

Algoritmo para pasar un AFD hacer Analizador Lexico

Hoy escribire de como se puede mapear un AFD (Automata Finito Deterministico) hacia un analizador Lexico, les dare el algoritmo basico para esto: 

Primer Paso:

Realizar el método del árbol, con sus expresiones regulares unidas por or “|” para llegar a su AFD

Segundo Paso:

Reglas:

  • Cada estado se convierte en un Case
  • Cada transición se convierte en un If el cual debe estar dentro de un case.
  • En cada estado de aceptación, se agrega un else if para aceptar el lexema.


Tercer Paso:

Variables

Estado: el cual nos indicara en que estado nos encontramos. Es el valor que se utiliza en el switch de comparación.
Índice: nos dice la posición en la cual nos estamos moviendo dentro de nuestro archivo de entrada.
Lexema: será la variable donde estaremos concatenando la información leída del archivo de entrada.
Archivo Entrada: el cual contendrá lo que leamos del archivo de entrada.

Cuarto Paso:

Algoritmo Básico

Inicializar Variables {

  Mientras No sea EOF{

   Incrementamos índice

   Leemos carácter del Archivo de Entrada en la posición índice

    Switch ( estado ) { 
        En caso que sea 1
            Si (carácter es igual a transicion1)
                Cambiar estado
                Lexema se le agrega el nuevo carácter
            Sino Si (carácter es igual a transicion2)
                Cambiar estado
                Lexema se le agrega el nuevo carácter
                ….
            Sino Si (carácter es igual a transiciónN)
                Cambiar estado
                Lexema se le agrega el nuevo carácter
            Sino es ninguna de las anteriores
                Es error lexico
    En caso que sea 2
            Si (carácter es igual a transicion1)
            Sino Si (carácter es igual a transicion2)
            ….
            Sino Si (carácter es igual a transiciónN)
                En caso que sea 3 y este sea un estado aceptación
                Aceptar Lexema asociado a Token
                Reiniciar estado
                Limpiar el Lexema
                Retroceder el indice.

}//Fin Switch

 }//Fin Mientras

}//Fin de Metodo



Espero les sirva este algoritmo, muy pronto estare subiendo ejemplos de como llegar al AFD y de como implementar el analizador lexico en java. 

Exitos!!!! 

viernes, 17 de abril de 2009

Metodología de Mejora de Proceso

Regreso con un tema nuevo, ahora estoy viendo un poco sobre procesos, así que hoy daré las principales fases para modelar un proceso de negocio: 


1. Fase de Inicialización 

1.1 Definir Propietario del Proceso: en este punto buscamos a la persona que este mas familiarizada con el mismo, esta persona debe de tener conocimiento sobre todo lo relacionado al proceso.  

1.2 Definir Limites y Alcance: en este segundo paso nos toca definir los limites, pero ahora se ven un poco mas que solo los procesos ya que se definen los limites y el alcance de los procesos dentro del negocio, así como definir los del negocio. 

2. Fase de Definición 

2.1 Definir Procesos: ahora nos toca establecer pasos tareas y actividades para establecer prioridades entre procesos y subprocesos, y ver las relaciones entre ellos, para esta fase nos auxiliamos de diagramas de alto nivel, un ejemplo de estos son diagramas de flujo. 

3. Fase de Control 

3.1 Definir Métricas: esto nos ayuda a clasificar al proceso ya que sin medidas no podremos saber si el proceso llego a su objetivo, si es bueno o si es malo. Algunos ejemplos de medidas son: Desecho, Repetición, Conformidad. 

3.2 Puntos de Control: esto es para saber si el proceso llego a cumplir metas, algunos ejemplos de puntos de control son: Costo, Tiempo de Respuesta, Variabilidad 

3.3 Retroalimentación: aquí lo que hacemos es compartir información, esto con el fin de mejorar aspectos del proceso. 


Exitos 

domingo, 12 de abril de 2009

SCM Versionamiento y Operaciones

Hoy otra vez con SCM dando algunos conceptos que se utlizan mucho en este tema como lo es el versionamiento, ademas las operaciones comunes a realizar cuando se utiliza SCM:

Identificación de Versiones: 

Se necesita saber la intención del cambio para realizar de manera optima el merge al repositorio. 

  • Numérico: es el mas común y se rige de acuerdo a : Mayor.Menor[.Revision[.Build]]
  • Fecha: uso del esquema año, mes, dia para identificar 20040505
  • Año Release: únicamente identifica el año, Office 2007
  • Código Alfanumérico: Códigos que representen algo, Flash MX

Operaciones Comunes

A continuacion las operaciones que se pueden realizar comunmente: 

  1. Import: agregar archivos al repo
  2. Check out: copia del repo al workspace
  3. Add: agregar un archive al repo
  4. Modificar: modificar un archive localmente
  5. Update: sincronizar la copia local con el repo
  6. Check in Comitt: incorporar una nueva revisión de un archive modificado localmente.


miércoles, 1 de abril de 2009

Impacto de eCommerce en Guate

Pues como ya mencione en un post anterior el concepto de eComerce hoy quiero dar las definiciones de los modelos de este, y ejemplificar algunos basandome en el impacto que se ha visto en guatemala. A continuacion una lista y una breve descripcion:


• Business to Consumer (B2C)

Es el modelo de comercio entre las Empresas y los consumidores finales. Se trata de la venta directa a través de Internet.

Ejemplos:

* MacDonals
* HiperPaiz
* Bi


• Costumer to Costumer (C2C)

Es el modelo de comercio entre consumidores individuales. En un sitio web se provee de una plataforma de intercambio desde donde los consumidores finales hacen sus transacciones económicas con otros.

Ejemplos:

* GpAutos
* Gubiz
* RapiCompra


• Peer to Peer (P2P)

Es el sistema de red en el que los archivos se reparten en diferentes computadoras, los usuarios accedan a éste de uno a otro en vez de por un servidor central. Se da por medio de e-mail o Internet. Su principal caracteristica es q no hay una transaccion monetaria.

Actualmente en guatemala no existen sitios de este tipo, para ejemplificar y enteder bien el concepto de P2P, podria mencionar los siguientes Ejemplos:

* Napster: servidores q se comunican y hacen intercambio de música.
* Ares Galaxy
* eMule


• mComerce (P2P)

Este modelo de comercio nace para los entornos de Internet móvil (teléfonos, PDA, Ipod , Iphone …), utiliza el teléfono y otros dispositivos móviles para conectar al usuario con la web, fomentando las ventas de muchos productos, sobre todo tonos, juegos, imágenes, música, videos, etc.

Ejemplos:

* Interacel Guatemala
* Claro (Nueva tecnologia 3G)
* Tigo



En Conclusion:

Existen muchos modelos más, pero he detallado los más importantes y conocidos, aunque todos tienen una forma de incorporarse e impactar el desarrollo de eComerce siento que gracias al aumento de los dipositivos moviles las ventas por este modelo seran el futuro.

Creo que es dificil poner a cierta empresa en un solo modelo, ya que presta varios servicios que limitarla a un modelo, seria limitar a dicha empresa, un ejemplo puede ser el Banco Industrial que no solo da sus servicios bancarios en linea, sino que provee de mensajeria a moviles para informar las transacciones realizadas a una cuenta. Otra seria Claro que aunque manda mensajes de promociones a los moviles, tambien deja hacer pagos de facturas en linia. Estos solo son ejemplos de como un modelo no puede encapsular a una empresa.

sábado, 28 de marzo de 2009

Wireless Broadcom 802.11b/g en Ubuntu 8.10

Pues hoy quiero compartir como hacer para que la tarjeta wireless funcione en Ubuntu 8.10, en mi caso es una Broadcom 802.11b/g la cual tiene licencia privativa para los drivers, esto es un problema si estas en Ubuntu.

Para solucionar este problema se ha creado un driver generico, este hace funcionar tu tarjeta sin ningun problema.

Pasos a seguir:
1. Sistema
2. Administracion
3. Gestor de Paquetes Synaptic
4. Buscamos el paquete b43-fwcutter

5. Aplicamos Cambios
6. Reiniciamos

Listo, mi wireless inicio a funcionar :P


Exitos!!!

viernes, 27 de marzo de 2009

Manejo de Archivos en Java

Hoy quiero compartir algunos conceptos basicos para el manejo de archivos en java :

Los fundamentos de flujos

Si se desea procesar los datos en un archivo existente, se debe:

1. Abrir el archivo
2. Leer o introducir los datos en las variables, un elemento a la vez
3. Cerrar el archivo cuando terminemos de trabajar con el.

Si se desea transferir algunos datos de ciertas variables a un archivo, se debe:

1. Abrir el archivo
2. Extraer o escribir nuestros elementos en la secuencia requerida.
3. Cerrar el archivo cuando terminemos de trabajar con el.


Entonces un archivo es una serie de líneas de texto, y cada una compuesta por un número de caracteres. Cada línea termina con un carácter de fin de línea (\n)



Las clases de E/S en Java

Las clases de flujos están organizadas en forma jerárquica. A continuación las clases mas útiles.

1. Reader
1.1 BurreredReader
1.2InputStreamReader
1.2.1 FileReader

2. Writer
2.1 PrintWriter
2.1.1 FileWriter


Las clases BufferReader y PrintWriter

Para leer y escribir líneas de texto, se utilizan:

* El método readLine de BufferedReader.
* Los métodos print y println de PrintWriter.


Agloritmo a seguir para la Salida de Archivos

ArchivoDemo1.java
Abre el archivo “textoSalida.txt”
Obtiene una cadena del area de texto
Escribe la cadena en el archivo
Cierra el archivo

Algoritmo archivo de Salida de Archivos

ArchivoDemo2.java
Introduce un nombre de archivo proveniente del campo de texto.
Abre un archivo con ese nombre
Introduce las lineas del archivo y las anexa al área de texto siempre y cuando no se llegue al fin del archivo.
Cierra el Archivo.


Hice tres clases en java para el manejo de archivos, ArchivoDemo1.java; ArchivoDemo2.java; FileDialogDemo.java ; Por aqui les dejo el link de descarga: Manejo Archivos Java


Exitos!!



miércoles, 18 de marzo de 2009

Compilador Vs Intérprete

Hoy escribire algunas diferencias entre un compilador y un intérprete, las cuales a mi parecer son:

• Un programa compilado puede funcionar por si solo mientras que un código traducido por un intérprete no puede funcionar sin éste.

• Un programa traducido por un intérprete puede ser ejecutado en cualquier máquina ya que, cada vez que se ejecuta el intérprete, tiene que compilarlo.

• Un archivo compilado es mucho más rápido que uno interpretado.

domingo, 15 de marzo de 2009

What Drives Design?

Hoy dare un resumen de una presentacion que encontre en InfoQ la cual se titula What Drives Design?  la expositora fue Rebecca Wirfs-Brock, y da un enfoque sobre que deberia dirigir el diseño de software, se enfoca principalmente en RDD, aunque se mencionan otros.... a continuacion una sintesis del video:

What  Drives Design

Definicion de Driven: motivado para tener o necesitar una compulsiva calidad

RDD Responsability Driven Design
Para esta forma de manejar el diseño, existen métodos abstractos para construir en base a bloques: 
1) Add: un Objeto

2) Remove: Un objeto

3) Do: un Bloque

Principios de RDD

  • Maximizar Abstracción: distinción entre la data y el comportamiento
  • Comportamiento Distribuido: control delegado en arquitectura
  • Flexibilidad: objetos que pueden ser cambiantes

Receta para diseñar sw complejo:

- Identificar funcionalidad e info relacionada: Definir num objetos y componentes
- Decidir que funcionalidad e información pertenece a cada elemento
- Decidir que elementos se comunicarán con msj 
- Diseñar clases que cumplan con lo anterios

 
Nota: Contexto es importante para diseñar con responsabilidad RDD 

En RDD Diseño de Construcciones, se pueden clasificar algunos elementos como lo son:

  • Role: set de responsabilidades
  • Responsabilidad: obligación por cumplir una tarea
  • Colaboración: interacción entre elementos de diseño (Objetos / Roles)
  • Contrato: acuerdo de los términos de colaboración

El Modelo de Responsabilidad, Es una demostración de cómo un grupo de componentes u objetos trabajando juntos por una tarea especifica. 

Estereotipos de Roles

(cada uno tiene una responsabilidad)

Information Holders : conocen y dan a conocer info
Structurer: mantiene relación entre info y objetos
Interfacer: Traduce información y peticiones
Service Provider: Realiza trabajo en demanda
Coordinator: realiza eventos mecánicos (semáforo) 
Controller: toma decisiones q afectan otras acciones u eventos (policía)

Nota: Tanto el controller como el coordinator, son controles de diseño 

XX- Driven Design 

Algunas caracteriticas de elementos que pueden guiar el diseño son: 

FDD Feature Driven Design (Feature by Feature )
 Walktrhough -> Desing -> Design Inspection -> Code -> Code Inspection
 Diseña la primera semana, se codifica en la segunda 

TDD Test Driven Design (Stroy by Story)
 Text -> Code -> Run Test -> Code pass the test
 Diseño va evulucionando mediante historias 

BDD Behaivor Driven Design
 Dar un contexto (Give a context)
 Cuando ocurre un evento (When a event ocurre)
 Luego asegura resultados (Then ensure some outcomes)

DDD Domain Driven Design
 Objeto Entidad
 Valor del Objeto 

CDD Contract Driven Design
 Aceptar valores
 Retornar valores
 Errores de excepcion
 Pre y Post condiciones 

RDD Resposability Driven Design
 Contactos como interface del diseño


miércoles, 11 de marzo de 2009

Elementos de SCM

Algunos elementos del SCM son: 

Repositorio: es un almacenamiento centralizado de datos, en forma de árbol filesystem, con jerarquía de directorios. Acciones son: Conectar, crear, escribir, entre otras. 

Area Trabajo: Workspace, lugar privado de trabajo para el desarrollador local el cual se sincroniza con el repositorio. 

Codeline: es una progresión del conjunto de artefactos o fuentes del sw que cambian en el tiempo. 

Revisión: cada cambio en un archivo o artefacto se genera una revisión. 

Snapshot: son varias revisiones de cada componente en el codeline.

Configuración: es una colección de revisiones de cada componente.

Label: identifica o marca versiones (configuraciones) como especiales.

Politica: definen el propósito del codeline y reglas de cuando y como se pueden hacer cambios. 

Branch: es una revisión del archivo que se usa la versión del trunk (o rama principal) como punto de inicio y evoluciona de forma independiente. 

Release: Conjunto de revisiones de diferentes archivos que conforman en conjunto un producto de sw q se libera. 

 

Exitos!!! 

viernes, 6 de marzo de 2009

MySQL Error

Hoy quiero dar la solucion a un error con el que me tope intentando hacer una llave foranea dentro de una tabla en MySQL.

Los cambos eran estos:

ALTER TABLE `final_ag`.`horario` ADD CONSTRAINT `FK_horario_2` FOREIGN KEY `FK_horario_2` (`dia`)
REFERENCES `dias` (`id`)
ON DELETE RESTRICT
ON UPDATE RESTRICT;

Pero salio el error MySQL Error 1005, y me puse a ver cual podria ser el error y encontre que mi tabla dias era MyISAM, y mi tabla horario era InnoDB, por lo cual tube que cambiar mi tabla dias para que siguiera la misma estructura de las demas tablas:

ALTER TABLE `final_ag`.`dias` ENGINE = InnoDB;

Esto me dio la solucion y logre hacer mi FK sin ningun inconveniente. 

Exitos!!

miércoles, 4 de marzo de 2009

Conceptos Basicos de Sistemas Operativos

Detección y Recuperación Consiste en condicionar el sistema sin verificaciones adicionales, de modo que al suceder un interbloqueo se detecte, avise al usuario y se recupere del interbloqueo

Prevención Consiste en condicionar el sistema con una serie de reglas estáticas, para evitar al menos una de las condiciones de interbloqueo, por lo que este nunca sucederá

Predicción Consiste en condicionar el sistema para revisar el estado del mismo cuando cualquier proceso realice una petición de recursos, de modo que nunca se interbloquee

Fallo de Pagina Es el evento que consiste en acceder una pagina que no se encuentra en memoria y se tiene que buscar en el espacio de disco duro

Hiperpaginacion Es el evento que consiste en acceder en forma excesiva paginas que no se encuentran en memoria y se tiene que buscar en el disco duro.

Reemplazo Optimo Es la estrategia de reposición de pagina que consiste en reemplazar la pagina que no se va a utilizar durante el tiempo mas largo

Menos frecuente usado Es la estrategia de reposición de paginas que consiste en reemplazar la pagina cuyo contador de accesos a la misma tiene el menor valor

Localidad Espacial Es el principio que consiste en considerar alta la probabilidad de que un evento sucederá en un espacio cercano, dado que sucedió cerca.

Localidad Temporal Es el principio que consiste en considerar alta la probabilidad de que un evento sucederá en un tiempo cercano, dado que sucedió hace poco tiempo.

Kernel monolítico Es el tipo de kernel que tiene todos sus componentes en el mismo espacio de memoria y para agregar una nueva funcionalidad, se de recompilar por completo.

Kernel modular Es el tipo de kernel que, aunque tiene todos sus componentes en el mismo espacio de memoria, se le puede agregar funcionalidades dinámicamente.

Microkernel Es el tipo de kernel que tiene sus componentes en distintos espacios de memoria, los cuales se comunican entre si por medio de colas de mensajes.

Interrupciones Es el mecanismo de comunicación con dispositivos donde el adaptador interrumpe al procesador para que transfiera los datos del dispositivo a memoria

Proyección en puertos Es el mecanismo de comunicación con dispositivos donde el adaptador interactúa con el procesador a través de puertos donde se lee y escribe

DMA Es el mecanismo de comunicación con dispositivos que consiste en que el adaptador interactúa directamente con la memoria para leer y escribir del dispositivo.

Independencia de los dispositivos Es el principio que especifica que el API del sistema operativo debe permitir manejar todos los dispositivos con el mismo conjunto de instrucciones

Anomalía Belady Es el fenómeno en el que, con la misma secuencia de accesos de pagina no hayan fallos de pagina, si se aumenta el numero de marco de pagina

Paginación por Demanda Es la estrategia de búsqueda que consiste en subir a memoria, las paginas de proceso conforme los accesos del mismo producen las fallas

Paginación Anticipada Es la estrategia de búsqueda de pagina que consiste en subir a memoria, cuando el proceso se despierta, su conjunto de paginas que el proceso usara en el futuro.

Conjunto de trabajo Es el conjunto de paginas que un proceso acceso en determinado periodo de tiempo

FIFO / PEPS Es la política de reemplazo de paginas que adolece del problema de la anomalia Belady

Menos recientemente Usado Es la política de reemplazo de paginas que resuelve el problema de la anomalia Belady

domingo, 1 de marzo de 2009

Lenguajes Formales de Programacion (Intro)

Hoy quiero darles una intro a lo que es Lenguajes Formales de Programacion, dando la definicion y ejemplos del lenguaje Natural, Formal y de Programacion:


Lenguaje Natural

Definición:

Establece comunicación entre los seres humanos, este tipo de lenguajes se dan por enriquecimiento progresivo y continuo (evolución del lenguaje), ya que tiene ambigüedad acepta polisemantica. Una característica es que no puede darse una formalización completa.

En general un lenguaje natural es el que ha evolucionado con el paso del tiempo para fines de la comunicación humana, y continúan su evolución sin tomar en cuenta reglas gramaticales formales, cualquier regla se desarrolla después de que sucede el hecho, en un intento de explicar y no determinar la estructura del lenguaje.

Ejemplo:
Español
Ingles
Alemán
Etc.



Lenguaje Formal

Definición:

Se utiliza para expresar situaciones dentro del área científica. Algunas características que podemos mencionar es que esta perfectamente definido y no puede tener ambigüedades, se desarrolla con teorías preestablecidas y puede llegar a una completa formalización lo que nos permite poderlo construir computacionalmente.

Este lenguaje esta definido por reglas preestablecidas, es decir que primero se determina al lenguaje y no se intenta explicarlo. Gracias al uso de reglas es posible construir traductores computarizados eficientes para los lenguajes de programación a la vez que la falta de estas reglas dificulta la construcción del traductor como lo es el caso del lenguaje natural.

Ejemplo:
Lenguajes de Programación
Lenguajes Matemáticos (Algebra)



Lenguaje de Programación

Definición:

Un lenguaje de programación es una técnica estándar de comunicación que permite expresar las instrucciones que han de ser ejecutadas en una computadora. Consiste en un conjunto de reglas sintácticas y semánticas que definen un lenguaje informático.

Un programa escrito en un lenguaje de programación necesita pasar por un proceso de compilación, es decir, ser traducido al lenguaje de máquina, o ser interpretado para que pueda ser ejecutado por el ordenador. También existen lenguajes de scripting que son ejecutados a través de un intérprete y no necesitan compilación.

Exitos!!!

viernes, 27 de febrero de 2009

SCM Software Configuration Managment

Definición: Identifica y controla la configuración, reportes y revisiones asi como la administración de builds y procesos.

Las practicas SCM definen como una empresa construye y libera sw, asi como los cambios dentro del ciclo de desarrollo.

Algunos elementos son:
Identificación Configuración: identifica componentes, reflejando la estructura
Control de Configuración: controla cambios, liberaciones del producto mediante codeline
Reportes estado Actual: registro y reportes tanto cambios como solicitudes d cambios
Auditoria y Revisión: validación de producto y consistencia componentes.

Problemas comunes que resulve SCM:
• Pobre integridad release
• Falta comunicación
• Dificultad para determinar el estado del proy
• Tareas redundantes están propensas a error si no están automatizadas

Actividades Típicas en SCM
• Almacena asegura artefactos de sw
• Registrar historia de cambios Que? Quien? Cuando? Porque?
• Provee flujo de Trabajo (Seguimientos)
• Administración de configuraciones (Build, release e Integración)
• Aislar a los desarrolladores
• Control de procesos

Exitos!!!

lunes, 23 de febrero de 2009

eCommerce

Definicion eCommerce
Antes de dar el listado de dichos productos, quiero dar la definicion de lo que es eComerce, que significa Comercio Electronico, la cual es: Cualquier negocio realizado por medios electronicos (ej. internet) donde se involucra una transaccion economica.

Como mencionamos puede ser cualquier tipo de negocio es por ello que los podemos clasificar como servicios o productos, en este post daremos los productos que son mas vendidos por eCommerce.

Tiendas en Linea mas populares:

Antes que todo me gustaria mencionar el top 5 de las tiendas en linea, esto es segun un estudio de marketing realizados a finales del año pasado, los resultados son los siguientes:

-eBay
-Amazon
-Target
-Wall Mart
-Best Buy

Ahora si vemos las tendencias de eCommerce geograficamente podriamos mencionar que en los primeros lugares esta Europa y Norte America, luego le sigue Asia y por ultimo Latinoamerica, esto nos puede dar una vision de el tipo o el perfil del cliente o usuario de eCommerce.

¿Cuales son los productos mas vendidos?

Continuando con el tema de productos, tambien dare el top 5 de lo que podriamso llamar lo mas vendido por en eCommerce, y las tendencias o caracteristicas de lo que se vende, gracias a un estudio de Nielsen Company y su estudio realizado en diciembre del 2007:

- Libros
- Ropa y Accesorios
- DVD y Juegos
- Tiket de vuelo
- Equipo electronico

A continuacion la grafica de las estadisticas, dando cada item y su porcentaje de venta:






En Conclusion:
El comercio electronico esta teniendo un gran auge y aceptacion ya que este nuevo medio de comercio permite romper fronteras, porque no se necesitan varios locales para distribuir un producto. Por otra parte gracias al comercio electrónico hay mas disponibilidad en cuanto a horario, ya que se pueden ofrecer dichos productos durante las 24 horas del día y los 365 días del año.

domingo, 22 de febrero de 2009

How to install SVN (Subversion) in Ubuntu 8.10

Esta es una pequeña guía que mustra los pasos a seguir para instalar y configurar Subversion y Websvn en Ubuntu 8.10

Subversion packages

Como administradores o root debemos de ingresar los siguientes comandos, para instalar los paquetes necesarios para la configucacion de SubVersion:

# apt-get update
# apt-get install subversion
# apt-get install libapache2-svn


El paquete libapache2-svn instalará el módulo de Apache WebDAV subversión.


Crear Repositorios

A continuacion mostraremos como trabajar los repositorios, primero ejecutamos los siguientes comandos:

# mkdir /var/svn-repos/
# svnadmin create --fs-type fsfs /var/svn-repos/practica1


El repositorio que creamos anteriormente necesita los permisos adecuados para apache ademas de un usuario para manipularlo. Voy a hacer un grupo y añadir un usuario al mismo para hacer nuestras pruebas:

# groupadd subversion
# addgroup ale subversion
# chown -R www-data:subversion /var/svn-repos/*
# chmod -R 770 /var/svn-repos/*


Aunque no es estrictamente necesario, vamos a crear los directorio trunk, tags y branches que servirán para almacenar el código de nuestro proyecto actual, los tag y las posibles ramas que pueda tener nuestro proyecto:

$ sudo svn mkdir --message="Inicializando los directorios..." \
file:///var/svn-repos/trunk \
file:///var/svn-repos/tags \
file:///var/svn-repos/branches



Configurando Subversion WebDAV

Normalmente, apache estará activado por defecto, para asegurarse de que este es el caso tecleamos los siguientes comandos:

# a2enmod dav
# a2enmod dav_svn


Ahora actualizamos los usuarios para el archivo de accesos de nuestro repositorio

# htpasswd -c /etc/apache2/dav_svn.passwd ale

Ahora hay q modificar el archivo /etc/apache2/mods-available/dav_svn.conf con la sigiente informacion:

"< Location /practica1 >
DAV svn
SVNPath /var/svn-repos/practica1
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
< /Location >"




Lo Ultimo

Por ultimo reseteamos apache para verlos resultados:

# /etc/init.d/apache2 restart

Y Listo!!!! tenemos nuestro primer repositorio configurado en SVN, para poder acceder a el unicamente en nuestro navegador deberiamos teclear:

http://localhost/practica1/

y veremos nuestro repo!!!!!!

Exitos!!! :P

lunes, 16 de febrero de 2009

Clasificación de Lenguajes de Programación

La clasificacion que propongo es por el nivel de trabajo de los lenguajes de programacion:

Lenguaje máquina
El lenguaje máquina es el único que entiende directamente la computadora, utiliza el alfabeto binario que consta de los dos únicos símbolos 0 y 1, denominados bits (abreviatura inglesa de dígitos binarios). Fue el primer lenguaje utilizado en la programación de computadoras, pero dejó de utilizarse por su dificultad y complicación, siendo sustituido por otros lenguajes más fáciles de aprender y utilizar, que además reducen la posibilidad de cometer errores.

Lenguaje de bajo nivel
Un lenguaje de programación de bajo nivel es el que proporciona poca o ninguna abstracción del microprocesador de un ordenador. Consecuentemente es fácilmente trasladado a lenguaje de máquina.En general se utiliza este tipo de lenguaje para programar controladores (drivers).

La programación en un lenguaje de bajo nivel como el lenguaje de la máquina o el lenguaje simbólico tiene ciertas ventajas: 1. Mayor adaptación al equipo. 2. Posibilidad de obtener la máxima velocidad con mínimo uso de memoria. Pero también tiene importantes inconvenientes: 1. Imposibilidad de escribir código independiente de la máquina. 2. Mayor dificultad en la programación y en la comprensión de los programas. Sus características son: 1. Se trabaja a nivel de Microinstrucciones, es decir, su programación es al más fino detalle. 2. Está orientado a la máquina.

Lenguaje de alto nivel
Los lenguajes de alto nivel logran la independencia del tipo de máquina y se aproximan al lenguaje natural. Se puede decir que el principal problema que presentan los lenguajes de alto nivel es la gran cantidad de ellos que existen actualmente en uso.

Los lenguajes de alto nivel, también denominados lenguajes evolucionados, surgen con posterioridad a los anteriores, con los siguientes objetivos, entre otros:

  • Lograr independencia de la máquina, pudiendo utilizar un mismo programa en diferentes equipos con la única condición de disponer de un programa traductor o compilador.
  • Aproximarse al lenguaje natural, para que el programa se pueda escribir y leer de una forma más sencilla.
  • Incluir rutinas de uso frecuente como son las de entrada/salida, funciones matemáticas, manejo de tablas, etc, que figuran en una especie de librería del lenguaje, de tal manera que se pueden utilizar siempre que se quieran sin necesidad de programarlas cada vez.

Se puede decir que el principal problema que presentan los lenguajes de alto nivel es la gran cantidad de ellos que existen actualmente en uso (FORTRAN, LISP, ALGOL, COBOL, APL, SNOBOL, PROLOG, MODULA2, ALGOL68, PASCAL, SIMULA67, ADA, C++, LIS, EUCLID, BASIC), además de las diferentes versiones o dialectos que se han desarrollado de algunos de ellos.

domingo, 15 de febrero de 2009

Los Protocolos en el Modelo TCP/IP

Primero las siglas del modelo TCP/IP significan: "Protocolo de control de transmisión/Protocolo de Internet" Asi que en este post quiero mostrar que protocolos estan asociados a las diferentes capas del modelo TCP/IP.



La imagen anterior nos ilustra la relacion entre cada capa y sus protocolos, asi que a continuacion dare una breve descripccion de cada uno de estos protocolos:

• HTTP (Aplicacion)
Este es un protocolo de transferencia de hipertexto por sus siglas en ingles HyperText Transfer Protocol.

• FTP (Aplicacion)
Es un protocolo de transferencia de archivos entre sistemas conectados a una red, su arquitectura es Cliente/Servidor.

• TCP (Transporte)
Este es un protocolo orientado a la conexión, que proporciona un flujo de bytes (datos), que asegura que los datos llegan completos, sin daños y en orden.

• UDP (Transporte)
Es un protocolo de datagramas sin conexión. Es un protocolo no fiable porque a diferencia del anterior no verifica que los paquetes lleguen a su destino, y no da garantías de que lleguen en orden.

• IP (Internet)
Este realiza tareas básicas para conseguir transportar datos desde un origen a un destino. IP puede pasar los datos a una serie de protocolos superiores.

• TOKEN RING (Enlace)
Este protocolo se apoya en el estándar IEEE 802.5. Quedo en desuso por la popularización de Ethernet.

• PPP (Enlace)
Este protocolo es más complejo y originalmente fue diseñado como un protocolo separado que funcionaba sobre otro nivel de enlace

• MEDIOS FISICOS (Fisico)
Aunque no son especificamente protocolos, la capa Fisica a la que pertenece debe tomar en cuante todo lo relativo a los detalles como los conectores, código de canales y modulación, potencias de señal, etc.


En Conclusion:
El modelo TCP/IP representa todas las reglas de comunicación para Internet y se basa en las direcciones IP; como sabemos este modelo se divide en capas, el término capa en este contexto se utiliza para mostrar que los datos que viajan por la red atraviesan distintos niveles de protocolos.

jueves, 12 de febrero de 2009

Token vs Lexema

A veces resulta dificil diferenciar lo que es Token de la palabra Lexema, y es q en algunos casos nos los llegan a enseñar como que son sinonimos, pero no lo son.

Token: también llamado componente léxico es una cadena de caracteres que tiene un significado coherente en cierto lenguaje de programación.

Lexema: cadena de caracteres que concuerda con un patron que describe un componente lexico.

Entonces cual es la diferencia ¿¿??

El componente lexico, en nuestro caso token es el patron que deben de seguir los caracteres, luego una vez que la secuencia de caracteres es aceptada a ella la llamamos lexema

Cabe mencionar que un token puede tener tener uno o infinitos lexemas, esto es si el token es palabra reservada o no, si el token es palabra reservada, entonces solo tendra un lexema (ej if, do), pero si no es palabra reservada, tendra muchos lexemas (ej identificador, numero)que puedan cumplir con la secuencia.

Espero ejemplificarles mejor esto con esta tabla:




Exitos!!!

miércoles, 11 de febrero de 2009

Bienvenidos...

Este espacio sera para comunicarle a todos lo que voy aprendiendo... la información es de todos, hay que compartirla así que al igual yo espero que comenten, pregunten, completen y corrijan lo que voy a ir escribiendo...

Así que bienvenidos a mi nuevo espacio.... donde el konocimiento es de todos!!!