1. Куча / Говнокод #4183

    +133

    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
    <script id="tpl_top" type="text/html" style="display: none;"><a name="comment_<%= row.id %>"></a>
    <table cellspacing="0" id="comment-cnt_<%= row.id %>" class="<%= row.tableClass %>">
        <tr>
            <% if (row.side === 2) { %>
            <td width="5" class="transp_td"><div class="spacer"></div></td>
            <% } %>
            <td width="5" height="5" class="ug_1">
                <div class="spacer"></div>
            </td>
            <td><div class="spacer"></div></td>
            <td width="5" class="ug_2"><div class="spacer"></div></td>
            <% if (row.side === 1) { %>
            <td width="5" class="transp_td"><div class="spacer"></div></td>
            <% } %>
        </tr>

    Фрагмент из http://holywars.ru/
    Не могу определить, что за скрипт такой text/html, поэтому поместил в Кучу.
    Если я туплю, поставьте 11 минусов за ламерство, и этот ГК исчезнет.

    Запостил: inkanus-gray, 06 Сентября 2010

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

    • <script id="tpl_top" type="text/html" style="display: none;">
      доктор, у меня болят мозги!
      Ответить
      • правильно. Javascript типа html лучше никому не показывать
        Ответить
        • А такой Javascript можно кому-нибудь показывать?
          http://holywars.ru/public/js/holywars.js
          Ответить
      • А что такое <% if (row.side === 2) { %> в HTML?
        На W3C такого не было! Или это для специального какого-нибудь браузера?
        Ответить
        • ASP эскейпы
          Ответить
          • По синтаксису да. Я бы понял, если бы это было на стороне сервера, но в браузере это будет выполняться?
            Ответить
            • пока авторы клона lovehate о них не вспомнят - выполняться не будет :-)
              Ответить
    • class="ug_1" так и есть, УГ
      Ответить
    • Кстати, всего-то требуется завести 11 виртуалов и быть первымнах.
      Что-то у меня в RSS было 2 говнокода, но оба выминусованы оказались.
      Ответить
      • На некоторых сайтах и виртуалов делать не надо. Например, здесь:
        http://holywars.ru/comments/8207#comment_312558
        opera.rulez (это я) поставил 5 голосов с одного аккаунта, причём неумышленно.
        Ответить
    • убило "png vs jpeg". Если бы было png vs gif еще можно было бы подумать, но png vs jpeg -- ребята явно не умны.

      Ну и windows vs linux: наивно и глупо. И будто третих операционок нет
      Ответить
      • Я с весны туда заглядываю. Уже и не на такое нагляделся! Это же http://lurkmore.ru/SO
        А движок убивает своей глючностью.
        При попытке вставить картинку в заголовок холивара Оперой пишет, что браузер не поддерживается. Маскируемся под ИЕ или ФФ — вставляется без глюков. А потом на этой почве растут браузерные холивары.

        Кстати, на какую тему оттуда выдрать перлы? Спрашивайте, может быть что-нибудь по свежей памяти найду.
        Ответить
    • После '<script id="tpl_top" type="text/html"...' начинаешь со страшной умственной напряженией изучать маны и сомневаться в своей компетентности...
      Ответить
    • style="display: none;"


      Ну, определенный прогресс в сайтостроении виден.
      По крайней мере здесь скрипту не делают отступы и цвет не задают.
      Ответить
      • А type="text/html" и асповские эскейпы — это уже нормально?
        Ответить
      • А мне понравилась как табличная верстка сочетается с див класс спейсер.
        В эпоху расцевта спейсеров и табличной верстки (лет 10 назад) спейсеры выглядели как <IMG SRC="spacer.gif" WIDTH="700" HEGHT="600".
        Ответить
        • Сейчас многие ругают табличную вёрстку. Да, когда целая страница сделана как table — это отвратительно по целому ряду причин.

          Но ведь разработчики умудряются делать страницы под фиксированное разрешение монитора и с помощью дивов и при этом всюду себя рекламировать! Дело не столько в использовании определённых элементов, сколько в вёрстке в целом.

          Использовать таблицы некоторых вынуждает глючная интерпретация CSS в IE. Из-за одного говнобраузера ломать весь проект!
          Ответить
          • Когда в 2005м году меня пересадили с табличной верстки на семантическую -- у меня было странное ощущение.
            Только что я умел верстать, и мог сверстать буквально все, что угодно.
            И вдруг хуяк -- я уже нифига не умею. Простейшие вещи, типа трех резиновых колонок стали делаться очень сложно и бажно
            Ответить
            • Тут ещё надо определиться с понятием «семантика». DIV лишён семантики, это абстрактный элемент, но почему-то именно он сейчас стал символом семантической вёрстки.
              Приведу пример для сравнения: <I> и <SPAN style="font-style: italic;"> — это несемантические элементы, а ADDRESS,
              CITE, DFN, EM, VAR — семантические, потому что указывают назначение выделенного текста. Точно так же STRONG, CODE, INS, DEL изначально предлагались как семантические, в отличие от их шрифтовыделительных собратьев.
              На мой дилетантский взгляд сам по себе DIV — ещё не семантика. Семантика — это, например, микроформаты (всякие rel, class, ARIA). В HTML5 нам снова обещают кучу разных тегов вместо пары DIV-SPAN. Назад в будущее?
              Ответить
              • Это от безысходности так говорят, блок произвольного назначения всё-таки семантичнее чем ячейка таблицы :-)
                Ответить
                • Семантичная вёрстка не потому, что используется семантичный див вместо таблиц. А потому, что таблицы используются по назначению, а не где попало. Сам див совсем не семантичный элемент.
                  Ответить
                  • Если таблица — это таблица значений (в том смысле, как в технической литературе), то она семантична. Семантичная вёрстка позволяет даже роботу выбрать нужные данные. Я правильно понял?
                    Ответить
                    • да, я об этом и говорил, что задача таблицы - структурированное хранение данных =)
                      Ответить
              • Див это "кусок данных".
                UL это не сортированный список (например меню)

                и <I> и <SPAN style="font-style: italic;"> одинаково несемантичны.

                вот <span class="veryImportantMessage"></span> -- семантичен.

                Вот пример семантики
                <div class="userMenu">
                <ul>
                 <li>Some menu item</li>
                 <li>Some menu item</li>
                </ul>
                <p class="userMessage">
                Welcome, blablabla 
                </p>
                </div>
                Ответить
                • тут див как раз не даёт никакой семантики, остальное семантично
                  Ответить
                  • Почему не дает? "userMenu" дже
                    Ответить
                    • ну вот если было бы
                      <nav class="userMenu">..</nav>
                      Ответить
                      • Об этом я пытался написать, но у меня не получилось. Спасибо! Семантика — это когда элемент показывает назначение, а не вид.
                        Ответить
                        • в каком месте <div class="userMenu" показывает вид?
                          Ответить
                          • Согласен, здесь вид явно не указан, его можно в любой момент поменять.
                            В данном случае по "userMenu" можно догадаться, что это меню, поэтому семантично. А когда классы именуют ug_1, ug_2 и т. п., становится страшновато.

                            Но вообще nav более семантичен, чем div, а role в html5 (http://www.w3.org/TR/wai-aria/) и rel в html4 более семантичны, чем class.
                            Ответить
              • Старые теги просто ненужны, они в основном говорят нам о том, не ЧТО за данные они хранят, а КАК они выглядят, а для этих целей у нас есть CSS.
                Новые же теги html5 как раз семантичны и частично заменят те же дивы (section article nav)
                Ответить
                • Я привёл в качестве примера старые теги, чтобы показать, что элемент I — это КАК выглядит (курсив), а ADDRESS,
                  CITE, DFN, EM, VAR — это семантика, то есть совсем не обязательно курсив. На мой взгляд I, B, U, S — почти то же, что и SPAN, но SPAN универсальнее, потому что позволяет описать жирный подчёркнутый курсив более удобным способом, а SECTION, ARTICLE, NAV — это как ADDRESS, CITE, DFN, то есть назначение, а не вид.
                  Ответить
    • автор, к сожалению вы тупите. если вы внимательно посмотрите, то увидите, что сайт использует ejs_production.js - пожатая версия http://embeddedjs.com/ - JS шаблонизатора, а то что вы отрыли - всего лишь один из вполне вменяемых способов оформления шаблонов
      Ответить
      • лол, Вы автор этого гавнища? Вы Игорь Дебатур?
        Откройте для себя нетабличную верстку, например) Сейчас не 99й год.

        И почитайте про таг скрипт)
        Ответить
        • я не имею отношения к этому сайту, и точно не Игорь-как-его-там. Что касается табличной верстки, то топик какбэ не про нее и, вобщем-то это личное дело авторов чего и как верстать.
          спека script'а не запрещает использовать content type text/html и с точки зрения семантики я тоже не вижу каких-либо серьезных проблем.. может быть вы выскажите свою аргументированную точку зрения почему так делать не надо?
          Ответить
          • >>вобщем-то это личное дело авторов чего и как верстать.
            что и как писать -- вообще личное дело авторов. Но этот сайт посвящен говну, коим безусловно является табличная верстка. Это точно такое же гавно как попипаста или перемешивание логики и вью.

            >>спека script'а не запрещает использовать content type text/html
            в type должен быть указан тип скрипта. Если там внутри HTML, то все конечно ок. Но HTMLя там нет.
            А display-none вообще дебилизм, и что-то яне думаю что у тага скрипт есть аттрибут style.

            >>с точки зрения семантики я тоже не вижу каких-либо серьезных проблем
            да, особенно width="5". Вот уж семантика так семантика.
            Ответить
            • Тыщу раз видел, как дивы авторы совмещают с фиксированным размером. Ладно бы в ex и em, а то в пикселях!
              А семантика в коде здесь:
              class="ug_1"
              Ответить
          • вы жжоте. <script> подразумевает наличие скрипта? text/html когда стал скриптом? да, вам не запрещает никто туда писать text/ruby, text/php.. text/мой_чудо_скриптовый_язык - только это должно: а) быть всё-таки скрипт, б) работать, и не только у вас (иначе - на фига?)
            Ответить
            • Вроде разобрался. Содержимым элемента SCRIPT может быть любой текст, удовлетворяющий определению CDATA. Чтобы его браузер не интерпретировал, в качестве type можно написать что угодно, например, avtor/govno, но только не javascript или vbscript. А поскольку браузер не интерпретирует, то style — глупость. Как уже писали, осталось отступы и цвет написать. А может быть, display:none — это защита от древних браузеров, не поддерживающих тег SCRIPT?
              Ответить
              • >>это защита от древних браузеров, не поддерживающих тег SCRIPT?
                и понимаюших display:none, ага
                Ответить
                • Да, кстати, не могу вспомнить, какой браузер с поддержкой CSS не умеет фильтровать SCRIPT. Это как два JMP подряд, на случай, что один не сработает.
                  Ответить
              • он же короткой формы, защищать не надо, и так ничего не отобразится
                Ответить
                • Где здесь короткая форма? Здесь же нет src. Закрывающего тега не видно, потому что я дальше цитировать не стал.
                  Ответить
                  • </script> не влез? ой как всё запущено... жалко второй раз плюсануть не могу...
                    Ответить
                    • </script> был несколькими десятками строк ниже.
                      Хорошо, считайте, что 16-й строкой у меня идёт многоточие, а (N+1)-й строкой </script>
                      Ответить
              • >display:none — это защита от древних браузеров
                <noscript> есть для таких случаев. и сам скрипт оборачивают в комментарий.

                >Чтобы его браузер не интерпретировал, в качестве type можно написать что угодно
                а ещё можно вообще <script> не писать, т.к. скрипт для того и пишут, чтобы он интерпретировался браузером и работал.
                Ответить
                • Совсем древние браузеры показывали внутренности <script>, но они, как правило, не знали о style="display:none", поэтому скрипты оборачивали комментарием. Но здесь обёртка комментарием — лишняя трудность.

                  > а ещё можно вообще <script> не писать
                  Но тогда нужно найти контейнер, чтобы следующий далее код не отображался на экране, потому что это не совсем обычный HTML.
                  <div style="display:none"> вместо <script>?
                  Ответить
                  • > <div style="display:none">
                    да, так делают =) это хотя бы умно
                    Ответить
                    • Разница есть. В случае с div то, что вложено, попадёт в DOM как элементы HTML, а в случае script — как текст.
                      Ответить
                      • это как в феррари воткнуть двигло трактора МТЗ "Беларус". выпирает, коптит, пердит, не заводится после стакана внутрь - но ведь едет!
                        ИМХО, если вы используете не то, что нужно для благих целей - то оно вонять не перестаёт. это называется костыль. если невозможно без костыля - дают инвалидность.
                        Ответить
                        • Я не имею отношения ни к http://embeddedjs.com/, ни к http://holywars.ru/
                          Кому из них нужно дать инвалидность?
                          Ответить
                          • не хотел обидеть.. "вы" - это абстрактно =)
                            инвалидность выдавать можно всем, кто думает что костыль - это нормально. трудно не согласиться с этим.
                            JavaScript шаблонизатор меня что-то вообще добил, если честно.. хотя кому-то может и нужная штука.
                            Ответить
                            • Да я понял, что обращение было безличным.
                              Костыли бывают необходимы, но здесь...
                              Не потому ли сайт постоянно выдаёт сюрпризы?
                              Ответить
      • Спасибо за ссылку! Надо будет рассказать об этом сайтостроителям!
        Ответить
    • Идиот, промахнулся темой.
      Ответить
      • (Идиот, разумеется, я. Хорошо, что раз можно сообщение редактировать.)
        Ответить
        • нажал бы на F5 - удивился =)
          Ответить
        • А Вы первый эзернетовский интерфейс на линуксе, да?
          Ответить
          • CSMA/CD @ 10Mbps half duplex, попса
            Ответить
            • Я имел ввиду не "первый стандарт эзернета" а "первый найденный драйвером", тоесть раньше откликнувшийся на PnP, видимо стоящий раньше на PCI шине;))
              Он может быть хоть гигабитным.

              КО: в линухе эзернетовые интерфейсы называются ethN, где N -- порядковый номер. В отличии например от фри, где они называются по имени драйвера (например dc0).
              Ответить
              • видимо eth происходит либо от среды передачи, либо от совместимой подсистемы, потому что никакой консистентности не наблюдается и eth0 соседствует с ath0
                Ответить
          • Именно.
            Ответить
    • госпади, школоты то понабежало с возмущениями, а ведь тут обыкновенный js-темплейт, который может использоваться, например, для вот такой реализации http://ejohn.org/blog/javascript-micro-templating/.

      Это альтернатива другим способам передачи темплейта, плюсы её в том, что не нужно внедрять html в js, который придётся ещё и эскейпить.
      P.S. если чё, я не автор сего кода
      Ответить
      • да-да, минусуйте дальше
        Ответить
      • По Вашей ссылке отличный код:
        .replace(/[\r\t\n]/g, " ")
                  .split("<%").join("\t")
                  .replace(/((^|%>)[^\t]*)'/g, "$1\r")
                  .replace(/\t=(.*?)%>/g, "',$1,'")
                  .split("\t").join("');")
                  .split("%>").join("p.push('")
                  .split("\r").join("\\'")


        спасибо за ссылку!
        Ответить
        • ага, это Резик если чё, вам объяснить почему это сделано именно так, или вы сами догадаетесь?
          Ответить
          • Вы уже объяснили: "это Резик"
            Ответить
            • я и не начинал объяснять, вы троллите?
              Ответить
              • Что Вы! Я просто восхищаюсь шаблонизацией на JS и синтаксическим разбором с помощью регулярок
                Ответить
                • вы наверное опять про XSLT? =)
                  js-шаблоны очень здравая идея
                  Ответить
                  • нет, я про верстку в vb и бальзамике)

                    а идея и правда отличная! Ее очень удобно реализовывать (как мы видим) и тестировать.
                    А уж парсер на регулярках так вообще заставляет бица от зависти авторов "драконьей книги" и современных компиляторов.
                    Ответить
      • И снова с вами... Джон Резиг, встречайте! Сегодня Джонни нам продемонстрирует какой вырвиглазный пиздец можно сделать из техники компоновки страниц, известной ранее как JavaScript Includes
        Ответить
        • ну это скорее однострочный мазохизм фор фан )
          Ответить
          • Что Вы?
            Это же здравая идея, сами же сказали)
            Ответить
            • вы веткой не ошиблись? шаблонизация в js - это здравая идея, а не реализация их через одну строку. Заканчивайте троллить, я итак повторился.
              Ответить
              • про троллинг будете у себя на пхпклубе рассказывать, среди любителей парсеров на регулярках)
                Ответить
                • вы мне свои форумы советуете? я итак знаю, что там все помешаны на xslt
                  Ответить
                  • а я думал на бальзамике)
                    Ответить
                    • а вы думайте меньше, вам вредно это
                      Ответить
                      • Ваша личная школа душевного здоровья?;)

                        Ладно, предлагаю прекратить беседу. Мне кажется она не немного бессмыслена
                        Ответить
                        • спасибо, у меня всё в порядке
                          p.s вам креститься надо
                          Ответить
          • был бы фан если бы не скопипастили и не назвали "An open source
            %> JavaScript Template library" (хрень попала в копипасту самостоятельно) и всякие раздолбаи не начали бы саиты свои делать с этой помощью
            Ответить
      • да!

        и теперь я знаю, откуда взялся <script type="text/html" из соседней темы!
        Ответить
    • Извините за спам. Приглашаю в анонимный чатик http://holywars.ru/chat
      Часы работы 22:00 — 9:00 по MSK, есть вход по OpenID.
      Ответить
      • "чат только для своих"
        не доставило
        Ответить
        • Реально чат псевдоанонимный. Администратор может спалить кого угодно.
          А как предложение поучаствовать в доработке движка на халяву?
          Ответить
          • эм, _анонимный_ чатик - это когда не надо регистрироваться и тем более палить свои данные по openid
            там надо всё выкидывать и делать заново, я уже как-то видел жуткий косяк с &энтитьками; прямо на глагне
            Ответить
            • Про косяки уже было с юмором сказано, мол, как бы вы узнали, что попали на родной сайт. Если бы не увидели косяков, подумали бы, что ошиблись адресом.
              P.S. Мне кажется, что эта формула ко многим сайтам относится.
              Ответить

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