Configurando Doctrine2 en Netbeans




Un excelente screencast de Oracle donde nos muestran como configurar Doctrine2 en Netbeans, saludos.

http://netbeans.org/kb/docs/php/screencast-doctrine2.html

Old password authentication with MySQL

MySQL a partir de su version 4.1 cambio la manera en la que almacena sus contraseñas, esto lo hizo para mejorar la seguridad, sin embargo, para mantener compatibilidad aun es posible manejar contraseñas con el viejo estilo, esto en muchos casos es transparente para los usuarios y los desarrolladores sin embargo, con el paso del tiempo algunos clientes evolucionan y dejan de permitir el manejo de cuentas con “old passwords” , por ejemplo, si tu trabajas con PHP 5.3+ MYSQLND -enabled PDO MySQL Driver, recibiras un error que dice:
mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication.

SQLSTATE[HY000] [2000] mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD(‘your_existing_password’). This will store a new, and more secure, hash value in mysql.user. If this user is used in other scripts executed by PHP 5.2 or earlier you might need to remove the old-passwords flag from your my.cnf file

Ademas de algunos warnings mas, segun el mensaje lo unico que tenemos que hacer es cambiar el password del usuario usando la funcion PASSWORD, o en caso de que uses phpMyAdmin dando a la contraseña compatibilidad con MySQL 4.1+, que es una opción al momento de cambiar una contraseña.

En caso de que esto no funcione es posible que tengas algun otro problema con tu servidor MySQL, algunos puntos que debes checar son los siguientes:

  • En la tabla mysql.user el campo password debe tener una longitud de 41, en caso de que tenga una longitud de 16 debes cambiarla, esto pasa generalmente en servidores que actualizaron desde una version anterior a 4.1.
  • Existe una variable de sistema llamada old_passwords que cambia el comportamiento de tu servidor y lo obligaria a siempre generar old passwords, existen 2 formas de comprobar si esta variable esta activa, la primera seria revisar las variables de MySQL (por ejemplo phpMyAdmin tiene un link a Variables en la pagina principal) o podrias ejecutar esto:
SELECT PASSWORD("Algo")

El resultado esperado debe ser una cadena de 41 caracteres de largo que comienza con un *, en caso de que te regrese una cadena de 16 caracteres de longitud quiere decir que old_passwords esta activa, ahora, para solucionar esto existen 3 posibles acciones, quitar del comando con el que se inicia MySQL el parametro –old-passwords, poner en OFF la variable old_passwords de tu archivo de configuracion o usar el comando SET GLOBAL para poner en FALSE la variable de sistema.

Mas informacion en el sitio de MySQL

Algunos reportes en el sitio de PHP

Saludos…

Doctrine ORM: Inicio Rápido

Doctrine es un ORM(object relational mapper) que se ha vuelto muy popular en los últimos meses, la verdad es una herramienta que puede apoyar mucho nuestros desarrollos y es notable la cantidad de desarrolladores de Zend Framework o CodeIgniter que lo están incorporando, si bien, aprender Doctrine no es muy complejo, nunca está de más tener una guía de “Inicio Rápido”, y este post nos muestra de una manera muy sencilla como empezar a usar Doctrine… esta guía considera que Doctrine ya está funcionando en tu proyecto y de alguna manera sus clases están generadas(esto sería el paso 1, si creen que vale la pena podemos hacer un post al respecto)… de cualquier forma todo esto y mas se encuentra en la documentación de Doctrine, la cual esta en su sitio oficial.

Crear una conexión…
Doctrine_Manager::connection( "mysql://user:pass@server/db", 'myconn');
Insertar registros

Objeto Record
Esta es la forma más usada y sencilla. Cuando el método save es llamado el nuevo registro es creado…

$u = new User();
$u->username = 'user';
$u->password = 'pass';
$u->save();

Metodo fromArray()
Existen ocasiones en los cuales los datos ya están en un arreglo.

$data = array(
'username' => 'user',
'password' => 'pass',
'email' => 'mail@mail.com'
);
$u = new User();
$u->fromArray($data);
$u->save();

Continuar leyendo…