1. SQL / Говнокод #1993

    −164.2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    CREATE TABLE users(
      ....
      passwd VARCHAR (32) DEFAULT NULL,
      passwd_clear VARCHAR (32) DEFAULT NULL,
    
    ....

    passwd - типа зашифрованный
    passwd_clera - типа в открытом виде ))))

    Запостил: paranoid, 19 Октября 2009

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

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

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

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

              То его сбрасывают

              >тут всё зависит от алгоритма шифрования, однонаправленный или нет.

              Боже мой, что за херню вы несёте?

              >кста, еси базу ломанули, то особого труда не составит отослать при входе в систему хеш пасса в обход шифрования.

              Вы ебанутый?
              Клиент шлет пароль, а сервер проверяет его хеш.

              > но тогда его можно в чистом виде увести в процессе передачи данных.
              Для этого существует TLS

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

                Всё так. Я не представляю, куда слать хеш. В phpmyadmin?

                Другое дело, если он несолёный, то можно попробовать реверснуть.
                Ответить
                • несолёный пароль можно сразу поменять на плейнтекст:))

                  Историческая справка про /etc/passwd:
                  [quote]
                  Unix acquired a salt in Seventh Edition in 1979.
                  [/quote]

                  Каким образом спустя 30 лет это всё еще было комуто не очевидно?
                  Ответить
                  • Не всегда можно быстро реверснуть хеш. Я некоторые хеши Граватара до сих пор не вскрыл.

                    В общем да, несолёный хеш можно обратить... если пароль короткий, содержит common words или если ты обладаешь бесконечными ресурсами. Ресурсов нужно на порядки меньше, чем для обращения солёного, но всё равно может не хватить, если ты не солидная фирма.

                    Если приспособить к жопе
                    сопроцессор фирмы «Cray»,
                    Можно срать в два унитаза
                    в сорок тысяч раз быстрей.
                    Ответить
                    • большинство паролей -- простые
                      если дебил поставил пароль 123 (не представляю, зачем так делают) то обратный лукап по несоленому хешу уже есть в Интетнете
                      Ответить
        • Ага, точно, зашифрованный пассворд тут уже избыточен )))))
          Ответить
      • обратная совместимость с говнобд :)
        Ответить
      • Представляете уровень помойки в верхних полостях типового пыхопиодра, который реально не видит проблемы в этом коде?
        Ответить
    • Жила-была таблица с открытыми паролями. Потом народ поумнел и решил больше не хранить пароли в открытом виде. Но пока юзеры не залогинятся заново, зашифрованная версия не запишется, поэтому временно существуют оба варианта. В перспективе столбец с открытым паролем планируется удалить (когда основная часть юзеров будет в зашифрованной версией пароля).

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

        > В перспективе столбец с открытым паролем планируется удалить
        ИМХО его просто забыли удалить (возможно, что в passwd_clear сейчас уже NULL'ы).
        Ответить
        • Вот да, если пароли плейнтекстом, то можно сразу зашифровать все.

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

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

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

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

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

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

          Лошадиное?
          Ответить
    • А вы знали, что у фб и нетфликса что-то там написано на D?

      Вы бы выбрали D в качестве языка на следующем проекте?
      Ответить
      • Чому ни?
        Ответить
        • так я только за

          mixin templates это прямо серебряный пулемёт какой-то
          Ответить
          • >mixin
            ого, любимый паттерн Ihno
            Ответить
            • ну там на самом деле няшно

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

            у D есть dub, который одновременно (вроде как) и система сборки, и пакетный менеджер

            вот с IDE могут быть проблемы

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

              Кто-то должен знать систему сборки - какие флаги поставить для прода, какие для дева, как траблшутить непонятные высеры

              Кто-то должен присобачить это к cicd - приготовить контейнеры, настроить точки входа-выхода.

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

              Кто-то должен настроить воспроизводимые билды

              Кто-то должен присобачить тест раннер. Повторить вышеперечисленные шаги для раннера. Бонусом научиться парить высер раннера и настроить подсчет coverage

              >пакетный менеджер

              Кто-то должен защищаться от supply chain а так. Кто-то должен обновлять систему сборки и пакеты по мере поступления cve

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

                > Кто-то должен присобачить тест раннер.
                dub test
                Ответить
                • Предполагается что для нового проекта у тебя есть выбор из существующего тулинга на котором это все решено или dlang
                  Ответить
                  • Человек, выбирающий "D" для своего нового проекта, скорее всего достаточно скилльный, чтобы настроить тест-раннер.
                    Ответить
                  • факт, что язык используется в фб, нетфликсе и ремеди, говорит о том, что для dlang это всё скорее всего тоже решено

                    то, что ты или я с этим не сталкивались, никак не противоречит

                    ну и вообще "проставить флаги, дописать скрипт, обновлять" это не какой-то rocket science, если даже жабоскриптизёры справляются
                    Ответить
                    • >факт, что язык используется в фб, нетфликсе

                      В фб и нетфликсе фраза "мы используем язык" значит что есть команда из 3-30 человек которые фуллтайм занимаются только тулингом под этот язык. В случае больших платформ есть еще и команды которые фуллтайм занимаются движками. Как ТЕБЕ помогает то факт что это решенная проблема в фейсбуке?

                      > ну и вообще "проставить флаги, дописать скрипт, обновлять" это не какой-то rocket science, если даже жабоскриптизёры справляются

                      На говнокоде чередуются посты "да хули там подключить язык/тулу/etc" с жалобами на то что билд тормозит, тесты мигают и какая-то хуйня не билдится на винде. Можно подумать что эти вещи как-то связаны, но тут препочитают не думать а гыгыкать над жабоскриптизёрами
                      Ответить
                      • Надо сказаь, что JS действительно наиболее отсосный язык в плане туллинга. Трудно даже сказать, где он хуже.

                        В Rust или Go я просто говорю build, и получаю сборку. Говорю test, и запускаются тесты.

                        Сколько всего нужно поставить и насроить в JS чтобы это всё заработало?
                        Ответить
                        • Ещё хуже он, кмк, в крестах. Его там по сути дела нет
                          Ответить
                          • В крестах я могу написать "[имя компилятора] [опция оптимизации] file.cpp" и получить бинарь, даже оптимизированый.

                            В JS я этого сделать не могу: у меня нету ни сборщика, ни аглификатора, ни дерево мне не потрясти, ни компилятора из TS нету.

                            Единственное, что есть в npm, но нет в крестах, так это зависимости
                            Ответить
                            • в js уже давно и нода и браузер умеют в es модули без дополнительного тулинга
                              Ответить
                              • А нода это уже не дополнительный «тулинг» по отношению к жс?
                                Ответить
                                • ну это как сказать что сишный рантайм который main вызывает это "тулинг" для си. Или jvm для джавы

                                  к тому же браузеры которые каноничная платформа тоже умеют в ес модули
                                  Ответить
                                  • Ну вообще Libc есть на всех ОС, а go и вовсе собирает всё статически, и никакие "node" ему не нужны
                                    Ответить
                              • Дык а кто мне бинарь соберет, удалит из него мертвый код, оптимизирует и сделает один файл?
                                Ответить
                                • ты джаваскрипт будешь в браузере запускать. Нахуя тебе сборка одного файла если браузер сам умеет подгружать все файлы

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

                                    Потому что я не хочу распостранять сырцы

                                    > Удаление мертвого кода - может браузеры в будущем и научатся

                                    Ну а компилятор и линкер сей умеют это уже десятки лет.

                                    Я уж не говорю о том, что сишку можно собрать статически, и ни от чего ообще не зависеть. Правда не всегда
                                    Ответить
                                • Вообще-то можно собрать Webassembly, но я ещё не изучал этот вопрос.
                                  Ответить
                      • > Как ТЕБЕ помогает то факт что это решенная проблема в фейсбуке?
                        – ну так, что вероятно они могут поделиться этим решением. как пример: ссылка ниже на дефинишены для dlang от команды базеля

                        кстати, базель это пример проблемы, решённой для ТЕБЯ командой в гугле
                        Ответить
                        • ты в одном сообщении пишешь что "вероятно они могут поделиться этим решением" и тут же приводишь пример базеля который всегда требует команду на поддержку. Можно подумать что даже с опенсором нужна команда которая будет опенсорс массажировать но опять же тут думать не любят
                          Ответить
                          • ну вообще-то пример базеля изначально привёл ты, я просто накинул, что поддержка D в нём есть

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

                        У нас в некоторых командах есть спецпитух для пирдолинга со системой сборки и CI
                        Ответить
                        • у нас отдельные команды отвечающие за билды, за тесты и за CI среду. В целом дохуя инфраструктущиков, где-то четверть или треть всех инженеров. Теперь это называется по-модному "platform engineering"
                          Ответить
              • Иными словами, кто-то должен изучить dub.

                Такая проблема действительно есть: чтобы юзать тулу -- нужно потратить время на её изучение. Увы.
                Ответить
                • Это действительно так. Некоторые наивно полагают что для того чтобы использовать D на проекте им нужно выучить D.

                  Спустя полгода они обнаруживают что надо было учить dub и они теперь половину рабочего времени тратят на починку ломаного билда и дебаг мигающих тестов вместо программирования, выгорают и увольняются
                  Ответить
                  • В это время их коллеги выбирают стабильный и популярный JavaScript, и занимаются вот этим
                    https://github.com/webpack/webpack/discussions/17101

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

                        Ты предлагаешь D, а буткем сразу думает, как интегировать его в сборку Bazel, потому что в его кругах это де-факто система сборки.

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

                          https://github.com/bazelbuild/rules_d
                          Ответить
                          • лично по своему опыту могу сказать, что с ебанутым базелем мне было бы намного дольше разбираться, чем с dub, так что всё относительно
                            Ответить
                    • Крипота...
                      Ответить
                    • я уже год не пишу на джаваскрипте хули ты ко мне с ним приебался
                      Ответить
                      • А на чем ты пишешь?
                        Ответить
                        • в основном на джаве, если приходится то на го или питоне
                          Ответить
                          • Фу, джава. Тебе наверное дохуя денег предложили, что ты согласился на ней писать?
                            Ответить
                            • Слушай, ну после джаваскрипта и джава невеста
                              Ответить
                            • никуда кроме убера брать не хотели, пришлось брать что дают
                              Ответить
                        • Обязательно надо писать?
                          Ответить
      • Я б на D в режиме "better-c" с удовольствием прошивки под контроллеры писал бы.
        Ответить
        • а на расте??
          Ответить
          • Раст - какое-то хипстерское говно, мне это не нравится. Так что вряд ли.
            Ответить
            • Что именно не нравится?

              "Хипстерское говно" как-то не очень развёрнуто звучит
              Ответить
              • Ну например не нравится, что я должен что-то доказывать какому-то "борроу чекеру" чтобы мой код компилировался. Я за то, что программист умнее компилятора, и ему не надо выкручивать руки всяким таким говном и через язык навязывать механизм управления ресурсами.
                Ответить
                • А что плохого в попытках отвловить данглинг поинтеры в компайл-тайме ?
                  Ответить
                  • Плохо то, что через язык мне навязываются какие-то правила, которые надо соблюдать чтобы эти "данглинг поинтеры" ловить, а мне это нахуй не надо. Например, как мне xor linked list в говнорасте написать?
                    Ответить
                    • Эти правила позвляют тебе не нарушать правила ownership.
                      Иногда они слишком строги, и тогда нужно писать unsafe.
                      Это, в общем, не сложно, но и не часто нужно.

                      Сишка тоже не позволяет тебе выразить некоторые вещи: к примеру, как я могу вызвать функцию с левым колконвеншеном, где параметр нужно сувать в регистр, а другой -- в стек?

                      > xor linked list

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

                        В Watcom C можно даже такую ересь описать прагмой. Даже переходник на асме писать не придётся, как в случае других компиляторов.

                        Жаль, в стандарте такой возможности нету.
                        Ответить
                        • ну а в Бормад Си три ноль была глобальная перменная типа REGS кажется. Да только это всё не стандарт
                          Ответить
                      • тред начинался про d, но питухи опять всё своим рустом засрали
                        Ответить
                        • мне интресна причина ненависти к расту
                          Ответить
                      • > Эти правила позвляют тебе не нарушать правила ownership.

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

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

                          А зачем тебе D?
                          Ответить
                          • > А зачем тебе D?

                            Там есть mixin и через них можно что-нибудь наметушить, генерить какое-то говно в компилтайме. А еще там есть шаблоны и шаблонные миксины.
                            Ответить
                            • ок, то-есть тебе не хватает хорошего метапрограммирования чтобы не макроёбить и не копипастить?
                              Ответить
                              • Ну как бы обычно оно нахрен не надо, но лучше чтобы оно было. Метапрограммирование в C++ говно по сравнению с D, в крестах нельзя из созданных на этапе компиляции строк генерировать функцию, в D можно.
                                А для обычных случаев D (better-c) ничем не хуже C
                                Ответить
                                • в рустне есть прикольное метапрограммирование, кстати.

                                  А почему нельзя сделать новый хорший препроцессор для сей?

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

                                    во-вторых, ffi

                                    в-третьих,
                                    https://dlang.org/spec/interfaceToC.html
                                    https://developer.apple.com/documentation/swift/using-imported-c-functions-in-swift
                                    Ответить
                                    • >какую совместимость с сижкой тебе надо
                                      #include 
                                      #include


                                      >Here’s how Swift imports them:

                                      Тоесть там не нужна специальна мартышечка которая аккуратно перепишет сигнатуры с одного ЯПа на другой?
                                      Ответить
                                      • Зря ты коммент отредактировал
                                        Ответить
                                        • Есть некоторая ирония в том, что проблемы бигтеха, метапрограммирования и ffi обсуждают на платформе, где нельзя использовать значок "меньше" и значок"больше"
                                          Ответить
                                          • давай придумаем рахитектуру гк3.0 на git + md
                                            Ответить
                                            • Зачем? Скоро завершится перепись ГК на Symfony, тогда заживём.
                                              Ответить
                                              • А кто переписывает?
                                                Ответить
                                                • Striker
                                                  Ответить
                                                  • Ааа, а за соседней партой Роман переписывает на скале или на чём он там собирался
                                                    Ответить
                                                    • давайте попросим Стертора переписать на дельфи?
                                                      Ответить
                                                      • Попроси. Ты с ним в аське переписаешься?
                                                        Ответить
                                                        • Нет, на "Королевство Дельфи"
                                                          http://www.delphikingdom.com/library/library.asp?ID=12

                                                          Программирование дисковых подсистем (с дискетой)

                                                          зы: всё таки раньше у людей было больше времени
                                                          http://www.delphikingdom.com/asp/viewitem.asp?catalogid=855
                                                          Ответить
                                                          • Сайт про Дельфи написан на asp, символично
                                                            Ответить
                                                            • Можно предположить себе такую архитктру: asp просто дергает методы ActiveX/COM объекта, который написан в свою очередь на дельфи.

                                                              И кстати это даже симпатичнее, чем писать его на JS/VBS
                                                              Ответить
                                                          • Программист.
                                                            Начинала с Паскаля. Потом пришлось писать на С++.
                                                            Уйдя из института писала на FoxPro.
                                                            Сейчас Delphi , Ms SQL.
                                                            Личная просьба:
                                                            Пожалуйста, НЕ ЗАДАВАЙТЕ мне вопросы по программированию в личной почте... Я все равно не буду на них отвечать.
                                                            Поймите правильно, на это у меня физически не хватает времени.
                                                            Ответить
                                                            • Интересно, эта информация дветыщи первого года всё еще актуальна?
                                                              Ответить
                                                              • Можно написать на почту, спросить, есть ли у неё хуй
                                                                Ответить
                                                                • Девушке 55 лет недавно исполнилось, не нужно к ней приставать
                                                                  Ответить
                                                                  • Зачарованно глядит
                                                                    В радуги волшебный свет.
                                                                    Всё у девки впереди,
                                                                    Девке 55 лет.
                                                                    Ответить
                                                                    • мне нравится здесь,
                                                                      в королевстве дельфи
                                                                      да
                                                                      Ответить
                                                                • ну еб твою мать....

                                                                  http://www.shushara.ru/albums.php

                                                                  Warning: include(albums.htm): failed to open stream: Нет такого файла или каталога in /home/users/9/9166173155/domains/shushara.ru/albums.php on line 60
                                                                  
                                                                  Warning: include(): Failed opening 'albums.htm' for inclusion (include_path='.:/usr/local/zend-7.1/share/pear') in /home/users/9/9166173155/domains/shushara.ru/albums.php on line 60
                                                                  Ответить
                                                                  • http://www.shushara.ru/windows/updating.php

                                                                    сука как можно такого эффекта добиться?
                                                                    Parse error: syntax error, unexpected '&' in /home/users/9/9166173155/domains/shushara.ru/windows/updating.php on line 41
                                                                    Ответить
                                                                    • Обновили пхп (возможно, без ведома владельца), а код поменять забыли.
                                                                      Ответить
                                                                      • да, на шаредах так бывает

                                                                        а что, амперсанд двадцать лет назад был валидным?
                                                                        Ответить
                                                                        • Вроде раньше можно было писать &$foo = bar(), а сейчас нет. Если я ничего не путаю.
                                                                          Ответить
                                                                          • и что это за поебота? разыменовывание адреса лижашего в foo?
                                                                            Ответить
                                                                        • Похожая питушня бывает не только на шаредах.

                                                                          Например, некоторые питухи тащут Жуквери с CDN, указывая вместо кокококонкретной версии /latest. В итоге одним прекрасным днём или ночью в CDN Жуквери обновится, а в нём обратно несовместимые изменения, и весь фронтенд распидорасит. Особенно красиво, если это SPA, тогда клиенты вместо кокококонтента увидят хуй.
                                                                          Ответить
                                                                          • CDN на latest это заперельная пишутня какаято, кто вообще так делал?
                                                                            Ответить
                                                                            • не хочешь радовать своих пользователей bleeding edge of technology? /green

                                                                              в идеале оно вообще должно быть на каком-нибудь нексусе, чтобы лефтпад не случился
                                                                              Ответить
                                                                              • А прикинь десктопные приложения бы так работали?

                                                                                OpenSSH при каждом запуске скачивал бы свой libssh.so прямо найтли билд с левых серверов
                                                                                Ответить
                                                                      • Но вообще после этой формочки у меня вопросы отпали
                                                                        http://www.delphikingdom.com/asp/userlist.asp
                                                                        Ответить
                                                                    • Код был написан под PHP 4.3.

                                                                      Until and including PHP 4.3, it was possible to send, assign or return variables by reference that should really be returned by value, such as a constant, a temporary value (e.g. the result of an expression), or the result of a function that had itself been returned by value, as here:

                                                                      <?php
                                                                      $foo = "123";
                                                                      
                                                                      function return_value() {
                                                                          global $foo;
                                                                          return $foo;
                                                                      }
                                                                      
                                                                      $bar = &return_value();
                                                                      ?>


                                                                      В PHP 4.4 уже нельзя писать & перед вызовом функции, т. е. ссылаться на безымянный результат уже нельзя.

                                                                      Для истории: PHP 5.0 вышел в 2004-м году.
                                                                      Ответить
                                                                      • Во, я перепутал место где собачку амперсанд вставлять
                                                                        Ответить
                                                                        • Только представь, живой сайт, писавшийся под PHP 4, т. е. ему (скорее всего) больше двадцати лет. Сейчас некоторым пэхапэшникам меньше двадцати.

                                                                          А помнишь, ради PHP3 было специальное расширение .php3? В эпоху, когда mod_rewrite ещё не вошёл в моду, можно было в URL наблюдать питушню вроде index.php3.

                                                                          https://forum.ixbt.com/topic.cgi?id=24:017554
                                                                          Ответить
                                                                          • Я помню .phtml расширение еще.

                                                                            Но вообще когда я познакомился с вебразработкой под уникс, там везде был Perl, CGI, и SSI, и конечно целая пачка модулей под Apache.
                                                                            Ответить
                                                                          • я славно напирдолился с апачью в свое время. К счастью, у меня была книжка с лошадью от ориелли.

                                                                            Апач был чуть ли не первый серьезный сервер, с которым я столкнулся, и конечно мир был полон удивительных открытий
                                                                            Ответить
                                                                      • В чем цимес? чтобы потом поменять foo через bar?
                                                                        Ответить
                                                                  • Server:
                                                                    Jino.ru/mod_pizza

                                                                    ебать какое
                                                                    https://samag.ru/archive/article/1196
                                                                    Ответить
                                                          • Идея создания виртуального клуба впервые возникла в 1997 году, в результате знакомства трех программистов в чате Диван Махаона.

                                                            аа! чат диван!
                                                            Ответить
                                                            • 1997

                                                              Суперхацкиллер
                                                              Ответить
                                                              • ахах
                                                                https://habr.com/ru/users/superhackkiller1997/


                                                                Царь разъёбует джавушка
                                                                https://habr.com/ru/articles/338084/comments/#comment_10420608
                                                                Ответить
                                                                • царь пошёл на поле криптоцыган, где ожидаемо проиграет, потому что у него банально спиздят конярду
                                                                  Ответить
                                                                  • Да, но срачики там вполне общепрогарммерские, а не про криптушню.

                                                                    Царь доказывает, что асинхронность не нужна, потому что можно насрать 10000 потоков, и потечь. Он и на ГК это говорил.

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

                                                                    Наконец царь говорит, что никакой ДЖЫТ в джаве не заменит прокладку между сидением и монитором и потому джавалалки всегда будут сосать
                                                                    Ответить
                                                                    • удачи ему

                                                                      слава богу, что он срёт там, а не тут
                                                                      Ответить
                                                                      • А я бы с радостью почитал высеры царя, он забавный
                                                                        Ответить
                                                                        • тебе мало собрания сочинений тут, на лоре и на швабре? ленин отдыхает
                                                                          Ответить
                                                                    • ДЖЫТ — хуйня. АОТ и то лучше, ибо он не греет процессор при каждом старте. Но даже АОТ не спасёт Йажу по причинам, озвученным Царём: рефлексия и горбатый метельщик никуда не денутся.
                                                                      Ответить
                                                                      • Если AOT сделает esc analysys, то хотя-бы структуры из двух буленов можно будет избавить от горбатого.

                                                                        Но там и кроме него говна хватает. Знаешь, как происходит линковка? Вот ты в коде заимпортил класс и вызвал метод. Класслоадер загрузит (с диска!) класс, составит таблицу его методов и дернет их. И это всё происходит в рантайме. Это позволяет не пересобирать при добавлении метода и поля правда, но это же не бесплатно.

                                                                        А проверка типов в рантайме обязательная? А границы массива всякие? А боксинг при обобщенном программировании?
                                                                        Ответить
                                                                        • Я уже представил себе поиск Lcom/java/kuryatnik/pituh/doKoKoKo; в рантайме.
                                                                          Ответить
                                                                          • А теперь вспомни, что в Java принято создавать бесчётное число классов: всяких адаптеров, визиторов и пр, и что даже сахар вроде лямбл всё равно превращается в `.class` файлы. В проекте средних размеров `.class` файлов десятки тысяч может быть.

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

                                                                            Так что AOT тут не оч поможет
                                                                            Ответить
                                                                        • > А границы массива всякие?

                                                                          Это мелочь по сравнению с остальной нагрузкой. Есть же gcc -fbounds-checking для сишки, есть язык Ада, есть Object Pascal, есть D.

                                                                          Проверка границ позволяет не хватать CVE «выполнение произвольного кода при переполнении буфера».
                                                                          Ответить
                                                                          • ха-ха
                                                                            https://github.com/Shnatsel/bounds-check-cookbook/

                                                                            На самом деле представь себе такой код на вымышленном языке
                                                                            for(int i = 0; i < 1_000_000; i++) {
                                                                               petushki[i].petushok();
                                                                               petushki[i].petushok();
                                                                               petushki[i].zolotoy();
                                                                               petushki[i].grebeshok();
                                                                               petushki[i].maslena_borodyshka();
                                                                               petushki[i].shelkova_golovyshka();
                                                                            }

                                                                            Если компилятор тупан, и не осилит доказать, что петушков меньше миллиона, то будет довольно дохуя лишних действий делаться
                                                                            Ответить
                                                                            • Да, тут нужен оптимизирующий компилятор с flow analysis, чтобы выносить проверки за скобки, а не как javac.
                                                                              Ответить
                                                                              • Почему нельзя отключать проверку в продакшн билдах?
                                                                                Ответить
                                                                                • Можно. Так и делают.

                                                                                  Во Фрипаскале и в Дельфи можно даже отключить локально, только в горячих местах.
                                                                                  Ответить
                                                                                  • Вообще неоднозначная тема.

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

                                                                                      https://govnokod.ru/27648#comment669198

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

                                                                  Всё так.
                                                                  Ответить
                                                                  • Царь мне вообще нравится.

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

                                                                    Меня тоже безмерно заеабали миф и легенды про то, как анскиллявый питух на джаваскрипте напишет левой ногой хуиту, а потом придет мудрый JIT, и оптимиизрует этот код так, словно его Кармак писал.

                                                                    Не было такого, и не будет никогда
                                                                    Ответить
                                                                    • когда тебе начнут нравиться нормальные люди?
                                                                      Ответить
                                                          • Королевство кривых.
                                                            Ответить
                                                          • блядь какой пиздатый сайт
                                                            https://i.postimg.cc/SKR2mpwH/image.png
                                                            Ответить
                                                • Более известный как Потёрпидор?
                                                  Ответить
                                              • мем про новый джвиок?
                                                Ответить
                                      • нет, не нужна

                                        она может понадобиться, если ты хочешь при помощи специальных мокросов получить из сишных структур модные свифтовые классы с методами, но это необязательно
                                        Ответить
                                      • Видал

                                        https://dlang.org/spec/objc_interface.html
                                        Ответить
                                        • Про плюсы тоже хорошо.

                                          А почему про D мало говорят?
                                          Ответить
                                          • Не знаю, никто не форсит

                                            Но с objc смешно: в одном есть arc, в другом gc, но вместе извольте руками release звать
                                            Ответить
                                            • D is a systems programming language with support for garbage collection

                                              хм.. Я не могу не доверять Александрску, но звучит необычно

                                              А как же j123 хотел его в контролер завести?

                                              Или горбатый дворник там опционален?
                                              Ответить
                                              • Опционален. google: better C

                                                В режиме «better C» нельзя использовать какие-то встроенные классы, потому что их рантайм использует горбатого дворника.
                                                Ответить
                                                • Что мешает использовать C++ как better C?
                                                  Ответить
                                                  • неприятная метушня?
                                                    Ответить
                                                    • Так не используй
                                                      Ответить
                                                      • Чувак, я ничего не знаю про D.

                                                        j123 говорил, что в "D" ему нравится метапрограммирование. Чем better C еще better than C я не знаю.

                                                        Кстати, а почему better C не Objc? OBjc полностью совместим с сишкой, вот просто бери, и теки.
                                                        А поверх этого обычное ООП
                                                        Ответить
                                                        • https://dlang.org/blog/2017/08/23/d-as-a-better-c/
                                                          Ответить
                                                          • Consider a C program:
                                                            The executable size is 23,068 bytes.
                                                            Translate it to D:
                                                            The executable size is the same, 23,068 bytes. This is unsurprising because the C compiler and D compiler generate the same code, as they share the same code generator. (The equivalent full D program would clock in at 194Kb.)

                                                            лол кек
                                                            Ответить
                                                            • почему такие большие размеры вообще? COFFы чтоль столько весят?

                                                              Впрочем, в соверменно мире сто метров -- норм размер бинаря
                                                              доказано Go
                                                              Ответить
                                                              • рантайм же

                                                                если ты про сижную программу, то не знаю
                                                                Ответить
                                                              • Тут речь о слинкованной программе, а не об одном объектнике. Если статически подшить рантайм, то 200 кило для питушни с динамическими массивами и горбатым метельщиком — это норма.
                                                                Ответить
                                                        • > почему better C не Objc?
                                                          – ObjC это ужасный язык, плюсы совместимости с сявкой полностью перекрываются его чудовищностью
                                                          Ответить
                                                          • А что в нем ужасного?

                                                            Синтаксис необычный? Плюшек маловато? Вербозность?
                                                            Ответить
                                                            • та я даже не знаю с чего начать

                                                              1. вербозный

                                                              2. message dispatch, который, во-первых, тормоз, во-вторых, позволяет себе выстрелить в колени и копчик при помощи всяких forwardInvocation (ок, этим никто не пользуется, но всё равно)

                                                              3. отсутствие перегрузки методов в связке с нестрогой типизацией даёт пространство для креатива, на фоне которого php это венец изящества

                                                              4. отстутствующие фичи, которые лечатся костылями (эмуляция private пропертей и методов при помощи категорий)

                                                              5. nssomeclass и nsmutablesomeclass в стандартной блевотеке, потому что для let и var пришлось ждать другую цивилизацию

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

                                                              7. кастрированные женерики, придуманные чисто для хоть какой-то совместимости со швифтом

                                                              7а. по той же исторической причине ТИПА гетерогенные коллекции

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

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

                                                              10. разделение на хедеры и собственно сорцы

                                                              ой устал уже
                                                              Ответить
                                              • Вот, чтобы не играть в испорченный телефон:

                                                https://dlang.org/spec/betterc.html

                                                D features not available with BetterC:
                                                • Garbage Collection
                                                • TypeInfo and ModuleInfo
                                                • Classes
                                                • Built-in threading (e.g. core.thread)
                                                • Dynamic arrays (though slices of static arrays and pointers work)
                                                • Associative arrays
                                                • Exceptions
                                                • synchronized and core.sync
                                                • Static module constructors or destructors

                                                **********

                                                Nearly the full language remains available. Highlights include:

                                                •Unrestricted use of compile-time features
                                                • Full metaprogramming facilities
                                                • Nested functions, nested structs, delegates and lambdas
                                                • Member functions, constructors, destructors, operating overloading, etc.
                                                • The full module system
                                                • Array slicing, and array bounds checking
                                                • RAII (yes, it can work without exceptions)
                                                • scope(exit)
                                                • Memory safety protections
                                                • Interfacing to C++
                                                • COM classes and C++ classes
                                                • assert failures are directed to the C runtime library
                                                • switch with strings
                                                • final switch
                                                • unittest
                                                • printf format validation
                                                Ответить
                                              • Мне стало интересно, есть ли жизнь в D (за пределами better C) без жопы с метлой. И вот что удалось найти:

                                                https://web.archive.org/web/20120908041550/3d.benjamin-thaut.de/?p=20

                                                Чувак переписал рантайм (libphobos), чтобы деаллоцировать объекты вручную.

                                                Ещё мысли на эту тему здеся:

                                                https://stackoverflow.com/questions/13574552/d-programming-without-the-garbage-collector
                                                Ответить
                                                • https://dlang.org/spec/garbage.html#gc_registry

                                                  можешь свой gc прикрутить, хе-хе
                                                  Ответить
                                  • API нужно писать на нормальных языках.

                                    Я ловил багры от Windows SDK, потому что результат компиляции зависел от порядка #include: макросы из одного хедера конфликтовали с другими хедерами.

                                    Если бы там всё без макросни было... А так это говно лучше сжечь напалмом и начисто переписать по документации.
                                    Ответить
                                    • Что выросло -- то выросло.

                                      API операционок, UEFI и большиства серьезных lib/SDK описываются в терминах си.
                                      Ответить
                                  • > Вообще, все япы кроме си, си пипи и обжси сосут по причине несоместимости с сишкой

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

                                    > Почему не сделать нормальный язык, но совместимый с сии?

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

                                      да, но только неряшливый хедер. Большинство хедеров SDK и API операционок работают в C++.
                                      Хотя в Windows.h стопудово есть провека на С++ (за прыщи не скажу)
                                      Ответить
                                      • Если ты из крестов дергаешь скомпированный сишкой код, в любом случае нужна хуйня типа
                                        #ifdef __cplusplus extern "C" {

                                        для прототипов функций.
                                        Ответить
                                        • так а нельзя чтоли в `petuh.cpp` сделать тай
                                          extern "C" {
                                                  #include "my_c_header.h"
                                          }

                                          ??
                                          Ответить
                                          • Можно и так, но лучше чтобы в самом хедере была хуйня для проверки того, сишка или кресты. Потому как в хедере могут быть хуйни, которые для C++ невалидны, а для C валидны, и через ифдеф можно невалидные для крестов хуйни выкинуть, и сделать вариант хуйни, валидный для крестов.
                                            Ответить
                                            • А совместимы-ли прыщавые хедера с крестами?
                                              Ответить
                                              • Что ты понимаешь под "прыщавые хедера"?
                                                Ответить
                                                • Заголовочные файлы, распостраняемые с ядром "Linux". Те, в которых описаны системные вызовы, и всякие другие ос-специфичные API.


                                                  Или же они распостраняются с компилятором, а ядро лишь предоставляет ABI?
                                                  Ответить
                                                  • Кажется, я понял.

                                                    "Linux" предоставляет `.h` файлы только для разработчиков кода, работающего в ядре. Такой код не обязан быть совместимым с `C++`.

                                                    Код для пользовательского режима пишется с использованием заголовков из пакета компилятора (обычно это пакет `GCC`) и потому вопрос смысла не имеет.
                                                    Ответить
                                                • ♤♡♡◇◇□◇♧◇♡♤■□●○°°☆▪︎¤《》》¿¡¡《¤▪︎▪︎☆○●□《
                                                  Ответить
                        • https://habr.com/ru/articles/811163/

                          > Самая фундаментальная проблема заключается в том, что borrow checker вынуждает выполнять рефакторинг в самые неудобные моменты. Разработчики на Rust считают это положительным моментом, потому что это заставляет их «писать хороший код», но чем больше я работаю с языком, тем сильнее сомневаюсь, что это так. Хороший код пишется благодаря итеративной работе с идеями и экспериментам, и хотя borrow checker может заставить увеличить количество итераций, это не означает, что таков желательный способ написания кода. Часто я обнаруживал, что именно невозможность просто пойти дальше, решить свою задачу, а проблему устранить позже, мешает писать хороший код.

                          Какой багор )))
                          Ответить
                          • У меня в C++ бывает проблема, что мне нужно поменять поле, но объект const. В этом случае я не трачу время на рефакторинг, а помечаю поле mutable или убираю const по цепочке вызовов. В крайнем случае снимаю const через const_cast.
                            Ответить
                          • Вот бы ещё с++ запускать через интерпретатор для новых файлов - компиляция-то время занимает
                            Ответить
        • Чому не пишешь?
          Ответить
    • В комментариях какие-то наркоманы пытаются это говно оправдать, пиздец
      Ответить
      • Ветер дует.
        Собака лает.
        Караван идёт.
        Наркоманы жрут говно.
        Ответить
    • кто круче: маркграф или пфальцграф??
      Ответить
    • Я сравнил короче Protobuf, CapnProto и FlatBuffers.

      Ну понятно, что ProtoBuf более всего делал `memcpy`, и потому оказался чуть медленее, но зато его представление не выровнено, и потому компактнее.

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

      Разница типа 70ms vs 160ms на миллион питухов
      Ответить
    • По данным ГородРабот.ру, средняя зарплата в России за 2023 год ‒ 68 787 рублей (729,02 USB)
      Average Wages in Moldova increased to 12176 MDL/Month (676.862 USD/Month)
      Ответить
    • лал
      https://emacs.ch/@a13cui/111046238207230058
      Ответить
    • питух открыл, что если обмазаться ООППАТтернами, то код станет медленее.

      Питух, ООпаттерны для интерпрайзного жаюаёба на галере, а не для AAA
      https://habr.com/ru/articles/760184/
      Ответить
    • ☺☺
      Ответить
    • ⛰⛽⚽️
      Ответить

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