Convertir archivos XML a SQL

10 Diciembre, 2009 por Manu Garcia Sin comentarios »

Vuelvo a la carga con un breve post hablando sobre una herramienta bastante útil que hoy encontré por delicious llamada AmoK xml2sql.

Este pequeño programa que no llega a los 500k y que se ejecuta por línea de comandos convierte fácilmente archivos XML en archivos SQL, un caso práctico podría ser si tenemos un XML con un listado de productos que queremos importar a nuestra base de datos.

Su uso es bastante sencillo, desde “cmd” ejecutamos…

C:\am-xml2sql.v1.0_an>xml2sql.exe productos.xml productos.sql

y nos creará en la misma carpeta el archivo productos.sql con todo los inserts, yo tuve un par de problemillas de fácil solución principalmente con las comillas simples ‘ , pero haciendo un replace en el xml y cambiando todas las comillas simples por dobles se soluciona.

Restaurar un Mysql Backup con php

5 Septiembre, 2009 por Manu Garcia 3 comentarios »

Escribo un post rápido sobre algo tan sencillo que ni se me había pasado por la cabeza, acostumbrado al acceso shell y el uso de mysqldump. Hace poco un amigo me comentaba el problema que tuvo al subir a un servidor un sql porque no tenía acceso shell para hacer mysqldump y tuvo que dividir el sql en varias partes para su uso en PhpMyAdmin…

Pero hay una solución más sencilla y mucho más rapida, que podemos encontrar en el blog de Daniel15

<?php
/*
 * Restore MySQL dump using PHP
 * (c) 2006 Daniel15
 * Last Update: 9th December 2006
 * Version: 0.2
 * Edited: Cleaned up the code a bit.
 *
 * Please feel free to use any part of this, but please give me some credit :-)
 */

// Name of the file
$filename = 'test.sql';
// MySQL host
$mysql_host = 'localhost';
// MySQL username
$mysql_username = 'root';
// MySQL password
$mysql_password = '';
// Database name
$mysql_database = 'test';

//////////////////////////////////////////////////////////////////////////////////////////////

// Connect to MySQL server
mysql_connect($mysql_host, $mysql_username, $mysql_password) or die('Error connecting to MySQL server: ' . mysql_error());
// Select database
mysql_select_db($mysql_database) or die('Error selecting MySQL database: ' . mysql_error());

// Temporary variable, used to store current query
$templine = '';
// Read in entire file
$lines = file($filename);
// Loop through each line
foreach ($lines as $line)
{
	// Skip it if it's a comment
	if (substr($line, 0, 2) == '--' || $line == '')
		continue;

	// Add this line to the current segment
	$templine .= $line;
	// If it has a semicolon at the end, it's the end of the query
	if (substr(trim($line), -1, 1) == ';')
	{
		// Perform the query
		mysql_query($templine) or print('Error performing query \'<strong>' . $templine . '\': ' . mysql_error() . '<br /><br />');
		// Reset temp variable to empty
		$templine = '';
	}
}

?>

Ser autónomo en España

2 Agosto, 2009 por Manu Garcia Sin comentarios »

Como ya comenté en un post anterior soy autónomo desde hace un tiempo, además monté mi SL y bueno me puedo considerar empresario, sí pero de esos que no tienen un buen coche o manejan miles de euros xD.

Ser autónomo en España la verdad, no es nada fácil, entre los papeleos que tienes que hacer para su alta después te das cuenta que no recibes apenas ayudas, que tienes que moverte muchisimo para conseguir un asesoramiento mínimo y que este en muchas ocasiones no te aportada absolutamente nada. Pero lo peor de todo esto no es que desde principio, sin ganar un duro tengas que pagar 240 euros cada mes religiosamente, que las ayudas brillen por su ausencia, sino que encima después en lo que a derechos laborales se refieres estamos alli al fondo a la derecha, detrás de los bombos de basura :)

Algo se ha avanzado en estos tiempos y mucho se habla de mejorar pero a dia de hoy, si al final me voy al paro sería un ciu dadano de segunda, años cotizando pero para nada porque no tendría acceso al subsidio por desempleo

Me entrevistan en el Diario de Jerez

31 Julio, 2009 por Manu Garcia 6 comentarios »

La verdad es que tengo bastante abandonado el blog, ya no tan sólo porque tenga mil cosas que hacer sino porque a veces no se ni de que hablar la verdad.

Pero… ahora tengo una excusa jeje, hace varios días el periodico de mi tierra el Diario de Jerez me realizó una entrevista telefónica por mi Mención de Honor en los premios Delta:

Aquí os dejo el enlace hacia la entrevista.

http://www.diariodejerez.es/article/jerez/475918/manuel/garcia/animo/la/gente/se/mueva.html

Soporte Unicode en CentOS 5.2 con PHP y PCRE

19 Mayo, 2009 por Manu Garcia 2 comentarios »

No hace mucho me encontré con un problema en un servidor nuevo de la empresa (un CentOS con Plesk), tras instalar el framework Kohana y probar el test de compatibilidad que trae este framework me avisaba de que podría no funcionar bien ya que no tenía en mi servidor soporte unicode en el PCRE, para probar si nuestro PCRE tiene soporte unicode tan sólo tenemos que poner via linea de comandos:

$ pcretest -C
PCRE version 6.6 06-Feb-2006
Compiled with
  UTF-8 support
  No Unicode properties support
  Newline character is LF
  Internal link size = 2
  POSIX malloc threshold = 10
  Default match limit = 10000000
  Default recursion depth limit = 10000000
  Match recursion uses stack

Si a ti también te aparece “No Unicode properties support” al ejecutar pcre sigue leyendo :) sino te recomiendo que visites mi web de música electrónica xD

Solucionar el problema

Antes de nada comentarte que no debes usar el usuario “root” para esto, por lo que deberíamos usar un usuario normal.

Bueno una vez estamos conectados con un usuario “normal” debemos crear los siguientes directorios en la carpeta por defecto de tu usuario ej. /home/miusuario …

$ mkdir -p ~/src/rpm
$ cd ~/src/rpm
$ mkdir BUILD RPMS SOURCES SPECS SRPMS
$ mkdir RPMS/i[3456]86 RPMS/noarch RPMS/athlon

Una vez hecho esto creamos el archivo ~/.rpmmacros y escribimos lo siguiente:
# Path to top of build area
%_topdir /home/miusuario/src/rpm

A continuación nos descargamos este archivo(Recuerda que yo estoy actualizando CentOS 5.2 con PCRE 6.6) en la carpeta de nuestro usuario y ponemos:

$ rpm -ivh pcre-6.6-2.el5_1.7.src.rpm

Esto pondrá los archivos necesarios en las carpetas creadas anteriormente para poder recompilar de nuevo PCRE con soporte Unicode.
Ahora abrimos con nano (o vi eso a gusto de cada uno) el archivo

~/src/rpm/SPECS/pcre.spec

Buscamos …
%configure –enable-utf8

Una vez encontrada le añadimos lo siguiente y guardamos el archivo
%configure –enable-utf8 –enable-unicode-properties

Bueno ya tenemos todo listo para recompilar PCRE con soporte Unicode ahora tan sólo tenemos que ejecutar lo siguiente

$ rpmbuild -ba ~/src/rpm/SPECS/pcre.spec

Esto nos mostrará algo parecido a esto:

Escrito: /home/miusuario/src/rpm/SRPMS/pcre-6.6-2.7.src.rpm
Escrito: /home/miusuario/src/rpm/RPMS/i386/pcre-6.6-2.7.i386.rpm
Escrito: /home/miusuario/src/rpm/RPMS/i386/pcre-devel-6.6-2.7.i386.rpm
Escrito: /home/miusuario/src/rpm/RPMS/i386/pcre-debuginfo-6.6-2.7.i386.rpm

Ahora sí debemos cambiar a root para poder instalar el nuevo rpm:

$ rpm -Uvh /home/miusuario/src/rpm/RPMS/i386/pcre-6.6-2.7.i386.rpm

Reiniciamos apache :)   listo! problema resuelto :)

Para este pequeño tutorial me he basado en los manuales Unicode Support on CentOS 5.2 with PHP and PCRE y How to patch and rebuild an RPM package

Migración entre servidores dedicados Linux

23 Marzo, 2009 por Manu Garcia Sin comentarios »

Innodb vs MyIsam

20 Marzo, 2009 por Manu Garcia 3 comentarios »

Como ya he comentado varias veces ando enfrascado en la nueva versión de mi web de música electrónica Emoxion, mientras en otros artículos hablaba sobre que framework de php elegir o que foro de php daría mejores resultados basándome en el uso de memoria, en esta ocasión la cosa va más de Base de Datos.

Desde hace años trabajo con MySql, aunque he trabajado con SQl Server me siento muy cómodo con Mysql y plantear otras opciones no se me pasa por la cabeza, es una base de datos muy estable y extendida como para plantearme a estas alturas un cambio. Cuando diseñé la base de datos de Emoxion, hallá por el 2003, mis conocimientos sobre diseño de base de datos eran prácticamente nulos y aprendí sobre la marcha, un manual por aquí otro por allí y salí del paso, pero eso se nota ahora sobre todo en el rendimiento por lo que uno de mis trabajos en la nueva Emoxion será el diseño una nueva base de datos relacional.

Mientras diseñaba la base de datos en un bloc de notas (aunque mi intención es usar la herramienta Mysql Workbench) me plantee el cambiar de MyIsam a Innodb sobre todo por la integridad referencial aunque me asustaba un poco el tema velocidad, es bien conocido que MyIsam es mucho más rapido que Innodb a la hora de hacer SELECTS, auque recientemente después de leer un artículo compárandolos (en el cual se puede ver que son bastante similares) y además plantearselo a varios amigos posiblemente me decante por la opción de Innodb por lo comentado anterior mente de la integridad referencial y por su estabilidad.

Ya os contaré que tal la experiencia jeje.

5 Trucos para hacer la página 404 más usable

18 Marzo, 2009 por Manu Garcia Sin comentarios »

A continuación voy a escribir 5 trucos/consejos para que nuestras páginas de errores 404 sean mucho más usables.
Este artículo es una “traducción” de “5 tips to make your 404 page more usable“, pongo traducción entre comillas porque tampoco es que vaya ser una traducción exacta, ya que me limitaré a poner los consejos añadiendo cosas mias.

1. Olvídate de lo “por defecto”

Personalizar la página 404 es lo primero que debemos hacer, la verdad es que el típico mensaje por defecto no ayuda mucho, vale que te dice que no se ha encontrado la página que buscabas pero nuestra intención es hacer que el usuario la encuentre o siga navegando por otra opción parecida, de esta forma no perdemos al visitante.

Visitar una página 404 que está fuera del diseño de la web sólo provoca que el usuario se confunda y no sepa dónde está,  tendría que visitar el dominio directamente para saber dónde está y qué puede encontrar, y para ser sinceros la mayoría de usuarios si no se lo das todo hecho posiblemente se vayan.

Para hacer esto tenemos disponibles varias herramientas para wordpress y apache que nos ayudarán, y si no recuerdo mal Webmaster tools de Google tiene también algo parecido.

2. Hazlo familiar

El diseño de la página 404, como comentaba antes debe ser familiar, por ejemplo la página de error 404 de Yahoo es muy simple, pero es más que evidente que estás dentro de Yahoo, y esto además de básico es muy importante. Si el usuario llega a la página 404 y ésta es completamente diferente al diseño de la web podría confundirse y marcharse ipso facto.
Incluir el logo de la web sería una solución simple pero suficiente para “tranquilizar” al usuario indicándole donde se encuentra.

3. Hazlo básico

Tu página 404 debería ser básica, sin sobrecargarla con información e imágenes, ya que la función de esta página es indicarnos el error  y que el usuario siga navegando por otras opciones de nuestra web, además cuanto más rápido cargue esta  página mucho mejor.

Una página de error con una caja de búsqueda podría ayudarnos a que el usuario rápidamente continue navegando, si no disponemos de motor de búsqueda podemos implementar el de Google con la opción de búsqueda en nuestra web. Otra opción podría ser incluir un top de los artículos más leidos de nuestra web o los más recientes.

4. Muestra un menu

Tu página 404 debería ofrecer al menos un menu básico para facilitarle la navegación hacia el resto de la web, además de que el logo de tu web en la página de error sea clicable y te envíe a la “home” se debería poner varios enlaces a modo menu para tus secciones más importantes. Esto sería otro añadido además de la caja de búsqueda o los últimos posts de tu blog ….

Pero recuerda que debe ser algo básico sin sobreinformación ya que lo que nos interesa es que el usuario fácilmente elija una opción.

5. Se creativo pero no te vuelvas loco

Un poco de creatividad en la web normalmente no importa, pero una cosa es ser creativo y otra cosa muy distinta es agobiar con la creatividad. Ser creativo puede hacer que la función de la página de error 404 no cumpla con su propósito y que confunda mucho más al usuario.

Nos “Mudamos” a ComVive

12 Marzo, 2009 por Manu Garcia 2 comentarios »

La “vida” de Emoxion ha pasado por muchas empresas de alojamiento web, en la gran mayoría la experiencia ha sido mala aunque de los errores se aprende y más cuando eres amateur (supongo que mejor cometer estos errores antes de lanzarte a algo serio).

Recuerdo cuando teníamos Emoxion en un virtual server con una “pseudoempresa”  que un día por arte de magía desapareció y con ella toda nuestra base de datos, creo que eso pasó por el 2004. Esto en parte me sirvio para primero, hacer copias de seguridad con frecuencia y segundo para buscar siempre referencias de la empresa y no irte con cualquiera.

Ahora mismo trabajamos con la empresa francesa OVH, que tiene unos precios muy competitivos y ofrece unas maquinas increibles, pero tras ver problemas de conectividad y lentitud estos ultimos tiempos sobre todo con las conexiones procedentes desde Telefónica y otros varios factores como por ejemplo la experiencia vivida por un compañero de profesión nos hemos decidido a realizar el cambio.

Para hacer esta búsqueda (la cual tiene su dificultad) hemos optado por el camino fácil, recomendaciones.

Trás hablar con diferentes compañeros de profesión como Nacho de Salir.com y David de VotamiCuerpo.com (curioso porque no sé si ellos se conocen entre sí) ambos me recomendaron la misma empresa; Comvive.es ademas vi que otros proyectos como yonkis.com trabajan también con ellos.

Las cualidades  de esta empresa sobre todo es el soporte, una empresa cercana que te administra los servidores y que sabes que si a las 3 de la mañana se cae el servidor un técnico se levatará e intentará solucionarlo, evidentemente que esto me lo diga un comercial de la empresa no me convence pero que venga de estas dos personas pues hace que me de confianza.

Además lo que más me ha sorprendido es que los precios son competitivos, algo más caros tal vez que fuera de España pero con la ventaja de ser administrados y una latencia muy superior a sus competidores extranjeros e inclusos alguno que otro local.

Total, aun hablo un poco desde el desconocimiento de alguien que aun no ha usado sus servicios así que ya iré informando de nuestra experiencia ya sea para bien o para mal (espero que sea para bien xD)

Migrando a Kohana Framework

22 Febrero, 2009 por Manu Garcia 3 comentarios »

Llevo un tiempo pensando que el usar un framework “famoso” a la larga me beneficiaría, soy un poco cabezón y esto me ha costado asimilarlo (usaba un framework casero), lo gracioso de esto es que ya en otros proyectos he usado Frameworks como el de Zend, con unos resultados muy buenos a la hora de desarrollar.

El motivo de esta “lucha” interna es el uso de memoria de los Frameworks, si que es cierto que un framework te facilita muchisimo las cosas, muchas librerías ya programadas, una estructura MVC y lo más importante, una metodología de trabajo. Cuando trabajas en este sector y te mueves por diferentes proyectos donde nos has participado desde el principio agradeces el uso de frameworks (MVC!) populares con una extensa documentación frente a proyectos programados desde cero y sin documentación alguna.

Pero con el tráfico que tiene Emoxion no creo que sea buena idea no tener en cuenta el uso de la memoria por parte de un framework, por ejemplo Zend, me parece un framework muy bueno pero hace un uso muy bestia de la memoria mientras que Kohana no, aunque claro esto es muy relativo, entiendo que no podemos basarnos sólo en el uso de memoria sino que hay muchas otras cosas que debemos evaluar.

¿Que me ha gustado de Kohana?

Es PHP5 OOP estricto, con las ventajas que esto conlleva, autocarga de clases, interfaces, etc…
Que en pocos minutos ya sabías como empezar, haciendo su uso muy fácil frente a otros frameworks.
Que haciendo lo mismo (prácticamente) usa menos recursos que otros.
Y que tiene una comunidad detrás bastante grande cosa que te anima para que su desarrollo sea continuado.

Por lo que al final me he animado y la versión nueva de Emoxion estará basada en Kohana :)