Ir al contenido principal

Ralsina.Me — El sitio web de Roberto Alsina

A simple memcache memoizer for python>=2.2

Just a snip­pet of code be­cause ev­ery once in a while I need some­thing like the clas­sic mem­o­ize dec­o­ra­tor but am work­ing on a Cen­tOS 4 bix (with python 2.3!)

I am still test­ing it, and am not even sure it re­al­ly work­s, but it should be close.

cache=memcache.Client(['127.0.0.1:11211'], debug=0)
cachetimeout=30

def memoize(fun):
    def inner(*args, **kwargs):
        key=repr(fun)+repr(args)+repr(kwargs)
        cached = cache.get(key)
        if cached is None:
            val = fun(*args, **kwargs)
            print "Setting: ",key, "to: ",val
            cache.set(key,val,cachetimeout)
            return val
        return cached
    return inner

And lat­er in­side a class:

def myfun(self,arg):
   :
   :
myfun=memoize(myfun)

And that's it. The ba­sic idea I stole from a blog who was in­spired by a Paul Gra­ham book. It can be triv­ial­ly turned in­to a dec­o­ra­tor, of course (but then on­ly works on 2.4 and lat­er).

Mi empresa tiene una página web

Por aho­ra só­lo en es­pa­ño­l, pe­ro eso cam­bia en una se­ma­na, más o me­no­s.

Fue un tra­ba­jo in­te­re­san­te, por­que es­ta­mos usan­do tres apli­ca­cio­nes web en tres len­gua­ges (ph­p/­p­y­tho­n/­per­l) y que­ría dar­le a los usua­rios un úni­co lo­gin pa­ra las tres.

Fue un es­fuer­zo, pe­ro fué edu­ca­ti­vo :-D

En otras no­ti­cia­s, hay un li­nk "Ti­pi­t" en ca­da pos del blo­g. ¿Pa­ra qué sir­ve? Pa­ra dar­me di­ne­ro. Y sa­len lis­ta­dos co­mo "gen­te que le dió di­ne­ro a Ro­ber­to" (a­pe­nas ha­ya al­guien ;-)

Buenas noticias: Linux revive hardware! Malas noticias: no deberia!

Es­te post es pa­ra reír­se un ra­ti­to. Es­te no de­be­ría ser su ser­ve­r. Es una so­lu­ción tem­po­ral de­bi­do a mul­ti­ples fa­llas si­mul­ta­neas de har­dwa­re. Es­ta es una em­pre­sa gran­de y bien ad­mi­nis­tra­da, y es­ta si­tua­ción irre­gu­lar se va a re­sol­ver pron­to. Y de to­das for­mas fun­cio­na.

Co­mo sa­be­n, Li­nux pue­de ha­cer es­te ti­po de tra­ba­jo sin gran­des re­que­ri­mien­tos de har­dwa­re. Des­pués de to­do, só­lo ne­ce­si­ta ma­ne­jar unos 3 Mbps de da­to­s, y es­te equi­po tie­ne 2GB de RA­M, así que hay mu­cho lu­gar pa­ra un ca­ché rá­pi­do.

Así que ten­ga­mos un po­co de bue­na­s/­ma­las no­ti­cia­s.

Bue­nas no­ti­cia­s: Es un ver­da­de­ro ser­vi­dor IBM! Ma­las no­ti­cia­s: Es un IBM Ne­tfi­ni­ty 5000 (mo­de­lo 3Ry)!

2110.0.Imagen011

Aquí hay un po­co de in­for­ma­ción téc­ni­ca de IBM.

Bue­nas no­ti­cia­s: Tie­ne 2 CPUs! Ma­las no­ti­cia­s: Son dos Pen­tium II de 450­Mh­z.

Bue­nas no­ti­cia­s: so­por­ta dis­cos SCSI ho­t-swa­p! Ma­las no­ti­cia­s: no hay dis­cos pa­ra esa con­tro­la­do­ra, así que va­mos a usar es­te dis­co IDE PA­TA de 8GB!

2108.0.Imagen013

Y lo va­mos a de­jar ahí sen­ta­do jun­to a la lec­to­ra de CD, jun­to al agu­je­ro adon­de irían los dis­cos SCSI.

Ma­las no­ti­cia­s: tien­de a re­ca­len­tar­se! Bue­nas no­ti­cia­s! te­ne­mos có­mo man­te­ner el ca­fé ti­bio!

2109.0.Imagen014

Playing with GIT

The guys at http://github.­com have been nice enough to add me to their be­ta pro­gram, so I am do­ing a lit­tle project there, to fig­ure out if I like git or not.

Since ev­ery­one raves about it, I sup­pose I will, and then will have to turn my nu­mer­ous google­code SVN re­pos in­to git mir­rors or what­ev­er the cor­rect ter­mi­nol­o­gy is.


Contents © 2000-2023 Roberto Alsina