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

    +1

    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

    Комментарии (72) 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 или его аналог для гпт) разбиавешь диск, копелируешь ядро итд.
                              В слаке все это делать не обязательно
                              Ответить
                          • > чтобы лучше понять как устроен linux, а потом уже можно и на бубунты с федорами
                            Это профессиональная программистская черта - прорыв абстракций?
                            Если ты не пишешь драйверы, то работает ОС и пусть работает себе.

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

                              Хотя я согласен что для огромного количества задач это не обязательно.
                              Ответить
                        • https://www.linux.org.ru/people/bormant/profile
                          Не ты случайно?
                          Ответить
                          • Случайно не я. Я, вроде бы, вообще на лоре не регался. Да и почти не читал его...
                            Ответить
                      • Нафиг для домашнего компа Arch и Slack?
                        Наубунту.
                        Ответить
                        • Вероятно чтобы учиться
                          Вот на сервере, как раз, арчу делать нечего
                          Ответить
                  • >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 в пайп в другую аппликуху
        Ответить
    • Похоже, твой почтовый клиент не умеет в esc sequences
      Ответить
      • С чего ты взял, что это ескейп последовательности. Я уверен, что Дженкинс мне азбукой Морзе передает шифровки.
        Ответить
        • Я не знаю троллишь-ли ты.
          Судя по тому что ты не знал про tty в unix, ты мог и про esc коды не знать, и про termcap/terminfo и $TERM
          Ответить
    • > Дженкинс прислал телеграму
      Есть плагин женькинса для рассылки в телеграм?
      И ты подключил свой телефон, чтоб он в час ночи бесил своими "BUILD FAILED" и "TESTS PASSED"?
      Дай пятюню))
      Ответить
      • чтоб тебе flaky test в 5 утра телеграмму прислал
        Ответить
    • есть же джабба (https://github.com/shyiko/jabba), sdkman (http://sdkman.io/), ну нахуя мучаться с аптом-то
      Ответить
      • А в чем мучение, и зачем нужна jabba? Чем она лучше aptа? Она собирает джаву из сырцов?
        Ответить
        • в свое время восьмерку не довезли, а семерку перевезли и как-то так вышло, что все дистрибутивы были без сука блядь джавы
          поэтому надо было ставить какой-то левый репозиторий и подтверждать смирение перед лицензией в процессе установки
          а устанавливалась не джава, устанавливался установщик джавы, который и производит хуйню выше
          а чтобы в восьмерку докинуть hsdis, надо еще выкачать исходники и самому собрать (хуй знает, как оно там с девяткой)
          с тех пор я блядь и ненавижу ставить джаву через апт
          Ответить
          • Ну это как некоторые чуваки ставят питона через conda или pyenv чтобы не иметь секса с левыми репами типа дедснейкс ради 3.6 на ubuntu 16.04, epel на седьмой центоси итд.

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

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