| | |

Nueva versión de WAMP5

wamp.pngHa salido una nueva version de WAMP 1.6.4, una aplicación que te instala Apache, PHP5, MySQL, PHPmyadmin y SQLitemanager en tu ordenador, la cual recomiendo sin lugar a dudas.
La nueva versión permite limitar el acceso al servidor web desde internet, que solo se pueda acceder desde localhost, y hacer lo mismo para PHPmyadmin y SQLitemanager. También añade las Zend Optimizer add-ons.
WAMP5
Vía / dzone

Novedades en MySQL 5

mysql.pngUna traducción en español del manual de MySQL 5, que siempre viene bien tenerl en nuestro idioma para que sea más fácil entenderlo. Entre las cosas destacables, yo me centraría en las novedades que ofrece la versión 5 de MySQL:

Manual de referencia de MySQL 5.0

Vía / menéame

|

MySQL se acerca a Microsoft

mysql.pngMySQL ha pagado 3000 dólares para ser socio de Microsoft’s Visual Studio Industry Partner (VSIP) para poder consolidar su base de datos en el entorno Windows.
Según informan desde MySQl, el 40% de las descargas son desde Windows, y este movimiento permitirá una mayor integración entre en la base de datos y el entorno de desarrollo de Microsoft. Mediante el uso de plugin, los desarrolladores de C# o Visual Basic podrá integrar MySQL en sus aplicaciones de una forma sencilla.
Esta cercanía supone un beneficio para ambas compañías, para MySQL el que las aplicaciones en Windows puedan desarrollarse usando su base de datos, y para Microsoft, que los desarrolladores seguirán en el entorno Windows al no tener la necesidad de migrar a otro entorno, o usar base de datos como Oracle que son más partidarios de Linux que de Oracle.
MySQL gets cosy with Microsoft

Vía / dzone

| |

Crear un sistema de registro con PHP y MySQL

Algo común en muchas de las páginas que visitamos, por ejemplo en foros, es la necesidad de registrarnos para poder acceder a los contenidos. El tutorial que ponemos a continuación explica muy bien como hacerlo paso a paso:

Creating a Membership System with PHP and MySQL

Vía / dzone

Análisis de MySQL Workbench

mysql_workbench.pngEl otro día me dio por instalar MySQL Workbench 1.0.6 beta, una aplicación para diseñar bases de datos en MySQL. Nos recuerda mucho a DBDesigner 4, incluso importa modelos creados por esta aplicación. Mi primera impresión es que efectivamente se trata de una beta, pero muy beta.

Lo que más llama la atención es los errores gráfico que hay, aunque no son los más importantes, porque no repercuten en el trabajo, ni cierran la aplicación. Por ejemplo, la típica pantalla que te recuerda a los juegos en MS-DOS cuando cambiaban de modo gráfico:
1.png
O que cuando se minimiza el modelo, hasta que no obtiene el foco, las letras no se dimensionan correctamente:
2.png

Muchas de las opciones del menú no son accesibles, como por ejemplo exportar a imagen, importar de un script SQL y imprimir, cosas que no son importantes, simplemente no las puedes usar y listo. El problema viene cuando la funcionalidad que está implementada no funciona correctamente (o a mí no me ha funcionado):

  • Cuando se realiza ingeniería inversa no relaciona las tablas según las foreing keys (FK).
  • Al exportar el modelo a un script SQL falla la hora de ejecutarlo, si falta algún dato debería indicarlo, no crear un script incorrecto.
  • Puede conectarse a otras BD (Oracle, MS Access, …), lo cual está muy bien para obtener el modelo de datos de ella por si queremos migrar de BD, pero cuando lo he intentado probar con Oracle no me admitía el jar que solicitaban.

Aún tiene que mejorar (y mucho), por ahora sigo con DBDesigner 4, pero tengo confianza en que las próximas versiones van a ir mejorando considerablemente el producto.

| |

Simples optimizaciones para tus aplicaciones MySQL/PHP

Una serie de trucos que podemos utilizar para mejorar nuestras aplicaciones MySQL / PHP, traducido (lo mejor posible) de la fuente:

MySQL

  • MySQL interpreta de derecha a izquierda, por lo que los limitadores más significativos los debes poner lo más a la derecha posible.
  • Selecciona los campos que vayas a necesitar, no todos (*).
  • No pongas en datos que se vayan a modificar rara vez, utiliza ficheros de propiedades.
  • Usa índices para las columnas que aparezcan en el WHERE y en el ORDER BY.
  • Los índices son buenos cuando la tabla se modifica con frecuencia, pero hace lentas las inserciones.
  • Usa el comando EXPLAIN para analizar tus índices.
  • Si solo quieres obtener una fila, usa LIMIT 1 así parará de buscar datos.
  • Si usas $linea = mysql_fetch_array($resultado), hay dos modos de obtener los datos: $linea[n] y $linea[‘columna’]. Si vas a acceder solo por el nombre de la columna, usa $linea = mysql_fetch_assoc($resultado), así no se creará el índice numérico.
  • Algunas veces mysql_free_result() gasta mas memoria que la que salva, comprueba la diferencia con memory_get_usage().
  • No hagas siempre la misma consulta en la BD, guarda los resultados.
  • Usa NOT NULL siempre que puedas, agiliza la ejecución y ahorra un bit.
  • Usa tipos de datos que se ajusten a las necesidades, por ejemplo, en vez de usar INT, que puede ser muy grande, usa MEDIUMINT o SMALLINT cuando sea posible.
  • Usa valores por defecto, inserta solo cuando sean diferentes a estos, agilizarás las inserciones.

PHP

  • Intenta agrupar bloques de código
    <?php
    ...
    ...
    ...
    ?>

    es mas efectivo que

    <?php
    ...
    ?>
    <?php
    ...
    ?>
    <?php
    ...
    ?>
  • No concatenes texto cuando no sea necesario
    "SELECT * FROM $tabla ORDER BY campo"

    es más efectivo que

    "SELECT * FROM ".$tabla." ORDER BY campo"
  • Utiliza la comilla simple (‘) en vez de la comilla doble (“) siempre que no vayas a usar variables dentro, la comilla doble hace que el intérprete analice lo que hay dentro de las comillas.
  • La forma más rápida de concatenar texto es usando comillas simples.
  • Cuando uses echo, separa los strings por comas mejor que con puntos, es más rápido. Esto solo funciona con echo.
  • echo es más rápido que print.
  • Indica el valor máximo para tus bucles for fuera del bucle en vez de dentro del bucle, porque si no, se evaluará la expresión en cada pasada del bucle
    $max = 100/10;
    for($i=0; $i<$max; $i++){
    ...
    }

    es más rápido que

    for($i=0; $i<100/10; $i++){
    ...
    }
  • Libera variables siempre que puedas, sobre todo arrays pesados.

Simple Optimization for PHP and MySQL

Vía / Digg

| | |

Recursos sobre idiomas, países y demás

Leyendo una entrada de Korsarios.net sobre la lista de países en SQL, recordé que no hace mucho yo también me tuve que crear una lista parecida, pero esta vez de idiomas. Por eso hemos pensado que no estaría mal ofrecer una serie de recursos sobre idiomas y países, que podamos usar en nuestras páginas web.

Suele ser muy útil cuando queremos mostrar un desplegable con los todos los países que existen. Existe el estándar ISO 3166 para definir los países y sus subdivisiones, codificados mediante dos letras, tres letras o de forma numérica.

También puede ser necesario disponer la lista de países en la base de datos, para eso nada mejor que lo que nos ofrece Korsarios.net, las sentencias sql para la lista de países en español y en inglés.

En otras ocasiones puede que necesitemos ir a distintas páginas según el idioma o país desde dónde se visite la página. El idioma se puede detectar mediante PHP o Javascript. Aunque el idioma no siempre es siempre lo más característico, porque puede tratarse de algo específico del país y no del idioma (por ejemplo, una tienda). Para ello lo mejor es detectar el país según la IP, habiendo dos formas, mediante acceso a BD o sin acceso a BD.

En el caso de que querer la lista de idiomas, tendremos que tener en cuenta el ISO 639, codificado con dos letras y tres letras. Como no, siempre es bueno también tener todos los datos de los idiomas en la BD, en este caso somos nosotros quienes os ponemos en disposición el sql necesario:
Idiomas sql

| | | |

Especial UTF-8 (I)

El UTF-8 es un tipo de codificación de caracteres para Unicode que nos permite escribir nuestras páginas web y no preocuparnos por si se va a ver correctamente o van a aparecer caracteres extraños.

Las veces que he trabajado en proyectos multilenguaje es lo que hemos usado, salvo en el caso de japonés y coreano que es preferible usar el UTF-16 porque ocupa menos espacio. Eso ha hecho que me haya acostumbrado a realizar siempre los proyectos en UTF-8 y así evitar luego los problemas que puedan surgir en futuras actualizaciones o en testeos y tener luego que cambiar todo el proyecto a UTF-8.

Read More “Especial UTF-8 (I)”