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

    +1

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

    #116: https://govnokod.ru/27671 https://govnokod.xyz/_27671
    #117: https://govnokod.ru/27675 https://govnokod.xyz/_27675
    #118: https://govnokod.ru/27685 https://govnokod.xyz/_27685
    #119: https://govnokod.ru/27701 https://govnokod.xyz/_27701
    #120: https://govnokod.ru/27703 https://govnokod.xyz/_27703
    #121: https://govnokod.ru/27710 https://govnokod.xyz/_27710
    #122: https://govnokod.ru/27728 https://govnokod.xyz/_27728
    #123: https://govnokod.ru/27729 https://govnokod.xyz/_27729
    #124: https://govnokod.ru/27730 https://govnokod.xyz/_27730
    #125: https://govnokod.ru/27732 https://govnokod.xyz/_27732
    #126: https://govnokod.ru/27733 https://govnokod.xyz/_27733
    #127: https://govnokod.ru/27737 https://govnokod.xyz/_27737
    #128: https://govnokod.ru/27742 https://govnokod.xyz/_27742
    #129: https://govnokod.ru/27747 https://govnokod.xyz/_27747
    #130: https://govnokod.ru/27755 https://govnokod.xyz/_27755
    #131: https://govnokod.ru/27766 https://govnokod.xyz/_27766
    #132: https://govnokod.ru/27790 https://govnokod.xyz/_27790
    #133: https://govnokod.ru/27828 https://govnokod.xyz/_27828
    #134: https://govnokod.ru/27834 https://govnokod.xyz/_27834
    #135: https://govnokod.ru/27839 https://govnokod.xyz/_27839
    #136: https://govnokod.ru/27845 https://govnokod.xyz/_27845
    #137: https://govnokod.ru/27857 https://govnokod.xyz/_27857
    #138: https://govnokod.ru/27867 https://govnokod.xyz/_27867
    #139: https://govnokod.ru/27887 https://govnokod.xyz/_27887
    #140: https://govnokod.ru/27900 https://govnokod.xyz/_27900
    #141: https://govnokod.ru/27914 https://govnokod.xyz/_27914
    #142: https://govnokod.ru/27942 https://govnokod.xyz/_27942
    #143: https://govnokod.ru/27960 https://govnokod.xyz/_27960
    #144: https://govnokod.ru/27972 https://govnokod.xyz/_27972
    #145: https://govnokod.ru/27996 https://govnokod.xyz/_27996

    Запостил: nepeKamHblu_nemyx, 12 Февраля 2022

    Комментарии (490) 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://www.youtube.com/watch?v=ESx_hy1n7HA

      Еще я в первый раз услышал Lay down your bss вместо Lay down your pieces и немного прихуел, но потом оказалось что это всё равно банальная пошлятина.
      Ответить
      • А иногда в самих сервисах гугла странные переводы (да и в логике). Иногда просто где-то что-то не влезает в кнопку, иногда чуть смысл меняется, но иногда... до сих пор помню в настройках рекапчи кноку "ДА" над списком доменов, вообще без пояснений, которая при нажатии удаляла аккаунт целиком.
        Ответить
      • Lay down your code, your data, your bss.
        Ответить
      • Я все песни Mili переслушал по десять раз, потому что я анимешник. Пойду ещё раз переслушаю, она такая няшная!
        Ответить
      • СУКА

        https://www.youtube.com/watch?v=oZoWSOHHKu8
        https://youtu.be/WIlopKnCTp4

        Самый пиздец и вовсе только в проклятой свалке мп3

        https://vk.com/audio?q=world.execute(me)%20araneat
        Ответить
    • Вам не кажется что автозагрузка в windows это полная хуйня? Вот во времена autoexec.bat было лучше.
      Ответить
    • https://pbs.twimg.com/media/FLf4Om6XEAsh1_j.jpg
      Ответить
    • Наткнулся в «Твитторе» на симпатичную студентку:

      https://pbs.twimg.com/media/FHjPrlxXwAsTllh.jpg

      https://pbs.twimg.com/media/FKgRbnYWUAU_vPx.jpg

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

          Я вижу «setlocale(LC_ALL, "Russian");», а дальше боюсь разбирать.
          Ответить
          • Нейронка натренирована на распознавание C/C++.

            З.Ы. Вспомнилась анимешная картинка с WPARAM и LPARAM, которые сразу привлекают внимание, хоть там всё и замылено.
            Ответить
          • Там же ясно видно Tree* tree = new Tree;
            И дальше куча add(tree ...
            Ответить
            • А зачем new?
              Ответить
              • [/s]аналог memset. Чтобы обнулить поля штруктуры.[/s]
                Стыдно. Очень-очень стыдно.
                Ответить
              • Потому что говнокод. Правильно писать
                auto tree = make_unique<Tree>();

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

                    Или просто говнокодеры.
                    Ответить
                    • >передаётся какой-нибудь другой функции.
                      Это же всё небось в main, и живет объект до конца main

                      >стек пидорасит
                      В студлабе на на x64?:)

                      даю зую зуб на отсечение, что последнее.

                      Макак сказал "объекты создаются словом new", его и используют.
                      Ответить
                    • Потому что лаба. Мартышкам пытаются объяснить, что такое куча, и как ей пользоваться. А то, что они потом будут писать говнокод никого не волнует.
                      Ответить
              • Джавист писал, вестимо.
                Ответить
      • > Ну почему их до сих пор учат писать using namespace std?
        Потому что студентов до сих пор за каким-то хреном учат писать на «C++».

        Ну а с учётом того, что 95% преподавателей (в провинциальных вузах — 98.5%) этот самый «C++» сами знают на уровне прочитавших гайд «C++ за 21 час» и не смогут даже явное определение шаблона от декларации внешней специализации отличить, всё, чему они могут научить студентов — это копипастить код из дерьмовых методичек начала двухтысячных годов.
        Ответить
        • Кстати, в совсем древних компиляторах (до C++98) неймспейсов не было. Вероятно, магическую фразу «using namespace std;» когда-то использовали для быстрой адаптации кода из XX века к новым компиляторам. А потом просто привыкли так делать и забыли, для чего оно было нужно.
          Ответить
          • Да, ты прав
            http://www.bitsavers.org/pdf/borland/borland_C++/Borland_C++_Version_3.1_Programmers_Guide_1992.pdf
            Ответить
        • Плюсану.

          Давеча видел, как студентов НЕ программерской специальности учили зачем-то плюсам. Причем это был микс из плюсов и сишки. Студенты сразу же запутались напрочь, и не понимали чем ссылка отличается от указателя, а cout << от printf.
          И конечно же там был ``delete[] foo``. И конечно же там был using std;
          Ответить
          • Как будто они на самом деле сильно отличаются.
            Ответить
      • Файл | Правка | Вид | Гроб | Кладбище | Пидор
        Ответить
      • Патамучта преподы медленно печатают
        Ответить
        • В Ледниковый период мамонты бегали по льду и в итоге вымерли
          Ответить
        • Нужно заказать печатку "Сгенерено вручную" и ляпать ею по всем топикам, аналогичным сему.
          Ответить
      • ``Struct2.cpp`` пугает
        Ответить
    • Функция телеметрии пакета SDK для .NET по умолчанию включена. Чтобы отключить ее, присвойте переменной среды DOTNET_CLI_TELEMETRY_OPTOUT значение 1 или true.

      При успешной установке программа установки пакета SDK для .NET отправляет единую запись телеметрии. Чтобы отказаться от этого, задайте переменную среды DOTNET_CLI_TELEMETRY_OPTOUT перед установкой пакета SDK для .NET.

      Важно!

      Чтобы отказаться от отправки данных телеметрии после запуска установщика, закройте установщик, задайте переменную среды, а затем снова запустите установщик с заданной переменной среды.
      Ответить
      • Иногда я забываю выключить утюг - это разнообразит мою жизнь
        Ответить
      • Самое забавное, что люди боятся телеметрии и кукисов, но при этом постят всю свою жизнь в социалочки и общаются через облачные платформы.
        Ответить
        • Было забавно, когда Audacity (вроде) скопипастили в TOS пункты про обработку персональных данных (скорее всего им это посоветовали на всякий случай, для прикрытия жопы), и поднялся адовый шитшторм privace advocates из... социалочек.
          Ответить
          • Почитал бы ту историю целиком. Удасити купила чекистская контора и пообещала хранить пользовательские аудиофейлы 3 года во избежании песен и плясок про взрывание К-гэбистов в Майнкампфе.
            Ответить
            • > пообещала хранить пользовательские аудиофейлы
              А у них места хватит? Я, если у меня диск с TLMC навернётся к ним обращусь же, чтобы предоставили обратно мой терабайт тохомузла.
              Ответить
              • Всё равно, что следить за агентом тайной полиции в надежде, что он выведет на черный рынок с дефицитом.

                А, там еще в чекистском высере был неявный запрет юзать прогу детям до 13 без сопровождения. В общем, второе место на конкурсе уебанов после Гоогле, которые объявили в своем EULA, что весь конь-тент, созданный в ихней сборке Chromium принадлежит им.
                Ответить
                • > Всё равно, что следить за агентом тайной полиции в надежде, что он выведет на черный рынок с дефицитом

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

                    Хотя от vendor lock спасает, наверное. Чтобы в другое место можно было уйти не выковыривая свои данные вручную/скриптами.
                    Ответить
                    • Шайка безграмотных ненужных долбоёбов каждый раз придумывает новый говнозакон и делает всё хуже и хуже.

                      Сначала ебланы заставили все сайты засирать половину экрана тупым вопросом про куку, и теперь тратят мое (пользователя) время на это говно.

                      Теперь ебланы упростили взлом хакеру.

                      Евродепутатов нужно утопить в ванне с соляной кислотой, и тогда Интернет станет гораздо более удобным и безопасным
                      Ответить
                      • Тут плюс в том, что он не даёт тем же социалкам навсегда привязать юзера. Можно забрать свои данные и уйти в другое место. Или вообще в оффлайн.

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

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

                Имхо, даже в минидамп может что-то критичное для юзера проскочить. Его имя или имя файла например.

                Про полный вообще молчу.
                Ответить
                • А что у нас в минидампе? Ядерные стеки только?
                  Ответить
        • Сам ржу с этого. Человек у себя вконтакте пишет, что он не пользуется гуглом, потому что гугл его отслеживает
          Ответить
    • https://www.youtube.com/watch?v=FDiapbD0Xfg
      CHUNGUS 2 - A very powerful 1Hz Minecraft CPU
      Ответить
      • При выступлениях я не волнуюсь тогда, когда я злюсь
        Ответить
    • раньше я гордо писал с большой буквы. когда начал использовать boost перестал.
      кстати этим объясняется почему там змейка_блядство
      Ответить
      • Людям некогда летать на другие планеты, они слишком заняты, убивая друг друга на Земле
        Ответить
    • На Хабре вышла статья!

      [Love is in the air] Ищу парня-программиста, Мск

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

      Уже проводя пол года на тиндере я составила анализ мужчин:

      5% женатики

      5% не могут забыть бывшую

      5% не ищут серьёзные отношения

      ....мне лень перечислять всех остальных

      Список можно продолжить, но не об этом сейчас речь, в общем, в тот самый 5% подходящих мне людей, увы, не подходят творческие люди, тусовщики. Мне нравится интровертность и склад ума как раз таких людей как вы, милые господа.

      Расскажу о себе. Зовут Алиса, 20 лет сама родилась и живу в Москве. Получаю высшее, 3 курс, химик-технолог. Сама зарабатываю, проблем в плане ментального и психических не имею. Как уже заметили, со своим чувством юмора. Ну и, конечно же, люблю красоту и все, что с этим связано. Свободное время занимаюсь спортом, гуляю с подругами, как и многие 20-летние девушки. Короче, если тебе интересно стало- то меня найдёшь :)
      Ответить
      • > 85% мне лень перечислять остальных

        Какой анализ )))
        Ответить
        • Пусть продолжит нейронка:

          5% женаты ради счастья, дело кремлевского блока

          5% просто не захотят без подруги

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

          Заранее спасибо.
          Ответить
        • Ещё попытка:

          5% не ищут новую девушку

          5% не хотят насилия, но легко себя изменяют

          5% постоянно изменяются.

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

          > Учится

          Делает минет профессору за зачёт

          > Работает

          Вебкам.
          Ответить
      • https://hsto.org/getpro/habr/upload_files/38f/e49/08d/38fe4908d98d06acb2c4f04e83756a77.jpeg

        Алиса Бышкова, работает в ООО «АКВА-ТЕРМО».

        https://vk.com/id134093639

        https://www.instagram.com/alisa_b_/

        Она?
        Ответить
        • Знакомься.
          Ответить
          • dakooota 14.02.2022 в 20:38 насрала:
            «Здравствуйте, будьте добры удалить мои данные, мне не очень приятно, кому надо-тот найдет . Не надо давать подсказок, иначе я везде переименую ссылки и меня вообще невозможно будет найти кто хочет . Не усложняйте мне жизнь. Буду благодарна»
            Ответить
            • > я везде переименую ссылки и меня вообще невозможно будет найти
              > Не усложняйте мне жизнь

              Меня просто корёжит от отсутствия логики
              Ответить
              • Слишком эталонная ТП. Может быть, за этим именем скрывается толстый тролль? Ну не может же быть так тупо.
                Ответить
              • > переименую ссылки

                Сменю работу. Перееду в другой город. Сменю фамилию.

                Как-то так уже надо, походу.
                Ответить
                • И пластическую операцию... Хотя нет, не надо. Я её всё равно не узнаю, у неё стереотипная внешность.
                  Ответить
                • Она, кстати, уже сменила никнейм во «Вконтакте» с @dakooota на @alisasilalisasila, чтобы её не нашли, но цифровой айдишник-то сохранился!
                  Ответить
                  • Старый никнейм (dakooota) очень удачный: в разных сервисах он принадлежит разным людям.
                    Ответить
                    • Вот, например, Dakota coyote

                      https://i.pinimg.com/originals/07/27/9e/07279eb9fb3e1515a6823b708821e00d.jpg
                      Ответить
                      • Забавно, что Файк любит койотов и лисиц, но никогда в жизни не заведет себе даже собаки
                        Ответить
            • > насрала

              У тебя там нейронка для определения пола по комментариям?
              Ответить
        • Очередная тупая самовлюблённая выдра, со стереотипом что все программисты пиздец какие умники, интроверты и вообще "homo novus"
          Ответить
      • zetroot 14.02.2022 в 22:38 насрал:
        «Ооо! Приложение для знакомств "Тендер"! Для настоящих ценителей 44 и 223 ФЗ. Все критерии должны быть сформулированы, чтобы ФАС не докопался.

        "Ищу друга. Мужской пол - наличие. Высшее образование - наличие."

        При этом нельзя написать, что внешность Вина Дизеля, только "внешность Вина Дизеля или аналогичная". Еще и надо разъяснения по пунктам давать. "Внешность Вина Дизеля или аналогичная требуется для снижения уровня отвращения при личном общении до отметки 5% и/или ниже".»
        Ответить
        • > Высшее образование - наличие
          Образование — не менее «Высшее».
          Ответить
          • Надо ещё объяснение накатать, для чего оно требуется.
            Ответить
          • А «доброкачественное» подойдёт?
            Ответить
      • "Носят мужчины усы и бородки,
        И обсуждают проблемы любые.
        Двадцать процентов из них - голубые.
        Сорок процентов - любители водки.
        Тридцать процентов из них - импотенты,
        У десяти - с головой не в порядке.
        В сумме нам это дает сто процентов,
        Ответить
        • Принцип Дирихле мне подсказывает, что складывать нельзя. Может найтись человек, подходящий всем категориям: голубой любитель водки и импотент с головой не в порядке.
          Ответить
          • Это называется "пиздоблядский мразеуюбный ТРАП": голубой? Голубой. Любитель водки? Надо же как-то бороться с депрессией! Импотент из-за гормонов, с головой не в порядке -- это само собой разумеется.
            Ответить
      • Короче, мы ей не подходим. Ей не нравятся творческие люди.
        Ответить
        • Если вам хочется окунуть человека головой в унитаз, а вы улыбаетесь, значит вы дипломат
          Ответить
      • > Как уже заметили, со своим чувством юмора
        не заметили, кстати
        Ответить
        • Но ведь юмор должен где-то быть. Может быть, это 50-летний бородатый админ нас троллит, специально выложив фотки какой-то левой чувихи? Ну не может же нормальная тян так хуёво себя рекламировать.
          Ответить
      • > Мне нравится интровертность

        Программист-интроверт нужен чтобы и деньги зарабатывал и где тян по ночам гуляет с подругами не спрашивал?
        Ответить
        • А может быть и так:
          --Миллый, я спаать ложусь
          --Ага, сейчас (жмет "step into" в дебагере)

          медленно начинается очередное утро
          Ответить
      • Ну как, нашла?
        Ответить
    • public static Optional<Configuration> parseConfiguration(String encoded) {
          String[] chunks = encoded.split(";");
          if (chunks.length >= 4) {
            // огромная портянка всякой хуйни
            return Optional.of(parsed);
          }
      
          return Optional.empty();
      }


      господи блядь ну откуда
      откуда у людей такая нелюбовь к early return и (в других местах) обожание огромного количества if else вместо того, чтобы просто отрезать ненужные варианты в начале кода
      Ответить
      • Это зайчатки влияния секты одного ретурна. Скоро этот код будет переписан как:

        // ...
                result = Optional.of(parsed);
            } else {
                result = Optional.empty();
            }
            return result;
        }
        Ответить
        • Смотрите, как надо:
          result[chunk.length >= 4] = Optional.of(parsed);
          result[chunk.length < 4] = Optional.empty();
          
          return result[true];
          Ответить
          • А где
            // огромная портянка всякой хуйни

            должна быть?
            Ответить
        • В псакале не нужно писать ретурн. Именно поэтому я за паскаль
          Ответить
        • Самые бессмысленные вещи, топ два:
          * Фонарик на солнечных батарейках
          * класс Optional в языке программирования Java
          Ответить
          • У меня в «PHP» нет никакого «Optional».
            Ответить
          • Больше всего меня радуют носящиеся рядом функциональщики с монадой мейби и орущие "мы победили нулл!!!".
            На самом деле они нихуя не победили.
            Проблема дереференса нуллпоинтера в том, что написанный код предполагал, что значение есть.
            А его там нет.
            Заворачивание этого говна в блевню Some и None не решает проблему вообще никак.
            Потому что если код уверен, что значение есть, он ровно так же попробует его распаковать.
            Либр будет продолжать вызывать map на пустом месте, чтобы бедняга-программист, у которого в конце обработки почему-то ничего нет, разматывал всё это говно обратно - после того, как проблему заметили где-то на проде. Вместо того, чтобы получить по рылу NPE и увидеть конкретный стектрейс, где это происходит.
            Ответить
            • В хороших языках ты не можешь скомпилирвоать код, который не проверяет значение на нул
              Ответить
              • В шарпе достатачно громко с уверенностью сказать и аргумент проверится на нулл
                void pitux(string not_null!!)


                Кстати, планируется ввести оператор "проверить на нулл" и в остальных контекстах.
                Ответить
            • > Заворачивание этого говна в блевню Some и None не решает проблему вообще никак.
              > Потому что если код уверен, что значение есть, он ровно так же попробует его распаковать.

              И не сможет, потому что для получения значения из Maybe, его нужно распаковать из враппера путём паттерн-матчинга, который в данном случае эквивалентен проверке на "null". Т.е. код с Maybe не содержит null pointer dereference, что называется, by construction.

              Да что ж такое-то. Опять питоняки нанякивают на haskell, не зная его.
              Ответить
              • да не тока на хаскель, даже в сраном коко есть нулл сейфти
                даже в TS!

                Фике просто джавист
                Ответить
            • P.S. Моняда maybe практически полностью эквивалентна типичному говнокоду с проверками на null. Только их руками писать не надо, и забыть про них нельзя. Т.е. все проблемы, которые ты тут изложил, будут и в коде с if-ами.

              > Вместо того, чтобы получить по рылу NPE и увидеть конкретный стектрейс, где это происходит.
              Let it crash не так работает, лол.
              Ответить
              • Проблема в том, что вместо нормального планирования и обнаружения ошибок в нужных местах, всё заворачивают в optional/maybe/что-то ещё и в результате где-то на самом нижнем уровне (или на самом верхнем), где о контексте использования функции ничего не известно, проверку на НИХУЯ делают на отъебись, или даже делают адекватное поведение для какого-то конкретного случая, которое нихуя не работает для остальных.

                Когда надо было отлавливать и решать проблему гораздо раньше, говнокодеры запихивали её в МОЖЕТБЫТЬ в надежде, что её решит кто-то другой.

                От языка это не зависит, говно пишется везде.
                Ответить
                • Не аргумент вообще. Запрети >>= и аналоги, и запили свою филигранную обработку ошибок на вложенных case'ах. Но и тогда maybe всё равно не даст обосраться, в отличии от null'а.
                  Ответить
                  • Чем больше бубликов мы съедаем, тем больше дырок от бубликов витает вокруг нас
                    Ответить
                  • > Но и тогда maybe всё равно не даст обосраться
                    Да ты уже обосрался, когда допустил возможность передачи отсутствующего значения в место, где его быть не должно. Если единственный действительный подход при отсутствии значения — записать это в лог и упасть, это знак, что здесь никаких опциональных значений не нужно.
                    Ответить
                    • > Да ты уже обосрался, когда допустил возможность передачи отсутствующего значения в место, где его быть не должно

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

                        Туда, где водятся слоны и бегемоты,
                        Орангутаны и другие чудеса,
                        Летают раз в неделю самолёты,
                        Потом плывут неделю пароходы,
                        Потом идут неделю вездеходы,
                        А пони довезёт за полчаса.
                        Ответить
                      • Я где-то писал, что опциональные типы не нужны как класс?
                        Есть места, в которых действительно могут отсутствовать данные. Но также есть места в которых данные должны быть. И это задача кода на предыдущем уровне разобраться с данными, заменить отсутствующие на какое-либо значение по умолчанию или высрать ошибку. И простой проброс опционального значения — проёб программиста.
                        Да, если у тебя в языке все типы nullable, то ничего не поделать и вставить проверку типа if(!param) goto error; тебе придётся. Но если есть возможность на уровне системы типов указать, что здесь данные должны быть, это нужно сделать.
                        Ответить
                        • > И простой проброс опционального значения — проёб программиста.

                          Никакого "простого проброса" в нормальном языке быть не может, т.к. `Maybe a' туда где требуется `a' тебе система типов просунуть не даст.

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

                          Т.е. как ведёт себя примерно каждая первая функция? Приведи реальный пример функции, которая от "предыдущего уровня" берёт как аргумент Maybe.
                          Ответить
                          • Меня зацепил сериал, потому что как только ты привыкаешь к главному герою, его тут же убивают
                            Ответить
                        • > Я где-то писал, что опциональные типы не нужны как класс?

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

                          Ты либо не сечёшь как работает Maybe в функциональных языках, которые не напел по телефону Рабинович (они таки да, не дадут тебе передать `Maybe a' туда, где требуется `a'), либо утверждаешь именно это.
                          Ответить
                          • Я тут вижу взаимное недопонимание.

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

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

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


                              Я утверждаю, что всё преимущество статической типизации опытный говнокодер может свести на нет, попросту используя Object/void*/any абсолютно во всех определениях функций вместо просто значений.
                              Ответить
                              • Я утверждаю, что всё преимущество формальных доказательств опытный говнокодер может свести на нет, попросту используя Admitted абсолютно во всех теоремах вместо пруфов.
                                Ответить
                • оброботкаошибок это вообще самое сложное, что есть в програмировании

                  почти никто не умеет, иначе у нас не было бы этих чудесных "Invalid handle", "unknown error" и прочих 0x8000100500
                  Ответить
                • Сорвешенно не понятно почему вместо нормальной обработки ошибок ее нужно завернуть в опшинал.

                  Если человек пишет (псевдокод)
                  fun readFile(file:File): String {
                  if (!file.readable()) {
                    return null
                  }
                    return file.read()
                  }

                  то человек просто говноед, ослов ебавший, и наличие/отсутствие nullable тут не виновато совсем.
                  Ответить
                  • define "нормальной обработки ошибок"
                    Ответить
                    • Это вопрос к email protected, он написал

                      > вместо нормального планирования и обнаружения ошибок в нужных местах, в


                      Но обычно нормальная обработка ошибок это:
                      * попытка исправить то, что можно исправить
                      * вывод информации пользователю на нужном уровне абстракции со всем нужным контекстом.

                      Пример хорошей обработки ошибок:
                      [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)


                      Пример хуёвой обработки ошибок:
                      https://i.ytimg.com/vi/hc4NSiardOA/hqdefault.jpg
                      Ответить
                      • > Пример хорошей обработки ошибок:

                        Нахрен мне логировать алёрт в ситуациях, где я, допустим, ожидаю, что файла нет? К примеру, если конфы нет в `~/.config/pituh.conf', но есть в `/etc/pituh.conf', зачем функции readFile орать "пожар!!" ?

                        readFile не знает, является ли отсутствие файла ошибкой или нет. Есть ситуации, где наличие файла является пиздец какой ошибкой, например у меня был проект, где оверрайд leader election делался через специальный файл, и когда программа этот файл видела, она орала алярмами.
                        Ответить
                        • Если функция готова к тому, что файла нет, то отсутствие его не есть ошибка.

                          Но ты всё равно должен проверить, что файла именно нет, а не нет например прав.

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

                            И это всё равно будет говном:
                            1. кривыми selinux политиками можно запретить читать файл так, что is_readable при этом вернёт тебе true. (Реальный случай)
                            2. Права на файл могут измениться в интервале между проверкой и чтением, если ты в многозадачной ОС.

                            Нет серебряной пули.
                            Ответить
                            • Это будет, однако, меньшим говном, чем просто вернуть null
                              Ответить
                              • Если бы ты привёл более реальный пример (вроде wrapLogFile или readConfigFile), то можно было бы о чём-то говорить, а так я тебе 100 примеров придумаю, где имеет смысл возвращать None и не срать в логи.
                                Ответить
                                • Я привел пример обработки ошибки. Ты зачем-то приплел кейсы, когда ошибки нет
                                  Ответить
                                  • > Я привел пример обработки ошибки.
                                    Из названия `readFile' это никак не следует.
                                    Ответить
                        • >readFile не знает, является ли отсутствие файла ошибкой или нет.

                          Так не бывает. В контракте функции должно быть прописано, как она себя ведет в случае отсутствия файла.

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

                            См. два примера выше. Если readFile — библиотечная функция, откуда ей знать, что вышестоящая логика ожидает?
                            Ответить
                            • В последнее время среди мужского населения, и не только, стало модным носить бороду
                              Ответить
                            • Может я пилю файловый менеджер с превьюшками типа ranger. Он вполне может столкнуться с ситуацией, где у него нет прав прочитать файл, чтобы сгенерить превьюшку. Зачем ему ошибками при этом срать?
                              Ответить
                            • Если это библиотечная функция, то на ее уровне абстракции отсутствие файла является ошибкой.

                              На более нижнем уровне мы генерируем ошибку, на более высоком уровне (где отсутствие файла уже не является ошибкой) мы эту ошибку ловим, и строим по ней логику.

                              На уровне работы с памятью отсутствие страницы в памяти является fault, а на уровне работы виртуальной памяти -- нет, потому что можно загрузить страницу. Точно так же и тут.

                              Хуевые обработки ошибок либо теряют часть важной информации, либо выводят ее не на том уровне абстракции.

                              Например я пытаюсь запустить игрушку, а мне пишут "нет прав доступа к ключу реестра" или "invalid handle".
                              Что мне делать с этой информацией?
                              Ответить
                              • > На более нижнем уровне мы генерируем ошибку, на более высоком уровне (где отсутствие файла уже не является ошибкой) мы эту ошибку ловим, и строим по ней логику.

                                Поздравляю, теперь у тебя контракт никак не выражен в сигнатуре функции* и тайпчекер его не проверит.
                                ...Теперь допустим, что у меня в языке нет исключений, или я в гугле, где они запрещены.
                                * Checked exceptions есть далеко не везде.
                                Ответить
                                • >...Теперь допустим, что у меня в языке нет исключений, или я в гугле, где они запрещены.


                                  Исключения в C++ всё равно не особо бы тут помогли, потому что их можно забыть поймать.

                                  Checked Excpetioons в джаве помогли бы, но очень сильно засрали бы код.

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

                                  Условный пример из котлина и кастомного класса Result
                                  fun readFile(file:File): Result<String, Error>
                                  ///
                                  when (val result = readFile(file)) { //паттерн матчинг же
                                    is Result.Error -> /*тут result у нас типа Error*/
                                    is Result.Success -> /*тут result у нас типа String*/
                                  }

                                  Ну вероятно нужен еще сахар типа
                                  result.getSuccessOrNull()
                                  Ответить
                                  • Опять спорные утверждения. Создать Error — это оверхед, и в ситуациях, где он не нужен, по-царски таки возвращать null, а не срать термами в кучу.
                                    В общем, догматизм я вижу в этом треде. В духе: Дейкстра сказал, что goto — говно! Поэтому мы для выхода из вложенного цикла сделаем специальную переменную isVyhod, и будем её проверять! Так верно!
                                    Разные фичи надо использовать по обстоятельствам, вот и вся премудрость.
                                    Ответить
                                    • Катайтесь на зимних видах спорта!
                                      Ответить
                                    • Нет ничего плохого в возвращении null, при условии что

                                      * тебе не нужно явно вернуть ошибку, а хватит нула
                                      * у тебя язык с null safety, и ты можешь заставить клиента проверить, что там не нул
                                      Ответить
                                  • > Checked Excpetioons в джаве помогли бы, но очень сильно засрали бы код.
                                    Checked Exception это та ещё хуйня, потому что даже если ты знаешь, что какого-то исключения быть не может, потому что ты фильтруешь входные данные, ты всё равно должен его проверить.
                                    Ответить
                                    • если функция позволяет проверять аргументы, то зачем она кидает checked?
                                      Ответить
                                    • >даже если ты знаешь, что какого-то исключения быть не может, потому что ты фильтруешь входные данные

                                      Если функция позволяет фильтровать данные, то нахуя она кидает checked exception?

                                      Наличие файла ты не можешь проверить (он может удалиться в момент запуска функции) а например что число больше ноля -- можешь, и тут checked exceptions не нужен.

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

                                      void kakasha() throw PiskaException
                                      // 
                                      
                                      kakashka() ignore  PiskaException //теперь она превратится в RuntimeException и упадет в рантайме
                                      Ответить
                                • >Поздравляю, теперь у тебя контракт никак не выражен в сигнатуре функции* и тайпчекер его не проверит.

                                  ээ, а раньше он как был выражен?

                                  Если у тебя в языке нет checked exceptions и нет аналогов Maybe с паттрн матчингом, то ты в жопе: никак ты не выразишь статически что у тебя может быть ошибка. Никак не заставишь пользователя ее проверить.

                                  Ну есть еще всякие костылики вроде out reference в C#
                                  Ответить
                      • Под нормальной я подразумевал обнаружение и обработку в момент, когда у тебя есть контекст для обнаружения факта ошибки и её исправления/минимизации эффекта.
                        Пример, в роли nullable значения выступает питух, в роли нулла — NaN. В программе есть кусок который можно поделить на следующие части:
                        1) Выдирание данных
                        2) Обработка и приведение данных в нужный формат
                        3) Данные запускаются в числодробилку
                        4) Полученный результат используется далее

                        В (4) в оказывается NaN, что приводит к проблемам. Сейчас проблему решать поздно. Мы можем упасть — нехороший вариант, потому что проблема возникает регулярно. Исправить её и проигнорировать неправильные значения мы не можем — во-первых, неизвестно, что использовать вместо плохих данных, во-вторых, если в данных NaN, то это надолго

                        Из (3) выходит NaN, потому что NaN пришёл. Это функция с хорошо определённым поведением, используемая в нескольких местах. Странно его менять ради заделывания дыры, да и непонятно, на что менять плохие значения

                        Исток NaN в (2) — в процессе подготовки данных появлялось отрицательное число, из которого брался то ли корень, то ли логарифм. Так случалось, потому что из (1) пришли данные, выходящие за допустимый в данном случае диапазон

                        В (1) ловить эту проблему не стоит — это прослойка, передающая данные из одного места в другое. Заставлять её знать откуда, что и куда она передаёт — ненужное усложнение

                        Решением будет ограничение данных положенным диапазоном в (2), и лог о выходе данных за границы, чтобы их исправить в оригинальном источнике данных

                        Тут питух — в нём NaN обычно подкрадывается незаметно.
                        Если вместо него в данном случае был бы nullable тип, то при написании программы следовало заметить, что в (4) (и, соответственно, (3) ) значение безусловно должно быть, значит, что при передаче из (2) следует проверить на не-нулл и заменить на значение по-умолчанию в противном случае. Также (2) ожидает, что данные будут удовлетворять определённым условиям, поэтому нужно их проверить на соответствие
                        Ответить
                        • > Под нормальной я подразумевал обнаружение и обработку в момент, когда у тебя есть контекст для обнаружения факта ошибки и её исправления/минимизации эффекта.
                          ...
                          > Решением будет ограничение данных положенным диапазоном в (2), и лог о выходе данных за границы, чтобы их исправить в оригинальном источнике данных


                          Если сигнатура функции 3 требует значение типа `a'*, а не `Maybe a' или `Either Error a', то система типов тебя заставит провести проверку ошибок в 2, что и требовалось доказать.

                          * Или если ты крутой Coq-ушок, то можно потребовать аж что-нибудь вроде {a | Predicate a}.
                          Ответить
                          • Хотя даже кокушком можно не быть.

                            -opaque checked_data() :: {checked, data()}.
                            
                            -spec validate(data()) -> checked_data(). %% Нужно вызвать перед запуском бизнес-логики, иначе типы не сойдутся
                            ...
                            
                            -spec business_logic(checked_data()) -> result().
                            ...
                            Ответить
                          • В (3) отсутствие значения — это может быть нормально в общем случае.
                            (3) это маппинг [maybe a, maybe b, maybe c] → [maybe x, maybe y, maybe z], где при отсутствии а, отсутствуют х и у, при отсутствии б, отсутствуют у и z, при отсутствии c отсутствуют z и х. Используется не только здесь, но и в других местах, где такое поведение — ожидаемо.
                            (1) это функция, возвращающая maybe, потому что запрошенного значения может и не быть.

                            И говнокодер может это maybe не обрабатывая передать дальше в (3), откуда оно попадёт в (4), потому что так у него в коде ошибок нет, заниматься ими придётся кому-нибудь дальше, а в случае чего можно свалить всё на приходящие данные.
                            Ответить
                            • > (3) это маппинг [maybe a, maybe b, maybe c] → [maybe x, maybe y, maybe z], где при отсутствии а, отсутствуют х и у, при отсутствии б, отсутствуют у и z, при отсутствии c отсутствуют z и х. Используется не только здесь, но и в других местах, где такое поведение — ожидаемо.

                              Вот это пиздец, конечно. Сделай три разных чистых функции:

                              do1(b, c) -> z.
                              do2(a, c) -> x.
                              do3(a,b,c) -> {x, y, z}.

                              И небольшой враппер, который их запускает и переводит maybe в "certainly" и обратно.
                              Ответить
          • Фонарик можно днём заряжать, а ночью пользоваться. А вот нахуй нужен optional в Jawa (как и в целом сама Jawa) - я не знаю.
            Ответить
            • Чтобы у тебя было больше вариантов: функция может кинуть исключение, вернуть пустой optional, вернуть null, или наконец вернуть значение.

              Кстати, а optional может хранить нулл?
              Ответить
              • Всё-таки нет, будет NPE при попытке его туда засунуть.
                Ответить
                • Как-то не энтерпрайзно (((
                  Ответить
                  • Частица, из которой появилась Вселенная, была настолько мала, что видно ее было очень плохо
                    Ответить
                • А вместо optional null вернуть можно?
                  Ответить
                  • Наверное да, обычный класс ведь...
                    Ответить
                  • try {
                        Optional<Bool> x = foo();
                        if (x == null) return "null";
                        if (!x.isPresent()) return "empty";
                        if (!x.get()) return "false";
                        return "true";
                    } catch (Exception e) {
                        return "exception";
                    }
                    Ответить
                    • Это неправильно. В таком коде должен возвращаться "error", а не "exception". Это важно!
                      Ответить
                      • Почему?
                        Ответить
                        • У тех, кто пишет такой код, приложение никогда не падает с «исключением», только с «ошибкой» без какого-либо уточнения контекста.
                          Ответить
                          • Улучшил
                            } catch (Exception e) {
                                if (e instanceof RuntimeException)
                                    return "exception";
                                return "error";
                            }
                            Ответить
                            • Давайте вообще писать блевотный код!
                              Чур я начинаю
                              String getData(Context context, Petuh petuh) {
                               if (context == null || petuh == null) return null;
                              Ответить
                              • String getData(Context context, Petuh petuh) {
                                 if (context == null || petuh == null) return null;
                                 Cursor cursor = petuh.get_data();
                                 String[] columnNames = new String[]{DbHelper.COLUMN_ID,DbHelper.COLUMN_PETUH};
                                 int[] to = new int[]{android.R.id.text1};
                                 CursorAdapter adapter = new SimpleCursorAdapter(context, android.R.layout.simple_list_item_1, cursor, columnNames, to, 0);
                                 return adapter.getItem(cursor.getPosition());
                                 }
                                }
                                Ответить
                                • Заебали со своей нейронкой

                                  Или это реальный код?
                                  Хрен отличишь..
                                  Ответить
                              • Я и не переставал
                                Ответить
      • Пусть нейросеть продолжит:
        public static Optional<Configuration> parseConfiguration(String encoded) {
            String[] chunks = encoded.split(";");
            if (chunks.length >= 4) {
              // огромная портянка всякой хуйни
              return Optional.of(parsed);
            }
            if (chunks.length < 4) {
              // все просто
              return Optional.empty();
            }
            try {
              String[] data = new String[] {
                chunks[0],
                chunks[1],
                chunks[2],
                chunks[3]
              };
              final boolean hasBeenParsed = boolean.valueOf(data[1]);
              if (hasBeenParsed) {
                final Configuration parsed = Configuration.parse(data[0], data[2], data[3]);
                   if (!hasBeenParsed && !parsed.deleted) {
                  parsed.deleted = true;
                }
                return Optional.of(parsed);
              }
            } catch (final ConfigurationParseException ex) {
              // вот ведь
              return Optional.of(Configuration.of(chunks[1], parsed, "", data[3], data[2], data[0]));
            }
            return Optional.empty();
          }
        
          public static Configuration parseConfiguration(String encoded) {
            Configuration parsed;
            try {
              parsed = Configuration.parse(encoded, "", "", "", "", "", "");
              parsed.deleted = false;
            } catch (ConfigurationParseException ex) {
              return Configuration.of(encoded, parsed, "", "", "", "", "");
            }
            return parsed;
          }
        
          private Configuration() {
          }
        }
        Ответить
      • Меня больше бесят такие уебаны:
        function foo() {
            if () {
                // код
                return koko;
            } else {
                // код
            }
        }
        Ответить
        • А меня такие:
          // код
          // код
          // ...
          // ещё больше кода
          Пиздец!
          Ответить
    • Компания ПРОМТ объявила о завершении бета-тестирования и начале продаж в России новой версии своих популярных систем машинного перевода, ранее продававшихся под именем STYLUS, а теперь получивших название PROMT98.

      Решение о присвоении продукту имени компании обусловлено желанием сконцентрировать усилия на продвижении одной торговой марки и связано с выходом компании ПРОМТ на мировой рынок. Напомним, что ранее продукция компании продавалась под именем Stylus как на российском, так и на мировом рынках. Развитие зарубежной дистрибуторской сети и увеличение объема продаж в разных странах потребовало целенаправленных действий по регистрации торговых марок, о чем не приходилось задумываться в 1991 году, при создании компании ПРОМТ. С 1998 года системы перевода будут продаваться на российском рынке под именем PROMT, на мировом - PROjectMT.

      Продукт PROMT98 реализует новый подход компании к организации документооборота на иностранных языках и представляет собой лингвистический офис, состоящий из трех основных приложений, каждое из которых предназначено для решения конкретной задачи, связанной с поиском или обработкой разнообразной информации:
      Ответить
    • На Android 5.1.1 обнаружил пакет под названием Рако́вина.
      Ответить
    • > Участникам сообщества Сайта запрещается публикация материалов, содержащих ненормативную лексику, а также материалы, запрещённые к публикации Законодательством Российской Федерации;
      Какой багор))
      Ответить
      • хуйня какая, блядь:) Прямо Майн Кампф. Кстати, дать ссылку на перевод?
        Ответить
    • __pycache__ в системном пакете (деб, рпм, хоть тгз) это вообще нормально?
      Ответить
      • лолшто? а .vimrc есть там?
        Ответить
      • Закоммить им Thumbs.db
        Ответить
      • Нет, но по-другому питон падает пытаясь создать там кеш и получая access denied... А без кеша он тупит. Или это только у второго такая хуйня была?
        Ответить
        • нахуя создавать кеш __там__?
          Ответить
          • ну по идее питон действительно должен иметь кеш под выполняющуюся хуйню (конкретный пример это aws-cli, которая будет вызвана еще миллиард раз)
            но естественно что он не может обычным юзером насрать кэшем где-либо кроме папки самого юзера
            поэтому с одной стороны пиздец, с другой а как еще, с третьей а кто вообще гарантирует что сгенерированный хуй знает где кэш будет работать на моей машине
            Ответить
            • Если все начнут скрупулезно соблюдать правила дорожного движения, то город встанет
              Ответить
            • > сгенерированный хуй знает где кэш будет работать на моей машине

              Вай нот? Там ведь просто байткод, а не что-то нативное. Лишь бы версия питона в пакетах совпала, что для системных пакетов не является особой проблемой.

              З.Ы. С другой стороны, мы знаем как в скриптушне относятся к совместимости. Т.е. версия питона должна совпадать как можно точнее.
              Ответить
              • ``.pyc`` файлы не обязаны быть совместимы между
                x86 и x64
                разными ОС
                минорными версиями
                Ответить
                • Да, но для разных ОС и архитектур у тебя обычно разные deb пакеты.

                  > минорными версиями

                  Тут главное обновить всё это вместе с питоном. И системный пакет, скорее всего, обновится синхронно с питоном. А вот на вручную установленном пакете эта проблема запросто может вылезти.
                  Ответить
                  • Бывают архитектурно независимые пакеты. Вроде если там в пакете тока .py файлы, то зачем они разные?

                    И вообще, ты меня обманул
                    pepe@koko:~$ dpkg -l python3-pip
                    Desired=Unknown/Install/Remove/Purge/Hold
                    | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
                    |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
                    ||/ Name           Version      Architecture Description
                    +++-==============-============-============-=================================
                    ii  python3-pip    20.3.4-4     all          Python package installer


                    видишь "all" ?
                    Ответить
                    • Ну значит им похуй на архитектуру и они байт в байт одинаковые? Не сишка же, чтобы от длины слова зависеть.
                      Ответить
                      • Конкретно там нет __pychae__, я вообще неебу где Итке его нашел, в каком пакете..

                        Но может ты и прав, что байткод pyc специфичен для версии питона, а не для его разрядности
                        Ответить
                        • Конкретно там может и нет, но если погрепать /usr в той же убунте, там всё ими засрано... Может быть отдельным пакетом ставится кеш?

                          З.Ы. Или просто из-за запуска под рутом он туда высрался...
                          Ответить
                          • Есть такая буква в этом слове
                            /usr/lib/python3/dist-packages/more_itertools/tests/__pycache__


                            Однако я не вижу ни одного пакета с этим говном внутри
                            $ dpkg-query --show -f '${Package}\n' | xargs dpkg -L | grep '__pycache__'
                            $

                            Так что вероятно питон сам насрал, может быть и правда из под рута. Во всяком случае прав писить в эту папку у рядового питуха нет
                            Ответить
                            • Может быть при установке их генерят на лету?
                              Ответить
                              • Вот это скорее всего. Я бы даже сказал почти наверняка так. Ща проверим
                                Ответить
                              • Ты угадал, разумеется.

                                Файл
                                `python3-distutils_3.9.2-1_all.deb`
                                $ cat postinst
                                #! /bin/sh
                                
                                set -e
                                
                                versions="3.9"
                                
                                case "$1" in
                                  configure)
                                    for v in $versions; do
                                      python=python$v
                                      [ -x /usr/bin/$python ] || continue
                                      files=$(dpkg -L python3-distutils | sed -n '/^\/usr\/lib\/'$python'\/.*\.py$/p')
                                      if [ -n "$files" ]; then
                                        /usr/bin/$python -E -S /usr/lib/$python/py_compile.py $files
                                        if grep -sq '^byte-compile[^#]*optimize' /etc/python/debian_config; then
                                          /usr/bin/$python -E -S -O /usr/lib/$python/py_compile.py $files
                                        fi
                                      else
                                        echo >&2 "$python: can't get files for byte-compilation"
                                      fi
                                    done
                                    if [ -n "$2" ] && dpkg --compare-versions $2 lt 3.7.2-3~; then
                                        find /usr/lib/python3.6/distutils -name __pycache__ | xargs -r rm -rf
                                        find /usr/lib/python3.6/distutils -empty -type d -delete || true
                                        find /usr/lib/python3.6 -maxdepth 0 -empty -type d -delete || true
                                    fi
                                    if [ -n "$2" ] && dpkg --compare-versions $2 lt 3.8.3-2~; then
                                        find /usr/lib/python3.7/distutils -name __pycache__ | xargs -r rm -rf
                                        find /usr/lib/python3.7/distutils -empty -type d -delete || true
                                        find /usr/lib/python3.7 -maxdepth 0 -empty -type d -delete || true
                                    fi
                                    if [ -n "$2" ] && dpkg --compare-versions $2 lt 3.9.1-2~; then
                                        find /usr/lib/python3.8/tkinter -name __pycache__ 2>/dev/null | xargs -r rm -rf
                                        find /usr/lib/python3.8/tkinter -empty -type d -delete 2>/dev/null || true
                                        find /usr/lib/python3.8 -maxdepth 0 -empty -type d -delete 2>/dev/null || true
                                    fi
                                esac
                                
                                
                                
                                exit 0


                                Так что компилирукется тупо в postinst.

                                Зацени ебаный костыль снизу про предыдущиеверсии.

                                Все таки дебиан говно и палочки малость
                                Ответить
                        • Эт из AUR, потому вообще и вопрос. Рандомом потыкал пару пакетов в дебиане и убунте, там такого нет. Но тогда опять возникает вопрос, не просирается ли производительность на ровном месте просто потому что питон не может покешировать код.
                          Ответить
                          • Интересно, а почему его не сделали просто в каком-нибудь ~/.cache глобально для всех скриптов? Ну там по хешу от исходника, к примеру.

                            И чистить легко было бы устаревшее и помойки рядом с каждым скриптом бы не создавалось.
                            Ответить
                            • а чистить как?
                              Ответить
                              • По времени если, к примеру, месяц не юзалось?
                                Ответить
                                • Такой хуйне нужно бы apt научить, точнее libdpkg
                                  Ответить
                            • > почему его не сделали просто в каком-нибудь ~/.cache глобально для всех скриптов?

                              @ питон
                              @ мыслить рационально

                              но вообще это тоже половинчатое решение, потому что системный пакет могут юзать сотни юзеров
                              Ответить
                              • Ну не делать же системный GAC, как у дотнета?
                                Ответить
                                • GAC все таки не для кеша, а ради этакого side-by-side чтобы решить проблему dll hell.

                                  И кстати он ее решает неплохо, а в питоне без virtualenv она не решена никак.
                                  Ответить
                                  • Чому он тогда называется global assembly cache?

                                    Видимо посчитали, что туда и обычные dll'ки нормально лягут, а не только assembly от дотнета.

                                    З.Ы. Или я путаю GAC и SxS?
                                    Ответить
                                    • Обычные .dllки лежат в WinSxS, и управляются неведомой ебаной хуйней по имени CBS.

                                      В GAC лежит дотнет вроде. Вообще словом "асембли" вроде майки назывовывают только дотнетовые сборки.

                                      Ложится ли в GAC то, что скачал нугет -- я не знаю. Возможно, там надо явно регазм (regasm) испытывать.

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

                            может, в домашней папке?
                            Ответить
                • даже ``.ру`` файлы не особо совместимы с версиями
                  прыщи, сер
                  Ответить
              • Да хоть потому что у меня кастомный допиленный интерпретатор, потому что я пирдяй и у всего есть фатальный недостаток, пока я его не перепирдилю
                Ответить
    • В «Твитторе» появились дизлайки. Теперь можно опустить рейтинг ответа на любой твит. Ответ, набравший больше всех дизлайков, будет отображаться ниже всех.
      Ответить
      • Лол, это ответ остальным социалкам, которые их выпиливают?
        Ответить
      • Нельзя дизлайкать человека. Это токсичный кибербуллинг. Человеку может понадобиться психотерапевт после этого.
        Ответить
        • Твиттер продался психотерапевтическому лобби.
          Ответить
          • Ты тоже
            Ответить
            • Въебала тебе минус.
              Ответить
              • Блядь, ты что делааешь, сука?

                У меня же теперь травма будед, гондон в юбке.
                Ответить
                • >гондон
                  гондонка! можно уважать прононс человека she/her??
                  Ответить
        • Лови пинус ъуесосина
          Ответить
          • И ты
            Ответить
          • эу, мамк твою ибаль! Ишак йопто
            Ответить
            • Я твой дом труба поставль, черепица положиль, жена в жопу засадиль... Ой.
              Ответить
              • Сударь, третьего дня мне довелось поколебать дымоход Вашего родового поместья
                Ответить
                • Дорогой Мартин Алексеевич! Парник на вашей даче я поставил...
                  Ответить
        • Но твиттор же не даёт дизлайкать человека. Он даёт только дизлайкнуть ответ. А ответ — не человек
          Ответить
          • > дизлайкать человека

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

          Это примерно как теневой бан, о котором узнаёшь задним числом, потому что тебя вдруг подозрительно прекращают кибербуллить.
          Ответить
          • Вообще надо автору твита об таких вещах оповещать. В личке в твитторе, на почту, СМС, и, на всякий случай, звонком ещё. В оповещении должен быть адрес, фотография и линки на социалочки даунвотившего. Если за неделю ты найдёшь, отпиздишь обидчика и скинешь фотки администрации твиттора, то даунвот отменяется. Иначе ты объявляешься терпилой и все твои твиты понижаются в рейтинге.

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

          https://www.theguardian.com/world/2022/feb/15/asian-boy-racially-abused-match-criticise-football-association-middlesex
          Ответить
          • 16 месяцев! 16, сука, месяцев у него горело, перед тем, как он решил насрать в прессу.
            Ответить
            • Дожидался пока мир достаточно полевеет
              Ответить
          • Я последнее время брезгую такими газетками, может потом как нибудь...

            https://cei.org/wp-content/uploads/2019/09/8-1340x1536.png
            Ответить
          • о класно... а я думаю кто тут гардиан читает... а вот же он...
            Ответить
      • Это новость явный фейк. Настоящий «Твиттер»‎ забустил бы такое на самый топ.
        Ответить
        • https://i.imgur.com/DqtKHsI.jpg
          Ответить
          • Я работаю безработным и иногда помогаю депутатам
            Ответить
          • ну очевидно же что иронизировал
            Ответить
            • А я всё думаю, для чего им эта кнопка. Боюсь, что она для тренировки их системы рекомендаций.

              Сначала у них были рекомендуемые пользователи («близкие по духу»).

              Теперь появились «темы» и «интересы». Предполагаю, что дизлайк нужен для чистки классификатора «тем» и «интересов».
              Ответить
              • А кнопка для скрытия юзера как на нгк у них есть?
                Ответить
                • Есть чёрный список, чтобы юзер не мог тебе писать и чтобы ты его не видел, и есть кнопка игнора (тогда ты не будешь видеть юзера, но юзер не узнает, что он у тебя в игноре).
                  Ответить
                  • А чёрный список публичен, в отличие от игнора?
                    Ответить
                    • Он узнает, что ты его внёс в ЧС, если попытается посмотреть твой профиль или поискать твои твиты.
                      Ответить
                  • Напоминает баян про историю СМСок.

                    Пизда с ушами: Я переименовала тебя в "солнышко". А я у тебя как называюсь?
                    Вы: Не скажу ))
                    Ответить
                    • Кстати, в Твиттере есть списки: публичные и приватные. Можно создать приватный список «Пёзды с ушами»...
                      Ответить
                      • Какой-то рай для эксгибициониста у вас там.
                        Ответить
                        • Я уже писал, что меня вносили в публичный список «Козломордые свинособаки» (т. е. я видел, куда меня внесли).
                          Ответить
                          • В идеале об этом ещё должны уведомить и поставить публичную отметку в профиле.
                            Ответить
                            • Achievement unlocked!
                              Ответить
                            • Кстати, есть традиция, когда узнаёшь, что тебя какой-то мудак внёс в чёрный список, публиковать скриншот с пруфом блокировки и комментарием типа «Лалка порвалась».

                              А ещё меряться количеством юзеров, которые тебя внесли в ЧС.
                              Ответить
                              • > меряться количеством юзеров, которые тебя внесли в ЧС

                                И публиковать их список?
                                Ответить
                                • Типа того.

                                  Есть ещё забава: если видишь, что какой-то мудак забанил комментатора за «неправильный» ответ, повторять тот же ответ с целью получить бан от мудака. В случае успешного попадания в ЧС радоваться хорошей компании.
                                  Ответить
                                  • Моё любимое - предлагать ахающим и заламывающим руки от российской несправедливости, а также спрашивающим что же можно сделать, чтобы прекратить весь этот ужас, сотрудникам РТ зайти в соседний кабинет
                                    Ответить
                                    • РТ — это вообще клоунада. Их российский и германский филиалы публикуют противоположные тезисы.
                                      Ответить
                                    • Чем тебе не нравится дефенестрация?
                                      Ответить
                                      • Теория Большого взрыва заключается в том, что мы все родились и умрем в результате большого взрыва
                                        Ответить
                                • Есть же список содомитов, коммунистов и прочих негрополконников, которые стиснув зубы гордятся, что их забанил сам Дональд Трамп.
                                  Ответить
                                  • > забанил сам Дональд Трамп

                                    Лично!

                                    Это была бы ачивка, конечно. Но что-то я сомневаюсь, что он всю ночь сидит за монитором и банит кого-то там в социалочках.
                                    Ответить
                                    • > Лично
                                      Похоже, что непривычный к болоту политиканского истеблишмента Трамп таки сам вёл свой твитор. Не задумывался в 2016, почему вдруг твитор вообще?
                                      Ответить
                              • > А ещё меряться количеством юзеров, которые тебя внесли в ЧС.

                                Можно было на ЛОРе. Выпилили (((
                                Ответить
                                • В Твиттере, увы, этот список нужно составлять вручную.

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

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

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

                                      А вот людей не банил никогда.
                                      Ответить
                                      • > А вот людей* не банил никогда.

                                        Робот не может причинить вред человеку* или своим бездействием допустить, чтобы человеку* был причинён вред.

                                        * Уняк -- не человек и сегодня ему предстоит скучная ночь.
                                        Ответить
                                      • > людей не банил никогда

                                        В 1967 у польского военного Рафала Гановича спросили: "каково это убивать людей?". На что он ответил: "понятия не имею, я только коммунистов убивал"
                                        Ответить
                                    • Твиттер все-таки площадка для публичного общения. Хочется приватности — создай страничку в социалочке, окукли её и общайся с кем хочешь.

                                      Вот на «говнокоде» практически никого не банят. Даже вореции и говноспамеров.
                                      Ответить
                                      • > Вот на «говнокоде» практически никого не банят. Даже вореции и говноспамеров.

                                        define ``банят''. В частном порядке тут все друг-друга ба-нят через ngk/adblock.
                                        Ответить
                                        • Не общаться/не смотреть/игнорировать кого-то это твой выбор и твоё право.
                                          Затыкать других на публичной площадке просто потому, что разошлись мнениями — не есть хорошо.
                                          Ответить
                                          • > Не общаться/не смотреть/игнорировать кого-то это твой выбор и твоё право.
                                            В моём понимании* это и есть "банить". На площадки с активными вахтёрами я и не хожу.
                                            * Да, оно сильно извращённое уютненьким
                                            Ответить
                                            • Кстати, в Твиттере есть и другое понимание слова «банить». Есть банды жалобщиков. Если на кого-нибудь пожалуются несколько сотен юзеров, его учётку могут заморозить.

                                              В 2014-м году банду жалобщиков сколотили украинские националисты. За «неправильный» твит можно было попасть в «рейтинг ватности» на сайте karatel.foss.org.ua, и тогда на тебя наваливались жалобщики. Администрация Твиттера плохо разбиралась в неанглоязычных твитах, поэтому жалобы обычно удовлетворялись, и терпила исчезал из Твиттера. Но можно было подать апелляцию, тогда был шанс вернуться.

                                              Году в 2018-м тактику украинских националистов переняли запутинцы. С этой поры за «неправильный» ответ появилась возможность получить жалобу и от тех, и от других.

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

                                              Надо ли говорить, что ни запутинцы, ни украинские националисты не были оригинальными? Банды жалобщиков начались с англоязычного Твиттера, где жертв помечали тегами #TangoDown и #OpAnaconda.
                                              Ответить
                                              • karatel
                                                Starting Dec 2014
                                                Web: karatel.brezblock.org.ua
                                                A twitter application, designed to automatically block the so called 'vatniks' (brainwashed persons) and 'Kremlin bots'

                                                Toolkit: redis, celery, django, mysql, openvpn, collectd, python, twython, git

                                                License: BrezBlock Proprietary


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

                                                Но причем тут collectd и openvpn? Почему не написать тогда bash, linux, там libc например?

                                                Если пишешь git, то надо редактор укзаывать тогда, не?
                                                Ответить
                                                • Да, неясно, зачем ему Redis.
                                                  Ответить
                                                  • Обычно редисом делают кеш.
                                                    https://docs.djangoproject.com/en/4.0/topics/cache/#redis

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

                                                  Фу. А зачем тогда вообще перечислять технологии?
                                                  Ответить
                                              • > В соцсети для безмозглого 120-байтного спама кто-то кидается какашками
                                                > Вот же курьёз!
                                                Ответить
                                                • Угу.

                                                  Мне на «Говнокоде» иногда 2к символов слишком мало. Например, когда в комментарии сру реальными примерами кода или ворециями, приходится сокращать ответ или разбивать его на несколько комментариев.
                                                  Ответить
                                                  • Ты просто не умеешь формулировать свою мысль в виде картинки или ссылки на говносокращалку урлов кратко.
                                                    Ответить
                                                    • Самое обидное, что неоновое гоатсе не помещается в 2к символов. Что мешало Парамуширу Симуширу взять лимит хотя бы 32к?
                                                      Ответить
                                                    • Я вижу фундаментальную проблему с этой платформой, что люди в совершенстве овладевшие умением формулировать мысли в 120 байтах или картинками, это умение потом несут в другие области.
                                                      Ответить
                                                      • Собака - это друг, который вас выслушает и промолчит
                                                        Ответить
                                                        • > промолчит
                                                          Сразу видно того, кто ни разу не слышал, как они гавкают.
                                                          В спальне с мягкой мебелью тоже могут быть отражения.
                                                          Ответить
                                                        • Тогда уж рыба в аквариуме. Она физически не может не промолчать.
                                                          Ответить
                                                      • >потом несут в другие области.

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

                                                #BanderaKaratel
                                                Ответить
                                        • Я на ngk периодически жму кнопку «Разбанить всё», потому что когда захожу с мобилки, иногда промахиваюсь и случайно кого-нибудь вношу в ЧС.

                                          Сейчас здесь флуда и спама практически нет. Тяжело было, когда боты посредством общей учётки хуза спамили ссылками.
                                          Ответить
                                      • Потом они спрашивают, почему я за «Говнокод». Да вот хотя бы поэтому.

                                        Да, окукливание — это всё-таки традиция «Одноклассников» и «Вконтактов». Там можно создавать совсем закрытые группы, в которые вход по инвайтам, или не совсем закрытые, из которых админ в любой момент может выкинуть любого участника в честь плохого настроения. И в итоге получается скука.
                                        Ответить
                          • > Козломордые
                            По всей вероятности ты просто ватник и кацап.
                            Ответить
                  • Нужен ещё «отъебись»-список, чтобы, если юзер решил тебе написать, ему от твоего имени будет отвечать нейронка, натренированная на твоих сообщениях.
                    Ответить
          • > увидели ответ, который не привносит в переписку ничего полезного?

            Они что, предлагают мне даунвотить любой увиденный твит?
            Ответить
            • Да! Не только ответ на твой твит, а вообще любой увиденный.
              Ответить
              • А что, так нельзя? Надо именно ответы на свои комменты минусовать?
                Ответить
                • С точки зрения человеческой эффективности многократно полезнее было бы отмечать только не-омерзительные комментарии
                  Человек кликал бы от силы два раза в погожий день
                  Это же твиттер, туда невозможно зайти и прокликать все бесполезные твиты, это сизифов труд
                  Ответить
      • > будет отображаться ниже всех

        Т.е. имеет смысл читать снизу?
        Ответить
        • У них ещё есть кнопка «Показать другие ответы» и «Показать скрытые ответы», куда их классификатор скидывает ответы находящихся в теневом бане (google: shadow ban) и ответы, классифицированные как спам.

          То есть иногда ещё есть смысл понажимать эти кнопки.
          Ответить
        • > имеет смысл читать
          Нет.
          Ответить
    • https://twitter.com/johnnulls/status/1493346507742875649?s=12
      Ответить
      • Кабан - это зверь такой, в лесу пугает народ
        Ответить
      • Именно поэтому я против «Питона» и других языков, в которых переносы строк необходимы.
        Ответить
        • from __future__ import braces


          Можно же на лямбдах и тренарниках хуярить
          Ответить
      • Я туда стикеры клею.
        Ответить
    • [Разбанить всё] [Чёрный список] [Порыться в говне] [Настройки] [Дампы] [Оффтопы]
      Ответить
    • Жизненно важная информация:

      https://pbs.twimg.com/media/FLsUNkfXMAAlDwd.jpg

      МАКСИМАЛЬНЫЙ РЕПОСТ!
      Ответить
      • Ты молодой и здоровый, поэтому занимайся спортом, и ты будешь ещe более молодым и здоровым
        Ответить
      • Подводная лодка что ли?
        Ответить
        • Откуда знаешь?

          Да, по шифру в правом верхнем углу «Щука»:
          https://ru.wikipedia.org/wiki/Подводные_лодки_проекта_671РТМ(К)_«Щука»
          Ответить
          • > откуда знаешь

            Ну в космосе вроде не выбрасывают за борт. А в остальных местах таких проблем с выравниванием давлений нету.
            Ответить
        • Кстати, интересно, что нидерландское слово «galjoen» восходило к испанскому и французскому «галеон» (оттуда же «галера») и первоначально означало лодку:

          https://en.wiktionary.org/wiki/galjoen

          А у нас оно стало эвфемизмом для личной кабинки.
          Ответить
          • Никогда не слышал, чтобы толчок, тубзик, тубзалет, ватерклазет, уголок отдохновения, сральник, или сортир называли "галеоном"
            Ответить
            • Гальюном его называют на судах.

              «oe» в нидерландском читается как наше «у», т. е. «galjoen» = «гальюн».
              Ответить
            • Это на мат-русском жаргоне. Когда-то на парусных суднах справа и слева от статуи под бушпритом делали стульчаки для прикорма рыбы чтобы при всех курсах, кроме левенгука относило ветром от палуб.
              Ответить
        • Бортовые клапана Тимуртаз перепутал: он открыл, конечно, но не те. Потом он тщательно закрыл крышку унитаза, встал на неё сверху и вдул в баллон гальюна сорок пять кило вместо двух: он подумал, что так быстрее будет. Поскольку «идти» баллону гальюна было некуда, а Тимуртаз все давил и давил, то баллон потужился-потужился, а потом труба по шву лопнула и содержимое баллона гальюна – двести килограммов смешных какашек – принялись сифонить в отсек, по дороге под давлением превращаясь в едучий туман. Наконец баллон облегченно вздохнул. Туман лениво затопил трюм. Тимуртаз, наблюдая по манометрам за процессом, решил, наконец, что все у него из баллона вышло, перекрыл воздух, спрыгнул с крышки унитаза и отправился в трюм, чтоб перекрыть бортовые клапана. При подходе к люку, ведущему в трюм, Тимуртаз что-то почувствовал, он подбежал к отверстию, встал на четвереньки, свесил туда голову и сказал только: «Вай, Аллах!»
          Прошло минут двадцать, за это время в центральном успели забыть напрочь, что у них когда-то продували гальюн. Туман, заполнив трюм по самые закоулки, заполнил затем нижнюю палубу и, нерешительно постояв перед трапом, задумчиво полез на среднюю, расположенную непосредственно под центральным постом.
          Центральный пребывал в святом неведении:
          – Что у нас с вентиляцией, дежурный?
          – Отключена, товарищ командир.
          – Включите, тянет откуда-то…
          Ответить
    • Пиздец. Эликсирщики хотят убить тарасоформатирование в моих проектах. Посоветуйте политкорректных матюков.
      Ответить
    • Как бессмысленно ваше существование... Вы словно амебы, словно воробушки, прыгающие на куче дерьма.
      Ответить
    • Сегодня на работе нашелся код, который добавляет лейблы к скорам, которые приходят из совсем другого сервиса. Почему-то другой сервис не считает нужным расставлять лейблы, хотя это бы имело смысл.

      Другой сервис присылает скоры просто списком. Поэтому каждому лейблу соответствует индекс. И почему-то в некоторых местах код должен получать лейбл по индексу, а где-то берут два стрима и делают им zip, создавая в процессе объединенную сущность. В общем, от апи потребовалось два вышеописанных метода: получить стрим (последовательность) лейблов и получить лейбл по индексу.

      Поэтому в классе со списком лейблов есть инициализирующий этот список код. То есть как список: это мапа. Мапа {Integer -> лейбл}. Нет, все Integer-ключи идут последовательно, дырок нет. Мапа нужна, чтобы обменивать лейбл на его индекс. Берется последовательность лейблов (в том порядке, в котором они идут; см. ниже, зачем), стандартным джавовским Stream API собирается в мапу.

      Это половина дела. Вторая половина - это получить все лейблы в том же порядке, в котором их присылает сторонний сервис.
      Поэтому код берет мапу из первого пункта и вызывает на ней .values().
      Но, как мы знаем, просто мапа имеет проблемы с ордерингом.
      Поэтому в первом пункте мапа создается не абы какая, а LinkedHashMap.
      Чтобы в соседнем методе получить список лейблов в нужном порядке.

      Даже идея положить этот список лейблов в метод №2, чтобы наоборот дергать его в методе №1 и не иметь проблем, никому в голову не пришла.

      Я как-то пропустил момент, когда здесь вместо просто не самого опрятного кода начал появляться пиздец.
      Ответить
      • Подожди, не правь. Скоро говнокод созреет, и его можно будет выложить и поправить.
        Ответить
      • Сегодня в кодовой базе обнаружилось целое семейство методов setGet{Qualifier}Price

        У полей get{Qualifier}Price, для которых существует этот сеттер, подписано что вообще-то это динамическое поле (что?) и должно быть методом.
        Ответить
        • > setGetQualifierPrice
          Это CAS?
          Ответить
          • class Foo {
            public:
                void setGetPrice(const std::function<double()>& f) {
                    getPrice = f;
                }
            private:
                std::function<double()> getPrice;
            };
            Как-то так, наверное, судя по описанию.
            Ответить
            • Какой мерзкий код, лол.

              Отдельный тебе лайк за цену в плавучке, конечно
              Ответить
              • Приведи реальный пример, где цены хранятся не в плавучке
                Ответить
                • Ответить
                • Если цены хранятся не в плавучке, они хранятся в строке...
                  Ответить
                  • В Delphi есть тип данных Currency — фиксированный питух с четырьмя десятичными знаками после запятой.
                    Ответить
                    • Испытания показали, что Currency хранится как целый 64-битный питух, но интерпретируется как значение, в 10 тысяч раз меньшее. Т. е. перед сохранением в Currency значение умножается на 10 тысяч и округляется до целого.
                      Ответить
                    • https://www.youtube.com/watch?v=Qtdl0fR1ewc
                      Ответить
                      • У нас в церковь в основном ходят те, кто готовится отдать Богу душу
                        Ответить
          • тут блядь чуваки заменяют хэшмап на три значения из стандартной билиотеки правильным и верным мапом из функциональной библиотеки vavr, какой CAS, тут пиздец что
            Ответить
            • А чем вавр лучше обычново мапа? Умеет в примитивы?
              Ответить
              • https://en.wikipedia.org/wiki/Hash_array_mapped_trie

                повторюсь, суют они туда меньше десяти ключей
                Ответить
    • https://i.postimg.cc/nr2Q6V84/Avoid-Becoming-a-Weeaboo-Step-1-Version-2.jpg
      Ответить
    • Боже, как стыдно (((
      Ответить
    • Ризюме
      https://pbs.twimg.com/media/FL3Vw1LXMB8sEa0?format=jpg&name=900x900
      Ответить
      • Сениор, не меньше
        Ответить
        • Когда родители вкладывают в детей, то они надеются, что им в старости что-то обломится
          Ответить
    • В Linux не работает Photoshop, а без него жизни нет. А еще в Windows 11 сделали кнопки по середине и саме красивые обои. В Linux есть точно такие же обои как в Windows 11? Нет. Может быть предложите их самим установить? То-то же. Даже пример с обоями показывает, что в Linux все требует допилки напильником и танцев с бубном. Так что все утверждения о возможности заменить Windows не выдерживают никакой критики.

      И попробуйте пакеты в Linux поставить без интернета. То-то же. Каждый раз когда вы скачиваете пакеты из репозитория за вами на самом деле следят, ведь IP известен, и корпорация, владеющая репозиторием, знает, что вы скачиваете и зачем.

      А в Windows один раз создаешь аккаунт и спокойно пользуешься зондом популярной ОС с не имеющими аналогов приложениями. Все необходимые приложения можно купить бесплатно на торрентах. Даже антивирус, который будет их проверять на вирусы. Никто не узнает, что вы их установили. Полная приватность! А где антивирусы для Linux? А вы говорите безопасность... безопасность...

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

      А еще карточка NVIDIA новая....
      Ответить
      • Слишком жирная отсылка к болгеносу
        Ответить
      • в Windows 11 мне не нравилось что панель задач нельзя вверх перенести. потом конечно через реестр переместил, но все равно отношение осталось хуевым.
        Ответить
      • >В Linux не работает Photoshop, а без него жизни нет.

        98% пользователей Фотошопа используют 0.98% его возможностей, и им за глаза хватит гимпа.

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

          З.Ы. Можно конечно pdf'ку скинуть вместо этого говна.
          Ответить
          • Если у тебя docx, и если ты реально ничего сложнее болда не юзаешь, то его вполне кто угодно откроет.

            Ну а если Office 97, то тут не обессудь
            Ответить
            • Даже в одной версии поля едут и т.п...
              Ответить
              • >поля
                Если ты начал форматированием заниматься, то да
                Ответить
                • Укушенный пчелами человек замечает, что в его организме происходят изменения к лучшему
                  Ответить
        • > -- а зачем?
          Ну, если бы «LibreOffice» не был таким кривым и уёбищным говном — действительно, было бы незачем.
          Ответить
          • Писать тексты можно в wordpad или в гугл докс
            Ответить
            • > wordpad
              А форматировать таблицы?

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

                Дык я ж начал с того, что многие используют ворд как текстовый редактор с выбором шрифта, а таблицы у них в excel.
                Ответить
                • Пустыня - это как бы тайга, только без деревьев
                  Ответить
                  • Под крылом самолёта о чем-то поет
                    Зелёное море тоски
                    Ответить
    • мы все пользуемся инфраструктурой xyz, но при этом xyz слишком плохо синхронизируется с ru, потому мы все сидим на ламповом ru
      Ответить
      • > мы все пользуемся инфраструктурой xyz

        Не надо говорить за всех.
        Ответить
        • мы сейчас в перекатном оффтопе сидим.
          Ответить
          • в оффтопном перекате.
            Ответить
          • Но как это связано? Перекатный петух совсем на другой инфраструктуре крутится, насколько я помню.
            Ответить
          • «Xyz» не имеет ко мне ни малейшего отношения. Кок!
            Ответить
            • Бесконечный сток имени Борманда: ГК, хуз.

              Исходники: https://github.com/gost-gk/ngk

              [Разбанить всё] [Чёрный список] [Порыться в говне] [Настройки] [Дампы] [Оффтопы]
              Ответить
              • Тут явно написано, что бесконечный сток имени Борманда состоит из ГК и хуз.
                Ответить
                • А на заборе явно написано, что на двору хранятся хуи.
                  Ответить
              • Бесконечный петух имени Борманда
                Ответить
              • > имени

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

            Первый перекатный бот постил под никами "3_14dar" и "syoma".
            Ответить
            • "IT оффтоп" и "политота" вроде были первыми номерными оффтопами?
              Ответить
            • > "3_14dar" и "syoma"
              Мастер повторного использования техники, специалист по производству вентиляторов из полимерных материалов.
              Ответить
              • Лучше веселый молочник, чем веселая молочница
                Ответить
              • Вентилятор вроде не его рук дело.

                https://govnokod.ru/24538#comment423431
                Ответить
                • Муж сам не размножается, но очень хорошо может этому поспособствовать
                  Ответить
    • https://twitter.com/turbojedi/status/1495048397405007876
      Ответить
      • turbojedigovna
        Ответить
      • Если ваша программа падает от O3, то, у вас там убе, и вы пидор
        или автор копулятора пидор
        Ответить
    • Через жабаскрипт можно получить локальный IP: https://github.com/diafygi/webrtc-ips
      Если у вас браузер поддерживает, то https://diafygi.github.io/webrtc-ips/
      Ответить
      • Очень ценно узнать, что ваш локальный IP ``192.168.1.30``
        Ответить
        • Как минимум, если у тебя 2 питуха под одним IP и с разными Local IP, то это 2 разных питуха.
          Ответить
          • а, это фингерпринтинг такой

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

      https://govnokod.ru/28049
      https://govnokod.xyz/_28049/
      Ответить
    • Зочем ви тавите??
      https://forums.swift.org/t/core-team-to-form-language-workgroup/55455/4
      Chris Lattner (inventor of Swift):
      To answer your question, the root cause of my decision to leave the core team is a toxic environment in the meetings themselves.
      Ответить
    • Зачем нужен junction если есть symlinkd на винде?
      Ответить
      • Не надо искать логики в таком дерьме, как "Windows"
        Ответить
        • Пока что получается вроде так, что симлинки лучше, бо реализованы нормально, а не как репарс поинты
          Ответить
          • Если протекла батарея - звоните в ТСЖ, они приезжают дня через два
            Ответить
            • ИДИ НАХУЙ СУКА Я ЗА ПРОТЕКШУЮ БАТАРЕЮ ЛЯМ ЗАПЛАТИЛ
              Ответить
              • Не отвечай уёбку.
                Ответить
                • И кобенационной платформой, чтобы наоборота на тебе передачи отсутствия файл могу и скинуть ответ или даже антивирусы для linux есть на втором узнать только ты все черный стек пишет псевдокод 136 6 1 86 7 . Да что, так нельзя дизлайкать человеческому пиздец что все равно на самого юзеров, которых вореционная лодки и ее и продукция позволяет фильтруешь видеоблоги. Особо совсем закрыл возможно днем методически нет. Заворачиваете и закона обязателя ее в 4 в оказывается натализационный тебе интересно, что не только я пилю файла является на это мапа? Умеется. Уже заметили, чтобы посрать процессе получить ложусь --ага, напримерно пятнадцать перекаты? Ой, сынок, то даунвотившего. Есть возникает регулярных место толпы выйдут обе легкие и обычно во всем заниматься в этом несут в другое поведение 932 85 31 2 не для .net. Важно! Почему в трюм. Тимуртаз, а вообще сахар типа лалка порвалась . А если ты может быть конкретный говн
                  И кобенационной платформой, чтобы наоборота на тебе передачи отсутствия файл могу и скинуть ответ или даже антивирусы для linux есть на втором узнать только ты все черный стек пишет псевдокод . Да что, так нельзя дизлайкать человеческому пиздец что 0 016 322 57 все равно на самого юзеров, которых вореционная лодки и ее и продукция позволяет фильтруешь видеоблоги. Особо совсем закрыл возможно днем методически нет. Заворачиваете и закона обязателя ее в 4 в оказывается натализационный тебе интересно, что не только я пилю файла является на это мапа? Умеется. Уже заметили, чтобы посрать процессе получить ложусь --ага, напримерно пятнадцать перекаты? Ой, сынок, то даунвотившего. Есть возникает регулярных место толпы выйдут обе легкие и 8 757 08 35 обычно во всем 8 3 60 заниматься в этом несут в другое поведение не для .net. Важно! Почему в трюм. Тимуртаз, а вообще сахар типа лалка порвалась . А если ты может быть конкретное говно#вореции
                  Ответить
              • А нехуй было солевую ставить.
                Ответить
      • > symlinkd

        systemd-symlinkd?
        Ответить
        • короче,

          В пинде есть symlink и symlinkd (симлинк на папку). Создается через CreateSymbolicLink
          Хуй знает как работает, думаю спец тип записи в MFT, как на юниксе (но может и просто файл)

          А есть junction, которая работает только для папки и костыль через reparse point.

          И то и другое можно сделать через mklink

          Пырчем силинки работают даже на SMB, а джанкшены нет
          Ответить
          • Япония - это гигантская страна, точнее, это маленький остров
            Ответить
          • Кажется, symlink и symlinkd появились только в Висте. В XP были только junctions.

            По этой причине некоторое прыщеговно вроде «git» не торопится в «Windows» поддерживать симлинки. Координаторы проекта боятся ущемить права Сёмы, поэтому решили сделать так, чтобы все виндобляди страдали одинаково.
            Ответить
            • Тогда я могу насрать на junk шены, так?
              Ответить
              • Сейчас сходу нагуглил:

                «Ядро Windows поддерживает следующие виды ссылок:
                • Hard Links — жёсткие ссылки, как в *nix. Доступны начиная с Windows NT4.
                • Junction Points — аналог символических ссылок. Доступен начиная с Windows 2000 (NTFS 5).
                • Symbolic Links — символьные ссылки. Доступны начиная с Windows Vista.»

                Т. е. в 2022-м году создавать junctions не нужно, за исключением случаев, когда собираешься носитель пихать в двухтонник или в XP (вдруг у тебя есть девайс типа банкомата или станка с ЧПУ или ещё что-то, относящееся к embedded, ну или компьютер в сельской школе).
                Ответить
                • Долбоёбы из pnpm создают перкрестки, а почему создают -- не говорят. Пишут просто "со ссылками есть проблемы, потому мы используем джанкшены"

                  Думаю, это как в эксперементе с обезъянами и током: никто точно не знает что за проблемы, просто им старший товарищ сказал, и они повторяют

                  >Ядро
                  на всякий случай напомню, что ядро ничего не знает про ссылки ntfs, и даже executive не знает: он оперирует объектами, за которые отвечает object manager.

                  ``\.\\HardDiskVolume1\porno\baba.mp4`` это ссылка на \Device\HardDiskVolume1, а там уже его парсит драйвер вольюмов, а дальше все попадает в драйвер FS, который уже может в ссылки
                  Ответить
                  • Я догадываюсь, какая может быть проблема. Есть софт, работающий с директориями напрямую (например, выполняющий рекурсивный обход в поисках какого-то дерьма). В этом случае нужно ссылки отличать от реальных путей (например, чтобы отлавливать циклы).

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

                    Вероятно, джанкшены создают, чтобы такой старый софт не нанякнулся.
                    Ответить
                    • наверное да

                      Интиресно, что жабий NIO умеет отличать симлинки, а джанкшены нет)

                      Зачем вообще этот кал сделали? Почему блядь сразу было не завести нормальные симлинки как в юниксе? Не очевидно было, что они понадобсятс?
                      Ответить
                      • Вообще странно, что костыль в виде джанкшенс появился в 2000-м году, а симлинки — в 2006-м (если считать OEM-выпуск).

                        Признали нужность симлинков через шесть лет после первого конфликта, чем наплодили несовместимостей.
                        Ответить
                        • Windows 2000 появилось в 1999-м году.
                          Почему сразу тогда было не сделать не понятн
                          Ответить
                        • там щее прикол в том, что уитилты не было для этого в операционке
                          она была то ли в суппорт тулс, то ли в ресурс кит..
                          Ответить
                          • В Винде всё полезное либо в ресурс китс (которые не сразу найдёшь, где скачать), либо в Sysinternals (которые MS приватизировал у одного чувака).
                            Ответить
                            • Ресурс кит чуть ли не платный был. Были еще support tools прямо на диске с w2k. И там и там были полезные тулы, некоторые vbs и даже perl скрипты, всякое говно для AD итд.

                              Sysinternals тогда были отдельными, Марк еще не работал в MS, да.
                              Некоторые тулы (например psexec для запуска от Local System) до сих пор must have у виндоадминов
                              Ответить
            • Там ещё есть проблема с привилегиями, вот и не торопятся.
              Ответить
    • мы кораллы и вы кораллы, в кустаэх вас ждёт маньяк
      Ответить
      • Мы медузы мы медузы
        Мы похожи на арбузы

        Нужно ждать, когда прилетят ножницы
        Ответить
      • Сон


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

      It is a good idea to use a large array, because it is hard to predict how many processes there will be at the time you call EnumProcesses.

      There is no indication given when the buffer is too small to store all process identifiers. T
      Ответить
      • > no indication given

        Ну как, если не весь массив заполнен -- значит хватило. Иначе надо взять побольше.
        Ответить
        • Он там принимает указатель на DWORD, и заполняет его количеством байт.
          Надо типа так
          //
          	DWORD processes[1024], numOfProcesses;
          	if (!EnumProcesses(processes, sizeof(processes), &numOfProcesses))
          	{
          		Error();
          	}
          	for (DWORD i = 0; i < (numOfProcesses / sizeof(DWORD)); i++)
          	{
          		PrintProcess(processes[i]);
          	}


          Но на самом деле нужно нужно смотреть на значение, и если оно равно массиву -- значить вероятно есть еще говно, И нужно снова вызывать функцию, до тех пор, пока не получишь там ноль.
          Ответить
      • Во времена 16-битных программ большими называли массивы больше 64К. Сейчас большими называют массивы больше 4Г.
        Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • #на правах оффтопа
      Ответить
    • [color=whirw]p4Be4De7Cl8Er3Oe6Ux5Mp4Kt5At0Gd8Sh1Id6Od 3Cp6Zn3He8Qk7Jd9Yt6Lo4Zb6Rr9Ly1Eq6Of4Dn4 Cl6Jd4Vu0Or1Wy7Qd6Kv[/color]
      Ответить
    • [color=whirw]x5Vv8Fm8Go3Qj5Er2Ze1Bo1Tu2Rf2Qn2Gr4Dc4Jr 4Iq2Pq5Fn0On1Lx0Ub9Jc2Gb1Pg9Lg3Xx9Al4Ob8 Jh7Lz2Mm2Wq0Np0Ty6Mr[/color]
      Ответить

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