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();
}
}

jueves, 28 de mayo de 2009

Excelente curso introductorio de C#

Es el mejor curso que he encontrado hasta ahora. Me interesó mucho porque explica en el penúltimo capítulo el tema de LINQ, además el tema de los web services está bien claro de entender. Ver curso

Otros cursos en Cursos Online de Microsoft

Curso de Introducción a .NET con Visual Basic 2008

Curso de Desarrollo web con Visual Studio 2008

sábado, 23 de mayo de 2009

De un XML String a un DataSet - Web Services

En éste ejemplo se muestra cómo recuperar una lista de nombres de países proporcionados por un web service y luego presentados en una página web. Es un ejemplo sencillo, la URL del sercicio web es la siguiente:
http://www.webservicex.net/country.asmx?wsdl
     Sitio oficial: webserviceX.net


Hay que agregar la referencia web, en mi caso estoy utilizando Visual Web Developer 2008 para desarrollar dicho ejemplo. El método que preparé es el siguiente:
 private void Mostrar()
{
net.webservicex.www.country ws = 
new net.webservicex.www.country();       
DataSet ds = new DataSet();
ds.ReadXml(new StringReader(ws.GetCountries()));
gvPaises.DataSource = ds;
gvPaises.DataBind();
}

El web service también expone muchos otros web methods entre ellos está el método llamado GetCurrencies(). Este web method devuelve un xml con los elementos Name, CountryCode, Currency (Moneda) y CurrencyCode (iniciales de país). Dichos elemntos se puede pasar a un dataset y mostrarlos en un GridView, etc.

Para buscar otros Web Service existe Seekda.