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

    +156

    1. 1
    2. 2
    if($GLOBALS["curLogin"]!='sasha'){ echo '<div class="alert alert-error" style="margin:5px;"><button class="close" data-dismiss="alert" type="button">×</button>
    Раздел на реконструкции. Ориентировочно на 20-30 минут. Прошу прощения за неудобства</div>'; exit; }

    Запостил: tcore, 30 Октября 2014

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

    • Настоящий пхпшник Саша не пользуется контролем версий , автодеплоем и континиус интегрейшеном.
      Он заходит фаром по фтп на сайт, выгружает туда файлик index.php с таким вот содержимым, а потом загружает остальные файлики из папки "rabota". Ну чтобы юзвери не бесились от неработающего сайта пока новые файлики грузятся.
      Ответить
      • Как раз файлики в большинстве случаев можно заменять без остановки сайта. Другое дело — апдейт базы данных.
        Ответить
        • ну да, вылетит "failed to include' какой-нить пару раз
          ничего страшного
          Ответить
          • У настоящих пэхапэшников «failed to include» периодически вылетает даже без обновления сайта.
            Ответить
            • Настоящие пхпшники затыкают все ошибки @ и ничего у них не падает
              Ответить
              • Если судить по тому, сколько ворнингов сайты вываливают на обозрение почтеннейшей публике, то настоящие пхпшники — редкость.

                Да что мы всё о PHP да о PHP? На сайтах солидных компаний, сделанных на ASP или на Java, тоже вылетают ерроры и ворнинги. А на сайте ОАО «Мобильные телесистемы» (НЕ РЕКЛАМА!) я вообще увидел интересный тег:
                <1-- название тарифного плана -->

                Да, чтобы убрать со страницы тарифный план, перемещённый в архив, его тупо убрали в комментарий. Но у верстальщика Shift предательски не нажался, и весь текст ушёл на страницу.
                Ответить
                • Так так, давайте не путать котлеты с тёплым!

                  PHP выдвает варнинги в браузер и продолжает работать. Потому варнинги оказываются приятно вплетёнными в HTML. Выглядит это очень умильно.
                  Умные люди, понятное дело, такое поведние отключают и показывают пользователю красивую 500ку, а ошибку пишут в логи. Но так редко кто делает, увы.

                  Всякие кошерные фреймворки типа Zend тоже стараются вести себя хорошо.

                  ASP классический ведет себя чуть-чуть лучше: он сначала говит ответ, потом его шлет. Потому в аутпут попадает либо нормальный ответ либо ТОЛЬКО ошибка. Опять же: можно вместо ошибки показывать кастомную страницу.

                  Поведение ASP.NET (в классическом варианте, без кастомных шаблонизаторов) показывает "желтую страницу смерти" в том случае если эксепшен долетел до верху стека потока. Это плохо, но всё равно лучше чем PHP.

                  Поведение JAVA зависит от шаблонизатора. JSP(X) может вести себя хорошо и показывать error page, а может плохо и просто останавливать рендеринг. Тогда пользователь увидит кусок HTMLя, что тоже плохо.
                  Ответить
                  • > желтую страницу смерти
                    Она же вроде только в дебаге, а на продакшене не показывается?
                    Ответить
                    • Показывается и там и там.
                      Но в дебаге там значительно больше инфы.

                      Сравните:
                      Продакшен: http://www.4guysfromrolla.com/images/ue1.jpg
                      Дебаг: http://i.stack.imgur.com/5e2Nr.png

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

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

                          Хотя обычно принято ругать тамошний фреймворк, например.

                          Ну а чтоб сравнить -- попробуйте сделать что-нить например PHP + ZendFramework, например и почуствуйте разницу)
                          Ответить
                      • Приходилось видеть то, что изображено на скриншоте, озаглавленном «Дебаг», на боевых серверах, даже солидных компаний. Вот только скриншотить руки не доходили, поэтому пруфов не приложу.
                        Ответить
                    • Ещё полезно customErrors mode="RemoteOnly". Пользователь видит заглушку, а владелец сервера - ошибку.
                      Ответить
                      • ага)

                        В общем от PHP это отличается примерно также, как каменный молоток от пневматического)
                        Ответить
      • Ух-ты, настоящий Анонимус!
        Ответить

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