Google Diff Match Patch Binary Options


Deixe-me começar com abordagens experimentadas e verdadeiras, em seguida, apontar algumas abordagens mais recentes. Aborda que eu vi trabalhar com arquivos binários. Há muito tempo, as pessoas expandiram as versões antiga e nova de um arquivo binário em arquivos de texto temporários (cada byte expandido para 3 bytes: 2 dígitos hexadecimais e uma nova linha). Em seguida, execute estes dois arquivos de texto através de uma versão antiga do diff (que definitivamente não poderia lidar com arquivos binários) para criar um arquivo de patch. Em seguida, transmitimos esse arquivo de patch de texto em linhas de comunicação que ainda não eram limpas de 8 bits. No final do recebimento, um expandiu o arquivo binário antigo em uma versão de texto temporária e, em seguida, corrigiu esse arquivo de texto antigo e, em seguida, compactou o novo arquivo de texto de volta para um arquivo binário (comprimindo cada par de dígitos hexadecimais em um byte e jogando fora As novas linhas e qualquer retorno de carro que possa ter entrado). Mais recentemente, eu tenho usado o rsync (ou algum utilitário criado acima dele, como o Unison). Ele lida facilmente com arquivos binários arbitrários. Eu geralmente faço uma atualização ao vivo, com o Unison executando em minha máquina local e rsync executando no servidor de arquivos, falando de um lado para o outro. Não importa como um arquivo de patch é gerado, você pode usar qualquer utilitário de compressão de dados para compactar esse arquivo. Aborda isso, tanto quanto eu sei, deveria funcionar com arquivos binários. Outra pergunta StackOverflow implica que o vimdiff parece lidar com bytes arbitrários adequadamente. Eu ouvi que algumas ferramentas baseadas em rsync-rdiff e rdiff-backup e duplicidade - permitem que você crie um arquivo de patch. Então, uma pessoa que recebe esse arquivo de patch pode usá-lo para atualizar seu arquivo binário antigo para um novo arquivo binário. A Wikipédia afirma que versões recentes dos utilitários padrão de dif e patch suportam arquivos binários. Você já tentou essa pesquisa de ponta na compressão de arquivos executáveis ​​Se você estiver interessado em pesquisa de ponta sobre como tornar o arquivo delta tão pequeno quanto possível ao atualizar arquivos executáveis, você quer verificar como o Courgette funciona por Stephen Adams 2009 no The Chromium Projetos. Entre outras coisas, o computador que recebe o patch desmonte o aplicativo antigo, converte todos os endereços absolutos e deslocamentos em símbolos, em seguida substitui o código desmontado e reassemble o código remendado para a nova versão do aplicativo. As bibliotecas Diff Match e Patch oferecem algoritmos robustos Para executar as operações necessárias para sincronizar texto sem formatação. Diff: Compare dois blocos de texto simples e retorna eficientemente uma lista de diferenças. Diff Demo Match: Dado um string de busca, encontre sua melhor combinação fuzzy em um bloco de texto simples. Ponderado tanto para precisão quanto para localização. Patch de demonstração do jogo: aplique uma lista de patches em texto simples. Use o melhor esforço para aplicar o patch mesmo quando o texto subjacente doesnx27t corresponde. Patch Demo Atualmente disponível em Java, JavaScript, Dart, C, C, Objective C, Lua e Python. Independentemente do idioma, cada biblioteca possui a mesma API e a mesma funcionalidade. Todas as versões também possuem aros de teste abrangentes. Algoritmos Esta biblioteca implementa o algoritmo de dificuldade Myerx27s que geralmente é considerado o melhor diferencial de uso geral. Uma camada de acelerações pré-dif e limpeza pós-dif envolve o algoritmo diff, melhorando o desempenho e a qualidade de saída.

Comments

Popular Posts