Открыть список
Как стать автором
Обновить

Комментарии 18

скриншоте Manual page от git — супер-популярная, хорошая, и между прочим, очень продуманная программа. Manual page позволяет скроллить вывод вверх-вниз


Нет такой программы «Manual page», а есть программы, которые рендерят файл в формате mdoc: groff и его современная реализация mandoc.

P.S. История развития документации UNIX — manpages.bsd.lv/history.html
автор открыл для себя man git, а скоро догадается набрать man man и его ждёт много интересного :)
Всё это благолепие с разноцветным выводом нравится далеко не всем пользователям, поэтому имеет смысл предусмотреть отключение раскрашивания вывода.

no-color.org
Выглядит одинаково хорошо
Нет. Как минимум акценты (надписи за которые взгляд цепляется в первую очередь) на приведённых скриншотых из-за разных цветовых схем различны.
и к такому выводу нужно стремиться
Нет. Вывод консоли не только для просмотра людьми, часто приходится настраивать утилиты анализа логов, тот же fail2ban, и там вся эта красота может сломать многое.
Вместо:
Hello World!
Будет что-то такое:
\033[0;32mHello\033[0m \033[0;31mWorld!\033[0m
вроде мелочь, а какую-нибудь регулярку, написанную «побыстрому» сломает на раз.
здесь наш специалист по UX создал дизайнерский спиннер — у нас он должен крутиться треугольниками, а не палочками, как у всех остальных. Почему бы и нет? Но на Windows он крутится одинаковыми квадратиками, то есть не работает.
Сами спросили, сами ответили, у всех — потому что так работает, у вас — не работает…
И, опять же, все эти интерактивные красивости в логах потом выглядят так (вырезал, так сказать несколько строк для краткости):
Total 144238 (delta 3), reused 144233 (delta 3)
Checking out files: 7% (12197/157075)
Checking out files: 8% (12566/157075)
Checking out files: 9% (14137/157075)
Checking out files: 10% (15708/157075)
Checking out files: 11% (17279/157075)

Checking out files: 97% (152363/157075)
Checking out files: 98% (153934/157075)
Checking out files: 99% (155505/157075)
Checking out files: 100% (157075/157075)
Checking out files: 100% (157075/157075), done.
потому что для текстового лога нет понятия «передвинуть каретку без перевод строки».
к счастью, сейчас наступила эпоха Windows 10

При этом в коде GetStdHandle и SetConsoleMode и у обеих в разделе поддержки:
Requirements

Minimum supported client Windows 2000 Professional [desktop apps only]
Minimum supported server Windows 2000 Server [desktop apps only]

для параметров
ENABLE_PROCESSED_INPUT и ENABLE_VIRTUAL_TERMINAL_PROCESSING ограничений по версии тоже не установлено. Спрашивается, как связаны Win10 и этот кусок кода, который прекрасно сработате на любой версии начиная от Windows 2000 и старше?
Если вам нужен функционал CreatePseudoConsole, как я предполагаю, то приведённый кусок кода не поможет ни как. Или скриншот не тот приложили к статье?

И ещё полно таких моментов… все описывать — статья не меньше текущей будет.

Если честно, статья какая-то технически… безграмотная что ли.
Нет. Вывод консоли не только для просмотра людьми, часто приходится настраивать утилиты анализа логов, тот же fail2ban, и там вся эта красота может сломать многое.

В статье про это вообще-то написано:


И когда мы, например, перенаправляем вывод через py в grep, чтобы что-нибудь там поискать, или записываем в файл, или запускаем из-под cron, HTTP-сервера или еще чего-нибудь — функция os.isatty() будет возвращать false:

В таких случаях нельзя выводить ни цвет, ни стили, ни размер экрана.
спустя треть статьи, вскользь и не потому, что это создаст мусор в логах, а
Потому что размера экрана нет, а при попытке его спросить вы получите исключение
то есть исключительно из-за «оно ж может упасть».
Вот вывод команды (...) на темном фоне:
И он же со светлой схемой:
Выглядит одинаково хорошо, и к такому выводу нужно стремиться.
Я же не один не могу без чудовищных усилий прочитать этот тёмно-красный на тёмно-сером?
Там еще скриншот в JPEG, а он уродует красный текст.
Вот что действительно нечитаемо — это темно-синий текст на черном фоне.
рандомный скриншот из интернета
image
Например, у всем известного Docker’a вывод — это простыня ровного, скучного и не выделяемого текста. В нем просто трудно ориентироваться

Да в общем-то нормально, как распечатка конфига по уровню читаемости. Можно бы отступ побольше, но это уже придирки.


Один беглый взгляд на экран, и вы сразу можете выделить, что важно, а что — не очень

А как в случае с Docker определить, что важно мне сейчас, а что — не очень? По-моему, там просто и выделять нечего особо — всё и так ясно.


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

Ужасный пример с тем, что автор видит разницы между терминалом и командами, сравнивая вывод «gh pr status» и «docker ps» и считая что это именно докер плохой.

Сделай названия бренчей или коммит мессаджей подлиннее, и они тоже не влезут. И уже будет кто плохой?
Это tty переносит на следующую строку часть информации, а не докер. А при парсинге вывода будет понятно, что это одна строка.
Во-вторых никто не мешает вам выводить docker ps только те столбцы, которые нужны, а не все подряд.
docker ps -a --format "table {{.ID}}\t{{.Image}}\t{{.Command}}"

И gt вот так может?
docker ps -a --format '{{json .}}'

В статье есть несколько интересных инструментов для причесывания внешнего вида, но вот первый же пример меня сразу настроил против автора.
Ужасный пример с тем, что автор видит разницы между терминалом и командами, сравнивая вывод «gh pr status» и «docker ps»

Если честно эту часть вообще не понял. Не могли бы пояснить?

Могу предположить, что основной посыл — нельзя сравнивать «в лоб» вывод абсолютно разных программ, особенно когда этот вывод можно настраивать под свои нужды.
В том, что
1) перенос на вторую строку делает не docker и не gh, а терминал. То есть если в gh в вывод попадет длинная строка (например длинный коммент или длинное имя бренча), то также само будет переноситься на вторую строку. Таким образом это проблема не команды, а конкретного набора данных.

2) вывод docker ps можно настроить как угодно. Любые нужные тебе столбцы. То, что дефолтный вывод выводит чуть больше, чем влазит в 80 строк, не делает хуже, наоборот…

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


ну а курсор вернуть можно набрав аслепую
reset[enter]

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

Раскраска — это очень плохой подход.
Намного правильней отмечать строки, например, [I] — info, [W] — warning, [E] — error.
Подобный подход применяется в логах, например, X-сервера.
Зачем?
Потому что можно сделать так:
./dosomething | grep '[E]'
И получить только то что нужно. А попробуй сделать то же самое по цветам. Ага…

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

А ещё есть очень продвинутая библиотека под названием wasabi. Для простоты я использую docopt + wasabi. Click через чур монструозный, все зависит от задачи.

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

Информация

Дата основания
Местоположение
Россия
Сайт
www.ontico.ru
Численность
11–30 человек
Дата регистрации

Блог на Хабре