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

    +155

    1. 1
    2. 2
    list($usec, $sec) = explode(' ', microtime());
    $s2_start = ((float)$usec + (float)$sec);

    О первом параметре функции microtime не слыхали?
    http://s2cms.ru/trac/browser/trunk/index.php#L11

    Интересное замечание: hook'и копипастом подключаются

    ($hook = s2_hook('idx_pre_redirect')) ? eval($hook) : null;
    // …
    ($hook = s2_hook('idx_pre_rss')) ? eval($hook) : null;
    // …
    $return = ($hook = s2_hook('idx_get_content')) ? eval($hook) : null;
    // и так еще 4 раза

    Функцию надо.

    Запостил: volter9, 07 Ноября 2014

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

    • Дам там весь файл прекрасен
      строки 36-42 тоже радуют

      Фрактал плохого дизайна в действии, тащемт
      Ответить
    • никому не въебал по плюсу!
      Ответить
      • И по минусу тоже не въебал?
        Ответить
        • А по минусу Вы сами себе въебите.
          Ответить
          • Ок, въебал себе минус.
            Ответить
            • я медленно въебывваю себе минус...
              Ответить
              • Клуб анонимных онан самобичевателей.
                Ответить
                • в каком месте анонимных?
                  Ответить
                • А ведь и правда работает. Интересно, насколько такая схема совместима с link prefetch...
                  Ответить
                  • Если бы link prefetch лез куда попало, люди бы плакали горючими слезами от внезапно удалённых фоточек во вконтактах и одноклассниках...

                    Видимо там далеко не все ссылки префетчатся.

                    P.S. Вот: https://developer.mozilla.org/en-US/docs/Web/HTTP/Link_prefetching_FAQ
                    Ответить
                    • Крупные социальные сети используют GET для изменения состояния? Мне всё чаще кажется, что пэхапэшники не умеют думать...
                      Ответить
                      • > Мне всё чаще кажется, что пэхапэшники не умеют думать...
                        Значит мне пора в пехепешники ;( Не подумал про тип запроса.
                        Ответить
                        • Да, давайте будем всё писать на PHP! Уже есть PHP-GTK и PHP-Qt.
                          Ответить
                          • Предлагаю сделать плагин к браузеру, чтобы клиент-сайд тоже был на пхп.
                            Ответить
                            • Даже небо, даже Аллах
                              Ответить
                            • ну JS же рвется в бекенд (node), так почему бы не поменять местами две питушни?

                              Кстати говоря у MS можно запустить его под windows script host, и будет работать в IE (наверное)

                              http://php.net/manual/fa/install.windows.activescript.php
                              Ответить
                              • Совсем незначительная проблема: его негде взять. Из коллекции PECL его удалили, в Гитхабе он не гуглится. Найти и установить его в 2014-м году стало нетривиальной задачей.

                                P.S. Нашёл для PHP 5.0, 5.1, 5.2:
                                http://web.archive.org/web/20080725041701/http://pecl4win.php.net/ext.php/php5activescript.dll
                                Ответить
                              • А вот всё, что осталось от исходников:
                                https://github.com/php/php-src/tree/PHP-4.4/sapi/activescript/
                                Ответить
                                • php даже внутри себя php

                                  tsrm_startup(128, 1, TSRM_ERROR_LEVEL_CORE, "C:\\TSRM.log");


                                  корень цэ -- отличное место для лога
                                  Ответить
                                  • vcredist.exe от Microsoft®™ — это тоже php, ведь он срёт в корень при установке?
                                    Ответить
                                    • Это вроде как рантайма для сей
                                      а что именно он срет в корень?

                                      По идее лог должен идти в %temp%, а .dll в winsxs или как оно там side by side, не?
                                      Ответить
                                      • А там от версии зависит. В одних лог, в других всякие readme.txt и license.txt.
                                        Ответить
                                        • речь конечно о последних версиях) в современной винде у юзера может не быть доступа к корню (uac же)

                                          не так давно МС понял то что знали в униксе сто лет: в многопользовательской ОС не стоит срать в корень)
                                          Ответить
                                          • > в современной винде у юзера может не быть доступа к корню
                                            Но vcredist без прав админа не ставится. Поэтому он срёт в корень с чистой совестью. Причем там иногда вываливается не только лог, но и куча каких-то непонятных файлов от инсталлера... Походу какой-то путь неправильно вычислили, и поюзали корень как временную папку.
                                            Ответить
                                            • Ну может быть не нашли переменной вроде %TEMP% или %TMP%.

                                              В целом же вся современная MS кухня старается использовать временные папки.
                                              Ответить
                                  • Всё-таки нашёл для пятёрки:
                                    https://gitlab.lug.ustc.edu.cn/vanabel/php-sandbox/commit/3d9eeb4538cb9c901362729d7a03749730ada251

                                    Да, тоже "C:\\TSRM.log".
                                    Ответить
                                    • а еще я там сразу увидал:

                                      if (type == E_ERROR && EG(exception) && strstr("Exception thrown without a stack frame", format)) {
                                      2014


                                      тут де-то был такой код на пхп типа
                                      if ($error == ''ошибка')


                                      преемственность, однако
                                      Ответить
                              • > Кстати говоря у MS можно запустить его под windows script host, и будет работать в IE (наверное)

                                Отыскал самые свежие исходники PHPScript a. k. a. ActivePHP. Оказывается, что достаточно в официальном™ репозитории выполнить:
                                git checkout 9a19f065afbb48d49ff64a1cb8e95e470541cad4

                                Задача поиска нужного коммита в гите оказалась нетривиальной.

                                После двух тривиальных исправлений (там у двух функций стало на один параметр больше) скомпилировалось в PHP 5.3. В windows script host работает, брат жив. Правда, приходится заменять php5ts.dll свежескомпилированной. В IE — ни под каким видом. Может быть, причина в том, что я поленился пересобрать весь пых целиком, а может и в другом...

                                Самое интересное, что в ридмишке к activescript для PHP 4.x была строка, которую выпилили из ветки PHP 5.x:
                                o. Client-side script in Internet Explorer

                                Т. е. теперь авторы и не надеются, что в IE заработает.
                                Ответить
                                • > git checkout 9a19f065afbb48d49ff64a1cb8e95e470541cad4
                                  Так ты его случаем до четвертопыхи не откатил? :) Какая версия в этом коммите?
                                  Ответить
                                  • Файл NEWS начинается с заметки:
                                    ?? ??? 2004, PHP 5.1.0


                                    P.S. После 5.1 activescript перенесли из репозитория пышечки в репозиторий PECL, а как из него добыть нужную версию, пока ещё не понял.
                                    Ответить
                      • Кстати, а я вот тут подумал и вспомнил - всё-таки GET и в социалках и почтовиках иногда имеет побочные эффекты!

                        Например одноклассники логируют факт входа на страничку, и показывают его ее хозяину.

                        А почтовики помечают письма как прочитанные. Говнокодик - аналогично.

                        Встречаются некешируемые страницы, которые префетчить бесполезно.

                        В общем, префетчить всё подряд - плохая идея.
                        Ответить
                    • > люди бы плакали горючими слезами от внезапно удалённых фоточек во вконтактах и одноклассниках...
                      А CSRF-токен и <form> не спасёт? Или нынче для верности ещё JS исполняют заранее, попутно все формы отправляя?
                      Ответить
                      • > CSRF-токен
                        Нет конечно. Он же от чужих ссылок спасает, а тут свои, родные.

                        > JS
                        JS должен спасти, да. Но лучше подстраховаться и не префетчить ничего, что не указано явно.
                        Ответить
                • Псевдонимных же.
                  Ответить
      • Hui
        Ответить

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