Interessantices
Depois de longo tempo sem postar, eis que eu lembro que tenho um blog novamente. ;) É que na verdade o plano era mudar o blog para outro servidor (junto do meu portfolio e um csv pra que eu possa subir alguns códigos interessantes), mas ainda não tive tempo.
No entanto, hoje eu tenho algo interessante pra postar, então lá vai. Eu costumo frequentar o fórum internacional do Arch, e nesse tópico um usuário deu uma idéia interessante: como seria possível copiar um arquivo entre TERMINAIS. Ou seja, você tem 2 terminais abertos (ou mais), e quer copiar um arquivo de um terminal para o diretório que está sendo usado no outro. Obviamente, você usaria algo como:
$ cp arquivo o-caminho-completo-de-onde-está-o outro-terminal
Mas isso é chato. Então eu pensei, que bom seria se eu pudesse simplesmente fazer:
$ cp arquivo /dev/pts/1
E a cópia iria para o diretorio em que o pts/1 está trabalhando. Bem, o comando cp não sabe funcionar assim. Mas ele também não sabe que eu fui treinado pelo MacGyver. Então, vejamos como implementar esse recurso usando minha linguagem preferida, Ruby (não confundir com Rails, POR FAVOR!):
#!/usr/bin/ruby
if (ARGV.empty?) || (ARGV[0] == "-h") || (ARGV.size < 2)
STDERR.puts <<EOS
Usage: #{$0} [-h] FILE TARGET
If TARGET is a terminal device (under /dev/), the copy operation will occur
to the terminal's current working dir. Otherwise, will behave like as a path.
EOS
exit 1
end
file = ARGV[0].to_s.strip
target = ARGV[1].to_s.strip
if File.directory? target
path = target
else
unless (pts = target.split("/dev/")[1])
STDERR.puts "Invalid target: #{target}"
exit 1
end
if (pid = `pgrep -n -t #{pts}`).empty?
STDERR.puts "Cannot determine pwd of device: #{pts}"
exit 1
end
path = `pwdx #{pid}`.split(": ")[1].strip
unless File.directory? path
STDERR.puts path
exit 1
end
end
`cp #{file} #{path}`
Esse script irá permitir copiar um arquivo apontando como alvo um terminal ao invés de um caminho, e vai se encarregar de encontrar o diretório atualmente usado. Se o terminal tem mais de uma shell aninhada (ou seja, se você abriu o terminal, e está rodando mais um shell dentro), ele irá usar o diretório do último shell chamado. Se ao invés de apontar um terminal, apontar um caminho, ele irá se comportar igual ao cp comum.
Minha sugestão de uso é copiar para /usr/local/bin/cpt e criar um alias no .bashrc:
alias cp='/usr/local/bin/cpt'
Outra sugestão também é colocar no .bashrc:
if [ "$DISPLAY" ]; then
echo -n -e "\e]0;`tty`\a"
fi
Com isso, todos os terminais terão como título o seu pts, assim fica fácil ver qual janela ou aba de terminal você quer destinar a cópia (só vai executar se for uma janela de terminal no Xorg, não no terminal em modo texto).
Por fim, você irá usar o comando, por exemplo:
$ cp arquivinho.txt /dev/pts/2
E bingo, seu arquivo vai estar disponível no seu outro terminal aberto, sem ter que quebrar a cabeça pra achar o caminho completo. Pra quem usa vários terminais abertos (eu), ou usa tilling window managers (xmonad, awesome), fica bem mais prático trabalhar.
Atenção: não sei como o script se comporta em shells não-Bash (zsh, csh), apesar de que no dash deve funcionar corretamente.
Apesar de nada ortodoxo (afinal, pela lógica do UNIX, copiar um arquivo para um device não faz sentido), o recurso é prático. Boa diversão!
Mais (mais) um exemplo do que é Software Livre no Brasil
Só para aproveitar o gancho. Prometo que o próximo post será menos “político”. ;)
Acredito que todos devem ter visto sobre a carta aberta do autor do software JeguePanel para a “comunidade”.
Mas não foi nem isso que me deixou abalado. O que me deixou abalado foi ser encaminhado para este post em um dos blogs coletivos sobre tecnologia mais lidos no Brasil.
Primeiro, que se esse é um dos blogs de tecnologia mais lidos no Brasil, estamos com uma forte carência de material na “blogosfera” – está mais parecendo um daqueles programas ruins de auditório, onde se fatura polemizando “após os comerciais”. Mas enfim, essa é uma ressalva que não cabe aqui.
Segundo, e bem mais importante, é que há 283 comentários, a maioria fazendo piada sobre o projeto e, mais especificamente, o nome do projeto.
Parodiando o título do post do Meiobit, acho que ISSO sim, sintetiza bem o que é Software Livre no Brasil.
Enquanto um brasileiro faz piada do projeto do JeguePanel ou aponta o modelo de software livre como causa do fracasso, hoje mesmo, a Trolltech, empresa Norueguesa, de nome tão inusitado quanto o país de origem, que tem como principal produto uma tecnologia licenciada sob GPLv3, é comprada pela Nokia por 105 milhões de euros.
E aí? Será que um produto ser software livre, ter um nome estranho, ou ter origem em um país sem muita tradição na informática é um impecilho para o seu sucesso? Parece que não.
Nokia abraçando o open-source: agora é o Qt
Saiu no Planet KDE, no BR-Linux, e claro, no site da própria Trolltech: Nokia adquire a Trolltech, no intuito de usar a tecnologia Qt para desenvolvimento multi-plataforma.
Uma coisa que me chamou a atenção é que parecem fazer questão de tornar tudo transparente. No link original, consta que a Nokia considera a missão atual da Trolltech (em produzir e licenciar de formas diferentes, comercial e open-source), e que não vai interferir nisso.
A Nokia já possuia o SDK Maemo, baseado em GTK+/Gnome (e que vem naquela belezinha de N810). Fico curioso em saber qual seria o motivo em adquirir também a Trolltech. Será que o Maemo não deu o resultado esperado, será que querem expandir o know-how em tecnologias abertas para multi-plataforma, ou será que querem manter 2 frentes com tecnologias diferentes, por motivos estratégicos (e para competir com o Android, do Google / Open Handset Alliance)?
De qualquer forma, essa é uma ótima notícia. Até agora, já temos 2 grandes empresas adotando plataformas abertas para celulares. Eu particularmente vejo muitas vantagens, tanto como usuário final, como desenvolvedor e para o mercado em geral. Plataformas abertas são mais estáveis e o fator tempo/custo para “pequenos notáveis” produzirem aplicações inovadoras é menor.
Infelizmente, enquanto isso a mídia adora catapultar o iPhone, uma plataforma em que você precisa “hackear” o aparelho para conseguir fazer alguma coisa, e a empresa fabricante ainda tenta te sabotar. Pena. ;)
