Escribir en un archivo usando cURL

Septiembre 3rd, 2008 1 comment »

Existe una librería llamada libcurl en PHP la cual te permite usar sesiones cURL para realizar conexiones por HTTP, FTP y demás.

Esta librería se usar normalmente para acceder a una página web donde hay un formulario (realizar una conexión HTTP y mandar datos por le método POST). Por ejemplo, usando cURL puedes comentar en statuesque.es sin estar navegando por ella. Por eso se ponen los famosos captcha. Para que una máquina no pueda poner un comentario, por ejemplo.

Pues bien, hace poco me hicieron programar una función que pudiera escribir una cadena de texto en un archivo .xml pero me pusieron como condición no usar la función que tiene PHP para ello (fwrite()). Empecé a documentarme sobre cURL y aparte de abrírseme un mundo de posibilidades encontré una manera de hacerlo. Probablemente existan mejores formas para escribir en un archivo con cURL pero a mi solo se me ha ocurrido esta, si tienes alguna mejora puedes comentar que ten por seguro que la tendré en cuenta.

Ahora vamos al tema. Para usar la función hacen falta dos archivos: el archivo save.php que es el que tiene la función escrita y el archivo temp.php que es un archivo que usa la función.

En el archivo save.php escribiremos lo siguiente:

function curl_write($filename, $content) {
$path = 'http://' . $_SERVER['SERVER_NAME'] . substr($_SERVER['PHP_SELF'], 0, strlen($_SERVER['PHP_SELF']) - strlen(’save.php’)) . ‘temp.php’; //Para que reconozca solo la ruta. SIEMPRE que el .htaccess no haga de las suyas


$fp = fopen('./' . $filename, "w");
chmod('./' . $filename, 0777); //Aquí dale los permisos que quieras que tenga el archivo. Ahora todo el mundo puede cambiar su información.
$curl = curl_init(); //Inicializo la sesión cURL
curl_setopt($curl, CURLOPT_URL, $path); //Descargo el archivo con el contenido a escribir
curl_setopt($curl, CURLOPT_FILE, $fp); //Configuro la salida por defecto al archivo $fp
curl_setopt($curl, CURLOPT_HEADER, false); //Que no devuelva las cabeceras
curl_setopt($curl, CURLOPT_POST, true); //Para realizar una petición HTTP con el método POST
curl_setopt($curl, CURLOPT_POSTFIELDS, 'text=' . urlencode($content)); //Contenido de POST

if(curl_exec($curl)) //Ejecuto la conexión
$exito = true;

else
$exito = false;

curl_close($curl); //Cierro la conexión
fclose($fp); //Cierro el archivo

return $exito;
}

Y en el archivo temp.php escribiremos lo siguiente:
$texto = $_POST['text'];

echo $texto;

La función lo que hace es aprovecharse de que tú puedes poner como salida por defecto de una conexión un archivo de texto. Entonces realizamos una conexión a nuestro archivo temp.php y le pasamos por POST la variable text. El archivo temp.php lo que hace es sacar como contenido el valor de la variable text que le pasen por POST.

Una vez realizada la conexión a temp.php y devuelto el valor de la variable text se escribe en el archivo que le hayamos pasado y cerramos tanto la sesión cURL como el archivo que hemos abierto para escribir.

Un dato importante es que temp.php y save.php tienen que estar en el mismo directorio (o si cambias el directorio cambia también la variable $path para indicar donde se encontrará el archivo temp.php)

Un ejemplo de uso podría ser:

curl_write('diario.txt', 'Querido diario. He estado pensando y... ');

Puedes conseguir curl_write.rar aquí [rar].

Espero que os sea útil! Un saludo a todos!

Acerca de Google Chrome

Septiembre 3rd, 2008 1 comment »

Google Chrome es el nuevo navegador web que está siendo desarrollado por la compañía. Y, aunque muchos blogs ya hayan hablado sobre el tema, yo tambien quiero comentarlo.

En resumen el navegador presume de llevar las pestañas en diferentes procesos lo cual tiene una ventaja: que cuando te pete una pestaña no te va a petar el navegador entero. Pero también tiene una desventaja: que un proceso por cada pestaña ocupa más memoria que todas las pestañas en el mismo proceso.
Esto según se mire puede ser una putada porque, por lo menos a mi, me peta el navegador en raras ocasiones y la memoría no me sobra.

También dicen que tiene una nueva máquina virtual para interpretar JavaScript. V8 la llaman. No me quiero mostrar escéptico porque la gente de Google sabe lo que hace y si dicen que vuela yo me lo creo. Pero vamos, que me gustaría comprobarlo.

Eso es lo más sonado. Luego puedes hacer pijadillas con los marcadores y le han puesto una página inicial de puta madre para los que usemos aplicaciones como GMail, Google Maps, Google Calendar o Google Reader.

Ahora lo que a mi me descoloca es que hace apenas una semana Google renovó el contrato que tenía con Mozilla Firefox. No sé, cosas de Google. Aunque yo si fuera Firefox me echaría a temblar porque esto es como Ralph Lauren o Tommy Hilfiger. El usuario de conocimientos medio/bajo de Internet es como el cliente de personalidad media/baja del Corte Inglés. Va a comprar lo que mejor marca tenga. Y, sobretodo en España, Google tiene mucho nombre. Pero mucho, mucho.

Yo voy a esperar a que lo saquen para Linux y lo probaré a ver qué tal. Pero vamos, que me despeguen de mi Firefox va a ser complicado. No sé si Google podrá competir con la comunidad que ha surgido alrededor de Firefox, tanto de plugins, de themes o de apoyo en los foros. Quién no ha visto la típica firma con la imagen de ‘Yo uso Firefox’?

También quiero añadir un toque conspiranoico: A Google le falta fabricar el timbre de mi casa y saber quién me visita para saberlo todo sobre mí.

En fin, terminaré con un consejo a los diseñadores gráficos de Google Chrome: Existen más colores aparte del azul.

Un saludillo a todos!

1 de Septiembre

Septiembre 1st, 2008 No comments »

Bajas a la calle y está todo abierto, hay 5 veces más gente por la calle, mucho correteo de cohes por todas partes. ¿Que todo el mundo se ha vuelto loco?

Ah no, que es 1 de Septiembre. Y por qué no estoy yo correteando también por la calle? Porque estoy metido en un agujero al que llaman biblioteca…

Suerte a la pipol que esté estudiando!

Contabilidad casera

Agosto 26th, 2008 1 comment »

Hola gente!

No sé si vosotros pero yo he intentado varias veces tener un poco de control sobre el dinero que me gasto o me dejo de gastar. Antes me compraba una agenda en blanco y cada día iba apuntando el dinero que me gastaba manualmente y restándolo lo cual es una labor tediosa (si ya de por si es un coñazo ir pidiendo tickets..).

La verdad es que nisiquiera me informé sobre otros métodos de contabilidad llevados por ordenador. El caso es que he descubierto un programa que se llama HomeBank que es un programa (que está tanto para GNU/Linux como para Windows o MacOSX). La verdad es que no me he bajado ningún otro programa del estilo y es el primero que utilizo pero mi impresión es buenísima.

Para empezar puedes separar las cuentas que tengas (para los que estén forrados y tengan más de una!), puedes poner pagos automáticos como el ingreso de la nómina o el pago de una hipoteca, puedes crear tus categorías con las que luego se hacen estadísticas y lo que más me mola es que hay una sección que se llama Gasto Coche que te calcula el gasto cada 100Km que hace tu coche y cuanto te cuesta al mes. En fin, una pasada para llevar tu contabilidad casera.

Lo único malo que tiene es que te vuelves un poco rapiña con lo que pagas porque ves donde derrochas dinero (que siempre es en lo mismo, en cosas supérfluas).

Para instalarlo en Windows solo tienes que descargarte el ejecutable e instalarlo. Para usarlo en una distribución Debian (como Ubuntu) puedes usar la herramienta apt.

$ sudo apt-get install homebank

Con eso es suficiente para poder usar el programa y volverte más uraño.

Ale, a llorar con el dinero!

De vuelta a la realidad

Agosto 23rd, 2008 No comments »

Bueno, ya; por desgracia, se me acabaron las vacaciones definitivamente. He pasado un verano muy intenso, de viajes, de campus party y de familia. Pero se acabó el chollo de Agosto y ahora toca volver a pencar.

Espero que vuestro verano haya ido igual de bien que el mio, ya me comentareis. Pero vayamos al grano, en este post me voy a poner una serie de objetivos que conseguir antes de que acabe el 2008 (por el culo te la entocho). Pero como todos los años me paso un huevo poniéndome los objetivos y luego no hago ni papa este año va a ser diferente, voy a ponerme poquitos y a ver si los voy haciendo porque sino malament…

A ver, lo primero es un rediseño del blog que el de ahora no podría ser más feo. Lo siguiente que quiero hacer es empezar a poner en marcha BeniSoft que es un proyectillo que tengo con unos amigos. Por supuesto, quiero darle vidilla al blog. También quiero probar openSuse 11.0 que tiene una pinta muy rica.

Y en lo personal quiero leer más (poco a poco se va consiguiendo) y, sobretodo, dejarme el trabajo de camarero y meterme en alguna cosa relacionada con la informática. Así que ya sabeis, que lluevan las ofertas!

Bueno, yo creo que eso es todo. Como veis no me he puesto metas altísimas como la de crear un servidor de correo electrónico (aun me acuerdo de esa, cuánto tiempo!) pero son más realizables.

En fin, espero que todos hayais pasado un verano cojonudo y que cojais con ganas los exámenes de septiembre o, en el caso de que seas un/a afortunado/a, cojas con ganas el nuevo curso.

Un saludo a todos, vuelvo a la carga!

En la Campus Party!

Agosto 2nd, 2008 No comments »

Hola gente!

Os resumo un poquito mis super vacaciones que me las he montado de puta madre sin quererlo, de casualidad.

El caso es que después de volver de Brighton hecho polvo cogí un vuelo a Lisboa y me fui al festival de músicas del mundo de Sines. Y fue genial, gente super hippie aunque todos un poco viejetes. Os recomiendo a todos que vayais el año que viene al festival porque es un sitio de puta madre, super bonito y la música por norma general es buena (aunque también hay algún que otro bodrio).

Bueno y una vez en España otra vez me entero de que Google me ha dado 2 entradas a la Campus Party (y yo soy de Valencia xD). Y ahora aquí ando, campuseando!!

Pero compaginando con el curro porque la semana de la campus no estaba prevista y me toca trabajar también pero bueno, tampoco es un problema muy gordo. Me he comprado un cable de esos de acero para que no me tanguen el portátil y ya está. Por cierto, si alguien conoce algún método efectivo para que no te roben el disco duro portátil que me avise por favor porque es una mierda estar todo el rato p’arriba y p’abajo con el disco duro (no vale el método ese de restregarle mierda para que no se acerquen xD).

Cuando acabe la campus os cuento más! Saludos a todos!

De vuelta

Julio 20th, 2008 No comments »

Hola hola!

Estoy en Stansted, el aeropuerto de Londres esperando a que se dignen a abrir las puertas del avión para pegarme la gran sobada. El viaje ha estado genial, ya subiré fotitos. Brighton es la leche, creo que me voy a pedir la beca Erasmus para allá porque la ciudad me ha encantado. Está cerca de Londres pero no es especialmente cara, las mujeres están tremendas y tiene playa (con agua helada pero playa es).

En fin, tengo un pelín de resaca y me estoy empezando a asustar porque en la pantallita del Gate donde tengo que estar no pone Valencia por ninguna parte, ya os contaré.

Por cierto, muchísimo mejor el aeropuerto de Manises a este. En este he tenido que pagar la conexión a Internet, que cabrones.

Un saludo a todos.

PD: Esta vez no hay fotito porque estamos un poco demacrados ya XD

Desde el aeropuerto

Julio 14th, 2008 2 comments »

YopsHola gente! En unos 30 minutos embarco en el vuelo para Londres.

Luego vendrá la aventura de ver si me apaño para llegar a Brighton que es donde vive mi hermana. En cualquier caso llevo un diccionario por siacaso :P En fin!

Deseadme buen viaje y que no me hagan desnudarme que los guardias aprovechan la mínima para ver un buen cuerpo serrano! (por aquello del producto ibérico…)

Os adjunto una fotito!

Un saludo a todos!

Rediseño inminente

Julio 12th, 2008 No comments »

Holaps!

Creo que ya es hora de cambiar el diseño del wordpress. Nunca he tenido uno propio y ya toca.

Para los que querais informaros sobre cómo se hace un diseñlo nuevo para un blog gestionado por wordpress os dejo el link a la página de documentación oficial de Wordpress donde trata el tema. Ahora solo queda dejar volar la imaginación.

Un saludo a todos y que paseis buenas vacaciones!

Montar partición del disco duro al arranque en Ubuntu

Julio 9th, 2008 2 comments »

En Ubuntu cuando arrancas el sistema no es como en Windows que se montan todas las particiones del disco duro al principio.
En Ubuntu solo se monta (por defecto) la partición donde tienes el sistema de archivos, por lo que si tienes algún programa en otra partición, o datos a los que suelas acceder con frecuencia, tienes que montar la partición siempre la primera vez que vayas a acceder.
Aunque esto no supone demasiada molestia porque Ubuntu las reconoce y las monta automaticamente cuando haces click en la unidad (en el menú Lugares están todas las particiones que Ubuntu reconoce).

Pero el problema viene cuando tienes más de una partición en el disco duro. Ubuntu pone el alias de /media/disk a la primera partición del disco duro en montarse, disk-1 a la segunda, disk-2 a la tercera y así sucesivamente y todos los puntos de montaje los guarda en el directorio /media/.
Imaginemonos que tenemos el sistema de archivos de Ubuntu, una segunda partición ext2 y la partición ntfs de Windows. Dentro de la segunda partición (la del tipo ext2) tenemos un directorio con toda nuestra música que se llama ‘Musica’.
Lo que queremos hacer ahora es indexar toda la biblioteca musical en un programa tipo Rhythmbox y lo que hacemos es montar la partición de manera que la ruta será /media/disk (suponiendo que no hemos montado ninguna otra antes). Entonces indexamos nuestra biblioteca musical a partir del directorio /media/disk/Musica y escuchamos música sin parar.

Apagamos el ordenador y lo encendemos de nuevo. Montamos la partición de Windows (/media/disk) porque necesitamos coger algún dato y montamos la partición ext2 para escuchar música (/media/disk1). Y tachán! Ya tenemos el error porque Rhythmbox busca el archivo de música que quieras escuchar en /media/disk/Musica (que es donde pusiste que indexara) y no encuentra nada porque realmente está en /media/disk1/Musica.
Esto sucede porque al montar primero la partición de Windows le diste el nombre de /media/disk. Para escuchar música lo que tendrías que hacer es desmontar las 2 y volver a montar partición ext2 para que tuviera el nombre /media/disk y poder escuchar música. Y esto si que es molesto :p

La solución está en montar la partición ext2 al arranque de Ubuntu y darle un nombre concreto. De esta manera no cambiará nunca la ruta /media/NOMBRE_CONCRETO y así no tendremos el problema.

Para hacer esto existe un archivo que se llama fstab que es la que ordena el montaje de las particiones y dispositivos al inicio de Ubuntu (tanto es así que este archivo ordena el montaje del sistema raiz). Lo primero que tienes que hacer es saber el nombre del dispositivo en el directorio /dev/. Para ello si usas Gnome puedes utilizar la herramienta gparted.

$ gparted

Y ves como se llama tu particion. En mi caso es sda7. Esto significa que /dev/sda7 es el enlace a la partición. Una vez tienes localizado el nombre del enlace debes editar el archivo fstad que está dentro del directorio /etc. (usa otra instrucción sino usas Gnome)

$ sudo gedit /etc/fstab

Una vez tengas abierto el editor verás que hay ya líneas escritas que son las que corresponden con el montaje del sistema raiz o la partición swap. Ahora escribes al final del archivo:

#Particion secundaria
/dev/sdaN    /media/NOMBRE_CONCRETO ext2    auto,nodev,rw,noexec,sync,user    0    0

Sustituyendo /dev/sdaN por el nombre del enlace que conseguiste antes mediante gparted. Y sustituyendo también NOMBRE_CONCRETO por el nombre que le quieras dar (yo tengo Secundario). Ten en cuenta que los espacios que hay entre parámetro y parámetro son tabulaciones.

Ahora lo último que tienes que hacer es crear el punto de montaje. Para esto solo tienes que crear en /media un directorio que se llame NOMBRE_CONCRETO (el nombre que le hayas dado, en mi caso Secundario):

$ sudo mkdir /media/NOMBRE_CONCRETO

Ya está todo hecho, ahora para probarlo puedes hacer dos cosas: Reiniciar el ordenador o ejecutar:

$ sudo mount -a

Y ahora ya puedes indexar tu música o lo que quieras sin miedo a que cambie de nombre el punto de montaje.

Un saludo!