Entradas para el mes Noviembre de 2006

Nuevo ordenador MSX

Martes 28 de Noviembre de 2006 a las 23:59

Ha salido a la venta un nuevo modelo de ordenador MSX. Ha sido creado por la empresa D4 Enterprise. Es un MSX2 con 256KB de RAM. Es de reducidas dimensiones y cuenta con entradas y salidas para los periféricos de hoy en día tales como PS2, USB, ranuras para tarjetas SD/MMC, etc. pero también para los antiguos joysticks del clásico MSX y ranuras para los viejos cartuchos.

Hay que reconocer que tiene muy buena apariencia:

Nuevo MSX.
Nuevo MSX.

Se puede encontrar más información es esta página

Y para quien sepa japonés la pagina web de la empresa. En ella se pueden ver varias fotografías del ordenador.

A este paso, por el número de post que llevo sobre el MSX, voy a tener que crear una nueva categoría solo para el MSX.

El juego de la pelotita

Martes 14 de Noviembre de 2006 a las 23:53

Un juego curioso. Consiste en llevar la pelotita hasta el cuadrado rojo trazando caminos con el ratón. Es bastante fácil. Es un juego muy sencillo pero engancha. Está desarrollado con Flash.

Este es el enlace al juego

Accediendo a las tablas del sistema de Oracle

Domingo 12 de Noviembre de 2006 a las 23:58

En este artículo vamos a ver como acceder a las tablas del sistema de Oracle, para poder obtener información sobre las bases de datos, por ejemplo las tablas de una base de datos, los campos de los que consta, los procedimientos almacenados, las claves primarias, etc.

Esta información nos puede ser bastante útil por ejemplo para documentar la base de datos de forma automática, para crear los procedimientos almacenados automáticamente en función de los campos de las tablas o cualquier otra utilidad que se nos ocurra.

En el trabajo me he creado un generador de procedimientos almacenados que crea los PA de inserción, modificación, borrado y consulta de cualquier tabla de la base de datos, el cual nos está ahorrando mucho esfuerzo y horas de desarrollo a todo el equipo. La base de datos sobre la que estamos desarrollando la cambian continuamente, por lo que hay que rehacer los procedimientos almacenados cada dos por tres y gracias a está herramienta es automática la actualización de los PA.

A continuación paso a especificar algunas de las consultas a las tablas del sistema que pueden resultar de mayor utilidad:

La consulta que nos devuelve todas las tablas es la siguiente:


SELECT TABLE_NAME FROM USER_TABLES

Para obtener información sobre los campos o columnas de la tabla “NOMBRE_DE_LA_TABLA”, incluyendo el nombre del campo, el tipo de datos (incluyendo precisión y escala si procede), si admite nulos y los comentarios que tenga asociados utilizaremos la siguiente consulta:


SELECT COLS.*, COM.COMMENTS
	FROM SYS.ALL_TAB_COLUMNS COLS
	LEFT JOIN SYS.ALL_COL_COMMENTS COM ON COLS.TABLE_NAME = COM.TABLE_NAME AND COLS.COLUMN_NAME = COM.COLUMN_NAME
	WHERE COLS.OWNER = USER AND COM.OWNER = USER AND COLS.TABLE_NAME = 'NOMBRE_DE_LA_TABLA' 

Si queremos obtener los campos que forman la clave principal o primary key (PK) de la tabla “NOMBRE_DE_LA_TABLA” usaremos:


SELECT CONS.TABLE_NAME, COLS.COLUMN_NAME, COMMENTS
	FROM SYS.ALL_CONSTRAINTS CONS, SYS.ALL_IND_COLUMNS COLS
	LEFT JOIN SYS.ALL_COL_COMMENTS COM ON COLS.TABLE_NAME = COM.TABLE_NAME AND COLS.COLUMN_NAME = COM.COLUMN_NAME
	WHERE COLS.INDEX_OWNER = USER AND CONS.OWNER = USER AND COM.OWNER = USER AND CONS.CONSTRAINT_TYPE = 'P' AND CONS.CONSTRAINT_NAME = COLS.INDEX_NAME AND CONS.TABLE_NAME ='NOMBRE_DE_LA_TABLA'

Para obtener la información de todos los triggers de la base de datos, incluyendo su nombre, código fuente del trigger, el evento que lo dispara, la tabla a la que esta asociado, etc:


SELECT * FROM SYS.ALL_TRIGGERS WHERE OWNER = USER 

La siguiente consulta nos devolverá todas las claves foráneas (FK’s) de la tabla “NOMBRE_DE_LA_TABLA”


SELECT * FROM  SYS.ALL_CONSTRAINTS
	WHERE OWNER = USER AND TABLE_NAME ='NOMBRE_DE_LA_TABLA' AND CONSTRAINT_TYPE = 'R'

Por último la siguiente solicitud a la base de datos nos devolverá el código fuente de todos los paquetes de la base de datos, incluyendo tanto la cabecera como el cuerpo. Se devuelve un registro por cada línea del paquete.


SELECT * FROM SYS.ALL_SOURCE
	WHERE OWNER = USER AND INSTR(SYS.ALL_SOURCE.TYPE,'PACKAGE') > 0
	ORDER BY NAME, TYPE, LINE

Es importante destacar que en las consultas anteriores al filtrar por una determinada tabla su nombre debe ir en mayúsculas.

El filtro de OWNER = USER lo establecemos para obtener únicamente la información de los objetos de los que somos propietarios.

Estado del proyecto a 06/11/2006

Lunes 6 de Noviembre de 2006 a las 23:58

Desde el último post en el que hablé del estado del proyecto estos han sido los progresos que he realizado:

He creado el “motor en tiempo de ejecución” que permite procesar las instrucciones generadas por el “generador de instrucciones” a partir de las salidas de los analizadores léxico, sintáctico y semántico.

He implementado un pequeño motor gráfico o mejor dicho clase gestora de gráficos, ya que no creo que tenga la suficiente entidad como para considerarla un motor. Esta clase encapsula el acceso a las DirectX 9 proporcionando funciones de más alto nivel.

También creé unas clases para encapsular la gestión de las entradas del ratón y el teclado haciendo uso también de DirectX 9

Ahora mismo estoy trabajando en el desarrollo de diversos editores que en conjunto constituirán el editor de aventuras gráficas. Entre ellos están el editor de escenarios, el del protagonista, el de conjuntos de imágenes (tilesets), etc.

Aniversario

Domingo 5 de Noviembre de 2006 a las 23:58

Hoy 5 de Noviembre este blog cumple sus primeros cien días de existencia. Como se suele hacer en estos casos es el momento de hacer balance. Como esperaba y comente hace tiempo, el mantener este blog me esta ayudando a ser constante con el proyecto y no abandonarlo como me paso con algún proyecto anterior de dimensiones similares.

También me resulta muy gratificante compartir las experiencias, código y conocimientos con otros y pensar que probablemente a alguien le sirvan de ayuda.

Durante estos días he publicado 34 posts y he recibido 1.962 visitantes únicos que han visto 3.977 páginas.
El proyecto va avanzando lenta pero constantemente. Durante estos días el proyecto del motor de aventuras gráficas ha avanzado bastante, pero no todo lo que yo habría querido debido a la falta de tiempo. No me planteo plazos para acabarlo ya que no podrían ser realistas. La evolución del proyecto se puede ver en los sucesivos post que he publicado sobre el estado del proyecto