Reading time: < 1 minute A vegades a l'accedir per SSH a un servidor necessitem connectar amb la sessió DBUS que té iniciat un usuari, la forma de fer-ho és tan senzilla com això:
eval `/usr/bin/dbus-launch –auto-syntax`
Reading time: < 1 minute A vegades a l'accedir per SSH a un servidor necessitem connectar amb la sessió DBUS que té iniciat un usuari, la forma de fer-ho és tan senzilla com això:
eval `/usr/bin/dbus-launch –auto-syntax`
Reading time: 2 – 2 minutes
Feia massa temps que no jugava amb DBUS i les he passat una mica negres aquesta tarda intentant recordar com funcionava tot plegat. La qüestió de base és molt senzilla, com que el codi parla per si mateix. Simplement adjuntaré els dos codis.
Receptor de senyals DBUS, rep la senyal amb format ‘string’ i la mostra:
#!/usr/bin/env python #--encoding: UTF-8-- """ entra en un loop esperant senyals emeses a: dbus_interface = cat.oriolrius.prova object_path = "/cat/oriolrius/prova/senyal" amb nom de senyal: 'estat' quan es rep la senyal la mostrem """ import gobject import dbus import dbus.mainloop.glib def mostra(m): print m dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) bus = dbus.SessionBus() bus.add_signal_receiver( mostra, path="/cat/oriolrius/prova/senyal", dbus_interface="cat.oriolrius.prova", signal_name = "estat" ) loop = gobject.MainLoop() loop.run()
Emisor de senyals DBUS, envia una senyal de tipus ‘string’ amb el contingut ‘hola’:
#!/usr/bin/env python #--encoding: UTF-8-- """ Emet una senyal a dbus, al bus 'session' amb destí: dbus_interface = cat.oriolrius.prova object_path = "/cat/oriolrius/prova/senyal" amb nom de senyal: 'estat' """ import gobject import dbus from dbus.service import signal,Object import dbus.mainloop.glib class EmetSenyal(Object): def __init__(self, conn, object_path='/'): Object.__init__(self, conn, object_path) @signal('cat.oriolrius.prova') def estat(self,m): global loop print("senyal emesa: %s" % m) gobject.timeout_add(2000, loop.quit) dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) loop = gobject.MainLoop() bus = dbus.SessionBus() o = EmetSenyal(bus,object_path='/cat/oriolrius/prova/senyal') o.estat('hola') loop.run()
Usant el ‘dbus-monitor’ es pot veure la traça del missatge:
signal sender=:1.634 -> dest=(null destination) serial=2 path=/cat/oriolrius/prova/senyal; interface=cat.oriolrius.prova; member=estat string "hola"
Reading time: 2 – 2 minutes
Avui he descobert microfeed, es tracta d’una implementació d’arquitectura client-servidor que permet accedir a diferents fonts d’informació d’internet publicades via feeds. Potser el que més gràcia m’ha fet és que si volem usar aquesta llibreria per programar, per exemple, una GUI que permeti gestionar aquestes dades l’accés es fa a través de DBUS. És a dir, per un costat microfeed recull les dades de les seves fonts originals (twitter, facebook, identi.ca, etc) i la GUI es comunica amb la llibreria via DBUS. De fet, el que realment m’ha fet gràcia és que això és el que fa Telepathy però encomptes de fer-ho contra feeds ho fa contra jabber/XMPP, MSN, IRC, SIP, etc.
Una forma molt visual d’entendre que fa microfeed és amb aquest esquema:
En principi la única GUI que he trobat que usa aquest backend és Mauku que és una aplicació pensada per Maemo.
Amb el primer cop d’ull a la llibreria no he arribat a trobar com ho fa per rebre els feeds dels llocs com twitter i facebook, imagino que ho farà via polling. Seria interessant saber si també ho pot fer per PubSub. Ja que segons l’esquema només tinc la sensació que el PubSub s’usa via DBUS. Si algún dia em poso a treballar amb la llibreria espero aclararir-ho.
Reading time: 3 – 4 minutes
Abans que res una petita introducció a: Què és Telepathy?
Es tracta d’un framework que unifica diferents sistemes de comunicació en temps real. Usa DBUS com a interficie de comunicació entre aplicacions.
Avantatges de Telepathy:
El glosari de termes, en poques paraules el que cal tenir en ment i recordar quan parlem de Telepathy.