Category Archives: .plan - Page 2

HTTP Codes

http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

http://savanttools.com/test-http-status-codes

pyCNPJ: CNPJ para Python

Segue como uti­lizar o pyCNPJ.

Quero gerar um CNPJ valido.

> from pycnpj import CNPJ
> x = CNPJ()

O seu objeto ja’ ira’ ser cri­ado com um CNPJ valido.

Quero val­i­dar um CNPJ.

> from pycnpj import CNPJ
> x = CNPJ('67.923.223/6782-38')
> y = CNPJ('67923223678238')
> x.valid()
True
> y.valid()
True

Quero com­parar dois CNPJs.

> from pycnpj import CNPJ
> x = CNPJ('67.923.223/6782-38')
> y = CNPJ('67923223678238')
> z = CNPJ('12345678901234')
> x.__eq__(y)
True
> x.__eq__(z)
False

Quero usar ape­nas os numeros (tipo int) do CNPJ.

> from pycnpj import CNPJ
> x = CNPJ('67.923.223/6782-38')
> int(x)
67923223678238L

Quero usar o CNPJ com formatacao.

> from pycnpj import CNPJ
> x = CNPJ('67923223678238')
> str(x)
'67.923.223/6782-38'

Uti­lize, ajude e mel­hore o pyC­NPJ.  http://bitbucket.org/umgeher/pycnpj

pyCNPJ

Criei um val­i­dador e ger­ador de CNPJ. Estou lidando com isso agora e sen­tir falta de um objeto sim­ples que valide CNPJ em python. Pub­lico ele usando a “FreeBSD License” (style) e hospedando o Bit­Bucket (nao gosto do github).

Mais tarde devo escr­ever como usar, muito sim­ples, porem tenho de escrever.

http://bitbucket.org/umgeher/pycnpj

DreamPie

Peo­ple, check this python shell! DreamPie. Very nice, if you’re using stack­less or jython, it’s works just fine!

Fea­tures:

  • DreamPie fea­tures a new con­cept for an inter­ac­tive shell: the win­dow is divided into the his­tory box, which lets you view pre­vi­ous com­mands and their out­put, and the code box, where you write your code. This allows you to edit any amount of code, just like in your favorite edi­tor, and exe­cute it when it’s ready. You can also copy code from any­where, edit it and run it instantly.
  • The Copy code only com­mand will copy the code you want to keep, so you can save it in a file. The code is already for­mat­ted nicely with a four-space indentation.
  • Fea­tures auto­matic com­ple­tion of attrib­utes and file names.
  • Auto­mat­i­cally dis­plays func­tion argu­ments and documentation.
  • Keeps your recent results in the result his­tory, for later user.
  • Can auto­mat­i­cally fold long out­puts, so you can con­cen­trate on what’s important.
  • Lets you save the his­tory of the ses­sion as an HTML file, for future ref­er­ence. You can then load the his­tory file into DreamPie, and quickly redo pre­vi­ous commands.
  • Auto­mat­i­cally adds paren­the­ses and option­ally quotes when you press space after func­tions and meth­ods. For exam­ple, exec­file fn auto­mat­i­cally turns into execfile(“fn”).
  • Sup­ports inter­ac­tive plot­ting with mat­plotlib. (You have to set “inter­ac­tive: True” in the mat­plotli­brc file for this to work.)
  • Sup­ports Python 2.5, 2.6, 2.7, Jython 2.5, Iron­Python 2.6 and Python 3.1.
  • Works on Win­dows, Linux and Mac. (Mac sup­port requires MacPorts.)
  • Extremely fast and responsive.

Changes in VCNews

Mor­gen­stern saw some crazy and huge python process in this week. The PID has about 2GB of ram! Yeap. Something’s wrong. Well… no more.

  • threads with new setup. If some thread don’t find one node for  process, will just self divide in lit­tle threads and runs in the place.
  • wid­get “tiny url”
  • wid­get (bigGeneric)
  • new home (new menu, old footer)
  • api for cre­ate tiny url
  • api for open tiny url
  • bet­ter node’s control
  • bet­ter task list

VCNews’ engine & apache rewrite

Today I cre­ated some new fea­tures in VCNews’ engine.

  • Upro­file sync. Now every sin­gle twit­ter and facebook’s pro­file will auto sign up with Uprofile’s account.
  • Word­Press reader
  • Yahoo! news reader
  • con­sole “panel” con­trol. I don’t like to view logs using web browser or ssh shell at “far away” servers, with this con­sole app I can apply all regexp/grep rules than I want or, bet­ter, view logs at my local Emacs. OK this is not an Engine’s stuff, but I’d cre­ate some API to that works. Mmm, yeah… It’s runs using Upro­file authentication.

Apache Rewrite

Just a few things to remember.

Reg­u­lar Expres­sion Syntax

  • ^ start of string
  • $ end of string
  • . any sin­gle character
  • (a|b) a or b
  • (…) group sec­tion
  • [xyz] item in range (x or y or z)
  • [^xyz] not in range (not x or y or z)
  • x? 0 or one of x
  • x* 0 or more of x
  • x+ 0 or more of x
  • x{3} exactly 3 of x
  • x{3,} 3 or more of x
  • x{3,6} between 3 and 6 of x
  • !(pat­tern) apply rule when URL does not match pattern

VCNews and Links

Noth­ing new in VCNews’ engine. We’re cre­at­ing wire­frame for some ideas come in or changes some fea­tures in engine.

==

I’ve an idea to cre­ate some­thing fast and sim­ple for save my book­marks (and time). I’ve used deli­cious until Opera Book­marks came with Opera Link, an awe­some and sim­ple ser­vice to sync your data, book­marks, typed history/searches, notes and speed dial. The first solu­tion, I dis­like so much. It’s not a sim­ple idea (my opin­ion). Well, I’d cre­ate this (http://links.umgeher.mitgnu.com/) app. I add book­marks by con­sole app, writed in python, and Emacs. It’s sim­ple, wrote in elisp (M-x addlink). Was about 15 min­utes to cre­ate this app (web front-end, console/python app and emacs mod­ule) and I’ll cre­ate more features.

VCNews e Performance

Estou real­mente empen­hado no pro­jeto VCNews (apelido). Esta’ muito inter­es­sante desen­volver esse pro­jeto, a quan­ti­dade de infor­ma­cao col­ida e manip­u­lada e’ real­mente grande. Nao esta­mos ape­nas lidando com Twit­ter mais. E so’ o Twit­ter gera muita, mas muita infor­ma­cao para ser manip­u­lada. O que e’ muito bacana, tra­bal­har em algo que tem ser performatico.

  • drive do twit­ter 100% ok com as novas regras da api deles
  • manip­u­la­cao de usuar­ios, sta­tus e tags do twit­ter melhorada
  • geren­ci­a­mento interno de tags e links funcionando
  • agru­pa­mento de instru­coes no drive de banco. Toda oper­a­cao feita no VCNews nao ira’ na mesma hora ao banco de dados.  Recurso novo do UDB. Depois falo sobre isso.
  • come­cei a manip­u­la­cao de noti­cias como Yahoo! News

E para isso fun­cionar a plataforma (Uni­verse) teve de ser mel­ho­rada, o que foi muito bom. Podemos con­tar agora com Thread­ings mel­ho­radas e com auto-balanceamento de carga.

UDB tambem foi mel­ho­rado. Para resumir, ele cria uma lista de instru­coes para dar ao banco de dados que ele esta’ conec­tado, por exem­plo o MySQL (o que usamos no VCNews), e cria um “mock” para alguma busca ou qual­quer outra instru­cao que dev­era’ trazer aquele dado. Com isso usamos menos carga na rede com o banco de dados e ao mesmo tempo, fazer um insert ou select para cada view/acao nao me parece muito inteligente se podemos deixar em um processo mais rapido.

Per­for­mance

Sou a favor de per­for­mance sem­pre no max­imo pos­sivel. Para mim per­for­mance nao e’ ape­nas ter o resul­tado mais rapido, mas tambem usar menos recur­sos, ou seja… Economizar.

Menos uso da CPU, faz com que adi­ante a entrada do modo ocioso, sal­vando ai alguns watts. Imag­ine isso em uma grande escala. Voce esta’ sal­vando tempo e din­heiro. Ate’ mesmo em um note­book. Esses “watts” econ­o­miza­dos serao a difer­enca entre acabar a bate­ria em 4 horas ou em 4 horas e 30 min­u­tos, por exemplo.

Algu­mas coisas que gosto de comen­tar sobre isso:

  • Evi­tar polling. Serio pes­soal. Polling e’ ruim. OK, exis­tem algu­mas coisas que com polling e’ “mel­hor” de se fazer. Porem o abuso desta tec­nica e’ real­mente hor­rivel para per­for­mance. Tente fazer algo com msgs. Um exem­plo de soft­ware que abusa ou abusava deste recurso, o gksu. Ele chega a checar mil vezes por segundo se exis­tem dados em um pipe. Meio exager­ado nao e’?
  • Agru­par timers sem­pre que pos­sivel e usar um para  realizar varias tare­fas. Nunca um timer para cada sta­tus ou alguma coisa que voce esta’ usando. Assim voce econ­o­miza em chamadas no cpu deixando o ocioso por mais tempo.
  • Pen­sar em usar lin­gua­gens de alto nivel. Elas sao mais rap­i­das no desen­volvi­mento, porem a per­for­mance e’ muito abaixo de uma lin­guagem como C. Nao estou de olho no “quadro de luz” de cada lin­guagem script. Porem pre­fira Python a Ruby. Java e Visual C#… O que falar destes. Ultima vez que dei uma olhada, as duas ficavam bem pare­ci­das. E gas­tavam mais que os testes usando python e ruby juntos.

Um cpu ocioso con­some em media 1 watt em media, claro depende do fabricante/modelo,  em carga total leva uma media de 34watts e em usa meia carga tem uma media de 24watts. Se voce levar para cal­cu­lar algum processo em 1 segundo com poten­cia max­ima do cpu voce ira’ usar 34watts e se fizer em metade da carga levara’ o dobro de tempo, ou seja… 2 x 24 = 48watts.

Gos­tou do assunto? Um site que recomendo e’ http://www.lesswatts.org

Enlightenment E17

FreeBSD with E17

Meu Desk­top

Depois de algum tempo com o Win­dow­maker, voltei para o Enlight­en­ment. Quero deixar ele como padrao por alguns itens:

  • o E17 nao e’ ape­nas um X11 win­dow man­ager, ele e’ uma plataforma de desen­volvi­mento com oti­mas libs de alta qualidade
  • leve. OK nao e’ tao leve quanto o Win­dow­maker que estava usando, porem e’ muito leve
  • pratico
  • vir­tual desk­top sep­a­ra­dos por monitores
  • BSD License

O vir­tual desk­top por mon­i­tores e’ muito bom e recomendo a todos que querem ter real­mente uma boa prat­ica com 2 ou mais mon­i­tores. Quando voce esta’ usando um twin­view e muda de work­space, os dois mon­i­tores vao para aquela work­space. Agora imag­ina que ape­nas 1 mon­i­tor vai para a work­space que voce quer e o outro con­tinua onde voce man­dou. Isso e’ pratico. Quando usava o E17, tinha uma seguinte con­fig­u­ra­cao. O Emacs ficava como fixo na work­space 0,0 e meus ter­mi­nais de log, debug, teste e resul­ta­dos ficavam na 1,0. Meu nave­g­ador (Opera) junto com cliente de irc e jabber/xmpp/gtalk na 0,0. Quando que­ria ver os logs/debug/resultados man­dava o meu mon­i­tor da esquerda para a 1,0 com o sim­ples comando de ALT+F2. Meu Emacs con­tin­u­ava no meu mon­i­tor dire­ito e ao mesmo tempo podia ver onde o debug parou, resul­ta­dos de compilacao/exec e tudo mais. Isso e’ um exem­plo sim­ples. Voce pode trazer uma janela para uma work­space ou fazer com que a work­space passe a ser con­tro­lada pelo mon­i­tor dese­jado. Depois que voce se acos­tuma, real­mente sente falta.

E17

Desk­top Utils

Antiga­mente eu escrevia meus utils, na epoca eu uti­lizava o After­Step e escrevia os “desk utils” em LISP, ja’ que pas­sava real­mente 90% do tempo no Emacs ou mais. Porem depois de um tempo e alguns back­ups total­mente joga­dos fora, nao tenha back­ups em midia como cds/dvds pois sao hor­riveis, parei de usar/escrever eles.

E a uns dias atras eu come­cei a pen­sar em escr­ever utils  nova­mente, uti­lizando Python com py-wmdockapps, porem pen­sei em mudar de ambi­ente. OK adoro o padrao step, mas real­mente esta’ “desat­u­al­izado” algu­mas libs que uso nao exis­tem mais (no con­trib a mais de dois anos) e nao estao adap­tadas a conec­tar com “soft­wares KDE4”. Com isso lem­brei do E17 e como ja’ tinha feito algu­mas coisas com o codigo fonte deste super WM, decidi em voltar para ele e uti­lizar as libs novas dele fazendo alguns bons Desk­top Utils para mim. Estou por­tando um antigo desk utils que escrevi e ainda uso de tirar screen­shots de uma janela ape­nas e postar arquivos no paste­bin. Porem desta vez penso em lib­erar os que tiverem real­mente uma fun­cao que nao seja muito cus­tom para mim ao mundo sobre a BSD.

Navegadores 2

Mais uma brin­cadeira com CSS3… E como ficou no Opera.

Opera

Opera

Gostei assim… O que o pes­soal acha?