Куча говна / Говнокод #27644 Ссылка на оригинал

0

  1. 1
IT Оффтоп #111

#81: https://govnokod.ru/27280 https://govnokod.xyz/_27280
#82: https://govnokod.ru/27284 https://govnokod.xyz/_27284
#83: https://govnokod.ru/27296 https://govnokod.xyz/_27296
#84: https://govnokod.ru/27336 https://govnokod.xyz/_27336
#85: https://govnokod.ru/27381 https://govnokod.xyz/_27381
#86: https://govnokod.ru/27405 https://govnokod.xyz/_27405
#87: https://govnokod.ru/27429 https://govnokod.xyz/_27429
#88: https://govnokod.ru/27432 https://govnokod.xyz/_27432
#89: https://govnokod.ru/27435 https://govnokod.xyz/_27435
#90: https://govnokod.ru/27439 https://govnokod.xyz/_27439
#91: https://govnokod.ru/27449 https://govnokod.xyz/_27449
#92: https://govnokod.ru/27460 https://govnokod.xyz/_27460
#93: https://govnokod.ru/27463 https://govnokod.xyz/_27463
#94: https://govnokod.ru/27466 https://govnokod.xyz/_27466
#95: https://govnokod.ru/27473 https://govnokod.xyz/_27473
#96: https://govnokod.ru/27478 https://govnokod.xyz/_27478
#97: https://govnokod.ru/27484 https://govnokod.xyz/_27484
#98: https://govnokod.ru/27495 https://govnokod.xyz/_27495
#99: https://govnokod.ru/27504 https://govnokod.xyz/_27504
#100: https://govnokod.ru/27508 https://govnokod.xyz/_27508
#101: https://govnokod.ru/27511 https://govnokod.xyz/_27511
#102: https://govnokod.ru/27518 https://govnokod.xyz/_27518
#103: https://govnokod.ru/27526 https://govnokod.xyz/_27526
#104: https://govnokod.ru/27534 https://govnokod.xyz/_27534
#105: https://govnokod.ru/27544 https://govnokod.xyz/_27544
#106: https://govnokod.ru/27552 https://govnokod.xyz/_27552
#107: https://govnokod.ru/27554 https://govnokod.xyz/_27554
#108: https://govnokod.ru/27557 https://govnokod.xyz/_27557
#109: https://govnokod.ru/27581 https://govnokod.xyz/_27581
#110: https://govnokod.ru/27610 https://govnokod.xyz/_27610

Запостил: nepeKamHblu_nemyx nepeKamHblu_nemyx, (Updated )

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

  • Добрый вечер.

    Этот оффтоп сгенерирован автоматически.

    Индекс оффтопов: https://index.gcode.space/.
    Зеркала Говнокода и полезные ресурсы:
    * https://govnokod.xyz/ (альтернативный Говнокод)
    * https://gcode.space/ (read-only зеркало Говнокода)
    * https://t.me/GovnokodBot (Говнокод-бот в «Telegram»)
    * https://t.me/GovnokodChannel (Тематический канал в «Telegram»)
    * https://vorec.space/ (глоссарий Говнокода)
    * https://app.element.io/#/room/#govnokod:matrix.org (резервный чат)

    Примечание: автоматические перекаты в настоящее время осуществляются только с аккаунта nepeKamHblu_nemyx.
    Остерегайтесь подделок. Берегите себя и своих близких. Кок!
    Ответить
  • предыдущий оффтоп перестал работать, поэтому
    https://govnokod.xyz/_27610/#comment-656560

    > а пользователям на это глубоко похуй: какая тебе разница, через что твой жёсткий диск скорраптит криптовымогатель — через дыру в «SMB» или через «Shellshock»?

    MS может отказаться чинить дыру в SMB в Windows XP, сославшись на неподдерживаемость старой винды. А если некий старый дистрибутив Linux, BSD или еще чего, у тебя есть возможности, чтобы что-то там починить, несмотря на.

    > В отличие от попен-сорсных поделок, за уязвимости в коммерческих приложениях компания расплачивается прибылью и репутацией

    Для опенсорсных поделок компания тоже расплачивается прибылью и репутацией, если она оказывает коммерческую поддержку к этим опен-сорсным поделкам

    > В «closed source» несколько другая культура: там для улучшения качества продукта принято не самому править код, а отправлять баг-репорты, краш-репорты и телеметрию.

    Багрепорты и крашрепорты (иногда и телеметрию) я и в опенсорс отправлял, если что.
    Ответить
    • Конечно не открывается. Хуйню какую-то обсуждаете с километровыми комментариями, заебался пролистывать.
      Ответить
  • https://govnokod.ru/27610#comment668260
    > Только в реальности от этой простоты нет ни малейшего толка: никто не занимается аудитом опен-сорсных проектов, за исключением редких исключений (в большинстве случаев — когда юзвери скинулись на профессионального аудитора).

    Неправда.

    Поиском уязвимостей занимаются многие крупные корпорации, которые используют данный опенсорсный софт.
    Ответить
  • Блин, вот я в теории могу selinux'ом тонко разрулить что к чему имеет доступ, но в итоге вся гуйня сольётся в едином экстазе на одном X-сервере.

    Придётся запускать каждому из них по кефиру чтобы они друг к другу не лезли в окна да буфер обмена? Но тогда получится ёбаная матрёшка или у окон от одного домена безопасности не будет работать буфер ;(

    Какой-то тлен и безысходность.
    Ответить
    • Для каждого приложения надо создавать своего пользователя.

      Это называется «Sandboxing», я узнал это из Gentoo-wiki.
      Ответить
      • > пользователя

        Это здесь вообще не при делах. Если ты от разных юзеров на одном Х-сервере наделаешь окошек, то они все будут лазить друг к другу.

        А остальные права (кроме иксов) можно и для одного юзера разрулить (или вообще в контейнер/виртуалку загнать).
        Ответить
    • В qubes это как-то порешали, можно посмотреть как.
      Ответить
      • virtualbox тоже как-то прокидывает окошки из внутренней оси во внешнюю. Но боюсь что и там и там завязано на конкретный гипервизор.
        Ответить
        • Поэтому я за отдельные ПК или ноуты. Один MacBook, один ноут на Windows, десять ноутов на Linux-ах.
          Ответить
    • выдай каждому по отдельному DISPLAY

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

      А вообще какой session 0 isolation ))
      Ответить
      • В принципе, даже фаерфокс себя нормально в кефире чувствует. Правда ему пришлось оконного менеджера за компанию запускать, иначе менюшки под главное окно проваливаются.

        З.Ы. У хромиума даже без wm всё работает.
        Ответить
        • Я боюсь что это единственный способ.

          Каждому сокету для связи с X11 права отдельного юзера, или каждому в домашнюю папку свою .Xauthority и всё.


          Находил статью как петух сделал мультисит из одной машины.

          DISPLAY это совокупность скрина (монитор+видеокарта), клавы и мыши.
          У него несколько карт, и куча мышей и клав.

          Он собрал такие диспели (прописав их в xorg.conf), и получил реально разные рабочие места
          http://www.linuxtoys.org/multiseat/multiseat.html
          Ответить
          • Иксы вообще охуенный конструктор, и современные юниксоиды уже и забыли наверное, какие штуки можно было с ними делать

            Например можно поставить несколько серверов приложений, на каждом запустить DM.
            Можно в каждом DM прописать другие, чтобы они умели форвадить клиентов

            Один из DM настроить на ответы на BroadcatQuery.

            Потом включаешь бездисковую станцию с иксами (по сути X терминал), он бродкастом находит DM, и рисует окошко входа и список серверов

            Пользователь выбирает сервер, и логинится туда.

            Получается как RDS ферма с брокером, для какого-нить класса вообще збс
            Ответить
          • > реально разные рабочие места

            – у них что-то не то с social distancing
            Ответить
            • Экономят место

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

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

                        – которые берут джунов и пилят госзаказы?

                        кстати, вот по этому поводу начальника транспортного цеха было бы интересно послушать
                        Ответить
                        • Д++ вроде богатый, не?

                          Я просто вспомнил как в моей молодости во всяких "бизнес центрах класса F", переделанных из старых советских НИИ, сидели такие вот маленькеи веб студии из двух человек, и делали сайты прачечным, и хостили их на valuehost, и вот у них обычно с санитарными нормами был швах
                          Ответить
                            • панель управления говноуслугами.
                              Ответить
                          • д++ может и богатый, а вот про его фирму я не уверен

                            > делали сайты прачечным
                            > с санитарными нормами был швах

                            какая постирония )))
                            Ответить
  • Кстати, а получается display manager окошко логина рисует вообще напрямую? Иксов и вейленда в этот момент ещё нету. Или я туплю?
    Ответить
    • Иксы есть конечно. Он либо их запускает сам, либо цепляется к существующим, либо они к нему цепляются
      Ответить
      • Лол, gdm оказывается вообще временный вейланд поднимает на время логина. А lightdm да, временные иксы.
        Ответить
        • Я не разбираюсь в отношениях вялого с гномом.

          `xdm(1)` либо сам запусакет Xorg (local display) либо цепляется к удаленному (remote display) либо принимает запрос по протоколу XDMCP и рисует на нем окошко

          https://www.x.org/releases/X11R7.6/doc/man/man1/xdm.1.xhtml

          xdm offers display management two different ways. It can manage X servers running on the local machine and specified in Xservers, and it can manage remote X servers (typically X terminals) using XDMCP (the XDM Control Protocol) as specified in the Xaccess file.

          Он еще может направить тебя на другой xdm (XDMCP Indirect)

          http://www.chiark.greenend.org.uk/~peterb/uxsup/project/xdm-socket/

          >временные
          а зачем временные?

          systemd стартует dm
          dm запускает иксы и пускает в них сессию
          при выходе из сессии иксы завершаются, dm их перезапускает
          не?
          Ответить
          • Да, если не прыгает с иксов на вейланд или обратно, то действительно не временные (пид не поменялся).

            > сессию

            Я же правильно понимаю, что "сессия" -- это просто батник, который поднимает оконный менеджер, всякие панельки и прочее говно?
            Ответить
                • > Xorg (Русский) - ArchWiki - Arch Linux

                  Ясно.
                  Ответить
                      • А Лолечка типа не трап?

                        Пацан сидит с женским ником и женским аватаром, не?
                        Ответить
                        • Теперь понятно, почему Лолечка так ненавидит других трапов: конкуренция.
                          Ответить
                        • > женским ником

                          Дай определение женскому нику.

                          > и женским аватаром

                          Вот блин, совсем забыл, что настоящий мужик ставит на аватарку только другого настоящего мужика, и потом весь форум любуется на жопу/хуй этого самого настоящего мужика. Другие (менее мужские картинки, т.е. те, на которые не возбуждается guest6), как и любое проявление симпатии к слабым мужчинам без членов (женщинам) – это проявление слабости, а настоящий мужик должен не иметь слабостей. Всё правильно говорю, или я упустил какие-то нюансы?
                          Ответить
                          • Про аватарку принято. Лучше женская аватарка, чем хуй. Но аниме — говно, поэтому лучше другую женщину поставь.
                            Ответить
                            • > Но аниме — говно

                              Во первых — нет.

                              Во вторых, вообще-то это не «аниме», а какой-то милый и прикольный рисунок из интернета (статичная картинка, не анимация). При чём тут вообще аниме?

                              Сегодня в зерно забыли таблеток насыпать?
                              Ответить
                          • >потом весь форум любуется на жопу/хуй этого самого настоящего мужика.

                            именно по этому я за "rotoeb"
                            Ответить
                          • я вот не уверен, что это спина... может, чёлка длинная просто
                            Ответить
            • Я бы сказал, что это зависит от DM.

              ``xdm`` имеет ресурс DisplayManager*session

              −session session_program
              Specifies the value for the DisplayManager*session resource. This indicates the program to run as the session after the user has logged in.

              А что туда записать -- дело твое
              На дебиане там прописан
              https://manpages.debian.org/bullseye/x11-common/Xsession.5.en.html

              Можно прописать туда session manager (удобно выбирать окружение):
              https://www.x.org/releases/X11R7.6/doc/man/man1/xsm.1.xhtml

              Какие-то DM в каких-то DE могут вообще иметь свою собственную машинерию
              Ответить
        • > lightdm

          Лол. Единственный реально используемый вклад Canonical в open-source.
          Всё остальное (mir, unity, upstart) сдохло. Или я что-то забыл?
          Ответить
          • > Или я что-то забыл?

            apparmor?

            З.Ы. Его не они начинали пилить, но до космонавта он вроде никому особо не интересен был.
            Ответить
            • Ну снап -- спорная вещь, очень сильно конфликтует с классическим подходом к репе. Зато там свежатина, да.
              Ответить
              • а lightdm?

                Вообще чем это всё лучше xdma? Круглыми уголками?
                Ответить
  • Кстати, почему все так не любят «systemd»?
    Это же удобный, многофункциональный, консистентный и унифицированный инструмент, который позволяет эффективно решать распространённые проблемы.

    Понятно, конечно, что утёнок душит выкидывать тонны ущербных говноскриптов из «/etc/rc0.d», но взрослеть-то нужно.

    Разговоры про «философию Unix» и «Unix way» лучше оставить прыщавым подросткам: это им приличествует разводить срачи о том, чьи скрипты православные, а чьи — ересь. Взрослым людям ОС нужна для эффективного решения задач, а не для споров про философию и подход.
    Ответить
    • Тебе приятно, что «PID 1» занят какой-то питушнёй на 500к+ строк хуёво-лапшичного говнокода, который должным образом никто не проверяет, и который при этом занимается ещё кучей всякой пижни?

      Лично мне – нет, именно поэтому я за «OpenRC».
      Ответить
      • А какая мне разница, чем там занят какой-то «PID 1», если он выполняет то, что мне нужно от системы, и делает это хорошо?
        Ну а утверждение о том, что его код никто не проверяет вообще смешно: это относится вообще практически к любому опен-сорсному ПО.
        Ответить
        • > А какая мне разница, чем там занят какой-то «PID 1»

          Если никакой, то поставь Винду, ведь...

          > он выполняет то, что мне нужно от системы

          И не выёбывайся.

          > и делает это хорошо

          Не хорошо, а хуёво и неэффективно.

          > это относится вообще практически к любому опен-сорсному ПО

          В портянке говнокода на 500 строчек кода найти уязвимость заметно проще, чем в портянке говнокода на 500000 строк кода.

          А теперь хрюкни и обнови шиндошс, или что ты там делаешь обычно.
          Ответить
            • Нет, это «ISO», мой злейший враг, враг всего ПРЫЩЕМИРА, критик пресвятого линакса.
              Ответить
              • > критик пресвятого линакса
                Ну почему же? Я за «GNU/Linux», когда он эффективно решает мои задачи.

                Критикую я иррациональную религиозную ненависть к хорошим, в общем-то, инструментам.
                Ответить
                • > Я за «GNU/Linux», когда он эффективно решает мои задачи.

                  Т.е. когда в нём отсутствуют поделия сумрачного гения Поттеринга? А какой у тебя DE стоит? GNOME? Если не гном, то причины, по которым люди не ставят системзду, тебе знакомы. А если всё-таки гном, то это многое объясняет.
                  Ответить
                  • > А какой у тебя DE стоит? GNOME?
                    Зачем мне DE на серверах? Управлять сервером мне гораздо быстрее и удобнее через консоль. Прописать «systemctl start service_foo» эффективнее, чем рыться в менюшках.
                    Ответить
                • > Критикую я иррациональную религиозную ненависть к хорошим, в общем-то, инструментам.

                  Правильно ли я понимаю, что ты считаешь хорошим инструментом "Microsoft Visual Studio"? Моя ненависть к этому инструменту несет не религиозный характер, и не связана с тем, что это продукт от "Microsoft". Я ненавижу поделки от "JetBrains" примерно так же сильно, и примерно по тем же причинам.
                  Ответить
                  • >Правильно ли я понимаю, что ты считаешь хорошим инструментом "Microsoft Visual Studio"?

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

                    Для разработки на C# или VC++ под винду Visual Studio вполне хорош, а для LISP вероятно нет. А для программирование на "си" под микроконтроллеры -- совсем нет.

                    Точно также Intellij Idea отличный IDE именно для Kotlin, а вот нужно ли писать на Ruby в RubyMine -- вопрос открытый и весьма спорный

                    > несет не религиозный характер
                    ой, ну ладно)) Кажется что бы MS ни сделал, обитатели ЛОРа это обосрут
                    Ответить
                    • > ой, ну ладно)) Кажется что бы MS ни сделал, обитатели ЛОРа это обосрут

                      Ну вот Microsoft Research пилит Haskell и на ЛОРе его что-то не особо обсирают, скорее хвалят.
                      Ответить
                    • > Для разработки на C# или VC++ под винду Visual Studio вполне хорош, а для LISP вероятно нет

                      А рационально ли делать такую IDE, чтобы ей хорошо было разрабатывать только под винду? Т.е. вот надо отдельную IDE под винду, отдельную IDE под FreeBSD, отдельную под NetBSD, отдельную под QNX, отдельную под Haiku, и намертво их прибивать к соотв. операционке, это норм, да?

                      И мои претензии касаются не только заточенности под винду, но еще и общей тяжеловесности и тормознутости этой студии.
                      Ответить
                      • > рационально
                        – какова целесообразность постройки моста через реку с точки зрения щуки? ©
                        Ответить
                        • > – какова целесообразность постройки моста через реку с точки зрения щуки? ©

                          Доебка не ясна. Перефразируйте
                          Ответить
                          • нахожу странным саму постановку вопроса про рациональность

                            мс уже минимум четверть века делает ide под винду и пока полёт нормальный

                            правда, я вот пользуюсь ide от ms под мак время от времени и тоже пока не умер
                            Ответить
                            • > нахожу странным саму постановку вопроса про рациональность

                              Находи. Я лично не нахожу.

                              > мс уже минимум четверть века делает ide под винду и пока полёт нормальный

                              Люди более чем две тыщи лет верят во всякие "религии" и поклоняются всяким "богам" и пока полет нормальный.
                              Ответить
                              • ты не понимаешь наверное

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

                                а чувак, у которого в контроллерах ничего нет, вдруг задаётся вопросом "а рационально ли это?"

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

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

                                    а мнение мимокрокодила их как бы и не чешет
                                    Ответить
                                    • > для своих создателей и верхушки конечно

                                      Т.е. правильно ли я понимаю, что над рациональностью того, что наша IDE работает только в винде, незачем думать, если эта IDE приносит бабло при таком подходе?

                                      > а мнение мимокрокодила их как бы и не чешет

                                      Может конкретно их и нет
                                      Ответить
                                        • > бессмысленный вопрос какой-то

                                          Это т.н. "закрытый вопрос", на который можно ответить "Да" или "Нет". У тебя есть ответ?
                                          Ответить
                                      • ты лучше скажи, в чём рациональность портирования студии на лялих
                                        Ответить
                                        • Ты лучше для начала ответь на поставленный вопрос.
                                          Ответить
                                          • я на бессмысленные вопросы не отвечаю, сорян

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

                                              Я не считаю этот вопрос бессмысленным.
                                              Ответить
                                      • Дай, пожалуйста, определение «рациональности», а так же уточни, для кого факт работы «Visual Studio» в винде должен быть рациональным или нерациональным.
                                        Ответить
                                        • Небольшое дополнение для иллюстрации того, что я имею в виду: тратить N денег на удобную клавиатуру для меня рационально, потому что это мой рабочий инструмент. С другой стороны, тратить столько же денег на клавиатуру для нищего (без негативных коннотаций) человека, работающего грузчиком — совершенно нерационально.

                                          Именно поэтому для ответа на вопрос о рациональности в первую очередь следует указать субъекта, с точки зрения которого мы рассматриваем факты.
                                          Ответить
                                        • > Дай, пожалуйста, определение «рациональности»

                                          Рациональность (от лат. ratio — разум) — термин, в самом широком смысле означающий разумность, осмысленность, противоположность иррациональности. В более специальном смысле — характеристика знания с точки зрения его соответствия некоторым принципам мышления. Использование этого термина часто связано с вниманием к различиям в таких принципах, поэтому принято говорить о различных типах рациональности.

                                          > а так же уточни, для кого факт работы «Visual Studio» в винде должен быть рациональным или нерациональным.

                                          Для того, кто захочет ее использовать не в винде. Привязка «Visual Studio» к винде может быть нерациональна и для самой «Microsoft», например чтобы продавать ее под какие-нибудь маки. Вполне может так оказаться, что через 10-20 лет никаких IBM-совместимых персональных компьютеров с процессорами x86-64 не будет, а будет какая-нибудь хрень на ARM и RISC-V с какими-то не-майкрософтовскими операционками (IOS, Android или еще какая-то хрень, про которую мы пока не знаем), и там вполне может быть полезна эта IDE.
                                          Ответить
                                          • Q:для кого факт работы «Visual Studio» в винде должен быть рациональным или нерациональным?

                                            A: Для того, кто захочет ее использовать не в винде.

                                            Dixi.



                                            > Привязка «Visual Studio» к винде может быть нерациональна и для самой «Microsoft»

                                            Иногда выгоднее продавать свою ОС с бесплатной IDE, чем делать кросс-платформенную IDE.

                                            MS давно уже дает бесплатную версию Студии (так было не всегда)

                                            XCode за пределами Mac OS тоже не очень распостранен.

                                            Яблоко свою ОС не продает (так было не всегда) но требует железа.

                                            Хочешь писать под ios? Купи мак.
                                            Ответить
                                            • я вообще не понимаю, почему в данном случае переносимым должен вдруг быть софт, а не форматы

                                              а форматы вижуалки давным давно умели открывать ещё несколько ide
                                              Ответить
                                              • Там в форматах небось есть проприетарное говно. Если там какие-нить подключения к MS-SQL, какие-нить ActiveX говны вытянуты, какие-нить WPFные гуи, то может и не открыться


                                                Безопаснее хранить cmake проект, и из него уже генерить cproj и sln кмк
                                                Ответить
                                                • > может и не открыться
                                                  – я сильно глубоко не копал, но солюшен вроде открывается всегда, может не открываться конкретный проект, он просто будет неактивным на конкретной платформе

                                                  > cmake
                                                  – та ну, для шарпа имхо излишний пердолинг
                                                  Ответить
                                                  • Навреное ты прав про проект, да: sln же просто список проектов, плюс выборка активного и конфигурации

                                                    Интересно перенести шарп проект со студии в Rider например. Откроет ли?
                                                    Ответить
                                                    • должен

                                                      я как-то давно делал одну маленькую фигню в вижуалке

                                                      а лет через 5 этот солюшн открыл в VS for Mac

                                                      скачало нужные проекты с нагета, собралось, запустилось

                                                      конечно, уверен, что есть какие-то специфические ситуации, но в целом производится такое впечатление, что это работает
                                                      Ответить
                                            • > Иногда выгоднее продавать свою ОС с бесплатной IDE, чем делать кросс-платформенную IDE.

                                              А иногда и не выгоднее. А может это выгодно в краткосрочной перспективе, но не выгодно в долгосрочной. Зачем-то ж MS сделали эту свою "Visual Studio Code".

                                              > MS давно уже дает бесплатную версию Студии (так было не всегда)

                                              Ха. Это мне напомнило одну статью Джоэла Сполски за 2004 год
                                              https://web.archive.org/web/20180922120900/http://russian.joelonsoftware.com/Articles/HowMicrosoftLosttheWaronA.html


                                              > Логическое заключение состоит в том, что если вы пытаетесь продавать операционную систему, то вам необходимо сделать так, чтобы разработчики программного обеспечения захотели писать программы для вашей операционной системы. Поэтому Стив Баллмер прыгал по сцене и кричал: «Разработчики, разработчики, разработчики, разработчики». Это так важно для Microsoft, что единственная причина, из-за которой средства разработки программного обеспечения не раздаются бесплатно, заключается в том, что они не хотят случайно перерезать кислород разработчикам конкурирующих инструментов разработки (хорошо, тем, которые остались), так как разнообразие инструментов разработки, доступных для их платформы, делает ее куда более привлекательной для разработчиков. Но на самом деле они хотят раздавать. Благодаря их программе Empower ISV вы можете получить пять наборов MSDN Universal (иначе известных как «практически все продукты Microsoft, исключая Flight Simulator») всего за 375$. Компиляторы командной строки для языков .NET включены с бесплатными библиотеками .NET … тоже бесплатно. Компилятор С++ теперь бесплатен. Что угодно для поощрения разработчиков работать под .NET и ликвидации таких компаний как Borland.
                                              Ответить
                                              • > А может это выгодно в краткосрочной перспективе, но не выгодно в долгосрочной.

                                                Может быть да, может быть нет.

                                                >Зачем-то ж MS сделали эту свою "Visual Studio Code".
                                                Существует мнение, что для продвижения Azure.

                                                MS вкладывает бабло в облако (может быть думает, что продажа ОС и всяких Exchange уже не будет приносить сказочной прибыли через 10-15 лет) и старается сделать инструмент плотно с ним интегрированный, чтобы каждый PHPшник мог на своей Убунте в VSCode написать сайт, и загрузить его им на Azure.
                                                Ответить
                                                • > MS вкладывает бабло в облако (может быть думает, что продажа ОС и всяких Exchange уже не будет приносить сказочной прибыли через 10-15 лет)
                                                  > старается сделать инструмент плотно с ним интегрированный, чтобы каждый PHPшник мог на своей Убунте в VSCode написать сайт, и загрузить его им на Azure.

                                                  Ди-вер-сифи-ка-ция.

                                                  И правильно делают.

                                                  Большая контора с кучей денег никогда не положит все яйца в одну корзину, и 8 из 10 проектов могут оказаться и окажутся тупиковыми, малоприбыльными. Но зато 1-2 выстреливших позволят отбить затраты и продолжать держаться на плаву.
                                                  Ответить
                                          • «Замечательное» определение. Рационально — это когда разумно и противоположно иррационально. А иррационально — это когда рационально.

                                            > поэтому принято говорить о различных типах рациональности.
                                            Ещё лучше.
                                            Ну ладно.

                                            > Для того, кто захочет ее использовать не в винде.
                                            Да, для него это однозначно иррационально, потому что это попытка решения проблем неподходящим для этого инструментом.

                                            > может быть нерациональна и для самой «Microsoft»
                                            С точки зрения «Microsoft» у разработки «Visual Studio» имеется единственная задача: получение прибыли (прямой или косвенной). Над решением этой задачи в «Microsoft» работают опытные специалисты, и нет никаких оснований полагать, что они разбираются в подсчёте прибыли лучше, чем питухи с «Говнокода». Если бы портирование «Visual Studio» под другие системы было экономически выгодно (то есть потенциальная прибыль от этого действия превышала бы потенциальные затраты) — мы бы сейчас могли сделать «apt-get install visual-studio».
                                            Таким образом, создание и поддержка «Visual Studio» компанией «Microsoft» соответствует целям и задачам компании, и, следовательно, является рациональным.
                                            Ответить
                                            • > «Замечательное» определение. Рационально — это когда разумно и противоположно иррационально. А иррационально — это когда рационально.

                                              Можешь еще спросить "что такое разумно", и "что такое иррационально". Если очень долго спрашивать определения слов в определениях слов, в конечном итоге получится зацикливание т.к. множество корректных (допустимых) слов счетно и конечно.

                                              > Да, для него это однозначно иррационально, потому что это попытка решения проблем неподходящим для этого инструментом.

                                              Неподходящим т.к. его сделали неподходящим.

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

                                              Очень интересно. Почему тогда Windows Phone провалилась? Мне очень давно (почти сразу) было очевидно, что это провальная инициатива, но MS упорно вливала туда бабло, не получая никакой прибыли, и они даже купили под это дело Nokia и все там прогондонили
                                              Ответить
                                              • > Почему тогда Windows Phone провалилась?

                                                – потому что Сатья ажурщик лол?

                                                нет, я знаю, что wp в принципе стоила балмеру поста, но подковёрные игры никто не отменял
                                                Ответить
                                                • > – потому что Сатья ажурщик лол?

                                                  Тогда был Баллмер. Он еще в запотевщей рубашке прыгал и выкрикивал developers, developers, developers
                                                  Ответить
                                                  • developers, developers, developers было лет на 15 раньше

                                                    wp + nokia вполне могла на каких-то рынках потягаться с ведром

                                                    почему её слили, это вопрос хороший. а её именно слили.
                                                    Ответить
                                              • > Если очень долго спрашивать определения слов в определениях слов, в конечном итоге получится зацикливание т.к. множество корректных (допустимых) слов счетно и конечно.
                                                А если не спрашивать — в конце концов придём к тому, что каждый будет говорить о своём.
                                                Так что вот моё определение для конкретного случая: создание продукта является рациональным тогда и только тогда, как созданный продукт выполняет задачи, которые предполагается решать при помощи этого продукта. В самом простом случае такой задачей может быть получение прямой прибыли: тогда создание продукта рационально (для создателя!) тогда, когда эту прибыль продукт приносит.

                                                > Неподходящим т.к. его сделали неподходящим.
                                                Неверно. Его не сделали неподходящим, его попросту не портировали. Это совершенно разные вещи.
                                                Разработка кросс-платформенного приложения (особенно на всяких сишках с крестами) стоит гораздо дороже, чем разработка приложения для конкретной платформы. Чтобы «Visual Studio» запускалась на линуксах — её авторы должны были потратить очень много дополнительного времени (и, следовательно, денег) на поддержку зоопарка этих самых линухов, зоопарка DE, X-сервера, вялого (в будущем) и прочего прыщеговна.
                                                Поэтому нет, никто специально не рушил (со злодейским хохотом) совместимость «Visual Studio» с линуксами. Её просто не делали.

                                                > Почему тогда Windows Phone провалилась?
                                                Потому что все совершают ошибки.

                                                > Мне очень давно (почти сразу) было очевидно
                                                Задним умом все крепки. Это эффект позитивного подкрепления: человеческому мозгу приятно чувствовать себя умным, поэтому моменты «я же говорил!» запоминаются гораздо лучше, чем несбывшиеся прогнозы.
                                                Ответить
                                                • > Неверно. Его не сделали неподходящим, его попросту не портировали.

                                                  > Поэтому нет, никто специально не рушил (со злодейским хохотом) совместимость «Visual Studio» с линуксами. Её просто не делали.

                                                  Правильнее тогда говорить "его не делали портируемым" а не "не портировали".

                                                  > Разработка кросс-платформенного приложения (особенно на всяких сишках с крестами) стоит гораздо дороже, чем разработка приложения для конкретной платформы.

                                                  It depends. И сейчас с кросс-платформой на сишке/крестах стало на порядок проще.

                                                  > на поддержку зоопарка этих самых линухов, зоопарка DE, X-сервера, вялого (в будущем) и прочего прыщеговна.

                                                  Можно было взять Qt, проблему с гуйней бы это решило.

                                                  > Задним умом все крепки. Это эффект позитивного подкрепления: человеческому мозгу приятно чувствовать себя умным

                                                  Я очень четко помню, как это было. Сначала я действительно полагал, что у MS есть какие-то шансы продвинуть свою принципиально новую ОС на мобильный рынок. Через некоторое время это выглядело со стороны как явно бессмысленное сжигание бабла, и было достаточно очевидно(и не только мне), что пора бы уже остановиться, но желание MS втулить свою ОС на мобильный рынок было слишком сильно...
                                                  Ответить
                                                  • > Правильнее тогда говорить "его не делали портируемым" а не "не портировали".
                                                    Хорошо.

                                                    > It depends. И сейчас с кросс-платформой на сишке/крестах стало на порядок проще.
                                                    Если под «проще» ты имеешь в виду «Qt» — то, наверное, да.

                                                    > Можно было взять Qt, проблему с гуйней бы это решило.
                                                    Напоминаю, что первый выпуск «Visual Studio» произошёл в 1997-м году.

                                                    Взять вышедшую два года назад и никому не известную либу для разработки IDE, изначально планировавшейся как основной инструмент для разработки под «Windows»? Увольте. Даже сейчас, спустя полтора десятка лет после выпуска, «Qt» — всё ещё кривое и тормозящее говно; каким же он был сразу после релиза?

                                                    > Я очень четко помню, как это было. Сначала я действительно полагал, что у MS есть какие-то шансы продвинуть свою принципиально новую ОС на мобильный рынок.
                                                    О чём и речь.

                                                    > Через некоторое время это выглядело со стороны
                                                    Ключевой момент — «со стороны». Мы не знаем и не можем знать, какие процессы происходили в это время внутри «Майкрософта», и чем эти затраты были оправданы. Можно, конечно, порассуждать о тупых менеджерах, но смысла в этом никакого нет.
                                                    Ответить
                                                    • > Даже сейчас, спустя полтора десятка лет после выпуска, «Qt» — всё ещё кривое и тормозящее говно; каким же он был сразу после релиза?

                                                      А винапи-гуйня является образцом скорости и прямоты?
                                                      Ответить
                                                      • Если за «Винапи-гуйню» брать «Visual Studio» — то да, UX у неё на порядок лучше, чем у QT-говна.
                                                        Ответить
                                                        • > Если за «Винапи-гуйню» брать «Visual Studio» — то да, UX у неё на порядок лучше, чем у QT-говна.

                                                          Я вообще-то про всякую MFC-питушню, OLE, COM, ActiveX и проч. сопутствующие говна. В архитектурном, так сказать, плане

                                                          Когда я для интереса попробовал в этом разобраться, было ощущение что я окунулся в чан с дерьмом
                                                          Ответить
                                                          • Четверть века назад можно было через OLE вставить документ excel себе в приложение

                                                            В Linux в это время у половины людей вообще гуй не работал, потому что xfree modlines не могли прописать
                                                            Ответить
                                                            • > Четверть века назад можно было через OLE вставить документ excel себе в приложение

                                                              Которое будет работать только с такой-то версией excel, который еще купить надо. Охуенно, да.
                                                              Ответить
                                                • > Чтобы «Visual Studio» запускалась на линуксах — её авторы должны были потратить очень много дополнительного времени (и, следовательно, денег)

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

                                                  > на поддержку зоопарка этих самых линухов, зоопарка DE, X-сервера, вялого (в будущем) и прочего прыщеговна

                                                  И ещё пердолиться с этим сраным неоднородным говном.

                                                  M$ нужна система разработки софта под свою ОСь.
                                                  Потому что нужен софт, голая операционная система никому особо не интересна.
                                                  Ответить
                                                  • > M$ нужна система разработки софта под свою ОСь.
                                                    Это правда, да.

                                                    > Извините. А нахуя портировать для конкурирующей платформы удобное средство разработки?
                                                    Справедливости ради это можно оправдать стратегиями вида EEE. Ну или просто банальным переманиванием: мол, приходите, девелоперсы, к нам на венду, у нас вон какая классная IDE есть!
                                                    Но, конечно, в давние времена первых выпусков «Студии» «Майки» были гораздо более агрессивны в плане конкуренции («своей земли не отдадим ни пяди» vs «культурная ассимиляция»).

                                                    А сейчас вон даже «VS Code» есть — вроде как рекламный флаер «Visual Studio».
                                                    Ответить
                                                    • > Справедливости ради это можно оправдать стратегиями вида EEE
                                                      Хахаха.

                                                      Так это нерентабельно.

                                                      90% линуксоидов даже бесплатно не поставят это говно, ибо для них само слово Майкрософт это как красная тряпка для быка, или как «Cатана» для православного человека.

                                                      > мол, приходите, девелоперсы, к нам на венду, у нас вон какая классная IDE есть

                                                      Так уже сделали WSL: «Приходите, к нам на венду».

                                                      Кмк, это гораздо более логичная стратегия: расширять возможности своего продукта, а пилить IDE для чужого. Причём поддержать весь зоопарк кобенаций разных DE и X11/Wayland/Mir/etc нетривиальная задача даже для M$.

                                                      С другой стороны, чем чёрт не шутит. Браузер же портанули.
                                                      Ответить
                                                      • > а пилить IDE для чужого
                                                        – а НЕ пилить имелось в виду?

                                                        > Браузер же портанули.
                                                        – какой браузер?
                                                        Ответить
                                                          • я до сих пор не понимаю, почему они закопали оригинальный edge
                                                            Ответить
                                                            • Сейчас происходит много странных вещей. То появляется новый «Edge», который по сути является «Хромиумом» с подменённой иконкой, то в «Visual Studio» зачем-то включат «clang», то «WSL» появится.

                                                              Такое ощущение, что «MS» хочет плавно отойти от разработки и в будущем только чужой софт упаковывать.
                                                              Ответить
                                                              • бляди

                                                                последняя более-менее девелоперская контора
                                                                Ответить
                                                              • > Такое ощущение, что «MS» хочет плавно отойти от разработки и в будущем только чужой софт упаковывать.

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

                                                                Её суть в том что Mелко$офту просто нерентабельно держать армию кодеров и саппортить это всё говно (браузеры, операционку). Причём винду нужно ещё портировать на арм.

                                                                Потому они со временем планируют перейти на linux-kernel, оставив легковесную обёртку вроде wine которая проксирует winapi system call в ядро луникса.

                                                                У них же сейчас большая часть профитов идёт от Azure. А так можно перекинуть головняк по поддержке зоопарка x86 и arm на коммьюнити.

                                                                Короче «Microsoft loves Linux»
                                                                Ответить
                                                            • > я до сих пор не понимаю, почему они закопали оригинальный edge

                                                              Потому что его использовали в основном только чтобы скачать другой браузер.
                                                              Ответить
                                                    • > стратегиями вида EEE

                                                      И с каких это пор ISO уверовал в бредни сектантов жопен-сороса?
                                                      Ответить
                                                      • Стратегия EEE это не бредни каких-то сектантов

                                                        > "Embrace, extend, and extinguish" (EEE),[1] also known as "embrace, extend, and exterminate",[2] is a phrase that the U.S. Department of Justice found[3] that was used internally by Microsoft[4] to describe its strategy for entering product categories involving widely used standards, extending those standards with proprietary capabilities, and then using those differences in order to strongly disadvantage its competitors.
                                                        Ответить
                      • Как правило чем система абстрактнее, чем шире круг решаемых ей задач, тем хуже она решает конкретную задачу.

                        ``vim`` прекрасный редактор для всего, но на C# удобнее писать в студии с R#.

                        Именно заточка VS под нужны Windows разработчика (поддержка ресурсов, например) позволила сделать её более удобной.

                        > тяжеловесности и тормознутости

                        Это плата за функционал и тяжелое наследие, к сожалению.

                        Notepad++ не тормозит, но и переименовать namespace в С++ в нем сложнее
                        Ответить
                  • > Правильно ли я понимаю, что ты считаешь хорошим инструментом "Microsoft Visual Studio"?
                    Совершенно верно, я считаю «Microsoft Visual Studio» прекрасным инструментом для своей задачи.
                    Собственно говоря, в мире больше не существует настолько же продвинутых IDE для «C++». Как самый банальный пример — «IntelliSense» умеет вычислять значение constexpr-переменных до компиляции, что весьма помогает при разработке метушни. Насколько я знаю, никакие другие средства разработки так не умеют.
                    Ответить
                      • Наведи, пожалуйста, курсор на переменную «c» и посмотри, чему она равна.
                        Ответить
                        • Прилетела птичка Обломинго
                          https://youtrack.jetbrains.com/issue/CPP-5064

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

                          Ну ок, факт отсоса силайна у студии зафиксирован ))

                          Странно, что они этого не сделали.
                          Ответить
                          • Могу предположить, что тот ворнинг у них рисует какая-то внутренняя закрытая подсистема типа встроенной «VDS-Studio», которой на вход подаются исходники и настройки, а на выходе из неё можно получить только ворнинги, но не сложную контекстную информацию. Соответственно, привязать её к сервису подсказок (как, кстати, он у жидов называется?) выходит слишком сложно/дорого/нерационально.
                            Ответить
                            • Нет, для «C++» не умеет. Для «C#» умеет, для «Basic» умеет, а кресты соснули.
                              Ответить
                            • я не понял, джейсон мне уже и в C++ насрал?
                              Ответить
                            • > "Вижуалстудия" так умеет?

                              Оно нахуй не надо. Я бы отключил эту херню и не писал такое говно.

                              Когда в структуре 1 поле и так всё понятно.

                              А когда 3 и больше, лучше писать имена явно, чтобы:
                              а) самому не путаться где какое поле
                              б) при рефакторинге не перепутать порядок
                              в) при просмотре кода обычным редактором (дифф в гите, ревью коммита в html) другим было понятно что происходит.
                              Ответить
                              • Именно по этому я за "vim" + "ectags".
                                Только таким макаром можно писать читаемый код.

                                А код, написанный в IDE, только в IDE под интерактивным дебагером и читаем
                                Ответить
                                • Причём на скрине какое-то уебанское, блевотное форматирование скобок.

                                  И самое смешное, если жавашки в интелижопе проебут, то хинты будут неправильные:
                                  > только тут баг в этих хинтах, если что
                                  Ответить
                                • Поддерживаю! Не скажу, что конкретно "vim" всем подойдёт, но редактор всегда лучше, чем анскильная IDE.

                                  В IDE пишут нечитаемое говно, код-пустышку, код-бюрократ, код-гной, код-пидор.

                                  Ещё мудачьё говорит "просто купи компьютер помощнее" и хвастается своими печками с 32ГБ памяти, последними процессорами №9 и блоками питания на киловатты, и всё равно время от времени жалуется, что новая вкладка в IDE долго открывается.
                                  Ответить
                                  • > В IDE пишут нечитаемое говно, код-пустышку, код-бюрократ, код-гной, код-пидор.

                                    Правильнее сказать "IDE позволяет писать крайне заебаный говнокод со всякой хуйней, и в них пишут такой код, и потом с таким кодом возможно нормально работать только в IDE"

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

                                    Я бы на месте заказчиков такой код в сортирах топил бы спецом, и в навозные ямы, где-нибудь там возле ферм, скотобоен всяких, где говнища побольше, вот очистные крупных городов ещё тоже очень хорошее место.
                                    Ответить
                              • Эта штука пришла из «Java», где она используется для подсветки параметров вызовов функций: там нет именованных параметров (гуру поясняют, что если у вас так много параметров в функции, что можно и напутать, то лучше переписать всё на «builder» и течь с «foo().withBar(10).withBaz("hello")....» ). Но поскольку писать билдеры абстрактных фабрик на каждый чих интересно не всем — появилась такая вот эмуляция именованных параметров через подсказки IDE.
                                Ответить
                                • > что если у вас так много параметров в функции, что можно и напутать,
                                  > то лучше переписать всё на «builder» и течь с «foo().withBar(10).withBaz("hello")....»

                                  Подтверждаю. (я не гуру)

                                  > Но поскольку писать билдеры абстрактных фабрик на каждый чих
                                  @lombok.Builder
                                  public class SomeYagaShit {
                                     int bar;
                                     String baz;
                                  }
                                  
                                  //call
                                  foo ( 
                                       SomeYagaShit.builder().withBar(10).withBaz("hello").build()
                                  );

                                  Именно поэтому я за «Сишку»

                                  foo( (Pair){.bar=10, .baz = "hello"} );
                                  Ответить
                                • Можно объявлять функции с единственным параметром, в который передавать структуру.
                                  Ответить
                                  • > структуру

                                    Именованных инициализаторов в джаве тоже нету... Разве что создавать структуру и методично присваивать в неё по одному полю.

                                    З.Ы. В итоге что-нибудь забудешь заполнить.
                                    Ответить
                                    • > Именованных инициализаторов в джаве тоже нету...

                                      Есть хак через омонимные классы.
                                      Но это под капотом замыкание, которое хватает контекст (привет утечки!).

                                      Потому это наименьшее из говн:
                                      https://www.projectlombok.org/features/Builder
                                      Ответить
                                      • Котя, котенька, коток,
                                        Котя, серенький лобок,
                                        Приди, котя, ночевать,
                                        Нашу деточку качать.

                                        Уж тебе я, коту,
                                        За работу заплачу:
                                        Дам кусок пирога
                                        И кувшинчик молока.
                                        Ответить
                    • > «IntelliSense» умеет вычислять значение constexpr-переменных до компиляции, что весьма помогает при разработке метушни.

                      Учитывая что значение constexpr-переменной вычисляется Тьюринг-полной питушней, подсказка для такой фигни может идти сколь угодно долго.
                      Ответить
                      • А если малость задуматься, окажется что в самой IDE для поддержки такой хрени нужно встраивать огрызки компилятора, и тут уж возникает вопрос "как быстро и каким образом это работает?"

                        Допустим есть некая constexpr-метушня, которая раскрывается при компиляции минуту, допустим навел я мышкой на переменную, оно будет минуту мне в IDE считать? А потом оно будет мемоизировано, т.е. второй раз если навести, оно сразу ответ выдаст? А если я поменяю один символ в компилтайм-метушне, оно будет пересчитывать констэкспры в момент редактирования компилтайм-метушни, или в момент наведения на констэкспр для получения соотв. подсказки?
                        Ответить
                      • В «gcc» эта проблема решена при помощи -fconstexpr-depth, -fconstexpr-loop-limit и -fconstexpr-ops-limit. С учётом того, что никаких проблем с подсказками к constexpr-переменных у меня не было — в «Visual Studio» она тоже решена.
                        Ответить
                        • > В «gcc» эта проблема решена при помощи -fconstexpr-depth, -fconstexpr-loop-limit и -fconstexpr-ops-limit.

                          Тогда у тебя будет не всегда подсвечиваться подсказка к этим констэкспрам. А если не будет ограничения, подсказки могут зависнуть. Обычная ситуация с двумя стулами.

                          Можно еще навернуть какую-то сложную хуйню с мемоизацией результатов этих констэкспров и хранить некий кэш подсказок, лол
                          Ответить
                          • > с двумя стулами
                            «Нельзя сделать идеально для всех случаев — не будем делать вовсе».

                            Казалось бы, буквально пару дней назад guest6 разъёбывал программистов за такой ущербный подход — и вот, пожалуйста, опять.

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

                            Да, кстати, если ограничения в сервисе подсказок соответствуют ограничениям в компиляторе, то подсказки будут работать для любых компилирующихся программ. Чем не победа перфекционизма?
                            Ответить
                            • > «Нельзя сделать идеально для всех случаев — не будем делать вовсе».

                              > Казалось бы, буквально пару дней назад guest6 разъёбывал программистов за такой ущербный подход — и вот, пожалуйста, опять.

                              В моем сообщении нигде нет утверждения "если задача не решается для всех случаев, ее не стоит решать вообще".

                              > Да, кстати, если ограничения в сервисе подсказок соответствуют ограничениям в компиляторе, то подсказки будут работать для любых компилирующихся программ. Чем не победа перфекционизма?

                              А где гарантии такого соответствия? Сам стандарт описывает эти ограничения? Кстати, что насчет вычислений с плавучими питухами, гарантируется ли воспроизводимость результатов? https://govnokod.ru/27285 - реальный пример зависимости рантайм FPU-вычислений от флагов оптимизации. Как с этим в компилтайме?
                              Ответить
                              • > Кстати, что насчет вычислений с плавучими питухами, гарантируется ли воспроизводимость результатов?

                                Разве не выжжено в головах программистов, что плавающий питух может клюнуть в любой момент, и всё кроме тривиальщины вида 1./4. или 2.+3. будет вычислено с примененением больной вычислительной фантазии, и любые конкретные результаты - мираж?
                                Ответить
                                • Т.е. для плавучепитуховых констэкспров те подсказки вообще не работает, или там может подсказываться хуйня?
                                  Ответить
                                  • Я не знаю. У меня нет этих ваших "IDE" с тормозами.
                                    Просто предполагаю, что программист должен скептически относиться к плавтухам, и тогда никаких проблем нет. Программист знает, что плавтухи - мудаки, и это знание - его оружие.
                                    Ответить
                              • > В моем сообщении нигде нет утверждения "если задача не решается для всех случаев, ее не стоит решать вообще".
                                А как же твои саркастические кавычки вокруг слова «решена»?

                                > А где гарантии такого соответствия?
                                Мне на них похуй.

                                > Сам стандарт описывает эти ограничения?
                                Конечно: https://eel.is/c++draft/implimits#2.39.

                                > Кстати, что насчет вычислений с плавучими питухами, гарантируется ли воспроизводимость результатов?
                                Мне похуй.
                                Ответить
                                • > А как же твои саркастические кавычки вокруг слова «решена»?

                                  И что тебе не нравится в моих саркастических кавычках?

                                  > Мне похуй.

                                  Т.е. тебе похуй, что IDE может подсказывать хуйню? Ну ок.
                                  Ответить
                                  • > И что тебе не нравится в моих саркастических кавычках?
                                    Их саркастичность.

                                    > Т.е. тебе похуй, что IDE может подсказывать хуйню? Ну ок.
                                    А почему мне должно быть не похуй на унылые корнер-кейсы, с которыми в реальности я никогда не столкнусь? Ты можешь придумать хоть сотню питушни, которой в микроконтроллерах нет, — от этого подсказки с вычислением константных выражений менее удобным и полезным инструментом не станут.
                                    Ответить
                        • > в «Visual Studio» она тоже решена.

                          Эта проблема не может быть решена, она может быть только "решена".
                          Ответить
                    • > Собственно говоря, в мире больше не существует настолько же продвинутых IDE для «C++». Как самый банальный пример — «IntelliSense» умеет вычислять значение constexpr-переменных до компиляции, что весьма помогает при разработке метушни. Насколько я знаю, никакие другие средства разработки так не умеют.

                      Clangd умеет. Его можно использовать и в VSCodium например. Реальный пример https://i.imgur.com/8KEPLX8.png (это я взял свою компилтайм-сортировку пузырьком https://govnokod.ru/25130#comment458282 и решил реально проверить)

                      Используемый плагин "llvm-vs-code-extensions.vscode-clangd". Но этот "clangd" можно и к GNU Emacs присобачить наверняка.
                      Ответить
                      • И в целом я за то, чтобы подобные фичи были не намертво прибиты к какой-то работающей только в одной ОС тормозной проприетарной IDE, а были отделяемыми модулями, которые можно было бы цеплять к любой хуите при желании.
                        Ответить
                        • Я за то, чтобы весь софт был модульным.

                          Например, чтобы веб-браузер можно было собрать только из нужных компонентов: хочу — беру оболочку от «Хрома», не хочу её — беру от «Симанки»; хочу — беру парсер на «Webkit», не хочу его — беру на  «Gecko»; хочу — беру интерпретатор «Йажасцрипта» на «V8», не хочу его — беру «Splidermonkey». И так далее.
                          Ответить
                          • P.S. К слову о химерах. Один чувак, смешав исходники «Хромиума 49» и «Хромиума 54», собрал «Хромиум», который запускается в «Windows XP», но при этом поддерживает некоторые функции 54-го «Хрома»:
                            http://jeder.ru/?p=280

                            Это было бы смешно, но «Archive.org» посчитал этот проект настолько важным, что снял копию:
                            https://archive.org/details/advancedchromev54.20.6530.0
                            Ответить
                          • И тут обновляется интерфейс какого-нибудь «водноклассницах». Начинают лагать пункты меню (потому что там ЙАЖАскрипта на странице больше чем кода управления в МБР). Администрация на жалобы отвечает «купи комп не с помойки, лол». На форумах начинается срач о том, какие компоненты в каких сочетаниях дают больший пирфоманс. Находят сочетание, при котором меню появляется через секунду после наведения, а не через 3.

                            И тут васясофт выкатывает свой монолитный браузер и заявляет «вы все анскилябры, у меня не тормозит». Проверяют, и действительно, не тормозит. Окрыленные этим фактом, питухи летят в репозиторий, чтобы распилить этот браузер на модули и подключить к своему. И охуевают.

                            Оказывается, его интерпретатор ЙАЖАскрипта, вместо того, чтобы вежливо попросить модуль, отвечающий за DOM, поменять что-то в таком-то элементе, для каких-то часто используемых операций просто лезет в кишки и меняет что ему надо прямо там, благо внутреннее представление оптимизированно для таких вещей. Ещё его браузер при простое дёргает все эвенты, интерпретируя скрипт (не меняя фактическое состояние страницы), подгружая ресурсы, которые потребуется и пререндеря части страницы которые могут понадобиться.

                            Чтобы это говно прикрутить к охуенно модульному браузеру, понадобится распидорасить весь охуенно стройный АПИ взаимодействия между модулями, и заставить модули либо имплементировать всю хуйню, даже которую они не юзают, либо модулям придётся договариваться о том, какие виды АПИ они могут использовать.
                            Ответить
                            • > интерфейс какого-нибудь «водноклассницах»
                              > Начинают лагать пункты меню (потому что там ЙАЖАскрипта на странице больше чем кода управления в МБР

                              А зачем посещать такие сцайты?
                              Ответить
                              • Кто за браузер платит — тот его и танцует.
                                Ответить
                              • Иногда приходится посещать такие сайты. Лагают сайты интернет-магазинов, банков, государственных учреждений.
                                Ответить
                                • > интернет-магазинов
                                  Тебе лень из дома выйти? Фу, неженка.

                                  > банков
                                  Зачем тебе банки? Ты что, кредиты берёшь?

                                  > государственных учреждений
                                  Настоящий айтишник должен быть против Системы, а не потакать ей!
                                  Ответить
                                  • Можно и без зелёного.

                                    Весной 2020-го вынудили пользоваться этой ерундой.
                                    Ответить
                          • > Я за то, чтобы весь софт был модульным.
                            Поддержал.

                            Причём с возможностью вообще выкинуть какой-то компонент. Допустим браузер без интерпретатора «Йажасцрипта» или реализующий ограниченное его подмножество.
                            Ответить
                      • Ну вот, одну из множества фич «Visual Studio» своровали повторили.
                        А что насчёт, например, подсказок с полностью раскрытыми директивами препроцессора? Незаменимая фича для отладки препроцессороговна. А что насчёт встроенных дебаггеров: кто ещё может, например, делать снапшоты кучи с возможностью навигации по объектам и коду, который эти объекты создал? Или вот, к примеру, где ещё можно тыкнуть на шаблон, указать реальные примеры типов и наслаждаться его полным анализом до компиляции (https://devblogs.microsoft.com/cppblog/template-intellisense/)?

                        Так можно долго продолжать набрасывать. Факт остаётся фактом: для разработки крестоговна «Visual Studio» является наиболее мощной (e.g. насыщенной полезными фичами) IDE на рынке. Именно поэтому…

                        > И в целом я за то, чтобы подобные фичи были не намертво прибиты к какой-то работающей только в одной ОС тормозной проприетарной IDE, а были отделяемыми модулями, которые можно было бы цеплять к любой хуите при желании.
                        Я против (использования такого). Как показывает практика, модульный и универсальный инструмент решает свои задачи существенно хуже специализированного. В частности, работает банальный факт: специализированный инструмент системно тестируется целиком, в то время как конкретно твою сборную солянку из разных мудулей от разных питухов никто больше в мире не видел.

                        И да, реальная практика у меня есть: я программирую на «Python» в «VS Code» с расширениями. И какое же это говно… Вкладка «Pytest» отваливается, тесты молча не запускаются, процессы этой вкладки виснут и жрут по целому ядру, языковой сервер тоже иногда отваливается и перестаёт отвечать, а когда отвечает — гордо демонстрирует мне в подсказках полезную информацию, повторённую джва раза, причём изменение случайных настроек иногда отключает это двойное говно на день-другой, чтобы потом оно всё равно вернулось… Пиздец нахуй, я за монолиты.
                        Ответить
                          • > https://i.imgur.com/voCsgCU.png
                            Нет, я про другое. «IntelliSense» умеет раскрывать любое макроговно в любой позиции, а не только считать константы: https://i.imgur.com/mhGpxld.png.

                            > надо делать другие IDE, в которых эти фичи будут. А микрософтовскую вин-онли отрыжку слать нахуй

                            Флаг в руки. А я и дальше буду использовать удобный и эффективный инструмент.
                            Ответить
                        • > Так можно долго продолжать набрасывать. Факт остаётся фактом: для разработки крестоговна «Visual Studio» является наиболее мощной (e.g. насыщенной полезными фичами) IDE на рынке. Именно поэтому…

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

                            Правда, монстроподобные айсберги вроде «Visual Studio» к таким супероптимизированным программам не относятся. В «Студии» фреймворк на фреймворке и фреймворком погоняет.
                            Ответить
                            • > Иногда в программах, прибитых к конкретной платформе, есть смысл. Их можно сделать быстрыми и маленькими, используя особенности конкретной системы, вызывая API ОС напрямую и не накручивая лишних уровней абстракции, лишних обобщений.

                              Если речь идет о т.н. "Language Server" ( https://langserver.org/ ), который занимается подсказыванием-подсвечиванием всякой такой хуйни, то я не очень понимаю, каким образом прибивание "Language Server" к API конкретной OS сделает его быстрее.
                              Ответить
                • нормально ты пердаки пердолям поджёг

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

                      извини, забыл, что ты ещё не работал никогда
                      Ответить
                      • Хорошо, что с остальным ты согласен, а то бывают яблочники, которые считают технику эпл «своей»)
                        Ответить
                  • > им теперь придётся три раза ядро пересобрать, чтобы остыло

                    Борманд в соседнем треде уже собирает )))
                    Ответить
                    • только у Борманда не подгорало, не знаю, чо он отдувается
                      Ответить
                      • Борманд не прыщефанбой потому что, у него религиозной ненависти к MS нету
                        Ответить
                      • Мне просто нравится смотреть, как что-нибудь собирается.
                        Ответить
                        • Ну собери Xorg тогда, или хромиум какой-нить
                          Ответить
                          • В принципе можно, гуйню для LFS я никогда не пробовала добавлять.
                            Ответить
                            • Я собирал иксы, и это занимало вечность. Правда это было очень давно.

                              imake знашеь?:)
                              Ответить
                              • > и это занимало вечность

                                Qt из той же весовой категории, я думаю (там внутри вебкит).
                                Ответить
                • Виндой и студией пользовались все, а вот альтернативными системами — меньшинство. Много ли вы видели постов такого содержания: "visual studio? что это такое? я только acme под plan9 пользовался, надо бы глянуть на этот ваш видоуз"? Нет.
                  Поэтому, когда фанбой мелкомягких открывает рот — он спамит своими иррациональными конформистскими предубеждениями.
                  А вот когда линукс-хакер выдаёт взвешенную реплику — он делает public service announcement, доносит важную информацию до общества.

                  Точно так же: есть ли смысл расхваливать направо и налево последний голливудский блокбастер? Только если вы хотите сигнализировать свою принадлежность к интеллектуальному большинству. А вот рассказывать каждому встречному про арт-хаус режиссёра Ларпа фон Тридара — долг любого интеллигента.
                  Ответить
                  • s/А вот рассказывать каждому встречному про/Нести в массы знание про/
                    Ответить
                  • Какой багор )))

                    Нет, обсуждать популярную питушню нужно.
                    1. Если кто-то в вузе использовал условную MSVS2005, то это не значит, что он в курсе того, что в ней изменилось за 10-20 лет.
                    2. Не все следят за тенденциями. Человек может использовать свою редкую IDE по какой-то причине (её использовали в конторе, куда он пошёл работать), а про остальные знать только названия. Ему может пригодиться информация о MSVS.
                    3. Среди голосов фанбоев должны звучать голоса пользователей. И нет ничего такого, если пользователь хвалит хороший продукт. Мозг фильтрует маркетинговый шум вместе с голосами фанбоев. Без обсуждения и хвалебных речей пользователей о "MSVS" известно столько же, сколько про "acme под plan9".

                    То же с блокбастерами. Про анскильную питушню Лиспа фон Тридара я слышал кучу завываний альтернативно одарённых фанбоев-хипстеров, а про голливудские блокбастеры - только маркетинговый шум.
                    Ответить
          • > Если никакой, то поставь Винду, ведь...
            На моей рабочей станции у меня «Windows», да. Она мои задачи выполняет достаточно хорошо.

            > Не хорошо, а хуёво и неэффективно.
            Так вот в том-то вопрос и стоит: что в «systemd» хуёвого и неэффективного? Неэффективно хранить все юниты в одном месте? Неэффективно управлять системой через единый и унифицированный CL интерфейс, а не кучу говноутилит с разными наименованиями, аргументами и способами вызова? Хуёво иметь удобный интерфейс доступа к логам, который позволяет не рыться по всем директориям /var/logs как голодная собака в помойке? Жду конкретики.

            > В портянке говнокода на 500 строчек кода найти уязвимость заметно проще, чем в портянке говнокода на 500000 строк кода.
            Ergo, ядро «Линукса» не нужно.

            > А теперь хрюкни и обнови шиндошс, или что ты там делаешь обычно.
            По делу есть что сказать?
            Ответить
            • > На моей рабочей станции у меня «Windows», да. Она мои задачи выполняет достаточно хорошо.

              Зачем тебе тогда «Linux»? Сидел бы и дальше на виндуозе, раз он выполняет твои задачи. Машина без ремней безопасности тоже выполняет свои задачи, но я, пожалуй, на такой кататься не буду.

              > Так вот в том-то вопрос и стоит: что в «systemd» хуёвого и неэффективного

              Всё. Мистер глиномес погнался за всеми зайцами сразу и ни одного не догнал.

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

              > унифицированный

              Мифы про какую-то унификацию в системдэ просто смешны.

              > Ergo, ядро «Линукса» не нужно.

              Тебе же похуй на «ядро Линукса» и его чувства, раз ты оскверняешь его системдой, так что да, тебе оно не нужно.
              Ответить
    • Генерализируем проблему.

      Есть некоторая система, известная своей простотой. Простота позволяет легко понять систему, а значит и легко устранить возникшие проблемы.
      Эта система привлекает поборников простоты, которые изучают её устройство (инвестируя в это изучение некоторое количество времени) и потом там прекрасно живут.

      У большинства из них проблем никаких нет.

      И вот в эту систему вводят Абстракцию.
      Абстракция сильно усложняет систему (сравни запуск шел скрипта с обращением к демону по dbus, например), делает её более сложной для понимания и отладки, и что самое противное -- заменяет собой куски старой (простой) системы в практически случайном порядке.
      Но старые куски-то остаются.

      В итоге получается Франкенштейн, где часть сделана по-старому, часть по новому (как если бы ты делал ``WriteConsole`` и std::cout << одновременно).


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

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

      Это вызвало ожидаемую реакцию.


      Вот если бы Линукс изначально был как AIX*, то всё было бы ок
      * https://ru.wikipedia.org/wiki/AIX
      Ответить
      • > Зато им ввели новую Абстракцию, сильно усложнив их систему, да параллельно еще и обнулив часть знаний.
        > Поборникам простоты говорят, что Абстракция решает массу проблем.
        > Но этих проблем у них не было.

        Подтверждаю.

        Реальный пример: https://govnokod.ru/26671#comment549703
        Ответить
  • Кстати, почему все так не любят «PHP»?
    Это же удобный, многофункциональный, консистентный и унифицированный инструмент, который позволяет эффективно решать распространённые проблемы.

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

    Разговоры про «красоту кода» и «мартинов фаулеров» лучше оставить прыщавым подросткам: это им приличествует разводить срачи о том, чьи скрипты православные, а чьи — ересь. Взрослым людям язык нужен для эффективного решения задач, а не для споров про философию и подход.
    Ответить
  • К вопросу о Systemd.

    Только что на debian рассылке

    ---------
    Hi,

    Suddenly I can no longer reboot or poweroff my up-to-date
    bullseye system:


    # reboot
    /usr/sbin/reboot: disabled in systemd-nspawn container


    Linux container share the kernel of the host system they are running on,
    there is no need to reboot just the container.

    However, please contact your system administrator to reboot this
    container from the host system.



    # poweroff
    /usr/sbin/poweroff: disabled in systemd-nspawn container
    ---------

    как на виндуосе ))
    Ответить
    • Чувак превратил свою ось в контейнер?

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

        systemd-nspawn is like the chroot command, but it is a chroot on steroids.

        systemd-nspawn limits access to various kernel interfaces in the container to read-only, such as /sys, /proc/sys or /sys/fs/selinux

        но сама ситуация какая, лол
        Ответить
  • > Да, последнюю неделю ловлю такие глюки.
    Наверняка это потому что какие-то петухи постоянно открывают огромные посты. Найти бы их…
    Ответить
  • > Может вам лучше куда-нибудь перекатиться, а то в этом говнокоде уже 852 (а с учетом этого - 853) комментария?

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

    Хотя, я спать пойду. С учётом того, что меня забанили на ГК, я всё ещё сижу на нём до 4 утра. Какой багор )))

    #MinGW #MSYS #MSYS2 #WSL2 #MD5 #OpenSSL #виндопердолинг #пердолинг
    Ответить
    • > Да, надо перекатываться, там уже тормозит

      А чем нарисованы эти таблички?
      system   | avg Mh/s | sqrt(disp Mh/s)
      ---------+----------+----------------
      MinGW 32 |    1.509 |           0.12
      WSL2  64 |    1.388 |           0.10
      Ответить
      • Руками, но с помощью редактирования сразу нескольких строк (Alt+Shift) в Notepad++.
        Ответить
          • var avg = xs => xs.reduce((a, x) => a+x, 0) / xs.length
            var err = xs => Math.sqrt((avg => xs.reduce((a, x) => a+(x-avg)**2, 0))(avg(xs)) / xs.length)

            Хотя, наверно в npm есть модуль для питушения статистики, но тут надо было посчитать пару чисел, одно из которых никто не будет смотреть, а второе - никто не будет смотреть.
            Ответить
            • Не, я за pretty print.

              pandas например использует:
              https://pypi.org/project/tabulate

              Там даже стили можно выбирать. pretty/psql очень похожи на таблицу выше
              >>> print(tabulate(table, headers, tablefmt="pretty"))
              +-------+-----+
              | item  | qty |
              +-------+-----+
              | spam  | 42  |
              | eggs  | 451 |
              | bacon |  0  |
              +-------+-----+
              Ответить
      • Интеловская питушня интересная. В зависимости от процессора может выбирать нужный модуль (без SSE и AVX либо с поддерживаемой версией SSE или AVX).

        Для сборки нужно уметь обращаться с autotools (autoconf, automake).

        Надо запомнить: подсовывать «nasm», а не «yasm». Текущая версия «yasm» некоторых инструкций не знает (об этом есть issue в хранилище «yasm» в «Гитхабе»).

        Ассемблерный код в библиотеке только 64-битный.
        Ответить
        • > нужно уметь обращаться с autotools

          configure надо генерить что ли? О_о

          Первый раз такую кривую либу вижу. Хотя может просто dev сборку выложили.
          Ответить
        • Под винубунту надо было сделать
          sudo apt-get install autoconf libtool nasm
          А дальше по мануалу из README:
          ./autogen.sh
          ./configure # я по совету автогена написал ./configure --prefix=/usr --libdir=/usr/lib
          make
          sudo make install


          make check выдал 25 из 25.
          Ответить
          • MSVC+NASM — тоже рабочая кобенация. Собирается через nmake. Для сборки тестов пирфоманса придётся поправить Makefile.nmake, чтобы указать пути к OpenSSL.
            Ответить
            • P.S. А нет, тест пирфоманса всё равно не соберётся. Нужно портировать функцию perf_start.
              Ответить
            • > MSVC
              Это ещё её устанавливать надо. Гигабайтам питушни на диске, купленном за свои кровные, скажем НЕТ!
              Ответить
              • Именно поэтому я против «MS SQL Server». Его конкуренты («MySQL», «PostgreSQL», «Firebird») не требуют десятка гигабайтиков места на диске.
                Ответить
                • не требуют, а в замен и не умеют нихуя, лол
                  Ответить
                  • Минусуют долбоёбы, чьи знания SQL ограничиваются "SELECT *FROM TOVARY".

                    Как там с materialized views в майсцыкуэлях? Как с adaptive joins?
                    Долбоёбы и слов-то таких не знают, зато кукарекают постоянно "зачем нам ваши мсскули и ораклы, кококо, у нас на php+mysql всё прекрасно работает"
                    Ответить
                    • > adaptive joins

                      Это говно.

                      > materialized views

                      Это хуйня.

                      > Долбоёбы и слов-то таких не знают

                      А он прав)
                      Ответить
                      • > Это говно.
                        > Это хуйня.
                        Почему?
                        Ответить
                        • Потом, что я не пользуюсь ни тем, ни другим. Да, мне хватает простых CRUD-операций. Как-то так получилось, что мне ни джойны, ни хуёйны, ни вьюс, ни хуюс особо не нужны.
                          Ответить
                        • > adaptive joins

                          Мелкомягкие говорят: вот этот алгоритм будет эффективнее на таком вот количестве говна, а вот этот уже на более другом количестве говна!!!!!!

                          И я сразу же вспоминаю про КОНТРОЛЛЕРЫ, битоёбство и прочее питушение. Так вот, это – оверинжиниринг и говно. Такая даза банных не нужна.

                          > Это хуйня.

                          Я передумал уже, это не хуйня.
                          Ответить
                      • Тогда это не хуйня, зато MS SQL Server соснул в очередной раз.
                        Ответить
                      • >Материализованные вьюхи есть в «Постгресе», например.
                        их уже не нужно вручную обновлять>?
                        Ответить
                    • > Долбоёбы и слов-то таких не знают
                      Действительно. Про adaptive joins даже не слышал.
                      Вроде тут понятно объясняют: http://www.queryprocessor.ru/adaptive-query-processing/

                      Это же космические технологии: алгоритм на ходу сам себя переписывает. Я джва года ждал такую фичу.
                      Ответить
                      • > SQL Server имеет три физических типа соединений Nested Loops Join, Hash Join и Merge Join. Каждый из них хорош при определенных условиях.


                        Я использую СУБД не для того, чтобы думать о физическом представлении данных. Если я захочу побайтоёбить, я возьму няшную или что-нибудь типа того.

                        create nonclustered columnstore index dummy on Sales.SalesOrderHeader(SalesOrderID) where SalesOrderID = -1 and SalesOrderID = -2;


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

                        Какое говно )))
                        Ответить
                        • То есть ``EXPLAIN``ом ты не пользуешься?

                          Ну наверное это типично для пользователя MySQL
                          Ответить
      • SEO-пост.

        Intel(R) Intelligent Storage Acceleration Library Crypto Version
        ISA-L_crypto is a collection of optimized low-level functions targeting storage applications. ISA-L_crypto includes:

        • Multi-buffer hashes - run multiple hash jobs together on one core for much better throughput than single-buffer versions.

        • • SHA1, SHA256, SHA512, MD5, SM3

        • Multi-hash - Get the performance of multi-buffer hashing with a single-buffer interface. Specification ref : Multi-Hash white paper

        • Multi-hash + murmur - run both together.

        • AES - block ciphers

        • • XTS, GCM, CBC

        • Rolling hash - Hash input in a window which moves through the input
        Ответить
      • Библиотека собралась. Проходит все тесты, кроме AES, почему-то.

        Тест пирфоманса: sha1 и sha256 в 2 раза быстрее, чем в OpenSSL, md5 — в 3 раза быстрее. Для sha512 разгон не получился. 1:1 с OpenSSL.

        Итого: с этой библиотекой есть шанс разогнать md5 в 3 раза. Не гигахэши, конечно.
        Ответить
        • А хэш-кот сколько выдаёт на твоей железке?

          З.Ы. Ты же multi-buffer режим юзаешь, как они и предлагают? Насколько помню, эти хеши не очень хорошо ложатся на SSE, зато можно параллельно несколько блоков считать чтобы свободные куски регистров забить. Или я туплю и это только про AES было...
          Ответить
          • Часть тестов для AES не прошла, потому что программа упала на инструкции VAESIMC. Значит, расширения для AES на том процессоре нету.
            Ответить
          • Хэш-кот на первом же примере вывел: «Not enough allocatable device memory for this attack». Надо разбираться с ним.
            Ответить
          • Научился считать хэши этой библиотекой.

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

            На моём железе на входных данных, равных по длине емейлам, получил прирост в два раза с копейками. Похоже, что больший прирост можно выжать только на больших данных (в интеловских тестах мегабайты, а типичный емейл весит байтов 20).

            Итого: ускорение раза в два на таких крошечных блоках выжать можно.

            Не знаю, может быть, на AVX-512 результат получше будет, но пока проверить не на чем.
            Ответить
            • P.S. Реальный пример кода:
              md5_ctx_mgr_init(&md5_mgr);        
                for (i = 0; i < TEST_BUFS; i++) {
                    hash_ctx_init(&md5_ctx[i]);
                }
              
                for (i = 0; i < TEST_BUFS; i++) {
                    md5_ctx_mgr_submit(&md5_mgr, &md5_ctx[i], email[i], length[i], HASH_ENTIRE);
                }
              
                while(NULL != md5_ctx_mgr_flush(&md5_mgr)) {} // ждём завершения вычисления
                // до завершения текущих вычислений контекст нельзя использовать для вычисления следующих хэшей
              
                for (i = 0; i < TEST_BUFS; i++) {
                  digest_buf = hash_ctx_digest(&md5_ctx[i]); // забираем результат вычисления каждого хэша из digest_buf
                }
              Ответить
              • Эта библиотека подходит для хэширования видеофайлов, архивов (на сайте «Интела» есть реальные примеры с ускорением в 9 раз), а на таких мелких данных как емейлы слишком много времени тратится на подготовительные работы.
                Ответить
              • Ещё одна мысль возникла. На больших данных можно провернуть такой трюк: посчитать частичную сумму от начала массива и не финализировать сразу, а расклонировать и финализировать с разными окончаниями. По идее должен быть выигрыш, потому что сумма от начала не вычисляется повторно.

                Но опять же на таких крошечных данных, как адреса почты, это не поможет.
                Ответить
                • Можно, но у md5 и sha такие ебические входные блоки (64 байта), что там вся почта целиком войдёт в один блок...

                  И профита от передачи кусками вообще не будет, имхо. Оно тупо забуферизует первый кусок и ничего не будет считать пока ты остаток не передашь.
                  Ответить
                  • Надо завести почту на домене abcdefghijklmnopqrstuvwxyzabcdefghijklmn opqrstuvwxyzabcdefghijk.com. Сейчас проверил — вроде закрыли этот сервис. На «ГК» я нашёл только одного юзера с такой почтой.
                    Ответить
                • З.Ы. Имхо, тебе тут надо пытаться вычистить вилкой весь оверхед вокруг вычислительного ядра. Чтобы осталась только подготовка набора буферов (4 вроде надо) с правильным паддингом и собственно ядро на асме/интринсиках, которое параллельно весь набор хеширует.
                  Ответить
                  • Если конкретно про задачу реверса граватара, то там много над чем можно подумать:

                    1. Алгоритм перебора. Не использовать конкатенацию, а писать поверх.

                    2. Алгоритм поиска вычисленного хэша в базе юзеров. Существует масса реализаций ассоциативных массивов. Для базы в 68к юзеров и ключа в 128 батов особой разницы между разными мапами не будет?
                    Ответить
                    • > особой разницы между разными мапами

                      Кстати, у тебя же ключи уже отлично прохешированы через md5. Поэтому можешь смело упрощать хеширующую функцию в мапе до минимума (тупо взять первые 4 байта?)

                      Может быть вообще свои какие-то массивы вместо мапы попробовать стоит. База же фиксированная, можно один раз подготовить.
                      Ответить
                      • Кстати, ради интереса нужно посчитать, сколько будет коллизий на обрезанном хэше. База не такая большая. Есть шанс, что будет по одному юзеру на хэш (ну кроме полных дублей, которые я уже нашёл).
                        Ответить
                      • Да, Царь завещал использовать массив.

                        // инициализация
                        hashes.sort(by_first_two_bytes);
                        // готовим указатели
                        hash hmap[0x10001] = {}; // мапа
                        uint16_t index = 0;
                        hmap[index] = &hashes.front();
                        for (auto& h : hashes) {
                          const uint16_t i = *reinterpret_cast<uint16_t*>(h);
                          while (index < i) hmap[++index] = &h;
                        }
                        while (index < 0x10000) hmap[++index] = &hashes.back() + 1;
                        
                        
                        // используем
                        crack_loop {
                          auto calculated = md5(pituz);
                        
                          // лукавпим
                          const uint16_t index = *reinterpret_cast<uint16_t*>(calculated);
                          for (hash h=hmap[index]; h<hmap[index+1]; h++) {
                            if (!memcmp(h, calculated, md5_len)) std::cout << "found" << std::endl;
                          }
                        }
                        Ответить
                        • Патч. Т.к. массив на 0x10001, надо проверять на переполнение; поскольку сортировка не согласована с индейцами, лучше выковырять байты руками, иначе сортировка сортирует не то:
                          - while (index < 0x10000)
                          + while (index && index < 0x10000)
                          
                          - *reinterpret_cast<uint16_t*>(pitux)
                          + pitux[0] << CHAR_BIT | pitux[1]


                          Что интересно, такой код дал прирост по сравнению с использвоанием std::map. Я загнала хэши в такое хранилище, вставила лукап после подсчёта хэша и только при наличии совпадения (это 60к случаев из практически бесконечности) уже искала в настоящей std::map.

                          std::map: 1.4Мх/с
                          царский set: 3.6Мх/с

                          Что интересно, если использовать memcmp для реализации operator < для хэша, тоже начинает тормозить.

                          std::map + memcmp: 1.2Мх/с
                          std::map + наивный алгоритм сравнения: 1.4Мх/с

                          Однако, operator == для хэша, совмещённый с царским лукапом, преимуществ по сравнению с велосипедным сравнением не дал.

                          Генерация вореций просело сильнее. Раньше это было 5%, а теперь - уже 15% слива:

                          вореции: 3.0Мх/с
                          прямой подбор: 3.6Мх/с
                          Ответить
                          • Что интересно, в сравнении MinGW-32 vs WSL2-64 на этот раз победил WSL2 со счётом 3.85:3.64.
                            Ответить
                          • > *reinterpret_cast<uint16_t*>(pitux)
                            > pitux[0] << CHAR_BIT | pitux[1]

                            Отлично!

                            Осталось intrinsic с sse4/avx2 напетушить, чтобы пачками по 8-16 штук обрабатывало.

                            За Царя и Воречество! Ура!
                            Ответить
                          • Попробуйте заменить memcmp чем-то таким:
                            #include <smmintrin.h> //SSE4.1
                            #include <nmmintrin.h> //SSE4.2
                            #include <immintrin.h>  //AVX2
                            #ifdef __GNUC__
                            __attribute__ ((target ("avx2")))
                            #endif
                            int cmp_avx2 (const int16_t* const ref, const int16_t* const hash, const int n) {
                            
                                for (int i=0;i<n;i+=16) {
                                    __m256i pcmp = _mm256_cmpeq_epi32(*( __m256i* ) &ref[i], *( __m256i* ) &hash[i]);
                                    unsigned bitmask = _mm256_movemask_epi8(pcmp);
                                    if (bitmask == 0xffffffffU){
                                        return true;
                                    }
                                }
                                return false;
                            }


                            Из-за блядских auto и выкинутых кусков не совсем понятен тип.
                            Для 128-бит md5 можно по джва сразу сравнивать.

                            https://godbolt.org/z/865E8PeYf
                            Ответить
                          • Можно цикл выкинуть если сравнивается по одному 128 битному значению

                            static inline int m128_diff(const void* ref, const void* hash)
                            { 
                              return 0xFFFF ^ _mm_movemask_epi8(_mm_cmpeq_epi8(
                                 *( __m128i* ) ref, *( __m128i* ) hash
                              )); 
                            
                            }
                            
                            m128_diff(void const*, void const*):
                                    movdqa  xmm0, XMMWORD PTR [rdi] ; это по идее должно уже быть в регистрах
                                    pcmpeqb xmm0, XMMWORD PTR [rsi] ; инлайн уберёт тот movdqa
                                    pmovmskb        eax, xmm0
                                    xor     eax, 65535
                                    ret
                            Ответить
                            • >> это по идее

                              В регистрах оно было бы, если бы мы передавали структуру, а так будет копироваться из адреса в памяти.
                              Ответить
                              • P.S. Хотя если оптимизатор использует инлайн, то это жонглирование через ОЗУ может аннигилировать.
                                Ответить
                            • Там OpenSSL'евский unsigned char*.
                              А в комментарии с царским лукапом в некоторых местах псевдокод.

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

                              Это надо как-то прикрутить ту царскую библиотеку для хэширования и оптимизировать генерацию нового слова, чтобы царское сравнение дало прирост. Ну либо откатиться на std::map, где куча сравнений.
                              Ответить
                              • Я вообще планировала написать псевдокод и пойти спать, но зачем-то решила проверить, насколько сильно его нужно изменить, чтобы заработал, и какой профит он даст.
                                Ответить
                                • > планировала
                                  > решила

                                  И ты туда же?
                                  Ответить
                                    • Я Настенька!

                                      1024-- бы не додумался до царского лукапа. Он сначала бездумно написал прототип под Node.js, а потом на крестах бездумно впердолил std::map.
                                      Ответить
                              • Царская библиотека для хэширования даёт прирост, когда одновременно считаются 16 хэшей или более. Нам нужно итерироваться по 26...40 символам. В принципе, адреса, отличающиеся одним символом, можно попрообовать похэшировать параллельно. Если 40 будет многовато, можно попробовать разбить на части (16+16+8).
                                Ответить
                              • Кстати, скачал твою программу и по-быстрому прикрутил царскую библиотеку для хеширования.

                                Заменил std::map на std::unordered_map. Итоговое ускорение 3 раза.
                                Ответить
                                • А если добавить царский лукап? Диктую патч:

                                  В setttings добавить #define TSAR_LOOKUP

                                  В struct digest_t - operator ==, например, как
                                  bool operator == (const digest_t& rhs) const {
                                      return memcmp(data, rhs.data, MD5_DIGEST_LENGTH) == 0;
                                  }


                                  После fi.close() добавить
                                  #ifdef TSAR_LOOKUP
                                    std::vector<digest_t> hashes;
                                    hashes.reserve(unknown_users.size());
                                    for (auto u : unknown_users) hashes.push_back(u.first);
                                    
                                    std::sort(hashes.begin(), hashes.end());
                                    digest_t* hmap[0x10001];
                                    uint16_t index = 0;
                                    hmap[index] = &hashes.front();
                                    for (auto& h : hashes) {
                                      const uint16_t i = h.data[0] << CHAR_BIT | h.data[1];
                                      while (index < i) hmap[++index] = &h;
                                    }
                                    while (index && index < 0x10000) hmap[++index] = &hashes.back() + 1;
                                  #endif


                                  Перед auto it = unknown_users.find
                                  #ifdef TSAR_LOOKUP
                                        bool found = false;
                                        const uint16_t index = digest.data[0] << CHAR_BIT | digest.data[1];
                                        for (digest_t* h=hmap[index]; h<hmap[index+1]; h++) {
                                          if (digest == *h) found = true;
                                        }
                                        if (found) {
                                  #endif

                                  Перед if (n == N)
                                  #ifdef TSAR_LOOKUP
                                        } // end if (found)
                                  #endif
                                  Ответить
                                  • Хотя, обновил сам репозиторий.
                                    Ответить
                                    • И ещё добавила фикс сравнения строк. Теперь не обязатяльно, чтобы домены начинались с собаки.
                                      Можно писать "+netux@mail.ru" вместо "@mail.ru".
                                      Ответить
                                • так map небось деревянный внутри, и потому логорифмический, а unordered хешовый, и потом константный?
                                  Ответить
                                • > Итоговое ускорение 3 раза.
                                  И ещё есть потенциал с Царским лукапом.

                                  Я попробовала вставить unordered_map с return *reinterpret_cast<const size_t*>(d.data); в теле std::hash<digest_t>::operator(). Варианты вида return d.data[0] << CHAR_BIT*3 | ... дают похожее значение, но на единицы процентов меньше.

                                  В итоге Царский лукап побеждает с отрывом:
                                  algorithm          | speed
                                  -------------------+---------
                                  std::map           | 1.19Mh/s
                                  std::unordered_map | 2.32Mh/s
                                  Tsar-style lookup  | 3.67Mh/s


                                  Если он с "медленным" OpenSSL накинул 50% пирфоманса, то что будет с Царской библиотекой, где доля времени лукапа увеличится.
                                  Ответить
                                  • Вчера погонял на семизначных логинах. Получилось так:
                                    std::map,           openssl              : 1,0 Mh/s
                                    std::map,           isal_crypto (16 bufs): 1,2 Mh/s
                                    std::unordered_map, openssl              : 1,6 Mh/s
                                    TSAR_LOOKUP,        openssl              : 2,2 Mh/s *
                                    std::unordered_map, isal_crypto (16 bufs): 2,7 Mh/s
                                    TSAR_LOOKUP,        isal_crypto (16 bufs): 3,7 Mh/s 
                                    
                                    TSAR_LOOKUP,        isal_crypto (1 buf)  : 1,3 Mh/s
                                    TSAR_LOOKUP,        isal_crypto (2 bufs) : 2,0 Mh/s
                                    TSAR_LOOKUP,        isal_crypto (4 bufs) : 2,7 Mh/s
                                    TSAR_LOOKUP,        isal_crypto (8 bufs) : 3,4 Mh/s
                                    TSAR_LOOKUP,        isal_crypto (16 bufs): 3,7 Mh/s
                                    TSAR_LOOKUP,        isal_crypto (32 bufs): 3,9 Mh/s
                                    TSAR_LOOKUP,        isal_crypto (64 bufs): 3,9 Mh/s


                                    Звёздочка означает, что на некоторых наборах данных программа падает (пока не изучал, почему).

                                    Похоже, что разгон зависит от процессора. У тебя будет быстрее.
                                    Ответить
                                    • А как треды юзаешь, кстати?

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

                                      З.Ы. Можно ещё попробовать убрать лишние аллокации, работу со строками и т.п. если они есть. По-хорошему все горячие данные должны влезать в L1.
                                      Ответить
                                      • Сейчас никак. Программа однопоточная.

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

                                              Доступ случайный, в L1 не входит,поэтому чем меньше обращений к L2 триггернет на каждую проверку -- тем лучше.
                                              Ответить
                                              • Про корзинки: пробовал разные хэш-функции для std::unordered_map. При длине от 16 бит (двух октетов) до 64 бит (восьми октетов) разница в скоросте незаметна. Если брать короче 16 бит, то начинает тормозить.
                                                Ответить
                                    • Дополнение:
                                      boost::container::flat_map, isal_crypto (16 bufs): 1,4 Mh/s


                                      flat_map оказался быстрее std::map, но медленнее std::unordered_map.
                                      Ответить
                                          • > Пока что std слил хвалёный flat_map.
                                            Так это просто потому что был нарушен главный принцип крестов: не плати за то, что не используешь. «flat_map» обеспечивает упорядоченность элементов, а это стоит процессорных денег. «std::map», обеспечивающий такой же набор услуг, «flat_map»-у сливает (за счёт того, что «flat_map» хранит всё дерево в одном массиве, а «std::map» — в разбросанных по всей памяти бакетах).
                                            Ответить
                                            • > не плати за то, что не используешь. «flat_map» обеспечивает упорядоченность элементов

                                              Логично.

                                              Читаю за robin_hood — очень интересно.
                                              Мне всегда нравились простые таблички с открытой индексацией (изящность и простота массива, локальность поиска, оцуцтвие оверхеда, нинужность питушарских указателей и дополнительных аллокаций).

                                              И я неоднократно сам их велосипедил. Но всегда раздражала необходимость при удалении закладывать т.н. tombstone.

                                              В robin-hood интересно придумали: хранить сдвиг от оптимального хеша.

                                              А при удалении не ложить пустого скипуха, а сдвигать элементы назад — ближе к исходной точке.
                                              Ответить
                                            • > А «кококос» интересный, но тяжёлый. Оставлю его на потом.

                                              Не надо. Мне просто название очень понравилось.

                                              Я бы предложил попробовать google::dense_hash_map (но меня не нужно слушать — я не настоящий крестоблядь, у меня даже анимешной девочки на аватаре нету.)
                                              Ответить
                                        • Спасибо. Попробую.

                                          Ещё у 1024-- таблица юзеров полностью в мапе. Я вынес таблицу юзеров в статический массив (в нём же всего 68к записей), а в мапе оставил только отображение md5 в индекс в этом массиве. С 2,7 Mh/s скорость поднялась до 2,9 MH/s. Как-то не очень заметно оказалось.
                                          Ответить
                                          • > отображение md5 в индекс

                                            А зачем тут мап, кстати? Предлагаю в горячем цикле оставить set, а мапать md5 в юзера уже в холодном коде, когда торопиться некуда.
                                            Ответить
                                            • Кажется, понял. Сначала в сете проверяем факт есть/нет, а только потом, если есть, ищем в мапе.
                                              Ответить
                                              • > Сначала в сете проверяем факт есть/нет

                                                Кстати, а попробуй вот такой вариант ещё.

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

                                                По идее 95% обращений к основной мапе должно срезать (т.е. только 60к битов из миллиона выставлены).
                                                Ответить
                                                • std::set и std::unordered_set тормозят, предвыборка по robin_hood::unordered_set или robin_hood::unordered_flat_set даёт копейки прироста скорости, а вот предвыборка по std::bitset по 20-битным числам немного ускоряет.

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

                                                    О! Ну тогда есть ещё смысл поиграться с фильтрами Блума, которые ISO ниже советует.
                                                    Ответить
                                                    • А тогда получается, что на 20 битах нужно 11 хеш-функций, на 19 — 6, на 18 — 3, потому что формула 0,7×pow(2,N)/68000.

                                                      Особенных изменений не видно.

                                                      Видимо, всё таки крутить нужно алгоритм перебора исходных слов.
                                                      Ответить
                                                    • Всё-таки у 1024-- перебор довольно быстрый (ну в рамках непараллельной архитектуры).

                                                      Интеловская библиотека с программой перебора помимо gcc собрались в MSVC и в clang. В MSVC профайлер ничего интересного не показал. Слишком большой main, придётся его рефакторить.

                                                      В clang профилировать я пока не умею. А у gcc в новых mingw, как я уже говорил, профайлер сломали. Он выводит пустую таблицу.
                                                      Ответить
                                                  • > предвыборка по std::bitset по 20-битным числам

                                                    М-м-м-м, bitset царская вещь.

                                                    > есть смысл потюнинговать количество битов.
                                                    Я бы бобробывал очевидные размеры: 16 и 24. И один неочевидный 16+3 =19 бит.

                                                    2²⁴ бит = 2 Mb, в кеш поместится.

                                                    Не знаю что у борманда за ЦПУ, но 128KB L1D это очень нетипично.(только новые Apple)

                                                    А 2¹⁹=64 KB (старые АМД). Типичный размер L1D — это 32KB.
                                                    Ответить
                                                    • > очень нетипично

                                                      Да самый обычный 8700k...

                                                      L1d cache: 192 KiB
                                                      L1i cache: 192 KiB
                                                      L2 cache: 1.5 MiB
                                                      L3 cache: 12 MiB

                                                      З.Ы. Тьфу блядь, я дура. Это 192 на 6 ядер. У каждого по 32. Ёбаные маркетологи.
                                                      Ответить
                                                        • > Так это на все ядра.

                                                          Да, я уже поняла ;(

                                                          Ёбаные маркетологи. В чём смысл писать суммарный L1, а не на каждое ядро. Он же не расшаренный...
                                                          Ответить
                                                          • Вспомнил ещё один наняк: ядра бывают с гипертредингом, а бывают без. Иногда ядра с гипертредингом считают за одно, а иногда за два.
                                                            Ответить
                                                            • Ну они где-то 1.5 в зависимости от качества кода.

                                                              Второй тред нужен просто чтобы поюзать остатки железа, которые не потратил первый.
                                                              Ответить
                                                              • То есть итоговый пирфоманс зависит от того, как раскидали задачи по ядрам? Значит, в одном ядре нужно кобенировать «тяжёлую» задачу с «лёгкой»?
                                                                Ответить
                                                                • По моему там так:

                                                                  Каждый "процессор" имеет свой набор регистров (ну на самом деле их много, мы же помним про станции резервирования Томасуло?) и свой APIC.

                                                                  Для ОС это как-бы отдельный процессор.

                                                                  Но всё остальное у них общее.

                                                                  Потому пока один процессор ждёт пока ему данные придут из памяти, другой может чото считать.

                                                                  Если писать "развязанный код" без зависимостей, то наверное будет профит. Но он и на обычном современном процессоре будет
                                                                  Ответить
                                                                  • Профит от гипертрединга, имхо, как раз когда код сильно связанный по данным. Такой код не может полноценно загрузить ядро, но при этом и уступить место другому не может: шедулер в операционке слишком грубый чтобы что-то с этим поделать.

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

                                                                    В общем-то у видюх примерно такая же схема, только там вместо двух гипертредов тысячи и большая часть ждёт ответа от памяти (насколько помню, там всегда high-latency, high-bandwidth).

                                                                    З.Ы. А идеальный код без лишних зависимостей сожрёт все ресурсы ядра сам, там соседям только крошки останутся.
                                                                    Ответить
                                                        • сумма температур по больнице
                                                          Ответить
                                                          • Кстати, при описании климата есть термин «сумма температур». Это сумма среднесуточных температур, что экивалентно средней температуре за период, умноженной на количество дней.
                                                            Ответить
                                                      • > L1d cache: 192 KiB
                                                        У Штеуда всю дорогу было по 32Kb L1D на ядро (только в Sunny Cove они решились увеличить до 48Kb).

                                                        У Амд со времён старых Атлонов по 64Кб кеша (не инклюзивного), но низкая ассоциативность.

                                                        В Zen они понизили L1D до 32Кб, увеличив ассоциативность.

                                                        Единственные ЦПУ где очень-очень-очень много L1 это свежие Яббл. Они со времён А12 просто с ума сошли.
                                                        Ответить
                                                        • > У Штеуда всю дорогу было по 32Kb

                                                          Ну вот я и слилась как анскилльная лалка, даже не в курсе сколько кеша у проца (((
                                                          Ответить
                                                    • 20 бит лучше всего, хотя размер L1D = 32KB.

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

                                                      По сравнению с неприкрытой robin_hash::unordered_flat_map прирост невелик.
                                                      Ответить
                                              • В этом случае можно попробовать заюзать https://ru.wikipedia.org/wiki/Фильтр_Блума / https://en.wikipedia.org/wiki/Bloom_filter. Сначала проверять вероятностно (подозреваю, можно уместиться в один кэшлайн и потечь), а потом уже спокойно и медленно отфильтровывать ложные срабатывания.
                                                Ответить
                                                • > Фильтр_Блума

                                                  Бля, вот как вы помните все эти умные названия?

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

                                                      Что-то в духе if (filter[md5[0]] | filter[md5[1]] | filter[md5[2]] | filter[md5[3]]) { ... }
                                                      Ответить
                                            • >> таблица юзеров полностью в мапе
                                              > А зачем тут мап
                                              Если задефайнить Царский Лукап, у Настеньки сначала смотрится в Царском сете, а потом, если вдруг нашлось - в std::map.
                                              Ответить
                                              • robin_hood::unordered_flat_map в одиночку выдаёт большую скорость, чем царский лукап + std::(unordered_)map.
                                                Ответить
                                        • Круто! 3,8 MH/s вместо 2,7MH/s без велосипедного царского поиска.

                                          И отдельно ничего ставить и компилировать не надо. Просто инклюдишь "robin_hood.h".
                                          Ответить
                                        • > robin_hood
                                          Изучаю дальше.

                                          Один .h файл без зависимостей — это плюс. Возможность работать как в режиме flat (без перепитушни) так и linked list нод (как в std) — ещё плюс.

                                          Кастомный царский аллокатор однотипных нод на массиве это ещё плюс.


                                          // Allocates bulks of memory for objects of type T. This deallocates the memory in the destructor,
                                          // and keeps a linked list of the allocated memory around.

                                          Ну и даже конкуренты подтверждают, что действительно сливает в хламину.
                                          Ответить
                                      • > std::map is a sorted associative container that contains key-value pairs with unique keys. Keys are sorted by using the comparison function Compare. Search, removal, and insertion operations have logarithmic complexity. Maps are usually implemented as red-black trees

                                        > unordered_map is an associative container that contains key-value pairs with unique keys. Search, insertion, and removal of elements have average constant-time complexity.

                                        > Internally, the elements are not sorted in any particular order, but organized into buckets. Which bucket an element is placed into depends entirely on the hash of its key.

                                        Хеш-мапа быстрее красно-чёрного дерева на алгоритме где выпадают практически рандомные хеши и не нужна сортировка. Логично.

                                        Проще пройти по прямому адресу в массив (пусть даже в рандомное место), чем делать десяток сравнений/ветвлений (branch predictor не обрадуется).
                                        Ответить
                      • Поискал коллизии.

                        Сначала почистил базу от дублей (которые я показывал).

                        На хэше, обрезанном до 32 бит (четырёх байтов), коллизий нет. Причём можно брать как старшие 32 бита, так и младшие.

                        На хэше, обрезанном до 16 бит (двух байтов), есть коллизии. И тут самое интересное. Лидеры по количеству коллизий — нумерные петухи и антибагры (до семи юзеров на хэш). Можно искать файки, тупо отсортировав базу по хэшу. Работает и со старшими 16 битами, и со младшими. А говорили, что криптографические хэш-функции обеспечивают конфиденциальность...
                        Ответить
                        • P.S. Про поиск фаек я пошутил. Там слишком много случайных коллизий. Некоторые мои петухи начинают совпадать с петухами других юзеров. Просто нумерных много, вот они и вылезают.

                          Если хэш обрезать до 24 бит (трёх байтов), то получается не более двух юзеров на хэш, причём второй чаще всего — нумерной петух.
                          Ответить
                          • > причём второй чаще всего — нумерной петух.
                            С учётом того, что нумерные петухи составляют чуть меньше джвух третьих всей пользовательской базы «ГК» — это не очень удивляет.
                            Ответить
                    • > Для базы в 68к юзеров и ключа в 128 батов особой разницы между разными мапами не будет?
                      Будет. STL-говно точно отсосёт по пирфомансу из-за большого количества индирекций, рекомендую смотреть в сторону boost::flatmap или даже кастомных (бит-)массивов*.
                      Ответить
            • То ли тоже присоединиться к вашей специальной олимпиаде...
              Ответить
                      • Лучший анекдот по сумме баллов:
                        14 декабря 2001
                        
                        Приходит мужик к психотерапевту:
                        - Доктор помогите... мне кажется что меня окружают одни голубые!
                        - Хорошо, я буду показывать вам картинки - а вы описывать что на них
                          изображено!
                        Показывает мужику картину "Три богатыря" - что вы видите?
                        - Три голубых!!!
                        - Почему?
                        - Ну три мужика в поле одни - явно трахнуться хотят!!!
                        Показывает картину "Летят гуси косяком" - что вы видите?
                        - Гуси-голубые!
                        - Почему?
                        - Ну летят - друг другу в жопу смотрят - явно трахнуться хотят!!!
                        Ну хорошо говорит доктор - на меня посмотрите на кого я похож???
                        - Ну вы доктор явно пидорас!!!
                        - Почему?
                        - Ну а откуда у вас такие картинки?

                        В оригинале, правда, был тест Роршаха.
                        Ответить
                              • У меня уже есть, я просто не понимаю зачем их собирать.

                                Хорошо, что bormand подсказала, теперь-то жизнь заиграет новыми красками!
                                Ответить
                                  • Я пока не могу вычислять: ищу идеальный секьюрный интернет-обозреватель с открытым исходным кодом под свободной лицензией с вкладками, поддержкой JS, поисковыми системами, книжными закладками и http-проксированием (для «i2p»), но КАЖДЫЙ интернет-обозреватель, который я устанавливаю, не нравится мне отсутствием чего-то вышеперечисленного.

                                    Видимо, придётся прикрутить «w3m» к «Emacs».

                                    Скоро «Emacs» поглотит мою систему целиком...
                                    Ответить
        • > Тест пирфоманса
          Сравнение total throughput для ./isal_multithread_perf -m pituz{,_mb}? Или какая-то другая питушня?
          Ответить
          • isal_multithread_perf падает с «Segmentation fault». При сборке ругается на некорректные приведения типов (указатель в int и т. п.).
            Ответить
  • cat, zcat, bzcat, xzcat
    grep, zgrep, bzgrep, xzgrep
    more, zmore, bzmore, xzmore
    less, zless, bzless, xzless

    Какой юникс вей )))
    Ответить
      • man zstd
        zstd - zstd, zstdmt, unzstd, zstdcat - Compress or decompress .zst files
        
        SYNOPSIS
               zstd [OPTIONS] [-|INPUT-FILE] [-o OUTPUT-FILE]
        
               zstdmt is equivalent to zstd -T0
        
               unzstd is equivalent to zstd -d
        
               zstdcat is equivalent to zstd -dcf
        Ответить
  • -DANOTHER_BRICK_IN_THE -Wall

    В цфлагсах одной из линуксячьих утилит.
    Ответить
  • > Линукс — свой дом

    В один прекрасный день ты возвращаешься домой, а там systemd-homed.
    Ответить
    • Достаёшь ключи, чтобы открыть дверь, но там нет замочной скважины.

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

      Только вот незадача, на двери нет камеры для считывания куар-кода: камера находится в другом подземелье...
      Ответить
      • Буквально сейчас дособирала LFS с systemd...

        З.Ы. Ну кстати, чистый systemd выглядит намного разумнее, чем ёбаный кентавр из systemd и старых тулов, в который превратились остальные дистрибы.
        Ответить
        • Существование дистров без systemd подтверждает мой тезис. А попробуй службу апдейтов винде отключить*.

          * Один мой бывший коллега убеждал меня, что это просто и легко: он просто создаёт на диске ``C'' кучу файлов, набитых нулями (с помощью msys, что характерно), оставляя там всего пару гигабайт, и постепенно их удаляет. До удаления пользовательских данных ради апгрейда МС пока не допёр.
          Ответить
          • > и постепенно их удаляет...

            ... а апдейтер сразу же пожирает это место.
            Ответить
          • > кучу файлов, набитых нулями
            > До удаления пользовательских данных ради апгрейда МС пока не допёр.
            Да даже до автоматического зожатия нулей или создания sparse files.

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

            > оставляя там всего пару гигабайт
            Надо спросить, что по этому поводу думает его SSD. Догадался ли контроллер до зожатия, или он всё ещё пердолится с игрой в пятнашки в этих последних гигабайтах.
            Ответить
          • > До удаления пользовательских данных ради апгрейда МС пока не допёр.

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

              Не... она через несколько месяцев один фиг скажет: чувак, мне конечно жаль твой трафик, но что-то я давно не обновлялась.
              Ответить
              • Какой багор ))) А раньше она больше никогда не обновлялась, когда подключение делали лимитным.
                Ответить
          • Зачем отключать обновления? Чтобы ваннакраи лучше работали?
            Ответить
            • Потому что они занимают всё свободное место...

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


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

                Но это всё какие-то апокрифические знания, потому что официальной документации нет.
                Ответить
                • > чистятся

                  И правда, офигеть. Дома у меня буквально метров 100, хотя винде уже несколько лет.

                  Почему тогда на работе там десятки гигабайт? Из-за визуал студий и прочих офисов поди?
                  Ответить
                  • Это может наверное зависеть от пустого места, от размера выделенного места для рекавекри поинтов (есть в настройках) ну и попробуй

                    Dism.exe /online /Cleanup-Image /StartComponentCleanup


                    зы: о, нашел доку

                    https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/clean-up-the-winsxs-folder


                    the task will wait at least 30 days after an updated component has been installed before uninstalling the previous versions of the component.
                    Ответить
            • Да мало ли зачем. К примеру, госту нужно прокрасться в стан линуксоидов. А у них в сети мониторинг траффика на сервера MS, и всех пойманных вендузятников они тут же съедают. А госту нужно по-быстрому загуглить "как пользоваться 5G-чипатором".
              Ответить
              • >быстро

                включаешь виндуос, а там крутится кружочек, и написано "Пожалуйста, подождите"
                Ответить
          • > А попробуй службу апдейтов винде отключить*.
            Там всего-то надо отключить службу апдейтов, службу WaaSMedicSvc, от рута удалить их и почистить несколько тасков из планировщика заданий, которые эти службы восстанавливают (тоже от рута).
            Вроде бы ещё была какая-то служба, которая эти две восстанавливает, но я уже не помню.
            Ответить
            • > тасков, которые эти службы восстанавливают

              Какой анскилл )))

              Почему бы просто на уровне ядра не защитить эти ветки и файлы от всех программ, не подписанных майкрософтом?
              Ответить
              • Для «Заshitника Windows» что-то подобное прикрутили, но криво: саму службу удалить нельзя, а вот удалить к херам всё из «C:\ProgramData\Microsoft\Windows Defender» — можно (причём даже простому админу).
                Ответить
            • А не будет у вас никакого рута! *смеющийся фермер*
              Емнип, уже сейчас админ в винде не может трогать файлы в некоторых системных директориях.
              Ответить
                • систем тоже не может их трогать, пока не станет их владельцем вроде

                  ну тоесть сначала take ownership, а потом write
                  иначе к ним доступ будет только у каких-нить TrunstedInstaller например
                  Ответить
                  • Да, take ownership — мощное средство для курощения винды.
                    Ответить
                    • Через пять лет: да, распайка на материнку эмулятора TPM с алиэкспресс и бинарный патчинг — мощные средства для курощения винды.
                      Ответить
                      • Я вот и говорю: шаг влево-вправо и винда по уровню пердолинга и красноглазия спорит с луниксами.
                        Ответить
                        • У винды пирдоль несколько иной природы.
                          Пока всё работает правильно, там можно не придолица вообще.
                          А когда оно не работает -- тебя ждёт ад
                          Ответить
                          • Дык у прыщей точно так же. Просто они чаще ломаются в начале, чем потом.
                            Ответить
                            • У прыщей (особенно у классических, допоцтеринговых) всё как-то более ровно.

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

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

                              Потом в технете появляется заклинание про замену одного гуида в реестре на другой, и ты его выполняешь, и тогда всё работает
                              Ответить
                            • К слову, сейчас компьютеры продают с предустановленной Windows, в которой уже что-то сломано, просто пользователи этого не замечают.

                              Кто-нибудь смотрит системные журналы? Или лог ngen?
                              Ответить
                              • подтверждаю

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

                      А то потом будет неизвестная ошибка 0xABC123 при попытке удалить SDK, и даже sfc /scannow не поможет
                      Ответить
              • > не будет

                Рута в NT никогда и не было. Админ, насколько я понимаю, это самый обычный юзер, которому дали чуть больше привилегий.
                Ответить
                • часть из которых отберет UAC если логин админа был интерактивным
                  Ответить
                • Именно поэтому я за «Windows 95»: там можно было срать куда угодно, не спрашивая разрешения.
                  Ответить
                    • тринадцать.

                      Но если ты хотел ставить w95, то у тебя скорее всего был multimedia компутер с CD-ROMмом

                      Правда флопик тебе всё равно бы понадобился, ведь грузиться с сидирома биосы не умели: el torro тогда еще не было
                      Ответить
                      • хуйня детская

                        https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc767941(v=technet.10)

                        Microsoft Office 97 Standard edition is provided on a total of 45 diskettes. Microsoft Office 97 Professional edition is provided on a total of 55 diskettes. Depending on the options selected during Setup, you may not be prompted for every diskette.

                        я когда-то даже картонную коробку видел от старого офиса

                        реально здоровая картонная коробка для софта
                        Ответить
                        • Office 97 появился потом
                          А до него был Office 95 а еще Word 6.0.
                          Ответить
                  • В 95 можно было получить окошко ввода логина и пароля, кстати
                    Угадаешь зачем оно было?
                    Ответить
                      • ага, домен)
                        его можно было закрыть, и всё

                        ну креды для CHAP и PAP тоже, но я не про них
                        Ответить
        • Чистый более консистентен, но только во-первых чистых дистров с ним нет, во-вторых через неделю там уже опять всё перефигачат
          Ответить
  • У gnu make есть всякие implicit rules, позволяющие не писать копипасту.
    Грубо говоря make знает, что из лекса получается .c, из .c -- .o итд

    Так вот там есть правило и для SCCS
    Ответить
  • интересно взять windows core, она бесплатна, без проводника, и занимает относительно мало места

    на ней работает far, total commander, и хром. Что еще на ней работает я не знаю, но по идее можно заменить ей десктопную винду
    Ответить
    • Если вы уже достигли успеха, то это замечательно! Вы можете гордиться собой! Оффтоп для тех, кто развивается и ищет мотивацию. Давайте поможем подрастающему поколению поверить в себя
      Ответить
      • какой-то скучный водяной лонгрид
        я имел ввиду Windows Server Core
        Ответить
        • > скучный водяной лонгрид

          Итак, что такое Windows Server Core?

          Многие люди интересуются, что такое Windows Server Core. В сети многие сайты пестрят статьями про Windows Server Core, но можно ли им доверять? Чтобы понять про Windows Server Core лучше, прочтите нашу статью об Windows Server Core.

          1. Windows Server Core

          Познакомимся с Windows Server Core. Вас заинтересовал Windows Server Core и вы решили получить опыт с Windows Server Core. С чего лучше всего начать в случае с Windows Server Core?

          Об этом и расскажет наша статья про Windows Server Core.

          2. Где почитать про Windows Server Core

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

          3. Windows Server Core. Выводы

          Надеемся, вам помогла наша статья про Windows Server Core и вы сможете использовать Windows Server Core более продуктивно и эффективно. Если у вас остались вопросы по Windows Server Core, не стесняйтесь задавать нам их на электронную почту с пометкой "Windows Server Core"!

          Всего наилучшего и удачного использования Windows Server Core.
          Ответить
          • на самом деле акелла промахнулся, а макака чуток обосрался
            Ответить
  • А вот поддержу ISO.

    > systemd-oomd(8) — A userspace out-of-memory (OOM) killer

    А ну-ка прыщебляди, расскажите что вне systemd обеспечит мне такой функционал?
    Ответить
    • Там политику можно писать и перечислять что лучше убивать, а что нет?
      Ответить
    • Почему все начали форсить «systemd»?
      Ответить
    • и так, у нас новая утилита oomctl, новый сервис, и новаый файл конфига
      Ответить
      • И что?

        Где привычные прыщеблядские рассказы: «вот у нас всё и так было», «systemd это просто нинужная обёртка», «у нас никаких проблем не было».

        Годами существует проблема: Луникс при OOM намертво подвисает и минут на 10-20 уходит в себя.

        Причём даже при отключенном свопе.
        Ответить
        • >Луникс при OOM намертво подвисает и минут на 10-20
          расскажи про это, кстати

          Я только OOMKillerов видел
          Ответить
          • Попробуй написать небольшую прогу, у которой working set чуть-чуть больше размера оперативки.

            Формально это ещё не OOM, но системе уже пизда.

            З.Ы. Или у меня лапки, а гуру умеют настраивать так, чтобы своп работал нормально?
            Ответить
              • Вот так попробуй:

                ram < working set < swap + ram

                Это по идее не оверкоммит ещё, так что должно с любыми настройками выделить...
                Ответить
                • не овер, потому что "< swap + ram"

                  начнется активный свопинг и всё станет рачком?
                  Ответить
                  • Как-то так. Я не хочу это пробовать, если честно. В прошлые разы еле-еле получалось убить.

                    Ну ключевое слово "working set", т.е. надо активно эту память перезаписывать, а не просто выделить и молчать.
                    Ответить
                    • волательный указатель и срать внего в цикле пойдет?
                      Ответить
                      • Пойдёт, я вроде так и делала.

                        З.Ы. while (1) memset(p, 0, size) вроде тоже прокатит.
                        Ответить
                        • Лол, OOM-киллер таки пришёл за ним. Но перед этим вся система встала раком: звук лагал, окошки еле-еле переключались.
                          Ответить
                          • Блин, теперь у меня 3 гига какой-то нинужной хуйни лежит в свопе и портит статистику (((
                            Ответить
                            • Это вы радуйтесь что в новом дермиане ядро посвежее и там уже не O(N²).

                              Так бы всё зависло сильнее и тупило гораздо дольше...
                              mm: rid swapoff of quadratic complexity
                              
                              try_to_unuse() is of quadratic complexity, with a lot of wasted effort.
                              It unuses swap entries one by one, potentially iterating over all the
                              page tables for all the processes in the system for each one.
                              
                              This new proposed implementation of try_to_unuse simplifies its
                              complexity to linear.  It iterates over the system's mms once, unusing
                              all the affected entries as it walks each set of page tables.  It also
                              makes similar changes to shmem_unuse.
                              
                              Improvement
                              
                              swapoff was called on a swap partition containing about 6G of data, in a
                              VM(8cpu, 16G RAM), and calls to unuse_pte_range() were counted.
                              
                              Present implementation....about 1200M calls(8min, avg 80% cpu util).
                              Prototype.................about  9.0K calls(3min, avg 5% cpu util).
                              
                              In shmem_unuse(), iterate over the shmem_swaplist and, for each
                              shmem_inode_info that contains a swap entry, pass it to
                              shmem_unuse_inode(), along with the swap type.  In shmem_unuse_inode(),
                              iterate over its associated xarray, and store the index and value of
                              each swap entry in an array for passing to shmem_swapin_page() outside
                              of the RCU critical section.
                              
                              In try_to_unuse(), instead of iterating over the entries in the type and
                              unusing them one by one, perhaps walking all the page tables for all the
                              processes for each one, iterate over the mmlist, making one pass.  Pass
                              each mm to unuse_mm() to begin its page table walk, and during the walk,
                              unuse all the ptes that have backing store in the swap type received by
                              try_to_unuse().  After the walk, check the type for orphaned swap
                              entries with find_next_to_unuse(), and remove them from the swap cache.
                              If find_next_to_unuse() starts over at the beginning of the type, repeat
                              the check of the shmem_swaplist and the walk a maximum of three times.
                              
                              commit b56a2d8af9147a4efe4011b60d93779c0461ca97
                              Ответить
                              • > swapoff

                                О, спасибо! Пойду передёрну свап, а то как-то неприятно когда там не 0 байт.
                                Ответить
                              • Ожидание: коммитить в ядро «Линукс» — большая честь, которой удостаиваются только самые лучше программисты с дипломами MIT!

                                Реальность: try_to_unuse() is of quadratic complexity, with a lot of wasted effort. It unuses swap entries one by one, potentially iterating over all the page tables for all the processes in the system for each one.
                                Ответить
                                • Самая мякотка: от этого квадратичного говна все луниксоиды страдали больше десятилетия!
                                  Ответить
                                  • И в это время писали на форумах юным студентам, сортирующих жалкую десятку-сотню элементов (пункты меню, колонки таблицы для вывода) "фу, у тебя пузырёк квадратичный!"
                                    Ответить
                        • Вот так малость тупит, но работает
                          #include <stdio.h>
                          #include <sys/sysinfo.h>
                          #include <stdlib.h>
                          #include <string.h>
                          #include <unistd.h>
                          
                          int main() {
                              struct sysinfo info;
                              if (sysinfo(&info) != 0) {
                                  perror("sysinfo");
                                  return -1;
                              }
                              printf("Total ram: %ld, total swap: %ld", info.totalram, info.totalswap);
                              size_t size = info.totalram + 4096 * 4096;
                              void *data = malloc(size);
                              if (data == NULL) {
                                  perror("malloc");
                                  return -1;
                              }
                              while (1) {
                                  memset(data, 42, size);
                                  sleep(1);
                              }
                          
                              return 0;
                          }


                          А если аллокнуть swap + ram - 4096, то тупит, но быстро OOMится
                          Ответить
            • > так, чтобы своп работал нормально?

              Кстати, ты в курсе что до последнего времени в луниксе своп освобождался за O(N²).

              Из-за этого был ОЧЕНЬ долгий resume from hibernate и парадоксы что проще убить процесс и запустить его заново чем ждать пока он вернётся из свопа в память. Наблюдалось и на сверхбыстрых SSD.
              Ответить
              • > hibernate

                Если честно, никогда не пробовала... Это вообще работает? У меня и на винде то не получалось в своё время.
                Ответить
                • > Это вообще работает?

                  Да, сейчас даже получше (в смысле быстрее). Раньше resume был ооочень долгий.
                  Для сравнения: на XP на HDD (!) было почти мгновенно, а на линуксе и SSD минут 5.

                  Но с нюансами. Реальные примеры: сидел на штеуде, 4.13 всё отлично. Обновился до 4.15: не резюмится и даже suspend не работает.
                  https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1774950

                  https://ubuntu-mate.community/t/hibernation-broken-in-kernel-4-13-0-25/15736


                  Сейчас амд нормально работает.

                  Для ноутбука must-have.
                  Ответить
                • Потом на одной машине у меня был btrfs

                  Оказалось что при наличии такого раздела в системе hibernate сделать невозможно, т.к. btrfs не дружит со свопом.

                  Btrfs has not allowed swap files since commit 35054394c4b3 ("Btrfs: stop
                  providing a bmap operation to avoid swapfile corruptions"). However, now
                  that the proper restrictions are in place, Btrfs can support swap files
                  through the swap file a_ops, similar to iomap in commit 67482129cdab
                  ("iomap: add a swapfile activation function").


                  https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ed46ff3d423780fa5173b38a844bf0fdb210 a2a7
                  Ответить
                    • Незачем. Ситуация гораздо гаже.

                      hibernate в принципе невозможен при наличии активного btrfs-раздела (на котором у меня был /home)

                      Иными словами есть btrfs partition и есть swap partition. И btrfs драйвер не давал делать hibernate на swap partition.
                      Ответить
                      • Эээ... т.е. он за себя боялся, а не за своп? Ничерта не понимаю, как драйвер соседней файлухи может устроить "swapfile corruption".
                        Ответить
                        • > Эээ... т.е. он за себя боялся, а не за своп?

                          Ага. Дикое Говнище )))
                          Ответить
                          • А по твоей цитате "bmap", "swapfile corruption", "can support swap files" всё-таки кажется, что речь о swap файле на btrfs...

                            Но видимо они не смогли только этот кейс запретить и отрубили вообще всё нахуй на всякий случай?
                            Ответить
                            • Блять, да я в своё время весь интернет облазил с этой проблемой.

                              И пока не удолил btrfs-tools — оно не работало.

                              > https://websiteforstudents.com/enable-hibernation-ubuntu-17-10-desktop/
                              > The presence of btrfs partitions has proved to make hibernation fail, so check that you’re not using any btrfs partitions. 
                              
                              Besides removing or reformatting such partitions, you may need to remove the btrfs-tools package:
                              
                              sudo apt purge btrfs-tools
                              Ответить
                              • > sudo apt purge btrfs-tools

                                Напомнило про драйвер амудэ, который по имени игры воркэраунды для проца применяет.

                                Или там в этом пакете заодно активация драйвера сносится?
                                Ответить
                        • brfs как zfs включает в себя "софтварный рейд", и предоставляет разделы, и вот их нельзя под свап сипользовать, не?
                          Ответить
                          • Всё гораздо хуже. Помогало только:
                            sudo apt purge btrfs-tools
                            См. выше.
                            Ответить
                            • пиздец какой
                              там драйвер что ли?
                              Ответить
                              • Именно поэтому я за ext'ы.

                                Хотя ext4 тоже бесился по молодости (поломали классическую идиому write + rename).
                                Ответить
                                • Вообще файлухи с логом это уже не айс
                                  Ответить
                                    • Люблю делать fsck по пятнадцать минут:)
                                      Если soft updates (как в старых bsd), то скорее всего всё и починится нормально
                                      Ответить
          • Hello,
            
            There's this bug which has been bugging many people for many years
            already and which is reproducible in less than a few minutes under the
            latest and greatest kernel, 5.2.6. All the kernel parameters are set to
            defaults.
            
            Steps to reproduce:
            
            1) Boot with mem=4G
            2) Disable swap to make everything faster (sudo swapoff -a)
            3) Launch a web browser, e.g. Chrome/Chromium or/and Firefox
            4) Start opening tabs in either of them and watch your free RAM decrease
            
            Once you hit a situation when opening a new tab requires more RAM than
            is currently available, the system will stall hard. You will barely  be
            able to move the mouse pointer. Your disk LED will be flashing
            incessantly (I'm not entirely sure why). You will not be able to run new
            applications or close currently running ones.
            
            This little crisis may continue for minutes or even longer. I think
            that's not how the system should behave in this situation. I believe
            something must be done about that to avoid this stall.
            
            I'm almost sure some sysctl parameters could be changed to avoid this
            situation but something tells me this could be done for everyone and
            made default because some non tech-savvy users will just give up on
            Linux if they ever get in a situation like this and they won't be keen
            or even be able to Google for solutions.
            
            https://lkml.org/lkml/2019/8/4/15
            Ответить
            • > Disable swap

              Ахаха! Исполнение кода с подкачкой каждой функции с диска, потому что выгрузить больше нечего? Не, немножко то свопа надо оставить.
              Ответить
                • Ну со свопом у него ещё есть шанс выпихнуть какое-то нинужное говно... Без свопа шансов тупо нет.
                  Ответить
                  • Я и со свопом на ssd и с кучей рама много раз попадал в такую ситуацию.

                    А когда был hdd пришось часов через шесть после изнасилования диска просто сделать reset.
                    Ответить
            • https://www.reenigne.org/blog/the-fundamental-differences-between-windows-and-linux/

              > Windows has no OOM killer - it will just keep swapping memory to disk and back until you get bored and kill the offending process yourself or reboot the machine. It's very easy to bring a Windows machine to its knees this way - just allocate more virtual address space than there is physical RAM and cycle through it, modifying each page as rapidly as possible. Everything else quickly gets swapped out, meaning that even bringing up the task manager to kill the program takes forever.
              Ответить
              • > Windows has no OOM killer - it will just keep swapping memory to disk and back until you get bored and kill the offending process yourself

                Винда (когда она у меня была) не лагала с отключенным свопом.

                Она обычно крашила группу вкладок хрома.

                > just allocate more virtual address space than there is physical RAM and cycle through it
                > Everything else quickly gets swapped out

                Есть одна проблемка: на винде у меня будет отключён своп и эта анскильная программа просто не заработает.
                Ответить
    • OOM Killer - это компонент ядра Linux, призванный решать проблему недостатка памяти. Известно, что виртуальной памяти может быть бесконечно много (в пределах адресации), а вот физической - вполне конечное число. Ядро выделяет память процессам "с запасом" в сумме превышающую физическую память системы. В основном, всё разруливается нормально (вся выделенная память одновременно редко требуется), но бывает ситуация когда становится нужно памяти больше, чем ее физически есть. И системе тогда нужно завершить какой-то процесс, чтобы продолжить работу. Вот этим и занимается OOM Killer.

      Текущая реализация OOM Killer в Linux стремится выбрать наименее важный процесс. Он выбирается среди всех процессов, кроме init и kernel threads, на основе подсчета для всех процессов очков и тот, что набрал больше всех очков - убивается. Алгоритм анализа достаточно сложен и я не буду его приводить здесь.


      Systemd-oomd это уже часть ядра, или это просто какая-то нахуй не нужная переделка того, что уже есть в ядре? Я только закончил ебаться с «Gentoo», поэтому мог не правильно понять портянку, которую притащил (я очень устал).
      Ответить
      • Это всё прыщавая кукаретика.

        Реально система даже без свопа останавливается на очень долгое время.
        Ответить
        • Всё равно системдэ нинужно, ведь есть:

          https://github.com/rfjakob/earlyoom/

          А вообще-то мне было похуй на «SystemD», но я вас тут наслушался и решил стать не «инцелом», не «геймером», а «врагом SystemD», почему теперь здесь все за «SystemD»? Вы меня флеймите троллом?
          Ответить
      • We have developed oomd, a faster, more reliable solution to common out-of-memory (OOM) situations, which works in userspace rather than kernelspace. We designed oomd with two key features: pre-OOM hooks and a custom plugin system. Pre-OOM hooks offer visibility into an OOM before the workload is threatened. The plugin system allows us to specify custom policies that can handle each workload running on a host.

        We find that oomd can respond faster, is less rigid, and is more reliable than the traditional Linux kernel OOM killer. In practice, we have seen 30-minute livelocks completely disappear. We wish to contribute oomd to the open source community to help others find a more flexible solution for OOM situations.
        Ответить
        • Вообще соглашусь, что OOM это политика,и лучше ее вынести в узерленд
          Ответить
    • Я иду по Уругваю,
      Ночь - хоть выколи глаза.
      Слышны крики попугаев
      И мартышек голоса.

      Над цветущею долиной,
      Где не меркнет синева,
      Этой песенки старинной
      Мне припомнились слова.

      Я иду по Уругваю,
      Где так жарко в январе,
      Про бомбёжки вспоминаю,
      Про сугробы на дворе.

      Мне над мутною Ла-Платой
      Вспоминаются дрова,
      Год далёкий сорок пятый,
      Наш отважный пятый "А".

      Малолетки и верзилы
      Пели песню наравне.
      Побывать нам не светило
      В этой сказочной стране.

      Я иду по Уругваю,
      В субтропическом раю,
      Головой седой киваю,
      Сам с собою говорю.

      Попугаев пёстрых перья,
      Океана мерный гул...
      Но линкор немецкий "Шпее"
      Здесь на рейде затонул.

      И напомнит, так же страшен,
      Бывшей мачты чёрный крест,
      Что на шарике на нашем
      Не бывает дальних мест.

      Я иду по Уругваю
      В годы прошлые, назад,
      Вспоминаю, вспоминаю,
      Вспоминаю Ленинград...

      Я иду по Уругваю,
      Ночь - хоть выколи глаза.
      Слышны крики попугаев
      И мартышек голоса.
      Ответить
      • Городницкий чтоль? Который про атлантов сказал: "не боги -- человеки, привыкшие к труду"
        Ответить
    • Чем Нигер отличается от Нигерии?
      Ответить
    • Уругвай лучше намного.

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

      Парагвай беднее, и там больше индейцев
      Ответить
  • История развивается по спирали. На хакерской конференции DEF CON 29 в 2021 году состоялся анонс новой версии PunkSpider — поисковой системы по уязвимостям в веб-приложениях, своеобразного аналога Shodan, только для веб-сайтов. Сканер уязвимостей с фаззингом (перебор всех вариантов) проверяет сайты на наличие самых распространённых, удобно эксплуатируемых багов — и сообщает о них всему интернету.

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

    На данную минуту PunkSpider ещё не запустили, на сайте висит заглушка, опубликована только ссылка на расширение для Chrome.


    Как вы думаете, это круто или не очень? Теперь даже какой-нибудь ламер-виндузятник (арендатор своей OS) сможет взломать любой, даже самый популярный, сайт.
    Ответить
    • >> опубликована только ссылка на расширение для Chrome

      ... которое будет сообщать твои пароли всему интернету.
      Ответить
      • Логично, когда запустится веб версия, там будет отдельный раздел «идиоты, которые ставят непроверенное расширение от посторонних петухов»
        Ответить
        • > непроверенное

          Кстати, а в хромовский магазин до сих пор можно заливать проприетарную зашифрованную парашу? Мозилла вроде нечитаемые расширения сразу блочит теперь.
          Ответить
        • Всё хуже, чем ты думаешь. Это telnet от роутера. У чувака панель управления роутером наружу торчит. Какой-нибудь анонимный хакер набрутит пароль и отключит его от интернетов.
          Ответить
  • Короче говоря, телефон в вашей руке существует в состоянии вечной незащищённости. Он всегда открыт для заражения кем угодно, у кого достаточно денег. Весь бизнес этой «индустрии информационной безопасности» заключается в создании новых инфекций, которые обходят последние обновления безопасности. Эти инструменты затем продают странам, которые остро нуждаются в самых изощрённых средствах угнетения своего населения.

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


    Даже если завтра NSO Group и всех представителей этой индустрии внезапно сотрёт с лица земли вулканом общественного возмущения, это не изменит того факта, что мы в разгаре величайшего кризиса компьютерной безопасности в истории. И разработчики Apple, Google, Microsoft, которые хотят продавать продукт, а не доводить его до совершества, и их полная противоположность — благонамеренные разработчики Linux, которые хотят доводить продукт до совершенства, а не продавать его — все они спокойно пишут код на небезопасных языках, потому что… ну, потому что так привыкли, а модернизация требует значительных усилий, не говоря уже о расходах. Подавляющее большинство уязвимостей, которые потом эксплуатируются индустрией небезопасности, появляются по техническим причинам, связанным с управлением памятью. Поэтому выбор более безопасного языка — критически важная мера защиты… но мало кто об этом думает.
    Ответить
    • > все они спокойно пишут код на небезопасных языках
      На этом моменте сразу понял, что статью писал дrustня-сектант. Открыл источник — и правда, сектант!
      Ответить
      • > все они спокойно пишут код на небезопасных языках
        Именно по этому я за "PHP"
        Ответить
    • >разработчики Linux, которые хотят доводить продукт до совершенства, а

      то-то я смотрю в линуксе всё доведено до свершенства: особенно конечно документация (к ss, ip, tc итд)
      Ответить
      • >разработчики Linux, которые хотят доводить продукт до совершенства, а

        >> -Werror
        >> introduce Q3 2021
        Ответить
  • %.d: %.c
            @set -e; rm -f $@; \
             $(CC) -M $(CPPFLAGS) $< > $@.$$$$; \
             sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
             rm -f $@.$$$$

    давайте течь от "UNIX way"
    Ответить
      • Попробуй понять, что тут написано
        Я знаю, ты сможешь
        Ответить
        • Смогу. Но я каждый раз лезу в справку, когда нужно что-то поправить в мейкфайлах, потому что эти доллары с закорючками в памяти не откладываются.

          Мне аргумент sed'а проще понять.
          Ответить
          • Тут ``$$$$`` это, на самом деле, ``$$``, сиречь пид процесса (man/info bash, ищи \$\$)


            %.d: %.c это pattern rule, говорящая, что например petuh.d зависит от petuh.c.
            https://www.gnu.org/software/make/manual/html_node/Pattern-Rules.html

            $@ это алиас для таргета (например для petuh.d)
            https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.html

            "set -e" это падать при ошибке (См "help set")

            -M у gcc это генерация депенденсов по сишным файлам.

            $< это список всех зависимостей

            Ну а sed c нетипичным разделителем -- запятой -- ты наверное и сам расшифруешь
            Ответить
  • Жабаёб брат пыхоёба

    "An OGNL injection vulnerability exists that would allow an authenticated user, and in some instances unauthenticated user, to execute arbitrary code on a Confluence Server or Data Center instance.

    https://www.zdnet.com/article/us-cybercom-says-mass-exploitation-of-atlassian-confluence-vulnerability-ongoing-and-expected-to-accelerate/

    Знаете, что такое OGNL?
    Это жабий XPATH, его пидарасы во всякие шаблоны пихают
    https://struts.apache.org/tag-developers/ognl-basics
    Ответить

Добавить комментарий для Desktop Отменить ответ

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8