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

    +160

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    this.alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
    this.identityDefence = this.alphabet[Math.floor(Math.random() * (this.alphabet.length - 1))] + Math.floor(Math.random() * 1000) 
    + this.alphabet[Math.floor(Math.random() * (this.alphabet.length - 1))] 
    + this.alphabet[Math.floor(Math.random() * (this.alphabet.length - 1))] + Math.floor(Math.random() * 1000) 
    + this.alphabet[Math.floor(Math.random() * (this.alphabet.length - 1))] + Math.floor(Math.random() * 1000);

    А как вы генерируете случайный id объектов?

    Запостил: SuperCuke, 02 Февраля 2015

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

    • Генератор своими руками на 220 байт. Теперь отключения гуидов не страшны.

      Я покажу как собрать простой, но достаточно мощный, генератор на 220 символов.

      Потребуется:

      — браузерный JavaScript, можно другой на 5й стандарт
      — насадка на ось объекта — alphabet от this
      — символы ASCII или массив в 26 буквами
      — random на 26 букв: Math.floor, Math.random, this.alphabet, length, 1000 и т. д.
      — плюсы
      — велосипед
      — и желательно переменная-аккумулятор на 4 итерации

      Сборка:

      — закрепляем велосипед так, что бы заднее колесо крутилось свободно, вывешиваем его
      — прикручиваем this на ось объекта
      — крепим объект так, что бы this плотно прижимался к колесу, можно подтянуть его прототипами
      — подключаем объект к аккумулятору: минусовой this объекта к минусу аккумулятора, плюсовой провод объекта к аноду рандома, катод рандома к плюсу аккумулятора
      — аккумулятор соединяем с символами ASCII или с буквами
      Всё! К функции можно подключать потребители на 220 символов и пользоваться идентификаторами! Как только аккумулятор разрядится, достаточно будет покрутить педали и примерно через час аккумулятор зарядится.
      Ответить
      • P.S. Программист я такой же как и электронщик
        (c) http://хомячкабр.рф/post/221663/
        Ответить
        • Отлично же переделал. Надо было засрать паразитами, чтоб никто не смог нагуглить.
          На мой вкус конечно лучше было бы:
          > и желательно переменная-аккумулятор на 4 байта
          Но и так очень годно.
          Ответить
      • > Потребуется:
        >
        > — браузерный JavaScript, можно другой на 5й стандарт

        2019, a museum...

        "From 2014, this is called a 'dependency manager', but as you know from 2016, all libs now ship with the browsers".
        src: https://twitter.com/iamdevloper/status/557106258319515648
        Ответить
    • человек не знает, что строка - это массив и что такое циклы. Так откуда он узнал про guid?
      Ответить
    • identityDefence - это "оборона личности"?
      Ответить
    • А я сегодня обнаружил новый модный способ разбить строку на символы:
      Object.keys(new String("abcdef"));

      Но если сделать так:
      Object.keys("abcdef");

      То не работает. Вот и new String пригодился.
      Ответить
      • А, по этому поводу придумал быстрый, но ненадежный способ сгенерировать последовательность из чисел (типа range() в Питоне).

        Object.keys(Object(new Array(20).join(' ')));
        ['0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18'];
        Ответить
        • Ха-ха-ха. new можно и выпилить.
          Получается короче классического map или reduce:
          Object.keys(Object(Array(20).join(' ')));
          Array.apply(0, Array(20)).reduce(function(a,_,i) { return a+' '+i; },'')
          Правда Object.keys медленее.

          Но вот удивляет на какие хитрости идут люди чтоб не использовать for.
          Ответить
          • JS - язык Диавола. Используйте руби-руби-руби-руби! Ээ-ээ-ээ!
            Ответить
            • Изыди.
              И вошёл wvxvw в тред JSный и выгнал всех рубинщиков и пхпешников из треда и опрокинул аргументы питонистов и закорючки перловиков, и говорил им: ибо написано, сей тред JavaScript наречётся; а вы сделали его вертепом недоязыков.
              Ответить
          • "foo".split("")
            Ответить
            • Это не ecma-way.
              Ответить
              • The value of separator may be an empty String, an empty regular expression, or a regular expression that can match an empty String. In this case, separator does not match the empty substring at the beginning or end of the input String, nor does it match the empty substring at the end of the previous separator match. (For example, if separator is the empty String, the String is split up into individual characters; the length of the result array equals the length of the String, and each substring contains one character.)

                http://www.ecma-international.org/ecma-262/5.1/#sec-15.5.4.14
                Ответить
                • Да я в курсе, просто у экмаскриптеров такое решение считается не кошерным, ибо все слишком явно, и нет ни единого коллбека.
                  Ответить
                  • Не думаю, что экмаскриптеры сильно обидятся, у них же есть
                    typeof([]+[])
                    Ответить
            • Но тут же еще и фишка в том, что для обычных строк не работает, только для new String().
              Ответить
          • Но у моего способа есть еще и изюминка: на самом деле никто не гарантирует, что ключи всегда будут по возрacтающей, и вообще, как видно, ключи - строки. Так что можно получить интересные результаты с математикой / сравнениями.
            Ответить
        • В смысле так:
          Array.apply(0,Array(20)).map(function (_, i) {return i;});
          Array.apply(0,Array(20)).reduce(function(a,_,i) {a.push(i);return a;},[])//умеет аппендить
          Ответить

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