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

    +2

    1. 1
    2. 2
    3. 3
    Global Install
    Installing Yarn 2.x globally is discouraged as we're moving to a per-project install strategy. 
    We advise you to keep Yarn 1.x (Classic) as your global binary by installing it via the instructions you can find here.

    https://yarnpkg.com/getting-started/install

    Мы выпустили вторую версию приложеньки, в которой исправили все недочёты первой.
    Именно поэтому запускать вы её будете через первую версию, которая с вами навсегда.
    Мы проработали другие варианты и пришли к решению, что они все неправильные.

    Сердечно ваши,
    джаваскриптеры.

    Запостил: Fike, 07 Марта 2020

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

    • показать все, что скрытоvanished
      Ответить
    • да сука, у них есть ТРЕТИЙ менеджер, который делает почти то же самое, что и первые два

      https://pnpm.js.org/

      да, симлинки это вообще хорошо, но что делать если пакет A зависит от B1, а С от B2? ведь тогда у кого-то из них внутри должен быть свой node_modules, а это ж побьет к хуям симлинки, нет?
      и главный вопрос, должен я тратить свою ночь на это или всё-таки почитать rfc к x.509?
      Ответить
      • Как строить правильный менеджер пакетов.
        1. Каждый пакет помещается в папку с именем "<пакет><разделитель><версия>"
        2. Направленный граф зависимостей записывается в матрицу пакетов
        3. Пакеты могут переиспользоваться (если попадает в диапазон зависимостей нового пакета - в граф зависимостей добавляется узел, если нет - устанавливается отдельно и добавляется)
        4. Пакет доступен только если есть связь в графе зависимостей. Например, пользователь установил A, а A потребовал B. В графе есть user->A->B. Пользователь может сделать require('A'), но не require('B'). "man install B" предлагает либо пометить B как корневой (user) в графе (прямая команда "man activate B"), либо установить иную его версию (прямая команда "man newinstall B"). После этого граф будет либо user->A->B<-user, либо user->A->B1 user->B2. При удалении A код пользователя не перестанет работать.
        5. Сборщик мусора (удаление пакетов, от которых зависел удаляемый) должен уметь работать с циклическими ссылками.
        6. Зависимостями пакета могут быть разные версии одного и того же пакета, зависимостям назначают ключевые имена или обращаются по версии (второе - говно). Пример:
        deps:
            v1.22 <= A < v2.1 aka olda,
            v5.1 < A <= v6 aka NEW_A,
            v0.1 < A < v0.2 aka staroe_govno,
            A = v0.11,
            A = v0.12,
            v1 < B < v5;
        // в коде
        var x = require('olda'), y = require('[email protected]');

        В случае явных версий man установит v0.12 и v0.11, v0.12 переиспользует как staroe_govno. В общем случае можно ввести математические операторы, например max(A < v6) или min(v0.1 < A < v2) (по умолчанию - max).

        Если менеджер пакетов (или)
        1. устанавливает пакеты в подпапки и не переиспользует их
        2. позволяет установить только одну версию пакета
        3. не умеет разрешать циклические зависимости
        4. даёт пользоваться пакетом, который установлен как зависимость
        то он - говно и не достоин изучения.
        Ответить
      • >When using npm or Yarn for example, if you have 100 projects using the same version of lodash, you will have 100 copies of lodash on disk.

        Одобряю!!! Вот это наш, SVN-way, хранить всё говно в 100 копиях, и в текстовом виде.

        Когда они наконец-то до дойдут до идеи dllек и shared-objects?
        Ответить
        • > дойдут до идеи dll'ек

          Чтобы пройти ещё и через dll hell?
          Ответить
        • В наиболее известных культах из скриптов строятся точные копии сишных библиотек, утилит, конпеляторов и компоновщиков. Последователи культа строят их, веря в то, что эти постройки привлекут пирфоманс. Верующие регулярно проводят конференции, используя скрипты вместо нативного кода и наклеивая на ноутбуки надписи "HighLoad".
          Ответить
          • Точные копии из соломы и из банановых листьев?
            Ответить
        • Чтобы получить пирфоманс, экмаскриптяне имитировали действия сишников. Используя хешмапы они пытались изобразить массивы и структуры. В конце-концов, поскольку это не привело к возвращению божественного кода с удивительным пирфомансом, они полностью отказались от своих прежних воззрений на прототипное наследование, и стали ещё более тщательно поклоняться массивам.
          Ответить
          • Чтобы получить ssh и распаковать zip, скриптушане имитировали действия сишников и плюсовиков. Они делали шашки из грязимассивы из Buffer и прикладывали к ним uint_32, находясь в построенных из хеш-мапов структурах.

            Они изображали небезопасное ручное выделение памяти, находясь в полностью управляемой сборщиком мусора песочнице.

            Приверженцы культа верили, что сишники имели особую связь со Богами, которые были единственными существами, кто мог даровать такой пирфоманс.
            Ответить
          • По сути, это была языческая секта, внешне напоминавшая пародию на сишкианство.
            Её последователи не понимали, зачем хакеры совершают те или иные действия, и слепо повторяли их в надежде, что боги дадут им тот же пирфоманс.

            Нодежсийцы понятия не имели о машинных языках. Браузер и V8 в их восприятии могли иметь только божественное происхождение. Боги посылали им пирфоманс через сишников, пишущих быстрые либы, а белые люди, пишущие для них врапперы, передавали дары по назначению.
            Ответить

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