1. Go / Говнокод #27849

    +2

    1. 1
    2. 2
    3. 3
    // Create a Version 4 UUID, panicking on error.
    // Use this form to initialize package-level variables.
    var u1 = uuid.Must(uuid.NewV4())

    https://github.com/gofrs/uuid

    Питули запилили функцию, которая никогда error не возвращает, и запилили обёртку вокруг неё для "игнорирования" этой "ошибки".
    Пиздец

    Запостил: 3_dar, 02 Декабря 2021

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

    • Какой багор )))
      Ответить
    • > никогда не возвращает

      А вдруг UUID'ы кончились?

      Тем более type 4 скорее всего полезет к системному CPRNG, а у него ошибки могут быть.
      Ответить
      • А как определить, что UUID'ы кончились?
        Ответить
        • Type 0 уже кончились, походу? Какой там запас по времени был?
          Ответить
          • 1980 +35 лет ЕМНИП
            Ответить
            • Сколько гуидов в секунду можно на азиках генерить, чтобы подорвать всю эту систему?
              Ответить
              • Их надо не просто нагенерить, а натыкать в разные базы и исходники, чтобы коллизии полезли...
                Ответить
                • Вероятность того, что пересекутся гуиды, ничтожно мала.
                  Скорее система убьется по другой причине.
                  Ответить
                  • А разве перед созданием сисема не проверяет пересечения?
                    Ответить
                    • Со всеми остальными uuid'ами в мире?
                      Ответить
                      • Непосредственно с теми, которые уже есть в системе.
                        Ответить
                        • Надо провести следственный эксперимент.
                          Для этого создадим COM-сервер в виде *.DLL, с гуидиком от какой-нибудь софтины, сворованным в реестре.
                          Ответить
                          • Прошу прощенья за ожидание.
                            Анализ показал, что в случае пересечения, запись об объекте в реестре создастся, но сам COM-сервер загружен не будет. Приоритетен гуид, который изначально был в системе.
                            Ответить
                        • В какой системе?
                          Ответить
                      • Это же уебок, который к тому же не знает, что значит "г" в "гуид".

                        Поэтому даже хранить необязательно, сам факт генерации тратит им keyspace
                        Ответить
                        • Глобальными они не могут быть по объективной причине.
                          Ответить
                          • Но глобальной является пандемия. Отчего же ВОЗ называет ее не своим именем, а "бедствием мирового масштаба"?
                            Ответить
      • Это шутка? Как это вообще работает?
        Ответить
        • Что "это"?
          Ответить
          • Генерация ууида.
            Ответить
            • Что, никто не знает?
              Ответить
              • Гуид уникален в пространстве и времени.

                Твои_специфические_фишки_типа_мак_адреса + случайное число.
                Ответить
                • Это старый гуид. Свежие type 4 тупо рандом, без всяких маков и времени.
                  Ответить
                  • А чем сидица генератор? как гарантировать, что они разные на разных мошинах?
                    Ответить
                    • Всем подряд, в чём есть случайность. Как и любой другой CPRNG.
                      Ответить
                      • Тоесть в него льют всякое говно типа температуры процессора, макадреса, белых шумов в микрофоне, хешей пролетающих пакетов, а потом он высирает уид? Чем же тогда гуид от юида отличается?
                        Ответить
                        • > гуид от юида

                          Это вроде одно и то же, просто мс любит свои названия.
                          Ответить
                        • https://datatracker.ietf.org/doc/html/rfc4122

                          > This specification defines a Uniform Resource Name namespace for UUIDs (Universally Unique IDentifier), also known as GUIDs (Globally Unique IDentifier).
                          Ответить
                          • понапридумывают хуйни, блядь
                            Ответить
                          • ну вот, а борманд уже на майкрософтик нагнал!11
                            Ответить
                            • Судя по историй публикаций стандартов они просто объединили зоопарк наименований. GUID это чисто Майкрософтовское название.
                              Ответить
    • Очень хорошо! Всячески поддерживаю!
      Теперь нужно чтобы в каждом проекте была своя функция Must.
      Ответить
      • The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
        NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
        "OPTIONAL" in this document are to be interpreted as described in
        RFC 2119.
        Ответить
    • Не хватает оператора "@".
      Ответить

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