lunes, 15 de junio de 2009

Error en PhpMyAdmin: Se necesita salvoconducto

Error:

Cuando dice que se necesita un salvoconducto, significa que hay que agregar la siguiente línea en
el archivo config.inc.php:

$cfg['blowfish_secret'] = 'cualquier cadena';

Error en PhpMyAdmin: Extención mcrypt

Error:
No se pudo cargar la extensión mcrypt, por favor revise su configuración de PHP.

Hay que descomentariar la línea de código:

extension=php_mcrypt.dll

MySql: Resetear clave de MySql

Error:

#1130 - Host 'localhost' is not allowed to connect to this MySQL server

Para esto aplicar los siguientes pasos para resetear la clave de MySql:


1º Detener el servicio de MySql.

2º Si se está en Windows usar una CMD y poner:

mysqld --skip-grant-tables

Si se está en Linux usar las instrucciones que están en:
www.kopernix.com

3º Luego abrir otra consola en Windows y poner:

mysql -u root mysql

4º Ahora ya se puede cambiar la clave:
  • UPDATE mysql.user SET Password=PASSWORD('nuevo_password') WHERE User='root';
  • FLUSH PRIVILEGES;
  • quit

5º Reiniciar los procesos.

¿CSS limitado para GMail, Hotmail, etc?

Curioso, no!

Con razón, yo trataba de poner un simple texto encima de una imagen, pero en el correo del destinatario el texto aparecía debajo de la imagen, ¿por qué?

La respuesta es porque los servicios de correo como GMail, Hotmail, etc, filtran algunas o todas las hojas de estilo. Obviamente es por seguridad o quién sabe que más será y lo desconozco por ahora.

Por lo que he leido lo que casi siempre funciona es la utilización de hojas de estilo en línea, esto quiere decir que hay que usar el atributo style dentro del mismo elemento. Por ejemplo:

<p style="color:Blue" />

Algunos links donde hablan de ducho tema:

  • Una buena explicación en español por Jairo Blanco


  • Programa Online para transformar mensajes de correo en formato HTML con CSS a un estilo que acepta GMail: Emogrifier


  • En Xavier Frenette encontramos bien detallado éste asunto, además hay links a otras páginas que también tratan el tema.


  • Esta otra página está buenísima pues muestra cuáles clientes web aceptan el repertorio de las hojas de estilo en cascada. La página es www.campaignmonitor.com

domingo, 7 de junio de 2009

Error Drupal: Barra de Progreso

El mensaje de error que aparece en el reporte que muestra Drupal es:

Your server is capable of displaying file upload progress, but does not have the required libraries. It is recommended to install the PECL uploadprogress library (prefered) or to install APC.

La solución es simple; solo hay que activar la librería php_uploadprogress.dll

Si se está usando Wamp5 entonces se puede usar el icono que está en la barra de tareas para ir directamente a activar la dll.

¿Pero cómo se activa dicha librería si no usamos Wamp?

Para poder activarla hay que buscar el archivo php.ini. En dicho archivo buscar lo siguiente:

;extension=php_uploadprogress.dll

El siguiente paso es quitar el punto y coma de ésta forma pasa de ser un comentario a una sentencia válida que el PHP va a considerar y así es como activamos esa biblioteca, el resultado es:

extension=php_uploadprogress.dll

En la subcarpeta ext desde la carpeta principal donde esté instalado PHP, debería existir el archivo php_uploadprogress.dll. Generalmente siempre está;

Lo que sí puede suceder es que la sentencia que mencioné antes resulte que no existe en el archivo php.ini. Si ese es el caso, entonces debemos agregar esa sentencia que tengo marcada en color azul y listo. Si se está preguntado en qué parte del archivo poner la sentencia, pues le digo que eso no interesa tanto, se puede poner al inicio o al final del archivo, pero para mantener el orden busque donde dice ; Windows Extensions , un poco más abajo comienza la lista de todas las bibliotecas algunas activas y otras que están como comentarios. Entonces al final de esa lista se podría poner extension=php_uploadprogress.dll y ya está!

Finalmente, hay que reiniciar Apache.
 
En el caso de PHP 5 con Xampp lo único que hay que hacer es descomentar en php.ini la línea que dice:

[PECL]
extension=php_apc.dll

luego agregar la siguiente línea de código: apc.rfc1867 = on

Instalar Wamp correctamente

En el siguiente link se explica paso a paso cómo instalar Wamp y corregir ciertos errores que aparecen en PHPMyAdmin.

Instalar Wamp

Establecer la clave para el root de MySql

Esto se puede hacer desde PhpMyAdmin o desde consola de MySql:

mysql> update user set password=PASSWORD('aquiVaElPassword') where user='root';
mysql> flush privileges;

Luego resetar los servicios.

Las siguientes páginas son una gran ayuda porque explican como instalar PhpMyAdmin, Apache, etc:

En la documentación de MySql (buscar por "PASSWORD(str)") se recomienda usar mejor la función MD5() o SHA1().


IvLabs
Maestros del Web

martes, 2 de junio de 2009

Validar valor de una enumeración

Si queremos que una variable tenga un solo valor y no una combinación de valores de una enumeración, entonces hay que validar la enumeración con el método IsDefined de la clase Enum. En el siguiente código, si quitaramos el bloque if y en caso de que el CType (VB .Net) no falle, entonces se devolverá una combinación de días separadas con coma.

Código en VB .Net:

<Flags()> _
Enum Dias As Byte
Lunes = 1
Martes = 2
Miercoles = 4
Jueves = 8
Viernes = 16
Sábado = 32
Domingo = 64
NA = 128
End Enum


Sub Main()

Dim a As Dias
a = CType(254, Dias)
If [Enum].IsDefined(GetType(Dias), a) = False Then
a = Dias.NA
End If
Console.Write(a.ToString)
Console.Read()
End Sub


Código en C#:

[Flags()]
enum Dias : byte
{
Lunes = 1,
Martes = 2,
Miercoles = 4,
Jueves = 8,
Viernes = 16,
Sabado = 32,
Domingo = 64,
NA = 128
}

class Program
{
static void Main(string[] args)
{
Dias d = (Dias)254;
if (Enum.IsDefined(typeof(Dias),d) == false)
d = Dias.NA;
Console.Write(d.ToString());
Console.Read();
}
}