2 pontos por GN⁺ 2025-02-02 | 1 comentários | Compartilhar no WhatsApp
  • Visualizando todos os livros do mundo no espaço ISBN

  • As bibliotecas vêm tentando reunir o conhecimento da humanidade. Na era digital, pode ser possível coletar de forma abrangente todos os escritos humanos que atendam a certos critérios. Bibliotecas sombra cumprem o papel de reunir e compartilhar o maior número possível de livros.

  • O ISBN (International Standard Book Number) é um número de 13 dígitos atribuído a quase todos os livros publicados. Esse número tem uma estrutura específica, o que permite visualizar o espaço ISBN13 com 2 bilhões de posições.

  • Estrutura única do ISBN

    • Os prefixos 978- / 979- do ISBN são um subconjunto do código europeu de mercadorias. Esses prefixos podem ser praticamente ignorados.
    • A Agência Internacional do ISBN atribui grandes blocos de ISBN a organizações internacionais, e cada país subdivide esses blocos para as editoras.
    • Os blocos de ISBN são sempre atribuídos por prefixo. Por exemplo, o Japão recebeu o bloco 978-4 e, a partir dele, atribui ISBNs às editoras.
  • Curva de preenchimento de espaço

    • Se removermos o prefixo e o sufixo do ISBN, obtemos um número decimal entre 0 e 2 bilhões. É preciso uma forma de projetá-lo em um espaço bidimensional.
    • Curvas de preenchimento de espaço como a curva de Hilbert foram propostas, mas podem introduzir estruturas que não existem nos dados.
  • Curva da "estante"

    • O ISBN é essencialmente decimal, e isso pode ser usado para criar uma curva de preenchimento de espaço fácil de entender e visualmente atraente.
    • Essa curva se parece com uma estante, e uma transformação simples de coordenadas permite converter um ISBN em coordenadas.
  • Tiles de mapa

    • É possível gerar imagens em tile para cada prefixo. Para cada conjunto de dados, diferentes informações são armazenadas por pixel.
    • No nível máximo de zoom, 1 pixel corresponde a 1 livro para garantir precisão.
  • Shaders

    • Em vez de armazenar dados RGB diretamente, a renderização é feita com um fragment shader em GLSL. Isso permite escolher a escala de cores depois e combinar vários conjuntos de dados instantaneamente.
  • Visualização em estante

    • Na visualização com zoom total, cada pixel é estilizado como se fosse um livro. Isso é implementado no shader e aparece suavemente conforme o zoom aumenta.
  • Desempenho

    • A renderização de texto é implementada em hierarquia conforme o nível de zoom e o view frustum culling. Para resolver problemas de desempenho, reduz-se a quantidade de elementos HTML e limita-se o conteúdo do DOM.
  • Código de barras

    • No zoom máximo, cada livro tem um código de barras. Isso foi adicionado para reforçar a ideia de ordenar os livros por ISBN.
  • Faixas de editoras

    • Cada "grupo" tem uma faixa grande, e cada editora tem uma faixa menor dentro do grupo. Para visualizar isso, cada grupo e cada editora recebe uma cor única.
  • Trajetória de voo

    • Ao pesquisar um livro ou clicar no minimapa, a visualização se desloca até aquele local. O cálculo da trajetória de voo é complexo e foi aprimorado ao longo de várias tentativas.
  • Arquitetura

    • Não é necessário backend; usa-se um host de arquivos estáticos para armazenar HTML, JS, CSS, PNG e JSON.
    • O frontend é implementado com ThreeJS, React e MobX.
  • Conclusão

    • O projeto oferece uma forma flexível de visualizar todos os livros publicados com ISBN. Foi um projeto muito divertido, e o código-fonte pode ser visto no GitHub.

1 comentários

 
GN⁺ 2025-02-02
Opiniões do Hacker News
  • Quando a Amazon começou, queriam usar a classificação tripla da Library of Congress, mas o provedor de dados a converteu em uma única string, o que dificultava encontrar as divisões. No fim, a ideia acabou sendo abandonada

  • Há casos em que um ISBN é atribuído em duplicidade a vários livros, então a expressão "todos os livros no espaço ISBN" pode ser um exagero. Além disso, existem livros com ISBN incorreto, que podem estar fora do espaço ISBN assumido na postagem do blog

  • A apresentação reflete apenas o conteúdo do Anna’s Archive e tem viés em relação a certos idiomas. As áreas mostradas em preto representam itens ausentes no arquivo

  • O projeto é impressionante, e a possibilidade de ver títulos, códigos de barras, capas e detalhes dos livros chama a atenção. Uma ideia de melhoria seria adicionar uma caixa de seleção para ocultar o painel branco no canto superior esquerdo e o elemento no canto superior direito

  • Dá para pensar em rotas de voo modelando o movimento no semiplano hiperbólico superior. Também foi considerada uma forma de minimizar tiles de acordo com o nível de zoom, e a implementação atual gasta mais tempo com panning em níveis de zoom altos

  • O formato atual da apresentação pareceu um pouco avassalador, mas a visualização de dados e a profundidade são excelentes. Foi interessante observar a atividade editorial de regiões específicas; a Polônia está bastante ativa recentemente, e a China cresceu muito desde 2005

  • O Microsoft SilverLight PivotViewer seria adequado para esta aplicação, e a palestra TED de Gary W. Flake é marcante. Porém, é uma pena que não seja um padrão web

  • Projetos como uma Library of Babel do mundo real são interessantes, e uma biblioteca ou museu infinito realizado em VR valeria investimento

  • É muito legal que, ao dar zoom, apareçam estantes de livros

  • Uma visualização muito legal, e há muitas outras submissões legais