feed icon Ambos idiomas / Both languages
(es|en)

Haciendo un backup de mis snippets de código
Hace un tiempo ya que estoy usando el servicio de snipplr para poder almacenar y organizar mis snippets(pedazos) de código. Pero no me convencia el hecho de que no tenia la opción de hacer un backup, tanto por seguridad/respaldo como si en algún momento decidía dejar de usar este servicio o me pasaba a otro y no por ello perder mi código. Asi que aprovechando lo que si tiene, que es la posibilidad de acceder a mi cuenta con el protocolo xml-rpc hice un script para bajar mis snippets.

Asi que me puse a ver un poco de que se trataba todo esto... finalmente, usando snipplr-api, XML-RPC PEAR package y un poco de lo básico que manejo de PHP, lo logré!.

El código:
require_once 'XML/RPC.php';
 
$my_key='xxxxxxxxxxxxxxxxxxx'; // la "API Key" de mi usuario
$params = array( new XML_RPC_Value($my_key, 'string') );
$msg = new XML_RPC_Message('snippet.list', $params);
$cli = new XML_RPC_Client('/xml-rpc.php', 'snipplr.com');
$resp = $cli->send($msg);
 
if( !$resp ) {
echo 'Communication error: ' . $cli->errstr;
exit;
}
 
if( !$resp->faultCode() ) {
 
$val = $resp->value();
 
for ($i = 0; $i < $val->arraysize(); $i++) {
 
$v = $val->arraymem($i);
 
$structVal = $v->structmem('id'); $ID = $structVal->scalarval();
$structVal = $v->structmem('title'); $TITLE = $structVal->scalarval();
 
$params = array(new XML_RPC_Value($ID, 'int'));
$msg = new XML_RPC_Message('snippet.get', $params);
$resp = $cli->send($msg);
$snippet_val = $resp->value();
 
$structVal = $snippet_val->structmem('username'); $USERNAME = $structVal->scalarval();
$structVal = $snippet_val->structmem('language'); $LANGUAGE = $structVal->scalarval();
$structVal = $snippet_val->structmem('source'); $SOURCE = html_entity_decode( $structVal->scalarval() );
 
$BASE_DIR='data';
if( $USERNAME=='minombredeusuario' ) $BASE_DIR.='/mios'; else $BASE_DIR.='/otros';
$LANG_DIR=$BASE_DIR.'/'.$LANGUAGE;
if( !file_exists($LANG_DIR) ) {
mkdir($LANG_DIR);
}
$archivo = $LANG_DIR.'/'.$TITLE.'.txt';
$fp = fopen($archivo, "w");
if( !$fp ) {
$archivo = $LANG_DIR.'/'.$ID.'.txt';
$fp = fopen($archivo, "w");
}
$string = $TITLE."\n\n".$COMMENT."\n\n".$SOURCE."\n";
$write = fputs($fp, $string);
fclose($fp);
}
}
else {
echo 'Fault Code: ' . $resp->faultCode() . "\n";
echo 'Fault Reason: ' . $resp->faultString() . "\n";
}


Básicamente lo que hace es pedir una lista con los snippets de mi usuario (se obtiene su título y su id) y luego a partir de sus "id" los recupera y los va guardando en distintos directorios según pertenezcan a mi usuario o no (los snippets de otros que tengo marcados como "favoritos") y el lenguaje al que correspondan.

¿Lo que sigue? tal vez tratar de sincronizar (o aunque sea incorporar) en los snippets de mis editores en el trabajo diario: Kate y KDevelop.

[ 2 comments ]   |  [ 1 trackbacks ]   |  permalink  |  related link
Análisis de un filtro pasa bajo digital básico




[ add comment ]   |  [ 0 trackbacks ]   |  permalink  |  related link
Ahora también tengo syntax highlight y LaTeX!
Gracias a la ayuda de Fu Hongbo que utiliza el mismo sistema de blog que yo (link), es decir sphpblog, logré hacer los cambios necesarios en el código de este blog para poder incorporar el resaltado de sintaxis del código fuente con GeSHi. Me dijo que luego iba a hacer un tutorial en inglés, asi que me ofrecí a traducirlo al castellano.

Gracias!

Update: Teniendo como guía este post, también instalé un render para ecuaciones LaTeX llamado MimeTex.

Una prueba:

y[n]=\frac{x[n]+x[n-1]}{2}


[ add comment ]   |  [ 0 trackbacks ]   |  permalink  |  related link
Parseando RSS con magpierss
A pesar de que en realidad no se php, me las arreglo bastante bien para modificar el código de wikis y blogs, generalmente aprovechando lo que conozco de otros lenguajes como perl o lua que tienen algunas estructuras parecidas y también ayudado por la sintaxis parecida a la de C. Asi es como reemplacé el lento javascript (proporcionado por feedburner o feed2js) que generaban los titulares de los feeds que tengo en mi side bar por lo mostrados a antojo, luego de parsearlos con magpierss. O sea, la diferencia principal es que ahora el html equivalente se genera en el servidor y no en el cliente.

Lo único que hice fue bajarme el paquete de magpierss y copiar los archivos que indica el archivo "INSTALL" en "/usr/share/php/magpierss" (es válido cualquier directorio del path[1])

Después edite el archivo "scripts/sb_theme.php" de este blog (sphpblog) y agregué una función como la siguiente:
function menu_display_some_rss_html () {
 
$result = array();
$result[ 'title' ] = 'Titulares RSS';
 
require_once('magpierss/rss_fetch.inc');
 
error_reporting(E_ERROR);
 
$rss = fetch_rss("http://direcciondelfeed.com/feed");
 
if( $rss ) {
$num_items = 5;
$rss->items = array_slice($rss->items, 0, $num_items);
 
$result[ 'content' ] = '<ul>';
foreach ($rss->items as $item) {
 
$href = $item['link'];
$title = $item['title'];
$title = iconv("ISO-8859-1","utf-8",$title);
 
$result['content'].='<li><a href='.$href.'>'.$title.'</a></li>';
}
$result[ 'content' ] .= '</ul>';
}
else {
$result = 0;
}
 
return ( $result );
}

Usando solo los ejemplos que da la documentación tenía problemas con los caracteres "especiales" como acentos y eñes, asi que la solución que encontré fue convertir el texto a utf-8 usando iconv de la siguiente forma:
$title = iconv("ISO-8859-1","utf-8",$title);

para hacer las páginas que muestran el feed completo use un template de sphpblog para conservar la estructura del blog y también la siguiente línea de magpierss para recuperar todo el contenido de cada post:
$content = $item['content']['encoded'];

y le di el formato necesario.

[1] Que se puede conocer poniendo en el shell "php -i | grep 'include_path'". Sino se tiene servidor propio se puede colocar en el mismo directorio donde esta el archivo que hace uso de magpierss.

[ add comment ]   |  [ 0 trackbacks ]   |  permalink
Escribiendo en blogs
Después de lo divertido de instalar un server, viene lo divertido de instalar aplicaciones web ;-), configurarlas, cambiarle el código PHP para que quede a gusto, instalarle plugins, etc.

Una vez hecho esto hay que usarlas (sino para que sirve todo lo otro, ¿no?), asi que empecé a escribir más a menudo en blogs, un poco para ordenar, almacenar y fijar algunas ideas, conceptos y datos y otro poco para explotar la posibilidad de profundización y conocimiento de otras cosas que te da el hecho de compartir algo, ya sea en la mini investigación previa que se da a veces pre-post o por los comentarios, preguntas o links. Me di cuenta que son un buen vehículo para aprender compartiendo y que de alguna forma funcionan en forma similar al software libre.

Por ahora escribo con un amigo y compañero de facultad en un blog que habla sobre cultura libre en general, que se llama, para no ser menos "Cultura Libre". Asi que todo lo que se comparta de forma libre tiene su lugar ahi (no esta limitado al código fuente, pueden ser películas, textos, canciones, etc). Se me ocurrió hacer un blog sobre esta temática para recolectar información del tema y para "mandar ahí" a todo aquel (y cada vez son más) que me pregunte por este ¿nuevo? "movimiento" y todas estas ¿nuevas? forma de distribución del conocimiento o arte.

También escribo en uno denominado "Audio Research Blog" destinado a todo lo que tiene que ver con el audio, aunque más enfocado a la programación relacionada y a el procesado de señal (este último también me sirvió para probar de instalar un blog wordpress).

Ya que estamos, el contenido de este blog y el de los otros se distribuye bajo la licencia Creative Commons Atribución 2.5 de Argentina, que básicamente dice que:

Usted es libre de:

* copiar, distribuir, exhibir, y ejecutar la obra
* hacer obras derivadas
* hacer uso comercial de la obra

Bajo las siguientes condiciones:

Atribución. Usted debe atribuir la obra en la forma especificada por el autor o el licenciante.
* Ante cualquier reutilización o distribución, usted debe dejar claro a los otros los términos de la licencia de esta obra.
* Cualquiera de estas condiciones puede dispensarse si usted obtiene permiso del titular de los derechos de autor.



[ add comment ] ( 97 views )   |  [ 0 trackbacks ]   |  permalink  |  related link

<<First <Back | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Next> Last>>