Desarrollador Web, Gerente de la unidad de desarrollo de Maxnegocios.com.

25 consejos para usar en JQuery

| viernes, 23 de octubre de 2009
jQuery es en mi opinión, con permiso de Mootools, la mejor librería de Javascript. Tanto por su funcionamiento y posibilidades como por la facilidad de uso y la cantidad de gente que está sustentando el proyecto con webs, tutoriales, plugins, etc.

En este momento como apenas estoy aprendiendo JQuery comparto una lista de los 25 consejos a tomar en cuenta al usar esta librería.

1.- Carga el framework desde Google Code.
2.- Usa una chuleta.
3.- Combina todos tus scripts y reducir su tamaño.
4.- Usa las funcionalidades de la consola de Firebug
5.- Mantén las operaciones de selección al mínimo, por el almacenamiento en caché .
6.- Mantén la manipulación DOM al mínimo.
7.- Encapsula todo en un sólo elemento al hacer cualquier tipo de inserción DOM.
8.- Usar ID's en vez de clases siempre que sea posible.
9.- Dar a los selectores un contexto.
10.- Usar los encadenamientos de forma correcta.
11.- Aprende a usar la animación correctamente.
12.- Más información sobre los eventos delegación.
13.- Usa clases para almacenar el estado.
14.- Casi mejor, usa el método interno de jQuery data() para almacenar el estado.
15.- Escribe tus propios selectores.
16.- Simplifica y modifica el código HTML una vez la página haya cargado.
17.- Carga contenido con Ajax para obtener beneficios SEO y de velocidad.
18.- Usa las funciones de utilidad de jQuery.
19.- Utiliza noconflict para cambiar el nombre del objeto jQuery al utilizar otros frameworks.
20.- Cómo saber cuando las imágenes se han cargado.
21.- Utiliza siempre la última versión.
22.- Cómo comprobar si un elemento existe.
23.- Añade una clase JS a tu atributo HTML.
24.- "Return false" para evitar el comportamiento por defecto.
25.- Versión corta del evento "ready".

Recomendaciones de Google para optimizar nuestros codigos PHP

| viernes, 16 de octubre de 2009
Google, ha hecho algunas recomendaciones para optimizar el codigo PHP, sin embargo, no se ha hecho esperar respuestas contrarias por parte de la comunidad.

Internacionalizacion con PHP5.3

|
La versión PHP5.3 está recién salida del horno, y una de las cosas más interesantes que trae son las funciones para trabajar con internacionalización (que no solo de inglés vive la web).

Para ello existen unas nuevas clases que nos ayudarán a crear páginas en varios idiomas o sin los problemas que antes nos encontrábamos para debido al "formato" en inglés:

* Locale: divide los datos de localidad en componentes (pais, lenguaje, ...)
* Collator: compara y ordena strings de acuerdo con las reglas locales.
* Number formatter: permite formatear números de diferentes modos (comas decimales, separador de miles, ...)
* Date formatter: formatea fechas y obtiene fechas de texto.
* Message formatter: permite crear mensajes desde strings parametrizados dependiendo de las reglas locales.
* Normalizer: para trabajar con Unicode de forma normalizada, ya que hay caracteres que son representados por distintos códigos Unicode.
* Grapheme: trabaja con "graphemes" (no se traducirlo), que son las representaciones de las letras, las cuales puede constar de varios caracteres.
* IDN: permite trabajar con nombres de dominios en formato internacional (eñes, acentos, ...)

En el artículo explican más detalladamente cada clase.

Ir al articulo

Guía de escalamiento y replicación en MySQL

|
La gente de Sun ha publicado una guía muy interesante sobre escalamiento y replicación para MySQL. Se trata de un PDF que nos explica qué es el escalamiento, la replicación en MySQL, los tipos de escalamiento, el Linux Heartbeat y los cluster, entre otras cosas.

Muy interesante para aplicaciones de alto crecimiento.

Bajar PDF 3.6MB

Encriptación mediante javascript

|
jCryption es una librería javascript que utiliza jQuery y que nos permite encriptar los datos de un formulario sin necesidad de utilizar SSL. Para ello utiliza la encriptación del algoritmo de clave pública de RSA.

Muy útil para aquellos que no puedan disponer de conexión SSL.

Bajar

Obfuscator para PHP

|
PHP Obfuscator es una aplicación para Windows que permite ofuscar el código PHP de tus aplicaciones. ¿Para qué nos puede ser útil? para vender una aplicación a un cliente y que éste no realice las modificaciones que pueda solicitarnos a nosotros ya que el código será ilegible. O en mi caso particular, para cuando hospedas en el hosting de un amigo y sabes que esta esperando que montes algo para echarle mano.

Bajar

Consejos para un login seguro

|
Algunos consejos que ya muchos manejamos pero que valen la pena recordar.

Logitud de la contraseña y nombre de usuario: tiene que tener mínimo 6-8 caracteres.

Encriptar la contraseña: aunque casi todo el mundo usa MD5 o SHA-1, no está mal del todo usar SHA-2 (disponible en PHP5), ya que las anteriores ya no son tan seguras como hace tiempo.

Añade una semilla a la contraseña: cuando encriptes la contraseña es recomendable añadirle un texto para que el hash sea mas seguro.

No uses nombres sencillos para el administrador: evita usar nombres como "admin", "root", "tu nombre", "tus iniciales", "tu cedula", ...

Registra los intentos de login: así se podrá detectar cuando estamos siendo atacados. Bloquear al tercer intento fallido y enviar un email al dueño de la cuenta para activar la cuenta o reestablecer una nueva contraseña.

Maneja los errores: cuando se produce un login fallido, o evita que se produzca un error, o muestra un error personalizado, no muestres errores de código que puedan dar pistas al atacante. Nunca digas que fallo, si el nombre de usuario o la clave, simplemente limitate a decir: combinacion de usuario y contraseña errada.

Filtra la entrada: filtra lo que el usuario meta en su usuario para evitar inyecciones de código y no compruebes si la contraseña es correcta mediante SQL.

Usa LIMIT o WHERE 1: es importante para evitar comprometer muchas cuentas si sufrimos un ataque.

Usa nonce: nonce es un número único para la sesión, así nos aseguramos de que no se realicen ataques de fuerza bruta usando diccionario.

Usa sólo $_POST: $_GET es más sencillo de usar que $_POST, aunque no quita que usando $_POST no nos encontremos con problemas. Cada vez que recuperes un dato de formulario, pasalo por un filtro anti XSS.

Cuentas MySQL: utiliza un usuario con permiso de select para realizar el login, así, si rompen tu seguridad, no podrán hacer deletes, updates o inserts.

Auto logout: Si quieres darle mayor seguridad, desconecta al usuario automáticamente pasado un cierto tiempo de inactividad. Aunque desde el punto de vista de la usabilidad no es muy recomendable.

Bloque la cuenta: si se han intentado varios logins consecutivos y han sido fallidos, se debería bloquear la cuenta.

Catpcha: Usa un sistema de catpcha para disminuir la posibilidad que tu formulario este siendo usado por algun robot.
| viernes, 2 de octubre de 2009
El email es uno de los datos más solicitados cuando se desarrolla una aplicación web. Para comprobar que se trata de una dirección de email válida, normalmente se envía un email de confirmación, pero se pueden dar circunstancias en las que no es posible o deseado el envío de ese email, por lo que es necesario realizar otras operaciones para comprobar su existencia.

El post que paso a continuación nos indica cómo saber si la dirección de email existe usando comandos SMTP. Fácil y sencillo, papá.

< ? php

// the email to validate
$email = 'joe@gmail.com';
// an optional sender
$sender = 'user@example.com';
// instantiate the class
$SMTP_Valid = new SMTP_validateEmail();
// do the validation
$result = $SMTP_Valid->validate($email, $sender);
// view results
var_dump($result);
echo $email.’ is ‘.($result ? ‘valid’ : ‘invalid’).”\n”;

// send email?
if ($result) {
//mail(…);
}

? >
|
Seguir el enlace

Invierte tu email mediante CSS para evitar el spam

| jueves, 1 de octubre de 2009
Curioso truco para evitar que los spammers lean tu email, ya que lo escribes al revés y mediante CSS lo inviertes.

style type="text/css">
span.test { direction: rtl; unicode-bidi:bidi-override; }
/style>

moc.tset@tset

Detección de caras con PHP sin OpenCV

|
Seguir el enlace

Internacionalización

|
Seguir el enlace

Función ofuscadora de texto. Ocultar direcciones de correo con PHP

|
Esta función de PHP ofusca el código fuente pero muestra al usuario el texto de una manera legible. Muy útil para ocultar direcciones de correo electrónico a los robots que rastrean direcciones de email para luego enviar spam.

function obfuscate($text) {
$length = strlen($text);
$scrambled = '';
for ($i = 0; $i < $length; ++$i) {
$scrambled .= '&#' . ord(substr($text, $i, 1)) . ';';
}
return $scrambled;
}

Calcular el tiempo de respuesta de una consulta SQL en PHP

|
En ocasiones hemos querido saber cuánto tiempo tardan nuestras consultas SQL en ejecutarse sobre nuestra base de datos, para así, de esta manera saber cuál es la más eficiente y en otras palabras la más rápida.

Para ello cree la siguiente función de PHP:

function timequery(){
static $querytime_begin;
list($usec, $sec) = explode(' ',microtime());

if(!isset($querytime_begin))
{
$querytime_begin= ((float)$usec + (float)$sec);
}
else
{
$querytime = (((float)$usec + (float)$sec)) - $querytime_begin;
echo sprintf('
La consulta tardó %01.5f segundos.-
'
, $querytime);
}
}

Solo tienes que hacer:

timequery();
$sql = 'selec *from...';
query ($sql,$link)
timequery();

htaccess: Manejar páginas movidas o eliminadas

|
Si has movido o renombrado una página de tu sitio web y quieres que tus visitantes sean automáticamente redirigidos cuando los visitantes intenten acceder a la vieja, puedes hacerlo con .htaccess. Por ejemplo:

Redirect 301 /paginavieja.html http://tusitio.com/paginanueva.html

Otra ventaja es que al utilizar la directiva 301 te aseguras que la página no pierda su ranking en los buscadores.

htaccess: Prevenir la navegación por directorios con

|
Cuando no existe una página de inicio en un directorio, los visitantes pueden ver y examinar lo que ese directorio contiene. Algunos servidores están configurados para evitar esto. Si no el caso del tuyo, se puede solucionar con esta instrucción en el fichero .htaccess:

Options All -Indexes

htaccess: redirigir a una página de mantenimiento

|
Si necesitas tener tu sitio "offline" durante un período de tiempo para realizar cualquier tarea de mantenimiento sobre él, puedes redirigir a una páguna de mantenimiento utilizando el siguiente código:

RedirectMatch 302 ^/ /enmantenimiento.html

htaccess: no requerir www

|
Estas líneas de código harán que los visitantes de un sitio web no necesiten escribir "www" para acceder al mismo.

RewriteCond %{HTTP_HOST} !^nombredominio\.com$ [NC]
RewriteRule ^(.*)$ http://nombredominio.com/$1 [R=301,L]

htaccess: configurar una imagen por defecto

|
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^images/.*\.jpg$ /images/default.jpg [L]

Función que trunca texto con palabras completas

|
Esta función sólo trunca una cadena cuando encuentra el punto de ruptura que le indiquemos -un espacio, un punto, dos puntos,..- y resulta muy útil, por ejemplo, para mostrar un extracto de un artículo completo sin romper las palabras.

< php
// Original PHP code by Chirp Internet: www.chirp.com.au
// Please acknowledge use of this code by including this header.
function myTruncate($string, $limit, $break=".", $pad="...") {
// return with no change if string is shorter than $limit
if(strlen($string) <= $limit)
return $string;

// is $break present between $limit and the end of the string?
if(false !== ($breakpoint = strpos($string, $break, $limit))) {
if($breakpoint < strlen($string) - 1) {
$string = substr($string, 0, $breakpoint) . $pad;
}
}
return $string;
}
/php >

Ejemplo:

$cadena="Ut at risus magna. Aenean in urna urna, bibendum ultricies libero. Quisque accumsan, dolor ut sagittis fermentum, ipsum sapien posuere arcu, eget fermentum lorem leo mattis risus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer rhoncus tincidunt pulvinar. Aliquam sed odio vitae erat vestibulum eleifend. In hac habitasse platea dictumst. Fusce fringilla aliquet leo a porta. Proin facilisis vehicula nisi, pharetra pellentesque turpis rutrum in. Quisque laoreet nisi augue. Fusce lorem metus, mollis sed aliquam eget, dapibus sit amet dui. Nulla facilisi. Vestibulum laoreet, orci in euismod tristique, est ligula sagittis dolor, a pellentesque odio ligula tempus risus. Aenean elit ligula, facilisis sed tincidunt ac, facilisis eget ipsum. ";

echo myTruncate($cadena, 200,' ', '...');

Verificar más de un dato con isset

|
La función isset puede recibir muchos parámetros, retornará true si todas las variables que se le pasaron de argumentos están definidas, false en caso contrario.

< php
var_dump(isset($_POST["login"], $_POST["password"]));
/php >

Asi es mas sencillo y compacto validar las entradas de datos.

Encontrar todos los links de una página con PHP

|
Unas de las cosas que por mala costumbre siempre dejo de ultimo en todo proyecto son: validacion xss y ocultar la barra de estado en los enlaces.

Para buscar todos los link de un proyecto en php uso el siguiente codigo:

< php
$html = file_get_contents('http://www.dominio.com');

$dom = new DOMDocument();
@$dom->loadHTML($html);

$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");

for ($i = 0; $i < $hrefs->length; $i++) {
$href = $hrefs->item($i);
$url = $href->getAttribute('href');
echo $url.'
';
}
/php >