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!!!