Ir al contenido principal

Ralsina.Me — El sitio web de Roberto Alsina

Por esto me gusta tener un blog, aparte, estoy **viejo**.

visitors1

A ve­r: Bél­gi­ca, Ho­lan­da, USA, Tur­quía, Bra­si­l, Tai­lan­dia, Aus­tria.

Yo sé que la ma­yo­ría ya no se im­pre­sio­na con es­ta cla­se de co­sas hoy en día, pe­ro soy lo bas­tan­te vie­jo co­mo pa­ra ha­ber com­pra­do si­tios ftp en CD (La co­lec­ción In­fo­ma­gi­c!).

En 1994 fuí una de las pri­me­ras 10 per­so­nas o al­go así en te­ner mail en mi uni­ver­si­dad (de he­cho, co­mo te­nía root, po­dría ha­ber si­do el pri­me­ro ;-) y la web era un de­sier­to­.. no ha­bía ni pá­gi­nas por­no!

Por eso, sa­ber que mi blog tie­ne al­gún egui­do­r, aun­que sean un pu­ña­di­to de gen­te que le in­te­re­sen mis ner­de­za­s, y que ya lle­va ca­si 10 años, y que vie­ne de un mo­men­to en que ni se la­ma­ban blogs... me sien­to ra­ro.

Es­te blog es una de las co­sas pun­tua­les que he he­cho más tiem­po.

  • Lle­­vo 4 años de ma­­ri­­do

  • Lle­­vo 3 de pa­­pá

  • Es­­tu­­ve ac­­ti­­vo en KDE 4 años

  • Mi em­­pre­­sa tie­­ne al­­go co­­­mo 2 o 3 años

Por su­pues­to que hay co­sas ob­vias o in­de­fi­ni­das que lle­vo más tiem­po ha­cien­do:

  • Lle­­vo 15 años "me­­ti­­do" en so­­­ftwa­­re li­­bre

  • Lle­­vo 18 años tra­­ba­­jan­­do con co­m­­pu­­ta­­do­­­ras

  • Lle­­vo 30 años pro­­­gra­­man­­do (e­m­­pe­­cé en pa­­pe­­l, ki­­d­s!)

  • Lle­­vo 38 inha­­lan­­do y exha­­lan­­do re­­gu­­la­r­­men­­te

Pe­ro una co­sa es­pe­cí­fi­ca, que la pue­da se­ña­lar y de­cir "e­so es mío, yo lo hi­ce"? Es­te blog de­be ser lo más lon­ge­vo.

No me veo no te­nién­do­lo. Me veo no po­nien­do na­da un mes o do­s, lo ha­go ca­da tan­to, pe­ro ¿no te­nien­do un blog? No lo veo.

Voy pro­ban­do co­sas nue­va­s, no es una co­sa muer­ta.

Me en­can­ta ha­cer screen­cas­ts (gra­cias a qt-­re­cord­m­y­desk­top y you­tu­be­). Dis­fru­to twi­tter y iden­ti.­ca.

Así que es­te post di­va­gan­te es mi des­en­fo­ca­da ma­ne­ra de de­cir que lo que me gus­ta de te­ner un blog es que al­guien lo lee. Así que me pon­go a ha­cer al­go que val­ga la pe­na blo­guear ;-)

rst2pdf previewer: un nuevo feature

Así que hi­ce un fea­tu­re nue­vo ho­y.

Ha­ce un día o do­s, mi edi­tor em­pe­zó a mos­trar una ba­rra ama­ri­lla re­sal­tan­do la lí­nea ac­tua­l.

En­ton­ces pen­sé... ¿no se­ría más útil te­ner una ba­rra si­mi­lar que te si­ga en el PDF?

De esa ma­ne­ra, cuan­do es­tás en una de­ter­mi­na­da lí­nea, in­me­dia­ta­men­te se pue­de ver adon­de es­tás en la sali­da. Lin­do, no?

Acá hay un vi­deo mos­trán­do­lo:

La­men­ta­ble­men­te no es per­fec­to, y pro­ba­ble­men­te nun­ca lo sea por cul­pa de al­gu­nas li­mi­ta­cio­nes de do­cu­til­s, pe­ro es­tá bas­tan­te bue­no!

More fun with rst2pdf, poppler and PyQt

És­te es un vi­deo de co­mo se ve aho­ra, des­pués de afei­tar al­gu­nos yaks (per­dón por mi in­glé­s, Es­cri­bo mu­cho in­glé­s, pe­ro nun­ca ha­blo in­glé­s. Y per­dón por no ha­cer una ver­sión en cas­te­lla­no­):

Co­mo pue­den ve­r, la apli­ca­ción bá­si­ca es­tá más o me­nos com­ple­ta, aún si le fal­tan las "a­me­ni­da­des" que ha­rían que val­ga la pe­na usar­la (co­mo bus­ca­r? Y guar­da­r? ;-)

Tie­ne un gran pro­ble­ma: no pue­do pu­bli­car­la to­da­vía.

¿Por­qué? Por­que ne­ce­si­to usar po­ppler des­de Py­Q­t, y el có­di­go que en­contré pa­ra ha­cer­lo no tie­ne li­cen­cia (ver el có­di­go).

Es­toy tr­tan­do de con­tac­tar al au­tor (Ra­jeev J Se­bas­tian), así que tal vez ha­ya no­ve­da­des pron­to.

Ape­nas se acla­re ese pun­to, el wi­dget PDF es un post en sí mis­mo, por­que es­tá bue­no, si lo pue­do de­cir yo mis­mo.

EX­TRA: Ese bin­ding aho­ra es­tá ba­jo li­cen­cia MI­T, gra­cias a Ra­jeev Se­bas­tian!

Afeitando Yaks: septiembre 22, 2009

Es­te yak es­tá que­dan­do bo­ni­to.

Pa­ra mi se­gun­da pi­la de pe­lo de yak: con­ver­tir QPlain­TextE­dit en un wi­dget de edi­ción acep­ta­ble pa­ra pro­gra­ma­do­res. A me­di­da que el tra­ba­jo avan­za­ba en mi edi­tor de rs­t2­pdf (de pa­so: ne­ce­si­to un nom­bre!), se vol­vió evi­den­te que la par­te de la in­ter­fa­ce en la que el usua­rio pa­sa más tiem­po es un sim­ple par de edi­to­res de tex­to.

Qt vie­ne con un wi­dget pa­ra eso, por su­pues­to, lla­ma­do QPlain­TextE­dit. Sin em­bar­go, es mu­y, muy ma­lo pa­ra pr­pgra­ma­do­res.

És­tos son mis re­que­ri­mien­tos mí­ni­mo­s:

  1. Re­s­al­­ta­­do de si­n­­ta­­xis pa­­ra dos len­­gua­­je­s: res­­tru­c­­tu­­red text y ja­­va­s­­cri­p­­t. Es­­te yak ya es­­tá afei­­­ta­­do.

  2. Nú­­me­­ros de lí­­nea.

  3. Re­s­al­­tar la lí­­nea ac­­tua­­l.

  4. Re­s­al­­tar erro­­­res cuan­­do tie­­ne sen­­ti­­do (por eje­m­­plo, en el sty­­le­s­hee­­t)

Una for­ma de lo­grar es­to se­ría des­car­tar QPlain­TextE­dit y usar QS­ciS­cin­ti­lla que es la ba­se pa­ra el edi­tor de có­di­go en eric y (en otra ver­sió­n) pa­ra sci­te.

Sin em­bar­go, su­fro un bug en QS­ciS­cin­ti­lla, don­de no pue­do es­cri­bir ¡ca­rac­te­res con acen­to­!. Sin eso el cas­te­llano es im­po­si­ble, y el bug pa­re­ce te­ner co­mo dos año­s, así que ... no va.

¿En­ton­ce­s, lo­gré esos fea­tu­res? ¡Sí!

Acá es­tá el vi­deo (sí, me vol­ví adic­to a ha­cer es­to­s, ya que qt-­reord­m­y­desk­top lo ha­ce de­ma­sia­do fá­cil ;-):

La ba­se pa­ra es­to es el ejem­plo Co­de Edi­tor que vie­ne con Qt mis­mo, más un po­qui­to de tra­ba­jo.

Pri­me­ro, por­té Co­de Edi­tor de C++ a Py­tho­n, que fué fá­cil y lle­vó so­lo unos mi­nu­to­s. Eso se en­car­gó de los pun­tos 2 y 3.

En­ton­ces en­chu­fé el re­sal­ta­do de sin­ta­xis, que era el pun­to 1.

¿Y que pa­só con la va­li­da­ción de ja­vas­cript en tiem­po rea­l? Fá­cil usan­do sim­ple­j­so­n. Hay que co­rrer es­to ca­da vez que se quie­re va­li­dar (yo lo co­rro en ca­da te­cla que se pre­sio­na).

Hay que reem­pla­zar se­l­f.ui.s­ty­le.­to­Plain­Text por el nom­bre de tu wi­dge­t, por su­pues­to:

def validateStyle(self):
    style=unicode(self.ui.style.toPlainText())
    #no point in validating an empty string
    if not style.strip():
        return
    pos=None
    try:
        json.loads(style)
    except ValueError, e:
        s=str(e)
        print s
        if s == 'No JSON object could be decoded':
            pos=0
        elif s.startswith('Expecting '):
            pos=int(s.split(' ')[-1][:-1])
        else:
            print 'UNKNOWN ERROR'

    # This makes a red bar appear in the line
    # containing position pos
    self.ui.style.highlightError(pos)

highlightError(pos) almacena pos en el Code Editor, qie dibuja una barra roja en esa linea, de la misma forma que resalta la linea actual.

Y eso es to­do. És­te es el có­di­go pa­ra co­dee­di­to­r.­py


Contents © 2000-2023 Roberto Alsina