Fork me on GitHub

Viagens, opiniões e afins

by Andre Fonseca


Colocando uma tarefa no cron

Esse é daqueles posts que escrevo para não esquecer algumas coisas.  Nessa semana precisei colocar um job no cron do meu sistema para que ele apagasse todos os arquivos que foram criados a mais de X minutos. Esse job deveria rodar de 10 em 10 minutos.  A linha ficou assim:

*/1 * * * * for name in `find /opt/participacoes/uploads/videos  -name '*' -type f  -cmin +3 -print`; do echo $name; rm -f $name ; done > /dev/null 2>&1

Essa linha pega todos os arquivos dentro de uma pasta e joga seus nomes numa lista. Essa lista é lida no loop e o comando de remove é feito.  Uma coisa interessante nessa lista é que só pega arquivos regulares, tudo isso graças a opção -type f. Você pode ver mais  opções digitando

man find

Outro detalhe legal dessa linha é como você define o intervalo de tempo para execução de algo no cron. No cron, funciona da seguinte forma: A B C D E onde cada um é:

  • A – o minuto no qual quer que seu job execute. Ex: 0 ou 30
  • B – hora
  • C – dia
  • D – mes
  • E – ano

Se caso queira fazer algo como intervalo de tempo (quero que algo rode a cada 10 minutos) você pode usar */10(intervalo de tempo).

Existe ainda a opção de usar alias especiais do tipo @daily. Para mais informação, peça ajuda ao google ou ao man na sua linha de comando.

Uma última coisa é que estou jogando a saída da execução para o dev/null (para o limbo – lugar nenhum). Assim eu não fico com alertas e saidas indesejadas.

Published by Andre, on maio 26th, 2011 at 3:01 pm. Filled under: automação Tags: , , , No Comments

Instalando o NodeJS e npm

A um tempo comecei a brincar com NodeJS.  Peguei uma aplicação que tinha feito em Sinatra e resolvi que a reescreveria em NodeJS: primeiro pelo aprendizado e depois por causa da natureza da aplicação ficar bem com uma arquitetura de push.

Primeiro passo é instalar tudo que você precisa para desenvolver com NodeJS… NodeJS e NPM. O npm é um gerenciador de pacotes “semelhante” ao rubygem/pypi. A dica inicial é esquecer tutoriais que ensinam a instalar via script (curl …. ), apt gets, ports ou brew… A melhor forma é clonar o repositório de cada um (NodeJS e NPM) e executar os comandos sugiros no README:

git clone https://github.com/joyent/node.git
cd node
./configure
make
make install

Com isso ele irá verificar as depencias necessária para ele funcionar e listá-las. Caso algo ele indique que deve instalar algo, busque o pacote no google e veja como instalar. Para ubuntu é fácil um apt-get resolve, para outros um yum install, etc.

Repita a mesma coisa para o NPM

git clone https://github.com/isaacs/npm.git
cd npm
sudo make install

Para instalar seus pacotes para desenvolver com NodeJS basta agora ir na linha de comando e digitar npm install <nome do pacote> . Isso irá instalar o pacote. OBS: O npm por padrão instala os pacotes dentro do diretório corrente algo como node_modules. Assim caso queira que os pacotes seja instalados globalmente, ou seja, para toda a máquina, use o -g ou –global junto com o comando install.

Dentro do blog do node, tem uma excelente explicação de como fazer, sendo que você deve reter o seguinte para o início. Ao instalar algo no global, você estará instalando na pasta : “/usr/local/lib/node_modules”. Depois disso, caso queira que essa biblioteca esteja acessível dentro do seu projeto, você deve criar um link para esse global. Para isso:

cd seu_projeto
npm link <nome do pacote>

Isso irá criar um link dentro da pasta local node_modules para a pasta global do pacote. E voilá !
Muito obrigado ao Emerson Macedo (codificando.com ou codificando.org) pela ajuda.

Pronto, para o começo está de bom tamanho. Assim que for avançando com a APP vou postando as escolhas e as descobertas.

Published by Andre, on maio 23rd, 2011 at 5:06 pm. Filled under: atualidades Tags: , , , 2 Comments

Setup Ambiente Ruby – instalando homebrew e git

Uma das coisas que mais admiro no Ubuntu é o sistema de gerenciamento de pacotes. Instalar, atualizar, desinstalar, etc no Ubuntu é tão simples quando uma comanda no console: “sudo apt-get install”. O problema é que para outros sistemas operacionais, como o MacOs isso não é tão simples. Na Globo.com, fui apresentado ao homebrew. Ele é muito legal, tem muitas formúlas(receitas de instalação) e é fácil de gerenciar e manter. Para instalar:

ruby -e "$(curl -fsSLk https://gist.github.com/raw/323731/install_homebrew.rb)"

Para instalar algumas bibliotecas, o brew, por algumas vezes usa, no caso do MacOS, o pacote XCode para compilar. Assim, você terá que instalar o XCode no seu sistema. Se tem o cd original do seu mac, ele estará lá para instalar. Caso não tenha, você pode usar a AppStore do Mac para instalar.
Existem caminhos alternativos para instalá-lo. Mas não recomendo.
Uma vez que tenha instalado o homebrew na sua máquina com sucesso, para usá-lo basta usar o comando brew. Teste no seu console e ele deverá ter uma saída semelhante a:

andre.fonseca@pimpao-computer ~/projects/participacoes/puppet/deploy $ brew
Usage: brew [-v|--version] [--prefix [formula]] [--cache [formula]]
[--cellar [formula]] [--config] [--env] [--repository]
[-h|--help] COMMAND [formula] ...

Principal Commands:
install formula ... [--ignore-dependencies] [--HEAD]
list [--unbrewed|--versions] [formula] ...
search [/regex/] [substring]
uninstall formula ...
update

Other Commands:
info formula [--github]
options formula
deps formula

Bom agora temos uma excelente ferramenta para instalarmos as coisas de forma simples, para montarmos nosso setup. A segunda coisa sem a qual eu não acho que tenhamos um ambiente completo é o Git. O git é um controle de versão descentralizado. Se você não está familiariado com ele, sugiro que estude, pois isso irá mudar completamente a sua forma de ver controles de versões. Acredito que já alguns post meus sobre o assunto, caso não aguarde e peçam ajuda ao google.
Voltando, vamos instalar o git em nossa máquina e assim começar. Para isso use o comando:

brew install git

Isso é tudo. Agora você já tem todo o git funcionando na sua máquina. Eu também gostou muito de colocar alguns atalhos para o git, para isso, eu adiciona “alias” no meu arquivo de bash_profile, desse jeito:

echo alias gpush="git push origin master" &gt; ~/.bash_profile
echo alias gpull="git pull origin master" &gt; ~/.bash_profile
echo alias gst="git status" &gt; ~/.bash_profile
echo alias gcm="git commit -am " &gt; ~/.bash_profile
echo alias gcko="git checkout " &gt; ~/.bash_profile

Para o começo ficamos por aqui. No próximo post mostrarei como instalar o RVM e gems para o seu projeto. No github do projeto tem um bom tutorial indicando como fazer. Para facilitar faça o comando abaixo no seu terminal:

Published by Andre, on maio 12th, 2011 at 3:56 pm. Filled under: agil,ruby Tags: , , , No Comments

Postando fotos no picasa pela linha de comando

Creio que depois de ler o meu último post, todo mundo já está com suas fotos arrumadinhas. Sendo assim é hora de compartilhá-las com seus amigos. Eu uso o Picasa para isso pois gosto dele e sempre me atendeu bem. Muitos amigos dizem que o Flickr é melhor mas prefiro meu bom e satisfatório picasa. Muitos fariam é baixar o picasa desktop (nem sei se tem para o Ubuntu) e a partir dele iriam organizar suas fotos e montar seus albuns e por fim, publicá-los na grande rede.

Como, se lembrarem bem do último post,  eu estou afim de me aprimorar no uso do console, principalmente, em Bash, resolvi pedir novamente “ajuda” ao google e busquei por envio por linha de comando. Para minha grata surpresa, o pessoal da própria google disponibiliza um google command line para diversos de seus produtos incluido o picasa.  Por enquanto só funciona para os que tem gdata (disclamer traduzido do próprio site do googlecl)

Para instalá-lo, no Ubuntu, é bem simples:

sudo apt-get install googlecl

Pelo que eu entendi ele na verdade é uma biblioteca python por isso nos outros sistemas operacionais deve bastar instalar via pip

pip install googlecl

Não sei dizer se com isso, instalando via pip, você perder o binário – comando – para usar.
Uma vez instalado é só alegria e usar:

andre@vermelhinho:~$ google help
Welcome to the Google CL tool!
Commands are broken into several parts:
service, task, options, and arguments.
For example, in the command
"&gt; picasa post --title "My Cat Photos" photos/cats/*"
the service is "picasa", the task is "post", the single
option is a title of "My Cat Photos", and the argument is the
path to the photos.

The available services are
'picasa', 'blogger', 'youtube', 'docs', 'contacts', 'calendar', 'finance'
Enter "&gt; help " for more information on a service.
Or, just "quit" to quit.
andre@vermelhinho:~$

E para enviar suas foto fica mais ou menos assim:

google picasa create "Cat Photos" ~/photos/cats/*.jpg
Published by Andre, on maio 6th, 2011 at 4:00 pm. Filled under: atualidades Tags: , , , , , , 1 Comment