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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    Whether or not you check in your Pods folder is up to you, as workflows vary from project to project. We recommend that you keep the Pods directory under source control, and don't add it to your .gitignore
    
    Benefits of checking in the Pods directory
    
        After cloning the repo, the project can immediately build and run, even without having CocoaPods installed on the machine. There is no need to run pod install, and no Internet connection is necessary.
        The Pod artifacts (code/libraries) are always available, even if the source of a Pod (e.g. GitHub) were to go down.
        The Pod artifacts are guaranteed to be identical to those in the original installation after cloning the repo.

    https://guides.cocoapods.org/using/using-cocoapods.html

    Запостил: Desktop, 25 Февраля 2018

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

    • #seo
      Ответить
    • и еще скомпилированный код тоже коммитить, чтобы если нету компилятора то все равно всё работало

      зы: почему эпл не сделает свой нормальный пекедж и депенденси менеджер? почему какое-то рубийное наколенное до сих пор существует?
      Ответить
      • Пойду / закоммичу, чтобы конпелятор и прочее говно не приходилось ставить.
        Ответить
        • Осталось прихуярить "Docker".
          Ответить
          • Ммм, аватарка новая. Красивая. Давно поставили?
            Ответить
            • К кому ты обращаешься во множественном числе?! Я здесь один!
              Ответить
              • Будьте ж людьми, ребята.
                Ответить
                • Так... ну я тебе щас лекцию прочитаю. Значит, багры, перед 2017 годом, задумали расхуячить говносток на Говнокоде, то, что потом вошло в историю, как война ботов. Слушай и запоминай. Командующий налётом багров был адмирал Стертор. Средний багор на самом деле, но исполнительный... исполнительный, безусловно, профессионал.
                  Ответить
                  • $bots['barop'] = '123';
                    $bots['bagor'] = '123212321a';
                    $bots['CTEPTOP'] = 'satanail';
                    $bots['fajes_rown'] = 'roun';
                    $bots['CrashTesterAnusov'] = 'penis';
                    $bots['Dr_Stertor'] = 'str';
                    $bots['voodoodal16'] = 'voodoo16';
                    $bots['REVENGE_OF_STERTOR'] = 'rev';
                    $bots['huest'] = '123';
                    $bots['AntiSpam'] = 'carme';
                    $bots['AntiUeban'] = '1010';
                    $bots['CnEPMA'] = '123';


                    Жалко, что не один из них не рабочий.
                    Ответить
                  • Это знать надо, это классика, блять.
                    Ответить
      • Меня тоже мучает этот вопрос. Они запилили Swift Packet Manager, но его используют полторы калеки (все те, кто пишут на Свифте под линь)

        А так Carthage намного проще и лучше, если base language это Свифт, конечно.
        Ответить
        • понаплодили зоопарков

          ну Carthage хоть на свифте писан
          Ответить
      • Полезно было бы иметь одинаковый формат таких репозиториев для разных ЯП, ОС, СКВ. Чтобы можно было качать то, что нужно, если есть (исходники - для разработки, скомпилированное - для использования); чтобы не качать лишнего (исходники - для использования, скомпилированное - для разработки); чтобы прозрачно добавлять скомпилированные версии под другие платформы (при изменении кода в новой ревизии считать все бинарники удалёнными в этой ревизии; при изменении или добавлении бинарников от другой платформы - считать бинарники актуальными); гитхабу - удалять старые/минорные/из неосновных веток бинарники, если лимиты превышены; ОС - отправлять неактуальные бинарники куда подальше (как в той ОС, которая запылившиеся давно не тронутые файлы отправляла на ленту) и т.д.
        Ответить
        • > исходники - для использования
          > лишнего

          Ричард Столлман смотрит на тебя как на говно.
          Ответить
          • Столлман совсем не против того чтобы не качал сырцы: ты можешь качать .so и .h, многие дистры так делают

            Но ты всегда можешь по первому требованию получить сырцы, вот в чем поинт Столлмана
            Ответить
            • > по первому требованию
              Что, кстати, не означает, что ты должен сырцы раздавать всем подряд на гитхабе. Можно только тем, кому продал свой софт.
              Ответить
            • Лол, можно даже бабло за загрузку исходников брать! Но не больше, чем за загрузку бинарников.

              Fee to download source may not be greater than the fee to download the binary.
              Ответить
        • Ого, кажется ты только что изобрел Artifactory https://jfrog.com/artifactory/
          Ответить
    • > guaranteed to be identical to those in the original installation after cloning the repo
      Т.е. оно всегда качает последнюю версию, даже на коммит лочиться не умеет?
      Ответить
      • ахахха
        слона-то я и не приметил

        три раза собираешь проект на CI -- три раза разные билды получаюится

        но на самом деле там можно указать версия конечно
        pod 'AFNetworking', '~> 1.0'
        Ответить
        • на самом деле после первого запуска создается файл Podfile.lock, в котором прописаны установленые версии.
          Поэтому остальные разработчики могут выполнить pod install и те же самые версии библиотек
          Ответить
      • Умеет, можно указать репу (например, форк), бранчу и коммит. Плюс есть Podfile.lock. Потому это вдвойне смешнее.

        Я вообще недавно узнал, что у них в доках такая рекомендация. Потому очень удивлялся, что в проекте, который щас надо поддерживать, зависимости были прямо в гите. Нуашо, в доке ж написано
        Ответить
        • ну строго говоря кокоаподс не обязательный трибут яблочника
          у кого-то и рубей может не быть
          Ответить
          • “Why do I have to install Ruby to use CocoaPods?”

            You don’t, macOS comes with a Ruby 2.0.0 or newer pre-installed in /usr/bin/ruby which are our baselines and these should work out of the box.

            https://guides.cocoapods.org/using/faq.html

            Шах и мат, аметисты
            Ответить
            • охуясе я от жизы отстал
              Ответить
              • показать все, что скрытоОт "жизы" отстал твой папик: в то время, когда везде рекламировали презервативы, он продолжал практиковать прерванный половой акт - поистине дедовский метод борьбы с нежелательной беременностью.
                Ответить
                • ты опять выходишь на связь, мудило?
                  Ответить
                • судя по знанию таких обычно скрываемых подробностей могу предположить только то, что ты и есть тот самый папик
                  Ответить
                  • да нет, просто со стертором его собссный папик такую штуку практиковал
                    Ответить
    • В гугле бинарники тулчейна предлагают коммитить в репозиторий: https://github.com/bazelbuild/bazel/wiki/Building-with-a-custom-toolchain

      Но вообще, идея не ломать свой проект, когда какому-то мудаку захочется удалить свой очередной left-pad, кажется здравой.
      Ответить
      • Полижешь мою палочку?
        Ответить
      • Занятно было в мире Node.js, когда какой-то мужик снёс пару сотен своих популярных пакетов.
        Ответить
        • Человек-Гугл спешит на помощь: https://habrahabr.ru/post/280039/
          Ответить
        • А что будет в других языках, в питоне том же?
          Ответить
          • Пока вся питушня зависимостей не будет явно встраиваться в новый продукт - пости то же самое?
            Ответить
            • Напостил тебе в гайморовы пазухи, проверь.
              Ответить
            • Не понял, именно для этого же зависимости и нужны?
              Ответить
              • Под "явно встраиваться" я имел в виду "вкомпиливаться" или "складываться в дистрибутив". Чтоб при скачивании софтины X сразу скачивались все её зависимости, а не их список.
                Чтоб если кто-то создал X и протестировал с определёнными версиями зависимостей, по умолчанию пользователю приходило бы всё это в неизменном виде, не важно, кто там что удалил или сломал в пакетах, от которых зависит X.
                Ответить
                • Давай, давай, а ну, давай,
                  Меня шмонай ты, вертухай,
                  Да загляни под юбочку,
                  Да посмотри на булочки.
                  Понюхай попку носиком,
                  Прикинься, киса, пёсиком,
                  Вот в этом вся и разница,
                  Кто хочет, а кто дразнится.

                  ©Любимая группа мамки админа
                  Ответить
        • мнекажется что "left-pad" и была отсылка к этой истории, не?
          Ответить
          • Да, так и есть. Я саму историю помнил, но название этого модуля - нет.
            Думал, left-pad - это совсем другая история - вот и привёл в эту пример :)
            Ответить
      • > Но вообще, идея не ломать свой проект, когда какому-то мудаку захочется удалить свой очередной left-pad, кажется здравой.

        Когда пробуешь пособирать какой-нибудь Haskell через cabal, поневоле хочется начать вендорить зависимости. И то сейчас уже получше, раньше вообще ад был, постоянно всё ломалось.
        Ответить
      • Кешируйте пакеты в локальном прокси-репозитории (артифактори) конторы и будет щастье.

        Кстати, вон и СёмаРиал выше о том же глаголит.
        Ответить
        • От $2,950 в год.
          Неплохая цена за то, чтобы left-pad не потерялся
          Ответить
          • для нищебродов есть Nexus
            Ответить
            • https://www.sonatype.com/nexus-repository-sonatype ?
              Ответить
              • Да.
                Ответить
                • Интересные должны быть нищеброды: https://www.sonatype.com/nexus-product-pricing

                  Кстати, есть опыт внедрения/использования у кого-то?
                  Ответить
                  • мы использовали
                    бесплатный
                    норм
                    Ответить
                  • https://www.sonatype.com/nexus-repository-oss

                    Оно ж бесплатное. Работает хорошо, нареканий нет.
                    >Nexus Repository OSS
                    >The world's only repository manager with FREE support for popular formats.

                    https://www.sonatype.com/hs-fs/hubfs/SON_NexusRepoOSS_table@2x%20(1).png?t=15 20018921654&width=540&name=SON_NexusRepo OSS_table@2x%20(1).png
                    Ответить
                    • Понял, не туда посмотрел.

                      Тут прямо целая сравнительная табличка нагуглилась: http://binary-repositories-comparison.github.io/
                      Ответить
                  • Мы пытались, тупило@тормозило. Впрочем, возможно дело в руках прыщеадминов, которые это внедряли.
                    Ответить
                    • "тупило@тормозило" не звучит как технически грамотное описание недостатков софта:) Ставлю на кривость прыщерук
                      Ответить
                      • > не звучит как технически грамотное описание недостатков софта
                        Для 90% энтерпрайзного говнища - вполне адекватное описание.
                        Ответить
        • Чекиньте бинари в "ClearCase", там специальная питушня есть для артефактов!
          Ответить
        • сделал вид, что ты не СёмаРиал?
          Ответить
      • > удалить свой очередной left-pad
        Да хуй с ним, с удалением. А если бы туда вредоносный код попал?
        Ответить
        • rebar3 создаёт лок-файл с хэшами зависимостей, который коммитится в репозиторий. Если кто-то изменит left-pad.erl, то по меньшей мере у всех наебнутся билды. Может и в npm до подобного додумались. Но вообще, не зеркалировать все зависимости в сколько-нибудь серьёзном проекте -- это адская некомпетентность.
          Ответить
          • >>хэшами зависимостей,
            а обновляться как?)

            Зеркалировать надо еще и для того, чтобы у тебя по 150 раз в день на CI и машинах разрабов не качались одни и те же 200 мегабайт
            Ответить
            • > а обновляться как
              Ну урл исходной репы там, скорее всего, тоже записан. Так что можно и обновиться (если это реально нужно).
              Ответить
              • так при обновлении приедет новый депенденси с хешем?
                Ответить
                • Ну да. Но его можно поревьювить и т.п.
                  Ответить
                  • >>поревьювить
                    писька в том, что в уважающем себя JS прокете (будь то клиент или сервер) зависимостей обычно штук триста (включая т.н. peer -- транзитивные). Можно сломаться все ревьюить:)

                    Ну в целом мысля про хеш понятна:
                    она гарантирует что для версии [email protected] всегда приедет один и тот же пакет
                    Ответить
                    • Да может сломаться только минифицированная версия.
                      Статья на швабре было недавно про это.

                      Можно заранее подготовить бекдор, а потом следующим комитом без палева его активировать.
                      Ответить
                      • > минифицированная версия
                        Нахуя её вообще качать?
                        Ответить
                        • Как нахуя. Чтобы самому не ебаться с минификацией? Сделал npm i - и всё готово.
                          Ответить
                        • Если ты не умеешь локально компилить JS, например:)
                          Хотя если ты умеешь package management, то наверняка ты умеешь и uglify/webpack/browserify итд
                          Ответить
                          • А могут вообще не поставлять полную версию? Или такую библиотеку сразу нахуй?
                            Ответить
                            • В смысле только компилированную?:)

                              Я о таком не слышал, наверное могут если лицензжия не позволяет
                              Ответить
                              • Ну вот я напесал супер-полезную либу bormand-love.js и храню у себя на компе. В npm выкладываю только углифаеную версию. Так можно?
                                Ответить
                                • Следующим шагом советую начать продавать ее за деньги и требовать лицензионный ключ
                                  Ответить
                  • У тебя не все коменты в говностоке отображаются, проверь.
                    Ответить
                    • Скинь конкретный коммент, мне влом искать 10 отличий.
                      Ответить
                      • Сорян.
                        Вот: http://govnokod.ru/23850#comment403216
                        Ответить
                        • Разметку распидорасило в 23850 и 23830.
                          Ответить
                          • Не пойму в чём причина, но парсеры (в том числе и фаерфокс) считают разметку битой, если в описании поста есть код.

                            А код
                            внутри комментов
                            парсится нормально.
                            Ответить
                            • И в чем была проблема?
                              Ответить
                              • Х.з., отличий на глаз не видно. Лень было разбираться, тупо разрешил парсеру корректировать ошибки в HTML.
                                Ответить
                            • Потому что
                              code и pre в p.

                              Скорми текст в валидатор, только поменяй заголовок на

                              <!DOCTYPE html>
                              <html >

                              чтобы был html5 потому что xhtml strict заебет ошибками

                              https://s13.postimg.org/cp8pj4rnr/image.png
                              Ответить
                              • А в span значит можно?
                                Ответить
                                • Скорми вот такой в валидатор

                                  <!DOCTYPE html>
                                  <html>
                                  <head>
                                  <title>asd</title>
                                  </head>
                                  <body>
                                  <p>
                                  <pre>
                                  <code>rm -rf /</code>
                                  </pre>
                                  </p>
                                  </body>
                                  </html>


                                  Ни в кого нельзя: pre блочный, его можно только в div.
                                  В span можно только инлайновые.
                                  В p вообще можно только текст и инлайновые



                                  Невалидный код у страйко, нельзя <pre> в <p>
                                  Ответить
                        • fxd
                          Ответить
            • > а обновляться как?)
              Я глупость сморозил. На самом деле при изменении апстрима rebar сам изменит lock-файл, и это будет заметно в диффе.
              Ответить
              • а, ну вот yarn так же работает:)

                npm тоже умеет .lock, кстати
                и вот как тут выяснили и кокоаподс ябловый умеет
                Ответить
          • Это на случай, если сделают изменение, но версию не поинкрементят?
            Ответить
            • да, на случай если мамин хакер заспуфит пакет и сделаем там вредоносный код

              правда мне не очень понятно как это сделать если пакеты качаются по https
              Ответить
              • Никто не мешает самим авторам вредоноса добавить.
                Ответить
                • Или мимопроходилам, которые случайно нашли пароль от учётки в репе...

                  З.Ы. Имхо, HTTPS тут совершенно лишний и только создаёт иллюзию безопасности.
                  Ответить
                  • >> HTTPS тут совершенно лишний
                    бог с тобой! Без HTTPS я тебе насру в hosts или в твой DNS и ты будешь качать все зависимости с моего сайтика, а что я туда положу будет зависеть от настроения

                    Ну вот хеш спасает конечно, но с новыми как бывть?
                    Ответить
                    • А что добавляет HTTPS к безопасности репы? Только защищает индекс пакетов при его передаче по каналу (контент пакетов же защищён хешем, который хранится в индексе?). Но никак не защищает от его изменений самим сервером или автором пакета.

                      Автору придётся доверять (ну или ревьювить его код каждый раз). А от сервера и прочих посредников спасёт GPG подпись автора. В итоге HTTPS в этой схеме только для красоты остаётся.
                      Ответить
                      • HTTPS дает гарантию того, что ты соединился с реальной репой.
                        Если репу не взломали, значит ты знаешь что новую версию пакета (на которую ты обновляешься) положил туда автор пакета. Если автор, например, Резиг, то ты знаешь что он не мудак, и пакет не будет тебе гадить.

                        Если нет HTTPS то тебе приходится полагаться на то, что админ DNSа, которым ты сейчас пользуешься, не мудак.
                        А шансы на это не очень велики, особенно в кафе или аэропорту.
                        Ответить
                        • > положил туда автор пакета
                          Не админ сервера с репой?
                          Не взломавший сервер с репой?
                          Не взломавший пароль автора от репы?

                          А если у меня уже есть GPG подпись автора - то мне похуй на все эти HTTPS, они ничего нового не дадут.
                          Ответить
                          • Если это локальная репа нашей конторы то я знаю что админ там хороший (я с ним пиво пил), и что его не взломали (скорее всего).

                            Если это www.npmjs.com (или где там у них главный реп) то я почти наверяка уверен что их не сломали.

                            Блин! Я согласен что без хешкода много дыр, но все таки HTTPS тут явно не лишний: он сразу отсекает наиболее вероятный и простой способ взлома.
                            Ответить
            • Да. Или репу угонят.
              Ответить
        • https://krausefx.com/blog/trusting-sdks
          Ответить
          • Он хочет сказать что гугла нет в HSTS?)

            Опять таки все упирается в отсутствие https (передайте борманду за вон той партой). Не важно как тебя пидарнут: через arp spoofing-ли, через DNS, или через сломанный роутер. Важно что канал между тобой и местом, где терминируется tls надо рассматривать как НЕ безопасный.

            Кстати, параноки могут привязывать мак адреса к порту или ключу в случае wifi/eap
            Ответить

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