Auto-completar no python do Mac OsX

Certa vez o Ademar comentou que o python tinha auto-completar por padrão. Pessoalmente nunca tinha percebido isto, e conversando com o Ramiro percebi o porquê: Mac OS X e Windows não inicializam os módulos readline e o rlcompleter sozinhos.

Procurando um pouco vi que habilitá-los é fácil.

Primeiro edite o arquivo ~/.pythonrc

#Enable syntax completion
try:
    import readline
except ImportError:
    print "Module readline not available."
else:
    import rlcompleter
    readline.parse_and_bind("tab: complete")

Após isto, em seu ~/.bashrc adicione:

export PYTHONSTARTUP=~/.pythonrc

Agora inicie o python e faça o teste.

Aos colegas do planeta…

Receita de Bolo Brigadeiro

Ingredientes

  • 1 xícara (chá) de açúcar
  • 1 colher (sopa) de fermento em pó
  • Meia xícara (chá) de chocolate em pó solúvel
  • 2 xícaras (chá) de farinha de trigo
  • 1 xícara (chá) de leite
  • 5 ovos

Recheio

  • Meia xícara (chá) de chocolate granulado
  • Meia xícara (chá) de chocolate em pó solúvel
  • 2 colheres (sopa) de manteiga
  • 2 latas de leite condensado

Preparo:

Massa: Bata na batedeira, as claras em neve bem firme. Junte as gemas, uma a uma, e acrescente o açúcar. Despeje o leite aos poucos, sem parar de bater. Incorpore, por fim, delicadamente a farinha peneirada com o Chocolate em Pó e o fermento. Despeje em uma fôrma redonda (28 cm de diâmetro) untada e enfarinhada e leve para assar em forno quente (200º C) por aproximadamente 40 minutos. Deixe esfriar e corte-o ao meio.

Recheio e cobertura: Leve o Leite Moça, a manteiga e o Chocolate em Pó ao fogo, mexendo sempre. Quando ferver, abaixe o fogo e deixe cozinhar, sem parar de mexer, por cerca de 6 minutos ou até formar um creme consistente. Cubra uma metade do bolo com este creme, arrume a outra metade, espalhe o restante do brigadeiro com uma espátula ou faca e espalhe o chocolate granulado em toda a superfície. Leve para gelar e sirva.

E tenho dito!

Go Speed, Go away from here!

Duas horas a menos de vida e oito reais mais pobre, posso dizer que assistir Speed Racer acrescentou-me algo: Atualizei meu conceito de lixo.

E tenho dito!

Hello world para Native-Symbian

Certa vez eu quis explicar a um amigo porque escrever código em python para celular era mais legal que escrever código em C (native-symbian e não OpenC). Acho que hoje talvez eu consiga.

Segue os exemplos:

Python

print "Hello World"

C++-Epoc


// Hello World in C++, Epoc style (for Symbian OS)
#include < eikapp.h >
#include < eikdoc.h >
#include < eikappui.h >

class CHelloWorldAppUi;
class CEikApplication;
class CHelloWorldAppView;

class CHelloWorldApplication : public CEikApplication
{
public:
TUid AppDllUid() const;
protected:
CApaDocument* CreateDocumentL();
};

class CHelloWorldDocument : public CEikDocument
{
public:
static CHelloWorldDocument* NewL(CEikApplication& aApp);
static CHelloWorldDocument* NewLC(CEikApplication& aApp);
~CHelloWorldDocument(){};
public:
CEikAppUi* CreateAppUiL();
private:
void ConstructL() {};
CHelloWorldDocument(CEikApplication& aApp){};
};

class CHelloWorldAppUi : public CEikAppUi
{
public:
void ConstructL();
CHelloWorldAppUi(){};
~CHelloWorldAppUi(){};
};

static const TUid KUidHelloWorldApp = {0x10005B91};

GLDEF_C TInt E32Dll(TDllReason )
{
return KErrNone;
}

EXPORT_C CApaApplication* NewApplication()
{
return (new CHelloWorldApplication);
}

CApaDocument* CHelloWorldApplication::CreateDocumentL()
{
CApaDocument* document = CHelloWorldDocument::NewL(*this);
return document;
}

TUid CHelloWorldApplication::AppDllUid() const
{
return KUidHelloWorldApp;
}

CHelloWorldDocument* CHelloWorldDocument::NewL(CEikApplication& aApp)
{
CHelloWorldDocument* self = NewLC(aApp);
CleanupStack::Pop(self);
return self;
}

CHelloWorldDocument* CHelloWorldDocument::NewLC(CEikApplication& aApp)
{
CHelloWorldDocument* self = new (ELeave) CHelloWorldDocument(aApp);
CleanupStack::PushL(self);
self->ConstructL();
return self;
}

CEikAppUi* CHelloWorldDocument::CreateAppUiL()
{
CEikAppUi* appUi = new (ELeave) CHelloWorldAppUi;
return appUi;
}

void CHelloWorldAppUi::ConstructL()
{
BaseConstructL();

_LIT(message,"Hello!");
CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
informationNote->ExecuteLD(message);
}

fonte: http://www.roesler-ac.de/wolfram/hello.htm

É uma cilada Bino!

http://www.informationweek.com/news/software/linux/showArticle.jhtml?articleID=207…

Acho que vale a pena ler os comentários antes de ler o texto:

Yes, the fact that the writer thinks that MEPIS is based on Mandriva shows how little knowledge he has, and how poorly researched his paper is..