Secciones

@Internet

Algo sobre mi

Bienvenido a frangarcia.net. Mi nombre es Fran García y soy un analista programador web que actualmente trabaja como Senior Software Developer para Wayin. En esta web encontrarás sobre todo noticias relacionadas con las nuevas tecnologías, Internet, programación y de vez en cuando soltaré algo sobre mi vida privada, aunque no esperes que esto sea un blog demasiado íntimo.
Espero que lo que veas y leas aquí, sea de tu interés.

Como Se Dice

5 March 2009, 03:20
¿Qué te parece el proyecto Como Se Dice?


Tras la última victoria en el concurso de hazruido.com y el segundo puesto en la primera edición del open movil fórum, ahora toca presentar un proyecto para la cuarta edición de este mismo concurso y yo ya he presentado la mia.

El proyecto se llama Como Se Dice y la idea es muy sencilla. ¿Cuantas veces no has estado en el extranjero, te han dado una carta en un restaurante y no te has enterado de nada? Seguro que muchas. Pues ahora con este proyecto, ese problema se va a terminar (como el frotar), ya que mandando un sms con el texto a traducir y el idioma al cual lo quieres traducir, al instante recibirás un mensaje de vuelta con el texto traducido.

Puedes probarlo mandando un mensaje al 638444924 con el texto en2es seguido del mensaje en inglés que quieras traducir. En la web del proyecto tienes más ejemplos de uso y podrás traducir tu mensaje entre varios pares de idiomas.

El concurso cuenta con unos suculentos premios económicos (ya me he cansado de ganar aparatos electrónicos) que van desde los 5.000€ al primer clasificado, 3.000€ para el segundo y 2.000€ para el tercero y el plazo para presentar proyectos termina el próximo 17 de Marzo.

El proyecto por ahora está terminado, pero siempre se podrá desarrollar algo nuevo siempre que alguien me sugiera alguna buena idea.

Aquí os dejo también un vídeo explicativo del funcionamiento de la aplicación.


Menea esta noticia Busca en Technorati enlaces a esta nota Diggea esta noticia Añádeme a tu del.icio.us

Evitar perder los datos de un formulario

11 November 2008, 22:26
Espero tus comentarios... [1]


Inspirándome en un plugin para Textpattern llamado wet_parachute, cuya funcionalidad es evitar perder los datos introducidos en los artículos sin haberlos enviado, se me ocurrir añadir esa posibilidad en uno de las aplicaciones en las que estoy trabajando.

La idea es conseguir que, cuando un usuario está rellenando un formulario e intente cambiar de página sin haberlo enviado, se le muestre una advertencia pidiéndole confirmación para saber si realmente desea abandonar dicho formulario. Para ello, se puede hacer uso de una función de los navegadores, que aunque no es estándar, parece que lo soportan tanto Internet Explorer como Mozilla Firefox, con lo que de momento me vale, puesto que el resto de usuarios de otros navegadores no se verán afectados. Dicha función se llama onbeforeunload y tiene la capacidad de realizar acciones ante cualquier acción del usuario que determine el cambio de página.

¿Cómo conseguimos esto?

En primer lugar, debemos incluir antes de la etiqueta body de nuestro código HTML el siguiente fragmento de código:

Javascript:
<script type="text/javascript">
        var parachute = true;
        window.onbeforeunload = function(e) {
                if (parachute)
                        return "Todavía no has mandado el formulario";
        };
</script>

Con esto conseguiremos que cuando el usuario intente abandonar el formulario sin haberlo enviado, se le muestre una advertencia. Ahora bien, esta advertencia, también aparece cuando el usuario pulsa el botón de Enviar, lo que no sería eficiente. Para evitar esto, utilizamos la variable parachute que se pondrá a cierto cuando le demos al botón Enviar. Este es el código de la función Continuar, invocada al hacer clic sobre el botón Enviar:

Javascript:
<script language="javascript">
function Continuar(){
parachute = false;
if (confirm('¿Seguro que deseas enviar ahora el formulario?'))
        document.formi.submit();
}
</script>

De esta forma tan sencilla, nos evitaremos excusas como, es que le di al intro sin querer o no se que ha pasado, pero mi página web se perdió.


Menea esta noticia Busca en Technorati enlaces a esta nota Diggea esta noticia Añádeme a tu del.icio.us

Actualización del hosting Xartra

21 October 2008, 20:49
Espero tus comentarios... [3]


Desde hace un par de años tengo alojado este sitio web y algunas cuantas cosas más con Xartra. Conocí este servicio de hosting a través de una web que hice en su momento para un amigo (http://www.ceramicastolosa.com) y salvo un par de pequeños problemas, el servicio que me han dado ha sido satisfactorio.

Pero en los últimos días, estuve pensando cambiar de hosting a otro que me ofreciera unas mejores características (en cuanto a la versión de PHP y MySQL), ya que lo necesitaba para unas pruebas que estaba haciendo y estuve visitando varios hostings y ya me había decidido por Minerva, cuando recibí un mail de Xartra diciéndome que me iban a actualizar mi hosting para aumentar las versiones de PHP y MySQL, justo a las versiones que necesitaba, con lo que el cambio me temo que va a esperar.

El cambio se realizará mañana mismo, así que es posible que durante todo el día no tengáis acceso a esta página, pero tened paciencia, que los cambios siempre son para mejor.


Menea esta noticia Busca en Technorati enlaces a esta nota Diggea esta noticia Añádeme a tu del.icio.us

Sistema de reservas de espacios con PHP y MySQL

9 July 2008, 15:54
Espero tus comentarios... [3]


Si necesitas implantar un sistema de reservas de espacios, te aconsejo que antes de meterte directamente a picar código, pruebes si MRBS llega a los mínimos que necesitas para tu sistema.

MRBS es una aplicación con licencia GPL basado en la aplicación Webcalendar y que te permite gestionar las reservas de una serie de espacios físicos. Permite la creación de edificios y de salas para cada uno de ellos, sobre las que luego los usuarios podrán realizar reservas.

Escrito íntegramente en PHP y como base de datos puede utilizar tanto MySQL como PostgreSQL. Una característica importante a mi parecer, es la posibilidad de emplear diferentes métodos de autenticación, como son IMAP, POP3, LDAP, texto plano o contra una base de datos MySQL, lo que me ha facilitado muchísimo la autenticación de mis usuarios en el sistema.


Menea esta noticia Busca en Technorati enlaces a esta nota Diggea esta noticia Añádeme a tu del.icio.us

Playtweets

9 June 2008, 02:15
Espero tus comentarios...


En los últimos días he desarrollado, por llamarle de alguna forma, un nuevo escenario para ver los tweets enviados a una determinada cuenta de twitter al cual he llamado Playtweets

La idea es que a partir de una cuenta de usuario en twitter, un presentador típico de telediario presente los últimos comentarios enviados a dicha cuenta de twitter. El funcionamiento interno se basa en recoger el rss de la cuenta del usuario para analizarla y mostrarla en un bocadillo junto a la imagen del presentador. Una aplicación sencilla pero que me ha servido para descubrir magpierss, una librería en PHP que analiza cualquier fuente en formato rss y lo deja organizado en arrays. También he jugueteado algo con Prototype y Script.aculo.us

Playtweets


Menea esta noticia Busca en Technorati enlaces a esta nota Diggea esta noticia Añádeme a tu del.icio.us

Descomprimir un archivo zip con php

27 May 2008, 01:21
Espero tus comentarios... [3]


Tanto para comprimir como para descomprimir un archivo zip, podemos hacer uso de un par de librerías que vienen con la instalación de phpMyAdmin y que se encuentran en la carpeta libraries y son los archivos unzip.lib.php y zip.lib.php.

Un ejemplo de como comprimir varios archivos en un zip sería el siguiente:

PHP:
<?php
ini_set("memory_limit","20M");
require_once("zip.lib.php");
require_once("unzip.lib.php");

$zip = new zipfile();
$filename = "1.jpg";
$fsize = @filesize($filename);
$fh = fopen($filename, 'rb', false);
$data = fread($fh, $fsize);             
$zip->addFile($data,$filename);
$filename = "2.jpg";
$fsize = @filesize($filename);
$fh = fopen($filename, 'rb', false);
$data = fread($fh, $fsize);             
$zip->addFile($data,$filename);


$zipcontents = $zip->file();

header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"TheZip.zip\"");
header("Content-length: " . strlen($zipcontents) . "\n\n");

// output data
echo $zipcontents;

?>

Mientras para descomprimir podemos ver el siguiente ejemplo:

PHP:
<?php
ini_set("memory_limit","20M");
require_once("zip.lib.php");
require_once("unzip.lib.php");

$zip = new SimpleUnzip();
$filename = "myzippedfile.zip";
$entries = $zip->ReadFile($filename);

foreach ($entries as $entry){
        $fh = fopen($entry->Name, 'w', false);
        fwrite($fh,$entry->Data);
        fclose($fh);
}


?>

El código es muy sencillo de entender con lo que sobran las explicaciones.


Menea esta noticia Busca en Technorati enlaces a esta nota Diggea esta noticia Añádeme a tu del.icio.us

Segundo concurso de mashups en movilidad

8 March 2008, 17:20
¿Me cedes alguna idea para el concurso?


Desde The Cocktail a través del Open Movil Forum han organizado la segunda edición del concurso de mashups de movilidad, para el cual los premios son más suculentos que en la edición anterior, de la cual no creo que tenga que recordar que obtuve el segundo premio con mi Peticiones al DJ y que me llevé un Nokia n800, al cual le estoy sacando bastante partido. En esta ocasión se reparten 10.000€ en premios para los tres mejores proyectos, con lo que habrá que ponerse las pilas.

Las bases del concurso no difieren mucho de las de la primera edición y básicamente consiste en desarrollar un idea de un mashup que utilice cualquiera de las librerías que dispone a tu disposición Open Movil Forum. Así que ya sabes, piensa en una buena idea, llévala a cabo y a esperar que haya suerte. !Unos ya la tuvimos!


Menea esta noticia Busca en Technorati enlaces a esta nota Diggea esta noticia Añádeme a tu del.icio.us

Autoguardado de formularios con AJAX

7 March 2008, 23:46
¿Crees que este artículo te servirá en tus desarrollos?


En los últimos días se me ha planteado un problema en el trabajo que consiste en: ¿qué pasa cuando un usuario está rellenando un formulario muy extenso (hablo incluso de horas) y por cualquier motivo, transcurrido un tiempo, la página del formulario se pierde?

La verdad es que es una faena que después de estar introduciendo datos durante mucho tiempo, éstos se pierdan por cualquier motivo así que me puse a idear una forma de guardar los datos introducidos hasta el momento sin que el usuario tenga que hacer nada y después de darle vueltas, la mejor forma que encontré fue hacerlo utilizando AJAX.

La idea es que cada cierto tiempo, en mi caso cinco minutos, se guarden los datos introducidos en el formulario en una base de datos, para en el caso de que se pierda la página, poder recuperarlo sin problemas.

Para ello, utilizaremos la librería Prototype que tiene una clase llamada PeriodicalExecuter, y que su función, como su propio nombre indica, es ejecutar una determinada función cada cierto tiempo. La creación de un objeto de esta clase recibo parámetros: la función a la cual invocar y los segundos que tarde en ejecutarse una nueva instancia.

La función a la cual vamos a invocar creará una instancia Ajax.request, a la cual le debemos pasar por parámetro los valores de los elementos del formulario, el método por el cual se pasan (post o get) y la página que queremos que actúe sobre esos datos (en nuestro un script php). Veamos como quedaría el código en la página que contiene el formulario:

PHP:
<script src="prototype.js" language="javascript"></script>
<script language="javascript">
new PeriodicalExecuter(savetest, 300);
function guardadatos(){
        new Ajax.Request('guardadatos.php', {
          parameters: { question1: $F('question1'), question2: $F('question2'), question3: $F('question3'), },
          method: 'post',
        });
}
</script>

Hay que tener en cuenta que se debe conocer, que usuario ha introducido esos datos. En mi aplicación, los usuarios que rellenan los formularios son usuarios registrados, con lo que sé en cada momento la identidad del que rellena dicho formulario. Ahora vemos el código del script que almacena la información en la base de datos:

PHP:
<?php
session_start();
includes("databaseconnection.php");

//Antes de insertar nada, elimino los datos de este usuario
mysql_query("DELETE FROM datos_guardados WHERE id_user='".$_SESSION['username']."'")

$keys = array_keys($_POST);
foreach ($keys as $key){
        mysql_query("INSERT INTO datos_guardados (id_user, element_form, value) VALUES ('".$_SESSION['username']."', '$key', '".$_POST[$key]."')");
}

?>

Ya sólo nos quedaría añadir el código para que, al cargar el formulario, se compruebe si ese usuario tiene datos almacenados y recuperarlos en los elementos del propio formulario. Pero eso os lo voy a dejar como ejercicio.


Menea esta noticia Busca en Technorati enlaces a esta nota Diggea esta noticia Añádeme a tu del.icio.us

Como generar un PDF a partir de un HTML con PHP

23 February 2008, 00:56
¿Has utilizado alguna vez estas librerías? [6]


¿Cómo se puede generar a partir de un HTML utilizando PHP? Pues es relativamente sencillo gracias a la clase html2fpdf. Dicha clase utiliza es una extensión a otra llamada fpdf. FPDF sirve para generar archivos en formato pdf al vuelo. Permite incrustar texto, imágenes, cabeceras, tablas, etc. Pero si el texto que tenemos está en formato HTML todo lleno de etiquetas por aquí y por allá, html2fpdf nos facilita la labor, sustituyendo esas etiquetas HTML por los comandos correspondientes de fpdf.

Si descargáis la clase html2fpdf, vereis que contiene una serie de archivos entre los que se encuentra un directorio llamado font. En la cabecera de nuestro PHP, necesitamos crear una constante llamada FPDF_FONTPATH que almacenará la ruta donde se encuentra esta carpeta con respecto a nuestro script. También definimos la constante RELATIVE_PATH, aunque esta podríamos haberla obviado.

PHP:
define('FPDF_FONTPATH','./font/');
define('RELATIVE_PATH','./');
require('./html2fpdf.php');

Y esta sería la sintaxis para generar nuestro archivo PDF con el contenido de un texto en formato HTML. Simplemente es necesario crear una instancia de la clase HTML2FPDF, añadir una primera página, escribir el código html e invocar la salida.

PHP:
$texto = 'Utilizamos un texto con <strong>negrita</strong>, <i>cursiva</i> y <u>subrayado</u> para comprobar la eficacia del m&eacute;todo';
$pdf = new HTML2FPDF();
$pdf->AddPage();
$pdf->WriteHTML($texto);
$pdf->Output();


Menea esta noticia Busca en Technorati enlaces a esta nota Diggea esta noticia Añádeme a tu del.icio.us

Nueva actualización del plugin txp_twitter

24 January 2008, 18:32
Espero tus comentarios...


Hace ya algún tiempo, desarrollé un plugin para textpattern que mandaba un tweet a tu cuenta en twitter cada vez que publicabas un artículo. Ese plugin tenía un problema y era que cada vez que modificabas un artículo publicado, se enviaba un mensaje, con lo que la cuenta de twitter se cargaba con mensajes duplicados.

En la nueva versión, este problema se ha eliminado con el uso de un campo extra para almacenar la información de si un artículo ha sido ya publicado en nuestra cuenta de twitter. En principio, el campo extra utilizado ha sido el custom_1, pero editando directamente el plugin podeis cambiarlo por cualquier otro (del 1 al 10). Sólo debeis tener en cuenta que si cambiais el campo extra, debeis asignarle un nombre cualquiera a ese campo en las preferencias de vuestra instalación de textpattern (Admin > Preferencias > Preferencias avanzadas).


Menea esta noticia Busca en Technorati enlaces a esta nota Diggea esta noticia Añádeme a tu del.icio.us

« Entradas antiguas