Archive

Archive for the ‘dica rapida’ Category

Renomeando arquivos em ruby

January 10th, 2012 4 comments

Primeiro post do ano ressuscitando a categoria dica rápida.
Há uma ou duas semanas o PotHix me passou umas músicas, mas na hora de copiar, todos os arquivos vieram sem extensão. Depois de perder um tempo tentando resolver com bash, eu desisti e resolvi o problema em 10 min usando ruby. Se alguém puder postar nos comentários a solução em bash eu agradeço!

Para a minha solução usei apenas os seguintes métodos:

#Retorna um array de strings com todos os arquivos do diretório.
Dir.entries("dir")
#Retorna se o arquivo é um diretório ou não.
File.directory?("arquivo")
#Renomeia o arquivo.
File.rename("nome_antigo", "nome_novo")

Minha solução final ficou assim:

def rename_in_dir(dir)
  files = Dir.entries(dir)
  files.each do |f|
    # Usei esse if para ignorar os arquivos que já tinham
    # extensão e as referências '.' e '..'
    next if f == "." or f == ".." or f =~ /.*\..{2,4}$/
    # é importante sempre usar o diretório junto, se não ele vai
    # procurar sempre no diretório onde o script está sendo executado
    if File.directory?("#{dir}/#{f}")
      # Se for um diretório faz a chamada recursiva
      puts "DIR: #{dir}/#{f}"
      rename_in_dir("#{dir}/#{f}")
    else
      puts "renaming: #{dir}/#{f}"
      # Adiciona a extensão .mp3 no arquivo
      File.rename("#{dir}/#{f}", "#{dir}/#{f}.mp3")
    end
  end
end
# Começa a partir do diretório onde o arquivo está
rename_in_dir(".")
Categories: dica rapida, Ruby Tags: , ,

coalesce – o nvl do hibernate

December 21st, 2009 1 comment

Mais uma dica rápida e dessa vez não é sobre o git!
Uma funcionalidade relativamente bastante usada, principalmente em relatórios, é substituir dados nulos por algum valor padrão. Por exemplo, dada a seguinte tabela (Usuario) quero um select que liste os nomes dessa maneira: “David Paniz”, “Anonimo”.

IdNome
1‘David Paniz’
2null

Cada banco tem sua solução para esse problema. No oracle usamos a função nvl

select nvl(nome, 'Anonimo') from User

No mysql temos a ifnull

select ifnull(nome, 'Anonimo') from User

Para resolver o problema no Hibernate temos a função coalesce no hql

//Isso é HQL
select coalesce(nome, 'Anonimo') from User

Fazendo clone de um repositório git ignorando histórico

October 30th, 2009 No comments

Quando fazemos um clone um projeto git ele copia todo o histórico do repositório e, por isso, quando o projeto começa a ficar antigo o clone pode demorar muito. A dica rápida de hoje é como fazer o clone ignorando o histórico.

  git clone --depth 1 git://...

Dessa forma ele baixa apenas o útimo commit como se fosse um checkout de um svn.
Novamente fazendo referencia, esse dica veio pelo Douglas via twitter (@qmx).

Usando branch remoto com git

September 25th, 2009 2 comments

Aproveitando para criar uma nova categoria aqui no blog chamada “dica rápida”. Nessa categoria pretendo postar exatamente esse tipo de coisa: dicas rápidas. E aqui vai a primeira:

Quando estamos usando o git e queremos baixar do servidor um branch, ou seja, pegar um branch remoto, somos tentados a fazer dessa forma:

#NÃO FAÇA DESSA FORMA! ERRADO!
git checkout -b  new_branch
git pull origin new_branch

Infelizmenete não é dessa forma. Para fazer o pull do branch remoto localmente basta fazer da seguinte maneira:

git checkout -b new_branch origin/new_branch

Apenas para completar, aqui vai o link (em inglês) de onde eu achei a solução para esse problema.