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

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
Puesta en marcha del server
Bajé ubuntu server y lo instalé.

Como servicio de DNS que permite actualizar la ip dinámica de mi conexión a internet elegí zoneedit. Como la máquina que uso de server no es la que realiza la conexión a internet, o sea usa un gateway (otra máquina) para acceder a internet y esta última forwardea los puertos que preciso (80, 22, etc), no tengo forma (hasta donde se) de enterarme de que cambio mi ip que chequearlo regularmente, por eso hice este script:

#test_ip.sh
newip=`wget -o /dev/null -O - 'http://simple.showmyip.com'\
| cut -f1 -d' ' | sed -n 1p`
 
presentip=`host myweb.com | sed -n 1p | cut -d' ' -f4`
 
if [ "$newip" != "$presentip" ]; then /scripts/update_dns_ip.sh;
fi
O se puede poner:
presentip=`cat $SCRIPTS_PATH/.ip_actual`
y agregar en el if
echo $newip > $SCRIPTS_PATH/.ip_actual
Con "host" se pregunta a los dns que ip esta asociada con el dominio, de la otra forma se guarda la ip en un archivo para compararla con la que se obtiene de la consulta a showmyip.

#update_dns_ip.sh
#una de estas líneas por c/dominio
wget -O - --http-user= \
--http-passwd= 'http://dynamic.zoneedit.com/auth/dynamic.html?host='


y lo puse en cron (crontab -e):
0,8,16,24,32,40,48,56 *  * * * /scripts/test_ip.sh>>/dev/null

o si queremos guardar el log de lo que va haciendo:
0,8,16,24,32,40,48,56 *  * * * /scripts/test_ip.sh>>/var/log/ipupdate.log


(más o menos hice el cálculo para que no se llame más de 200 veces por día, que es lo que me permite showmyip.com, imagino que se puede cambiar con otro sitio de servicio similar o alternar)

Si tuviera solo un sitio al que actualizarle el dns tal vez seria más eficiente directamente llamar al script que actualiza la ip en zoneedit (update_dns_ip.sh, que solo hace un "wget"), sin importar si cambió o no, pero como son varios, además de que es más prolijo conviene hacerlo asi.
Nota: En los repositorios estan los programas ez-ipupdate y ddclient que sirven para hacer esto, pero dadas las características especiales del caso no se si me servían y con wget alcanzaba.

Después por cada sitio puse un archivo en "/etc/apache2/sites-available" con la siguiente estructura:
<VirtualHost *>
ServerName 'www.nombrehost.com.ar'
ServerAlias nombrehost.com.ar
 
# Indexes + Directory Root.
DirectoryIndex index.html #o index.php según el caso
DocumentRoot /pathdelsitio/htdocs
 
# Logfiles
ErrorLog /pathdelsitio/logs/error.log
CustomLog /pathdelsitio/logs/access.log combined
</VirtualHost>

y lo "activé" con "sudo a2ensite nombredelarchivo", que en realidad lo que hace es un link simbólico a este archivo y lo pone en "/etc/apache2/sites-enable"
(con "sudo a2dissite nombredelarchivo" se "desactiva", lo use para desactivar la configuración por default)

Luego reinicié el servidor de http: "sudo /etc/init.d/apache2 reload" y voilá.

Creo que no hice nada más.

Update: ver link.

[ add comment ]   |  [ 0 trackbacks ]   |  permalink
Cambio de host (host propio!)
Bueno, puse un server[1] en mi casa asi que cambié de host mi blog (estaba @fiuba), vamos a ver que tal anda aca. Por lo pronto aca puedo poner lo que quiera asi que no tengo limitaciones (salvo poco upload, jeje). Tal vez migre a wordpress que es más potente y para el que hay miles de plugins, etc. También pasé las otras cosas que tenia en fiuba como el wiki. Tal vez empiece a postear, no se.

[1] Un ubuntu server con LAMP (Linux, Apache, MySQL y PHP)


[ add comment ]   |  [ 0 trackbacks ]   |  permalink
Presentación
A pesar de que tengo instalado este blog aca hace más de un año, nunca escribí nada. No soy de escribir en blogs, pero estoy empezando a leerlos asi que tal vez no falte mucho para lo primero. La idea de este, por ahora es que sirva de presentación personal ¿? y para practicar/probar/instalar/modificar algunas cosas como este blog o el wiki [1] por ejemplo agregandole cosas al código php o html o modificando algunas para adecuarlo mejor a mis necesidades [2]. Esto lo puedo hacer gracias a que todo lo que instalé es software libre.

Si en algún momento también lo empiezo a usar para hacer "posts" la temática estará dentro de las categorías que definí.

El feed RSS:


[1] Mi wiki
[2] Dentro de las limitaciones del server, por ejemplo no se pueden instalar cosas que precisen MySQL pero aprovechando lo que si esta disponible como php. (ver Cambio de host (host propio!))

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

<<First <Back | 1 | 2 | 3 | 4 | 5 | 6 | 7 |