Librería Tokyo Tyrant para PHP
Cada día suenan más las bases de datos clave-valor, y entre ellas Tokyo Tyrant, por lo que no nos vendrá mal hacer uso de la librería PECL para ella, lástima que sea PECL.
PHP Tokyo Tyrant
Cada día suenan más las bases de datos clave-valor, y entre ellas Tokyo Tyrant, por lo que no nos vendrá mal hacer uso de la librería PECL para ella, lástima que sea PECL.
PHP Tokyo Tyrant
Algunas veces nos podemos encontrar con la necesidad de incluir un motor de búsquedas en nuestra aplicación web, no me refiero a uno interno, sino a uno que busque dentro de todo Internet.
Normalmente se soluciona mediante un formulario que llama a la página de Google, pero eso puede ser un tanto “feo” y no ser exáctamente lo que buscamos.
Si lo que quieres es un script que llame al API de Google para poder recibir las resultados de una búsqueda a Google y luego mostrarla, verás como se hace en la traducción que hacemos del siguiente artÃculo.
ASP.NET AJAX, la librerÃa Ajax de Microsoft, está disponible para los usuarios de PHP (si es que hay algún valiente que se atreva). La gente de Microsoft ha resarrollado un proyecto en Codeplex que sirve de puente entre PHP y la librerÃa de Ajax.
Aunque parezca mentira, se me ocurre una posible necesidad de esta librarÃa. Hay veces en el que proyectos grandes (y no muy organizados) se realizan en diversos lenguajes de programación y se puede dar la situación de que haya que acceder a la librerÃa de Microsoft desde PHP.
La verdad es que es una posibilidad muy remota, pero aún asÃ, alguna posibilidad ha tenido que pensar la gente de Microsoft para llevar a cabo este proyecto, porque no tiene mucho sentido crear un librerÃa para usar un framework de Ajax hecho en .NET para usarlo con PHP, sobre todo cuando ya hay tantos frameworks para PHP que añaden esta funcionalidad y que son muy útiles.
Para quien tenga ánimos de usarla, comentarles que para ello es necesario instalar primero ASP.NET AJAX, y luego enlazar con la librerÃa en PHP y en JS.
PHP for Microsoft AJAX Library
VÃa / Brian Goldfarb’s Blog
Si el otro día comentaba la nueva API de Open Graph de Facebook, ahora encuentro una librería que nos permite trabajar de forma sencilla con esta API:
include_once 'lib/facebook.php';
include_once 'config.php';
$facebook = new Facebook(array(
'appId' => FACEBOOK_API_KEY,
'secret' => FACEBOOK_SECRET_KEY,
'cookie' => true,
'domain' => 'phpfour.com'
));
$session = $facebook->getSession();
if (!$session) {
$url = $facebook->getLoginUrl(array(
'canvas' => 1,
'fbconnect' => 0
));
echo "";
} else {
try {
$uid = $facebook->getUser();
$me = $facebook->api('/me');
$updated = date("l, F j, Y", strtotime($me['updated_time']));
echo "Hello " . $me['name'] . "
";
echo "You last updated your profile on " . $updated;
} catch (FacebookApiException $e) {
echo "Error:" . print_r($e, true);
}
}
Vía / Md Emran Hasan
Uno de las cosas que no me gustan de WordPress es la costumbre de añadir las clases a los elementos basados en el ID del mismo y no en su slug. Esto ocurre en todo, pero en este caso es con la lista de categorías generadas por wp_list_categories, devolviendo un HTML parecido a este:
Mi categor&iactute;a
Si queremos indicar estilos específicos para estas categorías, por ejemplo para añadir un icono a cada categoría, no nos sirve el class basado en ID, porque nos encontramos con que dependiendo de cuando se genere esta categoría, habrá que cambiar el css, siendo más lógico obtener un código como este:
Mi categor&iactute;a
Para poder conseguir esto, deberíamos añadir en nuestro functions.php lo siguiente.
add_filter('wp_list_categories', 'mete_slug_en_class', 10, 2);
function mete_slug_en_class($output, $args) {
return preg_replace_callback('#]+)class="([^"]+)"([^>]*)>]+)>([^<]+)<\/a>#', function($m) {
return ''.$m[5].'';
}, $output);
}
Interesante script que permite dados dos estructuras del MySQL, obtenidas por ejemplo usando un mysqldump, ver que diferencias hay entre ambos y devuelve las queries necesarias para igualar las dos estrucuras.
Por ejemplo, si tenemos la estructura siguiente:
CREATE TABLE IF NOT EXISTS `archive` (
`id` int(11) NOT NULL auto_increment,
`topFile` varchar(255) NOT NULL default '',
`msgId` int(11) NOT NULL default '0',
`time` timestamp NOT NULL default CURRENT_TIMESTAMP,
`topTpl` varchar(255) NOT NULL default '',
`file` varchar(255) NOT NULL default '',
`template` varchar(255) NOT NULL default '',
`instanceKey` varchar(255) NOT NULL default '',
`orderby` varchar(25) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10256 ;
Y este otro:
CREATE TABLE IF NOT EXISTS `archive` (
`id` int(11) NOT NULL auto_increment,
`topFile` varchar(255) NOT NULL default '',
`msgId` int(11) NOT NULL default '0',
`time` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`topTpl` varchar(255) NOT NULL default '',
`file` varchar(255) NOT NULL default '',
`template` varchar(255) NOT NULL default '',
`instanceKey` varchar(255) NOT NULL default '',
`encoding` varchar(50) NOT NULL default '',
`orderby` varchar(255) NOT NULL default '',
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10256 ;
Nos devolvería las siguientes sentencias:
ALTER TABLE `archive` ADD `encoding` varchar(50) NOT NULL;
ALTER TABLE `archive` MODIFY `orderby` varchar(255) NOT NULL;
ALTER TABLE `archive` MODIFY `time` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP;
ALTER TABLE `archive` DROP PRIMARY KEY;
Un script bastante útil cuando, debido al despiste, tenemos diferencias entre la base de datos de desarrollo y la de producción y no sabemos qué cambios hemos realizado.
oData es un protocolo creado por Microsoft para obtener y actualizar datos en aplicaciones. Para ello hace uso de HTTP, AtomPub y JSON para garantizar el acceso a la información desde cualquier aplicación, servicio o almacenamiento. El cual dispone de un SDK, includo PHP.
Vía / php|architect
Comments are closed.
Hola, he dado un vistazo a la documentación de Tokyo Tyrant y no acabo de entender del todo para que sirve una base de datos clave-valor..
Me lo podÃas aclarar?
Saludos.
Hola
Normalmente las BD son relacionales, tal tabla se relaciona con tal otra, … Pero esto no siempre es necesario ya que muchas veces sólo se realizan accesos mediante el ID de la tabla. ¿Para qué usar una BD relacional si vas a tirar únicamente de ID?
Una de las caracterÃsticas más importantes de las BD clave-valor es su rapidez, son mucho más rápidas que las BD relacionales.
ImagÃnate que tienes una BD que controla el spam de una web y necesitas saber si una IP está aceptada o rechazada. En este caso no necesitarÃas una BD relacional, solo saber si span[‘ip’] es true o false.
Espero haberte despejado las dudas.
Saludos