Ir al contenido principal

Ralsina.Me — El sitio web de Roberto Alsina

Publicaciones sobre open source (publicaciones antiguas, página 4)

Nuevo proyecto: marave, un editor de textos relajado

Ma­ra­ve (na­da, in gua­ra­ní) es un edi­tor de tex­tos re­la­ja­do. Su me­ta es que te pue­das con­cen­trar en es­cri­bi­r, li­bre de dis­trc­cio­nes vi­sua­le­s.

Es­tá es­cri­to en Py­Q­t, por lo que de­be­ría fun­cio­nar en to­das las pla­ta­for­mas im­por­tan­tes, y es­tá li­be­ra­do ba­jo la li­cen­cia GPL­v2, así que es so­ftw­re li­bre.

Se pue­de en­con­trar el SVN ac­tua­li­za­do (no hay to­da­vía una ver­sión em­pa­que­ta­da) en http://­ma­ra­ve.­google­co­de.­com

Screens­ho­ts:

snapshot10snapshot9snapshot8

Sta­tus:

No es­tá ter­mi­na­do, pe­ro tie­ne es­to:

  • Se pue­­de edi­­tar tex­­to

  • In­­te­r­­faz mi­­ni­­ma­­lis­­ta, "e­­va­­nes­­cen­­te"

  • (O­p­­cio­­­na­­l) fee­­dba­­ck de au­­dio pa­­ra el te­­cla­­do

  • (O­p­­cio­­­na­­l) mú­­si­­ca re­­la­­jan­­te (re­­quie­­re in­­te­r­­ne­­t)

  • Se pue­­de pe­r­­so­­­na­­li­­zar el fo­n­­do, la ti­­po­­­gra­­fía, los co­­­lo­­­res y so­­­ni­­do­­s.

  • Co­­­rre­c­­tor or­­to­­­grá­­fi­­co (re­­quie­­re pyen­­chan­­t)

Tam­bién fal­tan al­gu­nas co­sas:

  • Bus­­car y Bus­­ca­­r/­­Ree­m­­pla­­zar no es­­tá he­­cho

  • Las pe­r­­so­­­na­­li­­za­­cio­­­nes no se gua­r­­dan

  • Fa­l­­ta li­m­­piar más la in­­te­r­­faz

  • No pi­­de gua­r­­dar cuan­­do cie­­rra

  • Gua­r­­da­­do au­­to­­­má­­ti­­co no es­­tá he­­cho

Y al me­nos un bug co­no­ci­do:

  • En wi­n­­do­­ws los wi­­dge­­ts no es­­tán bien ubi­­ca­­dos Arre­­gla­­do en SVN

Bre­ve his­to­ria:

Ha­ce unos días vi om­mw­ri­ter men­cio­na­do en un tweet o al­go si­mi­la­r.

Es­ta­ba pen­san­do "lin­do­", pe­ro una voz en mi ca­be­za me de­cía "e­so de­be ser fá­cil de ha­ce­r". Des­pués de to­do, la par­te di­fí­cil de crear un pro­gra­ma es ha­cer que ha­ga al­go, ¿no?

Bue­no, sí y no. Me las arre­glé pa­ra ha­cer al­go pa­re­ci­do en un día, pe­ro ha­cer que que­de exac­to co­mo yo quie­ro me vuel­ve lo­co :-)

python-keyring está muy bueno

Es­tá bue­no cuan­do un pro­gra­ma pue­de re­cor­dar la pa­ssword que le da­s.

Es me­jor cuan­do al­ma­ce­na esa pa­ssword de for­ma se­gu­ra. Sin em­bar­go, no es tri­vial ha­cer­lo si te im­por­ta que el pro­gra­ma sea multi pla­ta­for­ma.

O al me­nos no lo era has­ta que Kang Zhang es­cri­bió py­thon ke­y­ring, un mó­duo que abs­trae el me­ca­nis­mo de al­ma­ce­na­mien­to de cla­ves de KDE, GNO­ME, OSX y Win­do­ws (y tie­ne un par de ba­cken­ds con ar­chi­vos por las du­da­s).

¿Có­mo fun­cio­na?

Se ins­ta­la de la for­ma ha­bi­tua­l. Si no es­tá dis­po­n­ble pa­ra tu dis­tro­/­sis­te­ma ope­ra­ti­vo, usá ea­s­y_ins­ta­ll:

easy_install keyring

Tam­bién se pue­de ob­te­ner via mer­cu­ria­l:

hg clone http://bitbucket.org/kang/python-keyring-lib/

La API es la sim­pli­ci­dad mis­ma. Así se guar­da un se­cre­to:

import keyring
keyring.set_password('keyring_demo','username','thisisabadpassword')

Tal vez te mues­tre es­te diá­lo­go (o al­go si­mi­lar en otras pla­ta­for­ma­s):

keyring1

Y aquí es­tá la prue­ba de que se guar­dó co­rrec­ta­men­te (es el ad­mi­nis­tra­dor de cla­ves de KDE):

keyring2

¿Y có­mo re­cu­pe­ra­mos el se­cre­to?

import keyring
print keyring.get_password('keyring_demo','username')

Y fun­cio­na así:

$ python load.py
thisisabadpassword

Co­mo se pue­de ve­r, la API es tan fá­cil co­mo pue­de se­r. Has­ta eli­gió el ba­ckend KWa­llet au­to­má­ti­ca­men­te por­que es­toy en KDE!

Py­tho­n-ke­y­ring es un mó­du­lo que re­suel­ve un pro­ble­ma rea­l, así que un aplau­so pa­ra Kang Zhang y Ta­rek Zia­dé (que tu­vo la idea).

Lo más astuto que escribí

Mien­tras la leía me dí cuen­ta de al­gu­nas co­sas:

  • Tie­­ne ca­­si exa­c­­ta­­men­­te 5 años de pu­­bli­­ca­­da

  • Es tal vez lo más in­­te­­li­­gen­­te que es­­cri­­bí (aun­­que eso no sea mu­­cho de­­ci­­r)

A ve­ces pa­sa que uno tie­ne una idea y pue­de dar­le for­ma. Co­mo me pa­re­ce que rel­men­te es al­go no com­ple­ta­men­te es­tú­pi­do, de­ci­dí tra­du­cir­lo al cas­te­llano (es­ta­ba só­lo en in­glé­s) y "re­pu­bli­car­lo" ho­y.

Es so­bre pro­gra­ma­ció­n, es so­bre evo­lu­ció­n, y es­pe­ro que les gus­te Ser una bue­na ra­na de La­mar­ck.

Nueva app 24-horas (no tan) pronto: foley

Apli­ca­cio­nes 24-ho­ras son pro­yec­tos pe­que­ño­s, au­to­con­te­ni­do­s, don­de in­ten­to crear una apli­ca­ción de­cen­te y útil en 24 ho­ra­s.

El con­cep­to es que:

  1. Voy a pen­sar en es­­ta apli­­ca­­ción por un tie­m­­po.

  2. La voy a di­se­­ñar en mi ca­­be­­­za o en no­­­tas es­­cri­­ta­s.

  3. Voy a pro­­­gra­­mar des­­de ce­­ro, por 24 ho­­­ra­s.

  4. Eso no es un día sino 24 ho­­­ras de tra­­ba­­jo. Ya no pue­­do tra­­ba­­jar 24 ho­­­ras co­­­rri­­da­s.

La úl­ti­ma vez es­to no salió exac­ta­men­te co­mo que­ría pe­ro fue di­ver­ti­do y edu­ca­ti­vo (al me­nos pa­ram mí ;-) y el re­sul­ta­do es una apli­ca­ción que no es­tá mal!

En­ton­ce­s, que va a ser fo­le­y? Una apli­ca­ción pa­ra to­mar no­tas orien­ta­da a es­tu­dian­tes y pú­bli­co de con­fe­ren­cia­s.

En tu úl­ti­mo even­to ner­d, ¿no­tas­te que to­dos es­ta­ban usan­do una com­pu­ta­do­ra?

¿Y en qué es­ta­ban to­man­do no­ta­s? ¿vi? ¿kw­ri­te? ¿O­pe­nO­ffi­ce? Sea lo que sea, no es­tá pen­sa­do pa­ra usar­lo con es­te fi­n.

¿En­ton­ces que ha­ría fo­ley dis­tin­to? To­da­vía no lo sé pe­ro ten­go idea­s:

  1. Una fue­r­­te orien­­ta­­ción a lí­­nea de tie­m­­po. Ca­­da pá­­rra­­fo con fe­­cha y ho­­­ra.

  2. So­­­po­r­­te pa­­ra Twi­­tte­­r/I­­den­­ti­­ca. ¿Que­­rés ha­­cer un li­­ve blog de tus no­­­ta­s? Un cli­­ck.

  3. Mu­l­­ti­­me­­dia in­­co­r­­po­­­ra­­da.

    • ¿Gra­­­ba­­­cio­­­­­nes de au­­­dio­­­/­­­vi­­­deo si­n­­­cro­­­­­ni­­­za­­­das con las no­­­­­ta­s?

    • ¿I­­­má­­­ge­­­nes im­­­po­­­r­­­ta­­­das y agre­­­ga­­­das a la lí­­­nea de tie­­m­­­po?

  4. Si me dan un PDF con sli­­des, po­­­ner ca­­da sli­­de en el mo­­­men­­to ade­­cua­­do del his­­to­­­ria­­l.

  5. Pu­­bli­­ca­­ción sen­­ci­­lla en we­­b: en­­co­n­­trar una ma­­ne­­ra de po­­­ner es­­to en una pá­­gi­­na web fá­­ci­l­­men­­te (la idea es un cli­­ck).

Lle­vo 10 mi­nu­tos pen­san­do en es­to, pe­ro le veo po­ten­cia­l.

La ma­la no­ti­cia es... ten­go una pi­la de tra­ba­jo que me da de co­me­r. Así que es­to re­cién se va a po­der en ene­ro. Igual que­ría pos­tear­lo pa­ra ob­te­ner res­pues­ta en la eta­pa de pla­nea­ció­n.

En­ton­ce­s, ¿al­gu­na idea?

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.


Contents © 2000-2023 Roberto Alsina