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
En las nuevas aplicaciones web2.0 se está siendo cada vez más frecuente el que los usuarios puedan subir sus vÃdeos para luego compartirlos. No sé donde leà hace poco que una de las grandes luchas que han ganado la gente de Flash es el uso de vÃdeos FLV sobre los otros formatos que existÃan antes.
Si queremos que nuestra aplicación convierta los vÃdeos a Flash, el script siguiente nos ayudará a realizar el proceso. Para ello necesitaremos FFMPEG-PHP, FFMPEG y FLVTool2.
El proceso es sencillo: inicialmente, una vez subido el vÃdeo, se realiza una llamada a FFPMPEG-PHP para obtener datos del vÃdeo (ancho, alto y FPS) para luego llamar a FFMPEG con los datos obtenidos y empezar la codificación, realizando también una llamada a FLVTool2 para obtener información sobre el fichero resultante.
How to convert/encode files to FLV using FFMPEG & PHP
VÃa / PHPDeveloper y Asier Marqués
Closures son bloques de código que pueden ser pasados a una función y que pueden manejar variables que están definidas en el mismo ámbito. Algo que puede ser bastante útil cuando queremos repetir un código que solo se ejecutará en un lugar determinado y no queremos definir una función a nivel de clase para poder usarla.
Un vistazo a un ejemplo nos podrá ayudar de mejor manera:
function replace_in_array ($search, $replacement, $array) {
$map = function ($text) use ($search, $replacement) {
if (strpos ($text, $search) > 50) {
return str_replace ($search, $replacement, $text);
} else {
return $text;
}
};
return array_map ($map, $array);
}
Como se puede ver se trata de definir una función con una serie de parámetros, indicar qué variables del mismo ámbito puede usar y una vez definida, realizar la llamada a la función.
Vía / Spinning de web
¿Para que crear un formulario de contacto en un theme si ya existe algún plugin que te lo hace todo y muy bien?. Fácil, porque cuando subes un theme a wordpress.org, no te deja meter plugins, y si lo quieres vender, no puedes meter mil instrucciones para instalarlo, lo lógico es que copie el theme y poco más.
El tutorial explica paso a paso cómo crear la página, hacer que WordPress la entienda, crear el formulario de contacto, validación por jQuery haciendo uso de un plugin y envío del email.
How to create a built-in contact form for your WordPress theme
Vía / DZone
Buen tutorial sobre cómo hacer una nueve de etiquetas (tag cloud) mediante PHP. Explican paso a paso todo lo que hay que hacer para mostrar una lista de palabras como una nube de etiquetas.
El procedimiento es sencillo: primero será necesario un constructor, que será válido para PHP4 y PHP5. Luego habrá un método para añadir palabras y por último un método para mostrar la tag cloud.
Internamente las palabras se almacenan en un array asociativo, en el que la clave es la etiqueta y el valor el número de veces que se repite. Esto es un buen método pero deberÃa existir la posibilidad de indicar la lista de palabras y el número de veces que se repite, porque de la forma actual, en el constructor, hay que enviar toda la lista de palabras, pudiendo ser esto no muy efectivo cuando se trate por ejemplo de un blog con gran número de posts y cada post con varias etiquetas.
Tag Cloud
VÃa / PHPDeveloper.org
Si trabajas realizando proyectos en WordPress en el que el código se aloja en un servidor usando SVN, una forma sencilla de actualizar tu theme con los últimos cambios es mediante este sencillo y no-seguro plugin.
El plugin añade una opción de menú al Settings del Dashboard de WP, el cual te servirá para indicar el servidor SVN, usuario, contraseña y el path que corresponde a la carpeta themes de WP. El plugin se conectará al repositorio SVN y recuperará las carpetas que se encuentran en el path anterior y comprobará si las carpetas corresponden a themes instalados, mostrarás una lista con los themes encontrados junto a un botón que permite actualizar todo el theme.
Digo que no es seguro porque no controlo los permisos de los usuarios ni otras cuestiones, pero si estás interesado en ello supongo que no te costará mucho meterle mano al código:
// Adding Admin menu
if ( is_admin() ){
add_action('admin_menu', 'svn_update_menu');
add_action( 'admin_init', 'svn_update_register_settings' );
}
function svn_update_register_settings() {
register_setting( 'svn_up_option-group', 'svn_username' );
register_setting( 'svn_up_option-group', 'svn_password' );
register_setting( 'svn_up_option-group', 'svn_repository' );
register_setting( 'svn_up_option-group', 'svn_theme_path' );
if ($_GET['page'] == 'svn-update/svn-update.php') {
require ('phpsvnclient/phpsvnclient.php');
$phpsvnclient = new phpsvnclient(get_option('svn_repository'), get_option('svn_username'), get_option('svn_password'));
$files = $phpsvnclient->getDirectoryFiles('/');
$svn_themes = array();
$themes = array();
foreach(get_themes() as $k=>$t) $themes[$t['Template']] = array($k, $t["Template Dir"]);
if (is_array($files)) {
foreach($files as $f) {
if ($f['type'] == 'directory') {
if (isset($themes[$f['path']])) $svn_themes[$f['path']] = $themes[$f['path']];
}
}
}
update_option('svn_themes', $svn_themes);
if (isset($_GET['svn_update'])) {
$path = $_GET['svn_update'];
$theme_path = WP_CONTENT_DIR . '/themes/';
$files = $phpsvnclient->getDirectoryFiles($path);
foreach($files as $f) {
if ($f['type'] == 'file') {
file_put_contents($theme_path.$f['path'], $phpsvnclient->getFile($f['path']));
}
}
add_action('admin_notices', 'showSVNUpdated');
}
}
}
function showSVNUpdated() {
echo 'Theme updated
';
}
function svn_update_menu() {
add_options_page('SVN Update Options', 'SVN Update', 8, __FILE__, 'svn_update_options');
}
function svn_update_options() {
?>
SVN Update Options
Available Themes
No themes found in SVN repository instaled in WordPress';
} else {
echo '';
foreach($themes as $k=>$t) {
echo '- /'.$k.' => '.$t[0].' Update
';
}
echo '
';
}
?>
Este plugin necesita la librería PHP SVN Client para acceder al SVN, tan solo hay que meterlo en el mismo directorio que el plugin. Le faltan muchas cosas al plugin, pero ni tengo ganas ni tengo tiempo.
Tanto Symfony como Zend frameworks son frameworks PHP5 con gran éxito entre los desarrolladores. Como siempre pasa sobre gustos no hay nada escrito, pero para aquel que quiera elegir entre uno, esta comparativa puede venirle muy bien.
Gracias David por el aviso.
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