Archivo por el 'programación' Category

Jul 10 2011

ZendFramework y PluginLoader

Publicado por octante bajo PHP

PluginLoader sirve para cargar plugins automáticamente, su uso es muy simple.

Para cargar un plugin necesitamos dos cosas, el repositorio donde está guardado (la ruta hasta el fichero) y el nombre del plugin.

Para cargar el/los repositorio/repositorios (podemos cargar más de un respositorio, éstos serán guardados en forma de array) debemos llamar al método “addPrefixPath”, por ejemplo:

$loader = new Zend_Loader_PluginLoader();
$loader->addPrefixPath ('Zend_View_Helper', 'Zend/View/Helper/')
          ->addPrefixPath ('Frontend_View_Helper', 'application/frontend/views/helpers');

Y para cargar los plugins debemos llamar al método “load”, por ejemplo:

$helperClass = $loader->load('HelperName'); // Con lo que se va a llamar a Zend_View_Helper_HelperName o bien Frontend_View_Helper_HelperName

Otra función que nos puede ser de gran utilidad es “isLoaded”, que nos va a contestar si está cargado o no el plugin, por ejemplo:

if ($loader->isLoaded('HelperName')){   //  En el caso de que ya esté cargado el plugin aprovechamos para llamarlo
   $className = $loader->getClassName('HelperName');
   $adapter = user_call_function (array('HelperName', 'getInstance'));  // Ya tenemos acceso al helper
}

An no hay respuestas

Dec 08 2010

How-to install memcache in ubuntu and Zend Framework cache configuration

Publicado por octante bajo PHP,programación

Install Memcache in ubuntu:

To install memcache in ubutu we need to install it:
sudo apt-get install memcached

Install php memcache module to use it in php scripts:
sudo apt-get install php5-memcache

Edit memcache configuration file /etc/php5/apache2/conf.d/memcache.ini, delete semi-colon in line: “extension=memcache.so”, and restart memcache daemon:

sudo /etc/init.d/memcache restart

To use memcache in Zend Framework we can initialize it in bootstrap file, in this case we use memcache to store routing configuration file.

protected function _initRoutes () {
   $backendType = 'Memcached';
   $backendOptions = array ();
   //$backendOptions = array('cache_dir' => './tmp/'); // Optional
 
   $frontendOptions = array(
      'automatic_serialization' => true,
      'master_files' => array(APPLICATION_PATH . '/configs/router.xml'),
      'lifetime' => 120,                   // cache lifetime of 120 seconds
   );
 
   // Instantiate a caching object for caching the routes
   $cache = Zend_Cache::factory('File', $backendType,
      $frontendOptions,
      $backendOptions
   );
 
   $frontController = Zend_Controller_Front::getInstance();
 
   if(!$router = $cache->load('router')) {
      // Load up .xml file and put the results in the cache
      $config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/router.xml');
      $router = Zend_Controller_Front::getInstance()->getRouter();
      $router->addConfig($config, 'routes');
 
      $cache->save($router, 'router');
   } else {
      // Use cached version
      $frontController->setRouter($router);
   }
}

We can use memcache to optimize database connections:

if( ($result = $cache->load('myresult')) === false ) {
   // cache miss; connect to the database
   $db = Zend_Db::factory( [...] );
   $result = $db->fetchAll('SELECT * FROM huge_table');
   $cache->save($result, 'myresult');
} else {
   // cache hit! shout so that we know
   echo "This one is from cache!\n\n";
}

To save html in memcache:

Controller code:

$frontendOptions = array(
   'lifetime' => 30,                   // cache lifetime of 30 seconds
   'automatic_serialization' => false  // this is the default anyways
);
 
$backendOptions = array();
 
$this->view->cache = Zend_Cache::factory('Output',
                                   'Memcached',
                                   $frontendOptions,
                                   $backendOptions);

View code:

if(!$this->cache->start('page_section')) {
      // output as usual:
      echo 'Hello world! ';
      echo time ();
 
      $this->cache->end(); // the output is saved and sent to the browser
}

To remove an item from cache:
$cache->remove('idToRemove');

To remove all items from cache:
$cache->clean(Zend_Cache::CLEANING_MODE_ALL);

And finally, to debug cache, set debug_header to true in frontendOptions:
'debug_header' => true

An no hay respuestas

Oct 19 2010

Script MySQL para exportar datos a CSV

Publicado por octante bajo MySQL

Consulta de MySQL para exportar el contenido de una tabla a un fichero csv. El único problema que le he visto es que no se exporta el nombre de las columnas, pero para hacer una exportación rápida va perfecto.

SELECT database_table.* INTO OUTFILE ‘/tmp/file.csv”
FIELDS TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘”‘
LINES TERMINATED BY ‘\n’
FROM database_table
LEFT JOIN database_table2   ON database_table2.id   = database_table.id
ORDER BY database_table.id DESC

Fuente: MySQL support Forum

An no hay respuestas

Oct 08 2010

Lucene realtime search

Publicado por octante bajo Java,programación

Hace pocos días twitter informó de que ha estado trabajando en su buscador a tiempo real, lo que cuentan en su comunicado es que han estado trabajando para adaptar lucene a las búsquedas a tiempo real.

Según dicen, ahora la plataforma es capaz de indexar los documentos 50 veces más rápido, y teniendo en cuenta que cada segundo entran 1000 nuevos tweets en el sistema, no es poco… También han reducido enormemente la carga en el servidor, llegando a un 5%, lo que les permitirá un crecimiento controlado durante bastante tiempo.

Y para los que estéis trabajando con Lucene y queráis tener acceso a éste código parece ser que ya es en parte posible, dado que han compartido parte del código, no todo. De momento lo que he encontrado es el seguimiento de bugs, encabezado por uno de sus desarrolladores, Michael Busch, lo que falta es el trunk con el código, si alguien conoce su ubicación tiene a su disposición la sección de comentarios :)

An no hay respuestas

Jan 19 2009

Data range picker con jQuery UI 1.6

Publicado por admin bajo Javascript

Ya van saliendo las mejoras a las cuales tenemos acceso a través de la nueva versión de jQuery UI 1.6, esta vez es el selector de fechas el que se ha actualizado. Para los que no lo hayan usado, éste nos permite seleccionar fácilmente un rango de fechas, una fecha concreta, y una serie de funcionalidades que no encontramos en la mayoría de selectores de fecha, además de ser muy fácil de instalar.

Fuente: Anieto2k

An no hay respuestas

Jan 14 2009

Acaba de salir jquery 1.3

Publicado por admin bajo Javascript

Ya tenemos a nuestra disposición una nueva versión de jquery, entre las muchas mejoras que trae consigo yo destaco una que he hechado a faltar muchas veces, por fin no tendremos que regenerar los eventos que trabajan sobre elementos dinámicos, la función “live” es la solución.

$("p").live("click", function(){
$(this).after("<p>Another paragraph!</p>");
});

También se han reescrito el código de las funciones html() y append(), mejorando en algunos casos hasta 6 veces la velocidad.

Jquery minified

Jquery normal

An no hay respuestas

Apr 14 2008

IETester

Publicado por admin bajo programación

Seguro que ya habréis oido hablar de ella, pero por si las moscas aquí la dejo, muy útil para testear una página web mediante varios navegadores.

IETester

An no hay respuestas

Apr 14 2008

Traductor mediante una API de google

Publicado por admin bajo programación

En un momento podemos tener un traductor gracias a una reciente API de google para traducir textos

De momento sólo se puede utilizar mediante javascript, a la espera quedamos de poder utilizarla mediante un webservice, de todos modos… siempre se puede provar un poco de ingeniería inversa, si lo descubro aquí lo cuelgo.

Vía variablenotfound

An no hay respuestas

Apr 11 2008

Aplicaciones sobre facebook

Publicado por admin bajo programación

Según la wikipedia, Facebook es un sitio web de redes sociales. Fue creado originalmente para estudiantes de la Universidad de Harvard, pero ha sido abierto a cualquier persona que tenga una cuenta de correo electrónico.

Dentro de esta definición está la red social más exitosa del momento, qué nos puede ofrecer además de una extensa red de contactos? pues una completa API para desarrollar aplicaciones sobre esta plataforma. Y como todo programador… he estado buscando alguna herramienta que me permita ahorrar algo de tiempo en el desarrollo, en sentido web he encontrado un listado de recursos para implementar aplicaciones sobre facebook.

An no hay respuestas

Apr 11 2008

37 plugins para jQuery

Publicado por admin bajo Javascript

Dejo una lista de plugins para jQuery, la mayoría de ellos para hacer efectos visuales, entre ellos me ha encantado el slider tipo apple, el menú tipo ojo de pez y el menú tipo acordeón.

37 More Shocking jQuery Plugins

vía Sentido web y anieto2k

An no hay respuestas