| Subcribe via RSS

MySQL: Importar un fichero SQL cambiando el charset

Octubre 29th, 2008 | No Comments » | Posted in mysql

En ocasiones es posible que necesites importar a una base de datos MySQL un fichero con un backup que está definido con un set de caracteres diferente al que usa la BD.

Si se importa sin más es muy posible que aparezcan caracteres extraños al ver el contenido de la base de datos.

Desde consola

Cuando esto sucede puedes indicar una condición extra en la importación para indicar el character set que vas a usar. Esta opción es: –default-character-set:

mysql -uusuario -p base_datos < fichero.sql --default-character-set=set_caracteres

Donde:
set_caracteres: es el set de caracteres de la nueva base de datos (por ejemplo utf8).
fichero.sql: es el fichero que contiene la estructura y/o datos del fichero exportado previamente.
base_datos: es la base de datos en la que vamos a guardar el contenido del fichero.

Con PHPMyAdmin

Esto también se puede hacer desde PHPMyAdmin. En la pestaña de importación de datos hay un desplegable que nos permite indicar el charset que vamos a usar.

Tags: , ,

Problemas al crear una función en MySQL: Error 1064

Octubre 27th, 2008 | 2 Comments | Posted in mysql

Hace un par de días publiqué una función en MySQL que permitía contar los días entre dos fechas sin contar fines de semana. Le he usado en varios servidores pero en uno de ellos me he encontrado con un problema:

#1064 - You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax
to use near 'IF EXISTS `workdaydiff`' at line 1

Después de volverme loco un buen rato he encontrado la solución aquí:

Bastaba con añadir un punto y coma al delimitador, es decir, en lugar de:

DELIMITER $$

usar:

DELIMITER $$;

y, efectivamente, ha funcionado.

Tags: ,

Relanzamiento de caricaturasonline.com - la web de las caricaturas personalizadas

Octubre 26th, 2008 | No Comments » | Posted in mis-proyectos

Hoy hemos subido la nueva versión del software de caricaturasonline.com. Tiene unas cuantas mejoras en cuanto a navegación y usabilidad; amén de todas las nuevas plantillas que hemos añadido.

Además, en esta nueva versión hemos metido en el catálogo de servicios un montón de nuevas opciones como la restauración y coloreado de fotos, pop-arts, óleo, grandes clásicos, acuarela, etc…

Para distribuidores, fotógrafos, tiendas de regalo o de fotos se ha puesto en marcha también la web Marrazki.net.

Tags:

Introducción a la GSL (GNU Scientific Library) - Evaluar un polinomio

Octubre 23rd, 2008 | No Comments » | Posted in C/C++, programacion

Recientemente he tenido que desarrollar un pequeño programa usando la librería GSL (GNU Scientific Library). Esta es una potente librería disponible en C para realizar complejos cálculos científicos. Este artículo va a servir como introducción a dicha librería.

Lo primero que necesitamos para trabajar con esta librería en Ubuntu es el paquete libgsl0-dev. Si no me equivoco el paquete libgsl0dbl, necesario para ejecutar programas hechos con esta librería, viene “de serie” en el sistema.

Vamos a ver el funcionamiento de la librería evaluando el polinomio: 4×2+3x+2 cuando x = 2:

/* ejemplo_gsl.c */
#include <stdio.h>
#include <gsl/gsl_poly.h>
 
int main (void)
{
  double coeficientes[] = { 2, 3, 4 };
  double x = 2;
  double resultado = gsl_poly_eval (coeficientes, 3, x);
  printf ("4*x2 + 3*x + 2 = %f\n", resultado);
  return 0;
}

El polinomio se evalúa usando la función gsl_poly_eval(), que tiene como parámetros:

- coeficientes: un array que contiene los coeficientes del polinomio.
- 3: es el tamaño del array de coeficientes.
- x: contiene el valor que queremos evaluar.

Para compilar el ejemplo bastaría con hacer:

gcc -o ejemplo_gsl ejemplo_gsl.c -lgsl -lgslcblas

Este programa daría como resultado:

4*x2 + 3*x + 2 = 24.000000
Tags: , , ,

Función en MySQL para contar días entre dos fechas sin contar sábados ni domingos

Octubre 21st, 2008 | 6 Comments | Posted in mysql

Después de darle muchas vueltas he encontrado esta útil función en los foros de MySQL que permite calcular el número de días que han transcurrido entre dos fechas sin contar fines de semana.

Espero que os sea tan útil como a mí.

DELIMITER $$
 
DROP FUNCTION IF EXISTS `workdaydiff`$$
CREATE FUNCTION workdaydiff(b date, a date) RETURNS int(11)
    DETERMINISTIC
    COMMENT 'working day difference for 2 dates'
BEGIN
 
DECLARE freedays int;
 
SET freedays = 0;
SET @x = DATEDIFF(b, a);
IF @x<0 THEN
SET @m = a;
SET a = b;
SET b = @m;
SET @m = -1;
ELSE
SET @m = 1;
END IF;
SET @x = abs(@x) + 1;
 
SET @w1 = WEEKDAY(a)+1;
SET @wx1 = 8-@w1;
IF @w1>5 THEN
SET @w1 = 0;
ELSE
SET @w1 = 6-@w1;
END IF;
 
SET @wx2 = WEEKDAY(b)+1;
SET @w2 = @wx2;
IF @w2>5 THEN
SET @w2 = 5;
END IF;
 
SET @weeks = (@x-@wx1-@wx2)/7;
SET @noweekends = (@weeks*5)+@w1+@w2;
 
SET @result = @noweekends-freedays;
RETURN @result*@m;
END$$
 
DELIMITER ;
Tags: ,

SVN - La copia de trabajo está bloqueada

Octubre 20th, 2008 | No Comments » | Posted in svn

Es posible que mientras se esté haciendo un “comit” al SVN mediante algún programa como RapidSVN algo falle (o cerremos el programa accidentalmente) y el repositorio quede bloqueado.

Para solucionar este problema podemos hacer una limpieza mediante el comando:

svn cleanup

o bien usando el comando cleanup del programa con entorno gráfico de SVN que estemos usando. Por ejemplo, en el RapidSVN, se hace mediante Extras->Cleanup.

Tags: ,

Programación en C: Compilando con gcc

Octubre 16th, 2008 | No Comments » | Posted in C/C++, programacion

Voy a iniciar una serie de artículos sobre la compilación de programas en C con gcc. Esta serie de artículos estará centrada en la compilación en Linux.

NOTA: Si usas Ubuntu y no encuentras gcc en tu sistema echa un vistazo aquí.

Para el ejemplo vamos a usar el siguiente sencillo programa:

/* primero.c - Una versión del típico hola mundo */
#include <stdio.h>
 
int main()
{
	printf("Compilado con GCC\n");
	return 0;
}

Para compilar este sencillísimo programa basta con ejecutar la orden:

gcc -o primero primero.c

donde:

-o primero: la opción -o nos permite especificar el nombre del ejecutable que se va a generar. Si no especificamos nada el nombre que se genera por defecto es a.out.

primero.c: el fichero que contiene el código fuente del programa.

Compilando con dos ficheros fuente

Ahora supongamos que tenemos dos ficheros fuente:

primero.c:

#include <stdio.h>
 
int main()
{
	printf("Compilado con GCC\n");
	segundo();
	return 0;
}

segundo.c:

#include <stdio.h>
 
int segundo()
{
	printf("Función segundo\n");
}

Si probamos la orden anterior tendremos el un resultado similar a éste:

/tmp/ccuAuHGn.o: In function `main':
primero.c:(.text+0x1e): undefined reference to `segundo'

La forma correcta de compilar en este caso sería:

gcc -o primero primero.c segundo.c

Y si lo ejecutamos:

Compilado con GCC
Función segundo

Todo muy sencillito hasta ahora. En la próxima entrega veremos cómo compilar nuestro programa con librerías adicionales.

Tags: , , ,

Fuentes (tipografías) para descargar (y II)

Octubre 14th, 2008 | No Comments » | Posted in uncategorized

Y aquí teneís otro sitio más donde ofrecen fuentes para descargar: DaFont.

En este sitio sí que se especifica el tipo de licencia de cada una de las fuentes. Lo que me gusta de este sitio es que las fuentes están agrupadas por estilos y es más fácil encontrar lo que están buscando.

Tags: ,

Las teclas CTRL y MAYS dejan de funcionar en mi Ubuntu cuando arranco VMWare en Ubuntu

Octubre 13th, 2008 | 1 Comment | Posted in ubuntu, vmware

Desde hace unos días venimos experimentando un problemas con el teclado de ordenadores que funcionan con Ubutnu y arrancan una máquina virtual con VMWare. En ocasiones las teclas Control (CTRL), Mayúsculas (Shift) y Bloq Num (Num Lock) dejan de funcionar.

Parece que aún no está clara la causa del problema ni la solución, pero por ahora se puede usar un comando para que vuelvan a funcionar dichas teclas. Se trata de usar el comando:

setxkbmap

Por comodidad, en los PC que están experimentando esos problemas hemos creado un lanzador en el escritorio para ejecutar el programa con sólo hacer click.

Tags: , , ,

No funciona sudo - user not in the sudoers file

Octubre 10th, 2008 | 1 Comment | Posted in ubuntu

Hace unos días añadí a mi usuario de Ubuntu a un grupo adicional usando el comando usermod. Por desgracia, olvidé el grupo admin por lo que no podía usar el comando sudo. Cada vez que intentaba usar un comando como superusuario tenía el mensaje:

user not in the sudoers file

Para solucionarlo debemos reiniciar el ordenador y en el menú de Grub escoger el modo “Recovery mode”. Seleccionamos la opción de entrar como root y tecleamos:

usermod -G gorka,admin,otros-grupos gorka

donde otros-grupos son todos los grupos adicionales al que queremos añadir al usuario.

Este comando tiene la siguiente estructura:

usermod -G lista-de-grupos usuario

Cuidado con la lista de grupos, deben estar separados por comas y sin espacios.

Tags: , ,