Ir al contenido principal

Ralsina.Me — El sitio web de Roberto Alsina

Publicaciones sobre programming (publicaciones antiguas, página 56)

Haciendo una aplicación única con python y DBUS

Lo bus­qué en google y siem­pre en­cuen­tro la mis­ma res­pues­ta, "u­sá dbus, tra­tá de to­mar el nom­bre, si ya exis­te, en­ton­ces hay una co­pia co­rrien­do­".

Lo que no pu­de en­con­trar es un ejem­plo que fun­cio­ne de es­to, o al me­nos no un ejem­plo con­ve­nien­te­men­te eti­que­ta­do "a­sí es co­mo se ha­ce una apli­ca­ción úni­ca usan­do DBUS y py­tho­n".

Así que, así es co­mo se ha­ce una apli­ca­ción úni­ca usan­do DBUS y py­tho­n:

Su­po­nien­do que tu apli­ca­ción se lla­ma uR­S­Sus (la mía se lla­ma así):

session_bus = dbus.SessionBus()
try:
    session_bus.get_object("org.urssus.service", "/uRSSus")
    # Esta es la segunda copia, hacer que se vea la primera
    # TODO: implementar
except dbus.DBusException: # No hay otra copia corriendo
    # Esto 'toma' el nombre DBUS
    name = dbus.service.BusName("org.urssus.service", bus=session_bus)
    # Ahora, empezá la aplicación:
    window=MainWindow()
    object = UrssusServer(window,name)
    :
    :
    :
    etc, etc

Y eso es to­do. No, no es di­fí­ci­l, pe­ro co­mo la do­cu­men­ta­ción de DBUS es... o me­jor di­cho co­mo la do­cu­men­ta­ción de DBUS no es, ca­da co­si­ta pue­de ayu­da­r.

Yo sabía que no tenía que hacerlo, o como HTML5 y Qt hacen mi trabajo.

Des­de ha­ce un tiem­po quie­ro que ten­ga so­por­te de po­dcas­ts. El asun­to es que ... siem­pre me pa­re­ció mu­cho tra­ba­jo. Se­gu­ro, usan­do pho­non pue­do crear un re­pro­duc­tor de au­dio y eso, pe­ro­...

Es­toy usan­do un wi­dget HT­ML pa­ra mos­trar los pos­ts, así que ten­dría que en­con­trar una for­ma de agre­gar el re­pro­duc­tor a la in­ter­fa­ce y... mu­cho tra­ba­jo.

Hoy me des­per­té y pen­sé... es­pe­rá... El wi­dget HT­ML de Qt es­tá ba­sa­do en We­bki­t. Y we­bkit so­por­ta HT­M­L5. Y HT­M­L5 tie­ne un tag "au­dio­".

En­ton­ce­s, si hi­cie­ra que uR­S­Sus ba­ja­ra los li­nks de los en­clo­su­res, y los agre­ga­ra a la ba­se de da­to­s, y agre­go es­to al tem­pla­te de pos­t:

<?py for enclosure in  post.enclosures: ?>
  <audio autobuffer="Yes" controls="controls" src=#{enclosure.href}></audio><br>
<?py #end ?>

Eso no fun­cio­na­ría? Bue­no, sí!

urssus26

Y ahí es­tá, yo te­nia ra­zón en no im­ple­men­tar­lo, por­que la for­ma fá­cil de ha­cer­lo es de­jar que Qt lo ha­ga ;-)

Mi primer código python

En 1996 era in­mi­nen­te el año de Li­nux en el es­cri­to­rio, y esa fie­bre es­ta­ba im­pul­sa­da por una de las me­jo­res apli­ca­cio­nes open sour­ce de la épo­ca: Ly­X.

LyX era (es) al­go así co­mo un pro­ce­sa­dor de tex­to don­de uno es­cri­bía y ge­ne­ra­ba La­TeX, que des­pués pro­du­cía otra co­sa con la que uno im­pri­mía. Pe­ro me voy por las ra­ma­s, LyX es­ta­ba bue­no por­que usa­ba uno de los pri­me­ros toolki­ts bue­nos y li­bres: XFor­ms.

Bue­no, en rea­li­dad no era li­bre, por­que era só­lo pa­ra uso no co­mer­cia­l.

Y no era tan bue­no tam­po­co, pe­ro lo es­tá­ba­mos com­pa­ran­do con Mo­tif así que era mu­cho más li­bre y mu­cho me­jor que esa co­sa.

De pa­so: el úl­ti­mo re­lea­se de XFor­ms es de agos­to del 2009.

En ese mo­men­to, un yo de 25 años es­ta­ba ena­mo­ra­do de Py­thon 1.3. Así lo des­cri­bí:

Python 1.3

It's a beau­ti­ful ,free, lan­gua­ge. Get it from ftp://­ftp.­p­y­tho­n.org http://www.­p­y­tho­n.org

Sí, Py­thon 1,3. En­ton­ce­s, yo que­ría usar es­te toolkit en C que usa­ba LyX y es­te lin­do len­gua­je que es­ta­ba apren­dien­do, y que­ría usar las dos co­sas al mis­mo tiem­po.

Co­rrí (no ca­mi­né) has­ta mi fiel Sla­ckwa­re 3.0 ELF en mi 486­DX2 y em­pe­cé a ha­ckea­r. En un fin de se­ma­na te­nía al­go que an­da­ba.

In­clu­si­ve em­pe­cé a es­cri­bir el san­to grial de las apli­ca­cio­nes de es­cri­to­rio, una ver­sión GUI de Pi­ne, usan­do py­thon y su mó­du­lo IMAP (p­y­thon mai­le­r, o Py­M):

//ralsina.me/static/im1.jpg
//ralsina.me/static/im2.jpg

Li­be­ré la ver­sión 0.1 al­pha el 13 de ma­yo de 1996... y unos me­ses más tar­de Ma­tthias Ettri­ch em­pe­zó KDE, en­contré Qt y nun­ca más pen­sé en XFor­ms.

Has­ta es­te me­s.

Por mo­ti­vos que no vie­nen al ca­so, men­cio­né PyM en la lis­ta de co­rreo de PyAr el otro día y... bue­no, fun­cio­na­ría to­da­vía py­x­for­ms?

Y sí, fun­cio­na!

Me ba­jé los fuen­tes de py­x­for­ms-0.1-al­pha de al­gun lu­gar de la in­ter­ne­t, ins­ta­lé XFor­ms 1.0.9s­p2 (sí, el re­lea­se de ha­ce tres me­s­es), por su­pues­to que ya te­nía py­thon 2.6.4 ins­ta­la­do, hi­ce un se­tu­p.­p­y, edi­té 10 lí­neas de có­di­go y...

im1

Sí, fun­cio­na. Se pue­de ba­jar es­ta ver­sión 0.2 (nom­bre có­di­go "C­thulhu was he­re") aquí ape­nas 13 años des­pués de la 0.1.

No, no en­tien­do las es­qui­nas re­don­dea­das ex­tra­ña­s, ni por­qué el cur­sor se ve ra­ro y vie­jo cuan­do en­tra a las ven­ta­nas de la apli­ca­ció­n.

Es MUY chi­qui­to y rá­pi­do, eso sí.

Ho­nes­ta­men­te, es útil pa­ra al­guien? No creo. Me sor­pren­de que al­go que es­cri­bí en 1996 to­da­vía fun­cio­ne? Mu­cho­!.


Contents © 2000-2024 Roberto Alsina