segunda-feira, janeiro 24, 2011

Pinaker.

Tenho andado a fazer um programa para me ajudar a organizar os livros. O objectivo é criar um ficheiro com os dados dos livros e depois, noutro programa que ainda está na calha, usar essa informação para anotar fotografias digitais das prateleiras. Assim posso saber onde tenho cada livro e facilmente reorganizar as coisas conforme preciso.

Para evitar a seca de copiar títulos, autores e editores de centenas de livros, o Pinaker lê os códigos de barras para obter o ISBN e liga-se a serviços na Internet de onde se pode obter os dados necessários. Assim, basta fotografar os códigos de barra com uma câmara digital e processar as imagens. Está feito de forma a ser fácil criar scripts para adicionar fontes de dados conforme necessário. Neste momento, usa o ISBNdb* e a Base Nacional de Dados Bibliográficos. Há também um script para o Google Books, mas é só experimental e só serve para obter os URL das imagens das capas.

Para quem quiser experimentar, na minha página puz os binários para Windows e Debian, e um guia resumido em PDF. E no Github está o código fonte e instruções para compilar (é preciso o Lazarus).

Obrigado à Paula Simões pela ideia, requisitos, testes e fontes para os dados, e ao Marcos Marado pelas correcções, dicas para para compilar no Linux e o pacote Debian. Apesar do Marcos já ter feito tudo o que é preciso para criar o pacote de instalação, eu ainda não tive tempo de perceber o que aquilo faz. Por isso é culpa minha que os binários para Linux se instalem com um script foleiro. Mas prometo melhorar isto em breve.

* Para este é preciso registar-se primeiro para obter uma chave de acesso, mas é gratuito.

22 comentários:

  1. Eis mais um exemplo de como os códigos e a informação codificada neles contida são sempre produto de design inteligente.

    Mas nada que chegue aos calcanhares da informação codificada contida no genoma, em termos de quantidade, qualidade, engenhosidade, complexidade, densidade e miniaturização.

    ResponderEliminar
  2. Jónatas,

    É claro que um código tem sempre origem inteligente. O teu erro está em assumir que uma molécula tem um código, por si só, ou que o ADN age de forma inteligente.

    Nós podemos usar um código para descrever a molécula (AGTTAG...), como usamos um código numérico para descrever os sulcos das chaves. Mas quando a chave roda na fechadura, ou quando o ADN é usado na síntese do ARN, não há nada ali com código ou inteligência. Os sulcos e altos da chave empurram os pinos da fechadura, e os átomos da molécula interagem. O código está na descrição do processo, não no processo em si. E a descrição, sim, exige alguma inteligência (se queremos que seja correcta, pelo menos, caso contrário basta imaginação e fé).

    ResponderEliminar
  3. Lk

    é desenvolvido em que linguagem ?

    ResponderEliminar
  4. Grande Ludwig.

    (faltam-me talvez as "centenas de livros" para utilizar isso...)

    ResponderEliminar
  5. Perspectiva,

    Se tenciona instalar a aplicação diga-me primeiro para eu próprio lhe fazer uma ou duas adaptações pro bono.

    ResponderEliminar
  6. Bruce,

    Se calhar não te falta. Já experimentaste contar? Eu antes de ter a ideia de organizar isto estava a subestimar bastante a quantidade...

    ResponderEliminar
  7. eu necessito de uma casa nova para colcoar os meus, mesma antes de os começar as classificar, esta coisa de se ser nómada no próprio país é uma seca : (
    mas detesto classificações , nada como a surpresa de encontrar fora do local um livro que já não líamos há anos, nada como perder livros para depois os encontrar, confere um toque de acaso delicioso

    : ))

    ResponderEliminar
  8. Ludwig, de facto nunca os contei. Estarei demasiado confiante num software que eu próprio desenvolvi há décadas:

    # zenity --info --text=”Caga nisso, Bruce.”

    Vejo agora que é um pouco omisso no exception handling...

    ResponderEliminar
  9. Acho que este artigo pode ajudar qualquer um com pretensões de programar alguma coisa:

    Programação Orientada a Gambiarras


    Não se enganem com sua carga humorística, esse artigo é muito esclarecedor. Por exemplo, a definição de Gambiarra:

    "Por definição, Gambiarra é aquilo que é de difícil concepção, de inesperada execução para tornar fácil o uso de algo que sequer deveria existir."

    Parabéns à equipe pelo programa Pinaker.

    ResponderEliminar
  10. Pelo que percebo, o Pinaker vai a uma directoria onde colocas as fotografias dos códigos de barras, processa-as para um número e depois vai buscar a informação sobre esse ISBN lá aos sites manhosos.

    No interesse de melhor abraçares a filosofia UNIX, sugerir-te-ia que modularizes o programa em dois programinhas mais pequenos, com funções específicas. E que depois (se quiseres) faças um programa que os cola para teres a funcionalidade actual.

    Um programa seria o que para cada imagem detecta o código de barras e imprime o ISBN (pic2isbn), e o outro (isbninfo) seria um programa que dada uma lista de ISBN's imprime a informação desses livros (num formato "excelizável", para manter a funcionalidade).

    De preferência os programas poderiam usar a linha de comandos para parâmetros e o standard input e standard output para os resultados/dados (quando aplicável). Um exemplo, hipotético, de uso poderia ser:

    $ pic2isbn pic1.jpg pic2.jpg pic3.jpg | isbninfo > result.csv

    Assim poderia ser mais fácil ligar outras funcionalidades e programinhas à vossa excelente funcionalidade, para além de ser mais fácil de testar componentes individuais.

    ResponderEliminar
  11. ardoRic,

    É uma boa sugestão. Não acho que seja mais fácil desenvolver e testar; pelo contrário, porque complica a comunicação entre as partes (tenho de serializar tudo para texto e de volta em vez de simplesmente chamar métodos de classes com argumentos a gosto).

    Mas concordo que permite ser usado de maneiras diferentes, e é fácil encapsular as classes em programas de consola. Assim que o código estabilizar, espero ter tempo para fazer isso.

    ResponderEliminar
  12. Uma ideia interessante seria o programa capturar a imagem com o código de barras directamente de uma webcam.

    ResponderEliminar
  13. sxzoeyjbrhg,

    Pensei nisso, mas depois olhei para o armário e rapidamente concluí que, para este propósito pelo menos, ir com a câmara digital aos livros é bem mais prático que trazer a montanha a Maomé :)

    ResponderEliminar
  14. (além disso, um programa multi-plataforma para processar jpgs é muito mais simples de fazer do que um programa multi-plataforma para processar streams de webcam por USB... :)

    ResponderEliminar
  15. Tenho um programa para me ajudar a organizar os livros, chama-se Plastic
    Sac, quando começam a encher de mais a casa, experimento e vejo se cabem no saco, se cabem tudo bem, descarrega-se o saco na REMAR do Benfica ou na RETE do Benfica por vezes deixo-os na DESPERTAR de QUELUZ, lá eles pegam neles e organizam-nos.
    Dá resultado, vou fazer agora o Download dos livros do Mário Soares e do Cavaco Silva e os dos Marcelos
    Também tenho uns marcelinhos num jarro,que dão um péssimo instrumento musical mas isso é mais díficil de fazer download, os jio's nunca deitam dinheiro fora

    ResponderEliminar
  16. De programador e louco, todo mundo tem um pouco hehehe.

    ResponderEliminar
  17. Icarus disse...

    De programador e louco, todo mundo tem um pouco

    E alguns têm muito

    ResponderEliminar
  18. O ESPANTO DO LUDWIG PERANTE SEQUÊNCIAS POLISSÉMICAS DOS CÓDIGOS DO DNA


    O Ludwig procurou apresentar o facto de a sequência de nucleótidos CUG poder ter dois significados, dependendo do contexto, como prova de que o DNA não é um código.

    Mas falha, mais uma vez.

    Em vez disso, ele sublinha alguns importantes pontos para o criacionismo.


    Desde logo, ele reconhece que sequências de símbolos, no DNA, têm uma função representativa de algo que os transcende, transmitindo instruções precisas para a produção de função aminoácidos, proteínas, células, tecidos, órgãos, seres vivos integrados e funcionais.

    Essa função representativa é a essência de um código.

    Além disso, ele sublinha o carácter polissémico dos símbolos, o que é típico de muitos códigos.

    Nas linguagens humanas, a mesma palavra pode assumir vários significados, dependendo do contexto. Mas o facto de assumir um ou outro significado em nada refuta o tratar-se de informação codificada.

    No DNA sabe-se que genes idênticos podem assumir significados diferentes, dependendo do contexto regulatório.


    Um terceiro aspecto, é sublinhado pelo físico alemão Werner Gitt, usando o mesmo exemplo do Ludwig.

    No seu artigo “Design by Information”, publicado numa obra colectiva em 2006, Werner Gitt, na nota de rodapé 8, afirma que o código contido no DNA facilmente se percebe ter uma natureza convencional (no sentido de queo significado não é uma propriedade dos açucares e fosfatos que constituem a matéria do DNA).

    Por outras palavras, diz Werner Gitt, não existe nenhuma razão físico-química pela qual a biomaquinaria do DNA atribui à sequência CUG, por exemplo, o significado “leucina”.

    Com efeito nalgumas espécies a mesma sequência é traduzida por “serina”.

    Para Werner Gitt isso só demonstra a natureza imaterial e convencional do código, no sentido de que se trata de uma realidade independente das propriedades físicas e químicas da matéria.

    Como na generalidade dos códigos, não existe qualquer relação física necessária entre a sequência de símbolos e as ideias ou instruções que eles codificam.

    Ora, no DNA sabe-se que existem códigos paralelos, por vezes de leitura bidireccional, em que os nucleótidos, os aminoácidos e os próprios genes podem assumir diferentes funções, consoante o contexto.

    Isso só acrescente complexidade ao genoma, muito para além do que a teoria da evolução aleatória consegue explicar.

    Como se vê, não existe nada de novo no argumento do Ludwig e muito menos nada que ponha em causa o que os criacionistas afirmam.

    Pelo contrário.

    O argumento corrobora inteiramente o que os criacionistas dizem,

    Continua a existir código e informação codificada no genoma,
    De resto, isso é reconhecido por todos, menos pelo Ludwig, que continua numa inglória tentativa de negação do óbvio:

    1) Informação codificada tem sempre origem inteligente

    2) O DNA tem informação codificada

    3) O DNA teve origem inteligente

    ResponderEliminar
  19. COMO PODEMOS TER A CERTEZA ABSOLUTA DE QUE O LUDWIG HÁ MUITO QUE PERDEU O SEU DEBATE COM OS CRIACIONISTAS?


    É muito simples:

    1) Para defender a ciência, o Ludwig tem que postular que o Universo funciona racionalmente e pode ser compreendido racional, lógica e matematicamente.

    A Bíblia ensina isso.

    A teoria da evolução (com a sua ênfase na irracionalidade dos processos), não.

    A Bíblia ganha, porque o Ludwig tem que postular a visão bíblica do mundo para defender as possibilidades da ciência.


    2) Para poder criticar o comportamento dos religiosos, o Ludwig tem que pressupor a existência de valores morais objectivos.

    Caso contrário, são as suas próprias preferências morais subjectivas contra a dos religiosos.

    A Bíblia ensina que existem valores morais objectivos. A teoria da evolução (com a sua ênfase no carácter amoral e predatório dos processos), não.

    A Bíblia ganha, porque o Ludwig tem que postular a visão bíblica do mundo para as suas condenações morais serem plausíveis...

    3) A Bíblia ensina que a vida foi criada por uma (super-)inteligência.

    A existência de códigos e de informação codificada é a marca, por excelência, da inteligência e de racionalidade (v.g. computadores, ATM’s, GPS’s., Ipads).

    A vida depende de códigos e informação codificada, com uma densidade e complexidade que a comunidade científica não consegue compreender e reproduzir.

    Para aspirar a ganhar o debate, o Ludwig teria de a) mostrar um processo físico que crie códigos e informação codificada ou b) demonstrar que a vida não depende de códigos nem de informação codificada.

    Como ambas as coisas são cientificamente impossíveis, a Bíblia ganha.

    É por isso que é errado afastar a Bíblia deste debate, como alguns pretendem.

    Ela dirige e vence o debate.

    Sempre que tenta negar a Bíblia e condenar a conduta dos cristãos o Ludwig tem que postular a visão bíblica do mundo.

    O Ludwig é facilmente goleado quando discute com a Bíblia...

    ResponderEliminar
  20. A “EVOLUÇÃO” NA GENÉTICA DAS POPULAÇÕES E O ERRO DO LUDWIG

    O Ludwig fala muito na “evolução” partindo da genética das populações.

    No entanto, sempre que apresenta exemplos de evolução extraídos da genética das populações não consegue dizer mais do que “gaivotas dão… gaivotas”, “lagartos dão… lagartos” e “pelicanos dão… pelicanos”.

    Ou seja, ele não consegue refutar o que a Bíblia ensina: os seres vivos reproduzem-se de acordo com o seu género.


    Admito que isto seja um pouco embaraçoso quando se debate com o criacionismo bíblico.

    O que se passa então? O que é que está a falhar?

    Qual é o erro do Ludwig?

    Ou, melhor, qual é o erro da genética das populações que induz o Ludwig em erro?

    A resposta é dada pelo evolucionista John Endler, no seu livro Natural Selection in the Wild, de 1986.

    John Endler é referido por Richard Dawkins, no livro The Greatest Show On Earth, como um evolucionista importante, que estudou o modo como os guppies “evoluem” para… guppies!

    John Endler tem o mérito por chamar a atenção para que:

    1) a selecção natural não é o mesmo que evolução, já que não explica por si só a origem de novas estruturas e funções e de nova variabilidade genética;

    2) os geneticistas das populações utilizam o termo evolução para referir a mudança de frequência dos genes e alelos, descurando, desde há décadas, o problema do surgimento de novos genes e alelos e das suas propriedades.

    Isto, repito, é afirmado por um importante cientista evolucionista!

    Ou seja, quando os geneticistas das populações falam na ocorrência de evolução eles aludem geralmente a alterações de frequência de genes e alelos pré-existentes, recombinadoras de características morfológicas pré-existentes, uma realidade que nenhum criacionista nega.

    O problema é que estas alterações ocorrem sempre dentro do mesmo género (“gaivotas dão…gaivotas”, "pelicanos dão...pelicanos"), nada tendo a ver, necessariamente, com a criação de novos genes, estruturas e funções mais complexas.

    Para John Endler, biólogos, geneticistas e geneticistas das populações devem dar mais atenção ao problema da criação de estruturas e funções inovadoras, em vez de se cingirem ao estudo da variação dentro de cada género a partir de informação e estruturas pré-existentes.

    O erro do Ludwig é usar a genética das populações como evidência de evolução, embora a aquela seja acusada, pelos próprios evolucionistas, de se concentrar na alteração da frequência de genes e alelos e descurar a origem de informação codificada nova, capaz de transformar partículas em pessoas, bactérias em bacteriologistas, peixes em pescadores.

    O erro do Ludwig e dos geneticistas das populações não escapa aos criacionistas nem aos evolucionistas mais atentos.

    ResponderEliminar
  21. O LUDWIG, A RESISTÊNCIA DAS BACTÉRIAS AOS ANTIBIÓTICOS E A EVOLUÇÃO


    Há uns meses atrás, o Ludwig defendeu que a síntese de betalactamase, uma enzima que ataca a penicilina destruindo o anel de beta-lactam, é uma evidência de evolução.

    Será?

    Nesse caso, o antibiótico deixa de ser funcional, pelo que os microorganismos que sintetizam betalactamase passam a ser resistentes a todos os antibióticos.

    A betalactamase é fabricada por um conjunto de genes chamados plasmidos R (resistência) que podem ser transmitidos a outras bactérias.

    Em 1982 mais de 90% de todas as infecções clínicas de staphylococcus eram resistentes à penicilina, contra perto de 0% em 1952.

    Este aumento de resistência ficou-se a dever, em boa parte, à rápida transferência por conjugação do plasmido da betalactamase.

    Como se pode ver, neste exemplo está-se perante síntese de uma enzima de banda larga com perda de especificidade e, consequentemente, com perda de informação.

    A rápida obtenção de resistência conseguiu-se por circulação de informação.

    Em caso algum estamos perante a criação de informação genética nova, codificadora de novas estruturas e funções.

    Na verdade, na generalidade dos casos conhecidos em que uma bactéria desenvolve resistência a antibióticos acontece uma de três coisas:

    1) a resistência já existe nos genes e acaba por triunfar por selecção natural, embora não se crie informação genética nova.

    Um exemplo de Janeiro de 2011 pode ver-se na bactéria “Streptococcus pneumoniae” e na sua resistência às vacinas.

    Aí se verificou que a resistência já existia nalgumas variedades, antes de introduzida a vacina. A selecção natural eliminou as variedades sem resistência, não criando nada de novo. Neste caso, a bactéria “Streptococcus pneumoniae” “evoluiu” para… bactéria “Streptococcus pneumoniae”.

    2) a resistência é conseguida através de uma mutação que destrói a funcionalidade de um gene de controlo ou reduz a especificidade (e a informação) das enzimas ou proteínas;

    3) a resistência é adquirida mediante a transferência de informação genética pré-existente entre bactérias, sem que se crie informação genética nova (o que sucedeu no exemplo do Ludwig).

    Nenhuma destas hipóteses corrobora a criação naturalista da informação codificada necessária à transformação de partículas em pessoas.

    Referências:

    How Bacteria Keep Ahead of Vaccines and Antibiotics
    ScienceDaily (Jan. 28, 2011) , sobre a bactéria Streptococcus pneumonia.

    Aí se diz, “The research suggests that variants that allowed some bacteria to escape the new vaccine were present before the vaccine was introduced.”

    ResponderEliminar

Se quiser filtrar algum ou alguns comentadores consulte este post.