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 с числом), выполнять правильное обрезание списка (без учета заголовка), работать одновременно со всеми полями объекта даже в том случае, если они не будут выведены на экран. Кроме того, все данные между командами передаются в бинарной форме, благодаря чему их обработка существенно упрощается.

Ответ на: комментарий от geekless

Ага, вот каждому админу надо непременно выучить питон. Бред.

Через пять лет:

Ага, вот каждому админу надо непременно освоить консоль. Бред.

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

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

Кто и где изуродовал bash? Покажите мне этого человека. (Ну не считая того, что он от рождения изуродован.)

Пока что я вижу только белок-истеричек, вопящих от того, что кто-то где-то решил сделать десяток новых утилит.

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

Это не ответ, а отписка. Ты тут недавно заявлял, мол, старые версии никуда не исчезнут, хочешь - пользуйся, никто никого не заставляет. А тут выясняется, что всем пофиг что ты хочешь, жри что дают или становись программистом сам. Слив засчитан, короче.

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

Кто и где изуродовал bash?

Пока никто. И я надеюсь, что в обозримом будущем этого и не произойдёт.

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

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

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

А еще напишут параллельный набор утилит? И до кучи новый шелл, который позволит писать выражения селекции в удобочитаемом виде, без килограммов экранирования? И в результате это даст... что именно?

Это наконец-то даст возможность нормально скриптовать на sh-подобном языке, пользуясь всеми преимуществами юниксвея при этом.

Пока что скриптовать нормально можно только на руби (или на питоне — для извращенцев), которым до юниксвея и легковесности как до Луны. Они вообще не для этого создавались.

geekless ★★
()

Идея интересная. Пусть запилят возможность пользоваться двумя вариантами - объектным и классическим одновременно. Для человеков и для скриптов.

P.S. Кто-нибудь уже сказал «XML»? Тред не читал.

power
()
Ответ на: комментарий от geekless

>наконец-то даст возможность нормально скриптовать на sh-подобном языке

Уже есть же рубипитоны, зачем тянуть кота за хвост?

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

передаются в бинарной форме, благодаря чему их обработка существенно упрощается.

благодаря чему их обработка существенно упрощается.

существенно упрощается

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

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

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

MahMahoritos ★★★
()

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

при всех достоинствах подхода (а они есть и неоспоримые), существуют как минимум 2 технические затыки:

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

- в виде передаваемых данных - их придётся стандартизовать для всех всех утилит и передаваемых между ними объектов. Просто impossible

MKuznetsov ★★★★★
()

Страшная Чорная Консоль! Теперь еще страшнее!
А все потому, что люди забыли Perl.

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

Тебе дело есть, чем люди занимаются?

Ы? Мне идея, в общем, понравилась еще в Hotwire Shell. Но когда ее преподносят как «новую реализацию именованных каналов» или даже «Rethinking shell pipeline», мне немного не по себе. Вся новизна этого укладывается в упомянутую опцию --object и команду «filter-objects», а фанфар - будто они Unix изобрели еще раз.

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

жри что дают или становись программистом сам

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

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

Много кто сказал «json». И таки это правильно.

Да плевать что под капотом. Была бы типизация, схема, и API.

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

Много кто сказал «json». И таки это правильно.

Нет. Как раз таки это говно полное. Потому что убогий key-value без средства определения и валидации формата.

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

- в виде передаваемых данных - их придётся стандартизовать для всех всех утилит и передаваемых между ними объектов. Просто impossible

На этом месте можно будет сделать какую-нибудь замену sed и прочим awk. И синтаксис у такой команды будет менее наркоманский.

PolarFox ★★★★★
()
Ответ на: Нахрена?! Есть же /proc и /sys от Chaser_Andrey

Дай спеки с описанием как из юзерспейса получить доступ к /proc с моделью отличной от работы с файлами (сюда же mmap и т.п). Давно хочу замутить для перла, но не знаю как.

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

Когда подрастешь, поймешь, что если чего-то хочется, то самому надо поднимать жопу и делать/привлекать к этому людей. Это сейчас тебя родители, видимо, с ложечки кормят, стоит попросить

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

Это наконец-то даст возможность нормально скриптовать на sh-подобном языке

Еще раз - для этого нужна опция --object и команда «filter-objects» (не рассматриваем пока подводных камней). А у автора идеи вагон понтов с претензиями на что-то большее.

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

Это я и без тебя, мудреца, знаю. Только не нужно было тебе кукарекать про «тебя никто не заставляет» и «ты всегда можешь поставить старые версии, если не устраивают новые». Всё, свободен.

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

твой bash с тобой останется навсегда.

Про sysV-init так же говорили.

В отличие от инитов, несколько шеллов вполне могут сосуществовать.

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

Значит люди пиариться любят :) Может в итоге добавят просто опцию в новую версию ps, а Gnome с его GVariants пошлют подальше

P.S. Меня просто сильно раздражают эти темы в Talks, когда любую инициативу (может и сомнительную, да) воспринимают, как конец света

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

В отличие от инитов, несколько шеллов вполне могут сосуществовать.

Да, но пайпы в них во всех одинаковые. А тут замахнулись именно на них.

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

Меня просто сильно раздражают эти темы в Talks, когда любую инициативу (может и сомнительную, да) воспринимают, как конец света

Предъяви претензии к тем, кто пиарит свои креативы.

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

читать не умеешь?

А сам-то? Glib давно полгнома тянет?

Begemoth ★★★★★
()

Пусть в своей GnomeOS делать все, что им заблагорассудится.

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

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

Еще раз - для этого нужна опция --object и команда «filter-objects» (не рассматриваем пока подводных камней). А у автора идеи вагон понтов с претензиями на что-то большее.

Ну за ЧСВ автора я не в ответе.

Но одной опцией ты не обойдешься. Современные утилиты, такие как ls, ps, grep и т.п. — это комбайны. Их надо урезать, распилить на компоненты и сделать нормальную ортогональность.

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

Да, но пайпы в них во всех одинаковые

На pipe(2) здесь не замахиваются, это отсебятина то ли opennet, то ли рашен фидоров. Статья аффтора называется «Rethinking shell pipeline» - тоже с претензиями, но всё-таки с меньшими.

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

Только не нужно было тебе кукарекать про «тебя никто не заставляет» и «ты всегда можешь поставить старые версии, если не устраивают новые»

И что же, петушок, я не так сказал? Ты не можешь этого сделать?

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

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

Структурированный текст обрабатывать гораздо сложнее чем бинарные данные.

Dark_SavanT ★★★★★
()

Типизация - это хорошо.

А тред полон белок истеричек.

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

Они то тут при чем? Они пишут, что хотят. Но они хоть что-то делают, какие-то инициативы проводят. А в Talks только истерию поднимают и орут «ненужно»

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

>Меня просто сильно раздражают эти темы в Talks, когда любую инициативу (может и сомнительную, да) воспринимают, как конец света

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

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

Но одной опцией ты не обойдешься.

Для дела одной опции как раз хватит.

Современные утилиты, такие как ls, ps, grep и т.п. — это комбайны.

Идея в том, _отказаться_ от парсинга текста - это значит, что grep и прочие просто не нужны. ls и прочие ps будут выдавать структурированную информацию вместо текста - для указания этого хватит одной опции.

Их надо урезать, распилить на компоненты и сделать нормальную ортогональность.

Гыгы. Не говоря уже о том, что сама нужда в распиливании и компонентизации сомнительна, это просто не стиль фидоро-революционеров, доказано systemd.

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

Но они хоть что-то делают, какие-то инициативы проводят. А в Talks только истерию поднимают и орут «ненужно»

Пойду насру на площади центральной. Хоть что-то сделаю, всё одно - лучше, чем орать «говно ненужно».

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

На pipe(2) здесь не замахиваются, это отсебятина то ли opennet, то ли рашен фидоров. Статья аффтора называется «Rethinking shell pipeline» - тоже с претензиями, но всё-таки с меньшими.

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

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

Еще раз - для этого нужна опция --object и команда «filter-objects» (не рассматриваем пока подводных камней). А у автора идеи вагон понтов с претензиями на что-то большее.

В идеале большее не помешало бы - например логично было бы дополнить «объектность» методами и свойствами доступными из той же консоли.

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

Они то тут при чем?

Вот при этом:

Они пишут, что хотят.

После того, как они напишут «Новая реализация неименованных каналов», любой здравомыслящий человек захочет написать «ПНХ, придурки».

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

Да. Плюс ты ошибся - «данных с простой структурой» сейчас вообще нет.

данные с простой структурой это текст - и он есть.

Если бы я (и мне подобные) там остался, то кто бы вам линукс разрабатывал?

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

Шли бы вы все сразу в реактос, которая как раз соответствует свому идеалу. Был такой чувак - Герострат, так вот вы все это геростраты.

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

логично было бы дополнить «объектность» методами и свойствами доступными из той же консоли.

Про методы - логика норкомана, которую, слава ТНБ, слишком трудно реализовать.

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

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

И будут еще большими комбайнами, ага.

это просто не стиль фидоро-революционеров, доказано systemd.

В примере из поста мы именно компоненты и видим.

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

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

а это линакс-way: stable api is nonsense. жрите.

thunar ★★★★★
()

Я за такие изменения, потому что не осиливаю regexp'ы.

Хотя здесь еще прозвучали здравые идеи не городить огород с получением данных из утилиты, которая сама читает информацию из /proc, а организовать удобный доступ к procfs (9P?).

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