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.

lunes, 16 de marzo de 2009

Administrador de descargas: JDownloader

No se como hasta ahora he seguido bajandome archivos de Internet sin JDownloader, desde que lo descubrí es el único programa que utilizo para descargar archivos. Con un simple entorno escrito en Java el  administrador de descargas JDownloader descarga archivos de megaupload, rapishare, ... o desde cualquier servidor del estilo. Tan solo debes introducirle los enlaces del servidor o la url de la pagina donde están los enlaces y ya el se encarga de descargar los archivos en la carpeta que le indiques. Sencillo y muy practico.



Especificaciones:
Plataforma de código abierto escrita completamente en Java. Esto simplifica la descarta de archivos de servidores como Rapidshare.com o Megaupload.com, no solo para usuarios con cuenta Premium sino también para los que no pagan. JD ofrece descargas múltiples paralelas,
reconocimiento de captcha, extración automática de archivos y mucho más. Por supuesto, JD es gratuito. Adicionalmente, soporta muchos sitios de "encriptacion de enlaces", así que solo tendrá que pegar los enlaces "encirptados" y JD hará el resto. Jd puede importar archivos CCF, RSDF y los nuevos archivos DLC.

Descargalo desde aquí

viernes, 6 de marzo de 2009

Instalación de PHP 5

El primer paso para desarrollar programas en PHP 5 es encontrar un servidor donde hacer las pruebas del programa, hay tres opciones: pagar a un tercero por el servidor (hosting),  montarte tu este servidor o montar lo que yo llamo un servidor de pruebas que es lo que voy a comentar en esta entrada.
Este servidor lo queremos para aprender a programar o simplemente para probar nuestro código.
PHP 5 se distribuye como código fuente, listo para compilar en el sistema operativo que se quiera. Pero para nuestra finalidad que es probar el código vamos a instalar unos paquetes pre-compilados que nos van a facilitar mucho el trabajo.
Vamos a instalar tres programas:
Servidor Web Apache
PHP 5
MySQL 

Instalación en Windows:

He elegido el paquete de aplicaciones XAMPP, simplemente porque tiene todo lo necesario para lo que pretendemos.
En la web www.apachefriends.org puedes encontrar el archivo de instalación, la instalación es como cualquiera de este sistema operativo (siguiente, siguiente, ....).
Cuando lo tengamos instalado aparecerá en Inicio>Programas>apachefriends>XAMPP Control Panel


Tan solo tendremos que darle al botón Start de cada elemento que queramos activar.
Para probar que todo funciona, puedes darle al start de Apache y en el navegador poner localhost, te deberá aparecer la pagina de inicio de XAMPP.

Instalación en Linux:

Los usuarios de Linux saben que cada distribución es un mundo asi que os voy a poner los comandos de la que se basan en Debian.
También voy a instalar el paquete XAMPP, supongo que los que utilicen Ubuntu u otro sistema que tenga gnuLinux se podrá bajar con el administrador de paquetes, si lo hacéis comentarlo!
Bueno, una vez descargada la versión lo tendremos que descomprimir en un directorio:
gzip -d xampp-linux-1.7.tar.gz
Tenemos que volver a descomprimir (.tar.gz)
tar xvf xampp-linux-1.7.tar
Se creara una carpeta llamada lampp
Copiamos la carpeta al directorio /opt 
cp -r lampp /opt
Y ya lo tenemos instalado. Para ejecutarlo (siendo superusiario -sudo-) invocamos el siguiente comando:
/opt/lampp/lampp start
Las paginas las guardaremos en /opt/lampp/htdocs.

En realidad la forma mas recomendable de instalar PHP es compilarlo tu mismo, así tendrás la posibilidad de añadir los módulos y extensiones que quieras o realmente vayas a utilizar. Puedes encontrar más información en www.php.net