Entradas

Valores aleatorios en MySQL

MySQL tiene la función RAND() para devolver valores aleatorios y en este post lo que voy a comentar es que no es tan óptimo utilizarla en caso de que queramos un registro aleatorio de una tabla. Por ejemplo, imagina que quieres un registro aleatorio de una tabla, utilizando RAND() lo tendríamos con la siguiente query: select * from tabla orde by RAND () limit 1 Esta consulta es mucho menos eficiente que si ejecutamos la siguiente: select * from tabla limit X,1 Dónde X sería un valor aleatorio generado en un lenguaje de servidor entre 1 y el total de registros de la tabla, claro para esto necesitamos saber ese valor máximo pero si lo tienes te recomiendo que utilices la segunda consulta que es una media de 4 a 5 veces más rápida que la primera.

Comprimir y ofuscar código javascript

Imagen
Con el avance de javascript como parte cada vez más importante en el desarrollo de aplicaciones web, el comprimir su contenido y a la vez ofuscarlo para evitar ingeniería inversa son 2 procesos cada vez más habituales, pero, no todo lo que brilla es oro; aquí quiero mostrar las ventajas y desventajas de ofuscar y comprimir el código javascript de una aplicación web. Como todo en programación es relativo aquí solo me limitaré a cosas y características generales, luego cada programador debe decidir realmente lo que quiere. Ventajas de comprimir y ofuscar javascript el código resultante es mucho más ligero de descargar sin penalizar el rendimiento. haces más difícil el proceso de ingeniería inversa (aunque solo es ralentizarlo con las herramientas de desofuscación actuales) Desventajas la corrección de errores y modificación del código resulta casi imposible en código ofuscado por tanto o se tiene el código fuente y se ofusca cada vez que hay un...

HTML 5, JQuery y los atributos DATA

Desde que utilizamos jquery muchas veces nos vemos obligados a crearnos atributos con nombres 'raros' dentro de tags HTML para tener almacenadas algunas propiedades extras como por ejemplo: <a id='d' href='x' numero='1' valor='3' /> En este caso numero y valor no son atributos reconocidos por los navegadores aunque con jquery si funciona $('#d').attr('numero') Para estos casos en HTML 5 se han inventado los atributos DATA por ejemplo: <li class="user" data-name="John Resig" data-city="Boston" data-lang="js" data-food="Bacon"> Donde lo que vaya despues de data- nos lo podemos inventar y estos parámetros si son reconocidos por los navegadores y jquery desde la versión 1.4.4 (la última) incorpora una función específica para los mismos: $("li").data("name") === "John Resig"; Incluso pueden definirse objetos json dentro de estos at...

Diferencias entre apache 2.0 y 2.2

El otro día estuve instalando apache 2.2 y noté algunas diferencias interesantes respecto a la versión 2.0 del mismo servidor web. Librerías incluidas por defecto en apache 2.2 Ahora apache 2.2 trae instaladas por defecto las librerías xml, zip y mycrypt. Módulos sustituidos en apache 2.2 La nueva versión de apache ha sustituido algunos módulos y los ha unificado con otros que trae instalados por defecto, dichos módulos sustituidos en la versión 2.2 son los siguientes: LoadModule access_module modules/mod_access.so LoadModule auth_module modules/mod_auth.so LoadModule imap_module modules/mod_imap.so

Error ZDS: Bad escape sequence

Un error común, por lo menos para mí, cuando trabajo con el Zend Development Studio (ZDS) es el de Bad escape sequence cuando pongo el caracter “\” dentro de una cadena. Por ejemplo, imagina que tenemos: include_once “c:\archivo.php” Esta instrucción estaría correcta realmente pero el ZDS marca el error como bad escape sequence \a . La solución es muy sencilla, en vez de utilizar comillas dobles “ en la cadena debemos de utilizar comillas simples ‘, de esta forma ya el Zend no identifica esto como un error porque interpreta la cadena de otra manera. ¡Curioso!

Google Chrome intenta hacernos programar bien

Desde las versiones más recientes de Google Chrome se pueden ir observando cambios en la gestión de los códigos javascript, por ejemplo en las redirecciones. Mientras que en versiones anteriores y en otros navegadores como Firefox la siguiente instrucción redirigiría a la página 1, las últimas versiones de Chrome (8 y 9) redirigen a la página 2 en el siguiente código: if ( true ) location.replace = 'pagina1' location.replace = 'pagina2' Lo correcto sería: if ( true ) location.replace = 'pagina1' else location.replace = 'pagina2' Otra de las cosas que podemos notar es que cada vez es más estricto con el HTML y por ejemplo si tenemos unas etiquetas </script> sin cerrar con ‘>’ o sea </script ese archivo en concreto lo cargaría pero los siguientes no, por ejemplo el archivo 2 del siguiente ejemplo no seria cargado: < script type = "text/javascript" src = "archivo1" > </script <script type= ...

MySQL error number 1130

Otro de los errores clásicos al crear una nueva cuenta de hosting en un servidor cloud de 1and1 es MySQL error number 1130 host nombre del host is not allowed to connect to this server . Lo primero que tenemos que comprobar es el firewall y mirar si para el servicio de MySQL están abiertos o cerrados las conexiones externas. En los servidores cloud de 1and1 por defecto el usuario root de mysql no puede acceder remotamente por ello tenemos que crear un usuario con permisos para acceder desde un terminal remoto, esto no es recomendable pues representa una fuente más de ataques posibles a nuestro servidor MySQL pero en caso que queramos acceder desde nuestra casa a través de MySQL Center u otra herramienta remota y el firewall esté correctamente configurado tendríamos que crear un usuario para acceder. Como ejemplo os pongo esta instrucción que desde consola crearía un usuario con poderes: GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'%' IDENTIFIED BY 'contraseña...