domingo, 14 de junho de 2015

Ocupe a Internet

Ontem eu fui publicar um post sobre shebangs e descobri que meu domínio estava congelado... Claro que essas coisas só acontecem no fim de semana e alguém deve resolver só ao longo da próxima semana. Fiquei sem site, e agora?

A limonada que fiz com esse limão foi refletir sobre como usar melhor a internet a meu favor.

Eu me mudei do Blogspot para o Pelican para ficar menos dependente do Google. Mas isso não quer dizer que eu tenho que largar o Blogspot / Blogger.

Aliás, eu posso hospedar este blog em todos os lugares que eu quiser. Ao mesmo tempo, inclusive!!

Assim, não estranhe se você estiver lendo este blog em uma página do github e encontrar a mesma coisa no blogger e no meu domínio. Isso aí sou eu mesmo, invadindo a internet e ocupando todos os espaços possíveis!

Meu blog serve basicamente para que eu possa fazer anotações sobre como fazer as coisas. Aqui eu documento as técnicas que vou descobrindo para poder consultar depois. O fato de outras pessoas poderem consultar também é um grande bônus, na verdade.

Por isso, não estranhe também se algumas perguntas que eu tiver para fazer a mim mesmo forem respondidas também no StackOverflow em Português. Eles não se importam se você pergunta e responde a si mesmo.

Isso vale para outras mídias?

Claro!

Por que você vai depender do YouTube se seus vídeos podem ser enviados diretamente dentro do Facebook e também hospedados na sua página e onde mais você quiser?

Vamos juntos! Vamos ocupar a internet!

Abraço!
Otávio

quinta-feira, 4 de junho de 2015

Mudança do Blog - do Blogger (ou Blogspot) para o Pelican

Estamos de mudança!

Se você chegou aqui procurando por novos textos ou posts e acha que este blog está há muito tempo sem atualizações, talvez você deva procurar no nosso novo endereço:

http://carneiro.blog.br/um

O Só mais um Carneiro vai morar lá agora, em hospedagem própria, mais independente.

Dá uma olhada lá!

Abraços,
Otávio

domingo, 17 de maio de 2015

Navegando em diretórios no Python

Para identificar o diretório atual (pwd):
    import os
    os.getcwd() # cwd = current working directory

Para mudar de diretório (cd):
    import os
    path = '/my/path/'
    os.chdir(path)

Para listar o conteúdo (ls):
    import os
    os.listdir() #retorna um objeto do tipo list (lista), claro!


Ambiente de desenvolvimento Python 3 no Jessie

Eu já tinha escrito sobre isso, mas o jeito que eu tinha criado o ambiente de desenvolvimento na minha máquina era muito trabalhoso e as versões atuais do Python (estou escrevendo em maio de 2015) tornaram a vida mais fácil.

1) Veja que versão de Python você tem instalada.
    Se for a versão 3.4 ou superior, está tudo certo.
    Se não for, instale o pacote python3.
         Digite: sudo apt-get install python3

2) Instale o pip do Python 3:
     sudo apt-get install python3-pip

3) Utilize o comando pip3 (e não pip) para instalar o virtualenv:
    Digite: sudo pip3 install virtualenv
    Repare no sudo! Queremos o virtualenv instalado para o computador como um todo e não só para nosso projeto, então temos que ter permissões para mexer na configuração geral do Python.

4) No diretório do seu projeto, crie o ambiente virtual (virtualenv):
     Digite: virtualenv env
     Chamei o diretório de env, então sua pasta ficaria algo assim:
                /qqcoisa/seuprojeto/env

5) Ative o seu ambiente virtual:
     Digite: . env/bin/activate
     Repare o ponto (.) e o espaço. Eles são importantes! Você pode trocar o ponto por source para ficar mais claro, se quiser.
     (Alternativa): source env/bin/activate
     Estou assumindo que você está na pasta do seu projeto, que chamei antes de /qqcoisa/seuprojeto/.

6) Pronto! Agora você já pode instalar módulos de python. Estou usando Python 3, então usarei também o pip3. Faço assim:
     Digite: pip3 install ipython
     Esse ipython é o primeiro módulo que gosto de instalar. Ele deixa o console do python mais amigável. Aí, ao invés de rodar "python" para iniciar a console, uso "ipython". Teste aí!

Abraços,
Otávio

sábado, 7 de fevereiro de 2015

Como criar um ambiente de desenvolvimento python no Debian

Estou me baseando na seguinte pergunta (e respostas) do StackOverflow para criar meu ambiente de desenvolvimento Python:

http://stackoverflow.com/questions/4324558/whats-the-proper-way-to-install-pip-virtualenv-and-distribute-for-python

1) Baixar o Virtualenv:
- Fui aqui: https://pypi.python.org/pypi/virtualenv#downloads
- Baixei a versão tar.gz
- A versão foi a 12.0.7, a mais recente no momento
- Para descompactar, rodei o seguinte:
   tar xvf virtualenv*

2) Escolher um lugar para o seu ambiente inicial
- O virtualenv cria um ambiente de desenvolvimento isolado. Não é exatamente uma máquina virtual, mas você pode imaginar que é algo parecido.
- No procedimento que estamos adotando, você vai criar um "ambiente zero". É um ambiente de desenvolvimento com as bibliotecas e módulos básicos dos quais você vai derivar ambientes específicos para cada projeto.
- Eu escolhi gravar o meu ambiente inicial em "~/py-env0"

3) Criar o seu ambiente inicial
- Estou usando o python 2.7.8, mas não deve haver diferença para o python 3.
- Rodei o seguinte comando:
python virtualenv.py ~/py-env0
- Eu estava no diretório onde descompactei o arquivo do virtualenv que baixei acima.

4) Instale o virtualenv no seu ambiente inicial:
~/py-env0/bin/pip install virtualenv*.tar.gz
ATUALIZAÇÃO (em 13/02/2015): Meu amigo Paulo Henrique me alertou que este passo é confuso. "Tem que executar o pip sobre o arquivo que eu já descompactei?". É isso mesmo! Se você tiver fé, confie em mim e rode assim mesmo. Se você precisar entender, corra para o fim do post (depois das referências) que eu explico.

5) Crie o ambiente de desenvolvimento do seu projeto:
~/py-env0/bin/virtualenv pasta_do_projeto/env

6) Ative o ambiente de desenvolvimento quando estiver trabalhando nele:
. pasta_do_projeto/env/bin/activate
Repare que o comando começa com um ponto e um espaço.  Isso é importante! Isso faz com que o comando seja executado no ambiente (shell) atual.
Na maioria dos sistemas (os que usam o bash), isso equivale a:
source pasta_do_projeto/env/bin/activate

7) Alguns módulos exigem o pacote python-dev:
sudo apt-get install python-dev

PERGUNTA BÔNUS: Você deve versionar o ambiente junto com o projeto?
RESPOSTA: Não. Ao invés disso, versione o arquivo requirements.txt gerado com o comando abaixo:
pip freeze

Para instalar os módulos listados no arquivo, use o seguinte:
pip install -r requirements.txt

Referências:
http://stackoverflow.com/questions/6590688/is-it-bad-to-have-my-virtualenv-directory-inside-my-git-repository
http://stackoverflow.com/questions/6812207/how-can-i-correctly-install-multiple-non-package-distribute-virtualenv-pip-ecosys
http://askubuntu.com/questions/232932/in-a-bash-script-what-does-a-dot-followed-by-a-space-and-then-a-path-mean

Bons projetos!

Abs.,
Otávio

----------------------------------------------------------------
ATUALIZAÇÃO (em 13/02/2015): Mas por quê?! Por que rodar o "pip virtualenv*.tar.gz" no passo 4 ??!!

Vou tentar explicar...

Antes de começar o tutorial, não havia nenhum virtualenv, nem pip, nem nada na sua máquina. Quando você executa o passo 3, você roda o virtualenv a partir do código fonte. Ali você está criando um primeiro ambiente (que chamei de ~/py-env0). Só que neste primeiro ambiente, pasme!, não há nenhum virtualenv instalado.

Ahn?

Sabe aquele filme "A Origem" em que as pessoas vivem dentro de um sonho de uma pessoa que está sonhando que está tendo outro sonho? É tipo isso.

No seu ambiente linux (A), não tem virtualenv nenhum instalado:

A (nenhum virtualenv aqui)

No passo 3 você cria o primeiro "sonho", um ambiente em ~/py-env0:

A (nenhum virtualenv aqui)
      B (~/py-env0, nenhum virtualenv aqui também)

Só que você está criando esse ~/py-env0 (B) justamente para poder ter uma base, um ponto de partida para criar outros ambientes. Então você precisa instalar o virtualenv neste ambiente B. É isso que você faz no passo 4:

A (sem virtualenv)
      B (~/py-env0, agora com virtualenv!)


no passo 5, você usa esse virtualenv recém-instalado em B para criar o seu ambiente de projeto (C):

A (nunca terá virtualenv)
      B (~/py-env0, o pai de todos os virtualenvs)
            C (projeto/env, o filho de B)

Neste ambiente C, depois de ativado (passo 6) você já pode dar "pip install qqcoisa" e instalar qualquer pacote. Pode até dar "pip install virtualenv" e instalar um virtualenv.

Peraí! Então eu poderia ter ativado o ambiente B e usado "pip install virtualenv" lá no passo 4? Sim, jovem gafanhoto. Só que o pip teria baixado de novo um pacote que você tinha acabado de baixar e estava bem à mão, compactado naquele arquivo .tar.gz. Sem nem precisar ativar nada...

É, eu sei... Não faz nenhum sentido... Respire e beba um copo d'água antes de ler o próximo parágrafo.

Se você está batendo cabeça e não conseguiu fazer nada disso, não se desespere. O python 2.7.9 já vem com o pip. Você pode dar um "pip install virtualenv" e ser feliz assim que instalar. Uma hora dessas eu experimento e conto aqui como é.

Abraços,
Otávio


Como adicionar os repositórios contrib e non-free ao Debian 8 (Jessie)

Demorei um pouco para me acostumar com o Gerenciador de Pacotes (Synaptic) do Debian 8 (Jessie). Minha versão do Synaptic é a 0.81.2.

Depois de apanhar um bocado, finalmente descobri como adicionar os repositórios contrib e non-free, necessários para a instalação do pacote hannah-foo2zjs (que usei para configurar minha impressora no Debian) e outros.

Em versões anteriores, havia um checkbox em que você marcava estes repositórios, mas agora você precisa digitar na área "Seção(ões)".

Fica assim:
URI: http://ftp.br.debian.org/debian/
Distribuição: jessie
Seção(ões): non-free contrib main


Parece bobo, mas achei que merecia um post.

Abraços,
Otávio

domingo, 1 de fevereiro de 2015

Como instalar e usar o sudo no Debian 8 (Jessie)

Se você resolveu experimentar o Debian 8 e se deparou com a falta do comando sudo, este post é para você. 

Eu já tinha instalado o Debian Jessie e deixado ele mais com a minha cara e no meio do caminho instalei o sudo e várias outras coisas.

Hoje reinstalei o sistema e fiquei de novo abismado com a ausência do comando sudo.

Se você é iniciante em linux e prefere fazer o máximo de tarefas na interface gráfica, recomendo o meu artigo anterior (link acima). Neste aqui eu vou usar mais o console, por ser mais rápido.

Ao instalar o Debian 8, você certamente definiu uma senha de root e outra para seu usuário. Vamos precisar das duas.

1) Abra um terminal;
2) Digite "su"
3) O sistema vai pedir uma senha. Esta é a senha de root.
4) Digite "vi /etc/apt/sources.list"
5) Procure uma linha começada com "deb cdrom: ". No começo desta linha, digite "i" (para inserir) e coloque uma cerquilha: "#" para que o sistema ignore esta linha.
6) Aperte ESC (para parar de escrever), ":" (dois pontos, para digitar comandos), "wq" (salvar e sair) e Enter. Pronto, você atualizou seus repositórios do apt e tirou o CD-Rom do Debian de lá. Se achar que fez bobagem e quiser sair do vi sem salvar, aperte ESC, ":" "q!" e Enter. Isso vai te tirar do modo de digitação (ESC), te colocar no modo de comandos ":" e fechar o vi ("q") sem salvar ("!"). O vi é um editor de texto bem peculiar, vale a pena aprender!

Feito isso, aproveite que está em modo root (o comando su do passo 2) e instale o sudo:
8) Digite "apt-get install sudo"
9) Dê permissão ao seu usuário para usar o sudo. Digite "usermod -a -G sudo seu_usuario".
10) Faça um logoff ou reinicie o computador para poder usar o sudo com seu usuário.

A questão toda de usar "sudo" ou "su" é meio controversa. O Ubuntu adiciona todo usuário aos sudoers, já o Debian sequer instala o sudo. Se você tem uma opinião sobre qual das abordagens é melhor, deixe nos comentários, por favor.

Se quiser ler mais posts sobre o "Debian" use este link ou os marcadores do blog.

Abs!
Otávio