rss
twitter
  •  

Optimizar automáticamente todas las tablas de un servidor MySQL

| Posted in General |

2

En los servidores de VeneHosting.com ejecutamos semanalmente un proceso que optimiza ‘a juro’ todas las tablas, de todas las bases de datos MySQL de todo el servidor (que vienen siendo un montón enorme!); con el fin de ayudar a mantener un buen nivel de rendimiento.

Como no somos egoístas, compartimos este simple script con el resto de la comunidad y ¿porqué no?, hasta la competencia podría aprender algo más de nosotros !


<?php
/* modifica estos valores según tu servidor.*/
$host="localhost";
$usuario="admin"; //Tu super usuario
$pasword="xxxxx"; //La clave del super-usuario

/*no modifiques nada más*/
$link=mysql_connect($host,$usuario,$pasword);

$dbs=mysql_list_dbs($link);
while ($db=mysql_fetch_object($dbs))
{
        echo "$db->Database\n";
        $tablas = mysql_db_query($db->Database, "SHOW TABLES", $link);
        while ($tabla=mysql_fetch_array($tablas)) {
                mysql_db_query($db->Database, "OPTIMIZE TABLE ".$tabla[0], $link);
                echo "$tabla[0]\n";
        }
}
?>

Sólo resta programar este script con CRON para que se ejecute cada X tiempo (recomendado 1 vez a la semana) y listo !

Obtener cantidad followers de twitter con PHP

| Posted in General |

2

Encontré varios códigos por allí, pero nada más delicioso que la simplicidad:


<?php
function twitter_counter($username) {
    $api = 'http://twitter.com/users/show/' . $username;
    $xml = file_get_contents ( $api );

    $profile = new SimpleXMLElement ( $xml );
    $count = $profile->followers_count;
    return $count;
}
echo twitter_counter("alexandergarzon");
?>

El código está ligeramente adaptado del original (con caché) http://ooyes.net/resources/twitter-followers-counter-php-script

Lector RSS de Twitter ideal para Frameworks

| Posted in General |

4

Para un proyecto que estoy desarrollando debía mostrar los últimos X tweets de una cuenta en twitter sin usar JavaScript, sólo PHP; y además debía realizar las labores de “parsing” a las etiquetas # y @ para poder auto-enlazar a su correspondiente query de twitter y además, mostrar “hace cuánto fue escrita la entrada”, es decir: tiempo relativo.

Al no encontrar nada de esto en la web, me dí a la tarea de hacerlo yo mismo, uniendo varias piezas creadas por otros autores incluso en otro lenguajes de programación.

Debo decir que es perfectamente acoplable a cualquier framework en forma de un partial. Puedo decir que corre perfectamente con CodeIgniter.

A continuación, mi humilde aporte:


<?php
/**
 * Visualizar Twitter RSS
 * By: Alexander Garzon (www.php.com.ve)
 * @param string $rss_twitter URL completa del feed RSS
 * @style DIV class named rss_twitter
 * @return html
 */

class RSS_Twitter {

    //Determina si el número (en palabra) es plural si es mayor a 1
    public static function Pluralidad($val, $qty) {
        if ($val > 1) return $val.' '.$qty.'s';
        else return $val.' '.$qty;
    }
    //Calcula el tiempo relativo (diferencia) según una determinada y el presente.
    public static function TiempoRelativo($seconds) {
        if (($seconds / 604800) > 1) return 'Hace '.RSS_Twitter::Pluralidad(round($seconds / 604800), 'semana');
        elseif (($seconds / 86400) > 1) return 'Hace '.RSS_Twitter::Pluralidad(round($seconds / 86400), 'día');
        elseif (($seconds / 3600) > 1) return 'Hace '.RSS_Twitter::Pluralidad(round($seconds / 3600), 'hora');
        elseif (($seconds / 60 ) > 1) return 'Hace '.RSS_Twitter::Pluralidad(round($seconds / 60), 'minuto');
        else return 'Hace '.RSS_Twitter::Pluralidad($seconds, 'segundo');
    }

    public static function FormatoTiempo($tiempocadena) {
        $timestamp = strtotime($tiempocadena);
        $diferencia = time() - $timestamp;
        return RSS_Twitter::TiempoRelativo($diferencia);
    }

    public static function TweetFilter($tweet) {
        //Filtra contenidos del tweet (para links, #tags y @respuestas

        //Se elimina el nmombre del mismo autor en el mensaje (es redundante)
        $pos = strpos($tweet, ":");
        $salida = substr_replace($tweet, '', 0,$pos+2); // El +2 es refiere a el simbolo ':' y el espacio en blanco que le sigue.

        //Agregamos links a los http
        $salida = preg_replace('/(http:\/\/)(.*?)\/([\w\.\/\&amp;amp;\=\?\-\,\:\;\#\_\~\%\+]*)/', '<a href="$0" onclick="window.open(this.href); return false;">$0</a>', $salida);
        //Agregamos links a los @
        $salida = preg_replace('/\B@([_a-zA-Z0-9-]+)/','@<a href="http://twitter.com/$1" onclick="window.open(this.href); return false;">$1</a>',$salida);
        //Agregamos links a los #
        $salida = preg_replace('/\B#([_a-zA-Z0-9-]+)/','<a href="http://search.twitter.com/search?q=%23$1" onclick="window.open(this.href); return false;">#$1</a>',$salida);

        return $salida;

    }
    //Extrae y publica los tweets del RSS
    public static function TweetReader($url) {
        if (!@simplexml_load_file($url)) {
            echo "Error enlazando a Twitter, intente de nuevo";
        } else {
            $feed = simplexml_load_file($url);
            foreach ($feed->channel->item as $item) :
                echo "<div class=\"rss_twitter\">";
                echo $array['title'] = (RSS_Twitter::TweetFilter($item->title))."<br />".PHP_EOL;
                echo "<a href=\"$item->link\" onclick=\"window.open(this.href); return false;\">".RSS_Twitter::FormatoTiempo($item->pubDate)."</a><br />".PHP_EOL;
                echo "<br /></div>".PHP_EOL;
            endforeach;
        }

    }

}

RSS_Twitter::TweetReader($rss_twitter);

?>

Lo único que nos falta es proveer la variable $rss_twitter que corresponde a la ruta absoluta del canal RSS de la cuenta Twitter que deseamos mostrar y además la cantidad de “tweets” que mostraremos, esa ruta viene siendo algo como por ejemplo:

http://twitter.com/statuses/user_timeline/28505702.rss?count=3

Donde 28505702 es el ID de la cuenta de Twitter y 3 es la cantidad de Tweets que mostraremos.

Espero les sea de utilidad.

ACTUALIZACIÓN 12/07/2010: Le he agregado una validación simple para en caso de que por alguna razón Twitter esté caído.

Kohana y CodeIgnitier, los de mayor crecimiento este 2009

| Posted in General |

5

CodeIgnitier y su “fork” Kohana son los 2 frameworks PHP que presentaron el mayor crecimiento según Google trends; mientras los demás muestran un ligero descenso de popularidad.

Inclusive el archi-conocido hijo de Zend, se viene en baja este año.

Ambos son muy buenas opciones para quienes desean programar en PHP sacando partido a los modelos MVC

Integrar Netbeans y CodeIgniter

| Posted in General |

7

No es tan difícil después de todo.

Sólo pones este archivo con cualquier nombre en la raíz del proyecto (codeigniter) y listo.


<?php
/**
 * @property CI_Loader $load
 * @property CI_Form_validation $form_validation
 * @property CI_Input $input
 * @property CI_Email $email
 * @property CI_DB_active_record $db
 * @property CI_DB_forge $dbforge
 * @property CI_Table $table
 * @property CI_Session $session
 * @property CI_FTP $ftp
 * ....
 */
Class Controller {
}
?>

Así de fácil… con esto hemos logrado que el Netbean nos ofrezca en auto-completado, los métodos y variables propias del framework.

Esta técnica puede ser aplicada a otros frameworks, aunque Symfony ya viene integrada como parte de Netbeans.

Autocompletado Codeigniter