Ir al contenido principal

Entradas

Mostrando las entradas de 2010

Algoritmo de Dekker #1 Alternancia Estricta

En el curso de sistemas operativos 1, se estudian las soluciones al problema de la exclusión mutua por software, uno de los temas es el algoritmo de Dekker y sus diferentes versiones, que buscan coordinar el acceso a un recurso compartido (o región critica) por un grupo de procesos, garantizando la exclusión mutua entre dichos procesos al usar el recurso. el primer intento del algoritmo de dekker es conocido como de "alternancia estricta" o "sincronizacion forzada" básicamente porque cada uno de los procesos tiene asignado un turno, y el algoritmo para coordinarlos solo hace cambiar el turno uno por uno, y luego vuelve a iniciar. esta forma de solucionar el problema garantiza la exclusión mutua pero introduce una fuerte dependencia entre los procesos, si un proceso usa el recurso a intervalos grandes, cuando su turno llega, los demás procesos deben esperar, por lo que los procesos lentos, retrasan a los procesos rápidos. en este ejemplo, he implementado de forma

Threads en Java, Simulación de Proccess Control Block

Esta aplicación demuestra como sincronizar varios threads en java, se pueden crear threads en tiempo de ejecución y ver como estos actuan con la interface Codigo fuente del proyecto en JDeveloper 11g

Linux Canon iP 2700 Driver

Esta impresora es bastante común en las tiendas últimamente y como es de esperarse algunos usuarios que utilizan software libre en sus computadoras el 100% del tiempo es necesario contar con los drivers que nos permitan utilizarla. El caso de la Canon iP 2700 es que si cuenta con el driver, pero esta muy escondido en la pagina de Canon para Asia, por eso publico el link para descargar el driver desde la pagina de Canon ( http://support-sg.canon-asia.com/contents/SG/EN/0100272002.html ) y si por alguna razon no funcionara el link de descarga que encontre en un sitio para compartir archivos ( http://www.2shared.com/file/5WqGzOhg/cnijfilter-ip2700series-330-1-.html ) el paquete contiene el driver en formato de Debian (.deb) lo que lo hace compatible con todas las distribuciones que usan este sistema, Ubuntu, Kubuntu y demás derivados de Debian

Imágenes Vectoriales con Java + Batik

Este ejemplo muestra como usar imágenes Vectoriales en formato SVG, dichas imágenes al ser vectoriales pueden ser re dimensionadas sin perder calidad, lo cual les hace atractiva en algunas aplicaciones que necesitan esta característica, en este ejemplo usamos una imagen svg para generar imágenes png adaptadas al tamaño del formulario, para luego cargarlas y dibujarlas sobre un panel, el proceso de dibujar la imagen es un poco lento, pero vale la pena para mantener la calidad gráfica de nuestras aplicaciones. la tecla C cambia el color de fondo y la tecla R ajusta el tamaño de la imagen Descargar Código Fuente

Dibujar Lineas en Android

la tercera entrega de aplicaciones de ejemplo en Android esta vez el dibujo de lineas varias, con el uso del evento onSizeChange para determinar las dimensiones de la pantalla y acomodar las lineas a ese tamaño, ademas de usar también la propiedad  setStrokeWidth del objeto Paint para determinar el grosor de la linea, las lineas siguen a los eventos de la pantalla Touch, modificando el centro de la figura en cada evento. se puede cambiar el color de las lineas con la tecla "C". Descargar Código Fuente y Archivo APK

Dibujo 2D con Android

mi segunda aplicación en android después del famoso hola mundo, tomando como base el ejemplo 2d de  http://marakana.com/tutorials/android/2d-graphics-example.html , agregue un color aleatorio para cada punto y manejo de eventos del teclado para aumentar o disminuir el radio de los puntos (que al final son círculos), esta aplicación demuestra el uso de eventos de la pantalla touch y del teclado, permite aumentar los puntos con la tecla "A" , reducirlos con la tecla "Z" y limpiar la pantalla con la tecla "C" Descargar Codigo fuente y archivo apk este ejemplo fue desarrollado con Eclipse 3.5 usando el plugin ADT de Android y el SDK 2.2 API 8 revision 2

Desarrollar con Android en Eclipse IDE

Este post busca resumir los elementos necesarios para desarrollar aplicaciones para la plataforma Android de Google, el sistema operativo usado es Windows XP. los requisitos para empezar son 1) tener una versión de la java development kit instalado en el sistema, se puede obtener en  http://www.oracle.com/technetwork/java/javase/downloads/index.html 2) descargar el SDK de Android , en este caso usamos android-sdk_r07-windows desde  http://developer.android.com/sdk/index.html 3) descargar Eclipse en su version 3.5 (la version 3.6 da algunos problemas con el SDK de Android)  http://www.eclipse.org/galileo/ en pocas palabras, debemos descomprimir el paquete del SDK, abrir el SDK Manager e instalar una plataforma y configurar un dispositivo emulado. luego descargar un plugin para eclipse que permite integrar el SDK de Android y la gestión de proyecto en Eclipse. mas detalles en el video

El Valor de una Resistencia Usando sus Colores

Uno de los problemas mas simples a los que se enfrenta el informático sometido a la electrónica, es averiguar de que valor es una resistencia, si no tenemos a la mano un multi-metro digital esta tarea puede resultar aburrida y también ser una perdida de tiempo, también resulta que a veces la electrónica no nos resulta tan interesante ni emocionante como para aprendernos cosas tan simples como la tabla de colores y la formula para calcular el valor de la resistencia hoy por casualidad me encontré una bonita pagina web que nos calcula el valor de la resistencia, indicando de forma visual los colores de la misma La url de esta aplicación es  http://www.dannyg.com/examples/res2/resistor.htm

Dibujar Círculos en AutoCAD

los 4 modos básicos para dibujar círculos en AutoCAD son los siguientes 1) usando un punto central + el radio o diámetro del circulo por ejemplo circle 2,2 5       este comando dibuja un circulo con centro en 2,2 de radio 5 circle 2,2 d 5    este comando dibuja un circulo con centro en 2,2 de diámetro 5 2) usando dos puntos que definen el diámetro del circulo circle 2p 1,1 4,1     este comando dibuja un circulo con diámetro 3, con los puntos indicados circle 2p 1,1 5,5     este comando dibuja un circulo de diámetro igual a la distancia entre 1,1 y 5,5 3) usando tres puntos que deseamos sean tocados por el circulo  circle 3p 1,1  1,4  3,3    este comando dibuja un circulo que toca los tres puntos (1,1) (1,4) y (3,3) 4) usando dos puntos a los que el circulo sera tangente y su radio en este comando es necesario contar con dos lineas, arcos o círculos, los primeros dos parámetros son objetos que seleccionamos, a los que queremos que el circulo sea tangente y finalmen

Control De Motor DC BiDireccional y Angular

Este circuito permite controlar un motor de corriente directa (DC) con señales lógicas de nivel TTL, permite con una señal de control DIR definir en que sentido gira el motor, ademas permite con la señal de control ENABLE definir si el motor esta "girando" o detenido, y por ultimo usando 4 bits permite definir la cantidad de tiempo que queremos activar el motor, este control permite controlar la cantidad de "pasos" para un contador 47191, usando un comparador 7485 detener el motor al cumplir la cantidad de tiempo indicada. Básicamente funciona de la siguiente forma, se indica la dirección, y se configuran los 4 bits de "tiempo" o "numero de pasos", y finalmente se  activa la señal de "enable" para que el circuito realize el movimiento. el circuito utiliza un contador 74191 para llevar el control de tiempo o numero de pasos, también un comparador  7485 para detectar cuando se ha completado la cantidad correcta de pasos, y también un

Instalar Oracle Enterprise 11g en Kubuntu 9.04

Esta guía muestra paso a paso como configurar un sistema con Kubuntu 9.04 desde los pasos iniciales como configuración de la swap, requisitos varios del sistema, instalación de java, actualizar Kubuntu e instalar paso a paso los paquetes necesarios para instalar Oracle 11g, también la creación de usuarios y grupos y algunos parámetros del kernel, para finalmente correr el asistente de instalación de Oracle. Manual Instalacion Oracle 11g Kubuntu

Centrar con Css un Div HTML

Uno de los elementos básicos para realizar un sitio web, es crear la plantilla del sitio, muchas veces es necesario centrar de forma horizontal elementos "div" dentro de su contenedor, para esto CSS proporciona un metodo muy efectivo que consiste en configurar las propiedades " margin-left: auto; margin-right: auto;  "  para el elemento contenido, o " margin: 0px auto; " para configurar ambos a la vez por ejemplo <div style="background-color: grey;"> <div style="background-color: green; margin: auto; width: 50%;"> contenido </div> </div> contenido debido a la incompatibilidad de algunos navegadores, también a veces es necesario usar la propiedad "text-align:center" en el contenedor para centrar un objeto, (internet explorer). <div style="text-align:center; background-color: grey;"> <div style="background-color: green; width:50%;"> contenido </div>

Extend LT: Como Empezar

Extend LT es un software que permite realizar modelos de varios tipos de sistemas y también simular dichos modelos con una serie de parámetros definidos tanto en sus componentes como en la simulación global, como el tiempo total de simulación etc. Para usar este programa, debemos realizar algunas configuraciones simples, como cargar la librearía, mostrar la paleta de componentes y seleccionar alguna librería de las que hemos cargado, pasos muy simples, pero que al ver el programa no resultan tan evidentes, lo mismo para realizar una simulación y ver el proceso animado, para saltar estos pequeños detalles he realizado este vídeo que muestra como crear un modelo muy simple, desde que iniciamos Extend LT, cargamos librerías, usamos componentes etc. Descargar Archivo usado en el Video

Poligono Animacion en Java 2D

Esta aplicación muestra una animación simple en Java2D con ciclo de render activo, la animación muestra un polígono girando en un JFrame, la cantidad de lados del polígono se puede modificar utilizando las teclas arriba/abajo del teclado, también se puede cambiar el color con la tecla C, y si se dibujan las lineas que cierran el polígono con la tecla L y también la tecla D. para trazar el polígono se utilizan coordenadas polares, se define un angulo de paso en radianes de la siguiente forma  paso = 2 * Pi / lados y luego se ejecuta un ciclo encargado de dibujar cada linea del polígono.  Descargar proyecto original en JDeveloper 11g 

Agujas de Reloj Animación en Java 2D

este programa es un pequeño ejemplo de animación con ciclo de render activo, muestra tres lineas con las posiciones correctas para mostrar la hora, ademas se ajustan al tamaño del JPanel en el que se dibujan, demuestra el uso del método paint, también del objeto Graphics y en general de los principios básicos para realizar animaciones en Java. para iniciar la animación es necesario presionar la tecla "S" Descargar Codigo Fuente

Dibujar Tablero en Java desde un Archivo

Este proyecto de compiladores 1 tenia como requisito analizar un archivo de entrada, que contenía una matriz con números, cada numero indicaba un tipo de casilla, por ejemplo el 0 indica casilla vacía, y el 99 indicaba pared, en la practica este programa tiene un ejemplo claro de un analizador léxico hecho en JLex integrado con un analizador sintáctico hecho en java Cup, ademas de una cantidad considerable de código para dibujar el tablero en un JPanel. Normalmente el principal problema a la hora de crear un juego es la lógica de dibujo, y por ejemplo como mover un personaje sobre el mapa o tablero, todo esto se incluye en el ejemplo. Descargar Codigo Fuente

Semaforos del Sistema en C/C++ sobre Linux

Crear semaforos en Linux para sincronizar procesos # include < sys/ipc.h > # include < sys/sem.h > void main ( ) { key_t llave ; int id_semaforo ; //algun archivo para crear la llave, todos los procesos //que desean obtener la misma llave deben pasar los mismos //parametros, con la misma llave tambien se adquiere el mismo //conjunto de semaforos llave = ftok ( " /bin/bash " , 'X' ) ; //crear 10 semaforos con persimos 0666 (rw-rw-rw-) id_semaforo = semget ( llave , 10 , 0666 | IPC_CREAT ) ; } al crear los semaforos en un proceso, es posible adquirir el mismo conjunto de semaforos desde otro proceso con una llamada a semget # include < sys/ipc.h > # include < sys/sem.h > void main ( ) { key_t llave ; int id_semaforo ; //la misma llave para obtener acceso al conjunto de semaforos creado llave = ftok ( " /bin/bash " , 'X' ) ; i

Manejo de sesion en JSP/JSF

Ejemplo simple de como manejar datos de sesión en una aplicación JSP o JSF, en concreto este ejemplo muestra como realizar un control de acceso (login), aunque de forma básica ya que el único usuario y password validos están hardcoded. el objeto Session esta implícito en las paginas JSP y básicamente es una colección "llave"->"valor" que almacena la información en el ámbito de una sesión, se considera sesión a un grupo de interacciones que el usuario realiza con el sitio web, es decir la colección de sesión almacena información que es relevante al usuario durante toda su interacción con el sitio, un ejemplo claro podría ser un carrito de compras, la información podría estar almacenada en la colección de sesión del usuario, ya que hay una colección diferente por cada "usuario" o "conexión". otra aplicación es el manejo de credenciales, roles y permisos, información almacenada en esta colección es usada para denegar o permitir el acceso a difere

Contador de 3 bits up/down con flip flops JK

El circuito secuencial consiste en 4 flip flops JK y una serie de compuertas lógicas para coordinar los cambios de estado, ademas de un IC 555 para generar la base de tiempo. El contador repite la secuencia 0, 1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1, 0 .... Archivo original hecho en NI Multisim 10 descargar este diseño fue realizado mientras tomaba el curso de Organización Computacional de la facultad de Ingeniería de la Universidad de San Carlos de Guatemala (USAC).

Ejemplo de Simulación en Extend

Extend es un software usado en los cursos de Modelacion y Simulación 1 y 2 de la carrera de Ingenieria en Ciencias y Sistemas de la Usac, generalmente es difícil dar los primeros pasos en el uso de este programa, que permite simular sistemas discretos de una forma efectiva, pero que a primera vista es poco amigable, luego cuando ya uno entiende que es cada "bloque" y como se configura la simulación empieza a parecer mas bonito, en este caso publico un archivo que contiene un modelo muy simple, un bloque Generator, que se encarga de simular la creación de los elementos que son "procesados" por nuestro sistema, un bloque Counter que se encarga de llevar el control de cuantos elementos pasan por el, y finalmente un bloque Exit que representa el fin del proceso o la salida del sistema, ademas de un bloque Executive que controla la duración de la simulacion. Descargar Archivo de Extend .Mox

Semáforos en Java, Sincronizar Threads

Este ejemplo muestra como utilizar semáforos para coordinar un grupo de threads, este problema implementa un caso de lectores-lectores, donde dos tipos de "lectores" pueden cooperar con los de su mismo tipo, pero son excluyentes con los del tipo contrario, en el caso particular tenemos un puente de un solo carril, que permite el paso en los dos sentidos, un tipo de "lector" son los carros que van al Este, estos pueden entrar al puente acompañados de otros carros que vayan en el mismo sentido, pero son excluyentes con los carros que van al Oeste, por lo que debe existir exclusión mutua Este-Oeste y cooperar entre Este-Este y Oeste-Oeste. Este programa fue realizado como practica del curso de Sistemas Operativos 1 de la Carrera de Ingeniería en Ciencias y Sistemas de la Facultad de Ingeniería de la Universidad de San Carlos de Guatemala. Descargar Código Fuente JDeveloper 11g

Consultas y Carga de Datos Oracle

Proyecto de Bases de Datos 1, este proyecto consta de diez consultas con un grado de complejidad ligeramente mas elevado que el típico select * from, en los archivos del proyecto se incluye un script para generar un esquema, crear el modelo y cargar los datos con SqlLoader, ademas se incluye otro script para rellenar el modelo a partir de una tabla temporal (resultado de la carga de datos), usando SqlPlus, y finalmente se incluye el código fuente de las consultas, listas para ser ejecutadas. SELECT  NOMBRE  AS  SECTOR  ,   MAX (  DECODE (  CODTIPODELICENCIA  ,   1   ,  CANTIDAD  )   ) AS   "COMPUTADORA" ,   MAX (  DECODE (  CODTIPODELICENCIA  ,   2   ,  CANTIDAD  )   ) AS   "Employee" ,   MAX (  DECODE (  CODTIPODELICENCIA  ,   3   ,  CANTIDAD  )   ) AS   "PROCESADOR" ,   MAX (  DECODE (  CODTIPODELICENCIA  ,   4   ,  CANTIDAD  )   ) AS   "Universal Power Units" ,   MAX (  DECODE (  CODTIPODELICENCIA  ,   5   ,  CANTIDAD  )   ) AS

Java 3D Racing Game

Este proyecto realizado para el curso de Arquitectura 2 de la carrera de Ingeniería en Ciencias y Sistemas de la USAC, muestra como mapear texturas, modelar sólidos a mano, detección de colisiones, seguimiento de terreno, control de cámara y en general todos los elementos que participan en el mundo virtual en el que se desarrolla el juego. https://github.com/rudygt/java3d-car Descargar Código Fuente

Como Hacer un Juego en Ensamblador, Modo 13h

El modo 13h es el modo de vídeo mas simple de usar, debido a la forma en la que esta proyectado en memoria, con una resolución de 320 * 200 pixels y una profundidad de 256 colores, el área de vídeo esta mapeada en 64 000 bytes de memoria, a razón de 1 byte de color por cada pixel de la pantalla. este modo es muy popular debido a que es fácil direccionar cada pixel, la formula es básicamente offset = 320 * y + x y la direccion base de la memoria de video es 0xA000 entonces se puede acceder a la memoria de video, con operaciones normales sobre la memoria del sistema. este ejemplo es básicamente una plantilla para un juego en ensamblador, contiene todos los elementos necesarios para desarrollar un juego, función de retardo (delay), doble bufffer, sincronizacion vertical, manejo de teclado, ciclo de render activo, fps constantes etc. Descargar Código Fuente

Matriz Ortogonal, Estructura de Datos en Java

una matriz ortogonal es una estructura de datos que implementa una tabla con memoria dinámica, se puede buscar o recorrer por uno de los dos aspectos de orden, en este ejemplo en particular, la tabla almacena Vehículos, y las filas representan las marcas de los vehículos y las columnas representan los modelos. codigo fuente del Nodo de la Matriz Ortogonal public class NodoMatriz { //Direccionamiento de la matriz con el movimiento de los nodos... private NodoMatriz mArriba = null ; private NodoMatriz mAbajo = null ; private NodoMatriz mDerecha = null ; private NodoMatriz mIzquierda = null ; private String mMarca = "" ; private int mModelo = 0 ; private ListaCarro mElementos = null ; public NodoMatriz ( ) { //Constructor } //Los set y gets... public void setMarca ( String pMarca ) { mMarca = pMarca ; } public String getMarca ( ) { ret

Sincronizar Procesos con Semáforos en Linux

Este problema fue planteado como practica en el curso de Sistemas Operativos 1 de la carrera de ingeniería en Ciencias y Sistemas de la Universidad de San Carlos de Guatemala, el problema básicamente es coordinar a un grupo de turistas para que puedan cruzar un puente, el cual tiene un limite en el peso soportado, para esto algunos turistas deben esperar en la entrada del puente hasta que el peso libre sea suficiente para soportarlos. la implementacion se realizo con semáforos del sistema y memoria compartida, los elementos básicos de IPC (Comunicación Entre Procesos). se utilizaron las librerías #include <sys/ipc.h> #include <sys/shm.h> #include <sys/sem.h> y las funciones semop ftok shmget shmat semget semctl shmdt shmctl Descargar Código Fuente

Encuesta de opciones en Java

Uno de los problemas que se presentaron durante Coecys 2010 fue la asignación de conferencias a los salones disponibles, el asunto es que teníamos dos salones de diferentes capacidades, el salón A con capacidad para 200 personas, y el salón B con capacidad para 100 personas. el día lunes hubo mucha gente que prefería la conferencia del salón pequeño, incluso algunos no pudieron ingresar, para resolver este asunto, se creo un pequeño programa, para registrar que conferencia era la preferida (1 entre dos opciones) y así asignar la conferencia que mas "votos" tenia en el salón grande y evitar el problema del día anterior. Descargar Código Fuente

QMutex como sincronizar Threads en QT

Este ejemplo es muy simple y muestra el uso básico de QMutex para forzar la exclusión mutua entre una serie de Threads que acceden a una región critica, se define una clase ThreadR que implementa el acceso a la región critica, dicha región critica utiliza los métodos lock() y unlock() de la clase QMutex para garantizar que solo uno de los threads accede a la variable protegida.  void run ( ) { while ( true ) { mutex . lock ( ) ; Reportar ( mNumero ) ; mutex . unlock ( ) ; sleep ( ( rand ( ) % 5 ) + 1 ) ; } } Descargar Código Fuente

GuateXGuate El Regreso

Luego de un tiempo fuera de servicio, regresa GuateXGuate. GxG es una organización formada por un grupo de estudiantes de ingeniería en Ciencias y Sistemas de la Universidad de San Carlos de Guatemala, el proyecto nació con el deseo de fomentar el intercambio de conocimiento entre los estudiantes de nuestra carrera, básicamente nos dimos cuenta que mucho del conocimiento que hemos obtenido a lo largo de nuestras largas horas de trabajo y sufrimiento podía ser transferido a las nuevas generaciones, entre compañeros, fomentando la unidad y en fin el  crecimiento de la facultad como un todo, pues si todos trabajamos por mejorar nosotros mismos, pero también por transmitir lo que hemos aprendido de forma inmediata a nuestro entorno mas próximo estamos ayudando no solo a crear mejores profesionales, también mejores personas, que compartan nuestros principios de acceso universal al conocimiento, sin egoísmo ni envidia, sin pensar que porque a mi me ha costado, mis compañeros también deben su

Como Ejecutar NASM

la sintaxis para ejecutar nasm para ensamblar archivos tiene la siguiente forma general nasm -f formato archivo [-o salida] por ejemplo 1) nasm -f elf hola.asm ensambla el archivo hola.asm y genera el archivo hola.o con formato ELF 2) nasm -f bin hola.asm -o hola.com ensambla el archivo hola.asm en modo raw, y genera la salida en el archivo hola.com otra de las opciones interesantes es la opción "l" la cual genera un listado de los codigos hex generados para cada una de las instrucciones nasm -f coff hola.asm -l revisar.lst normalmente después de ensamblar se necesita enlazar el archivo para obtener un ejecutable (excepto en el formato bin, que genera archivos .com de DOS), para este paso ya dependemos de la plataforma por ejemplo en Gnu/Linux tenemos "ld" para enlazar, mientras que en Windows dependiendo de nuestro ide o sdk "link.exe", "tlink.exe" etc

Lineas 2D Animación Java OpenGL ( JOGL )

esta animación muestra una serie de lineas rebotando en la pantalla, cada linea tiene dos puntos asociados con una velocidad y dirección dados, la animación permite agregar lineas, borrar lineas, cambiar el color de todos los vértices, cambiar la velocidad y dirección de todos los vértices y modificar el borrado del fondo de la pantalla o dejar el rastro. Descargar Código Fuente

Estrellas Animación Java con JOGL

Esta animación es  muy simple, básicamente una serie de puntos aleatorios, pero que tienen cierta secuencia de cambio a manera de sprite, cada estrella es representada por un punto de un color dado, pero cada estrella cuenta de tres etapas en las que dibuja de forma diferente sus puntos, lo que causa el efecto del destello. Descargar Código Fuente