LINUX.ORG.RU
ФорумTalks

Бинаризация всея Линукса

 ,


0

0

Копипаста с опеннета:

Раздумывая над способами модернизации командной строки UNIX, Александр Ларсон (Alexander Larsson), активный разработчик GNOME и мантейнер таких проектов, как Nautilus, Gnome-vfs и Dia, предложил в своем блоге новый способ объединения команд с помощью пайпов, основная идея которого заключается в передаче через канал не простых потоков неструктурированных данных, а объектов, представленных в бинарной форме. По словам Александра, его идея может сделать командный интерфейс более гибким, но не таким переусложненным как Microsoft PowerShell.

В качестве основы для представления объектов Александр предложил использовать тип данных GVariants из библиотеки Glib, используемой также в GTK+ и GNOME. Он реализовал несколько утилит, повторяющих функциональность стандартных UNIX-команд ps, sort, head и других, которые принимают на вход и выдают на выходе объекты типа GVariants, причем в случае, если вывод осуществляется в терминал или принимающая команда не поддерживает на входе объекты, данные будут переданы в текстовой форме. Например, вывод его версии ps в терминал будет выглядеть так:

$ dps
   <{'pid': <uint32 1>, 'ppid': <uint32 0>, 'euid': <uint32 0>,  'user': <'root'>,...
   <{'pid': <uint32 2>, 'ppid': <uint32 0>, 'euid': <uint32 0>,  'user': <'root'>,...
   ...

Применив к этому выводу другие утилиты можно легко отсортировать объекты по необходимым полям и выполнить их фильтрацию на основе тех или иных полей:

$ dps | dfilter euid \< 1000 | dsort rss
   <{'pid': <uint32 1>, 'ppid': <uint32 0>, 'euid': <uint32 0>, 'user': <'root'>,
   <{'pid': <uint32 769>, 'ppid': <uint32 745>, 'euid': <uint32 0>, 'user': <'root'>,
   ...

В конце концов, можно использовать специальные утилиты для вывода данных удобочитаемом виде:

dps | dfilter euid \< 1000 | dsort rss | dhead 4 | dtable pid user rss vsize cmdline
   pid     user      rss    vsize  cmdline
     1   'root'    24408    61488 '/usr/lib/systemd/systemd'
   769   'root'    16028   108000 '/usr/bin/Xorg :0 -background none -logverbose 7 -seat seat0 -nolisten tcp vt1'
   608   'root'    15076   255312 '/usr/bin/python /usr/sbin/firewalld --nofork'
   747   'root'     8276   452604 '/usr/sbin/libvirtd'

Как говорит Александр, такой подход существенно расширяет возможности обработки данных, позволяя, например, применять к выводу типо-зависимые операции (сравнение euid с числом), выполнять правильное обрезание списка (без учета заголовка), работать одновременно со всеми полями объекта даже в том случае, если они не будут выведены на экран. Кроме того, все данные между командами передаются в бинарной форме, благодаря чему их обработка существенно упрощается.

Короче, как я понял, скоро без комплекта специальных утилит даже вывод ps хрен прочитаешь. Чудненько.

Kindly_Cat
() автор топика

активный разработчик GNOME и мантейнер таких проектов, как Nautilus

У гномеров опять обострение?

Deleted
()
Ответ на: комментарий от Kindly_Cat

скоро без комплекта специальных утилит даже вывод ps хрен прочитаешь

И сейчас так - комплект спецутилит для работы с текстом (что само по себе плохо, т.к. там нет никаких спецификаций на формат). Или ты умеешь электроимпульсы прямо мозгом улавливать?

plm ★★★★★
()

Хм, а простите, что усложнено в powershell? И чем это отличается от концепции PS? И там и там передаются сериализованные объекты. Ну разве что эта реализация через жопу - срет в терминал данными которыми должна срать исключительно в пайпы

Orlangoor ★★★★★
()

я все понимаю, но чо им всем вперлась эта бинаризация - структирированного текста чем не хвататает?

bender ★★★★★
()
Ответ на: комментарий от Kindly_Cat

Ты текст новости читал или слёту покрасоваться умищем решил?

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

plm ★★★★★
()
Ответ на: комментарий от Deleted

У гномеров опять обострение?

Их Поттеринг покусал.

Lavos ★★★★★
()
Ответ на: комментарий от bender

Ну вот же:

Как говорит Александр, такой подход существенно расширяет возможности обработки данных, позволяя, например, применять к выводу типо-зависимые операции (сравнение euid с числом), выполнять правильное обрезание списка (без учета заголовка), работать одновременно со всеми полями объекта даже в том случае, если они не будут выведены на экран. Кроме того, все данные между командами передаются в бинарной форме, благодаря чему их обработка существенно упрощается.

Kindly_Cat
() автор топика

И, да, этот баян уже по толксам поизносился.

Axon ★★★★★
()
Последнее исправление: Axon (всего исправлений: 1)

Да откуда такое желание заменить текст на бинарные данные? Нафига вообще модернизировать командную строку? Пусть квадратики рисуют в metro, если хочется новых интерфейсов

Всем читать Реймонда!!

boombick ★★★★★
()
Ответ на: комментарий от boombick

Да откуда такое желание заменить текст на бинарные данные? Нафига вообще модернизировать командную строку?

Потому что консоль это прошлый век, очевидно же, что всё должны использовать GUI. Желательно, чтобы это был Gnome 3. А тем, кто не хочет - испортим жизнь.

Kindly_Cat
() автор топика
Ответ на: комментарий от Kindly_Cat

И как это оправдывает ту ахинею, что ты написал?

Это не ахинея, это твое недопонимание базовых понятий.

plm ★★★★★
()
Ответ на: комментарий от boombick

Да откуда такое желание заменить текст на бинарные данные?

Они хотят записать линукс на ДНК :)

P.S. Новый рекорд: 5,27 мегабит (658 килобайт) информации, в том числе 53,5 тысячи слов, 11 картинок и 1 ява-скрипт.

quickquest ★★★★★
()
Ответ на: комментарий от boombick

Да откуда такое желание заменить текст на бинарные данные?

Структурированные бинарные данные в общем случае обрабатывать быстрее и надежнее, нежели текст в свободном формате.

Ваш К.О.

plm ★★★★★
()

Будущее меня все больше пугает. Не смейте закапывать BSD, оно нам еще может очень даже пригодиться!

urxvt ★★★★★
()
Ответ на: комментарий от plm

нежели текст в свободном формате.

Текст в свободном формате ближе к человеку нежели бинарные данные. зачем тянуть утилиты для расшифровки бинарников, нежели можно просто прочитать текст?

обрабатывать быстрее

Сомневаюсь, что с современными мощностями это быстрее будет так заметно.

Deleted
()
Ответ на: комментарий от plm

Детюня, вывод ps я сейчас могу прочесть без всяких черезпайпных утилит. Просто наберу ps с парой ключей и всё. А это говно (dps) без утилит пачкает экран невразумительной помойкой. Демонстрируй своё искромётное остроумие в другом месте, активный участник Fedora.

Kindly_Cat
() автор топика

>В качестве основы для представления объектов Александр предложил использовать тип данных GVariants из библиотеки Glib, используемой также в GTK+ и GNOME.
Кто бы сомневался.

Не нужно.

Deleted
()

Почему не JSON? И зачем делать отдельные утилиты? Добавить возможность вывода в текущие. И бить по рукам за идею удалить текущий процессинг текста! И да, смысл в этом определённый есть, однако стоит дополнять существующие инструменты, а не городить новый огород, да еще и с зависимостью от dbus!

XVilka ★★★★★
()
Последнее исправление: XVilka (всего исправлений: 1)
Ответ на: комментарий от plm

Структурированные бинарные данные авторам гуишных утилиток обрабатывать быстрее и надежнее, нежели текст в свободном формате

fixed

Kindly_Cat
() автор топика
Ответ на: комментарий от Axon

Хорошо, что этого чудака вряд ли кто-то послушает.

Чтоже в этом хорошего? Сравни две команды: Unixway:

ps aux | grep foobar
Powershell way:
ps | Where {$_.ProcessName -eq "foobar"}
(Да, я в курсе что можно записать просто ps foobar, это усложненный пример)

И там и там одинаковая задача, найти процесс, однако в Unixway вместо работы с процессами, мы работаем со строками, и чтобы хоть как-то изменить вывод, придется чуть ли не писать микропарсер.

Orlangoor ★★★★★
()
Ответ на: комментарий от Kindly_Cat

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

Вопрос не в тебе, вопрос в том, что удобнее (и надежнее) читать системе. Перечитай новость еще раз, раз не дошло сходу.

plm ★★★★★
()
Ответ на: комментарий от Deleted

Текст в свободном формате ближе к человеку нежели бинарные данные. зачем тянуть утилиты для расшифровки бинарников, нежели можно просто прочитать текст?

Я уже написал ответ выше: авторам Гомна 3 кажется, что пользователям нечего делать в консоли, они должны пользоваться Гноме 3.

Kindly_Cat
() автор топика

grondek

Надеюсь, в том виде, в котором предлгается, оно не будет реализовано. Что мне не нравится:

1. Привязка к GVariant, QVariant или еще чему из больших тулкитов - не вариант, базовые утилиты типа ps не должны тащить за собой полдистрибутива.

2. Отказ от совместимости с кучей написанного и отлаженного софта. Да, вроде как хотят оставить возможность передавать как новый формат, так и текстовые данные. Это влечет за собой увеличение кода, следовательно увеличение количества ошибок, сложность отладки, необходимость писать одно и то же для тесктового и для бинарного ввода/вывода.

3. Вообще, а зачем такие радикальные переделки? Работает - не трожь.

grondek
()
Ответ на: комментарий от XVilka

Почему не JSON?

Вот это правильный вопрос. Я вообще предлагаю использовать protobuf, хотя json можно прочитать текстовым пейджером - это серьезный плюс.

plm ★★★★★
()
Ответ на: комментарий от plm

Вопрос не в тебе, вопрос в том, что удобнее (и надежнее) читать системе

Слушай, да мне как-то по барабану как и что там удобнее системе. Система для пользователя, а не наоборот.

Kindly_Cat
() автор топика
Ответ на: комментарий от Kindly_Cat

Слушай, да мне как-то по барабану как и что там удобнее системе.

Ок. А другим - не по барабану.

plm ★★★★★
()
Ответ на: комментарий от grondek

Привязка к GVariant, QVariant или еще чему из больших тулкитов - не вариант, базовые утилиты типа ps не должны тащить за собой полдистрибутива.

+100

Kindly_Cat
() автор топика
Ответ на: комментарий от grondek

Работает - не трожь.

Не работает надежно. В SysV-скриптах постоянно годами неисправленные косяки, когда там ищутся пиды грепом.

plm ★★★★★
()
Ответ на: комментарий от Kindly_Cat

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

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

А это говно (dps) без утилит пачкает экран невразумительной помойкой

Если пытаться его пускать из оболочки, которая не адаптирована для вывода сериализованных значений GVariants. Если эта идея будет принята ты мусора на экране не увидишь.

Begemoth ★★★★★
()
Ответ на: комментарий от plm

Это не для человека предложено.

Вот именно. Пользователь нахрен не нужен, главное - удовлетворить свои фантазии о «правильной» системе.

Kindly_Cat
() автор топика
Ответ на: комментарий от Orlangoor

Сравни две команды: Unixway:

ps aux | grep foobar

Powershell way:

ps | Where {$_.ProcessName -eq «foobar»}

Сравнил. Unix-версия короче. Если использовать pgrep, вообще получится:

pgrep foobar

Где особая магия Powershell?

tailgunner ★★★★★
()
Ответ на: комментарий от plm

Структурированные бинарные данные в общем случае обрабатывать быстрее и надежнее, нежели текст в свободном формате.

Потеряем универсальность.

boombick ★★★★★
()
Ответ на: комментарий от Kindly_Cat

Ну запиливайте это гумно в свою Федорку

Пока рано запиливать. Пока обсуждается. Но ты все правильно понял, и ты тоже будешь этим пользоваться.

plm ★★★★★
()
Ответ на: комментарий от XVilka

Почему не JSON?

ИМХО лучше бы XML, но только в случае реализации как в PS - хост-консоль ни в каком виде не должна показывать внутреннее представление. Исключительно преобразованные в удобочитаемые строки данные.

Orlangoor ★★★★★
()
Ответ на: комментарий от boombick

Потеряем универсальность.

Наоборот получим. Структурированный формат можно преобразовывать потом хоть в стихи.

plm ★★★★★
()
Ответ на: комментарий от Orlangoor

Вы же сами и указали на правильный метод решения задачи, который уже есть. Если вам нужен какой-то специфический вывод от команды, добавьте в неё такую возможность. И не надо говнякать гибкость строк.

Axon ★★★★★
()
Ответ на: комментарий от Orlangoor

Потеряем универсальность.

Будет слишком шумно. В общем и json тоже не очень малословен, но XML можно просто слишком раздуть.

plm ★★★★★
()
Ответ на: комментарий от Kindly_Cat

Система для пользователя, а не наоборот.

Тебе на убунтологию, там это кричат чрезвычайно часто.

Deleted
()
Ответ на: комментарий от plm

Вы видимо не поняли новость. Они хотят совсем отказаться от вывода сообщений простым текстом, т.е. что-бы посмотреть в консоли вывод ps мне надо будет тянуть какие-то гномо/гтк-либы и вывод передавать специальной утилитке.

Deleted
()
Ответ на: комментарий от Begemoth

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

А что так мелко забрался? Давай сразу с течения электронов в процессоре начнём?

Если пытаться его пускать из оболочки, которая не адаптирована для вывода сериализованных значений GVariants

О чём и речь. Чтобы получить удобочитаемый вывод базовой консольной утилиты, мне нужно будет поставить в систему половину Гнома. Это такая блестящая идея, что я млею и благоговею. Просто гений инженерной мысли.

Kindly_Cat
() автор топика
Ответ на: комментарий от plm

Ключевое слово «потом»

По-моему это лишние телодвижения.

boombick ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.