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

    0

    1. 1
    гитхаб говно. Давайте ругать его

    По этому я за SourceForge

    Запостил: 3oJIoTou_xyu, 08 Января 2019

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

    • шо то хуйня, шо то. ты бы еще сodeplex сказал
      Ответить
      • он же умер даже не начавшись. Потому что майкрософт.
        Я просто гитхаб неосилил. Не нашел ебучию кнопку как добавить девилопидоров. Хотя в 16 году как-то добавил. А сейчас не нашел.
        Вот в соурсфордж сразу нашел. По этому я за него, да он и гит и свн поддерживает и ручки.
        Ответить
        • > добавить девилопидоров
          Заходишь в репу, жмёшь settings -> collaborators.
          Ответить
          • Делал - но так же все оставался этот самый аксес диниед. Как будто он не имеет вообще прав лить что-то.
            Ответить
            • Пулл-реквестами пусть кидает.
              Ответить
              • Я не хочу следить и постоянно жать асепт пулл. Этож ебанешься. Особено с моим каждосекундным ctrl+s = 1коммит анд пуш.
                Ответить
                • это все хуйня. мелкомягкие выкупили гитхаб уже двно пора от тудыво сьебывать и даже не думать. во на битбакет пистуй там збс. и можно нормально себе приватные репозитори создать. сколько хош,если тима до 5 чел. а на гитхабе - хуй тебе. весь той говнокод сразу становится достоянием инторнетов.
                  Ответить
                  • Ну мне похуй на ваши достояние интернетов - потому что моя ссанина никому не нужна будет.
                    Тем более в SourceForge тоже можно приватную сделать и сколько угодно чел. Да и нет ограничение на размер диструбутива.
                    Ответить
                  • https://blog.github.com/changelog/2019-01-08-pricing-changes/

                    Пока тут пейсали комментарии, они разрешили бесплатно соображать на троих в приватных репозиториях.
                    Ответить
                    • Зачем, если есть gitlab?
                      я раньше всё приватное держал на bitbucket, но потихоньку перелажу с него, ибо он кривой, как и все поделия Atlassian.
                      Ответить
                      • gitlab же нужно самому где-то разворачивать?
                        Для компаний и богатых (5€) разработчиков - уместно и полезно.
                        А так для мелкой питушни -- всё, что угодно сгодится.
                        Ответить
                        • > gitlab же нужно самому где-то разворачивать?

                          Не нужно ничего разворачивать, сервис у них есть.

                          Туда GHC недавно переехал, им там система код-ревью больше понравилась, чем у Github.
                          Ответить
                      • показать все, что скрытоvanished
                        Ответить
                        • > чем гитлаб лучше?

                          В моём случае ответ простой: он умеет подсвечивать хаскель-код.

                          Битбакет не умеет, но внезапно начинает подсвечивать, когда включаешь blame. Видимо, эту часть другая команда делала. Короче, типикал Atlassian.
                          Ответить
    • Когда же ты в говне своём захлебнёшься, паскуда?
      Ответить
    • показать все, что скрытоvanished
      Ответить
      • Воняет, пачкается. Когда сидишь не на самом верхнем насесте и тебе срут на голову, вообще кокококошмар.
        Ответить
        • показать все, что скрытоvanished
          Ответить
          • Можно делать насесты не строго друг над другом, а со смещением, чтобы верхний срал не на голову нижнему, а на пол.
            Ответить
            • показать все, что скрытоvanished
              Ответить
            • Стоит рассчитать это дело математически.

              Пусть петухи и курицы - это шары (или кубы, если легче считать) диаметра S, струя - цилиндр диаметра D, ось которого удалена от центра шара на расстояние S1, насесты - цилиндры диаметра W.

              Надо вычислить конфигурацию расположения насестов - множество точек (xs, ys) в плоскости стены курятника такое, что курятник размерами X, Y, Z может вместить максимальное количество петухов и куриц, весь помёт которых будет достигать только пола.

              К сожалению, я слаб в математике, но идеи для старта местные математики могут почерпнуть в https://www.youtube.com/watch?v=CROeIGfr3gs.
              Ответить
    • показать все, что скрытоvanished
      Ответить
      • А разве у обычных программ для «Windows», рассчитанных на массовое потребление, другие бывают? Другие инсталляторы бывают только у прыщеговна.
        Ответить
        • показать все, что скрытоvanished
          Ответить
          • Погуглил. Это типа как в "npm", когда каждая зависимость ставится по 100500 раз?
            Ответить
            • показать все, что скрытоvanished
              Ответить
              • А почему не взлетел вариант, когда зависимости сохраняются без дублирования, но нет идиотского ограничения на хранение ровно одной версии одного пакета?

                Тупо почему-то не осилили написание программы такой сложности или не пробовали? (написано уже много пакетных менеджеров, писать свой, который отличается только хранением нескольких версий - лень)

                Или авторы не могут протестировать корректную работу со всеми комбинациями зависимостей в декларируемом диапазоне из-за большой кобенаторной сложности (если мой пакет зависит от пяти пакетов, для каждого из которых допустимо по 10 версий, а эти пакеты в свою очередь зависят от двух пакетов каждый с допустимым диапазоном в 10 версий, то всего выходит 10^5 кобенаций допустимых версий пакетов, если мы все честные и используем только документированные возможности и 10^7 кобенаций допустивых версий всех пакетов, которые нужно проверить, если есть подозрение на использование недокументированного поведения), а при подходе с дублированием разброс версий заметно уменьшается, т.к. программист и пользователь по умолчанию устанавливают последние возможные версии зависимостей в системе, поведение для которых легко тестируется, нет багов от того, что уже установленные версии зависимостей образуют кобенацию версий, которая допустима, но не была протестирована?
                Т.е., иными словами, на практике плохо работает декларирование диапазонов допустимых версий зависимостей.
                Ответить
                • Третий абзац я ниасилил дочитать. Вореции какие-то.
                  Ответить
                  • Расписал попроще:

                    Автор пакета A говорит, что подходят зависимости B1 версий [1; 10] и B2 версий [1; 10]
                    Авторы B1, B2 говорят, что им подходят зависимости C11, C12, C21, C22 версий [1; 10]
                    И так далее по графу зависимостей.

                    Значит A должен работать при всех комбинациях версий - декартово произведение диапазонов.
                    10 версий B1 * 10 версий B2 * 10 версий C11 * ...

                    В идеале достаточно протестировать 10 версий B1 * 10 версий B2. Хотя, это уже почти нереально.

                    Но на практике нельзя сказать, что комбинация A, B1, B2 будет вести себя как следует для произвольной версии C11, C12, C21, C22 даже если авторы B1, B2 протестировали все комбинации версий C11, C12, C21, C22.

                    Может, дело в каких-то "юридических" тонкостях документации или использовании недокумментированных функций; может -- в тонкостях императивной программы и несовместимостей из-за более низких уровней абстракции (скажем, все комбинации версий внутри A-B и внутри B-C работали нормально, но для какой-то комбинации A-B-C вдруг в стек попал толстый массив, и всё сломалось).

                    А дальше оказывается, что у пользователей установлен заранее весь спектр допустимых версий пакетов-зависимостей B, C, к которым доустановится наш пакет A.

                    Если устанавливать отдельно, будет высокая вероятность получить последние возможные версии A,B,C и у программиста, и у пользователя, который с большой вероятностью получит комбинацию, протестированную у программиста.
                    Ответить
                • > но нет идиотского ограничения на хранение ровно одной версии одного пакета?

                  Оно не идиотское. Более того, apt умеет устанавливать несколько версий одной библиотеки, это вовсе не проблема (см. so version).

                  Что сложно сделать — так это линковать разные версии библиотеки в одно приложение. Если у тебя библиотека A использует C1, B использует несовместимую C2, а приложение E использует A и B, то мы в беде. Потому что

                  1. E может случайно передать объекты, созданные C1, в функции из C2, будет взрыв.
                  2. Динамический линкер разрешает ссылки на функции по именам, и имена в C1 и C2 могут конфликтовать.

                  Поэтому в дереве зависимостей у каждой библиотеки должна быть одна определённая версия.

                  Я примерно понимаю, как ЖС-серы решают проблему 2 — используют загрузчик, который грузит определённую копию из поддерева, а все символы живут в замыканиях. Но вот что происходит с проблемой 1?

                  Пример проблемы 1 из жизни: у меня было 2 библиотеки на C++, одна возвращала фьючеры (из стандартной библиотеки!), другая принимала фьючеры. Приложение передавало фьючеры из одной библиотеки в другую. Из-за бага системы сборки они собирались с разными версиями стандартной библиотеки (разница была в минорной версии). Программа зависала при вызове.
                  Ответить
                  • > Динамический линкер разрешает ссылки на функции по именам, и имена в C1 и C2 могут конфликтовать.
                    В C++ разрешили использовать несколько функций с одним именем, впихнув в их настоящее имя сигнатуру сигнатуры. Соответственно, ничего не мешает втиснуть в имя функции/класса ещё и версию библиотеки, всё равно эти шизофазийные имена никто не читает.

                    > E может случайно передать объекты, созданные C1, в функции из C2, будет взрыв
                    Это КГ/АМ и использование недокументированных внутренностей A/B или принципиально неразрешимая ситуация?
                    Передаст ли E несовместимую психозу, если будет честно пользоваться только интерфейсами A/B, а конфликт имён C1/C2 будет устранён способом, указанным выше?
                    Ответить
                    • P.S. Трюк с именами может вызвать какую-то питушню. Надо для вызова функций или для их имён прописывать диапазоны версий, чтобы не было привязки к конкретным.
                      Ответить
            • Вроде всякие Qt и прочие гномы по одному разу ставятся. Как минимум во флатпаке.
              Ответить
          • показать все, что скрытоvanished
            Ответить
      • А причем тут это?
        Ответить
        • «SourceForge» — помойка, знаменитая тем, что добавляла вышеперечисленное программное обеспечение в инсталляторы располагавшихся там программ. Сейчас они, вроде как, исправились, но осадочек-то остался.
          Ответить

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