ordenando números de versão
December 30, 2008, by Antonio Terceiro - No comments yetQuando eu quero listar versões em ordem, a ordenação de strings padrão, seja pelo
comando sort ou pelo sort padrão de qualquer linguagem de progamação, não serve.
terceiro@morere:~/src/noosfero (master)$ git tag 0.1.0 0.10.0 0.10.1 0.10.2 0.10.3 0.11.0 0.11.1 0.11.2 0.11.3 0.11.4 0.11.5 0.12.0 0.2.0 0.3.1 0.4.0 0.5.0 0.6.0 0.7.0 0.8.0 0.9.0 terceiro@morere:~/src/noosfero (master)$ git tag | sort 0.1.0 0.10.0 0.10.1 0.10.2 0.10.3 0.11.0 0.11.1 0.11.2 0.11.3 0.11.4 0.11.5 0.12.0 0.2.0 0.3.1 0.4.0 0.5.0 0.6.0 0.7.0 0.8.0 0.9.0O script a seguir resolve meu caso:
#!/usr/bin/ruby
out = $stdin.readlines.map { |s| s.strip }.sort do |v1,v2|
(v1 == v2) ? 0 : (system("dpkg --compare-versions #{v1} le #{v2}") ? -1 : 1)
end
puts out
Salvei ele em ~/bin/version-sort e fix um chmod +x ~/bin/version-sort.
Aí eu consigo fazer coisas assim:
terceiro@morere:~/src/noosfero (master)$ git tag | version-sort 0.1.0 0.2.0 0.3.1 0.4.0 0.5.0 0.6.0 0.7.0 0.8.0 0.9.0 0.10.0 0.10.1 0.10.2 0.10.3 0.11.0 0.11.1 0.11.2 0.11.3 0.11.4 0.11.5 0.12.0UPDATE: Pedro me indicou por e-mail uma alternativa usando opções do próprio
sort:
terceiro@morere:~/src/noosfero (master)$ git tag | sort -n -t . -k 1,1 -k 2,2 -k 3,3 0.1.0 0.2.0 0.3.1 0.4.0 0.5.0 0.6.0 0.7.0 0.8.0 0.9.0 0.10.0 0.10.1 0.10.2 0.10.3 0.11.0 0.11.1 0.11.2 0.11.3 0.11.4 0.11.5 0.12.0De fato pra esse caso específico funciona que é uma beleza, e é simples fazer uma alias do shell com o comando todo. Mesmo assim essa abordagem usando o
dpkg --compare-version tem a vantagem de ser genérica: eu posso abstrair o formato do número de versão que o dpkg se vira: x.y.z, x.y, x.y.z.w, x:y.z, etc.Reflexão sobre o Tabuleiro Digital, e sobre projetos de inclusão digital em geral
December 19, 2008, by Antonio Terceiro - No comments yetAchei por acaso no blog No blog do professor Nelson Pretto. Sensacional, vale à pena a leitura.
Pra dar um gostinho, um parágrafo no comecinho:Primeiro, permitam-me uma questão que balizará toda essa conversa: por que os filhos das classes média e alta podem ter acesso ao universo da internet, na privacidade de seus quartos, com banda larga, suporte via telefone e computadores poderosos para fazer um monte de coisas como baixar músicas, mixá-las, distribuí-las, jogar videogames online, conversar com amigos velhos e novos, visitar e interagir com sites às vezes não tão adequados segundo os adultos - que aliás, um dia já viram as mesmas coisas em gibis escondidos dentro dos livros escolares! -, e, os filhos dos pobres, têm que acessar internet em telecentros para serem treinados (com projetos pedagógicos) em word e excel (aliás, softwares proprietários que lhes "escravizarão" para o todo e sempre...)?!
TWikiBrasil agora é FoswikiBrasil
December 14, 2008, by Antonio Terceiro - No comments yet Foi criada uma nova lista, a web foi renomeada para Foswikibr, e o Carlinhos já está tocando o barco como coordenador da tradução para português, que é só um nome bonito para o papel que ele já vinha desempenhando há um bom tempo no TWiki. Se tivemos o TWiki em bom português nos últimos sei lá quantos releases, devemos a ele. Bola pra frente que com a gente vem mais gente.
Espero conseguir tempo de contribuir com código para o Foswiki em breve, o projeto está num gás sensacional.





