FuckItJS: принудительное исполнение JavaScript-кода

    Американский веб-разработчик Мэтт Даймонд (Matt Diamond) написал библиотеку JavaScript под названием FuckItJS. Если вставить в код метод FuckIt, то он заставит исполняться самый плохой скрипт, «нравится это компилятору или нет».

    В общем, FuckItJS работает так: из скрипта вырезаются все строчки, на которые выскочили ошибки. Процесс повторяется, пока скрипт (или что там от него осталось) не проходит компиляцию без ошибок. Чтобы выжить в этом жестоком мире, FuckItJS перезагружается после каждой итерации.

    FuckIt(путь_к_файлу)
    Стандартный метод со ссылкой на дерьмовый скрипт. Можно использовать в коде несколько раз.

    FuckIt.noConflict()
    «Вы используете две библиотеки FuckIt? — спрашивает автор. — Хрен с ним, но тогда запускайте метод FuckIt.NoConflict. Конечно, на самом деле это не поможет, ведь FuckItJS постоянно перезагружается и непрерывно обновляет глобальную переменную FuckIt, но блин… хотя бы почувствуешь, что сделал нечто умное».

    FuckIt.moreConflict()
    «Устал прятаться от конфликтов? Готов перезаписать все до единого свойства в глобальном объекте Window, даже если это обрушит браузер? Тогда этот метод для тебя», — говорит Мэтт Даймонд.

    Автор реально не знает, что написать в обязательном поле “Browser Compatibility”, да и вообще шутит на странице проекта по полной программе. Коммиты там тоже смешные, в общем, страничка юмора на Гитхабе.

    Шутка Даймонда пришлась по вкусу веб-разработчикам: см. модуль интеграции FuckItJS для Drupal.

    Мэтт Даймонд уверен, что написал «самый худший плагин в истории», но на самом деле похожий принцип обхода ошибок используется при написании программ, устойчивых к отказу оборудования, очень перспективное направление, без шуток.

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 24

    • UFO just landed and posted this here
        +1
        Что «10 из 10»? Вы про оценку статьи или так оцениваете задумку Мэтта Даймонда?
        • UFO just landed and posted this here
            +20
            Про то, сколько строк было вырезано в скрипте %)
          +13
          > плагин JavaScript
          Это что еще такое?
            +10
            На самом деле, это плагин для jQuery [1]
            –3
            Your access to github.com/mattdiamond/fuckitjs/ has been restricted by administrator. Restriction name 'obscence_and_abuse'.
              +4
              Что же вы ему такое сделали то? )
                0
                Это я к тому, что fuck в урле вполне и зафильтровать могут.
              +21
              If you are caught in a dire situation wherein you only have enough time to save one person out of a group, and the Author is a member of that group, you must save the Author.

              Замечательная лицензия.
                0
                Последний абзац в лицензии тоже клевый :)
                +17
                Я почему-то сразу понял, что сподвигло автора библиотеки на ее написание)
                Все наверное переживали случаи, когда поиск ошибки уже просто в печенках сидит, и хочется, чтоб существовало заклинание типа «Да просто, блядь, начни выполняться!!!!11! Не смотря ни на что!!!»
                  +6
                  В общем, FuckItJS работает так: из скрипта вырезаются все строчки, на которые выскочили ошибки.


                  Хочу сделать небольшую ремарку.

                  Суть работы скрипта сводится к тому, что в момент, когда происходит событие ошибки, свойство onerror последним аргументом возвращает номер строки. Далее код скрипта сплитится по символу перевода строки и заносится в массив, после чего удаляется элемент с индексом, который совпадает с номером строки:

                  var parsed = window.fuckedScript.split("\n");
                  parsed.splice(line - 1, 1);
                  


                  Таким образом, если ошибка произойдет в начале блока, то последовательно будут удалены все строки пока блок не закроется:

                  { // Здесь произошла ошибка
                     
                      /*  
                       * Удаляем все в этом блоке
                       *
                       */
                  
                  } // Удалили последнюю закрывающую скобку
                  
                  


                  Иными словами, есть большая вероятность того, что удалится не только корявый код, но и рабочий (возможно большая его часть).

                  Поэтому питать большие иллюзии на счет послезности данного скрипта не стоит, лучше воспользоваться отладчиком.
                    +33
                    серьезно?
                      +1
                      Ну судя по количеству watcher'ов на github'e, да.
                      В любом случае, что очевидно одним не всегда понятно другим. Поэтому не вижу ничего плохого чтобы пояснить принцип работы кода.
                        +2
                        Из-за таких, как вы, и придумали идиотский тег irony )
                    • UFO just landed and posted this here
                    • UFO just landed and posted this here
                        +3
                        Переводили промтом?
                          +2
                          Мда, прямо по принципу «Либо очень умный, либо очень сильный»: нафиг отлаживаться, если можно забить шуруп кувалдой взять FuckItJs?
                            –1
                            Из текста лицензии:

                            If you are caught in a dire situation wherein you only have enough time to save one person out of a group, and the Author is a member of that group, you must save the Author.
                            0
                            Ну наконец-то мои скрипты заработают…
                              0
                              а вот еще один fuckIt для python :)
                              github.com/ajalt/fuckitpy

                              Only users with full accounts can post comments. Log in, please.