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

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

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

Ты и сейчас их хрен прочтёшь. А парсилку формата можно и в шелл засунуть.

PolarFox ★★★★★
()

А вообще, идея боян и не взлетит по разным причинам.

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

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

ты тоже будешь этим пользоваться

Если Линукс весь, включая генту, покроется этой коростой, я лучше перейду на Мак.

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

Только я считаю, что формат должен быть текстовым. Например json или xml.

PolarFox ★★★★★
()

Полезно было бы сделать это отдельным ключом, а все остальное оставить как есть.

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

Может тебе и в кайф постоянно подстраиваться под всё вокруг, но мне это противно.

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

Система для пользователя

Снова истерички... Разочарую, но система в первую очередь для работы. А ты - просто красноглазик, который копается в системе ради копания. По твоему почему новая утилита называется dps? Может потому что на место ps засунут такой скрипт:

dps | dfilter euid \< 1000 | dsort rss | dhead 4 | dtable pid user rss vsize cmdline
чтобы не ломать привычки? Кому нужен просто ps ничего не потеряют, кому нужна серьезная обработка данных, будет использовать dps.

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

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

Разочарую, но система в первую очередь для работы

А работают на ней роботы? Лол.

А ты - просто красноглазик, который копается в системе ради копания

Tell me more.

Кому нужен просто ps ничего не потеряют

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

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

Или что разработчикам нечем заняться, сидят, сопли жуют и думают, как бы линукс поломать

Как будто Gnome 3 не так появился. Только жуют они не сопли, а какие-то галлюциногенные кактусы.

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

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

лучше бы ты, и тебе подобные оставались в винде

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

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

Короче? Текст не читай @ сразу отвечай! Я между прочим в скобках специально пояснил. Кроме этого, pgrep это отдельная сущность, возможно даже костыль, специально разработанный для решения вышеназванной проблемы. И для обработки вывода каждой утилиты придется писать новую сущность. Разве это хорошо?

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

Рабочему инструменту магия не нужна. Вообще, многие пишут, что пострадает совместимость - это решаемо. Например добавив ключ --object либо добавив какой нибудь подходящий префикс для стандартных команд.

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

По твоему почему новая утилита называется dps? Может потому что на место ps засунут такой скрипт:

dps | dfilter euid \< 1000 | dsort rss | dhead 4 | dtable pid user rss vsize cmdline

Не может. Я даже не знаю, кому может придти в голову идея заменить ps таким вот скриптом. Ты вообще в терминале работал, или для тебя Linux - это просто венда с другими декорациями окон?

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

Я между прочим в скобках специально пояснил

Напиши банальщину в скобках @ Ты во всем прав

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

Рабочему инструменту магия не нужна.

Unix shell уж точно не менее рабочий инструмент, чем Powershell. Где преимущества последнего? Раскрой тему.

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

Про поттеринговские поделки тоже так говорили

Кто? Там сразу ощущалась вся печаль мощного лобби.

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

Чтобы получить удобочитаемый вывод базовой консольной утилиты, мне нужно будет поставить в систему половину Гнома.

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

Это такая блестящая идея, что я млею и благоговею. Просто гений инженерной мысли.

Судя по тому как ты себе представляешь реализацию, ты всё привык делать через жопу.

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

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

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

лучше бы ты, и тебе подобные оставались в винде

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

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

А вообще, идея боян и не взлетит по разным причинам.

Про поттеринговские поделки тоже так говорили

(пожимая плечами) Время покажет.

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

Ты не тому ответил.

Сорри. Походу у меня браузер глючит.

tailgunner ★★★★★
()

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

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

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

Угу, конечно можно. Как можно было и udev не приколачивать к systemd. Только на практике всё выходит как выходит.

Судя по тому как ты себе представляешь реализацию, ты всё привык делать через жопу.

Я её не представлял, её представил автор этого новшества:

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

читать не умеешь? ну так научись и не позорься.

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

Вбил ps -e и получил список процессов.

А теперь только представь, сколько костылей и подпорок было использовано, чтобы в читаемом виде показать тебе этот вывод. Если это терминал в иксах, screen или ssh, а то и всё это вместе, то вообще страшно становится.

http://www.linusakesson.net/programming/tty/index.php

Вот, трактатик о tty, можешь почитать. Это я к тому, что добавление одного костыля в эту муть сильно хуже не сделает.

PolarFox ★★★★★
()

Здраво, парсить текстовые файлы из procfs порой неудобно. Во-первых, пока спеки не прочитаешь, пока не поймешь зачем тут везде понаставили \0 и т.п. А во-вторых, разработка софта существенно облегчается когда все сделано в едином формате. Но, ИМХО, надо пилить procfs, а не строить огород вокруг. В любом случае, как переходный период - сойдет.

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

Да, они приобретут кучу гномолиб в систему

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

Не смеши мои тапочки. Лучше объясни, отчего у тебя такая дикая истерика от нововведений. Не нравится - не пользуйся. Где-то видел новость о бэкпортировании новых драйверов в старые версии ядра. Так что для несогласных с новшествами таки останутся свежие версии старого софта

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

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

Дайте Звезду Героя студенту. Если не он, то кто?

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

Лучше объясни, отчего у тебя такая дикая истерика от нововведений

Перечень нововведений, от которых у меня истерика - в студию.

Не нравится - не пользуйся

Не пользоваться этим сейчас возможно разве что в Gentoo.

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

Да-да, ровно то же самое говорили про KDE 3, Gnome 2 и так далее.

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

а если не буду? :}

А если найду?

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

Да-да, ровно то же самое говорили про KDE 3, Gnome 2 и так далее

Они никуда и не пропали. Ты точно так же их можешь скачать и установить

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

Unix shell уж точно не менее рабочий инструмент, чем Powershell.

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

Где преимущества последнего? Раскрой тему.

Отсутствие лишних сущностей, не теряя возможностей их создания при желании. Пример уже был: как я уже написал, единственный способ изменить вывод команды, это заложить в нее возможность изменения вывода изначально, либо писать свой парсер вывода. В ps же такой проблемы не может быть по определению.

Orlangoor ★★★★★
()

В продолжение. Пользуйтесь нормальными ЯП и не придётся переделывать систему. Там всё уже есть.

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

Ну, там же написано, что вывод в терминал будет отдаваться в текстовой ф-ме.
// Сколько народу тут уже прокричало, что они переходят на фрю?

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

Да-да, ровно то же самое говорили про KDE 3, Gnome 2 и так далее

Они никуда и не пропали. Ты точно так же их можешь скачать и установить

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

Deleted
()

Нахрена?! Есть же /proc и /sys

Отпишусь ещё раз: нахрена?! Уже есть в системе специально предназначенные /proc и /sys.

Структурированные. Бинарные. Первоисточник всей информации. Как раз для случаев, когда надо надёжно читать системе, а не пользователю.

Зачем делать ещё прослойку в виде принципиально новых утилит и (о б-же!) несовместимого принципиально нового терминала (хотя на счёт терминала - это из комментов в данной ветке)?

Тяжело парсить вручную /proc и /sys? О'кей, сделайте либы с привязками до популярных скриптовых языков. Будет намного быстрее, гибче и лучше.

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

такая дикая истерика от нововведений

Это же ЛОР, чего ты хотел. Админы локалхоста негодуют от одной только мысли о необходимости прочитать четыре новых мана.

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

Они уже сейчас толком не собираются, я пробовал в генте. В opensuse, наверное, патчат.

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

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

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

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

И это правильно, безотносительно сабжевой идеи %)

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

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

А то, что каждый админ должен учить shell, не бред? Хочется работать с типизированными объектами - используйте язык, который спроектирован для этого. И не надо уродовать удобный инструмент, предназначенный для других задач.

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

Ну оставят значит независимо старый ps и новый dps, если решат, что последний нужен

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

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