sábado, 16 de abril de 2011

JavaScript: Traducir páginas al español automáticamente con google translate

Si arrastras el enlace que hay a continuación a tu barra de enlaces del navegador, cuando estés navegando por cualquier página y quieras leerla traducida al español (o al menos un intento de traducción), pulsas el enlace, te mostrará la traducción generada por Google Translate.

Traducir al español

También puedes hacer click con el botón derecho y una de las opciones será añadirla a marcadores (la opción varía según el navegador que uses).

miércoles, 13 de abril de 2011

Java Script - Agregar cualquier pagina que te guste a tu muro de facebook

Si arrastras el enlace que hay a continuación a tu barra de enlaces del navegador, cuando estés navegando por cualquier página y quieras añadir un enlace a ella en tu muro de facebook, solo tienes que pulsar el enlace, te mandará a una página donde podrás poner un comentario a la entrada y después añadirla a tu muro.

Publicar en Facebook

También puedes hacer click con el botón derecho y una de las opciones será añadirla a marcadores (la opción varía según el navegador que uses).

sábado, 19 de febrero de 2011

C - mysql_mun_fields - numero de campos que contiene el resultado de una consulta hacia una conexión mysql

Cuando realizamos una consulta contra una conexión, podemos necesitar saber cuantos campos ha devuelto, por ejemplo, si queremos hacer un bucle  recorriendo todos los campos.

Aquí, conn es un objeto conectado a una base de datos mysql

    //realizamos la consulta
    if (mysql_query(conn, "consulta SQL"))
        {
        fprintf(stderr,"%s\n",mysql_error(conn));
        return 1;
        }

    //volcamos el resultado en un recordset
    res = mysql_use_result(conn);

    //obtenemos el numero de filas

    printf("%d\n", mysql_num_fields(res));

C - Acceder a una base de datos en mysql desde C (2 de 2. Conectandose a mysql)

Como conectarnos a una instancia de mysql-server desde un programa en C.

Un ejemplo sencillo conectándonos a una base de datos.

#include 
//agregamos la cabecera de mysql
#include 

//definimos una macro
#ifdef __linux__
    #define clrscr system("clear");
#else
    #define clrscr system("cls");
#endif

int main(int argc, char *argv[])
    {
    clrscr;
    //declaramos los objetos 
    //conexión, que será nuestro enlace 
    //abierto con la base de datos
    MYSQL *conn;
    //conjunto de resultados (o recordset), 
    //donde volcaremos los resultados de las 
    //consultas que realicemos
    MYSQL_RES *res;
    //fila, para poder trabajar de forma 
    //individual con los registros obtenidos de una consulta.
    MYSQL_ROW row;

    //definimos las variables que utilizaremos 
    //en las llamdas a los métodos
    char *server="localhost";
    char *user="miusuario";
    char *password="micontraseña";
    char *database=argv[1]; //aqui utilizamos el primer 
    //parámetro obtenido desde la linea de comando,

    //nos aseguramos de que conn no esta enlazando a nada    
    conn = mysql_init(NULL);

    //realizamos la conexión y comprobamos 
    //que no se hayan producido errores
    if (!mysql_real_connect(conn,server,user,password,database,0,NULL,0))
        {
        fprintf(stderr,"%s\n",mysql_error(conn));
        return 1;
        }

    //asignamos una consulta a la conexión 
    //y comprobamos que no se hayan producido errores
    if (mysql_query(conn, argv[2]))
        {
        fprintf(stderr,"%s\n",mysql_error(conn));
        return 1;
        }

    //volcamos el resultado de la consulta en el recordset
    res = mysql_use_result(conn);

    printf("Resultado de la consulta: \n");


    /*Recorremos el recordset:
        con mysql_fetch_row, avanzamos uno a uno
    los registros del recordset y volcamos la salida 
    en el row, Cuando no quedan más registros devuelve NULL.
    El row es un array que contiene los campos de la consulta.
    */
    while ((row = mysql_fetch_row(res)) != NULL)
        {
        printf("%s - %s \n", row[0],row[1]);
        }

    //liberamos el recordset.
    mysql_free_result(res);
    //cerramos la conexión al servidor mysql
    mysql_close(conn);
    return 0;
    }


Requisitos antes de compilar.

Información obtenida aquí:
http://www.cyberciti.biz/tips/linux-unix-connect-mysql-c-api-program.html

C - Acceder a una base de datos en mysql desde C (1 de 2. Requisitos)

Como conectarnos a una instancia de servidor mysql-server y ejecutar consultas contra sus bases de datos.

Requerimientos:
Las cabeceras y librerías de C para realizar la conexión, nos las descargamos desde la web de mysql: http://dev.mysql.com/downloads/



Nos descargamos la versión adecuada a nuestro sistema, y obtenemos un archivo comprimido que contiene varias carpetas:


Para esta parte necesitaremos tener los permisos adecuados:

Las cabeceras:
El contenido de la carpeta  include lo copiamos en /usr/include

Las librerías
    El contenido de lib lo copiamos en  /usr/lib

estas también se pueden instalar desde los repositorios:
    sudo apt-get -s install libmysqlclient15-dev


A partir de ahora, con gcc podemos compilar nuestro codigo en C, indicándole con parámetros:

-L/usr/lib/mysql : añadimos una ruta a la lista de directorios donde deben buscarse las librerías que usa el programa
-lmysqlclient: le indicamos que para compilar el programa utilice la librería mysqlclient

Por ejemplo : gcc -o test  -L/usr/lib/mysql -lmysqlclient test.c


Informaciones sacadas de:

http://lists.mysql.com/mysql/200178
http://ubuntuforums.org/showthread.php?t=986042

viernes, 18 de febrero de 2011

C - Haciendo un codigo compatible con linux y windows

Cuando estamos haciendo un programa en C necesitamos tener en cuenta para en que sistema operativo va a ser compilado y ejecutado, porque aunque la mayoría del código valdrá indistintamente para ambos sistemas, con algunas acciones concretas que implican interactuar con el sistema operativo no ocurre así.
Un caso sería la construcción de rutas de acceso a un archivo, o un caso mucho más sencillo, hacer un limpiado de la pantalla antes de empezar a escribir, los comandos "clear" o "cls" según el sistema en el que estemos.

Existe una forma de hacerlo sin tener que reescribir lineas de código antes de compilar el programa, son las directivas, que permiten dirigir la ejecución del código en función de si está definida o no una macro.


//definición de una macro
#define __micontrol__

//si la macro está definida
#ifdef __micontrol__
    printf("%s","La macro __micontrol__ está definida");
//sino
#else
    printf("%s","La macro __micontrol__ NO está definida");
#endif


o también:


//si la macro está definida
#ifdef __micontrol__
    printf("%s","La macro __micontrol__ está definida");
#endif

//si la macro no está definida
#ifndef __micontrol__
    printf("%s","La macro __micontrol__ NO está definida");
#endif


Cuando estamos en un sistema linux, el compilador tiene predefinida una macro __linux__ o linux, según el sistema, así, comprobando la existencia o no de esa macro, sabemos en que sistema estamos ejecutando el programa, vamos a nuestro ejemplo de limpiar la pantalla:

Para no tener que preocuparnos si nuestro sistema linux tiene predefinida la macro __linux__ o la macro linux, y poder trabajar siempre con una de ellas independientemente del sistema (en este caso usar siempre __linux__), realizamos una comprobación previa, si existe linux, nosotros creamos __linux__.


#ifdef linux
    #ifndef __linux__
        #define __linux__
    #endif
#endif

void limpiarpantalla()
    {
    #ifdef __linux__
        system("clear");
    #else
        sistem("cls");
    #endif
    }


incluso podríamos ahorrarnos el crear una función y definir una macro que simplemente sería substituida a la hora de compilar:


#ifdef __linux__
    #define clrscr system("clear");
#else
    #define clrscr system("cls");
#endif


y en el código escibiríamos "clrscr;" donde fuera necesario.

C - Macros

Una macro es una directiva que nos permite 
substituir un fragmento de código por una palabra 
que elijamos, y allí donde en el código del 
programa escribamos esa palabra, el compilador 
interpretará que hemos escrito el código correspondiente.

Así, después de haber definido la macro MIMACRO

#define MIMACRO printf("%s","Instruccion printf a traves de una macro")

siempre que en el codigo escribamos

MIMACRO;

se ejecutará la instrucción printf.

También podemos definir parámetros en una macro:

#define MIMACRO2(x) printf("%s%s\n","En realidad lo que quería decir era esto:",x)

y llamarla de esta forma:

MIMACRO2("estamos aquí, haciendo como que programamos.");



Nota: atención al ";" que debe seguir a as instrucciones en C. 
Tenemos la opción de escribirlo en la macro, evitando tener
 que escribirlo cada vez que la llamemos. Las dos opciones son válidas

Definición:
#define MIMACRO printf("%s","Instruccion printf a traves de una macro");
Llamada:
MIMACRO

Definición:
#define MIMACRO printf("%s","Instruccion printf a traves de una macro")
Llamada:
MIMACRO;