Category Archives: .plan - Page 2
HTTP Codes
pyCNPJ: CNPJ para Python
Segue como utilizar o pyCNPJ.
Quero gerar um CNPJ valido.
> from pycnpj import CNPJ > x = CNPJ()
O seu objeto ja’ ira’ ser criado com um CNPJ valido.
Quero validar um CNPJ.
> from pycnpj import CNPJ
> x = CNPJ('67.923.223/6782-38')
> y = CNPJ('67923223678238')
> x.valid()
True
> y.valid()
True
Quero comparar 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 apenas 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'
Utilize, ajude e melhore o pyCNPJ. http://bitbucket.org/umgeher/pycnpj
pyCNPJ
Criei um validador e gerador de CNPJ. Estou lidando com isso agora e sentir falta de um objeto simples que valide CNPJ em python. Publico ele usando a “FreeBSD License” (style) e hospedando o BitBucket (nao gosto do github).
Mais tarde devo escrever como usar, muito simples, porem tenho de escrever.
DreamPie
People, check this python shell! DreamPie. Very nice, if you’re using stackless or jython, it’s works just fine!
Features:
- DreamPie features a new concept for an interactive shell: the window is divided into the history box, which lets you view previous commands and their output, and the code box, where you write your code. This allows you to edit any amount of code, just like in your favorite editor, and execute it when it’s ready. You can also copy code from anywhere, edit it and run it instantly.
- The Copy code only command will copy the code you want to keep, so you can save it in a file. The code is already formatted nicely with a four-space indentation.
- Features automatic completion of attributes and file names.
- Automatically displays function arguments and documentation.
- Keeps your recent results in the result history, for later user.
- Can automatically fold long outputs, so you can concentrate on what’s important.
- Lets you save the history of the session as an HTML file, for future reference. You can then load the history file into DreamPie, and quickly redo previous commands.
- Automatically adds parentheses and optionally quotes when you press space after functions and methods. For example, execfile fn automatically turns into execfile(“fn”).
- Supports interactive plotting with matplotlib. (You have to set “interactive: True” in the matplotlibrc file for this to work.)
- Supports Python 2.5, 2.6, 2.7, Jython 2.5, IronPython 2.6 and Python 3.1.
- Works on Windows, Linux and Mac. (Mac support requires MacPorts.)
- Extremely fast and responsive.
Changes in VCNews
Morgenstern 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 little threads and runs in the place.
- widget “tiny url”
- widget (bigGeneric)
- new home (new menu, old footer)
- api for create tiny url
- api for open tiny url
- better node’s control
- better task list
VCNews’ engine & apache rewrite
Today I created some new features in VCNews’ engine.
- Uprofile sync. Now every single twitter and facebook’s profile will auto sign up with Uprofile’s account.
- WordPress reader
- Yahoo! news reader
- console “panel” control. I don’t like to view logs using web browser or ssh shell at “far away” servers, with this console app I can apply all regexp/grep rules than I want or, better, view logs at my local Emacs. OK this is not an Engine’s stuff, but I’d create some API to that works. Mmm, yeah… It’s runs using Uprofile authentication.
Apache Rewrite
Just a few things to remember.
Regular Expression Syntax
- ^ start of string
- $ end of string
- . any single character
- (a|b) a or b
- (…) group section
- [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
- !(pattern) apply rule when URL does not match pattern
VCNews and Links
Nothing new in VCNews’ engine. We’re creating wireframe for some ideas come in or changes some features in engine.
==
I’ve an idea to create something fast and simple for save my bookmarks (and time). I’ve used delicious until Opera Bookmarks came with Opera Link, an awesome and simple service to sync your data, bookmarks, typed history/searches, notes and speed dial. The first solution, I dislike so much. It’s not a simple idea (my opinion). Well, I’d create this (http://links.umgeher.mitgnu.com/) app. I add bookmarks by console app, writed in python, and Emacs. It’s simple, wrote in elisp (M-x addlink). Was about 15 minutes to create this app (web front-end, console/python app and emacs module) and I’ll create more features.
VCNews e Performance
Estou realmente empenhado no projeto VCNews (apelido). Esta’ muito interessante desenvolver esse projeto, a quantidade de informacao colida e manipulada e’ realmente grande. Nao estamos apenas lidando com Twitter mais. E so’ o Twitter gera muita, mas muita informacao para ser manipulada. O que e’ muito bacana, trabalhar em algo que tem ser performatico.
- drive do twitter 100% ok com as novas regras da api deles
- manipulacao de usuarios, status e tags do twitter melhorada
- gerenciamento interno de tags e links funcionando
- agrupamento de instrucoes no drive de banco. Toda operacao feita no VCNews nao ira’ na mesma hora ao banco de dados. Recurso novo do UDB. Depois falo sobre isso.
- comecei a manipulacao de noticias como Yahoo! News
E para isso funcionar a plataforma (Universe) teve de ser melhorada, o que foi muito bom. Podemos contar agora com Threadings melhoradas e com auto-balanceamento de carga.
UDB tambem foi melhorado. Para resumir, ele cria uma lista de instrucoes para dar ao banco de dados que ele esta’ conectado, por exemplo o MySQL (o que usamos no VCNews), e cria um “mock” para alguma busca ou qualquer outra instrucao que devera’ 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.
Performance
Sou a favor de performance sempre no maximo possivel. Para mim performance nao e’ apenas ter o resultado mais rapido, mas tambem usar menos recursos, ou seja… Economizar.
Menos uso da CPU, faz com que adiante a entrada do modo ocioso, salvando ai alguns watts. Imagine isso em uma grande escala. Voce esta’ salvando tempo e dinheiro. Ate’ mesmo em um notebook. Esses “watts” economizados serao a diferenca entre acabar a bateria em 4 horas ou em 4 horas e 30 minutos, por exemplo.
Algumas coisas que gosto de comentar sobre isso:
- Evitar polling. Serio pessoal. Polling e’ ruim. OK, existem algumas coisas que com polling e’ “melhor” de se fazer. Porem o abuso desta tecnica e’ realmente horrivel para performance. Tente fazer algo com msgs. Um exemplo de software que abusa ou abusava deste recurso, o gksu. Ele chega a checar mil vezes por segundo se existem dados em um pipe. Meio exagerado nao e’?
- Agrupar timers sempre que possivel e usar um para realizar varias tarefas. Nunca um timer para cada status ou alguma coisa que voce esta’ usando. Assim voce economiza em chamadas no cpu deixando o ocioso por mais tempo.
- Pensar em usar linguagens de alto nivel. Elas sao mais rapidas no desenvolvimento, porem a performance e’ muito abaixo de uma linguagem como C. Nao estou de olho no “quadro de luz” de cada linguagem script. Porem prefira Python a Ruby. Java e Visual C#… O que falar destes. Ultima vez que dei uma olhada, as duas ficavam bem parecidas. E gastavam mais que os testes usando python e ruby juntos.
Um cpu ocioso consome 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 calcular algum processo em 1 segundo com potencia maxima do cpu voce ira’ usar 34watts e se fizer em metade da carga levara’ o dobro de tempo, ou seja… 2 x 24 = 48watts.
Gostou do assunto? Um site que recomendo e’ http://www.lesswatts.org
Enlightenment E17
Depois de algum tempo com o Windowmaker, voltei para o Enlightenment. Quero deixar ele como padrao por alguns itens:
- o E17 nao e’ apenas um X11 window manager, ele e’ uma plataforma de desenvolvimento com otimas libs de alta qualidade
- leve. OK nao e’ tao leve quanto o Windowmaker que estava usando, porem e’ muito leve
- pratico
- virtual desktop separados por monitores
- BSD License
O virtual desktop por monitores e’ muito bom e recomendo a todos que querem ter realmente uma boa pratica com 2 ou mais monitores. Quando voce esta’ usando um twinview e muda de workspace, os dois monitores vao para aquela workspace. Agora imagina que apenas 1 monitor vai para a workspace que voce quer e o outro continua onde voce mandou. Isso e’ pratico. Quando usava o E17, tinha uma seguinte configuracao. O Emacs ficava como fixo na workspace 0,0 e meus terminais de log, debug, teste e resultados ficavam na 1,0. Meu navegador (Opera) junto com cliente de irc e jabber/xmpp/gtalk na 0,0. Quando queria ver os logs/debug/resultados mandava o meu monitor da esquerda para a 1,0 com o simples comando de ALT+F2. Meu Emacs continuava no meu monitor direito e ao mesmo tempo podia ver onde o debug parou, resultados de compilacao/exec e tudo mais. Isso e’ um exemplo simples. Voce pode trazer uma janela para uma workspace ou fazer com que a workspace passe a ser controlada pelo monitor desejado. Depois que voce se acostuma, realmente sente falta.
Desktop Utils
Antigamente eu escrevia meus utils, na epoca eu utilizava o AfterStep e escrevia os “desk utils” em LISP, ja’ que passava realmente 90% do tempo no Emacs ou mais. Porem depois de um tempo e alguns backups totalmente jogados fora, nao tenha backups em midia como cds/dvds pois sao horriveis, parei de usar/escrever eles.
E a uns dias atras eu comecei a pensar em escrever utils novamente, utilizando Python com py-wmdockapps, porem pensei em mudar de ambiente. OK adoro o padrao step, mas realmente esta’ “desatualizado” algumas libs que uso nao existem mais (no contrib a mais de dois anos) e nao estao adaptadas a conectar com “softwares KDE4”. Com isso lembrei do E17 e como ja’ tinha feito algumas coisas com o codigo fonte deste super WM, decidi em voltar para ele e utilizar as libs novas dele fazendo alguns bons Desktop Utils para mim. Estou portando um antigo desk utils que escrevi e ainda uso de tirar screenshots de uma janela apenas e postar arquivos no pastebin. Porem desta vez penso em liberar os que tiverem realmente uma funcao que nao seja muito custom para mim ao mundo sobre a BSD.




Master's Apprentices by Opeth




