That looks like I was responding to Mark Hahn's commnet about sorting; I wasn't.
Of course it's fine to put the date on there *also*, but my point is merely that (Date.now() + Math.random()) is not sufficiently random to call it a uuid. On Mon, Aug 6, 2012 at 6:09 PM, Isaac Schlueter <i...@izs.me> wrote: > Math.random() is not cryptographically secure entropy, and Date.now() > is extremely guessable. If you are worried about someone *wanting* to > cause collisions, then that's not so great. > > If you don't care about the IETF, and you are writing your program in > Node, then the simplest approach is something like: > > var uuid = crypto.randomBytes(24).toString('base64') > > To do it asynchronously (since the crypto ops are a little slow): > > crypto.randomBytes(24, function (er, bytes) { > var uuid = bytes.toString('base64') > }) > > Make the number bigger or smaller to adjust the amount of entropy. > > Note that IETF uuids are "only" 16 bytes of entropy, so if you do want > IETF-style uuids, you can do this: > > var uuid = crypto.randomBytes(16).toString('hex') > var ietfStyle = uuid.replace(/^(.{8})(.{4})(.{4})(.{4})(.{12})$/, > '$1-$2-$3-$4-$5') > > I'm going to be moving npm to just use base64 random bytes for salt > eventually, just never got around to it. > > > On Mon, Aug 6, 2012 at 4:02 PM, Mark Hahn <m...@hahnca.com> wrote: >> The advantage of starting off with the time is that the UUIDs sort by order >> generated which is useful for DB ids. Coding a time into base 36 is a bit >> dangerous though as it may not sort right at some time in the future. That >> time may be centuries from now, not sure. Sorting by hex is known to be far >> in the future. >> >> >> On Mon, Aug 6, 2012 at 3:56 PM, Mark Hahn <m...@hahnca.com> wrote: >>> >>> FWIW, here is the code to exactly match couchdb. >>> >>> UUID = -> '0' + (new Date().getTime() * 1e3).toString(16) + >>> Math.floor(Math.random() * 1e18).toString(16) >>> >>> >>> On Mon, Aug 6, 2012 at 3:43 PM, Rick Waldron <waldron.r...@gmail.com> >>> wrote: >>>> >>>> On Mon, Aug 6, 2012 at 6:28 PM, Mark Hahn <m...@hahnca.com> wrote: >>>>> >>>>> That isn't a hack. It is almost a copy of what couchdb offers. I use >>>>> it all the time. >>>> >>>> >>>> One is an IETF (RFC) and the other isn't. >>>> >>>> http://www.ietf.org/rfc/rfc4122.txt >>>> >>>>> >>>>> >>>>> On Mon, Aug 6, 2012 at 2:17 PM, Ted Young <t...@radicaldesigns.org> >>>>> wrote: >>>>>> >>>>>> Thanks for the feedback, glad to know I found the defacto solution. >>>>>> Tim, that's funny, your hack is more or less what I started with, but I >>>>>> became suspicious that it was too easy somehow. Maybe I'll switch back >>>>>> to >>>>>> that if file-size/performance becomes an issue (which it won't). >>>>>> >>>>>> Ted >>>>>> >>>>>> On Aug 6, 2012, at 8:27 PM, Tim Caswell <t...@creationix.com> wrote: >>>>>> >>>>>> Depending on how strict your requirements are, I often just use: >>>>>> >>>>>> Date.now.toString(36) + "-" + (Math.random() * >>>>>> 0x10000000).toString(36) >>>>>> >>>>>> Date.now is unique every ms and Math.random has a keyspace of 2^32, so >>>>>> collisions are statistically impossible in most practical >>>>>> applications. >>>>>> >>>>>> >>>>>> On Mon, Aug 6, 2012 at 1:01 PM, Rick Waldron <waldron.r...@gmail.com> >>>>>> wrote: >>>>>> >>>>>> >>>>>> On Monday, August 6, 2012 at 1:38 PM, Martin Cooper wrote: >>>>>> >>>>>> On Mon, Aug 6, 2012 at 10:28 AM, Ted Young <t...@radicaldesigns.org> >>>>>> wrote: >>>>>> >>>>>> Hey y'all, >>>>>> >>>>>> So, I have a need for global unique id's. Googling about, I've found >>>>>> the >>>>>> following implementations that seem decent: >>>>>> >>>>>> https://github.com/broofa/node-uuid >>>>>> >>>>>> >>>>>> FWIW, this is the package that npm uses. >>>>>> >>>>>> +1 >>>>>> >>>>>> I've been using Robert Keiffer's impl in projects since before it was >>>>>> even >>>>>> on npm—I consider it a "go to" >>>>>> >>>>>> Rick >>>>>> >>>>>> >>>>>> -- >>>>>> Martin Cooper >>>>>> >>>>>> >>>>>> https://gist.github.com/1308368 >>>>>> >>>>>> Not really sure why I would pick one over the other (besides file >>>>>> size), or >>>>>> if there are any js-specific issues I should be aware of. Any advice? >>>>>> >>>>>> Cheers, >>>>>> >>>>>> Ted >>>>>> >>>>>> -- >>>>>> Job Board: http://jobs.nodejs.org/ >>>>>> Posting guidelines: >>>>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "nodejs" group. >>>>>> To post to this group, send email to nodejs@googlegroups.com >>>>>> To unsubscribe from this group, send email to >>>>>> nodejs+unsubscr...@googlegroups.com >>>>>> For more options, visit this group at >>>>>> http://groups.google.com/group/nodejs?hl=en?hl=en >>>>>> >>>>>> >>>>>> -- >>>>>> Job Board: http://jobs.nodejs.org/ >>>>>> Posting guidelines: >>>>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "nodejs" group. >>>>>> To post to this group, send email to nodejs@googlegroups.com >>>>>> To unsubscribe from this group, send email to >>>>>> nodejs+unsubscr...@googlegroups.com >>>>>> For more options, visit this group at >>>>>> http://groups.google.com/group/nodejs?hl=en?hl=en >>>>>> >>>>>> >>>>>> -- >>>>>> Job Board: http://jobs.nodejs.org/ >>>>>> Posting guidelines: >>>>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "nodejs" group. >>>>>> To post to this group, send email to nodejs@googlegroups.com >>>>>> To unsubscribe from this group, send email to >>>>>> nodejs+unsubscr...@googlegroups.com >>>>>> For more options, visit this group at >>>>>> http://groups.google.com/group/nodejs?hl=en?hl=en >>>>>> >>>>>> >>>>>> -- >>>>>> Job Board: http://jobs.nodejs.org/ >>>>>> Posting guidelines: >>>>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "nodejs" group. >>>>>> To post to this group, send email to nodejs@googlegroups.com >>>>>> To unsubscribe from this group, send email to >>>>>> nodejs+unsubscr...@googlegroups.com >>>>>> For more options, visit this group at >>>>>> http://groups.google.com/group/nodejs?hl=en?hl=en >>>>>> >>>>>> >>>>>> -- >>>>>> Job Board: http://jobs.nodejs.org/ >>>>>> Posting guidelines: >>>>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "nodejs" group. >>>>>> To post to this group, send email to nodejs@googlegroups.com >>>>>> To unsubscribe from this group, send email to >>>>>> nodejs+unsubscr...@googlegroups.com >>>>>> For more options, visit this group at >>>>>> http://groups.google.com/group/nodejs?hl=en?hl=en >>>>> >>>>> >>>>> -- >>>>> Job Board: http://jobs.nodejs.org/ >>>>> Posting guidelines: >>>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >>>>> You received this message because you are subscribed to the Google >>>>> Groups "nodejs" group. >>>>> To post to this group, send email to nodejs@googlegroups.com >>>>> To unsubscribe from this group, send email to >>>>> nodejs+unsubscr...@googlegroups.com >>>>> For more options, visit this group at >>>>> http://groups.google.com/group/nodejs?hl=en?hl=en >>>> >>>> >>>> -- >>>> Job Board: http://jobs.nodejs.org/ >>>> Posting guidelines: >>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >>>> You received this message because you are subscribed to the Google >>>> Groups "nodejs" group. >>>> To post to this group, send email to nodejs@googlegroups.com >>>> To unsubscribe from this group, send email to >>>> nodejs+unsubscr...@googlegroups.com >>>> For more options, visit this group at >>>> http://groups.google.com/group/nodejs?hl=en?hl=en >>> >>> >> >> -- >> Job Board: http://jobs.nodejs.org/ >> Posting guidelines: >> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >> You received this message because you are subscribed to the Google >> Groups "nodejs" group. >> To post to this group, send email to nodejs@googlegroups.com >> To unsubscribe from this group, send email to >> nodejs+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/nodejs?hl=en?hl=en -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to nodejs@googlegroups.com To unsubscribe from this group, send email to nodejs+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en