Pages

Friday, December 28, 2007

Feliz 2008 !

Mais um fim de ano vem chegando, mas um ano vem passando e é incrível que mesmo sendo um belo cliché nós nos sentimos com vontade de pensar no ano que passou. Fato inegável também é que sempre nos lembramos de algo que gostaríamos que tivesse sido diferente, mesmo que seu ano seja impecável. Faz parte da nossa natureza buscar sempre o melhor.

Aliás, também é um cliché desejar que todos os seus desejos se realizem. Ok, isso é bonito e até eu faço isso, mas no fundo, bem no fundo, não é bem assim. Muitas vezes o desejo de um não pode ser compartilhado com outro. Quer um exemplo: eu sou tricolor (Fluminense) - eu não vou dizer que é time de futebol do Rio, porque certamente o mundo inteiro sabe disso - ele disputará a libertadores do ano que vêm ... então para todos os meus desejos se realizarem, muita gente não poderá fazer o mesmo. Sacou o que eu disse, não é ? Pois é !

O exemplo é bobo, sim, futebol não me mata, mas situações como disputas por vagas para entrar na universidade, no trabalho, e outras coisas, muitas vezes corriqueiras... eu posso dizer: "que vença o melhor", mas apenas quando vivemos esse momento. No geral, essas disputas são sempre difíceis, mas infelizmente existe. Faz parte da vida. O que pouca gente se lembra (por motivos mais do que justificáveis para o momento), é que muitas vezes uma derrota vale mais do que uma vitória.

Como não vale mandar mensagens do tipo: "que todos os seus desejos se realizem, menos os que me atrapalharem" eu vou ficar com outra mensagem, politicamente correta, e acredite ou não, sincera:
Que 2008 seja mais um ano onde cada um possa superar e aprender com as dificuldades para que todos possamos nos tornar pessoas melhores, e dessa forma, melhorar o ambiente onde vivemos como um todo. Um abraço e um bom 2008 para todos !

Post Científico do ano de 2007

O Tecnoclasta está realizando uma promoção sobre posts científicos. Segue abaixo o texto na integra:

Como estamos no fim do ano, e vários sites lançam promoções de todos os tipos, resolvi criar uma promoção também.

Vou selecionar os três melhores artigos científicos do ano. Os vencedores irão ganhar um destaque de 1 mês inteiro neste site.

E o primeiro lugar receberá um brinde especialmente preparado por mim mesmo: uma réplica de uma nave espacial Mercury em escala 1:23. Eis uma foto do troféu:


Mercury foi o primeiro projeto da Nasa à enviar um homem para o espaço. É histórico que os Soviéticos chegaram primeiro, mas de qualquer forma, o modelo da nave russa Vostok é muito mais complexa. Não me atrevi construí-la.


Para participar da promoção basta ter escrito em seu site, blog ou o que for, um artigo interessante sobre ciências e deixar um trackback nos comentários deste post. Os melhores posts serão selecionados por mim mesmo. As inscrições vão valer durante todo o mês de janeiro, e o resultado será divulgado no dia 25 de janeiro.

Se ainda não fez nenhum artigo sobre ciências, ainda há tempo. Vale artigos publicados durante todo o ano de 2007. Não precisa ser nenhum artigo sério, didático, ou coisa assim. Basta o tema principal ser algum conhecimento científico que estimule a imaginação.

Vamos motivar nossos jovens a desenvolver raciocínio lógico e gosto pela ciência, pois o desenvolvimento do país passa exatamente pelo desenvolvimento de nossos jovens.

Cadastre seus posts e artigos aqui.


Acredito que todos tenhamos apenas a ganhar com isso e coloquei um tópico meu para concorrer (do Notas em CFD). Além disso, o primeiro prêmio é realmente legal (adoro miniaturas!).

O Tecnoclasta está aceitando múltiplos posts do mesmo blog, mas apenas um tópico de cada blog pode ganhar uma das três vagas (o que é muito lógico e justo, mesmo em blogs com múltiplos autores).

Os tópicos devem ser de 2007, mas parece que as inscrições poderão ser feitas até uma certa data de janeiro. Creio que exista uma certa contradição em dizer que o cadastro dos tópicos podem ser feitos em todo janeiro, mas com o resultado saindo no dia 25 (o que aconteceria nos 6 dias restantes ?). Então, se tiver alguém querendo concorrer sugiro que faça a inscrição até 20 de Janeiro. Assim não há riscos. Mas lembre-se que os textos devem ser publicados em 2007, se ainda não escreveu o seu, ainda tem tempo.

Monday, December 24, 2007

Feliz Natal !

O Natal representa um período de Paz e Confraternização entre o povos. Onde o melhor de nós ganha uma oportunidade de vir a tona com nascimento de Jesus.

Tudo que eu posso desejar é que esse sentimento puro seja mais do que palavras escritas ou faladas, que elas se transformem em circunstâncias e atos que proporcionem, nem que por pelo menos um dia, esperança para suportar tudo que ainda estar por vir.

Um Feliz Natal a Todos !

Saturday, December 22, 2007

Shell-script: trabalhando com extensões em scripts

Imprevistos realmente incríveis me impediram de ler tópicos atrasados e revisar os comentários como eu prometi. Me desculpem. Em todo caso isso já não é (ou melhor, "não pode ser") mais uma grande desculpa.

Bom. A questão que apresento aqui deve ter várias soluções, eu uso a mais prática delas de acordo com o meu conhecimento sobre shell-script (e também por ser única solução que eu conheço).

O problema se apresenta em diversos casos, vou exemplificar através de uma conversão entre formatos de imagem. Vamos colocar o problema sobre a ótica de quem quer converter vários arquivos png em imagem .eps. Quem escreve em LaTeX está vislumbrando um motivo, quem não escreve, ignore o motivo, pense como um problema qualquer que precisa de solução que será útil em outros casos do seu próprio interesse.

Utilizando o aplicativo "convert" pode-se converter um arquivo da seguinte forma.

convert arquivo.png arquivo.eps

O problema é se você tiver vários arquivos a serem convertidos. Como disse, para cada aplicativo/função existe algumas soluções. A minha consiste em criar um script com a seguinte função.

#!/bin/bash
num=$(echo $1 |wc -c)
fim=$(($num-5))
NAME="$(echo $1|cut -b -$fim)"

convert "$1" "$NAME.eps"


A parte em negrito é a chave da questão. Ela remove os três últimos caracteres do input "$1" permitindo utilizar o mesmo no comando com uma nova extensão. Mas essa solução resolve apenas um problema. Como converter o arquivo.png em arquivo.eps utilizando apenas o comando meuscript arquivo.png. A segunda parte consiste em colocar um comando com o find, tipo

find ./ -maxdepth 1 -type f -iname \*png -exec ~/bin/img2eps '{}' \;

Observe que meu exemplo é muito simples. Você pode modificar ele a vontade para converter entre diferentes formatos de imagem (png para jpg, por exemplo, utilizando o próprio convert), converter wavs para mp3 (com o lame), ou mp3 para ogg (com o ogg123), pdfs para imagens (com o pdfimage ou também com o convert) e milhares de outras funções que você queira que trabalhe em lote.

Bom, mas quem não conhece ou não usa muito o find deve estar pensando por eu fiz tudo isso. Porque eu não usei o comando diretamente no find, tipo:

find ./ -maxdepth 1 -type f -iname \*png -exec convert '{}' '{}.eps' \;

O motivo é que o resultado do comando acima gera arquivos com o nome arquivo.png.eps e não arquivo.eps. Ok, você pode fazer isso desse jeito mesmo e depois usar um renomeador de arquivos em lote e resolver o problema da "extensão dupla". Mas também pode usar a solução que eu apresento. A liberdade de escolha sempre foi e será a máxima dos usuários linux.

Outro detalhe, é que novamente a gente volta a questão do "exemplo". No exemplo, eu dei a entender que é preciso colocar um comando dentro de um script e chamar outro comando dentro de uma linha grande e chata ou dentro de um segundo script. Tudo bem, você pode fazer isso, mas também pode colocar o "núcleo de conversão" dentro de uma função e usar o find para chamar essa função e não um outro script. Na verdade, na verdade as opções apesar de discretas são quase infinitas. Não vale apena ficar vislumbrando possibilidades por si só.

O que vale apena o destaque aqui (também por ser o objetivo desse texto) são as três linhas mágicas abaixo.

num=$(echo $1 |wc -c)
fim=$(($num-5))
NAME="$(echo $1|cut -b -$fim)"


O como, o onde e o porque você utilizará esse pedaço de código eu deixo com cada um. Posso afirmar apenas que ele me é muito útil. E imagino que ele possa ser útil a várias outras pessoas também.

OBS.: a opção '-maxdepth 1' no find faz com que a busca se limite a diretório raíz mencionado, que nos exemplos acima foi o "diretório atual" './', a utilização de outros valores de "-maxdepth" ou mesmo ignorá-lo dependerá de como o script foi escrito ou o objetivo dele. Nos exemplos acima qualquer valor seria possível, mas perigoso, vai que alguém iniciante digite esses comando no diretório home sem saber o que ele faz ? Do jeito que eu apresentei o problema os riscos praticamente não existem, por isso eu usei '-maxdepth 1'.

OBS.2: sei que devem existir várias pessoas que imaginem ter outras soluções melhores para esse problema. Essa solução que eu apresentei fui eu mesmo que rascunhei, pode não ser nenhuma novidade para algumas pessoas e nem a melhor forma de resolver o problema, mas não imagina como eu demorei (8 anos !!!) para ter uma solução dessas comigo. Então se quiserem compartilhar soluções para essa questão, bem, sou todo ouvidos ("e olhos") ...

Friday, December 21, 2007

Ainda estou vivo...

Hoje, 21 de Dezembro termina o prazo auto-instituído de férias no blog. E na prática também começa o meu recesso de fim de ano.

Infelizmente isso não significa novidades hoje, significa que lerei tudo que não li nesse longo intervalo até domingo (pelo menos os tópicos mais interessantes), e também, que lerei e, eventualmente responderei, os comentários que aguardam liberação e que por algum motivo desconhecido não foram redirecionados ao meio e-mail nesse intervalo.

Do mais, é seguir em frente ... e até breve, agora um em breve de verdade.