Blog de Daniel Zegarra Rotating Header Image

agosto, 2009:

Crear instancias de Zend_Db con parametros predefinidos

Lo que buscaba era tener instancias de la clase Zend_Db (de Zend Framework) sin tener que estar pasándole los parámetros de conexión o una instancia de Zend_Config.
Descubri que para que la nueva clase devuelva una instancia de Zend_Db (y no de ella misma) debía usar un método estatico.

El código siguiente es el resultado:

/**
* Crea una instancia de Zend_Db con los parametros de conexion ya preestablecidos.
*
* @copyright Copyright (c) 2008, Daniel Zegarra
* @access public
*/
class System_DB {

/**
* Direccion donde se encuentra el host de la base de datos
* @access private
*/
private static $_Server = "localhost";

/**
* Nombre de usuario de la base de datos
* @access private
*/
private static $_User = "root";

/**
* Contraseña de la cuenta
* @access private
*/
private static $_Pass = "123456";

/**
* Base de datos predeterminada a usar. Dejar en blanco para obligar a cada modulo a elegir la propia.
* @access private
*/
private static $_DB = "midb";

/**
* Adaptador Zend
* @access private
*/
private static $_zendadapter = "Pdo_Mysql";

/**
* Este es el metodo que manufactura.
*
* @param str $DB Nombre de la base de datos
* @param str $Server Host de la base de datos
* @param str $User Nombre de usuario de la cuenta
* @param str $Pass Contraseña de la cuenta
* @return Zend_Db
*/
public static function create($DB=null, $Server=null, $User=null, $Pass=null){
//Actualizando propiedades
if(!empty($DB) && is_string($DB))
self::$_DB = $DB;
if(!empty($Server) && is_string($Server))
self::$_Server = $Server;
if(!empty($User) && is_string($User))
self::$_User = $User;
if(!empty($Pass) && is_string($Pass))
self::$_Pass = $Pass;

return Zend_Db::factory(self::$_zendadapter, array(
'host'     => self::$_Server,
'username' => self::$_User,
'password' => self::$_Pass,
'dbname'   => self::$_DB
));
}

/**
* Realiza una conexion y consulta de prueba.
*
* @return str
*/
public function test(){
//Conectando a la BD
try {
$db = self::create();
$db->getConnection();
} catch (Zend_Db_Adapter_Exception $e) {
return 'Zend_Db_Adapter_Exception: '.$e->getMessage();
} catch (Zend_Exception $e) {
return 'Zend_Exception: '.$e->getMessage();
}

//Haciendo la consulta
$sql = "SELECT 'Prueba exitosa'";
return $db->fetchOne($sql);
}
}

El método test te ayudará a comprobar si la clase y los datos de conexión funcionan correctamente.
El código es libre.

Seis complementos básicos para Firefox

Solo seis, los que tengo esencialmente instalados en mis PCs son los siguientes:

Xmarks

Sincroniza tus favoritos y contraseñas guardadas en todas las computadoras asociadas a tu cuenta. Agrego un nuevo marcador en la PC de mi oficina y cuando llego a casa ahí esta. Es genial.

Web Developer

Se trata de una barra de herramientas con muchas opciones útiles para desarrolladores de aplicaciones web. La mas útil para mi es la habilidad de apagar y encender la cache del navegador con un solo clic. Cuenta con decenas de opciones agrupadas por categorías. Infaltable si usas Firefox para testear tus aplicaciones web.

Firebug

También para desarrolladores web. Te permite analizar el código de tu web de manera minuciosa. La consola es muy útil para lanzar mensajes de estado desde tus aplicaciones (solo visibles con este plugin).

Nice Translator

El sitio web que te permite traducir frases en varios idiomas a la vez e incluso autodetectar el idioma ingresado ahora disponible fácilmente desde Firefox.

Video DownloadHelper

Descarga todo tipo de vídeos por demanda al que tengas acceso desde tu navegador. Cuando llegues a un vídeo y el icono con los globos empiece a moverse sabrás que el o los vídeos en esa página podrían quedarse en tu disco duro.

Y por último:

Diccionario de Español

Corrección ortográfica integrada al navegador. Solo ortografía, no gramática. Aun así, extremadamente útil.

Backup y restore de una base de datos en MySQL

Esto es algo util y simple. Antes yo hacia mis backups desde phpMyAdmin y estaba bien para una base de datos pequeña (<10MB) pero conforme fue creciendo la probabilidad de encontrarme con inconsistencias si tuviera que usar este archivo tambien aumentaba por que podrían hacerse cambios en la BD durante la creacion del backup que ahora demoraba mas en crearse.

La solución es simple siempre que tengas acceso a la linea de comandos de tu servidor (en este caso: uno Linux). El tiempo de generar el backup y el restaurarlo se reduce drasticamente.

Hay dos comandos que yo uso para salvar mi data y son los siguientes:

Backup

Para el siguente ejemplo el nombre (o dirección IP) del servidor web es localhost, el usuario es root, mydb es el nombre de la base de datos y  archivobackup.sql el nombre que tendra nuestro backup.

mysqldump --host=localhost --user=root --pass=123456 mydb > archivobackup.sql
mysqldump -h localhost -u root -p mydb > archivobackup.sql

En la primera forma la clave es definida al inicio por lo que no se pedira ingresar la clave de la base de datos luego. La segunda pregunta la clave antes de empezar. El resultado es el mismo.

Restore

mysql -u root -p mydb < archivobackup.sql

Esta sentencia requiere de la clave del usuario root (que tenga acceso a la BD mydb) y que la base de datos mydb ya exista y que este vacia.