The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Разработка новых вариантов diff и grep для обработки сложных структур данных

09.12.2011 16:36

На конференции администраторов крупных систем LISA (Usenix Large Installation System Administration) два исследователя из Дартмутского университета выступили с идеей создания расширенных вариантов утилит diff и grep для обработки сложных типов данных. В настоящее время утилиты ещё находятся на этапе создания работающих прототипов, доступен только восьмистраничный документ с подробным описанием сути проекта. Код будет открыт после завершения разработки. Работа ведётся при финансировании от компании Google и Министерства энергетики США.

Развиваемые в рамках проекта контекстно независимый вариант утилиты Grep (bgrep) и иерархический Diff (bdiff), ориентированы на разбор синтаксических блоков кода, вместо манипулирования однострочными записями. Таким образом bdiff и bgrep могут оперировать частями файлов конфигураций, логов и других наборов данных, состоящих из логически связанных многострочных блоков. В качестве примеров таких связанных блоков можно привести параметры сетевых интерфейсов в Cisco IOS или настройки виртуальных хостов Apache.

Для работы с такими связанными наборами данных стандартные diff и grep не подходят, так как являются слишком низкоуровневыми инструментами, не учитывающими структуры при оценке различий или организации поиска. При замене порядка следования настроек в блоке, обычная утилита diff отобразит наличие различий, в то время как фактически данные останутся неизменными. Например, в настройки может быть внесено всего два изменения, но за счет перемещения окружающих изменение данных, diff может отобразить десяток изменений, что существенно затрудняет выявление фактических отличий. В случае grep трудности связаны с невозможностью охватить в одном регулярном выражении нескольких элементов в рамках одного уровня вложенности структур или учесть данные, зависимые от определённого параметра.

  1. Главная ссылка к новости (http://www.itworld.com/softwar...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/32513-grep
Ключевые слова: grep, diff
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (46) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Crazy Alex (ok), 16:42, 09/12/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    давно пора, в общем-то - построчные текстовые форматы много где умерли, а для массы распространенных случаев (вроде ini того же) можно сделать дабольно простые универсальные инструменты
     
     
  • 2.2, Аноним (-), 16:46, 09/12/2011 [^] [^^] [^^^] [ответить]  
  • –11 +/
    Где ты в никсах видел ini-файлы? Текстовые файлы нигде не умерли, кроме твоего больного виндозного воображения. Виндоз головного мозга - как звучит!
     
     
  • 3.4, Sokoloff (?), 17:03, 09/12/2011 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Samba, mySql, openssl, git ... то что у них расширение не .ini не меняет формат.
     
     
  • 4.20, Аноним (-), 00:25, 10/12/2011 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >Samba, mySql, openssl, git ... то что у них расширение не .ini не меняет формат.

    Вы так пишете как будто примитивный общий формат конфигурационных файлов сразу же подразумевает .ini . Дотфайлы, не ?

     
     
  • 5.32, Michael Shigorin (ok), 01:31, 11/12/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>Samba, mySql, openssl, git ... то что у них расширение не .ini не меняет формат.
    > Вы так пишете как будто примитивный общий формат конфигурационных файлов сразу же
    > подразумевает .ini . Дотфайлы, не ?

    Да при чём тут дотфайлы...  А этот формат и впрямь называется ini-style.

     
  • 5.44, Аноним (-), 14:31, 12/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Вы так пишете как будто примитивный общий формат конфигурационных файлов сразу же подразумевает .ini

    Впервые он начал широко использоваться именно в INI.

    > Дотфайлы, не ?

    Дотфайлы - это такие файлы, которые не выводятся в ls без добавления -a. Не обязательно, чтобы это были конфиги.

     
  • 2.10, Аноним (-), 19:10, 09/12/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Напротив, много где умерли нетекстовые форматы.
     
     
  • 3.15, Аноним (-), 22:07, 09/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Напротив, много где умерли нетекстовые форматы.

    Речь шла не о текстовых форматах вообще, а о построчных текстовых форматах.

     
  • 3.18, Аноним (-), 00:12, 10/12/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Напротив, много где умерли нетекстовые форматы.

    Ага, на OSM сперва ушиблись и стали делать карту в XML. А когда карта планеты стали 250Гб - обосрались кирпичами и сделали бинарный формат. Тем более что редактировать такую XMLину все-равно малореально. А бинарный формат зато весит лишь 14 Гб для той же карты. Такая вот незначительная разница. Всего почти в 20 раз :)

     
     
  • 4.28, Аноним (-), 11:51, 10/12/2011 [^] [^^] [^^^] [ответить]  
  • +3 +/
    XML вообще уродливый костыль костылей. Не зря вон МежДелМаш производит аппаратные XML-акселераторы за сотни тысяч денег. Как-то при объемах ширпотребовских усб-винтов по три тера и таких же масштабах данных, XML тихо слился... Ну-кося, попарси многопроходно XML-файло объемчиком 1 терабайтик всего... Что, выкуси? Ай, не выходит каменный цветок, Данила-мастер!
     

  • 1.3, Michael (??), 17:01, 09/12/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Для кода такие тулзы были бы весьма полезны, а то сделаешь форматирование или коммментарий добавишь и сидишь, в патчах разбираешься, какое изменение существенно, какое - нет.
     
     
  • 2.5, fi (ok), 17:36, 09/12/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    на форматирование помогает ключик -w :)
     
     
  • 3.6, vayerx (ok), 17:54, 09/12/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    форматирование не всегда ограничевается расстановкой пробелов ;)
     
  • 3.7, Michael (??), 17:55, 09/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    При разбиении длиной строки на несколько, или, наоборот, при слиянии - не очень он помогает :). Ну и изменения в комментариях тоже не всегда хочется видеть.
     

  • 1.8, Аноним (-), 18:19, 09/12/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Успехов конечно авторам, но я думаю что это невозможно, будет слишком сложно и не надёжно этим пользоваться.
     
     
  • 2.9, Муха (?), 19:03, 09/12/2011 [^] [^^] [^^^] [ответить]  
  • +10 +/
    > будет слишком сложно и не надёжно этим пользоваться.

    Да не парьтесь, сейчас весь софт такой

     
  • 2.11, BratSinot (?), 20:55, 09/12/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Даже если и будет сложно пользоваться, быстрее будет один раз разобраться и экономить кучу времени, чем каждый раз вручную делать.
     
  • 2.38, Crazy Alex (ok), 18:09, 11/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    А не надо пытаться обработать все мыслимые случаи - простыми вариантами (к примеру, в которых можно задать правила для выделения элементов, тип элемента и фокусы вроде вхождения) можно перекрыть очень многое. Считай, нечто наподобие селекторов CSS с задаваемыми пользователями элементами. Плюс зашить несколько вариантов (json, xml bin-style...), а в идеале сделать определения формата подгружаемыми.
     

  • 1.12, Аноним (-), 21:23, 09/12/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Почему LISA, если правильно ULISA?
     
     
  • 2.14, а (?), 21:54, 09/12/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет, Usenix — это конференция.
     

  • 1.13, gaga (?), 21:53, 09/12/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    как только не извращаются люди, лишь бы не принимать какой-нибудь унифицированный текстовый формат описания данных, вроде JSON или какого-нибудь варианта S-expressions.
     
     
  • 2.16, Аноним (-), 22:09, 09/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > как только не извращаются люди, лишь бы не принимать какой-нибудь унифицированный текстовый
    > формат описания данных, вроде JSON или какого-нибудь варианта S-expressions.

    Ну переставит вам какая-нибудь софтина строки в JSONе - сами же извиняться к авторам bdiff побежите :)

     
     
  • 3.29, Аноним (-), 11:52, 10/12/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> как только не извращаются люди, лишь бы не принимать какой-нибудь унифицированный текстовый
    >> формат описания данных, вроде JSON или какого-нибудь варианта S-expressions.
    > Ну переставит вам какая-нибудь софтина строки в JSONе - сами же извиняться
    > к авторам bdiff побежите :)

    Пошлем-ка мы такую софтину в /dev/null по-быстрому, пока никто не видел.

     
  • 2.17, axe (??), 23:52, 09/12/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > как только не извращаются люди, лишь бы не принимать какой-нибудь унифицированный текстовый
    > формат описания данных, вроде JSON или какого-нибудь варианта S-expressions.

    Как раз таки про него вспомнил. Как народ смотрит на то, что бы конфиги были в джейсоне?
    У бинда конфиг уже напоминает джейсон. Как насчет логов? Было бы достаточно просто представить их в виде объектов и парсить не регулярками... Тьху где то я это уже видел, ну его к черту, sed, grep, awk наше все. Лучшее - враг хорошего.

     
     
  • 3.23, all_glory_to_the_hypnotoad (ok), 02:08, 10/12/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    у бинда конфиг перл стайл, си стайл, но никак не json
     
  • 3.31, Alexander Yastrebov (?), 15:59, 10/12/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я вам напомню одно большое ограничение JSON в этом плане - в нем нет комментариев
     
     
  • 4.36, anonimous (?), 15:33, 11/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    http://ru.wikipedia.org/wiki/JSON#.D0.A1.D1.80.D0.B0.D0.B2.D0.BD.D0.B5.D0.BD.
    Вы уверены?
     
     
  • 5.37, Alexander Yastrebov (?), 15:38, 11/12/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > http://ru.wikipedia.org/wiki/JSON#.D0.A1.D1.80.D0.B0.D0.B2.D0.BD.D0.B5.D0.BD.
    > Вы уверены?

    Уверен: http://json.org/  
    Хотя никто не мешает сделать парсер с поддержкой комментариев

    Ответ автора стандарта: http://tech.groups.yahoo.com/group/json/message/152

     
  • 3.39, Crazy Alex (ok), 18:15, 11/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Джейсон - неудобный формат для писания руками. Слишком много кавычек, не прощает простейшие ошибки (вроде запятой после последнего элемента объекта или массива), отсутствие комментариев уже упоминали...

    В итое гимеем ного ругани на синтаксис. Знаю, что говорю - у нас в крпном проекте конфигурация на json - многовато мороки с ним.

     
  • 2.22, all_glory_to_the_hypnotoad (ok), 02:07, 10/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    потому что JSON гогно. А действительно "унифицированные форматы описания данных" (тм)  (это xml и т.п.) давно используют, но лучше жить от этого всё равно не стало
     
     
  • 3.35, gaga (?), 13:39, 11/12/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    они не человекочитаемые и очень тяжелые
     
     
  • 4.41, all_glory_to_the_hypnotoad (ok), 00:28, 12/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    это смотря как писать, xml можно использовать вполне няшно. Кроме xml есть другие вариации,  yaml например.
     
  • 4.45, Аноним (-), 14:33, 12/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > они не человекочитаемые и очень тяжелые

    JSON тоже.

     

  • 1.19, Сергей (??), 00:15, 10/12/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
      Слижком сложно все будет, а почему бы не внести предложение все конфиги хранить в xml к примеру...
     
     
  • 2.21, Deffic (?), 01:04, 10/12/2011 [^] [^^] [^^^] [ответить]  
  • +5 +/
    >   Слижком сложно все будет, а почему бы не внести предложение
    > все конфиги хранить в xml к примеру...

    Прошу прощение за оффтопик, но XML...
    Конфиг - это API между человеком и программой, а не между программами.
    К сожалению многие об этом уже забыли.
    Программисты - не занимаются форсмажорными ситуациями.
    exWinAdmins - не имеют понятия, какую гибкость даёт текстовый конфиг по сравнению с GUI.

     
     
  • 3.26, poherly (?), 07:38, 10/12/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > exWinAdmins

    почему ex ?

     
  • 2.24, nuclight (ok), 02:42, 10/12/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >   Слижком сложно все будет, а почему бы не внести предложение
    > все конфиги хранить в xml к примеру...

    Так потом разницу между XML обычным diff и не посмотреть, о чем и новость собственно.

    P.S. Собсно это одна из многих причин, по которой XML должен умереть, но это тема для срача, а не для новости

     
     
  • 3.33, Michael Shigorin (ok), 01:36, 11/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >> Слижком сложно все будет, а почему бы не внести предложение
    >> все конфиги хранить в xml к примеру...

    Как и отметили, это не для людей.

    https://lh4.googleusercontent.com/-30fhF6xRNf4/Ttub-IyL1RI/AAAAAAAAA-g/ehOfeEK

    > Так потом разницу между XML обычным diff и не посмотреть, о чем
    > и новость собственно.

    Попадался на глаза xmldiff, но так уже и не помню -- дошло до него или проще обошлись...

    > P.S. Собсно это одна из многих причин, по которой XML должен умереть,
    > но это тема для срача, а не для новости

    Да пускай себе живёт, только бы не пытались его скотчем примотать ко всему подряд, невзирая на осмысленность.

     
  • 3.47, виндотролль (?), 12:54, 14/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Посмотреть. Это даже тривиальная, в современных реалиях, задача. Вот только, парсинг требуется. Хотя, это не проблема при сравнении конфигов, размер которых вряд-ли превысит мегабайт.
    Проблема с ХМЛ другая — менее удобно для человека
     

  • 1.27, Аноним (-), 11:32, 10/12/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Не думаю, что сабж будет сильно популярен. Преимущество теплых ламповых grep/diff/sed в простоте (один раз научился пользоваться - никогда не забудешь) и универсальности (пригождаются очень часто, а когда есть хорошие инструменты для работы с текстом, решения проблем сами собой приходят в голову)
     
     
  • 2.30, Аноним (-), 11:54, 10/12/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Не думаю, что сабж будет сильно популярен. Преимущество теплых ламповых grep/diff/sed в
    > простоте (один раз научился пользоваться - никогда не забудешь) и универсальности
    > (пригождаются очень часто, а когда есть хорошие инструменты для работы с
    > текстом, решения проблем сами собой приходят в голову)

    Ковровые бомбардировки квадратноколесными велосипедами вообще повсеместно вошли в моду - введены разными малоадекватными потрясателями основ. Достаточно посмотреть на всяческие замены syslogd, или устоявшегося за десятиления разбиения директорий... Одно да потому, снова и снова. И сотни дистров.

    И все это гогно выдается за типа развитие.

     
  • 2.34, Michael Shigorin (ok), 01:38, 11/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Преимущество теплых ламповых grep/diff/sed в простоте [...] и универсальности

    См. тж. "full exploitation": http://lwn.net/Articles/411845/

     
     
  • 3.43, evkogan (?), 08:23, 12/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >> Преимущество теплых ламповых grep/diff/sed в простоте [...] и универсальности
    > См. тж. "full exploitation": http://lwn.net/Articles/411845/

    Нифига они не универсальны, постоянно приходится извращаться с grep'ом многострочных форматов. Последний раз сочинял скрипт для grep'анья вывода "multipath -l"
    Если в результате проекта можно будет легко grep'ать такое, без наколеночного костыля, будет класно.

     
     
  • 4.46, Michael Shigorin (ok), 16:02, 12/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >>> Преимущество теплых ламповых grep/diff/sed в простоте [...] и универсальности
    >> См. тж. "full exploitation": http://lwn.net/Articles/411845/
    > Нифига они не универсальны, постоянно приходится извращаться с grep'ом
    > многострочных форматов.

    Вы, может, немного не поняли.  Кофе они тоже не варят, но вот multiline regex умеют. :) (хотя иногда и впрямь проще разобрать | while read line; do case "$line" in ... и понеслась с выставлением флажков, угу -- если не разводить скрипты на sed/awk/perl/$etc)

     
  • 2.40, Crazy Alex (ok), 18:18, 11/12/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Ровно также выучите один язык задания правил поиска тегов - и вперёд. И хоть xml, хоть json,хотьещё что - у ваших ног. Вплоть до бинарных форматов, кстати, если разумно описать. Регэкспы же как-то освоили? А эта штука попроще будет.

    При этом учтите, что на все основные форматы правила парсинга напишут за вас, вам останется только задавать что-то наподобие CSS селекторов - где именно смотреть или выкусывать хотите. Так что для подавляющего большинства случаев вообще всё примитивно будет.

     

  • 1.42, lucentcode (ok), 03:18, 12/12/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Давно пора. Очень не хватает. Надеюсь, эти фичи быстро интегрируют и с популярным текстовыми редакорами и IDE.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру