lunes, 22 de febrero de 2010

Paso de sesiones PHP automáticamente

Como todos sabemos hay que poner el típico “session_start();” al comienzo de cada pagina para pasar la sesión, cosa que al final resulta algo cansino así que o bien hacemos un objeto que maneje las sesiones y hagamos un autocargado del objeto o ponemos “session.auto_start” del fichero php.ini a 1 y con la opción “session.use_trans_sid” también a 1 se pasan incluso cuando las cookies están desactivadas.

Nota: con “session.use_trans_sid” activado auque no tengamos “session.auto_start” activado si iniciamos la sesión manualmente hará el proceso de pasar la sesión automáticamente, al menos en php5.

Para los que tengan php5 “session.use_trans_sid” esta desactivado por defecto, si quieren pasar la sesión tendrá que ser con cookies o activando dicha propiedad.

Para php4 esta permitido por defecto pero no lo hace automático, al menos lo que he visto hasta ahora asi que para eso esta este script

if( !(navigator.cookieEnabled) ){
window.onload = function() {
//array de todos los enlaces de la pagina
var enlaces=document.getElementsByTagName('a');
//los recorro y le modifico el atributo href para que pase la sesion
for(var i=0;i var direccion=enlaces[i].getAttribute('href');
enlaces[i].setAttribute('href',nuevaURL(direccion));
}
var formularios=document.getElementsByTagName('form');
for(var i=0;i var direccion=formularios[i].getAttribute('action');
formularios[i].setAttribute('action',nuevaURL(direccion));
}
}

/*
* detecto cuando un elace es externo para no pasar la sesion y
* cuando es interno y se pasan mas parametros adadapto el codigo
*/
function nuevaURL(url){
//si es un enlace externo
if(url.substr(0, 7)=='http://' || url.substr(0, 8)=='https://' || url.substr(0, 4)=='www.'){
return url;
}else{
//si tiene argumentos
if( url.indexOf('?') >-1){
url+='&';
}else{
url+='?';
}
return url+'';
}
}

Básicamente con hacer es copy&paste o un include del fichero, problema resuelto, pero acuérdate de ponerle extensión php porque lo necesita para ejecutar un par de funciones php.

viernes, 19 de febrero de 2010

Guardar un objeto en java

En java hacer este tipo de cosas es tremendamente fácil y rápido, basta con implementar a una clase la interfaz Serializable.
Con esa interfaz conseguimos que con solo llamar al método writeObject nuestro objeto se serializa lo que permite mandar el objeto por red o guardarlo en un fichero como en este caso. Para recuperar un objeto serializado basta con utilizar el método readObject.
Cuando exista un atributo estático tendremos que guardarlo manualmente, pero igualmente es fácil, seria algo tal que así:

// guardar
private void writeObject(ObjectOutputStream stream) throws IOException{
//serializa el objeto como siempre (todos los atributos menos los estaticos)
stream.defaultWriteObject();
//ahora el atributo estático
stream.write(atributoEstatico);
}

// leer objeto
private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException{
stream.defaultReadObject();
atributoEstatico= stream.read();
}


//ahora el ejemplo para guardar los objetos en un fichero
public boolean save(Objeto obj){
try {
//fichero en el que se guardará el objeto
FileOutputStream file=new FileOutputStream("prueba");
//canal de salida del fichero
ObjectOutputStream os;
os = new ObjectOutputStream(file);
//escribimos el objeto en el fichero
os.writeObject(obj);
//cerramos el canal de salida y el fichero
os.close();
file.close();
} catch (IOException e) {
e.printStackTrace();
return false;
}

return true;
}

//Metodo para cargar el objeto anteriormente guardado
public Objeto load(){
Objeto obj;
try {
FileInputStream fis = new FileInputStream("prueba");
ObjectInputStream ois = new ObjectInputStream (fis);

obj =(Objeto) ois.readObject();

ois.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
return null;
} catch (ClassNotFoundException e) {
e.printStackTrace();
return null;
}

return obj;
}


PD: tened en cuenta que también se pueden serializar listas, arrays etc. que contengan objetos que implementen la interfaz Serializable.

lunes, 15 de febrero de 2010

Fibonacci con recursividad en C

Bueno otra cosa mas del año que aprendí a programar en C.
Aquí la función y un ejemplo de utilización:


//declaracion de librerias
#include
#include


//declaracion de funciones
int fibonachi(int limite, int numero,int anterior);


/************************************************************************
Función main
*************************************************************************/
int main(int argc, char *argv[]){
// variable en la que guardaré el el numero pedido al usuario
unsigned int numerosFibonachi;

// pedimos y recojemos un numero
printf("Introduzca hasta que numero de la serie fibonachi quiere ver: ");
scanf("%d",&numerosFibonachi);

// llamamos a la funcion pasandole el numero de numeros de la serie que queremos ver un 0 y 1
// que son los numeros con los que empezará
fibonachi(numerosFibonachi,0,1);


//fin del programa
printf("\n");
system("pause");
return 0;
}
/********************************************************************
Función fibonachi
Muestra numeros de la serie fibonachi utilizando recursividad
Argumentos de entrada
int limite - numero de numeros ha mostrar de la serie
int anterior - siempre 0 - para que tenga un punto de partida
para empezar a calcular la serie
int numero - siempre 1
********************************************************************/
int fibonachi(int limite, int anterior, int numero){
printf("\n %d \t %d",limite,numero);
if (limite!=1){
limite--;
fibonachi(limite,numero+anterior,numero);
}
return 1;
}


PD para autores: para poner código es:
<pre class=”code”>el codigo aqui</pre>

Aun no he metido los scripts Highlighter para colorear el código por no hacer mas pesada de lo que ya es la pagina así que con esto nos apañamos bien.
Esta entrada es mas una excusa para probar lo de poner código en el blog que otra cosa XD.



viernes, 12 de febrero de 2010

Programas de la semana 20

Esta entrada va a ser la última de la serie de programas de la semana, eso no quita que alguna vez cuado me encuentre con un programa curioso lo comente.
Bueno pues como es el último me he explayado un poco XD

Toucan: programa de copias de seguridad portable con muchas opciones y fácil de usar.

Mypaint: para dibujar con una tableta digital, trae muchos pinceles y es multiplataforma

Wax: de lo poco que he encontrado sobre el tema de edición de video que sea gratuito y merezca la pena, este programa es muy poco conocido

Pencil
: para hacer animaciones en flash pero gratis

IcoFX: para dibujar y modificar iconos

Winup
: actualizaciones de windows offline

Winamp: reproductor de mp3 por excelencia, ligero y practico

File Scavenger: recuperador de archivos. También funciona en particiones ntfs. Este programa es de evaluación pero seguro que alguna vez te saca de algún apuro.

DVDshrink
: copia DVD de video al disco duro, a otro DVD dando opciones para elegir audio y subtítulos que se copiaran además de comprimir las películas para que ocupen en un DVD normal

Dvddecrypter
: este también copia películas, no las comprime pero si que es mas tolerable con los errores de los DVD

VirtualDub
: para edición de video (cortar y pegar trozos) y el audio del video. Este programa esta muy extendido así que por lo menos te sonará.

Netsetman: guarda distintas configuraciones de red para cambiarlas rápidamente.

Foxit Reader
: alternativa a adobe pdf, usa pestañas para abrir varios archivos

viernes, 5 de febrero de 2010

Programas de la semana 19

Como sabéis, la semana pasada no hubo programa de la semana así que en esta toca extra de programas. Empezamos:

Picasa: busca todas las imágenes de tu disco duro para después poder verlas todas con este programa incluidos archivos psd. Además de hacer búsquedas (por palabras y también por colores) y filtros (caras, solo videos…) puedes hacer pequeños retoques, álbumes y collages de fotos.

Ipscan: escanea las ip que están en el rango de IP que indiquemos. EJ: 172.16.0.1 a la 172.16.0.254 para ver todos los de la red 172.16.0.0/24. Viene bien para saber quien anda hay conectado al wifi.


WiinRemote: para conectar por bluetooh el mando de wii al PC, en principio solo funcionan los censores de inclinación y acelerómetros. No es útil pero es curioso XD.

CCleaner: se encarga de limpiar el registro de windows y alguna cosa más.

BonkEnc: para sacar la música de un CD a archivos de audio. Tambien tiene version portable


PD: como siempre todos son gratuitos

miércoles, 3 de febrero de 2010

Reproducir mp3 en java

Hacia tiempo que no hacia entradas aparte de las de los programas de la semana así que aquí las instrucciones para hacer un reproductor de mp3 en java.


Como algunos no sabreis agregar un libreria a un proyecto de eclipse e aqui un pequeño tutorial.

1.-Descargamos la libreria javalayer para reproducir archivos mp3 en java.
2.-Descomprimimos el archivo jl1.0.1.jar del archivo descargado


3.- Creamos un nuevo proyecto en eclipse
4.- Clic derecho sobre el proyecto y seleccionamos propiedades
5.- Seguimos los pasos de la imagen; (1) seleccionamos en el menu de la derecha "java build path" (2) depues la pestalla "libraries" y por ultimo (3) pulsamos el boton "add external jars..." y (4) seleccionamos el archivo anteriormente descomprimido, despues de esto solo queda (5) pulsar en el boton "ok" para cerrar la ventana de propiedades del proyecto.

Después de esto ya podemos agregar la clase del ejemplo que os dejo en descarga. El ejemplo es muy simple, una ventana con 3 botones, play que abre un dialogo para seleccionar un fichero mp3, stop para parar del todo la reproducción, y el pause que para pause la reproducción de la canción por donde estaba sonando, además lleva un textfield que muestra los segundos por donde va la canción. Para el reproductor y para mostrar por que segundo va la canción uso threads de una función os recomiendo que lo veáis por que es muy útil. Y como no, el código esta comentado.



FanKit



Ya era hora de sacar un pack de firmas (con y sin URL) e imágenes para enlaces externos además del logo.
Espero que os guste y los uséis sobretodo si tenéis un sitio Web y queréis enlazar a este blog.