1. Куча / Говнокод #23501

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    [0mSaving to: ���jdk-8u131-linux-x64.tar.gz���
    
      2050K .......... .......... .......... .......... ..........  1%  137K 4m16s
      2100K .......... .......... .......... .......... ..........  1% 1.06M 4m14s
      2150K .......... .......... .......... .......... ..........  1%  613K 4m14s
      2200K .......... .......... .......... .......... ..........  1%  318M 4m9s
      2250K .......... .......... .......... .......... ..........  1%  609K 4m10s
      2300K .......... .......... .......... .......... ..........  1%  612K 4m10s
      2350K .......... .......... .......... .......... ..........  1%  610K 4m11s
      2400K .......... .......... .......... .......... ..........  1%  612K 4m12s
      2450K .......... .......... .......... .......... ..........  1%  612K 4m13s
      2500K .......... .......... .......... .......... ..........  1%  616K 4m13s
      2550K .......... .......... .......... .......... ..........  1%  616K 4m14s
      2600K .......... .......... .......... .......... ..........  1%  614K 4m15s
      2650K .......... .......... .......... .......... ..........  1%  644K 4m15s
      2700K .......... .......... .......... .......... ..........  1% 1.15M 4m13s
      2750K .......... .......... .......... .......... ..........  1% 1.07M 4m11s
      2800K .......... .......... .......... .......... ..........  1%  306K 4m17s
      2850K .......... .......... .......... .......... ..........  1%  181M 4m13s
      2900K .......... .......... .......... .......... ..........  1%  307K 4m18s
      2950K .......... .......... .......... .......... ..........  1%  608K 4m19s
      3000K .......... .......... .......... .......... ..........  1%  421K 4m21s
      3050K .......... .......... .......... .......... ..........  1%  400K 4m24s
      3100K .......... .......... .......... .......... ..........  1%  605K 4m25s
      3150K .......... .......... .......... .......... ..........  1%  613K 4m25s
      3200K .......... .......... .......... .......... ..........  1%  611K 4m25s
      3250K .......... .......... .......... .......... ..........  1%  303K 4m30s
      3300K .......... .......... .......... .......... ..........  1% 1.34M 4m28s
      3350K .......... .......... .......... .......... ..........  1%  306K 4m32s
      3400K .......... .......... .......... .......... ..........  1%  394K 4m35s
      3450K .......... .......... .......... .......... ..........  1%  416K 4m37s
      3500K .......... .......... .......... .......... ..........  1%  401K 4m39s
      3550K .......... .......... .......... .......... ..........  1%  413K 4m41s
      3600K .......... .......... .......... .......... ..........  2%  421K 4m43s
      3650K .......... .......... .......... .......... ..........  2%  611K 4m43s
      3700K .......... .......... .......... .......... ..........  2%  610K 4m43s
      3750K .......... .......... .......... .......... ..........  2%  574K 4m43s
      3800K .......... .......... .......... .......... ..........  2%  610K 4m43s
      3850K .......... .......... .......... .......... ..........  2%  610K 4m43s
      3900K .......... .......... .......... .......... ..........  2%  611K 4m43s
      3950K .......... .......... .......... .......... ..........  2%  651K 4m43s
      4000K .......... .......... .......... .......... ..........  2%  613K 4m43s
      4050K .......... .......... .......... .......... ..........  2%  612K 4m43s
      4100K .......... .......... .......... .......... ..........  2% 1.08M 4m42s

    Дженкинс прислал телеграму: девопс потрудился наславу.
    (это только 0.5% от всего сообщения)

    Запостил: wvxvw, 08 Ноября 2017

    Комментарии (115) RSS

    • Про всякое говно типа npm, apt и им подобных, кто любит разукрасить консольку.
      Ответить
      • Ничего плохого в разукрашивании консольки нет. А вот тех, кто при разукрашивании не проверяет, что вывод является терминалом (isatty), надо закидывать ссаными тряпками. Ну и в какой-нибудь --nocolor/--color=never неплохо бы уметь.
        Ответить
        • Ну так у apt впринципе нет возможности отменить раскрашивание (которое нахуй никому не нужно). А чтобы отменить распечатывание прогресбаров нужно искать настройки каких-то настроек совсем других програм. npm как и все остальное нодожс говно написано виндузятниками, которые Линукс видели исключительно через амбразуру Путти (кстати почему его ночной вазой назвали?) И его раскрашивание такое же неотменимое.
          Ответить
          • > А чтобы отменить распечатывание прогресбаров нужно искать настройки каких-то настроек совсем других програм.

            Чтобы отменить распечатывание прогрессбаров, нужно сделать isatty false.

            sudo apt install tree ← печатает прогрессбар
            sudo apt install tree | cat ← не печатает прогрессбар

            При выводе в файл тоже никаких прогрессбаров не будет.
            Ответить
            • У тебя неправильной версии apt. У тебя старая. В новой и улучшенной так уже не работает.

              Кроме того, isatty - не показатель. Надо смотреть что в $SHELL написано + всякие разные другие аналогичные настройки, $LANG в непоследную очередь и т.д. А лучше всего не ебать мозги никому не нужными анимациями и смайлами.
              Ответить
              • > У тебя старая
                Apt 1.5 считается старым? В нём всё ок. Свежее разве что 1.6, но она ещё сырая альфа, тут уже ССЗБ.
                Ответить
                • Вы на 17 убунте чтоли? или вообще не дебиане?
                  hui@hui:~$ cat /etc/issue
                  Ubuntu 16.04.3 LTS \n \l
                  
                  hui@hui:~$ apt --version
                  apt 1.2.24 (amd64)


                  ЧТЯДНТ?

                  PS: Написали же apt НЕ для скриптов! Юзайте apt-get
                  Ответить
                  • Ну да, я на 17.10, нафиг для домашнего компа LTS?
                    Ответить
                    • У меня страх перед сыроватым софтом. У меня это от Microsoftю
                      Ответить
                      • KB4041676:
                        - У вас отвалятся чешский и арабский языки, майкрософт работает над этой проблемой.
                        - Машина может не загрузиться, майкрософт работает над этой проблемой.
                        - UWP приложения с js могут сломаться, просто переустановите их.

                        Windows 10 — это услуга, качество которой улучшается с каждым обновлением.
                        Ответить
                    • Нафиг для домашнего компа Ubuntu?
                      Наарч, наслаку.
                      Ответить
                      • Это если ты трушный линуксоид
                        А если ты попосовый то убнту самое то
                        Ответить
                        • > bormand
                          > 17.04
                          > попсовый

                          Ничего не замечаешь?
                          Ответить
                          • )) Ну боранд же не ёбнутый красноглазик, но лоу-левещик скорее. Хотя по имиджу ему бы конечно больше подошла слака.

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


                            Кстати, Торвальдс в свое время юзал федору. Аргумент был такой: я хочу поставить дистр и не ебаться с ним, а сразу писать едро.
                            Ответить
                            • Я, кстати, ни разу нормально не собрал ни одной программы из исходников. Один раз хотел ardour5 для ubuntu собрать, джва часа ставил зависимости, скомпилировалось, установилось и запустилось, но работало очень криво. Недавно пытался GNU Pascal compiler собрать, который больше не поддерживается, там версии какого-то говна с версиями какого-то говна не совместились.

                              Слушай, а ты не знаешь, что такое пайп, про который говорят итт.
                              Ответить
                              • У слаки есть slackbuilds: готовые скрипты для сборки, но у них конечно надо править параметры, и зависимости качать самому.

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

                                пайп это когда stdout одной программы подключается в stdin другой, получается человеческая сороканож unix job.

                                Всегда и всем советую читать
                                http://www.linusakesson.net/programming/tty/
                                Ответить
                              • > джва часа ставил зависимости

                                Толи дело «Ubuntu»:
                                apt build-dep <pkg>
                                Ответить
                                • Так на убунте и собирать-то не обязательно, там apt уже готовое стянет.
                                  Собирать надо только если ты хочешь поправить ключи.

                                  А в слаке информации о зависимостях нет.
                                  И многих пакетов в стандартной поставке тоже нет.
                                  Ответить
                                  • > Так на убунте и собирать-то не обязательно, там apt уже готовое стянет.

                                    Если ты хочешь законтрибьютить в OS-проект, то его обычно нужно уметь собирать из сорцов. Ну или свежак иногда хочется собрать и поиграться. Emacs, например, на бубунте искаропки старый.
                                    Ответить
                                    • Ну если законтрибьютить то понятно:) Я не думал что vistefan хотел писать в Ardour 5.0
                                      Ответить
                            • >но лоу-левещик скорее. Хотя по имиджу ему бы конечно больше подошла слака.
                              +
                              Тоже такого мнения. Слака или crux какой-то.
                              Ответить
                      • Слака была моим первым дистром.

                        Арч и генту не юзаю т.к. мне абсолютно не интересно дорабатывать ось под себя. В общем и убунта сойдёт.
                        Ответить
                        • >>Слака была моим первым дистром.
                          я знал, знал))
                          а трубку ты куришь?

                          Кстати, генту не обязательно "дорабатывать": там emrge все делает за тебя, просто у тебя есть возможность влиять на каждый шаг и шагов сильно больше.

                          Имхо что-то такое надо попробовать пару раз чтобы лучше понять как устроен linux, а потом уже можно и на бубунты с федорами.
                          Ответить
                          • > не обязательно дорабатывать
                            Но зачем мне вся эта гибкость на каждом шагу (и проблемы от неё) если я ей так и не воспользуюсь?

                            А понимать, как устроен линукс, имхо, лучше на простом дистре типа слаки, чем на этих ваших арчах.
                            Ответить
                            • Слака хороша для изучения, но там с одной стороны много чего ставится "из коробки", а с другой -- куча гемора, да в добавок еще и устаревшие технологии (анпример туда до сих пор не завезли systemd).

                              В генте ты вручную (через (c)fdisk или его аналог для гпт) разбиавешь диск, копелируешь ядро итд.
                              В слаке все это делать не обязательно
                              Ответить
                              • > копелируешь ядро
                                А на деле - исполняешь ряд заклинаний из хендбука, не особо задумываясь о их смысле.

                                Ситуация примерно как с LFS - вроде и собрал линупс руками, но просветление не наступило...
                                Ответить
                                • Да, слака в этом плане няшная. Никаких тебе хендбуков серьезных, никаких инструкций.

                                  Что-то не понятно? Читай .sh файл
                                  Ответить
                              • > не завезли systemd
                                Хех, патрик всё ещё не сдался...

                                На самом деле, в слаке самая простая и понятная система запуска и конфигурирования сервисов.

                                А в других дистрах всё это переусложнено в угоду пакетным менеджерам.
                                Ответить
                                • Потому что Патрик бог!

                                  У слаки даже во времена systemV init был своеобразный init: они коспеили бздишный подход с его одним rc.conf файлом. Правда, rc.d они тоже умеют уже лет 15 как.
                                  Почему-то все писали у что у слаки "bsd init", но на самом деле в классическом BSD даже ранлевелов нет, а у них есть, просто rc.d не было.

                                  У меня не однозначное отношение к systemd и к Поттерингу в целом, но systemd уже везде, так что глупо ему копротивляться. В слаку он тоже придет, я уверен
                                  Ответить
                          • > чтобы лучше понять как устроен linux, а потом уже можно и на бубунты с федорами
                            Это профессиональная программистская черта - прорыв абстракций?
                            Если ты не пишешь драйверы, то работает ОС и пусть работает себе.

                            Или проявление поговорки "сапожник без сапог"? Мол для других я напишу программу так, чтоб человеку было удобно, и интерфейса к ней по всем канонам интерфейсов - почти не будет, чтоб во главу угла только решение задачи и удобство. А сам буду копаться в недрах фреймворков, компиляторов, операционных систем, микросхем, элементарных частиц?
                            Ответить
                            • Ну вообще программисту бывает полезно понимать как устроена ОС, особенно если он пишет драйв хайлоад, например.

                              Хотя я согласен что для огромного количества задач это не обязательно.
                              Ответить
                        • https://www.linux.org.ru/people/bormant/profile
                          Не ты случайно?
                          Ответить
                          • Случайно не я. Я, вроде бы, вообще на лоре не регался. Да и почти не читал его...
                            Ответить
                      • Нафиг для домашнего компа Arch и Slack?
                        Наубунту.
                        Ответить
                        • Вероятно чтобы учиться
                          Вот на сервере, как раз, арчу делать нечего
                          Ответить
                          • Мне вообще кажется странным, что даже Canonical абсолютно всё равно на унификацию (всех дистрибутивов) или даже монополизацию (Ubuntu) среди дистрибутивов, который отличаются в большинстве случаев только стандартной комплектацией. С достаточными способностями можно смешать лучшие функциональные возможности из Ubuntu, Slack, Arch, Gentoo без всяких перекомпиляций (любимая тема сторонников "швабодки") и использовать их везде и без всяких ограничений. Если бы вместо Canonical был бы Microsoft, то он бы всех уже изжил бы с помощью маркетинга или с помощью суда (и правильно бы сделал). А так, все создатели дистрибутивов считают своим святым долгом создать свою графическую оболочку, окружение, пакетный менеджер и так далее. Вот до чего анархия довела.
                            Ответить
                            • > Canonical абсолютно всё равно на ... монополизацию (Ubuntu) среди дистрибутивов
                              То-то она стабильно в тройке первых на distrowatch (да, хуйня статистика, но другой нет), при чем делит первые места с минтом (это такая убунта, перекрашенная с поносного цвета в зеленый), и по статкаунтеру прыщеось уже отвоевала внушительные 1.5% десктопов, ололо, что относительно <1% до появления оной, внезапно, весьма существенно. Космонавт еще долго не осилит обойти Apple или Microsoft с их партнерами, не его это уровень. Попытка запилить в 2004 году убийцу винды - это равносильно попытке запилить убийцу фейсбука в 2017, так что отжать 1.5% пользователей - это очень достойные результат.

                              > Canonical абсолютно всё равно на унификацию (всех дистрибутивов)
                              Ровно как все равно на унификацию с MacOS и *BSD. И правильно.

                              > среди дистрибутивов, который отличаются в большинстве случаев только стандартной комплектацией
                              #define дистрибутив.

                              >С достаточными способностями можно смешать лучшие функциональные возможности из Ubuntu, Slack, Arch, Gentoo без всяких перекомпиляций (любимая тема сторонников "швабодки") и использовать их везде и без всяких ограничений
                              Как раз соль в том, что "лучшие возможности" дистрибутивов чаще всего концептуально диаметральны друг-другу. Гибкость настройки через USE-флаги не совместима с бинарными deb-пакетами, где все по максимуму автоматизировано и приколочено гвоздями. Генка за свезими версиями арча идет в разрез с динозавтровой стабильностью дебиана. У патрика и гентушников свой идеологический верный инит с баш скриптами, в убунте модный системд. Продолжать можно бесконечно... Ты это все не совместишь воедино даже с переконпеляцией всего и вся.
                              Ответить
                              • # так что отжать 1.5% пользователей - это очень достойные результат.

                                Это не достойный результат, это - полноценный, фактический, настоящий, 1
                                46% фейл. Без помощь Майкрософта всему, кроме Windows не жить, а он выберет Ubuntu и всех на него насильно пересадит, а Mint, Gentoo, SUSE, Slack, Arch просто умрут.

                                # Ровно как все равно на унификацию с MacOS и *BSD. И правильно.

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

                                # #define дистрибутив.
                                Попробуй придумать фразу поумнее.

                                # Ты это все не совместишь воедино даже с переконпеляцией всего и вся.
                                Всё это очень легко совмещается, а если что то диаметрально противоположно другому, то выбрать более привычное всем.
                                Ответить
                            • > Если бы вместо Canonical был бы Microsoft, то он бы всех уже изжил бы с помощью маркетинга или с помощью суда
                              Как там дела у WP? Уже 95% рынка отжали?

                              > А так, все создатели дистрибутивов считают своим святым долгом создать свою графическую оболочку, окружение, пакетный менеджер и так далее
                              Графическую оболочку создают создатели графической оболочки. Пакетный менеджер создают создатели пакетного менеджера. Создатели дистрибутива же создают из всего этого рабочую конфигурацию, что бы убунтёнок не пердолился сутки в init 1, а сразу получал рабочую ОС с компизом и сапёром.
                              У всех разный взгляд на то, какой должна быть эта конфигурация, и это хорошо. Поверь, никому не нужные дистрибутивы долго не живут.
                              Ответить
                              • # Как там дела у WP? Уже 95% рынка отжали

                                Им просто это не надо.

                                # Поверь, никому не нужные дистрибутивы долго не живут.

                                Почему тогда не умело всё, кроме Ubuntu?
                                Ответить
                                • Потому что
                                  1) энтерпрайзу нужен RH
                                  2) **рдоликам нужен арх/слака
                                  итд
                                  Ответить
                              • >>Как там дела у WP? Уже 95% рынка отжали?
                                Динозаврны прос{п,р}али революцию. Сплошь-и-рядом такое.
                                WP уже свернули, к сожлению.

                                >>Графическую оболочку создают создатели графической оболочки
                                Unity?

                                >>Пакетный менеджер создают создатели пакетного менеджера.
                                RPM -- RedHat Package Manager
                                Ответить
                            • Ну во-первых есть LSB, во-вторых "унификатором" тут выступает не canonical а RedHat, который как раз больше похож на MS, и, например, systemd это их очень серьезная заявка на унификацию:)

                              Графические оболочки пилят на все: у RH/Fedora/CentOS обычный Gnome (это убунта напилила свое).

                              Кстати, попытка сделать общий менеджер -- snapd -- тоже есть.
                              И исходит она, внезапно, от canonical!
                              Ответить
                              • > это убунта напилила свое
                                17.10 уже c Говном3...

                                З.Ы. Юнити навсегда останется в моей памяти как оболочка с лучшим изкоробочным user experience. Помним. Скорбим.
                                Ответить
                                • Кстати, десктоп энвайрменты не нужны.
                                  Нужен window менеджер, например mwm:))

                                  Что такого полезного есть в десктоп менеджере?
                                  Проводник какой-нить типа конкверор или наутилуc?
                                  Смеетесь? Я и на винде-то проводником не пользуюсь, у меня фар. В линуксе у меня терминал, а если очень хочется то там есть mc.

                                  Офис в комплекте и какой-нить текстовый редактор?
                                  Ну я обычно юзаю vim или Intelijовые IDE, мне очередной "блокнот" не нужен.

                                  Автоприкручивание флешки?
                                  Всякие сервисы на D-Bus для выскакиваний сообщений и pkexec типа polkit-gnome-authentication-agent-1 ?
                                  Так d-bus у меня и без того работает, и вообще у меня sudo:)

                                  Вот в KDE была игра mr. Potato Head, вот ради нее можно конечно поставить десктоп энвайрмент
                                  Ответить
                  • >cat /etc/issue
                    >apt --version

                    Какой вы не real сёма.

                    aptitude?
                    Ответить
                • npm 4.2.0 - красит все подряд. Не обращает внимание на то, что вывод в пайп / настройки шелла. Выдает сообщение "terminal is not fully functional" и все-равно срет в него всяким нечитаемым говном.
                  apt 1.4.6 - красит все подряд. Не обращает внимания на...

                  Я apt не вызываю из скрипта, а из интерактивного шелла, которой не умеет распознавать ее ебучие эскейп-последовательности. И, да, я имел в виду TERM, а не SHELL. И вызываю не самостоятельно, а из контейнера в докере написаном каким-то гитхаб зодчим.
                  Ответить
                  • А что написано в $TERM?
                    Ответить
                  • У меня apt 1.5~beta1 (amd64), всё работает правильно.

                    В конце концов, всегда можно пойти простым путём. Писать регекс мне было лень, поэтому я скопипастил его из интернета.
                    sed -r "s/\x1b\[([0-9]{1,2}(;[0-9]{1,2})*)?[m|K]//g"
                    Ответить
                    • > у меня всё работает
                      Ну он же написал, что у него какой-то "ебучий интерактивный шелл" (эмулятор терминала?), который не понимает эскейп-последовательности.

                      Вот, собственно, и интересно что этот ебучий интерактивный шелл выдаёт в своём ебучем интерактивном $TERM, что об этом значении думает база с описанием ебучих интерактивных терминалов и насколько корректно эту инфу юзают apt/npm (если юзают).
                      Ответить
                      • > который не понимает эскейп-последовательности

                        У меня всё работает в том плане, что после пайпа выхлопа apt в cat никаких escape-последовательностей нет, это не должно зависеть от TERM.
                        Ответить
                        • В том же npm 3.5.2 даже после пайпа stdout через cat ещё остаётся выхлоп в stderr, который приходится отдельно пайпать. Иначе отключается только половина няшностей.
                          Ответить
                        • Да, походу не позаботились они о пользователях ебучих интерактивных шеллов...

                          С TERM=dumb mc корректно отказывается работать ("ваш терминал не умеет чистить экран и передвигать курсор"), а apt с npm радостно крутят цветные прогрессбары (а npm | cat, как обычно, немного цветов пропускает через stderr).
                          Ответить
                        • З.Ы. Почему-то во всех багах на эту тему, которые удалось нагуглить, упоминается emacs... Неужели это и есть тот самый таинственный ебучий интерактивный шелл, который не умеет в эскейпы?

                          The terminal emulator run under M-x shell is emacs, and emacs is nearly dumb.
                          Ответить
                          • Проверил apt в M-x shell, пайп отключает цветной выхлоп. Почему программы валят цвета в dumb – это отдельный вопрос, но нашлось довольно много багов на эту тему. Видимо, люди в основном ограничиваются проверкой isatty и не парятся с capabilities.
                            Ответить
                            • >почему программы валят цвета в dumb
                              Их авторы никогда не смотрели на мир через амбразуру емакса.
                              Ответить
                            • Вероятно они считают что терминалом VT52 уже не пользуются, а xterm, консоль линукса и putty умеют ansi colors
                              Ответить
                          • Кроме Эмакса: терминалы всяких гипервайзеров (EXSi / HyperV), XTerm в режиме Ci (это если загружаться в "аварийный режим").
                            Ответить
                            • А надо-то всего-ли
                              $ tput setaf 1

                              и трминал никогда не пострадает
                              Ответить
                          • >Почему-то во всех багах на эту тему, которые удалось нагуглить, упоминается emacs...

                            Тю, я еще в самом начале треда догадался что убийца - ворецкий здесь замешан emacs.
                            Ответить
                  • >>Я apt не вызываю из скрипта, а из интерактивного шелла, которой не умеет распознавать ее ебучие эскейп-последовательности.

                    Ну то-есть чуваки просто проверили isatty, а надо было-бы взять капатибилити setaf потому что $TERM бывает и без умения ANSI ESC colors.
                    Ответить
              • З.Ы. npm 3.5.2 тоже прекрасно понял перенаправление и в файл и в пайп. Похоже, что проблема не на их стороне...
                Ответить
              • isatty именно что показатель, потому что esc последовательности умеет (может уметь) только tty (ну может быть принтер еще, но его-то нет в $TERM). На stdin и в файлы их писать резона нет.
                Причем тут SHELL вообще? Причем тут $LANG?

                Советую почитать про терминалы в Unix.
                Оче хорошее [color=blue]http://www.linusakesson.net/programming/tty/[/blue]
                И конечно эту книжку (есть на мазаоне бу) http://shop.oreilly.com/product/9780937175224.do
                Ответить
                • > Причем тут SHELL вообще? Причем тут $LANG?

                  Видимо, он имел ввиду $TERM. $LANG я иногда проверяю, чтобы решить, писать волшебные юникодные значки или нет.
                  Ответить
                  • TERM надо проверять чтобы убедиться что у него есть capability на вывод ansi colors.

                    Собственно, обычно так и делают: getenv, затем tgetent и проверку капабилити через tgetflag.

                    Если все ОК и isatty(1) (или isatty(fileno(stdout))) то можно слать все эти [31m
                    Ответить
                  • А не, наврал чутка. Надо tgetflag это для termcap который утерял актуальность в 1988 году, и капабилитес там двухбуквенные.
                    В terminfo можно tigetstr для экскейпинга, причем он сам умеет взять TERM если ему не указать терминал.

                    Короче:
                    #include <stdio.h>
                    #include <curses.h>
                    #include <term.h>
                    #include <stdlib.h>
                    #include <unistd.h>
                    #include <string.h>
                    
                    static int  colorize_s(char* string)
                    {
                     if (! isatty(1)) {
                             return 0; //не терминал
                     }
                     int suc;
                     setupterm(NULL, 1, &suc); //NULL знач взять терминал из getenv("TERM")
                     if (! suc) {
                             return 0;
                     }
                     char *esc_col = tigetstr("setaf"); //man terminfo(5) для списка капабилитей
                     if (! esc_col) {
                             return 0;
                     }
                    
                    // Понятия не имею как освобождать эти строки, мб надо явно делать free
                    
                     char* esc = tparm(esc_col, COLOR_RED); //Опять таки man terminfo(5) на список цветов
                     printf("%s%s", esc, string); //ESC на включение цвета
                     esc = tparm(esc_col, COLOR_WHITE); //ESC на выключение
                     printf("%s", esc);
                    
                     return 1;
                    }
                    
                    void main()
                    {
                            char s[]= "unix";
                    
                    
                            printf("Uchi ");
                    
                            if (!colorize_s(s)) {
                                    printf("%s", s);
                            }
                    
                            printf(" HAX\n");
                    
                    }

                    Собирать с
                    -lcurses
                    .

                    $ ./a.out # так цветное
                    $ ./a.out |cat  # так не цветное, ибо isatty(1) == 0
                    $ TERM=vt50 ./a.out # так тоже не цветное ибо нет капабилити setaf


                    Даже если я это осилил, но уж наверное создатели apt как-то справились.
                    Ответить
                • > есть на мазаоне бу

                  Я такие книжки по $4 на ebay покупаю, $10 вместе с доставкой.
                  Ответить
              • Если isatty не показатель, то в $SHELL тоже параша, скорее всего. И вообще бежать с такой системы надо, не оглядываясь.

                Кстати, сырая альфа 1.6 не печатает прогрессбары в не-tty. Что-то ты даже по своим меркам обосрался.
                Ответить
                • Вполне валидна ситуация когда терминал есть (isatty), но он не умеет ESC последовательности.
                  Ответить
          • >> Ну так у apt впринципе нет возможности отменить раскрашивание
            конечно же есть.

            $ apt list # красит
            $ apt list | cat # не красит


            Кстати, "WARNING: apt does not have a stable CLI interface. Use with caution in scripts."
            Ответить
          • >кстати почему его ночной вазой назвали?
            Наверное, потому что Putty похоже на potty - горшочек (в т.ч. и ночной горшок или унитаз).
            Ответить
      • ну так надо же проверять что твой stdout это не tty в пайп в другую аппликуху
        Ответить
        • А как сделать, чтобы одновременно и в консольку с подсветочкой, и в файл без говна?
          Ответить
          • Можно написать тулу, которая запускает прогу с редиректом в свой tty и сохраняет почищенную от эскейпов копию в файл...

            Или такая уже есть?
            Ответить
          • З.Ы. Может быть screen какой-нибудь умеет сессию логировать? А потом можно постпроцесснуть сохранённый им лог.
            Ответить
            • умеет, конечно. Постпроцесснуть можно и ``tee``
              Ответить
              • Но tee не терминал и всё будет скучное и чёрно-белое.
                Ответить
                • обычно можно попросить цвет --color=always какойнить
                  Ответить
                  • Ну такое... Не особо универсальный способ.
                    Ответить
                    • Чудес не бывает

                      Программа срёт только ОДИН раз: либо она делает это в цвете, либо нет.

                      Наименее пидорский способ это, наверное, вырезать цвет
                      Ответить
          • Обычно команды так не умеют всё таки.

            Скопировать аутпут в файл может ``tee`` и ``script``, но они во-первых не tty (так что цвет придется заказывать явно), во-вторых цвет попадет в файл. Его можно вырезать sedом например, но это ебля
            Ответить
          • Я сделалъ
            $ sed -r "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" > 1.txt  <(script -c 'ls --color=auto' /dev/tty)


            в терминал срёт цветом, в 1.txt без цвета

            но это башизм, по process subscttuion
            Ответить
            • зы: -r это гнутый сед

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

              все эти "s/\x1B)?)?}(;" это такое говнище
              Ответить
              • Обычная рагулярка. Можно, конечно, расписать вручную в императивном стиле...
                Ответить
              • Для одноразового говнеца сойдёт, пишется легко. Главное чтобы поддерживать это потом не пришлось.
                Ответить
                • [mGK] это типа один из трёх символов?
                  Ответить
                • Да, в «pygments» обосрались, когда пришлось добавлять весь «Unicode».
                  Ответить
                • Для прототипирования красиво: можно описать свинтаксис декларативно.

                  А вот на практике получается либо проседание пирфоманса, либо встаёшь в тупик, когда нужно добавить новые элементы. Царь не одобрит.
                  Ответить
                  • > проседание пирфоманса

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

                    При использовании регулярок по назначению в них нету 100500 звёзд и бекреференсов.
                    Ответить
                  • Ну блин, регулярки это язык для описания конечных автоматов для разбора регулярных грамматик

                    Язык этот трудночитаемый, и потому для сложных конструкций слабо подходщий.

                    Правда можно сдеоать многострочную рагулярку с комментариями.

                    Проёб перформанса проистекает из природы НКА, когда тебе нужно вернуться назад, и попробовать другой путь, а затем снова назад, и третий, и это называется "catastrophic backtracking"

                    Пиша автомат ручками, ты можешь точно так же обосраться, но у людей почему-то предубеждение против регулярок
                    Ответить
              • Так и задача говнище
                Ответить
      • Аналог печатной машинки.
        Ответить
      • Ты давно Бецалель окончил?
        Ответить
    • Похоже, твой почтовый клиент не умеет в esc sequences
      Ответить
      • С чего ты взял, что это ескейп последовательности. Я уверен, что Дженкинс мне азбукой Морзе передает шифровки.
        Ответить
        • Я не знаю троллишь-ли ты.
          Судя по тому что ты не знал про tty в unix, ты мог и про esc коды не знать, и про termcap/terminfo и $TERM
          Ответить
    • > Дженкинс прислал телеграму
      Есть плагин женькинса для рассылки в телеграм?
      И ты подключил свой телефон, чтоб он в час ночи бесил своими "BUILD FAILED" и "TESTS PASSED"?
      Дай пятюню))
      Ответить
    • есть же джабба (https://github.com/shyiko/jabba), sdkman (http://sdkman.io/), ну нахуя мучаться с аптом-то
      Ответить
      • А в чем мучение, и зачем нужна jabba? Чем она лучше aptа? Она собирает джаву из сырцов?
        Ответить
        • в свое время восьмерку не довезли, а семерку перевезли и как-то так вышло, что все дистрибутивы были без сука блядь джавы
          поэтому надо было ставить какой-то левый репозиторий и подтверждать смирение перед лицензией в процессе установки
          а устанавливалась не джава, устанавливался установщик джавы, который и производит хуйню выше
          а чтобы в восьмерку докинуть hsdis, надо еще выкачать исходники и самому собрать (хуй знает, как оно там с девяткой)
          с тех пор я блядь и ненавижу ставить джаву через апт
          Ответить
          • Ну это как некоторые чуваки ставят питона через conda или pyenv чтобы не иметь секса с левыми репами типа дедснейкс ради 3.6 на ubuntu 16.04, epel на седьмой центоси итд.

            .deb вообще собирается уже соснуть у snap
            или нет?
            Ответить

    Добавить комментарий