1. JavaScript / Говнокод #23157

    +1

    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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    <div class="checkbox removeSpan">
      <input id="all-standard-colors" name="all-standard-colors" type="checkbox"
                         data-bind="checked: $parent.selectAllStandardColors enable: $parent.isTabEnabled"/>
      <label for="all-standard-colors">All standard</label>
    </div>
    
    <style>
    div.checkbox > input + label {
        padding: 4px 0 4px 29px;
        background-image: url("../images/unchecked-checkbox.png");
        background-size: 21px;
        background-position: left center;
        background-repeat: no-repeat;
    }
    
    div.checkbox > input:checked + label {
        background-image: url("../images/checkbox-checked.png");
        background-size: 21px;
        background-position: left center;
        background-repeat: no-repeat;
    }
    </style>
    
    <script>
    $(document).ready(function() {
        setInterval(function(){
            $('.removeSpan span').remove();
        }, 2000);
    });
    </script>

    UI на knockout.js. Есть бага - пропадает галочка на чекбоксе. Выясняется что knockout для валидации вставляет после input тега невидимый span
    <span></span>
    Неизвестный товарищ фиксит это не вдаваясь в детали верстки и CSS селекторы - добавляет специальный класс, которым маркает все чекбоксы и поллер который убирает из них span каждые 2 секунды. Но про это никто не узнает. В течении полугода появляется еще десяток другой багов с отображением чекбоксов которые фиксят не вдаваясь в детали. И только потом замечают странный класс removeSpan и находят поллер в недрах domUtil.js, удаляют его и меняют один символ в стилях - вместо div.checkbox > input + label стало div.checkbox > input ~ label

    Запостил: frenzykryger, 05 Июля 2017

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

    • Моему высокоразвитому уму, далёкому от низменных обывательских стремлений быть в "тренде", невдомёк, какого собачьего хуя столь необходимо использовать имбецильные библиотеки типа "Knockout.js", "Backbone.js", "React.js" и прочих? Есть "HTML". Есть "JavaScript". Есть "jQuery". Имеется возможность отправлять AJAX-запросы в две-три строки. Из какой ёбаной пизды надо делить это всё на модели, контроллеры, модули, хуёдули, шаблоны, "родителей", "потомков", и т.д.?

      P.S.: И это я ещё не прошёлся по "PHP", который так же преизрядно загрязнили кроваво-каловыми фреймворками...
      Ответить
    • Продолжая тему "JavaScript" (но, по правде пися́, выходя за рамки темы настоящего поста), не могу не отметить, что меня преизрядно подзаебало смешивание JS-кода для браузеров и для "NodeJS" в разделе поиска кода на "GitHub.com". Бывает, ищешь какой-нибудь годненький "сниппет" на "JavaScript", используя предпологаемые ключевые слова, а тебе всё суют "require('fs')", "require('fs')", "require('fs')", "require('fs')", "require('fs')", "require('fs')", "require('fs')", "require('fs')", "REQUIRE('FS')", "REQUIRE('FS')", "REQUIRE('FS')", "REQUIRE('FS')", "REQUIRE('FS')", "REQUIRE('FS')", "REQUIRE('FS')", "REQUIRE('FS')". Заебло.
      Ответить
      • Ага
        Ответить
      • Ты видимо не в курсе, что под браузеры уже пишут "на ноджс", а потом компилируют это добро каким-нибудь browserify. Как-то раз хотел сверстать красивую страничку и нагуглил библиотеку красивых компонентов material-ui. Два часа пытался раскурить, что надо написать в хтмл, чтобы воспользоваться этим добром, и в итоге оказалось, что без ноды и еще кучи каких-то преблуд эту библиотеку не заюзать. Такой багор.
        Ответить
        • Верх ебанутости, когда язык двадцать лет использовался исключительно для клиентской части, а за два-три года расползся по двум абсолютно разным сферам, причём приоритетно стал ассоциироваться с "NodeJS", а уже потом - с какими-то там браузерами. Чтобы не путать консерваторов вроде меня, следовало назвать то, что используется на серверной стороне, как-то по-другому; но долбоёбы решили по-своему, и теперь предлагают для клиентской части использовать "ECMAScript" (тот же "JavaScript", но с ебанистическим названием), "CoffeeScript" и прочую хуету. Теперь из-за блядей даже халявные плагины на "GitHub" не поищешь.
          Ответить
          • Кстати, "PHP" это также касается. Неделю ищу готовое решение так называемых "веб-сокетов", написанное на "PHP"; но, блядь, как оказалось, без "composer"-а теперь ничего не делается. Популярных готовых библиотек указанной мною тематики десятки, но, еть твою в очко, они все требуют попутно устанавливать мегабайты "Zend"-а, "GuzzleHttp", "Symfony" и прочего навоза. Назрел вопрос: как раньше писали сотни и тысячи строк кода в одном файле, не разбивая это на свои модули и не входя в зависимость от чужих? Все, блядь, "современными" стали.
            Ответить
            • > Назрел вопрос: как раньше писали сотни и тысячи строк кода в одном файле, не разбивая это на свои модули и не входя в зависимость от чужих?

              Сейчас это называется "легаси", камрад. И все его ненавидят. По работе пришлось как-то разбирать js-файл без зависимостей на 3к строк. Так вот ебал я вас и ваши полотна в то самое очко, псы.
              Ответить
              • Может, это свидетельствует лишь о твоей безграничной тупости, кися?
                Ответить
                • Нет, пися, это свидетельствует о том, что принциы единственной ответственности и модульности - не хуй собачий.
                  Ответить
          • Стремление к бОльшей динамичности страниц( т.е куча эффектов, норм работа без перезагрузки страницы по любому клику итд ) привело, мало того, что к тоннам JS-ного говнокода, дык, более того, к.. дублированию функционала на нём и на, скажем, пыхе(
            пилим сайт, где постоянно появляется новая инфа.
            Юзер заходит на него.
            Чтоб максимально шустро выдать ему нужное - выплёвываем отрисованную из пыха страницу с JS обновлением данных.
            И там и там зависимость и привязанность к конкретной вёрстке.
            Изменение с одной стороны, приведут к изменениям на другой.
            И это при условии, что проггер полностью в курсе функционирования обеих частей, иначе - помойка.
            И, ведь в данном случае, речь шла лишь об одном-единственном элементе( новостная лента?).
            А если практически все элементы такие? -Если речь о сайте, норм работающем( все валидации итд ) как с JS, так и без него ? -Это ощутимое дублирование с необходимостью поддержки полной аналогичности работы по обе стороны.
            ).

            Отсюда и пошли ноды да реакты.
            Прикол в том, что пишешь один код на JS( с минимальным дублированием ), он как надо пережёвывается на ноде и выплёвывается пользователю как ответ сервера( т.е аналогично, скажем, пыху ). С другой стороны, на клиенте этот же код работает как клиентский JS( т.е тупо нет никакой надобности ни в каком jQuery.. по крайней мере, в случае с реактом ).

            Обычно в пакетах с гитхаба/npm валяются уже собранные клиентские и серверные скрипты для запуска "из коробки"( т.е нода не нужна ), если автор пакета не бомж.


            ECMAScript - прост "стандарт" JS, по которому пилятся те или иные его версии.

            CoffeeScript - дерьмище, которое уже RIP.
            TypeScript - для любителей солёненького во рту. Тот же JS, только без ключевой своей плюхи - там статическая типизация данных. Обычн по нему прост текут вчерашние C/C++/C#-шники, перебравшиеся в веб-прогу на JS и желающие, "шоб в JS, но как на сях було", ибо иначе горит.
            Ответить

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