lunes, 15 de junio de 2009

Discos holograficos de 5 dimensiones

Cuando están a punto de salir los nuevos discos holográficos (2011-2012) con una capacidad similar a 100 DVD's, investigadores Australianos han mejorado este soporte añadiéndole dos dimensiones más.

Los actuales discos ópticos almacenan la información en 2 dimensiones (la superficie del disco), la capacidad se ha ido aumentando con el uso de varias capas (con diferentes longitudes de onda) apretando estas y encogiendo cada vez más la información, con menores longitudes de onda con lo que necesitamos un lector más sensible, reduciendo la separación entre pistas y reduciendo el dominio de la celda donde se graba el dato.

La tecnología holográfica, introduce una nueva dimensión (profundidad) para almacenar los datos, pero los investigadores Australianos han ido un paso más añadiéndole dos dimensiones más, un total de 5 dimensiones.

El nuevo soporte ha alcanzado las 5 dimensiones, incorporando nanopartículas como unidades de información, las cuales tienen diferentes colores y polarización. He aqui las dos nuevas dimensiones color y polarización, con esto aumentamos exponencialmente la capacidad de almacenamientos llegando incluso (teóricamente) a los 10TB, aunque en las primeras pruebas tan solo se ha alcanzado los 1,6TB en un disco de tamaño estándar.

Puede que veamos comercializados estos discos de la mano de Samsung, aunque aun queda mucho camino que recorrer.


viernes, 29 de mayo de 2009

Google Chrome 2

Ha sido lanzada la nueva versión del navegador de Google,  Chrome 2 disponible de momento solo para sistemas Windows. En su Blog podemos leer que han introducido numerosas mejoras como el modo a pantalla completa pulsando F11, la gestión de las miniaturas en la pestaña inicial, autorelleno en los formularios, ha aumentado la estabilidad reparando más de 300 bugs que causaban cuelgues y ha aumentado la velocidad, en lo que dicen que es su principal enfoque, gracias a una nueva versión  de WebKit con una actualización de su motor de JavaScript.

Sois ya un 5% los que entráis con Chrome a este Blog, desde Google nos informan que en breve se actualizara este navegador para los usuarios, si no lo utilizas puedes descargartelo desde aquí . 

Os animo que lo probéis, a mi en particular me gusta mucho, lo único que no lo utilizo es para descargar, creo que su gestor de descarga no es óptimo, espero que con esta versión lo mejoren, ya os contare.

lunes, 18 de mayo de 2009

Comparacion fechas Javascript

Para el que se pelee con las fechas en Javascript.
Os dejo una función que hice hace poco, trasforma en objeto la cadena de una fecha obtenida de un formulario y la compara con la fecha del sistema.

//script
function fechas(){
var fc = document.getElementById("fcadu").value.split("/");
var fcadu = new Date(parseInt(fc[2]),parseInt(fc[1]-1),parseInt(fc[0]));
var hoy = new Date();
var fechamincadu = new Date(hoy.getFullYear(), (hoy.getMonth()+1), hoy.getDate());
alert("fecha de minima: "+ fechamincadu.getFullYear()+"/"+(fechamincadu.getMonth())+"/"+fechamincadu.getDate()+" - "+
"fecha cadu: "+fcadu.getFullYear()+"/"+fcadu.getMonth()+"/"+fcadu.getDate());
if (document.getElementById("fcadu").value != "" && fcadu <>
alert("fecha caducidad no superior a la minima");
return false;
}
return true;
}

martes, 12 de mayo de 2009

Comparación de nulos en PL/SQL, función NVL

Cuando tenemos variables o parámetros que pueden valer nulo y los comparamos pueden producir resultados que no esperamos, por ejemplo:

declare
   v_variable1 varchar2(20):=null;
   v_variable2 varchar2(20):=null;
begin
   if v_variable1 = v_variable2 then
         --salida estandar de texto
         dbms.output.put_line('Bien');
   else 
         dbms.output.put_line('Mal');
   end if;
end;

ó tenemos

declare
   v_variable1 varchar2(20):=null;
   v_variable2 varchar2(20):='hola';
begin
   if v_variable1 <> v_variable2 then
         --salida estandar de texto
         dbms.output.put_line('Bien');
   else 
         dbms.output.put_line('Mal');
   end if;
end;

Fijaros que en segundo caso se ha cambiado el valor de la v_variable2 y el operador igual "=" por distinto "<>".
En ambos casos saldrá por la salida estándar el mensaje "Mal" esto es debido a que la comparación que contenga nulos siempre devuelve NULL y siempre se ejecutara la sentencia del "else".
Para arreglar esto podemos utilizar la función NVL, que teneis su sintaxis en la entrada de funciones integradas.

Para el ultimo caso:

declare
   v_variable1 varchar2(20):=null;
   v_variable2 varchar2(20):='hola';
begin
   if NVL(v_variable1,' ') <> NVL(v_variable2 then,' ')
         --salida estandar de texto
         dbms.output.put_line('Bien');
   else 
         dbms.output.put_line('Mal');
   end if;
end;

Ahora si que se ejecutara la sentencia del IF. El primer caso se soluciona de la misma forma.

sábado, 25 de abril de 2009

Descargar Ubuntu 9.04 Jaunty Jackalope

Ya podéis bajar la ultima versión de Ubuntu 9.04, Jaunty Jackalope desde su web:
www.ubuntu-es.org
La nueva release basada en Debian, Ubuntu,  ya esta disponible desde su web. Este sistema operativo que competira con el próximo Windows 7 arranca en menos de 25 segundos y la activación desde la hibernación o suspensión sera casi inmediata.
Trae el kernel 2.6.28 y mejoras en la conexiones inalámbricas con una mejora en la aceleración gráfica.

Se recomienda bajar el sistema operativo via torrent ya que los servidores están a pleno rendimiento entrar en la web ya cuesta, os dejo los enlaces torrent de las distintas versiones:

Desktop 32 bits: 
Desktop 32 bits alternate: 
Desktop 64 bits: 
Desktop 64 bits alternate: 
Server 32bits: 
Server 64bits: 


miércoles, 8 de abril de 2009

Video tutorial para desmontar la PSP

Vídeo Tutorial de como desmontar la PSP por teknoconsolas, yo lo utilicé para cambiar el joystick que se me jodio. Hacer esto es bastante fácil, pero quitar la pantalla y seguir desmontando hay que tomárselo con paciencia. Suerte!


lunes, 6 de abril de 2009

Funciones Integradas PL/SQL

Os dejo las Funciones integradas más comunes de PL/SQL.

SYSDATE
Devuelve la fecha del sistema
Select SYSDATE from dual;
Se suele utilizar con TO_DATE, TO_CHAR o TRUNC
TO_CHAR(SYSDATE,'DD/MM/YYYY');

TRUNC
Trunca una fecha o un numero, si la expresión es una fecha quita las horas, minutos.. y si es un numero deja la parte entera.
TRUNC(expresion);

TO_CHAR
Convierte a cadena de caracteres la expresión
TO_CHAR(expresion, [formato]);
El segundo parámetro [formato] es opcional e indica el formato de salida de la expresión.

TO_DATE
Convierte a fecha la expresión del primer parámetro
TO_DATE(expresion, [formato]);
En este caso el parámetro [formato] indica el formato de entrada.

TO_NUMBER
Convierte en entero la expresión.
TO_NUMBER(expresion);

NVL
Si el valor de la expresión es NULO, devuelve el valor del segundo parámetro sino devuelve el valor de la expresión
NVL(expresion, valor); (Ejemplo)

DECODE
Es equivalente a una sentencia de control de flujo if-elsif-else
DECODE(expresion,cond1,valor1,cond2,valor2,...,valorN);
Si la expresión valida la cond1 devolverá el valor1, sino y valida la cond2 devolverá el valor2 y si no cumple ninguna condición devolverá el valorN.

LENGTH
Devuelve la longitud de una expresión char o el numero de dígitos de un number.
LENGTH(expresion);

INSTR
Devuelve la posición de una ocurrencia buscada en una cadena.
INSTR(cadena, cadena_a_buscar, [pos_inicial], [iterador]);
[pos_inicial] y [iterador] por defecto valen 1.

REPLACE
Reemplaza un texto por otro
REPLACE(cadena, cadena_buqueda, cadena_reemplazo);

SUBSTR
Devuelve la subcadena indicada por la posición inicial y la longitud.
SUBSTR(cadena, pos_ini, longitud);

UPPER
Devuelve la cadena pasada en mayúsculas
UPPER(cadena);

LOWER
Devuelve la cadena pasada en minúsculas
LOWER(cadena);

RPAD
Devuelve la cadena concatenada con otra por la derecha repitiendo la segunda hasta una longitud determinada.
RPAD(cadena_orig, logitud, cadena_a_concatenar);

LPAD
Igual que la anterior pero por la izquierda.
LPAD(cadena_orig, logitud, cadena_a_concatenar);

RTRIM
Elimina espacios por la derecha.
RTRIM(cadena);

LTRIM
Elimina espacios por la izquierda.
LTRIM(cadena);

TRIM
Elimina espacios por la derecha y por la izquierda.
TRIM(cadena);

MOD
Devuelve el resto de la división entera
MOD(dividendo, divisor);
Ej: Select MOD(22,18) from DUAL;
Devuelve: 4

Si utilizáis otras dejarlas en los comentarios e iré poniéndolas, así tendremos entre todos reunidas las funciones más comunes. Gracias de antemano.