Category Archives: MitGNU

UGravatar

Sim­ple object to use Gravatar’s service.

> pip install ugravatar
> python
>>> from ugravatar import UGravatar
>>> o = UGravatar(email="umgeher@mitgnu.com")
>>> print o

http://www.gravatar.com/avatar/891f287c39ec64eb072fdf2b96c26c20?s=40

Source code: http://bitbucket.org/umgeher/ugravatar/ 

MitGNU’s BSD License

Copyright 2011 MitGNU. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

   1. Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.

   2. Redistributions in binary form must reproduce the above
      copyright notice, this list of conditions and the following
      disclaimer in the documentation and/or other materials provided
      with the distribution.

THIS SOFTWARE IS PROVIDED BY MITGNU ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL MITGNU OR CONTRIBUTORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

The views and conclusions contained in the software and documentation
are those of the authors and should not be interpreted as representing
official policies, either expressed or implied, of MitGNU.

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

Universe + YQL

Dei uma olhada no YQL da Yahoo! para colo­car como um recurso do Uni­verse. Ja’ exis­tia uma API em Python para esse recurso, porem nao gostei da solu­cao e colo­quei fiz uma do zero para nosso Uni­verse. Gostei mais da solu­cao que fiz porque temos padroes na saida, entao li a doc­u­men­ta­cao inteira do Meme (primeiro da minha lista) e fiz esque­mas e obje­tos para a saida de cada resul­tado pos­sivel. Tor­nando o tra­balho de manip­u­la­cao dos dados mais facil do que ape­nas um parser de XML. Tambem fiz uma boa saida para nao uti­lizar todo o lim­ite ofer­e­cido pela YQL foi o drive direto em UDB ou XML. Antes de finalizar o mod­ulo quero colo­car um cache uti­lizando a saida do drive. Deixar o mais rapido pos­sivel a con­sulta e diminuir o uso de HTTP no server.

Tambem tenho de colo­car o Oauth para fun­cionar neste cara. Vi que a solu­cao python-yql usa o mod­ulo python-oauth, como ja’ temos um mod­ulo no Uni­verse, vou ver o que posso fazer com o nosso e porque nao, se tiver fal­tando recurso, mel­ho­rar ele.

Resumo:

  • acesso rapido e facil da YQL usando um Obj
  • retorno sim­ples de todos os resul­ta­dos pos­siveis do Meme

Para quem tem acesso: universe.Apps.Yahoo.YQL

Universe + Yahoo + feedparser

Mmm… Faz um tempo que nao dou um upgrade no Universe:

  • Y! search, colo­quei a api deles para fun­cionar no Universe
  • feed­parser, tambem esta’ disponivel nos Parses.lib

uprofile: rc0.6.2

Upro­file chegando cada vez mais perto de uma ver­sao “100%” sta­ble, bem por assim considerei.

Andei tra­bal­hando no novo proces­sador do Upro­file. Agora uti­lizando o Mon­goDB para cache rapido e sim­ples. E depois dos testes rapi­dos tive­mos um aumento de 140% em cima da solu­cao pas­sada. Quero uti­lizar ele em out­ros pon­tos. Talvez tornar o sis­tema de “ses­sions” ape­nas nele, ja’ que sao dados de curto tempo e que a client podera’ ter total acesso.

Um ponto legal desse final e sem­ana foi a marca de 0.6, nunca fiquei tao feliz como estou agora com o Upro­file. Chegou em um ponto que nao quero mais mod­i­ficar estru­turas. Acho que encon­trei a solu­cao ideial para o que vinha procurando.

Bem, nao posso deixar de comen­tar que ja’ estou tra­bal­hando em um addon de conec­tivi­dade com Face­book, Twit­ter e Meme. Sim, Meme  da Yahoo!. E quem sabe ainda esse mes nao saia esse addon… =)

Os recurso do Linkaaa ja’ esta’ OK.

Linkaaa PyScript

Fiz um pequeno script de uso pes­soal, mas serve para qual­quer um que nao tenha paciencia/recurso de usar o nave­g­ador para encur­tar urls.

Modo de uso:

python linkaaa "url1" "url2" "url3"

Mas ai vai a dica…

chmod a+x linkaaa

Agora voce pode sim­ples­mente usar desta forma:

./linkaaa http://www.mitgnu.com http://www.hospedagemestavel.com.br

Ele ira’ retornar suas urls encurtadas.

Agora, coloque o script no PATH! E ape­nas dig­ite linkaaa para encur­tar urls. Eu por exem­plo coloco minha ~/bin/ no PATH.

Down­load.

2010-02-09

ShakeIt

  • scripts uti­lizando o novo mod­elo (supernova)
  • obje­tos tambem uti­lizando novo modelo

Upro­file

  • scripts usando supernova
  • obje­tos usando supernova
  • API nova OK

Tenho algu­mas ideias novas para o Upro­file e  quero imple­men­tar ao longo de amanha. Mel­ho­rar o sis­temas de msgs e como a API fala com o web-service.

2010/01/29

Sem inter­net

Estou a alguns dias sem me conec­tar a inter­net, e fazia tempo que nao era tao pro­du­tivo como esses dias o tempo per­dido com pes­soas em jabber/xmpp/gtalk e irc e’ muito grande. Sem falar que elas atra­pal­ham a con­cen­tra­cao, suas per­gun­tas sobre questoes de pro­gra­macao e uni­verso unix me tiram total­mente do que estou fazendo, adoro resolver prob­le­mas, todo prob­lema tem de ser visto, sem­pre. E’ com eles que voce con­segue real­mente aplicar o seu con­hec­i­mento e gan­har mais. E os seus links ao youtube e noti­cias sao um chama­riz a parar de desen­volver. Com isso estou pen­sando seri­amente em deixar para la’ IMs/irc. Vou fazer um teste sobre isso, talvez ficar sem IMs/irc por uma sem­ana ou 15 dias. E e’ com isso que vejo que o sim­ples email e’ muito bom, quando tenho real­mente tempo entro e uti­lizo alguns min­u­tos para respon­der per­gun­tas de ami­gos ou entao para escr­ever para a lista mitgnu =)

Mit­GNU

Com algu­mas mudan­cas que acon­te­ce­ram nesse final de ano, venho me con­cen­trando 100% a Mit­GNU agora, empresa que sou co-founder e vejo que tem grande futuro. O que temos de qual­i­dade de pes­soal e’ muito forte. Mas nem tudo e’ ale­gria. Tive­mos um “atraso”(?) com o ShakeIt. Nao con­sidero atraso. Bem…

ShakeIt

O pro­jeto ShakeIt nasceu de uma grande ideia do nosso CEO Rafael “HULK” Almeida. Nao irei falar o que e’ o pro­jeto ShakeIt, mas que erramos em dar um dead­line para ele. No caso o co-founder Thi­ago Tiveron escol­heu a data por ser uma data legal, 10/01/10 (100110). Fui de acordo. Pode­ri­amos lan­car com certeza uma ver­sao beta do pro­jeto para um uso e pesquisa do que pode­ri­amos estar com duvi­das sobre o plano de negocio.

Achei super legal a ideia do Tiveron de colo­car um dead­line e cor­rer atras de uma ver­sao usavel ate’ aquele ponto. Ver­dade o meu empenho na tec­nolo­gia que o ShakeIt vai usar foi aumen­tado diver­sas vezes. Ainda mais quando fiz um count­down para (as) minha(s) work­sta­tion. Toda vez que meu olho batia no canto da tela via o tempo pas­sar real­mente. Era por varias vezes motivo de jus­ti­ficar a minha ambi­cao por nao cair no sono e cod­i­ficar nesse tempo que para meu ponto de vista e’ um certo des­perdi­cio. Resul­tado come­cei a “aproveitar” mel­hor meu tempo. Come­cei a dormir exatas 4 horas por dia no max­imo. Quando me acos­tumei con­segui fazer mel­hor, dormir ape­nas na manha, sim dormia das 07:00am ate’ 10/10:30am, e em alguns dias. Escolhi eles sabado, segunda e quarta. Demorei cerca que quase 10 dias para me acos­tu­mar. Mas deu certo. Nao posso falar que era 100% pro­du­tivo como cos­tumo ser, mas se for colo­car na ponta do lapis (? colo­car na planilha) eu tive entre 75% a 95% do aproveita­mento, isso de acordo com minha/o/o planilha/trac/redmine. Com isso tive mais horas de desen­volvi­mento e ded­i­ca­cao a novas tec­nolo­gias que cri­amos na MitGNU.

E voltando a ideia do Tiveron, per­feita. So’ tem um prob­lema, eu. Tenho um grande prob­lema em falar que algo esta’ pronto, quando esta’ pronto? Quando esta’ per­feito? Nao quero algo bom, quero algo per­feito que me orgulhe de ter cri­ado e orgulho em usar e fazer com que os out­ros usem. Pas­sava dias inteiros mel­ho­rando algo que muitos falavam que estava per­feito. Mas sem­pre tem um X para mel­ho­rar. Errei nisso. Nao sou uma pes­soa de dead­lines. Sou uma pes­soa que adota a ver­sao de “estara’ pronto quando ficar pronto”. Por isso nao con­sidero um atraso nosso ao ShakeIt nao ter uma ver­sao beta para todos no dia do dead­line. Com esse pequeno “atraso” aproveitei e melhorei/refiz var­ios obje­tivos no ShakeIt nesses dias sem internet.

  • tem­plates usando dog­tag e nao mais OCGI
  • tudo esta’ em modulos
  • apliquei recurso de con­coren­cia no ShakeIt (ver universe)
  • algo­riti­mos usando novo “metodo” de threads e distribuicao
  • pages usando templates-dogtag

Uni­verse

Ajustei varias questoes no Uni­verse, primeiro de tudo refiz o mod­ulo de dis­tribuicao de proces­sa­mento. Agora podemos dis­tribuir os proces­sos em diver­sas maquinas de um modo facil. Tudo usando a mesma lib que criei em 2007. Todo processo de mel­ho­ra­mento de codigo e aplicar novos recur­sos foram no Python. Mas quero em um futuro prox­imo colo­car a mao na lib denovo.

Outro ponto bacana foi mel­ho­rar o core do Uni­verse. Agora temos um novo recurso de quando aquele modulo/objeto nao foi local­izado ou gerou um erro, nosso core procura a ultima ver­sao que aquele processo estava “certo” e refaz o proces­sa­mento usando aquele codigo. Nao estou muito certo se ira’ ser util real­mente, mas no caso imag­ino um sis­tema sendo atu­al­izado em varias maquinas, quero que cada maquina (ponto de proces­sa­mento) tenha uma copia do aplica­tivo, assim quando um processo gerar um erro, essa demanda ira’ pas­sar para a maquina a frente dela, ate’ chegar em uma maquina que o resul­tado seja pos­i­tivo, dai sim retor­nando a quem quis o processo e cam­in­har dai para frente nor­mal­mente. Nao tenho nome para esse recurso. Mas se for bem imple­men­tado, daqui a algum tempo nao teri­amos mais nos pre­ocu­par em atu­alizar tudo de uma vez ou ter as quedas de sis­tema sem usar slave. Deixarei esse recurso como unsta­ble e nao ira’ para o core da pre-stable. Quero lan­car uma nova sta­ble quanto antes para me focar mais em out­ros produtos.

  • nova ver­sao pre-stable
  • dog­tags total­mente em uso, irei tirar o OCGI quando todos os pro­du­tos estiverem usando dogtag
  • leitor de feed de word­press (WPReader)

SF

Estou bas­tante con­tente com a evolu­cao do SF. Temos var­ios novos recur­sos como download-key con­fig­u­rando a veloci­dade. Essa key per­mite que ape­nas o numero de pes­soas pos­sam usar aquela chave e quan­tos mb/s poderam abaixar. Quero mel­ho­rar o sis­tema de log do SF.

Alem de mel­ho­rar o sis­tema de log do SF, que­ria criar um recurso de quando subir um arquivo para o stor­age um sis­tema de “alerta”/msg qual­quer no twit­ter, quero aplicar isso jus­ta­mente para o UPA. Assim o pes­soal que tiver cadas­tro no UPA podera’ “espal­har” seus arquivos com maior facilidade.

VCNews

Estive revendo o back­end do VCNews, quero colo­car ele para frente. Temos var­ios recur­sos do pro­jeto final ja’. Teri­amos de ter­mi­nar o processo de app e front-end. Que estao prati­ca­mente a 0% do desenvolvimento.

2009/11/25

SF

  • app scripts
    • check name
    • login
    • get
    • cre­ate
  • app bridge
    • login
  • IO scripts
    • cre­ate
    • delete
    • read
  • file scripts
    • cre­ate
    • delete
    • get
    • getAll
    • makePath

ShakeIt

  • usando SF’s API
  • usando SI’s API

UPA

Colo­quei parte do meu .plan no Brain­storm do UPA (uploaddearquivos.com.br) para novas modificacoes.