tags/kreissyStyXman's globhttp://grulicueva.homelinux.net/~mdione/glob//tags/kreissy/StyXman's globikiwiki2009-01-22T04:24:04Zsvn-kreissyhttp://grulicueva.homelinux.net/~mdione/glob//posts/svn-kreissy/2009-01-22T04:24:04Z2008-07-04T23:29:16Z
<p>hoy a pedido de <a href=
"http://humitos.wordpress.com/">humitos</a> puse acceso remoto por
svn al repo donde estoy desarrollando kreissy. si bien hice un par
de releases en <a href=
"http://developer.berlios.de/projects/kreissy/">su página en
berlios</a> (que <em>no</em> es su página oficial; pienso poner un
trac en casa para eso), no andan, y actualemnte lo mejor es usar el
branch en el que estoy desarrollando.</p>
<p>así que msin mas introducción, les dejo un comando muy
especial:</p>
<pre>
<code>$ svn co svn://grulicueva.homelinux.net/home/mdione/src/projects/kreissy/svn/branches/multi-feed-tag kreissy
</code>
</pre>
<p>necesita SQLalchemy, BeautifulSoup, FeedParser, PyKDE y sqlite3.
una vez bajado, correr make. correr siempre (por ahora) del
directorio donde lo bajaron. creo que es todo. ya pondré el trac a
andar y podré recibir mejor sugerencias, comentarios, etc.</p>
<p><span class="selflink">kreissy</span> <a href="http://grulicueva.homelinux.net/~mdione/glob//tags/kreissy/../python/">python</a></p>
presentando-kreissyhttp://grulicueva.homelinux.net/~mdione/glob//posts/presentando-kreissy/2009-01-22T04:24:04Z2008-07-04T23:29:16Z
<p>kReiSSy (se pronuncia como la palabra "crazy" del inglés) es uno
de mis proyectos más ambiciosos en este momento (tengo <a href=
"http://developer.berlios.de/projects/trieste/">uno mayor</a>, pero
está en el freezer; ya hablaré de él). en resumen, puedo decir que
kReiSSy es un lector de feeds (rss, atom, quéno[1]) alimentado a
gofios, o como dicen ahora, en esteroides. otra descripción puede
ser: es un concentrador de información externa con categorzación
basada en tags.</p>
<p>¿qué features lo hacen tan pulenta? veamos:</p>
<ul>
<li>tagging[2] de posts (eso lo hace cualquiera).</li>
<li>almacenamiento local de posts (en una base de datos, no borra
ninguno).</li>
<li>browser integrado. acá empecé a irme al carajo.</li>
<li>tagging de páginas "leídas por ahí", que las convierte en first
class citizens del programa.</li>
</ul>
<p>¿qué significan estos dos últimos fatures? que puedo estar
leyendo un post, seguir un link, de ahí a otro, y otro, todo en el
browser integrado, y así hasta que encuentro otra página que nada
que ver por dónde empecé, y entonces puedo <em>tagear</em> dicha
página. esto hace dos cosas automáticas: guarda la página en la
base de datos como si fuera un post más, y me permite luego buscar
dicha página por tag.</p>
<p>ahora, me fui de boca un poco al decir "browser integrado" (esta
es la sección "proyect status"). por ahora el browser nos permite
ir hacia adelante, siguiendo links, pero no para atrás. es decir,
le faltan todos los botones de navegación. también se podría marcar
un post como "leer después", pero no hay código que lo haga. el
filtrado por varios feeds o varios tags está roto/no anda (esto se
debe o a un bug en <a href=
"http://www/sqlalchemy.org/">SQLAlchemy</a> o a mi inoperancia).
aún no graba bien su sesión, cosa de volver en el mismo estado en
que lo dejamos. y hace un par de chanchadas con los archivos, asume
un par de paths y negradas así.</p>
<p>¿y en qué está hecha semejante bestia? python, obvio, mi
lenguaje de cabecera desde hace unos añitos ya. pero no python
puro, sino con varios agregados.</p>
<p>uno ya lo mencioné, <a href=
"http://www/sqlalchemy.org/">SQLAlchemy</a>, un ORM bastante
potente, pues no fuerza muchas cosas. para usarlo como un ORM
clásico (una clase por tabla) hay que hacer un par de giladas, pero
nada grave. y permite hacer queries con SQL a lo macho, aunque no
me llevo muy bien con eso. sqlite por debajo.</p>
<p><a href="http://feedparser.org/">feedparser</a> y <a href=
"http://www.crummy.com/software/BeautifulSoup/">beautifulsoup</a>,
un lector de múltiples tipos de feeds, y un html scrapper.</p>
<p>y la vedette de todos, y el motivo por el que empecé este
proyecto: <a href=
"http://www.riverbankcomputing.co.uk/pykde/index.php">PyKDE</a>.
soy un usuario y fanático de kde desde que usé un redhat5.2 allá
por el '98 o así. conozco bastante la infraestructura que hay por
debajo, he leído varias veces cachos de código en busca de
solucionar algún bug que me mordió, algunas veces hasta logré
repararlo y todo. si bien su look no es muy bonito, la
infraestructura que hay debajo es impresionante.</p>
<p>a tal punto que hacer este programa me resultó muy sencillo
hasta ahora, pues sólo me concentré en mi funcionalidad. la parte
de mostrado de html u otro tipo de archivos se lo dejé a KDE:</p>
<pre>
<code> mime= KMimeType.findByURL(url, 0, False, False)
mimeType= mime.name ()
if mimeType=='application/octet-stream':
mimeType= KIO.NetAccess.mimetype (url, self);
else:
# asumo que es html
mimeType= "text/html"
ptr= KTrader.self().query(mimeType, "'KParts/ReadOnlyPart' in ServiceTypes")[0]
part= createReadOnlyPart (ptr.library (), tab, ptr.name ())
</code>
</pre>
<p>esto hace la fantástica magia de fijarse qué MimeType es el link
(dado por url) y luego KTrader me entrega un KPart que sabe mostrar
ese MimeType. simplemente la embebo en un tab y ya. juzguen
ustedes.</p>
<p>ok, suficiente por ahora. ya estaré hablando de éste y otros
proyectos.</p>
<hr />
<p>[1] no es una traducción literal del "whatnot" en inglés, sino
una reimplementación en castellano de la misma idea.</p>
<p>[2] uso muchos términos en inglés que ni me gasto en traducir.
deal with it.</p>
<p><span class="selflink">kreissy</span> <a href="http://grulicueva.homelinux.net/~mdione/glob//tags/kreissy/../python/">python</a> <a href="http://grulicueva.homelinux.net/~mdione/glob//tags/kreissy/../pykde/">pykde</a></p>
releaseshttp://grulicueva.homelinux.net/~mdione/glob//posts/releases/2009-01-22T04:24:04Z2008-07-04T23:29:16Z
<p>(A pedido de fbatista, trataré de poner mayúsculas al empezar
las oraciones.)</p>
<p>Estuve todo el finde procrastinando algo que ya era necesario
hacer: hacer releases de mis proyectitos. En realidad, estos
releases son un paso más en el trabajo hormiga que ya venía
haciendo: poner tracs y publicar info sobre ellos. Fue como poner
el plato y luego las semillas para correcaminos. También la trampa,
en forma de bugtrackers y pedidos de ayuda.</p>
<p>Y el último paso consiste en poner los carteles: anunciar los
releases. En este moemnto estoy usando tres canales de anuncios
(cuatro con éste): <a href="http://freshmeat.net/">freshmeat</a>,
<a href="http://www.kde-apps.org/">appsy</a> y el <a href=
"http://pypi.python.org/pypi">Python Package Index</a>.</p>
<p>Para hacer el anuncio en este último usé las <em>distutils</em>.
Sólo tuve que poner info como la que pueden ver en <a href=
"http://grulicueva.homelinux.net/~mdione/projects/kreissy/browser/tags/0.2.0/setup.py">
la versión actual del <em>setup.py</em></a> de <em>kreissy</em>.
Luego uno corre <em>python setup.py register</em>, quien pide user
y pass de <em>pypi</em>, y yastá! Esta info también la uso para
crear los <em>.tar.gz</em> con <em>python setup.py sdist</em>. Pero
estas cosas ya las sabían, ¿no?</p>
<p>Para <em>psync</em> yo usaba también <a href=
"http://packer.sourceforge.net/"><em>packer</em></a> (WARN: colores
horripilantes tras ese link) para crear paquetes para distintas
distros, pero hace un año que no lo usaba y parece que ya no
funciona como antes bajo <em>Debian Sid</em>. Una lástima.</p>
<p>Así que ahí tienen: <a href=
"http://grulicueva.homelinux.net/~mdione/projects/dist/kreissy/">kreissy
0.2.0</a> y <a href=
"http://grulicueva.homelinux.net/~mdione/projects/dist/psync/">psync
0.4.0</a>.</p>
<p><span class="selflink">kreissy</span> <a href="http://grulicueva.homelinux.net/~mdione/glob//tags/kreissy/../psync/">psync</a> <a href="http://grulicueva.homelinux.net/~mdione/glob//tags/kreissy/../python/">python</a></p>
release-y-viajehttp://grulicueva.homelinux.net/~mdione/glob//posts/release-y-viaje/2009-01-22T04:24:04Z2008-07-04T23:29:16Z
<p>En 20 minutos parto para las playas del sur. Dicen que no vuelvo
antes del 20 pero sí antes del 23. La última cosa que hice antes de
calzar la mochila fué sacar <a href=
"http://pypi.python.org/pypi/kreissy/0.2.2">kreissy 0.2.2</a>. Que
lo disfruten y nos vemos en dos semanas.</p>
<p><span class="selflink">kreissy</span></p>
python-avchttp://grulicueva.homelinux.net/~mdione/glob//posts/python-avc/2009-01-22T04:24:04Z2008-07-04T23:29:16Z
<p>una de las cosas que hago al menos una vez a la semana es
actualizar mi Debian Sid. para esto uso dselect (ya mencioné mi
relación de amistad con él[1]), quien desde tiempos inmemoriables
sabe mencionar qué paquetes nuevos hay (y en sid hay varios por
semana).</p>
<p>la cuestión que hoy me llamó mucho la atención <a href=
"http://avc.inrim.it/">python-avc</a>. he aquí sus descripción:</p>
<p>AVC, the Application View Controller is a multiplatform, fully
automatic, live connection among the values displayed by graphical
interface widgets and application variables. AVC supports in a
uniform way the most popular widget toolkits: GTK, Qt3, Qt4, Tk.
The connections are autogenerated by looking for matching names
between widget names and variable names.</p>
<p>en estos días voy a tratar de darle una probada en kreissy.</p>
<p><a href="http://grulicueva.homelinux.net/~mdione/glob//tags/kreissy/../python/">python</a> <span class=
"selflink">kreissy</span></p>
<hr />
<p>[1] «somos solo amigos» [sic].</p>
trac-para-kreissyhttp://grulicueva.homelinux.net/~mdione/glob//posts/trac-para-kreissy/2009-01-22T04:24:04Z2008-07-04T23:29:16Z
<p>esta noche me voy a dedicar rápidamente a poner un <a href=
"http://trac.edgewall.org/">trac</a> para <a href=
"http://grulicueva.homelinux.net/~mdione/projects/kreissy/">kreissy</a>.
la idea final es que el URL anterior sea la páfina oficial del
proyecto, pero que no necesariamente sea el URL final; puede que
haya un redirect al medio. ya explicaré porqué.</p>
<p>lo primero es crear un trac-env para eso:</p>
<pre>
<code>mdione@skid:~/src/projects/kreissy$ trac-admin trac initenv kReiSSy sqlite:db/trac.db svn /home/mdione/src/projects/kreissy/svn /usr/share/trac/templates
</code>
</pre>
<p>también se puede con:</p>
<pre>
<code>mdione@skid:~/src/projects/kreissy$ trac-admin trac
</code>
</pre>
<p>a secas, ejecutar el comando <em>initenv</em> y responder las
preguntas, que en realidad son, en ese orden, los parámetro sde
allá arriba.</p>
<p>el punto complicado es enganchar esto con el apache. hay varios
métodos: usándolo como un cgi común y coriente, con FastCGI, con
mod<em>python y con mod</em>wsgi. hoy me siento valiente así que
usaría mod<em>wsgi, pero como creo que en algún momento esto puede
correr en un debian stable, me voy al más seguro
mod</em>python.</p>
<p>la <a href=
"http://trac.edgewall.org/wiki/TracModPython">documentación de
trac</a> es muy explícita con respecto a los pasos a seguir, así
que no pienso repetirlos acá. sí voy a tratar de explicar cómo lo
adapté a mi situación.</p>
<p>resultó ser más sencillo que antes. la última que lo probé, hará
unas <em>cuantas</em> versiones de trac, me quedó un chancullo muy
feo. pero ahora sólo bastó este archivo <em>.htaccess</em> en el
directorio en mi <em>public_html</em>:</p>
<pre>
<code>SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /home/mdione/src/projects/kreissy/trac
PythonOption TracUriRoot /~mdione/projects/kreissy
</code>
</pre>
<p>y ya tengo el trac andando! ftatico! ahora a llenar contendo y
eso. pero eso mañana...</p>
<p><a href="http://grulicueva.homelinux.net/~mdione/glob//tags/kreissy/../sysadmin/">sysadmin</a> <a href="http://grulicueva.homelinux.net/~mdione/glob//tags/kreissy/../trac/">trac</a>
<span class="selflink">kreissy</span> [[!tagling tags/apache]]</p>