ЙажаСценарий / Говнокод #18947 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
function createUUID() {
	var s = [];
	var hexDigits = "0123456789abcdef";
	for (var i = 0; i < 36; i++) {
		s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
	}
	s[14] = "4";
	s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);
	s[8] = s[13] = s[18] = s[23] = "-";
	var uuid = s.join("");
	return uuid.substring(0, 18);
}

Интересно, тот кто это писал сам то понял что написал.. и зачем?

P.S. взято отсюда - https://github.com/flashphoner/flashphoner_client/blob/wcs_api/client/src/Flashphoner.js

Запостил: Darth Darth, (Updated )

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

      • https://en.wikipedia.org/wiki/Universally_unique_identifier - Version 4.

        есть некоторое количество аппликух которые различают "типы" ууидов, и пихают где не попади вот такие магические числа что бы эти типы различать.

        как по мне, ууиды есть просто говно. некрософт их запустил в широкое использование, но мне лично еще не разу не встречалось их использование которое не было бы говном. народ почему то верит что у ууидов есть магическое свойство никогда и ни при каких условиях не повторятся. наверное потому что "уникальный" в имене стоит.
        Ответить
        • Вы совершенно неправы в своем сарказме по поводу уникальности. Вероятность повторения UUID действительно настолько мала, что ее хватает для огромного количества задач.

          Вы также неправы, приписывая "некрософту" UUID - это далеко не их творение.

          Вы, очевидно, даже не потрудились прочитать статью, ссылку на которую привели.
          Ответить
          • В данном примере даже текущее дата-время не встречается, единственный источнег униКАЛьности это рандсид, можно просто рандсид в качестве уида возвращать, это нисколько не испортит этот код.
            Ответить
          • > Вероятность повторения UUID действительно настолько мала, что ее хватает для огромного количества задач.

            Поэтому наверное "огромное количество" програм с некоторой малой вероятносью падают?

            В большинстве случаев уникальный идентификатор либо не нужен (80% случаев), либо тривиальный счетчик работает лучше (19% случаев).

            В крайнем случае (1%), если хорошие IDы нужны, нужно заводить какую уже базу что бы гарантировано уникальные ключи генерировать.

            > Вы также неправы, приписывая "некрософту" UUID - это далеко не их творение.

            Я и не припысывал. Я написал что они популяризировали (ака "запустили в широкое использование").

            > Вы, очевидно, даже не потрудились прочитать статью, ссылку на которую привели.

            Читал я ее уже раз 5 за последние 15 лет. А сейчас на самом деле поленился.
            Ответить
            • Ох ладно, спорить с вашей личной статистикой мне неохота. Раз вам UUID не нужен - значит он говно, и не нужен никому. Я все понял. Удачи.
              Ответить
      • Старики говорят, что волхвы обладали этим знанием.

        https://tools.ietf.org/html/rfc4122

        The variant field determines the layout of the UUID.
           Msb0  Msb1  Msb2  Description
            0     x     x    Reserved, NCS backward compatibility.
            1     0     x    The variant specified in this document.
            1     1     0    Reserved, Microsoft Corporation backward  compatibility
            1     1     1    Reserved for future definition.

        The version number is in the most significant 4 bits of the time
           stamp (bits 4 through 7 of the time_hi_and_version field).
           Msb0  Msb1  Msb2  Msb3   Version  Description
            0     0     0     1        1     The time-based version specified in this document.
            0     0     1     0        2     DCE Security version, with embedded POSIX UIDs.
            0     0     1     1        3     The name-based version specified in this document that uses MD5 hashing.
            0     1     0     0        4     The randomly or pseudo-randomly generated version specified in this document.
            0     1     0     1        5     The name-based version specified in this document that uses SHA-1 hashing.
        Ответить
      • И в чем смысл этого особого смысла применительно к данному примеру? Особенно s[19], если его отрезают в return.
        14 вроде как старший бит инта, 15 бит это уже знак. в остальном присоединяюсь к вопросу
        Ответить
        • В ууидах числа считаются беззнаковыми.

          > Особенно s[19], если его отрезают в return.

          А вот это уже смешно.
          Ответить
        • P.S. А где здесь работа с битами, кроме строки, в которой определяется s[19]?
          Ответить

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

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8