tags/kreissy StyXman's glob http://grulicueva.homelinux.net/~mdione/glob//tags/kreissy/ StyXman's glob ikiwiki 2009-01-22T04:24:04Z svn-kreissy http://grulicueva.homelinux.net/~mdione/glob//posts/svn-kreissy/ 2009-01-22T04:24:04Z 2008-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-kreissy http://grulicueva.homelinux.net/~mdione/glob//posts/presentando-kreissy/ 2009-01-22T04:24:04Z 2008-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> releases http://grulicueva.homelinux.net/~mdione/glob//posts/releases/ 2009-01-22T04:24:04Z 2008-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-viaje http://grulicueva.homelinux.net/~mdione/glob//posts/release-y-viaje/ 2009-01-22T04:24:04Z 2008-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-avc http://grulicueva.homelinux.net/~mdione/glob//posts/python-avc/ 2009-01-22T04:24:04Z 2008-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-kreissy http://grulicueva.homelinux.net/~mdione/glob//posts/trac-para-kreissy/ 2009-01-22T04:24:04Z 2008-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>