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

    +156

    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
    function t($text, $parameters = null) {
            $lang = empty($_COOKIE['lang']) ? 'ru' : $_COOKIE['lang'];
            $result = !array_key_exists($text, Application_Model_Translate::$lang_package) || ($lang == 'ru') ? $text :
                    Application_Model_Translate::$lang_package[$text][(int) ($lang == 'en')];
            if (isset($parameters)) {
                    if (!is_array($parameters))
                            $parameters = array($parameters);
                    foreach ($parameters as &$param)
                            $param = addslashes($param);
                    eval('$result = sprintf($result, "'. implode('","', $parameters) . '");');
            }
            return $result;
    }

    Запостил: Groovy, 10 Января 2014

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

    • ох, пиздец.
      Ответить
    • > eval('$result = sprintf($result, "'. implode('","', $parameters) . '");');
      Автор явно не знал про call_user_func_array :)
      Ответить
      • Авторая явно не знал про vsprintf()
        Ответить
        • Лол, даже его в пыху притащили из сишки ;)
          Ответить
          • гг, пых же написан на С))
            Ответить
            • Но ведь не всё же протащили в пых.
              Ответить
              • не все, но многое... изначально ж захотели динамическую сишечку, ну и понеслась...
                Ответить
                • На гейдеве сегодня захотели интерпретируемые кресты. И даже нашли.
                  Ответить
                  • и че нашли? boost::wave?
                    Ответить
                    • cint

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

                      Никак от лени учить новый язык.
                      Ответить
                      • Они ещё не знают, что в CLHEP есть классы для работы с матрицами.
                        Ответить
                      • > интерпретатор крестов
                        Очень важно, чтобы интерпретатор крестов был написан на крестах. Тогда можно запустить кресты в крестах в крестах в крестах...
                        Ответить
                        • >>Тогда можно запустить кресты в крестах
                          http://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B5%D1%81%D1%82%D1%8B
                          Ответить
                          • Если интертесно, то тема:
                            http://www.gamedev.ru/flame/forum/?id=184799
                            Читал по диагонали, кода не нашел. Тема скушная, так что заходить не стоит. Как я понял автору лень изучать новый язык и он хочет запилить скрипты на крестах, но они долго компилируются и не имеют рефлексии, поэтому хочет взять интерпретатор.
                            Ответить
                            • Я пишу убийцу юнити:)

                              Дальше не читал.
                              Ответить
                              • ИЧСХ еще ни один "убийца" никого не убил. А все потому что настоящий хитман остается незамеченным.
                                Ответить
                              • хорошо хоть не CryEngine 4
                                Ответить
                            • это не просто крестоблядство ради крестоблядства, это еще и развращение малолетних программистов, за такое сажать надо
                              Ответить
                            • >Читал по диагонали, кода не нашел. Тема скушная, так что заходить не стоит. Как я понял автору лень изучать новый язык и он хочет запилить скрипты на крестах, но они долго компилируются и не имеют рефлексии, поэтому хочет взять интерпретатор.
                              cling уже сделали. Автор - слоупок
                              Ответить
                              • https://www.youtube.com/watch?v=f9Xfh8pv3Fs
                                https://www.youtube.com/watch?v=BrjV1ZgYbbA
                                Ответить
                    • я про wave узнал из
                      https://bitbucket.org/verateam/vera/wiki/Home
                      Ответить
                    • а он умеет в компил-тайме интерпретировать?
                      Ответить
                      • > в компил-тайме интерпретировать
                        Тебе суда:
                        http://fskn.gov.ru/pages/main/prevent/13250/index.shtml
                        Не говоря уже о том, что это лишь препроцессор сишки.
                        Ответить
                        • Ты скажи, можно ли на крестошалонах написать компил-таймовый компилятор крестов? Чтобы до конца УПОРОТЬСЯ .
                          Ответить
                          • > можно ли на крестошалонах написать компил-таймовый компилятор крестов
                            Конечно можно:
                            #include "кококомпилируемый_во_время_кокомпиляции _кококод.cpp"
                            Ответить
                            • Не, это не торкает нифига.
                              Чтобы
                              template <const char* Code> ...
                              Ответить
                              • Так низя. Строковые литералы в параметры шаблона не лезут, увы. В mpl это ограничение обошли через пачки символьных литералов.

                                Так то в mpl есть и рекурсия,и условия, и строки, и списки... И теоретически можно было бы запилить компилятор крестов... Но это все дико жрет память, из-за того что это по сути чисто функциональный язык, а сборщика мусора само-собой нету.

                                Короче в теории можно. А на практике у тебя не хватит памяти, терпения, и места на винте под вывод ошибок ко-ко-компиляции.
                                Ответить
                                • Так что кресты - это ограниченное говно.
                                  Ответить
                                  • > это ограниченное говно
                                    Садись, двойка. Правильный вывод: текущие архитектуры - говно, т.к. не позволяют юзать бесконечный объем памяти, а поэтому не эквивалентны машине тьюринга. При бесконечной памяти все отлично работает ;)
                                    Ответить
                                    • Кресты - прожорливое говно, пожирающее память.
                                      Ответить
                                • >> и места на винте под вывод ошибок ко-ко-компиляции
                                  Ааа!
                                  Надеюсь в /dev/null хватит?
                                  Ответить
                                  • > Надеюсь в /dev/null хватит?

                                    Если не хватит, можно заюзать облако
                                    http://devnull-as-a-service.com/
                                    Ответить
                              • template <char... code>
                                Ответить
                              • std::integer_sequence<char, "k","o","-","k","o","-","k","o">

                                Хватит что бы записать иммутабильную машину тьюринга.
                                Ответить
                                • сколько там ограничение на число шаблонных параметров в микрософте? 64?
                                  Ответить
                                  • > 64
                                    Но можно еще вкладывать шаблон в параметр шаблона :) Или там и глубину тоже зарезали где-нибудь в районе 64?
                                    Ответить
    • Application_Model_Translate::$lang_package[$text][(int) ($lang == 'en')];

      По-моему тоже замечательно. Ведь, строковой ключ в массиве - потеря производительности! Автор его умело сконвертировал в интеджер, обломав тем самым прожорливый ПХП-рантайм!
      Ответить

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