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

    0

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

    #32: https://govnokod.ru/26440 https://govnokod.xyz/_26440
    #33: https://govnokod.ru/26449 https://govnokod.xyz/_26449
    #34: https://govnokod.ru/26456 https://govnokod.xyz/_26456
    #35: https://govnokod.ru/26463 https://govnokod.xyz/_26463
    #36: https://govnokod.ru/26508 https://govnokod.xyz/_26508
    #37: https://govnokod.ru/26524 https://govnokod.xyz/_26524
    #38: https://govnokod.ru/26539 https://govnokod.xyz/_26539
    #39: https://govnokod.ru/26556 https://govnokod.xyz/_26556
    #40: https://govnokod.ru/26568 https://govnokod.xyz/_26568
    #41: https://govnokod.ru/26589 https://govnokod.xyz/_26589
    #42: https://govnokod.ru/26600 https://govnokod.xyz/_26600
    #43: https://govnokod.ru/26604 https://govnokod.xyz/_26604
    #44: https://govnokod.ru/26627 https://govnokod.xyz/_26627
    #45: https://govnokod.ru/26635 https://govnokod.xyz/_26635
    #46: (vanished) https://govnokod.xyz/_26646
    #46: (vanished) https://govnokod.xyz/_26654
    #47: https://govnokod.ru/26671 https://govnokod.xyz/_26671
    #48: https://govnokod.ru/26707 https://govnokod.xyz/_26707
    #49: https://govnokod.ru/26750 https://govnokod.xyz/_26750
    #49: https://govnokod.ru/26776 https://govnokod.xyz/_26776
    #50: https://govnokod.ru/26804 https://govnokod.xyz/_26804
    #51: https://govnokod.ru/26809 https://govnokod.xyz/_26809
    #52: https://govnokod.ru/26817 https://govnokod.xyz/_26817
    #53: https://govnokod.ru/26833 https://govnokod.xyz/_26833
    #54: https://govnokod.ru/26840 https://govnokod.xyz/_26840
    #55: https://govnokod.ru/26844 https://govnokod.xyz/_26844
    #56: https://govnokod.ru/26862 https://govnokod.xyz/_26862
    #57: https://govnokod.ru/26890 https://govnokod.xyz/_26890
    #58: https://govnokod.ru/26916 https://govnokod.xyz/_26916
    #59: https://govnokod.ru/26934 https://govnokod.xyz/_26934

    Запостил: nepeKamHblu_nemyx, 14 Сентября 2020

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

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

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

      Индекс оффтопов: https://index.gcode.space/.
      Зеркала Говнокода и полезные ресурсы:
      * https://govnokod.xyz/ (альтернативный Говнокод)
      * https://gcode.space/ (read-only зеркало Говнокода)
      * @GovnokodBot в «Telegram»
      * https://vorec.space/ (глоссарий Говнокода)
      Ответить
    • Перекатный петух не спит.
      Ответить
    • https://sun9-41.userapi.com/xxFw_JThBxM0VWB-LQ7SOMolZ5LExXN23fwG_g/vp0SjrEbW7c.jpg
      Ответить
      • да тащемто любой современный мощный IDE: что VisualStudio, что Intellij (Android Studio сделана на Intellij)
        Ответить
    • https://imgur.com/3EcN4Bk
      Ответить
      • NOOOOOOOO
        Ответить
      • Я надеялся что там девушка с тиндера
        Ответить
      • ахахахахахах
        ща пол интернета варнингами засрет
        Ответить
        • а сейчас как-то иначе?
          Ответить
        • Для этого нужно «PHP» везде обновить.
          Ответить
          • ну админ обновит на шаред хостинге йи пиздец
            Ответить
            • На шаред хостинге есть выбор какой "PHP" использовать. Или он минорную версию имеет право без предупреждения обновлять?
              Ответить
              • минроную может и может
                мажорную вряд-ли конечно, если он не идиот, но я не уверен точно
                Ответить
                • Шаред хостинг может обновить 5.3.19 до 5.3.20 или 7.3.21 до 7.3.22.

                  5.3 до 5.4 или 7.3 до 7.4 никто обновлять не будет, потому что половина сайтов вообще работать не будет. Админы не настолько дураки.
                  Ответить
                • А в «С++» можно менять обе версии!
                  Ответить
                  • Приведи реальный пример шаред хостинга с «C++».
                    Ответить
                    • Между прочим.
                      Ответить
                    • показать все, что скрытоvanished
                      Ответить
                      • Докажи, что к этому утверждению можно применять квантор общности.
                        Ответить
                        • бля будуъ

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

                            Если cgi-bin нет в пределах видимости, то что делать? Попробовать позвать функцию system из «PHP»?
                            Ответить
    • https://www.youtube.com/watch?v=W_WH2H9hohw Искуственный идиот за работой
      Ответить
      • блять после твоей ссылки мне этот хуй начал в рекомендацях появляться я уже наверное 7 его видео посмотрел а они длинные пиздец
        Ответить
    • https://sun9-73.userapi.com/RK1TeRoqZI9TO9w7QAbtY0xrWJkC8TLEb-e6_Q/b7pvYkVwRgA.jpg
      Ответить
    • https://habr.com/ru/post/515550/

      Какой багор.
      Ответить
      • показать все, что скрытоvanished
        Ответить
        • Ну как, подписался?
          Ответить
          • Что-то долго не отвечает.
            Ответить
            • Я уже волнуюсь за него. Вдруг он всё-таки подписался Торвальдсом, его вычислили и отпиздили, и теперь он в реанимации?
              Ответить
        • всего-то делов

          подделать pgp
          Ответить
          • На самом деле не нужно ничего подделывать, скажем за это спасибо «Гитхабу».
            https://github.com/slavniyteo/upgraded-octo-funicular/commits/master (ссылка из статьи).
            Ответить
            • Ну а как они должны были это сделать? Многие же просто зеркало на гитхабе держат или мёржат коммиты у себя и потом заливают на гитхаб. Не заставлять же всех всё подряд сначала через гуйню регаться как контрибьютор.

              Ну и если я ядро форкнул - там реально есть коммиты торвальдса.
              Ответить
              • Добавить предупреждающий значок для неподписанных коммитов тех пользователей, которые себе в настройках добавили публичный ключ. «(!) Этот коммит не подписан, возможно, пользователь его не совершал».
                Ответить
                • Лучше тогда ссылки на профили убрать да и всё. Пусть будут только у тех, кто пушит. Они то проверены.
                  Ответить
                • > добавили публичный ключ

                  Ну вот добавил я ключ ради одного важного проекта. Мне теперь вообще всё подряд подписывать, даже в петпроджектах которые нахуй никому не сдались? Иначе я не я?

                  Имхо, надо просто людям вбивать с детства простую истину - нельзя доверять всему, что на заборе написано. Если нет явного пруфа.
                  Ответить
                  • «Гитхаб» может подтвердить твои коммиты безо всяких подписей, ему для этого достаточно сверить почту в коммите и почту того юзера, который этот коммит ему пушит. Проблема случается только тогда, когда ты с юзера с почтой [email protected] пушишь коммиты с почтой [email protected] Собственно, для этих ситуаций и нужна (сложные проблемы вроде миграции VCS не рассматриваем) подпись коммитов.

                    Сейчас же «Гитхаб» в том проекте пишет «[Торвальдс] Committed to this repository in the past month», что есть пиздёж. Пиздёж в UI — это плохо.
                    Ответить
                    • Кстати так ведь и скрытые емейлы спалить можно. Создать репу с тыщей участников. А гитхаб покажет их профили если они есть.
                      Ответить
                      • А 67 тысяч участников в репе этот ваш «Гитхаб» потянет?
                        Ответить
                      • Не уверен, кстати, что он со скрытой почтой будет палить емейл. Там же скрытным юзерам просто выдаётся фейковая почта вида «[email protected]» (или подобная), по которой «Гитхаб» и устанавливает авторство коммитов.
                        Ответить
                        • Ну чел с х-ра утверждает, что спалил.
                          Ответить
                          • Звучит как «чел с трибуны утверждает». Поэтому вопрос: зачем он залез на х-р?
                            Ответить
          • Дык зачем подделывать php, если ты можешь просто в конфиг любое мыло вписать и коммитить им?
            Ответить
            • я немного проебал

              имел в виду gpg. но всё равно все всё поняли, видимо

              я вот не вижу разницы на гитхабе в UI между коммитами реального Линуса и коммитами "Линуса". в чём тогда смысл gpg? или Линус им не пользуется?

              https://docs.github.com/en/github/authenticating-to-github/telling-git-about-your-signing-key
              Ответить
        • показать все, что скрытоvanished
          Ответить
        • Ну как, отпиздили?
          Ответить
    • https://sun1-94.userapi.com/xUTmeBI2hQWwf0DxRsvEvnWha9I6v1LYF5hLWA/Hq2fUn1y-RM.jpg
      Ответить
    • Не помню, было ли на «Говнокоде» или нет. Вакансия в Тюмени:
      https://tyumen.zarplata.ru/vacancy/card/132987921/Imitator_programmista?position=29
      Ответить
      • Если согласитесь сделать татуировку на видном месте, что тона вроде "Я - KDEраст и горжусь этим" дадим надбавку к окладу (накинем пару тысяч).
        Ответить
    • показать все, что скрытоvanished
      Ответить
      • в чистом андроиде есть гуглоклава которая это делает
        Ответить
        • показать все, что скрытоvanished
          Ответить
        • Проблема в том, что чистый «Андроид» бывает, пожалуй, только на планшетах. А на смартфонах каждый производитель старается впихнуть свою клаву и со своими дефолтными настройками.
          Ответить
          • Именно поэтому я пишу комент с гугл пикселя на котором чистый андроид
            Ответить
            • Регулярно забываю про эту марку...
              Ответить
              • Самая заебатая марка

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

                    но про софт ты прав: обновлять ios можно долго
                    Ответить
                    • все влагозащищенные телефоны не поддерживают замену батареи
                      Ответить
    • Вопрос к питонистам.

      Есть 2 пакета. В одном либа точена, во втором сосноль для неё дрочена. Как идиоматично из второго поюзать первый?
      Ответить
      • Guido views running scripts within a package as an anti-pattern.

        А, ну ок, т.е. так не делают.
        Ответить
        • показать все, что скрытоvanished
          Ответить
          • > на верхнем уровне

            Спасибо. Получается, что питон добавляет каталог с главным скриптом в path, поэтому абсолютные импорты работают только если он в корне проекта. А относительные импорты в главном скрипте в принципе никогда не работают (у главного скрипта в __name__ фигня).
            Ответить
            • абсолютные импорты всгеда считаются от sys.path.
              Если ты туда явно добавишь верхний уровень, то вероятно можешь и по полному импортировать, но это ебля

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

              Кстати, хочешь, чтобы консоль автоматически находилась, если установлена на интерпретатор или виртуалэнв?

              Используй
              https://packaging.python.org/guides/creating-and-discovering-plugins/
              Ответить
              • О, круто, т.е. он сам создаст враппер для моего скрипта во время установки пакета? И судя по доке тогда скрипт может быть не только в корне, с sys.path враппер сам разберётся.
                Ответить
                • Ты про "console_scripts" ?*

                  Я сам не пробовал, но судя по тому, что овердохуя пакетов на pypi имеет запускалку (virtualenv, django, flask, jupyter, pytest, to name few) и все они как-то на прыщах имеют sh с шебангом в нужный питон, а на винде .exe (ну вероятно импортирующие нужный .dll?) это работает.

                  *
                  https://python-packaging.readthedocs.io/en/latest/command-line-scripts.html

                  [quote]
                  Setuptools will generate a standalone script ‘shim’ which imports your module and calls the registered function.
                  [/quote]
                  Ответить
                  • А ты не это имел в виду под "консоль сама находилась"?
                    Ответить
                    • я имел ввиду API для поиска плагинов.

                      Типа ты можешь написать несколько консолей
                      * терминально/коснольную
                      * вебовскую например
                      * гуйную (ну тут 10050 фреймворков есть для этого)
                      * сетевую телнетную например

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

                      И я мог бы написать плагин с поддержкой еще одной консоли не трогая твой код
                      Ответить
                      • А, да не, у меня банальный коммандлайн интерфейс для либы. Регистрации в console_scripts должно хватить.

                        Но механика с плагинами прикольная, да.
                        Ответить
                        • на чем сделан интефейс? argparse? click?
                          Ответить
                          • Аргпарс. Про клик я знаю, но тащить либу ради пары аргументов влом.
                            Ответить
                            • ну в питоне это воще не проблема (у тебя и так ведь есть депенденсы?), но есть проблема идеологическая
                              http://xion.io/post/programming/python-dont-use-click.html
                              Ответить
                              • У меня своя идеологическая проблема - я не люблю цеплять сторонние либы ради мелочей, которые и так на десяток строчек.

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

                                  >хуйня
                                  ну да, примерно.

                                  Командлайн интерфейс надо продумывать, а не хуяк-хуяк, иначе будет по степени удобства как какойнить netsh или dism)
                                  Ответить
                                  • > интерфейс командной строки

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

                                      Это же Арминовская поделка, как и фласк: там тоже функции декораторами
                                      Ответить
      • показать все, что скрытоvanished
        Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
      • Бывало пару раз, но это всё хуйня, конечно
        Ответить
      • Мне лень, я слишком асоциален для этого.

        Туда же в основном катаются чтобы поболтать в перерывах и после конфы. А сами доклады можно и в записи посмотреть.
        Ответить
    • Вопрос попался на SO:

      Why is reading lines from stdin much slower in C++ than Python?

      (в 10 раз)

      Крестобляди соснули )))
      Ответить
    • Сайт ФСБ доступен только по HTTP без шифрования, по HTTPS нет связи.

      Для отправки оперативной информации они предлагают установить свой софт:
      https://i.imgur.com/ThSsTUM.png

      ФСБ не доверяет браузерному TLS?
      Ответить
      • показать все, что скрытоvanished
        Ответить
        • >> А зачем тебе сайт фсб?

          Хочу узнать, какие технологии они используют. Если они не доверяют HTTPS, это жжж неспроста. Вдруг нас наёбывают, что HTTPS надёжен, а на самом деле в нём есть дырка, через которую наш трафик спокойно слушают? Стали бы внедрять СОРМ, если бы через неё ничего нельзя было бы прослушать?
          Ответить
          • Эм, дык всё просто. Даже если с алгоритмами всё ок (а с ними, скорее всего, всё ок), то корень доверия во всех популярных осях и браузерах контролируется потенциальным противником. Поэтому зачем создавать иллюзию безопасности и вешать https?

            А насчёт СОРМа - ну список айпишек/доменов тоже полезная инфа, даже если без контента.
            Ответить
          • Дело не в прослушать, а в том, что ЦРУ может заставить американкую компанию CA выдать серт на левого чела, и потом спуфнуть сайт, и ты ему сольешь и карту укреплений советской
            Ответить
            • Кстати, а как сейчас узнать, оригинальный сайт ФСБ передо мной или спуфнутый?
              Ответить
              • А зачем?
                Ответить
                • Ладно, обобщим.

                  Как узнать, оригинальный сайт %SITENAME% передо мной или спуфнутый?
                  Ответить
                  • показать все, что скрытоvanished
                    Ответить
                  • Юзать https. При условии, что ты доверяешь центру сертификации, который выдал ему серт.
                    Ответить
                  • А вообще, за спуфанье гос ресурсов вроде можно присесть на бутылку.
                    Ответить
                    • Кстати, тут оказалось, что kremlin.ru тоже https принципиально не использует. Они тоже надеются на бутылку?
                      Ответить
                      • Да наверное. А какой вред тебе могут нанести эти сайты, если их спуфнут? Там же просто публичная инфа в рид-онли.

                        Это ж не банк и не говнокодик.
                        Ответить
                        • А спуфнутый говнокодик может навредить тем, что спиздят мой пороль?

                          Кстати, если заходишь в интернеты с публичного «Wi-Fi», который требует логина, то пока не залогинишься, он любые http-сайты редиректит на форму входа. Если я попытаюсь открыть kremlin.ru, а вместо него увижу форму входа провайдера, то можно настучать, что провайдер спуфнул госрерурс?
                          Ответить
                          • показать все, что скрытоvanished
                            Ответить
                            • хуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйняхуйня
                              Ответить
                              • Ня!
                                Ответить
                                • няняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняняня
                                  Ответить
                  • Попингуй и сравни TTFB до какого-нибудь лёгкого ресурса вроде фавиконки с пингом. Если первое меньше второго — покупай шапочку из фольги.
                    Ответить
      • А твой браузер поддерживает гостовые алгоритмы в тлс?

        Ебаная автозамена в Андроеде
        Ответить
      • какой же ужасный шрифт
        Ответить
        • да что ты знаешь об ужасных шрифтах?
          https://4.bp.blogspot.com/-43tRbbXPc0g/UpOQhFe31yI/AAAAAAAAC9w/Dt6ZdeO0_Nw/s1600/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0% B9%D0%BA%D0%B8_044.png
          Ответить
          • Поэтому я против "Linux"/"UNIX".
            Ответить
            • ну сейчас лучше стало, конечно

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

                  Все таки самые крутые дизигнеры редко работают в опенсурсе: они скорее в каком-нить эппле кучкуются
                  Ответить
                  • Вот кстати да, хороших программистов в опенсурсе полно. А дизайнеров почему-то очень мало.
                    Ответить
                    • Ну изначально опенсурс двигали программисты, причем совсем не ориентированные не UI, как ты понимаешь:) Иксы в прыщи-то завезли в середине нулевых, через 10 лет после мака.
                      Причем прыщи с TWM там какимнить, KDE еще вроде тогда не было

                      Чего там делать дизайнерам, если там и UI кривой, и адоб не работает, и время от времени нужно с чем-то пирдолица.
                      Ответить
                    • >"Вот кстати да, хороших программистов в опенсурсе полно."

                      Но пользуются все почему-то "Windows" и "macOS", а не "Linux"/"UNIX"; "Photoshop", а не "GIMP"; "Final Cut Pro", а не "Shotcut". Странно...
                      Ответить
                      • особенно на серверах

                        не, ну хуёвые программисты в опенсерсе тоже бывают, тут ты прав. Лердорф там, например, или Видениус.. те еще пидары

                        Ответить
                        • показать все, что скрытоvanished
                          Ответить
                        • Мы сейчас обсуждаем продукты массового потребления. Будем честны: в основном opensource-говно крутится среди узкого круга идейных дрочеров на какую-то "свободу" (в ущерб качеству и стабильности). Те же, кто ценит своё время и нервишки, выбирают платное и закрытое ПО, ибо идеологи халявы достойных аналогов так и не предложили.
                          Ответить
                          • ротоёб, это всё было уже обсуждено миллиарды раз на всяких околокомпутерных форумах.. срачи на тему винудос версус линукс в интернетике ведутся со второй половины 90-х
                            Ответить
                            • У кого из ОБЫЧНЫХ пользователей установлена "Ubuntu"? Не программистов, не системных администраторов, а именно простых Васянов-заводчан и домохозяек.
                              Ответить
                              • показать все, что скрытоvanished
                                Ответить
                                • Могли бы выбирать - выбрали бы "Windows". Или компьютер с "macOS".
                                  Даже Владимир Владимирович Путин, который, казалось бы, должен максимально ограждать себя от закрытых и потенциально шпионских программ (тем более западного производства), сидит на "Windows". Единственное - он придумал себе преднамеренное отставание по времени, чтобы все западные технологии слежения относительно него устаревали (долгое время использовал "Windows XP", и только недавно перешёл на "Windows 7").
                                  Ответить
                        • А Гутманс и Сураски? А Дмитрий Стогов?
                          Ответить
      • а как я знаю, что я скачаю настоящую программу, а не хакерскую поделку?
        Ответить
        • Позвонишь в ФСБ и сверишь хеши с товарищем майором.
          Ответить
          • а кроме шуток?

            Яб на их месте в МФЦ выдавал бы флешку с прогой
            Ответить
            • Ну, скорее всего, вместе с токеном для ЭЦП можно получить и набор сертов и браузер с поддержкой госта (или что там у них за прога?).
              Ответить
              • хаха, не всё так просто
                чтобы работали гостовые алгоритмы, тебе в системе нужен криптопровайдер (типа криптопро цсп или випнет цсп) с соответствующим апи

                и да, иногда лицензию на криптопровайдер поставляют вместе с токеном, но только у меня хуй знает но не заработало
                Ответить
                • криптопровайдеры с реализацией гостового алгоритма требуют лицензии? ФСБ типа лицензию купило?
                  Ответить
                  • Ну они там стоят копейки, если не серверная версия. Серверная версия пиздец дорогая была...
                    Ответить
                • Были кстати прикольные зелёные рутокены, у которых вся криптография на борту. А снаружи нужен был только плагин к браузеру. Их закопали походу, дорого?
                  Ответить
                  • такие пластиковые полупрозрачные хуйни на usb? ты предлагаешь их всем выдавать?)
                    Ответить
                    • Эм, ну если ты хочешь подписать официальное обращение в ФСБ, то как ты это сделаешь без токена и серта, выданного кошерным УЦ?
                      Ответить
                      • сгенерю пару ключей, публичный отнесу в МФЦ, не?
                        Ответить
                        • Ну для официального документооборота есть требования к хранению ключей. И обычно в этих требованиях указан защищённый носитель, т.е. токен.

                          Т.е. хранить приватный ключ на компе не положено.
                          Ответить
                          • тогда понятно

                            Это логично, так как у меня на компе стопудово ботнет или еще какая нито хуита
                            Ответить
    • Кто-то по памяти может отличить operator++() от operator++(int)?

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

          Угу, пиздец интуитивный дизайн.

          Кстати, в современных крестах, наверное, сделали бы std::prefix и std::postfix фейковым параметром вместо сраного int'а.
          Ответить
          • зачем воще парамтер? почему не назвать семантически вместо ++?
            фейковый параметре же в любом случае говно, не?

            ну и да: кто из них пост, а кто пре -- я не помню конечно
            Ответить
          • Это дух сишки: убрали «лишние» слова. Например, в сишке не стали вводить слово «function», а об объявлении функции нужно догадываться по скобочкам. В крестах пошли дальше, сделав объявление лямбды таким же неочевидным.
            Ответить
      • А я вот недавно думал, что должен ++(int) возвращать: изменённый объект или старый?
        Ответить
        • Я даже не пытаюсь думать в этом случае, логики тут нет, проще загуглить или спеку открыть.
          Ответить
        • вот тебе мнемоика: скобки как бы наполняются интом. Сначала они пустые, а потом полные.
          Потому без инта у тебя pre, а с нитом -- post.

          или наоборот...
          Ответить
          • Ну или это намёк, что придётся пилить временную переменную.
            Ответить
          • Не, я именно о постинкременте говорю. Должен он изменять this и возвратить старый объект, или возвратить изменённый объект и не трогать this?

            Хорошо, что есть https://en.cppreference.com/w/cpp/language/operators/.
            Ответить
            • > не трогать this

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

        много цпу (надеюсь, не путаешь с ио-лоад) = много хеш джойнов, сортов и агрегатов
        Ответить
        • показать все, что скрытоvanished
          Ответить
          • матвьюхи на то и матвьюхи, чтобы относительно охуительно наживо все сделать

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

            в постгресе с матвьюхами не так заебись, конечно

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

                в оракле есть фаст рефреш, а это уже полдела по ускорению джойнов
                Ответить
                • в любом случае, вот мы и пришли к стадии ДЕНОРМАЛИЗАЦИИ нормализованной бд
                  Ответить
                • Я не знаток оракла, но помню, что в ms-sql 2005 уже были материализованные вьюхи, и они вроде бы сами обновлялись, то есть база понимала, от чего они зависят, и как-то их пересчитывала (может быть это замедляло insert/update, не знаю).

                  Мы тогда угорали над mysqlщиккми, которые вручную делали денормализованные копии данных, чтобы быстрее делать селекты..


                  зы: оказывается, правильно помню

                  "One difference is that SQL Server’s indexed views are always kept up to date. if a view’s base tables are modified, then the view’s indexes are also kept up to date in the same atomic transaction."
                  Только они Indexed views
                  Ответить
      • Посмотреть в лог. Вроде там самые тяжёлые запросы можно залогировать. А дальше уже подумать, откуда они взялись и что с этим делать.
        Ответить
      • показать все, что скрытоvanished
        Ответить
        • показать все, что скрытоvanished
          Ответить
          • Ну если там миллионы запросов на одно и то же - возможно тебя специально или случайно ддоснули. Я в подобной ситуации просто забанил айпишник этого пидора и всё прошло.
            Ответить
            • нормальная субд может сама кешировать результаты селектов, если она знает, что состояние не менялось, а использовались только иммутабельные и стабильные функции
              Ответить
              • Это правда. Но миллион одинаковых запросов всё равно плохо: даже если СУБД тебе сразу выдаст ответ из кеша из памяти, то потом ORM будет пыхтеть заворачивая это всё в объекты, например
                Ответить
          • а дальше explain. Обычно бывает понятно, почему они долгие.

            например, ты джойнился без индекса с другой таблицей, в которой было 2 записи
            А тут внезапно их стало 9500000 там

            бывает еще N+1.
            Когда у тебя кол-во запросов растет в зависимости от кол-ва записей
            Пока их мало -- всё летает
            А потом внезапно бум, и все лежит

            Это надо срочно чиинить!
            Ответить
      • Пятиминутка рекламы.
        В Django есть Debug toolbar
        Для каждой страницы он выдает картинку типа
        https://vegibit.com/wp-content/uploads/2020/02/debug-django-sql-query.png
        Ответить
        • реклама джанги на сайте на вордпрессе
          какая аллюзия
          Ответить
          • Какой догфуддинг )))
            Ответить
          • показать все, что скрытоvanished
            Ответить
            • Да тут весь стек, начиная от транзисторов и заканчивая джаваскриптом уже обосрали...
              Ответить
              • про тразнисторы не сказу, но интел -- переусложненное говно же, не?
                нахуя иметь процессор, половина возможностей которого не используется?
                Ответить
                • Нахуя покупать машину и использовать спидометр наполовину?
                  Ответить
                  • Скорость можно сравнить с частотой. Раз в год тебе нужно ехать по максимуму. С частотой так же.
                    Но я не о частоте.
                    Я о, например, 16 и 32 битных режимах, о хардваном переключении контекста, о сегментах, даже об i/o (ну кому оно особо надо?)


                    И вот я уверен, что какое-то кол-во инструкций реально не используется. Нет?

                    А ты не согласен? Скажешь, у интела чистый и логичный дизайн без легаси и костылей?
                    Ответить
    • https://github.com/docker/cli/issues/267#issuecomment-695149477
      > I no longer build software; I now make furniture out of wood. The hours are long, the pay sucks, and there's always the opportunity to remove my finger with a table saw, but nobody asks me if I can add an RSS feed to a DBMS, so there's that :-)
      Ответить
      • Да, я тоже подумываю иногда уйти в монастырь.

        > add an RSS feed to a DBMS
        А JSON в СУБД нормально? А XML с XPATH?

        А вот такое не хочешь??
        https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql?view=sql-server-ver15
        Ответить
        • Вот уйдёшь в монастырь, а потом монахи узнают что "тыж программист", и будешь им настраивать телефоны да ноуты.
          Ответить
          • надо уходить в женский монастырь и драть монашек
            Ответить
          • Я и так это иногда делаю) Недавно как раз знакомый притащил комп с prescott четвертым пнем, и мы ему туда пхали купленный на авито q9500 йоркфилд, и комп стал вполне юзабельный, а так бы отправился на помойку.

            А к тебе такое не носят?
            Ответить
            • О, тот комп таки завёлся после апгрейда? Грац!

              В прошлом городе носили, а сейчас особо и некому.
              Ответить
              • Завелся) Пришлось обновить биос. Для этого пришлось флешку переформатнуть на fat32: биос не умел exfat. После втыкивания памяти он тупил некоторое время и перезагружался (видимо биос подбирал частоту памяти? или хз что), но в итоге вполне живой.
                Ответить
        • Json в СУБД это охуенно, например. Только слабые духом опираются на первую нормальную форму
          Ответить
          • Однако же сама идея напоминает необычное использование обычных вещей, просто видимо это та ситуакция, когда practicality beats purity.

            Видел ссылку про ms-sql? Как тебе идея отправлять email средствами СУБД?
            Ответить
            • Ну годная идея же. А то вечно все ебут мозг как отправить емейл посреди транзакции и как потом при откате сделать вид, что его не было.
              Ответить
              • Да, это удобно. Оно не сразу шлется, а ставится в очередь в базе, так что rollback его откатит. Кроме того, DBA может сам себе отчеты слать
                Можно даже the message may include a query result set, file attachments, or both.
                Ответить
              • Какой анскил ))) У нас в "mnesia" в транзакции было мета-поле для ивентов, куда юзер мог что угодно атомарно эмитить; лог транзакций на лету писался в "Kafka"; потом из топика доверенные процессы-фильтры извлекали разные типы ивентов (в т.ч. про "надо бы послать email"), и запускали уже какую угодно бизнес-логику.
                Ответить
                • P.S. https://github.com/klarna-incubator/kflow (часть пайплайна, за вычетом всей бизнес логики, которую я даже заопенсорсил)
                  Ответить
                • Это правильно. Такую же конструкцию народ собирал и на обычной СУБД (или MQ) с каким нить Spring Integration: создавалось событие, и подписанные на него товарищи узнавали, что надо отравить емелй. Либо же message шел по пайпу, покуда не достигал точки отправки в емейл.
                  http://glenn-renfro-dev.blogspot.com/2012/02/adding-attachement-to-email-via-spring.html
                  Ответить
            • Не то чтобы это был необходимый запас для поездки, но если начал собирать дурь, становится трудно остановиться.
              Ответить
      • If it's a funny comment, use the :-) reaction, don't fill up my fucking feed with this bullshit

        Fuck you


        КИБЕРБУЛЛА ИСПОЛЬЗУЕТ ЗАКЛИНАНИЕ РЕПЛАЙ ТУ ОЛЛ
        Ответить
    • > Австралиец осуждён за майнинг криптовалюты на суперкомпьютере
      > По оценкам следствия, Кху удалось добыть около $6,8 тыс. в криптовалюте — Ethereum и Monero. При этом в полиции подсчитали, что ущерб от использования суперкомпьютера для майнинга составил $55,4 тысячи.

      Какой майнинг )))
      Ответить
      • Он там напитоне что ли майнил?
        Ответить
        • Почему?
          Ответить
          • Да что-то КПД совсем никакое... В 10 раз больше потратил чем намайнил.
            Ответить
            • Ну это по мнению полиции (•‿•)

              Кстати, это сколько в битках щас? Один или полтора?
              Ответить
            • зато атмосферы нагрел

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

                Скорее варить...
                Ответить
              • А яйца где брать?
                Ответить
                • Из вылупившихся куриц.
                  Ответить
                  • А куриц куда девать?
                    Ответить
                    • варить
                      Ответить
                      • А варёное мясо куда девать?
                        Ответить
                        • Есть.
                          Ответить
                          • А говно куда девать?
                            Ответить
                            • Нашли или выдавили из себя говно, которое нельзя назвать нормальным, на которое без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
                              Ответить
                              • Нашли или выдавили из себя говно, которое нельзя назвать нормальным, на которое без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, ведь это типичный код на ПХП, контрибутните его в зенд
                                Ответить
                              • А комментарии на «Говнокоде» куда девать?
                                Ответить
    • показать все, что скрытоvanished
      Ответить
      • Потому что это классический китайский дизайн. Зайди на любой узкоглазый сайт — увидишь всё то же самое, только зачастую ещё хуже.
        Ответить
      • Скоро все сайты будут такими. Просто поменяй комп на более мощный.
        Ответить
      • птому что пхп
        Ответить
    • показать все, что скрытоvanished
      Ответить
      • Именно поэтому я за «PHP».
        Ответить
      • пхп: но если сесть на это кресло -- острый угол впивается в жопу
        продавец: можно подумать, в других креслах не так
        покупатель: а вы видели другие кресла?
        продавец: пока такой необходимости не было
        Ответить
    • показать все, что скрытоvanished
      Ответить
    • Недавно встретил вопрос: является ли возможность кинуть исключение нарушением принципа Лисков?

      Что думаете, питухи?
      Ответить
      • Какое именно исключение? Говно в духе
        class Ptica {
        public:
            virtual FlyResult fly() { /*...*/ }
        };
        
        class Kurica : public Ptica {
        public:
            virtual FlyResult fly() override { throw NotImplementedError(); }
        }

        — определённо является.
        Ответить
        • там не уточнялось

          я так и ответил, что всё окей до тех пор, пока родители и наследники срут одними и теми же исключениями
          Ответить
      • Сама по себе возможность ничего не нарушает, исключения эквивалентны возврату Either<Result, Exception>.

        По принципу Лисков ты не должен кидать чего-то, что не мог кинуть базовый класс. И если он мог кинуть что угодно - то ты тоже можешь.

        Жопа начинается когда интерфейс обещал чего-то не кидать, а тебе в реализации это кинуть надо. И любой джавист на это налетал...
        Ответить
      • Кстати, спасибо что напомнил про Лисков, годная тема. Я тут как раз вопросы сочиняю.
        Ответить
        • > Я тут как раз вопросы сочиняю.
          Тоже в бизнесмены подался?
          Ответить
          • Да ну, какой из меня бизнесмен.
            Ответить
            • Неужели бизнесвумен?!
              Ответить
              • Бизнес-ангел
                Ответить
                • Бизнес-девочка-волшебница.
                  Ответить
                  • Я буду волшебницей! Я буду волшебницей! Ты на деревянной лошадке, и я на деревянной лошадке! Конфетти в нашу честь! И утренник в детском саду!
                    Ответить
        • как завалить джуна с 1 вопроса?
          Ответить
          • Какой багор ???
            Ответить
          • { Вы случайно не PHP Middle ? }
            Ответить
            • зачем пэхэпешнику солид? у них там single file responsibility да и хватит

              да и вообще мемоизация лучших практик при помощи зазубривания аббревиатур это такое, на мой взгляд
              Ответить
              • > при помощи зазубривания аббревиатур

                А надо при помощи тыканья носом на ревью? Ну серьёзно, это ж не какие-то там сраные паттерны, которые могут не пригодиться, это довольно общие принципы.
                Ответить
                • хз. зазубривание solid'а по википедии не отменяет потенциального тыканья носом на ревью.

                  я ж не говорю, что описанные принципы какие-то неправильные

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

                    Приведи реальный пример.
                    Ответить
                    • да та же стратегия

                      а про визитор ты и сам рассказывал вроде
                      Ответить
                      • абстрактная фабрика синглтонов стратегий
                        Ответить
                        • Фасад абстрактной фабрики билдеров абстрактных фабрик стратегий синглтонов.
                          Ответить
                          • показать все, что скрытоvanished
                            Ответить
                            • Если у тебя инъекция зависимостей есть, нафиг тебе сдались абстрактные фабрики стратегий?

                              Или стратегия здесь выбирается динамически, для каждого случая отдельно? Поэтому представление получает не конкретный инстанс стратегии, а фабрику?
                              Ответить
                              • Например да, динамически. В зависимости от.
                                Ответить
              • > single file responsibility

                сразу в золотые цитаты
                Ответить
          • Это вопрос на синьора?
            Ответить
            • Вопрос на синьора звучал бы "как завалить миддла с одного вопроса"?
              Ответить
              • показать все, что скрытоvanished
                Ответить
                • это элементарно уотсн
                  если откликается на { Вы случайно не PHP Middle ? }, значит это мидл, а если на { Вы случайно не PHP Senior ? }, то сеньор
                  Ответить
                  • А если серьезно? У тебя вот есть такие градации в проекте?
                    Ответить
                    • есть, зарплаты же разные, под зарплаты составляется штатное расписание с должностями, под должности нужны должностные инструкции и СОУТ на каждое рабочее место каждой должности
                      ну и при осмечивании проекта можно и по средней по больнице, конечно, посчитать, а можно по градациям

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

                    https://www.litmir.me/br/?b=41605&p=1
                    Ответить
              • Мидлов же обычно зондеркоманда из разрабов и лида опционально с менеджером собеседует
                Там можно и самому по себе обосраться
                Ответить
        • показать все, что скрытоvanished
          Ответить
      • То ли дело классы в "Coq". Соответствие принципу Лисков для любого инстанса нужно доказать.
        Ответить
        • Кому всрался "Coq"? На этом говне хоть примитивную контакт форму можно сделать?
          Ответить
      • показать все, что скрытоvanished
        Ответить
        • щетаю что в бизнес-логике вообще не должно быть исключений, у нас же цель не программу сломать, а сообщить юзеру что так нельзя
          Ответить
          • >щетаю что в бизнес-логике вообще не должно быть исключений,
            Расскажи это джавапитушкам с их Checked exceptions
            Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
      • Поколение даунов, для которых всё упрощают до предела. "ВКонтакте" превратился в "VK", "Хабрахабр" - в "Хабр", "Сбербанк" - в "Сбер"... Ждём появления платёжной системы "ЯД", что ли...
        Ответить
    • Миру грозит дефицит бананов.

      Нехватку плодов России, странам Европы и Ближнего Востока предрекают из-за извержения вулкана в Эквадоре.

      https://news.mail.ru/economics/43486610
      Ответить
    • Давайте течь от «Nemerle».
      def title = "Programming language authors";
      def authors = ["Anders Hejlsberg", "Simon Peyton-Jones"];
          
      // 'xml' - macro from Nemerle.Xml.Macro library which alows to inline XML literals into the nemerle-code
      def html = xml <#
        <html>
          <head>
            <title>$title</title>
          </head>
          <body>
            <ul $when(authors.Any())>
              <li $foreach(author in authors)>$author</li>
            </ul>
          </body>
        </html>
      #>
      Trace.Assert(html.GetType().Equals(typeof(XElement)));
      WriteLine(html.GetType());
      Ответить
      • Переведи на "PHP".
        Ответить
      • хороший статически типизированный язык под хорошую платформу, с хорошим паттерн матчингом

        ну а макросы воще огонь, да
        Ответить
      • >"Nemerle — гибридный язык высокого уровня со статической типизацией"

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

              знаешь, почему?
              Ответить
              • Потому что таких проектов менее одного?

                Кстати, я хочу потечь от F#. читал как-то про него, и увложнился.
                Мне нравятся статически типизированные кросс платформенные функицональные языки
                Ответить
                • /// A mutable binding.  This is required to be able to mutate the value of 'otherNumber'.
                  let mutable otherNumber = 2
                  
                  printfn "'otherNumber' is %d" otherNumber
                  
                  // When mutating a value, use '<-' to assign a new value.
                  //
                  // Note that '=' is not the same as this.  '=' is used to test equality.
                  otherNumber <- otherNumber + 1


                  В таких погремушках можно и увязнуть
                  Ответить
                  • а что не так?

                    мутабельность это зло

                    чем меньше мутабельности -- тем стабильнее софт
                    Ответить
                    • а контекстно-зависимый оператор это зло или?
                      Ответить
                      • он для внимательных программистов;)
                        Ответить
                        • ну т.е. хуйня полная

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

                            ты же согласен я надеюсь, что иммутабельным должно быть всё, что в принципе может быть иммутабельным? *

                            * Хотя Мац думает с точностью до наоброт
                            Ответить
                            • Я тебе могу сказать, что простых смертных не ебёт никакая "иммутабельность". Нормальные пацыки используют "array" и текут.
                              Ответить
                              • > что простых смертных не ебёт никакая "иммутабельность".
                                Подтверждаю.
                                Только var, только массивы.

                                > Нормальные пацыки используют "array" и текут
                                Их благословил Царь всея Ру-Си.
                                Ответить
                                • Фонд Бастинды, Гингемы и Урсулы благодарит вас за помощь в распространении рака
                                  Ответить
                            • иммутабельность упрощает работу компилятора

                              может задавать семантику

                              а что со стабильностью?
                              Ответить
                              • стабильность проистекает из уменьшения количества состояний
                                Ответить
                                • словесная эквилибристика
                                  Ответить
                                  • Неизменяемые объекты имеют меньше состояний. Точнее, одно.
                                    Чем меньше состояний -- тем проще доказать, что объект работает верно.

                                    Что не так?
                                    Ответить
                                    • кому проще доказать?
                                      Ответить
                                      • показать все, что скрытоvanished
                                        Ответить
                                        • и когда он это делает?

                                          кстати, то, что "объект работает верно", вроде должно подтверждаться работой внутренней логики объекта

                                          напишешь его логику с учётом потенциальной иммутабельности и проблем быть не должно
                                          Ответить
                                          • >и когда он это делает?
                                            Когда читает код

                                            >напишешь его логику с учётом потенциальной иммутабельности и проблем быть не должно

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

                                              у него есть иммутабельное поле ссылочного типа

                                              у этого поля есть своё мутабельное поле ссылочного типа

                                              тебе придётся убеждаться
                                              Ответить
                                              • как только есть что-то мутабельное, то сразу пиздец, угу
                                                но всё таки количество проверок будет меньше
                                                Ответить
                                                • проверок на уровне компилятора да

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

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

                                                  иллюзия безопасности
                                                  Ответить
                                                  • >а на уровне программиста?
                                                    Тоже.

                                                    Если поле foo не изменяемо, то я могу расчитывать на то, что оно не поменяется в процессе.

                                                    >если ты берёшь библиотечные типы, как ты можешь гарантировать иммутабельность
                                                    Именно потому я за const и C++)

                                                    На самом деле в Kotlin многие библиотечные типы неизменяемы
                                                    Скажем, List по умолчнаию рид-онли

                                                    В свифте не так?

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

                                                      Угу. Тем не менее даже в крестах и сишке юзают конст. Хотя там можно сломать вообще всё что угодно.
                                                      Ответить
                                                      • есть разница между "юзать конст", когда ты понимаешь, что он тебе реально нужен, и пихать let везде только потому, что так написано в референсе языка
                                                        Ответить
                                                        • НЕ const тип очевидно поддерживает больше действий, и потому делать что либо НЕ конст нужно только в том случае, если тебе это реально нужно.

                                                          Ты же не предлагаешь везде юзать 64х битные числа сужая тип только если тебе это реально нужно?
                                                          Ответить
                                                      • кстати, в сишке можно const же указать явно в типе аргумента, верно?
                                                        Ответить
                                                        • Аргумента?
                                                          Аргументы там по значению и по указателю.
                                                          Для значения смысла большого нет. Для указателя можно конст.
                                                          А также можно скастить конст в неконст, ибо ишь чего ты захотел, в рамки царя загнать?
                                                          Ответить
                                                        • В «C++» тоже можно!
                                                          Ответить
                                                    • > В свифте не так?
                                                      - сделай let, будет ридонли

                                                      В обжси конкретно NSArray и NSMutableArray

                                                      > многие библиотечные типы неизменяемы
                                                      - это ты щас про стандартную библиотеку, а всякие там 3rd party.

                                                      > Если поле foo не изменяемо, то я могу расчитывать на то, что оно не поменяется в процессе.
                                                      - ну а почему оно должно вдруг поменяться в процессе? программист совсем мышей не ловит и не знает, что делает его коТ?

                                                      кстати, а рефлексией в Котлине нельзя насрать в ридонли поле?)
                                                      Ответить
                                                      • >- это ты щас про стандартную библиотеку, а всякие там 3rd party.
                                                        Это плевок в вечность, к сожалению
                                                        А лучше бы их не было

                                                        >- ну а почему оно должно вдруг поменяться в процессе?
                                                        Компилятор ничего не знает, и не может доказать. Это усложняет статический анализ.

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

                                                        >кстати, а рефлексией в Котлине нельзя насрать в ридонли поле?)
                                                        Можно.
                                                        А в си можно насрать куда угодно вообще. Предлагаю по этой причине отказаться от использования енумов. И от модификатора const. И от була.

                                                        Зачем мне как-то ограничивать программиста, если он всё равно может туда насрать?
                                                        Ответить
                                                        • ну то есть это всё-таки для компилятора

                                                          (например, ридонли поле ему бессмысленно защищать дополнительными локами или проверками)

                                                          > Программист может проверить вручную конечно, но даже в этом случае он может отдать объект в 3рд парти код, который поменяет его через 2 часа в другом треде.
                                                          - ок, это один из юзкейсов, но нафига помечать let'ом, например, приватные поля с точки зрения помощи погромисту? или локальные пельменные внутри функции

                                                          просто потому что?
                                                          Ответить
                                                          • показать все, что скрытоvanished
                                                            Ответить
                                                            • Сорян что влажу со своими 5 коп.

                                                              Но в классе/структуре лучше иметь ключевые поля немутабельными. (Это те которые от которых считаются хеши, и которые мапятся на ключ в базе).

                                                              Пруфов не будет.
                                                              Ответить
                                                            • > Чтобы он знал, что в коде класса нет мест, где их меняют.
                                                              - это не работает, мы убедились на примере полей у полей у объекта
                                                              Ответить
                                                              • показать все, что скрытоvanished
                                                                Ответить
                                                                • https://govnokod.ru/26949#comment578693
                                                                  Ответить
                                                                  • показать все, что скрытоvanished
                                                                    Ответить
                                                                    • ну короч

                                                                      тебе надо одно паблик ридонли поле

                                                                      ты радостно хуячишь let на всё, что видишь на мониторе

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

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

                                                                        Во-1. Не факт. Ну если как в Хаскеле не делать.
                                                                        Во-2. Копирований может быть не так и много (COW). Зато багров с многопоточностью на порядок меньше.

                                                                        Вообще, кмк, вы оба правы.
                                                                        Ответить
                                                                        • разве cow это не детали реализации?

                                                                          > Зато багров с многопоточностью на порядок меньше
                                                                          - каких именно багров? клиенты начнут дрочить твои поля в обе стороны из ста потоков? ну сделай их private(set), если конечно твой езык умеет такое (обычный приватный сеттер-то точно умеет)
                                                                          Ответить
                                                                          • > каких именно багров?
                                                                            race condition

                                                                            Классика мутабельной питушатни. Йажа:

                                                                            > ну сделай их private(set),
                                                                            private static final SimpleDateFormat koko=...
                                                                            Предлагаю угадать почему этот код хуёвый. Ошибка просто классическая.
                                                                            Ответить
                                                                            • зачем тебе private final?

                                                                              я могу взять и написать у себя

                                                                              public private(set) var ololo: Int
                                                                              Ответить
                                                                              • >зачем тебе private final?
                                                                                Ну это идиоматично и правильно.
                                                                                Этот код тоже ошибочен.
                                                                                private static SimpleDateFormat koko=...


                                                                                Кстати. Если взять ту же Йажу, мутабельность массивов снижает пирфоманс.
                                                                                Т.к. для бубликации приватного массива каждый раз нужно делать копию.
                                                                                Ответить
                                                                                • я не очень понимаю твою мысль
                                                                                  Ответить
                                                                                  • Статический *DateFormat скорее всего будет использован из многих потоков, что приведёт к неправильному форматированию, т.к. у него в кишках мутабельный стейт.

                                                                                    Но обычный программист даже не догадывается об возможности такого проёба.

                                                                                    Если бы SimpleDateFormat был внутри себя немутабельным (не имел приватного мутабельного стейта), такой хуйни бы не было.

                                                                                    https://dzone.com/articles/java-simpledateformat-is-not-simple
                                                                                    Они там прям так и пишут:
                                                                                    >This is a common mistake most of us have made when formatting dates in Java.
                                                                                    Ответить
                                                                                    • > Но обычный программист даже не догадывается об возможности такого проёба.

                                                                                      Date formats are not synchronized. It is recommended to create separate format instances for each thread. If multiple threads access a format concurrently, it must be synchronized externally.

                                                                                      https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

                                                                                      если доберётся до доки, то всё увидит

                                                                                      ----

                                                                                      а как ему не иметь мутабельный стейт, если он ему нужен (допустим, это не переписать)?
                                                                                      Ответить
                                                                                      • >если доберётся до доки, то всё увидит

                                                                                        Ну даже в доке явно не сказано: не делай SimpleDateFormat статическим или даже нестатическим полем в классе.

                                                                                        А логическая цепочка не у каждого сработает.

                                                                                        Это стандартная либа, и то люди факапят регулярно.

                                                                                        А если это чей-то класс, а и этот нюанс даже не откомментирован толком?

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

                                                                                          это внутренние кишки

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

                                                                                          а где тут именно private state, а то я жабу плохо парсю?
                                                                                          https://android.googlesource.com/platform/libcore/+/cff1616/luni/src/main/java/java/text/SimpleDateFormat.java
                                                                                          Ответить
                                                                                          • >а где тут именно private state, а то я жабу плохо парсю?
                                                                                            private String pattern;
                                                                                                private DateFormatSymbols formatData;
                                                                                                transient private int creationYear;
                                                                                                private Date defaultCenturyStart;
                                                                                            Ответить
                                                                                            • ты уверен?

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

                                                                                              ну да это неважно, в общем
                                                                                              а как это перевести на иммутабл? создавать в конкретной функции и потом передавать в другие функции по мере надобности?

                                                                                              вот это интерфейсы раздуются, конечно :-)
                                                                                              Ответить
                                                                            • показать все, что скрытоvanished
                                                                              Ответить
                                                                              • >класс SimpleDateFormat имеет состояние

                                                                                Мутабельное состояние.

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

                                                                          Так и есть.
                                                                          90% багров rustа от свинского боров-чекера.
                                                                          Который даёт или много ссылок на чтение, либо одну на запись.

                                                                          Тоже разновидность принудительной иммутабельности.

                                                                          У меня есть однопоточная программа, я хочу сделать простой double-linked list. А Пuтушатня как раскукарекается:

                                                                          error: cannot borrow `bagor` as immutable because it is also borrowed as mutable
                                                                          Ответить
                                                                        • так и проблема, когда твои поля сношают из тысячи потоков и рейс кондишены уже убили твою собаку, в общем-то тоже характерна для горячих точек

                                                                          на самом деле, let это как раз для перформанса, потому что компилятор получает большую свободу для работы с такими объектами

                                                                          вернулись к тому, о чём я говорил: иммутабельность помогает компилятору
                                                                          Ответить
                                                                          • показать все, что скрытоvanished
                                                                            Ответить
                                                                            • ты пишешь, что мутабельность добавляет пирфоманс

                                                                              я пишу, что let добавляет пирфоманс

                                                                              ты мне опять про корректность лол
                                                                              Ответить
                                                                              • показать все, что скрытоvanished
                                                                                Ответить
                                                                                • мутабельность? или иммутабельность? или корректность? или пирфоманс?

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

                                                                                  - value type, не? или интерфейс копирования

                                                                                  иммутабельность объекта здесь как попытка загрести солидную кучку под коврик
                                                                                  Ответить
                                                                                  • показать все, что скрытоvanished
                                                                                    Ответить
                                                                                    • а при чём тут Vector, речь про Point

                                                                                      сделай его value type, как там у вас, датакласс вроде?
                                                                                      датаклассы же копируются при передаче в функцию?

                                                                                      тебе вообще тут нужен интерфейс, который указывает, что у типа есть поля x, y и что такой объект можно скопировать

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

                                                                                          а в чём смысл датакласса тогда?

                                                                                          в свифте value types при передаче копируются

                                                                                          > Ты предлагаешь создать новую сущность вместо обычной структуры из двух r/o полей?
                                                                                          - а в чём проблема?

                                                                                          ты не завязываешься на реализацию
                                                                                          у тебя есть чёткий и простой контракт (как ты любишь)

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

                                                              - пофикси мудификаторами видимости

                                                              а, я забыл, они же не нужны
                                                              Ответить
                  • На "PHP", пожалуйста.
                    Ответить
                  • Ничего не понял. Переведи на "PHP".
                    Ответить
      • Уже пытались течь, не получилось

        https://govnokod.ru/12316#comment165792

        (у Немерле есть какие-то другие нескучные обои, кроме "встроенного" хтмл?)
        Ответить
    • Перекат!

      https://govnokod.ru/26980
      https://govnokod.xyz/_26980/
      Ответить
    • показать все, что скрытоvanished
      Ответить
      • Именно поэтому я за «PHP».
        Ответить
        • А конардо был бы против такого кода: импотентные запросы, исключения, куча разных файлов... Понаписали всякой хуйни, вот оно и падает.
          Ответить

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