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

    +162

    1. 1
    2. 2
    3. 3
    4. 4
    for ($i = 1, $i++; $i < 10; )
    {
       do_some();
    }

    Запостил: mad_max, 07 Августа 2010

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

    • do_some();
      do_some();
      do_some();
      do_some();
      do_some();
      do_some();
      do_some();
      do_some();
      do_some();
      Ответить
      • Не против если я вас переспорю?
        eval(str_repeat("do_some();", 10));
        Ответить
    • вы вообще о чём?

      тут цикл:
      while (2<10) { do_some(); }
      Ответить
      • скорее while(true) do_some();
        Ответить
        • (2<10) - для наглядности, чтобы в голове промелькнула мысля:
          "а где 2 ? а почему именно 2 ?"

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

              start:
              do_some();
              goto start;

              ;-)
              Ответить
              • Может бы и к счастью что в ПХП нет goto. Зато есть eval, который спосбен запутать код по-хлеще любого goto. Ну раз пошла такая пьянка про бесконечные циклы, то от себя добавлю:
                a: jmp a

                1 такт на каждую иттерацию (без учёта UV-конвееров - по этому поводу к красноглазым по азму обращайтесь, а к тем, кто ПХП выбрал).
                Ответить
                • goto появился с PHP 5.3, если верить этой странице:
                  http://www.php.net/manual/en/control-structures.goto.php
                  Ответить
    • Простите меня за мою непросвещённость, но сколько раз выполнится этот код? Если бы это был Си, я бы сказал, что бесконечно много, так как счётчик нигде не увеличивается, кроме самого начала.
      Ответить
      • в пхп есть настройки, которые обрывают выполнение скрипта, через определённое время (вроде как 1 минута на выполнение по умолчанию)

        т.е. в пхп скрипт автоматически оборвётся, через определённое время, в то время как в Си - этот код будет выполнятся, пока программа не будет завершена принудительно;
        Ответить
      • ErmineMD: Проверял кодом:
        for ($i = 1, $i++; $i < 10; )
        {
           echo $i;
        }

        Выполняется до Runtime Error в FF с последующим падением браузера (если кто хочет протестить на себе — будьте бдительны, так как при релоаде браузер загружает вкладку с Этим говнокодом и поэтому можете получить приступ негодования).
        Ответить
        • А у меня этот код в Хроме (в fx не стал запускать, так как много вкладок, которые боюсь потерять таким образом), выдал после полуминутного раздумья:

          Fatal error: Maximum execution time of 30 seconds exceeded in Z:\home\.......\www\q\index.php on line 6
          Ответить
          • камень в сторону фф, плюс в сторону хрома;
            - как и было сказано: скрипт прерван сервером (у вас в настройках 30 сек на выполнение)
            Ответить
          • Я всю з.п. на топовый проц потратил и поэтому он успел засрать 6-ГБ буфер приёмки браузера быстрее чем за 30 сек. А если про вкладки, то у меня было открыто 4 штуки с Ютуба, которые дружно заверещали при старте браузера и поэтому пришлось забыть про злосчастный скрипт. Кстати, а что на этот скрипт скажут другие браузеры...
            Ответить
            • А у меня в Файрфоксе вывелось много двоек, но в конце концов получил то же сообщение. В Хроме перед получением сообщения страница была полностью чёрной.

              В IE8 сначала появляются двойки, потом они пропадают, хотя полоса прокрутки не исчезает, и сообщение с ошибкой не появляется. Зато курсор, будучи над страницей, ведёт себя странно. И процессор при этом грузится.
              Ответить
            • Opera 9. 5 МБ чистейших двоек... 13,5 МБ... 16 МБ... Прекратило скачивание. Ага. Внизу:
              "Maximum execution time of 60 seconds exceeded in..."
              Opera 10... 9 МБ в первую секунду — действительно, "самый быстрый браузер". 200 МБ накрутил и ПХП лимит в 60 выдержал.
              Safari. Так, на стартовой iPod 4. В адресную стрку тот скрипт и... Прошло уже 7 секунд и до сих пор вижу iPod. Вах! "Искключение unknown software exception (0x000000005) в ..." (обновлял ж 3 дня назад).
              Гхм, Chrome на движке Safari дожил до PHP-шных 60-сек. Кстати, он чуть позже даже произнёс "Опаньки..." (цитата).
              Сладенькое... IE8. Вопрос как улучшить его. "Ask me later..." Пошли двойки... Винда тупит... Пока писал последнее предложение к этому посту он стал показывать белое полотно с песочными часами... (терпел 2 минуты, а потом снял задачу).
              Ответить
              • Живо писать багрепорты на все эти браузеры! :-)

                Кстати говоря, смотрите, как хорошо иметь относительно медленный компьютер: браузеры работают без ошибок.
                Ответить
              • читаю и радуюсь. "хром на движке сафари". это ж надо!
                Ответить
                • Эээ. Я понимаю у нас в Москве смог некислый от чего все тупят поголовно, но я точно помню что Сафари там лежит в его нутре. Да, судя по известной всем энциклопедии Сергей Брин и сотоварищи рукоблудничали на Firefox, но история и практика разработки веб-приложений показала что там эппловский WebKit никак иначе. Если я не прав, то могу подать аппиляцию к сообществу говнокод.ру! Точка. Nuff said!
                  Ответить
                • da4ever: Ну ответь хоть, ато я сомневаюсь. Я сёня JSON с JQuery в разговоре с коллегой перепутал. Мож опять чего не так воспринимаю.
                  Ответить
                  • вепкит, вепкит, успокойся. Только у них по сто билдов за день, хз как это коррелирует с сафари теперь
                    Ответить
                    • Ага, год назад тест на Сафари был идентичен тесту в Хром, а терь у них даже визуальные отличия появились.
                      Ответить
                      • Судя по всему это движок охрененно сложный - и просто связать его с юзерским окружением уже непростая задача (кстати у хрома более новая версия). Вон на ютубе есть ролик порта Quake 2 под хром. Со звуком. HTML5, javascript и я не разбираюсь что еще. Учитывая как криво раньше выглядели всякие актив-иксы, там кипит титаническая работа.
                        Ответить
                        • Титаническая работа у всего человечества кипит. HTML5 команда под руководством основателя веба Тима-Бёрнса Ли клепает. 3D в веб несёт сообщество разработчиков OpenML. Вот звуком я хз кто занимается. А что сделал Google? Ээээ. У меня штатный браузер — FF, у всех друзей — Opera и там вся эта 3D-канитель пашет. Гугл титанически идею с Wave просрал. Это да!
                          Ответить
                          • Одно дело спецификация - другое дело работающая, стабильно и быстро еще до массового применения версия. Звук - это тоже HTML5, который вполне мог существовать еще только на бумаге. Будь у тебя сто чужих наработок, но увязать язык разметки, скрипты, отсутсвие привычного ускорения, игровую логику, анимированные модельки, свет и черт знает что из далеких сишных времен - и чтобы это работало быстрее чем у родственника-сафари, до такого мозилле еще догонять и догонять.
                            Ответить
                            • "Звук - это тоже HTML5, который вполне мог существовать еще только на бумаге."
                              беспощадно реквистирую атрибут bgsound, который ещё и в HTML4 юзали.

                              А если по делу, то мы с вами по-моему ща бессмысленно холиварить начнём. Всё-равно самые высокие FPS я в Опере видел, а не Хроме.
                              Ответить
                              • О нет, и в мыслях холиварить не было. ФПС насрать, бг саунд насрать, поскольгу показывая какую-нибудь фигню типа одного масштабируемого спрайта можно для любого браузера оптимизировать так, что на нем будет быстрее всего, на второе - потому что с технологичностью это не имеет ничего общего. В игре же нужно кэшировать дофига звуковых файлов и при первой необходимости выводить параллельно большое их число.
                                Все началось с того, что назревал холивар по поводу обработки исключительного случая с похапэ скриптом, а я лишь хотел сказать что при разработке браузеров занимаются куда более сложными и важными вещами (как будет выглядеть веб завтра)
                                Ответить
                          • не safari у него внутри, а webkit.

                            а еще webkit внутри у Chrome, Epiphany, Midori, Shiira, Uzbl, Maxthon 3, OmniWeb, iCab, не считая того, что на нем работают все мобильные брузеры кроме опреры: айфон, андройд, новый симбиан и палм пре.

                            лицензия у движка LGPL и BSD.

                            разрабатывают его Apple, KDE, Nokia, Google, RIM, Palm и прочие милые компании.

                            "у него-ж, блядь, сафари от эпл внутри!" - не то же самое.
                            Ответить
                            • Господи, Дафевер, ты к чему это вообще? Я когда сдаю сайт сдаю кидаю заказчику ссылку на статистику по Рунету с ЛивИнтернет.ру. Радостно ему сообщаю что в ФФ, Опера, Сафари/Хром, IE8, IE7 и IE6 увидет он одно и тоже (и это 90 % посетителей). Остальные 9 % ходят с КПК. Остальной процент - это дрочеры-верстальщики с IE6 и IE5 шаряться по-приколу. И где-то там Епифани, Мидори, Шиира, Юзбл (бл*), Макстон и ОмниВеб. Ну не интересно.
                              Ответить
                              • на самом деле,
                                WebKit - Chrome, Safari..
                                Gecko - Firefox, Konqueror...
                                Trident - Internet Explorer и все его надстройки
                                Ответить
                              • к тому, что твое мнение по поводу популярности маркетинговых оболчек технологий не есть самая важная, интересная и несовместимая ни с чем истина в мире
                                Ответить
                              • а к тому, димочка, что ты не внимателен к деталям. вот и в комменте выше у тебя шестой осел и в 90% и в 1% дрочеров-верстальщиков входит.

                                1. сафари и вебкит - это не одно и то же.
                                2. вебкит - не эпловский.
                                3. брузеры на одном и том же движке используют разные его сборки.

                                пока просто запомни - потом может понадобиться.
                                Ответить
                                • Давай ты не будешь говорить то, чего не знаешь?
                                  WebKit — Apple.
                                  http://ru.wikipedia.org/wiki/WebKit
                                  Ответить
                                  • по приведенной выше ссылке, в рамке справа написано "Разработчик Apple Inc., Google Inc., команда разработчиков KDE и другие.", а если почитать английскую версию этой же статьи - там подробнее. webkit - open source, а не эпл.
                                    Ответить
                                    • http://opensource.apple.com/

                                      WebKit — свободный движок для отображения веб-страниц, разработанный компанией Apple Inc. на основе кода библиотек ...

                                      Теперь же, видимо, разрабатывается и этими разработчиками (как правильно было замечено, это opensource).
                                      Ответить
                                      • вы еще раз вику почитайте. там написао, что именно фрокнули яблоки для создания вебкита. и ведь тоже LGPL же.

                                        что вы хотели сказать написав "WebKit — Apple."? он принадлежит эпл? нет. он разработан эпл? да, но это было давно и неправда. теперь его разрабатывают все кому не лень.

                                        ядро линукс - не принадлежит торвальдсу.

                                        как-то так.
                                        Ответить
                                        • опенсорс принадлежит народу :DDD
                                          Ответить
                                          • стоит ли говорить, что он кому-то принадлежит?

                                            вопрос в том, кто дает деньги, и кто вносит наибольший вклад в развитие.

                                            жду вашего комментария в соседнем ГК.
                                            Ответить
                                        • Не в таком уж и далеком году ;)
                                          Я не хочу спорить, WebKit был разработан Apple и я об этом говорил, торговая марка WebKit принадлежит Apple, там же в вики написано, только там написано, что заявка была направлена, но это считай факт.
                                          Взять Chrome, в его Useragent написано, Chrome blabla Safari blabla.
                                          Но, хочу заметить, действительно, у каждого из них свои сборки ВебКита и не факт, что Apple использует код, который для себя пишет Google. Этого я просто не знаю. А вот наоборот, совершенно очевидно.
                                          Ответить
                                          • 1. ТМ != Движок
                                            2. такой юзерагент придуман для тех, кто про хром не знал
                                            3. и как вы представляете "код для себя" в опенсорсе?
                                            Ответить
                                            • Вам уже нечем отвечать.
                                              "Код для себя" — они сами пишут свой код и используют его для себя, Google берет код Apple и использует его для себя в Chrome со своими доработками. Обмениваются ли они чем-либо — я лично, не знаю.
                                              Ответить
                                              • скорее негде.
                                                и
                                                не совсем понятно, что именно мы теперь обсуждаем.
                                                если вы поняли, что создать - не значит владеть то это уже неплохо. если нет - тут уж ничего не поделаешь.
                                                Ответить
                                                • Ну снова начали :(
                                                  А для кого лицензия то? Для самого Apple или для пользователей? Им не нужно придерживаться лицензии, потому что они кто?
                                                  Ответить
                                                  • что такое лицензии GPL, LGPL, BSD? для кого они нужны, что в них написано?
                                                    нет, ну прямо как первый раз в интернетах, честное слово!
                                                    Ответить
                                                • Кстати, смотри — http://habrahabr.ru/blogs/google_chrome/101396/
                                                  Ответить
                                                  • круто. и что?:
                                                    Ответить
                                                    • Chromium — opensource, взяли и вхерачили туда функционал, который отправляет данные в Google. Там же на Хабре спор был о том, что Chromium вообще не относится к Гугл, мол это opensource.
                                                      Ответить
                                                      • и что?
                                                        вхерачили и выложили все это кодом. не нравится - удаляй, но не забудь предоставить получившийся код в паблик.

                                                        хочешь - нахерачь туда того-же, но для яндекса.

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

                                                        прочитай уже упомянутые выше лицензии и закроем тред.
                                                        Ответить
                                                        • > но не забудь предоставить получившийся код в паблик.

                                                          Закоммитишь изменения в Chromium?
                                                          Ответить
                                                          • какие и зачем?
                                                            Ответить
                                                            • > хочешь - нахерачь туда того-же, но для яндекса.

                                                              Вот эти, для того, чтобы ты убедился, что это не получится сделать. Для себя ты можешь это сделать, для всех остальных нет.

                                                              Я выше об этом говорил как раз, но о WebKit. Ты можешь взять код от Apple, но твои изменения они не будут использовать, потому что ты не сможешь их им отправить :)

                                                              От того и получилось, что разработчиков там несколько, каждый прет свою ветку, но свежий функционал берут от Apple.
                                                              Это как взять любой source код и сделать на него свой patch.

                                                              Что тут спорить... Я больше не хочу.
                                                              Ответить
                                                              • да, но если патч хорош его могут включить в основную ветку. и когда пишут, что гугл и нокия разрабатывают вебкит - имеется в виду основная ветка.

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

                                                                все что ты можешь или не можешь сделать написано в лицензии.
                                                                Ответить

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