Instalando SQL Developer

Logo SQL DeveloperPara unas prácticas de la facultad, necesito emplear el SQL Developer para conectarme a una base de datos Oracle. Podría instalarlo en Windows, pero hace mucho que no lo uso realmente (casi todo el trabajo lo hago desde Kubuntu), así que vamos a escribir aquí el tutorial para instalarlo. Realmente es sencillo, pero por si acaso quiero tenerlo a mano, que soy muy olvidadizo… Sigue leyendo

Jornadas 2013

Otro año, otras jornadas. Esta vez, las JLA han sido un poco extrañas, más relajadas y a la vez más caóticas.

  • Descansadas: Había más gente, con muchas ganas e ilusión por trabajar. ¡Qué raro se me ha hecho no tener que estar de dos a cuatro horas seguidas en consigna! Se han portado muy bien y yo he podido hasta dormir la siesta un par de días. ¡Podría haberme apuntado a actividades de haberlo querido! Pero…
  • Caóticas: El primer día, descubrimos que la impresora no funcionaba. No hubo forma de conseguir otra, así que fue necesario improvisar para poder manejar las actividades. Conseguimos imprimirlas el primer día utilizando la impresora de la residencia, y a partir de se las llevaba alguien a su casa y las imprimía allí. Además, las carpas volvieron a salir volando y se estropearon, así que no hubo carpas nada más que para los wargames.

El próximo año, necesitaremos alguna solución para las carpas.

En cuanto a MyAcolito, funcionó bien teniendo en cuenta las limitaciones de la impresora. Es más, aproveché para un pequeño experimento… ¡el Acolito Pi! Sigue leyendo

Acolito y JSON

dadosERAComo se acercan las Jornadas 2013, he vuelto a trastear en el código de MyAcolito buscando facilitarme la vida.

Aunque ahora mismo funciona bastante bien y no pienso hacer grandes cambios de aquí al comienzo de las jornadas, sí que hay algo que quería darle desde hace tiempo, y es el soporte de ejecución de scripts. Añadir las actividades una a una (y a los asistentes, ya que estamos), está muy bien siempre que se haga con tiempo y poco a poco… pero ese es un lujo del que casi nunca se dispone. Además, de un año para el siguiente puede cambiar drásticamente el formato en el que te envían los datos (formularios webs, correos electronicos pre-formateados, documentos en formato WORD, hojas de cálculo, etc…) Sigue leyendo

MyAcolito sigue avanzando

Al final, el viejo dicho de los programadores vuelve a cumplirse: el 90% del trabajo representa el 10% del código, y el 10% restante es para el 90% restante..
Una vez que el procedimiento general de modelos y acolitos ha quedado asentado, desarrollar los que faltan se vuelve casi trivial; aún así, nunca hay que fiarse. Hay un corolario que dice que en realidad el 90% por ciento de codigo restante representa el 90% de esfuerzo.

Sigue leyendo

Menos mal :D

Al final, el diseño ha sido más flexible de lo que me temí en un principio. Hace tiempo que no revisaba los diferentes scripts para la base de datos, y afortunadamente fui previsor e incluí una buena cantidad de procedimientos almacenados para casi todo lo que se me ocurrió… ¡al menos, concerniente a los asistentes y grupos!

Con un par de triggers nuevos concernientes a la tabla de grupos, la cosa funciona bastante bien; es más, he podido añadir la operación de DELETE al modelo de asistentes de forma consistente gracias a los procedimientos que ya había descrito. ¡Y parece bastante consistente! Al menos, a primera vista: todavía no he podido hacer las pruebas de estrés con dos o más ordenadores atacando la misma base de datos. De cualquier modo, no creo que durante las jornadas se vayan a eliminar asistentes… eso ocurrirá durante la fase previa, cuando se van a ir introduciendo en el sistema los datos.

Ahora, sólo queda por añadir las opciones de cambio de grupo (aislar a un asistente de grupo, crear nuevos grupos, esas cosas…) y vigilar que sean consistentes con las habitaciones.

De vuelta al tablero de dibujo…

Sé que no debería de hacer las cosas así, que tendría que tener un diseño de la base de datos desde el primer momento, antes incluso de ponerme a picar código… pero siempre hay distracciones y detalles que se te escapan.

He vuelto a la base de datos y estoy de nuevo trabajando con los triggers para poder controlar tanto las reservas de habitaciones como la inserción de nuevos grupos. Como las habitaciones se asignan a los grupos y no a las personas, eso significa que cuando se crea un nuevo grupo hay que introducir un nuevo registro en la tabla que relaciona a los grupos con las habitaciones (por defecto, van a una habitación fantasma llamada ‘Sin asignar’, la cual en realidad no existe). Los procedimientos y triggers de la base de datos han de ser modificados en consonancia con este diseño, para que no queden cuelgues raros.

¡Y lo más divertido es que no estoy seguro de si desde un trigger de MySQL es posible llamar a un procedimiento almacenado! Recuerdo haber leído en alguna parte que los procedimientos anidados (procedimientos que llaman a otros procedimientos) no se permitían dentro de MySQL, pero… ¿a qué versión de MySQL se referían?

Un pequeño lío. Menos mal que el diseño es consistente y sólo hay que hacer cambios en unos pocos triggers y procedimientos…