martes, 28 de diciembre de 2021

Tutorial Oracle PL-SQL (II)

16. Triggers

Un trigger ejecuta automáticamente un código cada vez que se realiza una acción concreta sobre la base de datos.

  • Puede revisar las inserciones y modificaciones en la tabla para asegurar la coherencia de datos
  • Registra todos los cambios realizados y el usuario que los hizo 
  • No pueden ser invocados directamente, son procesos automáticos
  • No devuelven ni reciben parametros
  • No devuelven consultas sql

 

Tipos de triggers:

  • before: se ejecutan antes de la acción sobre la base de datos
  • after: se ejecutan después de la acción sobre la base de datos
  • de evento: pueden ser por un insert, update o delete
  • de nivel: a nivel de fila afectada por la acción ó a nivel de sentencia que puede afectar a varias filas

 

Ejemplo de disparador tipo before, antes del evento insert.


 create or replace trigger tr_entrada_diario
before insert
on libros
begin
    insert into control values ( user, sysdate);
end tr_entrada_diario;

 

Si se insertan un registro en la tabla con dos usuarios diferentes quedará registrado automaticamente en la tabla control

Desde usuario ARTURO
 insert into libros 
values( 1, 'Harry Potter y la camara secreta','J. K. Rowling','everest',20.50);
Desde usuario SYSTEM
  insert into ARTURO.libros 
values( 2, 'Harry Potter y la orden del fenix','J. K. Rowling','everest',20.50);

18. Triggers FOR EACH ROW

Otro ejemplo es cuando se borran registros. En el caso que se borren libros, por cada libro borrado se escribe un registro en la tabla CONTROL.

  create or replace trigger tr_borrado_libro
before delete
on libros
for each row
begin
    insert into control values (user, sysdate,'BORRADO');
end tr_borrado_libro;
-- Una vez creado el disparador se borra un registro de la tabla libros
DELETE from ARTURO.LIBROS where CODIGO = 5;

lunes, 27 de diciembre de 2021

Tutorial Oracle PL-SQL (I)

1. Secciones de un bloque pl-sql:


DECLARE

- - sección declarativa, se declaran variables, constantes y cualquier dato accesible en todo el bloque

BEGIN

- - (obligatoria) sección ejecutable, inicia las sentencias del pl


EXCEPTION

- - sección de control de errores y de resultados no esperados
END;
- - (obligatoria) fin del pl

1.1. Tipos de bloque pl-sql

Sin nombre: Se construyen dinámicamente dentro de otro pl y se guardan en memoria.

BEGIN
   DBMS_OUTPUT.PUT_LINE('nombre');
END;



Con nombre: Son funciones o procedimientos con nombre y se guarda en la propia base de datos. Empiezan así:

CREATE OR REPLACE PROCEDURE ver_usuario(nomusu VARCHAR2) 


2. Variables

Primero hay que habilitar la salida de script en la pantalla del editor, así podremos mostrar mensajes y depurar el código

set serveroutput on;

Creamos variables en la sección DECLARE



   DECLARE

    edad integer := 50;
-- define un número entero llamado edad y le asigna el valor 50

    nombre varchar2(40) := 'John Doe';
-- define un texto con tamaño máximo 40 y le asigna un valor

    id char(7) := 'AD00014';
-- define un texto con tamaño fijo de 7 y le asigna un valor

    sueldo number(7,2) := 35000,00;
-- define un tamaño total y cuantas posiciones serán decimales. 
-- En el ejemplo de 7 posiciones, 5 son enteros y 2 serán decimales fecha_actual date := sysdate; -- define una variable de tipo fecha y le asigna la fecha actual del sistema fecha_nacimiento date := to_date('23/05/1971','dd/mm/yyyy'); -- Define una variable tipo fecha asignándole la fecha desde un formato concreto cargo varchar2(50) default 'Empleado'; -- variable tipo texto con un valor por defecto


Mostramos el valor de las variables en la sección BEGIN



BEGIN

 dbms_output.put_line(‘Nombre : ‘ || nombre);
-- usa una función del sistema dbms_output para mostrar el nombre
-- La dos barras || encadenan un texto entre comillas simples con el valor de 
la variable nombre


PL completo.



DECLARE
    edad integer := 50;
    nombre varchar2(40) := 'John Doe';
    id char(7) := 'AD00014';
    sueldo number(7,2) := 35000.00; 
    fecha_nacimiento date := to_date('23/05/1971','dd/mm/yyyy');
    cargo varchar2(50) default 'Empleado';
BEGIN
    DBMS_OUTPUT.PUT_LINE(nombre || '. ' || edad ||' años de edad');
    DBMS_OUTPUT.PUT_LINE('Nació el ' || fecha_nacimiento);
    DBMS_OUTPUT.PUT_LINE(cargo || ' ID-' || id || ', salario ' ||
sueldo || ' €/año'); END;



Salida por consola:

John Doe. 50 años de edad
Nació el 23/05/71
Empleado ID-AD00014, salario 35000 €/año

Procedimiento PL/SQL terminado correctamente.


Placa con letras 3d

 

Placa con letras 3d en mesa de madera


El cubo inicial es de 2m, lo usamos de mesa de despacho. Lo reducimos escalando para las proporciones para un tablero y le ponemos nombre. Después lo ocultamos para que no estorbe al hacer la placa que será mucho más pequeña



El texto se añade con Add → Text

Para editar el texto nos vamos a modo edición “Edit mode” 

 

 

 


Y para la extrusión, tipo de letra, alineación … seleccionando el texto y en la ventana de herramientas buscamos propiedades del texto.

 


 

Extruimos y cambiamos el tipo de letra. Ya solo queda colocarlo todo y empezar con texturas e iluminación

 

 


 

 

Estructura de nodos para la textura de madera

 


 

 

 

Render final

 


 

 

 

 

 

 

 

 


Puzzle infantil

 

Puzzle infantil de seis piezas


Pinchando con el botón derecho en el borde del area de dibujo ponemos “split” para dividr la vista en dos. Hacemos lo mismo en horizontal y vertical para tener cuatro vistas a la vez.

 



 

 

Vamos cambiando la ventana con la tecla “ º ” hasta tener las vistas deseadas.

 


 

Creamos una curva → Menu add → curve bezier

Después pasamos del modo select object al modo edit object


Triangulo: cilintro con 3 caras

Circulo: cilindro

Cuadrado: cubo

Pentagono: cilintro con 5 lados

Rentanculo: cubo escalado en un eje

Estrella: cilindro de 10 lados, se escalan los lados alternos

 


 

 

Texturas:


Pestaña material por defecto sin material añadido

 


Para usar el compositor de nodos hay que crear una vista nueva ( split area) y elegir el editor shader editor



En el editor de nodos se crean inputs que se pueden mezclar con Mix shader y se asigan al nodo Output


Ejemplo de material mezcla de textura de madera con color rojo asignado al tablero.

 

 


 

Operaciones booleanas recorte.


Seleccionar el objeto a recortar → Add modificador → Boolean → seleccionar el objeto que corta y aplicar

 


 

Modificador torno:


Creamos una curva bezier → add → curve → bezier

La colocamos recta en la vista frontal.

Pasamos a Edit mode para recolocar los puntos y los modificadores. Para añadir más puntos de control : CTRL + Botón derecho.

Para el torneado → Modificador ( llave inglesa) → screw → Ajustar el eje y las caras .

 



Mapeo de texturas:


Necesita un nodo de imagen, para cambiar el color se usa en MixSader y para las coordenadas un nodo Mapping + nodo texture mapping

 


 



 

 

 

viernes, 1 de mayo de 2015

Disparo contínuo

La opción de disparo contínuo permite hacer una ráfaga de fotos para capturar con todo detalle un evento que suceda rápido y no se pueda repetir.
Para un grupo de personas que posan juntos, tener varias fotos consecutivas evita que alguien salga con los ojos cerrados por ejemplo.
Eventos puntuales, soplar velas de cumpleaños, puesta de anillo en bodas ... permite elegir el mejor momento de la secuencia.

Pasos con cámara Canon EOS 100D

  • Encendemos la cámara con el selector en modo P
  • Pulsamos el botón Qset y seleccionamos la opción disparo único

  • Aquí se permite elegir autodisparo en 10seg., autodisparo en 2 seg y disparo contínuo al mantener el botón de disparo.

Seleccionamos esta ultima opción


  • Ya podemos mantener el botón pulsado y sacará fotografías contínuas.

domingo, 12 de abril de 2015

Conceptos básicos de fotografía

Velocidad de obturación:

Es el tiempo en segundos o fracciones de segundo  en el que permanece el objetivo abierto para tomar la foto.

Con una velocidad de obturación muy alta 1/2000 segundos:
  • Las imágenes en movimiento quedarán congeladas y con detalle
  • Necesita muy buena iluminación ya que estará recibiendo luz muy poco tiempo



 Con una velocidad de obturación muy baja 1/4, 1/2 ó 1 segundo
  • Recibe luz más tiempo, por lo que se pueden tomar fotografías con poca luz
  • Necesita un tripode si no, sadrá movida la imagen
  • Si no es demasiado baja 1/8 ó 1/16 segundos se puede usar el estabilizador de imagen, si la cámara lo tiene
  • El agua de las fuentes queda en una bruma interesante

 Apertura:


La apertura  ( F )  indica la apertura del diafragma interior de la cámara. Un "F"alto como F22 indica una apertura muy pequeña y un F bajo como F1.4 indica una apertura casi completa del diafragma.


Si cerramos el diafragma usando un F alto ( F16 por ejemplo):
  • Entra poca luz, por tanto abrá que poner baja velocidad de obturación para que entre luz durante más tiempo y así no saldrá oscura la foto.
  • La profundidad de campo será mayor, osea, que enfocará tanto lo cercano como lejato
  • Ideal para fotografiar paisajes

Si abrimos mucho el diafragma usando un F bajo como 1.4:
  • Va a entrar el máximo de luz por lo que la velocidad de obturación debe ser alta, o saldrá sobreexpuesta (demasiada luz).
  • La profundidad de campo es menor, sólo va a enfocar lo que está cerca, el fondo saldrá difuminado.
  • Perfecto para retratos a corta distancia, platos de comida o destacar detalles cercanos.


ISO:

 El ISO es la iluminación de la imagen, puede ajustarse entre 100 baja la iluminación o 9800 sube la iluminación.

Con una ISO de 100:
  • Es util si hay demasiada luz y se va a hacer una larga exposición, velocidades de obturación de varios segundos o más.
  • Oscurecerá la imagen.
Con una ISO de hasta 9800:
  • Aumenta la luminosidad aún en ambientes oscuros, aunque le añade ruido a la imagen .
  • Es la mejor opción si el ambiente es oscuro,  son fotos nocturnas  y no es posible aumentar la iluminación. El ruido que genera le puede dar un toque creativo.







martes, 31 de marzo de 2015

Fotografiar objetos muy pequeños

Pasos para fotografiar objetos pequeños a corta distancia

Ejemplo con Cámara Canon EOS 100D

  • El entorno debe estar bien iluminado, a ser posible luz natural. Las fotos a corta distancia con flash no suelen quedar bien.
  • La configuración básica de la cámara
    • Enfoque automático AF
    • Estabilizador de imagen activo (ON)
    • Formato de imagen RAW
  •  Modo AV ( con ISO automático, distancia focal automática y sin flash)
Como siempre el mejor método es sacar muchas fotos y probar diferencias opciones.
A unos  60 cm de distancia del objeto usar el enfoque automático. Una vez enfocado aumentar el zoom optico y acercarse un poco. Si se pierde el enfoque retirarse un poco hasta que vuelva a enfocar correctamente.
Hemos usado el visor digital para comprobar los puntos de enfoque. Pulsar el disparador a la mitad para enfocar y a fondo para hacer la foto.

El fomato RAW de canon (.CR2) debe convertirse a un tipo de imagen manejable por un programa de retoque de imágenes. Se puede usar el propio sofware de la cámara o algún plugin tipo Adobe Digital Negative Converter, que pasa las imágenes a .DNG que ya se pueden abrir con Photoshop.

El objetivo es centrar un punto pequeño con el máximo de detalle y que todo el fondo quede desenfocado.