Gnome: reiniciar gnome-shell

Para reinicar Gnome-shell, por ejemplo cuando alguna vez se queda colgado o se dispara el consumo de memoria.

1) Pulsamos Alt F2  simultaneamente.
2) Escribimos r y le damos al enter.

Mantendrá todos los programas abiertos, por lo que es más cómodo que cerrar ya brir la sesión o matar el servidor X ( control alt retroceso  simultaneamente).

Md5 en oracle

Para calcular md5 en Oracle podemos crear la siguiente función:

create or replace

FUNCTION md5hash (str IN VARCHAR2)
    RETURN VARCHAR2
    IS v_checksum VARCHAR2(32);

    BEGIN
        v_checksum := LOWER( RAWTOHEX( UTL_RAW.CAST_TO_RAW( sys.dbms_obfuscation_toolkit.md5(input_string => str) ) ) );
        RETURN v_checksum;
        EXCEPTION
            WHEN NO_DATA_FOUND THEN
            NULL;
        WHEN OTHERS THEN
            -- Consider logging the error and then re-raise
            RAISE;
    END md5hash;

Ejemplo de uso:
select md5hash('diego') from dual;
Resultado:
078c007bd92ddec308ae2f5115c1775d

Si nuestra idea es almacenarlo como raw:

create or replace
FUNCTION md5raw (str IN VARCHAR2)
    RETURN RAW
    IS v_checksum VARCHAR2(32);

    BEGIN
        v_checksum :=  UTL_RAW.CAST_TO_RAW( sys.dbms_obfuscation_toolkit.md5(input_string => str) ) ;
        RETURN v_checksum;
        EXCEPTION
            WHEN NO_DATA_FOUND THEN
            NULL;
        WHEN OTHERS THEN
            -- Consider logging the error and then re-raise
            RAISE;
    END md5raw;

Ejemplo de uso (crear tabla, crear campo, insertar, consultar):
drop table tmp_die_md5;
create table tmp_die_md5(md5 raw(16) );
insert into tmp_die_md5 select md5raw('Diego') from dual;
select * from tmp_die_md5 where md5= '4FB845C67D91BCB3178498FC6FE1FEDC' ;
select * from tmp_die_md5 where md5= ( md5raw('Diego'));
Fuente:
http://www.pilcrow.nl/2010/12/md5-function-in-oracle

gnome-terminal : no arranca

Si el terminal de gnome (gnome-terminal) no funciona, y al ejecutarlo desde otra consola obtenemos el siguiente error:
> gnome-terminal
Falló en GConf: No se pudo contactar con el servidor de configuración: Error de D-Bus: El demonio de GConf se está apagando en este momento
Ejecutamos lo siguiente:
killall gconfd-2

Oracle obtener fecha de creación de una tabla

Para obtener cuando se creó una tabla usaremos la siguiente consulta:

select object_name, created from user_objects
where object_name = 'NOMBRE_TABLA'
AND object_type = 'TABLE';
 Para obtener todas las fechas de creación de todas las tablas del usuario:

select object_name, created from user_objects
where object_name in (select table_name from user_tables )
AND object_type = 'TABLE'
order by created desc;

BASH : utilizar echo con saltos de línea

Para poder insertar saltos de línea con el comando echo en linux se usa la siguiente sintaxis :

echo -e "\n linea 1 \n linea 2 \n" > salida.txt
Se usa el -e y el salto de línea se reprenta con \n, y todo va entrecomillado.

TVEenLinux : la television en Opensuse


Para ver la televisión
0) AÑadimos el repositorio de packman para el mplayer:
sudo zypper ar -f http://packman.inode.at/suse/openSUSE_12.2/ repo-packman
1) Instalamos las dependencias:
 sudo zypper in mplayer rtmpdump curl

2) rtmpdump no está en los repositorio habituales, usamos :
http://software.opensuse.org/package/rtmpdump?search_term=rtmpdump

3) Descargar el archivo de:
wget http://www.tvenlinux.com/TVenLinux.sh
4) Darle permisos de ejecución:
chmod u+x TVenLinux.sh
 Más información en :
http://www.tvenlinux.com/

HP obtener el serial number en linux (Suse)


Para obtener el serial numer de productos HP en linux mediante línea de comandos:

Para el servidor (en Suse) :
sudo dmidecode | egrep -i "serial|product"

Para una cabina de discos y la controladora:
hpacucli  ctrl all show

ORACLE: ejecutar procedimiento y paquetes con el usuario actual

Si creamos un procedimiento o paquete con un usuario (UsuarioDueno), y le damos permisos de ejecución a otros (UsuarioAutorizado), el procedimiento se ejecuta por defecto como si lo ejecutase  el  UsuarioDueño.

Ej, supongamos que tenemos un procedimiento que cuenta las tablas del usuario  ( select count(*) from user_tables ) y nos devuelve un número:

create or replace function cuenta return integer is
  salida integer;
begin
  execute immediate 'select count(*) from user_tables' into salida;
  return salida;
end;
/

Y le damos permisos de ejecucion a UsuarioAutorizado:
grant execute on cuenta  to UsuarioAutorizado;

Si ejecutamos el procedimiento:
set serveroutput on;
declare
  tablas integer;
begin
  tablas := cuenta();
  dbms_output.put_line(tablas);
end;
/
Tanto si lo hacemos como UsuarioDueno como UsuarioAutorizado nos saldrá el mismo número de tablas. Esto es a que siempre se accede a UsuarioDueno.user_tables, cuando lo que en realidad queremos es que se acceda a  UsuarioAutorizado, que es nuestro usuario actual (current user) y el usuario que está ejecutando.

En Oracle, hay dos clausulas para controlar el comportamiento:
AUTHID CURRENT_USER  : ejecutar el paquete/función como si fueses el usuario que lo lanza.
AUTHID DEFINER (valor por defecto): ejecutar el procedimiento con los permisos del creador de la función.


Nosotros en este caso tenemos que decir que se ejecute como AUTHID CURRENT_USER. Para ello definimos de nuevo la función, añadiendo:

create or replace function cuenta return integer AUTHID CURRENT_USER is
  salida integer;
begin
  execute immediate 'select count(*) from user_tables' into salida;
  return salida;
end;
/

Si estamos con un paquete, hacemos lo mismo y lo definimos justo antes del "as":

create or replace package contador AUTHID CURRENT_USER  as
      FUNCTION cuenta RETURN integer;
end contador
/
Con esto conseguirmos que un procedimiento se ejecute con otro usuario, el usuario actual, el que ejecuta programa.


Gnome term : cambiar título de la ventana dinámicamente

Para cambiar dinámicamente el título del teminal de gnome, ejecutaremos el siguiente comando:

xtermset -title  'Nuevo titulo'
Este comando también permite modificar otras propiedades como el color de la letra, el fondo....


Linux: refrescar la caché de fuentes

Para refrescar la lista de fuentes del sistema ejecutamos

fc-cache -v -f