Programação e Linux.

quarta-feira, 21 de janeiro de 2009

Limitar banda de um aplicativo no linux

As vezes você quer fazer um download mas não quer que ele consuma toda a sua banda, alguns softwares permitem isto, outros não, como limitar a banda destes aplicativos? A resposta é trickle.

O trickle é um gerenciador de banda em espaço de usuário, qualquer programa que faça uso da system call socket pode ser capturado pelo trickle. As taxas de download e upload podem ser configuradas independentemente.

Para instalar o trickle no Ubuntu faça:
sudo apt-get install trickle

O trickle pode ser usado no modo standalone e no modo server. Para usar no modo mais simples (standalone) é só chamar:
trickle -s [-d <maximo-download-kb>] [-u <maximo-upload-kb>] <programa> [args...]

A opção -s é para forçar o modo standalone, caso o servidor do trickle (trickled) esteja rodando, o padrão (sem a opção -s) é primeiro tentar usar o modo server depois o modo standalone. Então ela é opcional caso não exista servidor.

Exemplo para fazer o download do firefox usando o wget e limitar ele a 20KB/s faça:
trickle -s -d 20 wget 'http://download.mozilla.org/?product=firefox-3.0.5&os=linux&lang=en-US'

O trickle é muito útil para fazer uma atualização do Ubuntu e limitar a taxa de download, para não sobrecarregar o link de internet :
sudo apt-get update && sudo trickle -s -d 20 apt-get -y --force-yes upgrade

Sítio do trickle: http://monkey.org/~marius/trickle/

quinta-feira, 15 de janeiro de 2009

Instalar Plone 3.1.x no CentOS 5.2

O Plone é um CMS que roda em cima do Zope, que por sua vez é um servidor de aplicativos feito em python.

Para instalá-lo, eu preferi usar o instalador unificado, ele instala o python (mas pode-se usar o python do CentOS), o Zope e o Plone.

Primeiro é necessário baixar o Plone e descompactá-lo, para versão 3.1.7 faça assim:

wget http://launchpad.net/plone/3.1/3.1.7/+download/Plone-3.1.7-UnifiedInstaller.tgz
tar xvzf Plone-3.1.7-UnifiedInstaller.tgz

Para compilar, faz-se necessário que alguns pacotes sejam instalados, faça:
yum -y install zlib-devel
yum -y install libjpeg-devel
yum -y install gcc

yum -y install gcc-c++

yum -y install libxml2-devel
yum -y install openssl-devel

yum -y install readline-devel

Existe duas formas de instalação, Cluster e Standalone. Cluster é ideal para fazer balanceamento de carga e fazer proveito do uso de vários processadores se o sistema possuir mais de um.

Para instalar a versão Cluster faça:
./install.sh zeo

Para instalar a versão Standalone faça:
./install.sh standalone

O instalador permite instalar várias instâncias do Plone, basta passar um nome diferente para cada usando a opção --instance=nome.

O instalador vai usar o diretório /opt/Plone-3.1 como base para instalação, todas as instancias vão ser instaladas neste diretório, é possível mudar isto usando --target=diretório-para-instalação.

Eu preferi compilar um python só para o Zope, mas é possível fazer com que o instalador use o python do sistema usando a opçao --with-python=diretório-do-python.

Para ver mais opções do instalador faça:
./install.sh --help

Aqui eu instalarei uma instância Standalone de nome myplone-single, então:
./install.sh --instance=myplone-single standalone

O python é compilado e instalado em /opt/Plone-3.1/Python-2.4
e a instância do plone em /opt/Plone-3.1/myplone-single e a senha do Zope fica em /opt/Plone-3.1/myplone-single/adminPassword.txt

Para iniciar a instância faça:
/opt/Plone-3.1/myplone-single/bin/instance start

Agora acesse o Plone via:
http://meudominio:8080/Plone

Site Error
Se você receber 404 Not found, Sorry, the requested resource does not exist é porque durante a instalação por algum motivo o Plone não foi instalado dentro do Zope. Você deve fazer isso na mão, acesse a interface administrativa do Zope via http://meudominio:8080/manage, vai ser pedido o nome do usuário e a senha (veja o arquivo /opt/Plone-3.1/myplone-single/adminPassword.txt), escolha Plone Site no menu e clique em Add.
Preencha as informações na tela seguinte, Id será usado como path da URL, neste caso use 'Plone' para obter a url http://meudominio:8080/Plone.
Clique em Add Plone Site e pronto.

Referência:
http://plone.org/documentation/tutorial/installing-plone-3-with-the-unified-installer

quarta-feira, 14 de janeiro de 2009

Desabilitar autenticação por senhas e permitir somente autenticação por chaves no ssh

Para deixar um servidor mais seguro eu gosto de desativar a autenticação por senhas do openssh e somente deixar por chaves, para fazer isto, abra o /etc/ssh/sshd_config e acrescente as linhas ou altere a configuração para:

RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no

feito isto, reinicie o ssh:
/etc/init.d/ssh restart

sexta-feira, 19 de dezembro de 2008

Tutorial oficial de ActionScript 3.0 em Português

Não sei a quanto tempo está disponível, mas a está lá no site da Adobe a documentação oficial do ActionScript 3.0 (Programming ActionScript 3.0) em português.

Confiram online, PDF.

quinta-feira, 18 de dezembro de 2008

Qual linguagem de programação você prefere?




Dando continuidade ao post anterior, gostaria de fazer uma pesquisa. Dado que muitos programam em várias linguagens, se eu pedisse para você fazer um programa para mim, qual linguagem você iria preferir de cara?

Eu estou falando da primeira linguagem que vem a sua cabeça. Em qualquer projeto a primeira linguagem que vem a minha cabeça se chama C, mas dependendo do que se pede, eu troco para python, perl, java, php, ... Mas justamente eu quero saber a que, num mundo perfeito, seria a primeira que você escolheria.

quarta-feira, 17 de dezembro de 2008

Montar partições dos discos do vmware

As vezes você precisa só de um arquivo dentro de uma máquina virtual e não quer ligar o vmware para fazer isto, ainda bem que a vmware disponibiliza os comandos necessários:

Vá até a pasta da sua máquina virtual e procure pelo arquivo *.vmdk (disco virtual do vmware). Achando o arquivo agora é só usar o vmware-mount, aqui vão uns exemplos:

listar partições do disco:
sudo vmware-mount -p

Montar a partição 1 em /mnt
sudo vmware-mount 1 /mnt/

Listas as partições montadas:
sudo vmware-mount -L

Desmontar a partição montada em /mnt
sudo vmware-mount -d /mnt/

O vmware-mount vem com o vmware.

terça-feira, 16 de dezembro de 2008

Programador velho, linguagem nova: Leia um bom livro [Era: utilidades do java]

Me considero programador em apenas 4 linguagens: Perl, C, Java e Python, nesta ordem de aprendizado. Em todas estas, além de gostar e ter escrito muito código nelas, eu as acompanho vendo suas novidades, suas tendências, seus padrões, sua filosofia e participando de alguma lista.

Para muitos amigos meus programadores, Java é horrível, concordo em vários pontos, mas só pude ter uma opinião concreta quando aprendi mais sobre ela e após isto considero java uma linguagem com muitas idéias legais. Contudo Java definitivamente não é, e nunca vai ser, minha linguagem preferida, não a odeio como outros programadores, também não a defendo como ela sendo o estado da arte como muitos dos seus programadores fazem, deixei de ser xiita.

Mas figuras como estas, são no mínimo muito engraçadas: "Por que java é útil?"

De http://www.danilocesar.com/blog/2008/11/26/porque-java-ainda-e-util/

Não gosto deste livro, já o li, para mim o melhor livro de java, apesar de antigo (Java 5.0), é o Learning Java da O'Reilly. É essencial que um programador saiba programar em uma linguagem seguindo sua filosofia, o da O'Reilly faz isto, o da Deitel não.

É horrível ver um programador C fazer programas em Python como se fosse C.

Aqui vai meu apelo: Se você realmente quer aprender uma linguagem de programação nova, leia um bom livro sobre ela e participe da comunidade, só porque já sabe programar, não garante que você vai fazer um programa bom em outra linguagem.

Aproveitando, linguagens que já programei/estou programando e gostei/estou gostando: haskell, scheme, mxml+actionscript (junto, não separado). Linguagens que já programei/estou programando e não gostei/continuo não gostando: php, tcl/tk, C++.