1. PHP / Говнокод #27492

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    <?php
    // bitrix/modules/main/classes/mysql/database.php:: 176
    
    if(!$result)
    {
    .......
    	if(!$bIgnoreErrors)
    	{
    .......
    
    		if(file_exists($_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/php_interface/dbquery_error.php"))
    			include($_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/php_interface/dbquery_error.php");
    		elseif(file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/dbquery_error.php"))
    			include($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/dbquery_error.php");
    		else
    			die("MySQL Query Error!");
    
    		die();
    	}
    	return false;
    }
    
    // bitrix/modules/main/include/dbquery_error.php
    <br>
    <table>
    //верстка html страницы со вставками переменных через <?= ?>
    </table>

    Исключения? Не, не слышали. Пусть конечный разработчик голову ломает, почему он не может отловить MySQL Query Error [1062] Duplicate entry ......

    Запостил: crazzy501, 30 Июня 2021

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

    • Н-да, хуже программиста «РНР» может быть только программист на «Go» (он программирует и на «РНР», так сказать, совмещая неприятное с вредным).

      Но ещё хуже – закриптовать хард и забыть пароль....
      Ответить
      • Урааа! Кошечка программера вернулась!
        Ответить
      • Именно поэтому я за «PHP».
        Ответить
      • > закриптовать хард и забыть пароль....

        Повезло, что дома нашёлся паяльник и удалось восстановить пароль при помощи терморектального криптоанализа?
        Ответить
    • предлагаю стерилизовать всех PHP девелоперов...
      Ответить
    • А у меня в «Си» нет никаких исключений. Именно поэтому я за «Си».
      Ответить
      • Есть ли в твоём "Си" собачка?
        Ответить
        • Она там по-умолчанию. Именно поэтому я за "Си".
          Ответить
        • Собачка есть в объективных си
          Но она другой породы

          А что что в С++ нет оператора собачка это плохо
          Ответить
          • В чем вообще бенефит от использования тяфки в PHP? Чтобы разные ошибки можно было к единому формату привести?
            Ответить
            • Чтобы программа продолжала работать даже в случае ошибки, и приводила к неверным резлуьтатам
              Ответить
              • Почему сразу неверным?
                Ответить
              • И портила данные где-нибудь в MySQL или файлах, ага. И вообще в ней бы самопроизвольно зародился разум.
                Ответить
                • AI пришел откуда не ждали. Сорос все это время спонсировал вордпресс с весьма определенной целью...
                  Ответить
            • Чтобы можно было выполнить таск типа "исправить ошибку Undefined variable at..." за 5 минут и +1 байт.

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

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

                      Уж лучше собачка, чем эти гонки на ровном месте.
                      Ответить
                      • Вот тут было очень ржачно:
                        https://govnokod.ru/25839

                        Не на эту тему, но на тему гонок при проверке прав доступа.
                        Ответить
                      • В каких-то окружениях допустимо считать, что файл никто кроме тебя не трогает, но в общем случае я же написал:

                        >А если файл удалился уже после проверки (транзакицонности у FS нет), то что делать?


                        Вообще ограничения зависят от задачи же. Менеджеру виртуальной памяти допустимо считать, что внешнее хранилище (куда он свапит) никуда не денется, а файловому менеджеру, копирующему файл на флешку, так считать нельзя)
                        Ответить
          • В «C++» собачка используется, чтобы «манглить имена», что бы это ни значило.
            Ответить
            • Ну так я и в сишечке могу
              "WinMain@16", лол
              Ответить
            • Причём не в языке, а в ассемблерном выхлопе из него.
              Ответить
              • И в языке можно, когда делаешь ассемблерные вставки, например...
                Ответить
                • У нас даже был говнокод с асм-инъекцией: в сишке использовали переменную со знаком $, она пролезла в ассемблерный выхлоп без изменения, а там гнутый ассемблер с синтаксисом «AT&T» неправильно интерпретировал этот знак.
                  Ответить
                  • А зачем из сишки мнемоники генрерить? почему не сразу опкоды?
                    Ответить
                    • Чтобы ассемблерные вставки работали. Они же у gcc тупо текстом втыкаются посреди листинга, который он сам нагенерил.
                      Ответить
                      • а, всё, понял, туплю
                        какой багор ))

                        именно по этому я за интеловый свинтаксис
                        Ответить
                    • За пределами «GNU» так и делают обычно.
                      Ответить
                  • Кстати, насколько помню, ядро линукса абузило асм-инъекцию для сборки стартового кода под 386 в реалмоде. Сам по себе "gcc" не умеет 16-битный код генерить, а вот "as" умеет. Поэтому линус воткнул директиву, которая заставляет as трактовать текущий сегмент как 16-битный и фигачить префиксы для 32-битной адресации и операндов. Само собой на настоящем 8080 этот кентавр потом не запустится, но всем пофиг.
                    Ответить
                    • s/8080/8086/

                      Да, «Линукс» рассчитан минимум на 80386. Из-за этого в своё время даже были срачи о «завышенных требованиях». Мол, «Xenix» и «Windows» можно запустить на 80286, а «Линукс» нельзя.
                      Ответить
                      • Линукс действительно не работал без поддержки страниц (один из нахрюков Танненбаума на Линуса), бо Линус и писал-то его чтобы со страничной адресацией разобраться

                        Только в классическом IBM PC 5150 не было 8080. И 8086 тоже небыло.
                        Там был 8088.

                        Отличался он тем, что шина данных была 8 бит, то есть за один раз он мог передать 1 байт только.

                        Так что на неём не нужно была это ваше сраное выравнивание.
                        Очень удобный и эффективный процессор
                        Ответить
                    • Типа AS думал, что он в ``.code16``, писал префикс ``addr32`` , и таким образом из реального режима обращался к 32х битным данным, которые высрал gcc?

                      Я думал, загрузчик целиком на асме написи
                      Ответить
                      • В реальном режиме можно использовать префиксы addr32 и data32. Только вот адресация будет не такая, как в защищённом режиме: в защищённом режиме в сегментных регистрах лежат селекторы, а в реальном — базовый адрес, делённый на 16.
                        Ответить
                        • А кто использует защищенный 16-ти битный режим кроме win311 и xenix?
                          Ответить
                          • OS/2 использовала и ещё какие-то программы для DOS (например, «Борманд Паскаль» со своим расширителем RTM/DPMI16).
                            Ответить
                            • Кстати, недавно увидал

                              https://docs.microsoft.com/en-us/windows/console/legacymode
                              там есть ссылка
                              https://docs.microsoft.com/en-us/windows/compatibility/ntvdm-and-16-bit-app-support

                              [quote]
                              Many enterprise customers are still running 16-bit Windows applications and depending on this feature.
                              [/quote]
                              DISM /online /enable-feature /all /featurename:NTVDM

                              какой багор ))
                              Ответить
                              • Он работает только в 32-битной Винде.

                                Для 64-битной нужно ставить сторонний софт.

                                https://github.com/otya128/winevdm

                                http://www.columbia.edu/~em36/ntvdmx64.html
                                Ответить
                                • угу, в 64х битном режиме не работает v86

                                  Просто смешно, что он еще кому-то нуджен
                                  Ответить
                    • Сейчас для «gcc» уже есть бекенд «8086» («Sourcery CodeBench Lite for IA16»):
                      http://www.mentor.com/embedded-software/codesourcery

                      Он поддерживает только модель «tiny» (компиляция в COM-файл). Работу с сегментами не поддерживает.
                      Ответить
                      • Скорее всего его написили, чтобы написать GRUB. Иначе как грузица в реал моде с MBR?
                        Ответить
                        • > как грузица в реал моде с MBR

                          Десяток инструкций на переход в защищённый режим, несложная обёртка над вызовом прерывания. Всё остальное в 32 или даже 64 битах как положено. Нахуй и впизду этот реалмод, ещё бы с ним пердолиться...
                          Ответить
        • [deleted]
          Ответить
    • мощная какая система линковки, прямо 21-й век
      Ответить

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